@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,76 @@
1
+ import { i as initRange } from "./init-ZxktEp_H.js";
2
+ class InternMap extends Map {
3
+ constructor(entries, key = keyof) {
4
+ super();
5
+ Object.defineProperties(this, { _intern: { value: /* @__PURE__ */ new Map() }, _key: { value: key } });
6
+ if (entries != null) for (const [key2, value] of entries) this.set(key2, value);
7
+ }
8
+ get(key) {
9
+ return super.get(intern_get(this, key));
10
+ }
11
+ has(key) {
12
+ return super.has(intern_get(this, key));
13
+ }
14
+ set(key, value) {
15
+ return super.set(intern_set(this, key), value);
16
+ }
17
+ delete(key) {
18
+ return super.delete(intern_delete(this, key));
19
+ }
20
+ }
21
+ function intern_get({ _intern, _key }, value) {
22
+ const key = _key(value);
23
+ return _intern.has(key) ? _intern.get(key) : value;
24
+ }
25
+ function intern_set({ _intern, _key }, value) {
26
+ const key = _key(value);
27
+ if (_intern.has(key)) return _intern.get(key);
28
+ _intern.set(key, value);
29
+ return value;
30
+ }
31
+ function intern_delete({ _intern, _key }, value) {
32
+ const key = _key(value);
33
+ if (_intern.has(key)) {
34
+ value = _intern.get(key);
35
+ _intern.delete(key);
36
+ }
37
+ return value;
38
+ }
39
+ function keyof(value) {
40
+ return value !== null && typeof value === "object" ? value.valueOf() : value;
41
+ }
42
+ const implicit = Symbol("implicit");
43
+ function ordinal() {
44
+ var index = new InternMap(), domain = [], range = [], unknown = implicit;
45
+ function scale(d) {
46
+ let i = index.get(d);
47
+ if (i === void 0) {
48
+ if (unknown !== implicit) return unknown;
49
+ index.set(d, i = domain.push(d) - 1);
50
+ }
51
+ return range[i % range.length];
52
+ }
53
+ scale.domain = function(_) {
54
+ if (!arguments.length) return domain.slice();
55
+ domain = [], index = new InternMap();
56
+ for (const value of _) {
57
+ if (index.has(value)) continue;
58
+ index.set(value, domain.push(value) - 1);
59
+ }
60
+ return scale;
61
+ };
62
+ scale.range = function(_) {
63
+ return arguments.length ? (range = Array.from(_), scale) : range.slice();
64
+ };
65
+ scale.unknown = function(_) {
66
+ return arguments.length ? (unknown = _, scale) : unknown;
67
+ };
68
+ scale.copy = function() {
69
+ return ordinal(domain, range).unknown(unknown);
70
+ };
71
+ initRange.apply(scale, arguments);
72
+ return scale;
73
+ }
74
+ export {
75
+ ordinal as o
76
+ };
@@ -0,0 +1,246 @@
1
+ import { ab as constant, a3 as tau, b2 as array, g as getAccDescription, s as setAccDescription, a as getAccTitle, b as setAccTitle, q as getDiagramTitle, p as setDiagramTitle, _ as __name, l as log, c as getConfig2$1, F as cleanAndMerge, I as selectSvgElement, N as parseFontSize, e as configureSvgSize, z as clear, G as defaultConfig_default } 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
+ import { d as d3arc } from "./arc-tTbbM8LO.js";
5
+ import { o as ordinal } from "./ordinal-DSZU4PqD.js";
6
+ import "./init-ZxktEp_H.js";
7
+ function descending(a, b) {
8
+ return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
9
+ }
10
+ function identity(d) {
11
+ return d;
12
+ }
13
+ function d3pie() {
14
+ var value = identity, sortValues = descending, sort = null, startAngle = constant(0), endAngle = constant(tau), padAngle = constant(0);
15
+ function pie(data) {
16
+ var i, n = (data = array(data)).length, j, k, sum = 0, index = new Array(n), arcs = new Array(n), a0 = +startAngle.apply(this, arguments), da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)), a1, p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)), pa = p * (da < 0 ? -1 : 1), v;
17
+ for (i = 0; i < n; ++i) {
18
+ if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {
19
+ sum += v;
20
+ }
21
+ }
22
+ if (sortValues != null) index.sort(function(i2, j2) {
23
+ return sortValues(arcs[i2], arcs[j2]);
24
+ });
25
+ else if (sort != null) index.sort(function(i2, j2) {
26
+ return sort(data[i2], data[j2]);
27
+ });
28
+ for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {
29
+ j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {
30
+ data: data[j],
31
+ index: i,
32
+ value: v,
33
+ startAngle: a0,
34
+ endAngle: a1,
35
+ padAngle: p
36
+ };
37
+ }
38
+ return arcs;
39
+ }
40
+ pie.value = function(_) {
41
+ return arguments.length ? (value = typeof _ === "function" ? _ : constant(+_), pie) : value;
42
+ };
43
+ pie.sortValues = function(_) {
44
+ return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;
45
+ };
46
+ pie.sort = function(_) {
47
+ return arguments.length ? (sort = _, sortValues = null, pie) : sort;
48
+ };
49
+ pie.startAngle = function(_) {
50
+ return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant(+_), pie) : startAngle;
51
+ };
52
+ pie.endAngle = function(_) {
53
+ return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant(+_), pie) : endAngle;
54
+ };
55
+ pie.padAngle = function(_) {
56
+ return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant(+_), pie) : padAngle;
57
+ };
58
+ return pie;
59
+ }
60
+ var DEFAULT_PIE_CONFIG = defaultConfig_default.pie;
61
+ var DEFAULT_PIE_DB = {
62
+ sections: /* @__PURE__ */ new Map(),
63
+ showData: false
64
+ };
65
+ var sections = DEFAULT_PIE_DB.sections;
66
+ var showData = DEFAULT_PIE_DB.showData;
67
+ var config = structuredClone(DEFAULT_PIE_CONFIG);
68
+ var getConfig2 = /* @__PURE__ */ __name(() => structuredClone(config), "getConfig");
69
+ var clear2 = /* @__PURE__ */ __name(() => {
70
+ sections = /* @__PURE__ */ new Map();
71
+ showData = DEFAULT_PIE_DB.showData;
72
+ clear();
73
+ }, "clear");
74
+ var addSection = /* @__PURE__ */ __name(({ label, value }) => {
75
+ if (value < 0) {
76
+ throw new Error(
77
+ `"${label}" has invalid value: ${value}. Negative values are not allowed in pie charts. All slice values must be >= 0.`
78
+ );
79
+ }
80
+ if (!sections.has(label)) {
81
+ sections.set(label, value);
82
+ log.debug(`added new section: ${label}, with value: ${value}`);
83
+ }
84
+ }, "addSection");
85
+ var getSections = /* @__PURE__ */ __name(() => sections, "getSections");
86
+ var setShowData = /* @__PURE__ */ __name((toggle) => {
87
+ showData = toggle;
88
+ }, "setShowData");
89
+ var getShowData = /* @__PURE__ */ __name(() => showData, "getShowData");
90
+ var db = {
91
+ getConfig: getConfig2,
92
+ clear: clear2,
93
+ setDiagramTitle,
94
+ getDiagramTitle,
95
+ setAccTitle,
96
+ getAccTitle,
97
+ setAccDescription,
98
+ getAccDescription,
99
+ addSection,
100
+ getSections,
101
+ setShowData,
102
+ getShowData
103
+ };
104
+ var populateDb = /* @__PURE__ */ __name((ast, db2) => {
105
+ populateCommonDb(ast, db2);
106
+ db2.setShowData(ast.showData);
107
+ ast.sections.map(db2.addSection);
108
+ }, "populateDb");
109
+ var parser = {
110
+ parse: /* @__PURE__ */ __name(async (input) => {
111
+ const ast = await parse("pie", input);
112
+ log.debug(ast);
113
+ populateDb(ast, db);
114
+ }, "parse")
115
+ };
116
+ var getStyles = /* @__PURE__ */ __name((options) => `
117
+ .pieCircle{
118
+ stroke: ${options.pieStrokeColor};
119
+ stroke-width : ${options.pieStrokeWidth};
120
+ opacity : ${options.pieOpacity};
121
+ }
122
+ .pieOuterCircle{
123
+ stroke: ${options.pieOuterStrokeColor};
124
+ stroke-width: ${options.pieOuterStrokeWidth};
125
+ fill: none;
126
+ }
127
+ .pieTitleText {
128
+ text-anchor: middle;
129
+ font-size: ${options.pieTitleTextSize};
130
+ fill: ${options.pieTitleTextColor};
131
+ font-family: ${options.fontFamily};
132
+ }
133
+ .slice {
134
+ font-family: ${options.fontFamily};
135
+ fill: ${options.pieSectionTextColor};
136
+ font-size:${options.pieSectionTextSize};
137
+ // fill: white;
138
+ }
139
+ .legend text {
140
+ fill: ${options.pieLegendTextColor};
141
+ font-family: ${options.fontFamily};
142
+ font-size: ${options.pieLegendTextSize};
143
+ }
144
+ `, "getStyles");
145
+ var pieStyles_default = getStyles;
146
+ var createPieArcs = /* @__PURE__ */ __name((sections2) => {
147
+ const sum = [...sections2.values()].reduce((acc, val) => acc + val, 0);
148
+ const pieData = [...sections2.entries()].map(([label, value]) => ({ label, value })).filter((d) => d.value / sum * 100 >= 1);
149
+ const pie = d3pie().value((d) => d.value).sort(null);
150
+ return pie(pieData);
151
+ }, "createPieArcs");
152
+ var draw = /* @__PURE__ */ __name((text, id, _version, diagObj) => {
153
+ log.debug("rendering pie chart\n" + text);
154
+ const db2 = diagObj.db;
155
+ const globalConfig = getConfig2$1();
156
+ const pieConfig = cleanAndMerge(db2.getConfig(), globalConfig.pie);
157
+ const MARGIN = 40;
158
+ const LEGEND_RECT_SIZE = 18;
159
+ const LEGEND_SPACING = 4;
160
+ const height = 450;
161
+ const pieWidth = height;
162
+ const svg = selectSvgElement(id);
163
+ const group = svg.append("g");
164
+ group.attr("transform", "translate(" + pieWidth / 2 + "," + height / 2 + ")");
165
+ const { themeVariables } = globalConfig;
166
+ let [outerStrokeWidth] = parseFontSize(themeVariables.pieOuterStrokeWidth);
167
+ outerStrokeWidth ??= 2;
168
+ const textPosition = pieConfig.textPosition;
169
+ const radius = Math.min(pieWidth, height) / 2 - MARGIN;
170
+ const arcGenerator = d3arc().innerRadius(0).outerRadius(radius);
171
+ const labelArcGenerator = d3arc().innerRadius(radius * textPosition).outerRadius(radius * textPosition);
172
+ group.append("circle").attr("cx", 0).attr("cy", 0).attr("r", radius + outerStrokeWidth / 2).attr("class", "pieOuterCircle");
173
+ const sections2 = db2.getSections();
174
+ const arcs = createPieArcs(sections2);
175
+ const myGeneratedColors = [
176
+ themeVariables.pie1,
177
+ themeVariables.pie2,
178
+ themeVariables.pie3,
179
+ themeVariables.pie4,
180
+ themeVariables.pie5,
181
+ themeVariables.pie6,
182
+ themeVariables.pie7,
183
+ themeVariables.pie8,
184
+ themeVariables.pie9,
185
+ themeVariables.pie10,
186
+ themeVariables.pie11,
187
+ themeVariables.pie12
188
+ ];
189
+ let sum = 0;
190
+ sections2.forEach((section) => {
191
+ sum += section;
192
+ });
193
+ const filteredArcs = arcs.filter((datum) => (datum.data.value / sum * 100).toFixed(0) !== "0");
194
+ const color = ordinal(myGeneratedColors).domain([
195
+ ...sections2.keys()
196
+ ]);
197
+ group.selectAll("mySlices").data(filteredArcs).enter().append("path").attr("d", arcGenerator).attr("fill", (datum) => {
198
+ return color(datum.data.label);
199
+ }).attr("class", "pieCircle");
200
+ group.selectAll("mySlices").data(filteredArcs).enter().append("text").text((datum) => {
201
+ return (datum.data.value / sum * 100).toFixed(0) + "%";
202
+ }).attr("transform", (datum) => {
203
+ return "translate(" + labelArcGenerator.centroid(datum) + ")";
204
+ }).style("text-anchor", "middle").attr("class", "slice");
205
+ const titleText = group.append("text").text(db2.getDiagramTitle()).attr("x", 0).attr("y", -400 / 2).attr("class", "pieTitleText");
206
+ const allSectionData = [...sections2.entries()].map(([label, value]) => ({
207
+ label,
208
+ value
209
+ }));
210
+ const legend = group.selectAll(".legend").data(allSectionData).enter().append("g").attr("class", "legend").attr("transform", (_datum, index) => {
211
+ const height2 = LEGEND_RECT_SIZE + LEGEND_SPACING;
212
+ const offset = height2 * allSectionData.length / 2;
213
+ const horizontal = 12 * LEGEND_RECT_SIZE;
214
+ const vertical = index * height2 - offset;
215
+ return "translate(" + horizontal + "," + vertical + ")";
216
+ });
217
+ legend.append("rect").attr("width", LEGEND_RECT_SIZE).attr("height", LEGEND_RECT_SIZE).style("fill", (d) => color(d.label)).style("stroke", (d) => color(d.label));
218
+ legend.append("text").attr("x", LEGEND_RECT_SIZE + LEGEND_SPACING).attr("y", LEGEND_RECT_SIZE - LEGEND_SPACING).text((d) => {
219
+ if (db2.getShowData()) {
220
+ return `${d.label} [${d.value}]`;
221
+ }
222
+ return d.label;
223
+ });
224
+ const longestTextWidth = Math.max(
225
+ ...legend.selectAll("text").nodes().map((node) => node?.getBoundingClientRect().width ?? 0)
226
+ );
227
+ const chartAndLegendWidth = pieWidth + MARGIN + LEGEND_RECT_SIZE + LEGEND_SPACING + longestTextWidth;
228
+ const titleWidth = titleText.node()?.getBoundingClientRect().width ?? 0;
229
+ const titleLeft = pieWidth / 2 - titleWidth / 2;
230
+ const titleRight = pieWidth / 2 + titleWidth / 2;
231
+ const viewBoxX = Math.min(0, titleLeft);
232
+ const viewBoxRight = Math.max(chartAndLegendWidth, titleRight);
233
+ const totalWidth = viewBoxRight - viewBoxX;
234
+ svg.attr("viewBox", `${viewBoxX} 0 ${totalWidth} ${height}`);
235
+ configureSvgSize(svg, height, totalWidth, pieConfig.useMaxWidth);
236
+ }, "draw");
237
+ var renderer = { draw };
238
+ var diagram = {
239
+ parser,
240
+ db,
241
+ renderer,
242
+ styles: pieStyles_default
243
+ };
244
+ export {
245
+ diagram
246
+ };