@diagrammo/dgmo 0.46.0 → 0.47.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 (232) hide show
  1. package/dist/advanced.d.cts +3 -855
  2. package/dist/advanced.d.ts +3 -855
  3. package/dist/advanced.js +541 -70107
  4. package/dist/analyzer-UYKBXAKR.js +15 -0
  5. package/dist/auto.cjs +1 -1
  6. package/dist/auto.js +1 -1
  7. package/dist/auto.mjs +1 -1
  8. package/dist/block.js +83 -69417
  9. package/dist/calculator-LDYQCDDY.js +11 -0
  10. package/dist/charts-d3-QOZHKTCT.js +25 -0
  11. package/dist/chunk-2DXMZRWJ.js +800 -0
  12. package/dist/chunk-2LACINWN.js +786 -0
  13. package/dist/chunk-33LCUH4H.js +893 -0
  14. package/dist/chunk-3CIOJ5YJ.js +35 -0
  15. package/dist/chunk-3HDBAXF5.js +86 -0
  16. package/dist/chunk-3JLKYGBQ.js +290 -0
  17. package/dist/chunk-3MQQNXPD.js +415 -0
  18. package/dist/chunk-3R5POCTZ.js +967 -0
  19. package/dist/chunk-3SMGIJDD.js +112 -0
  20. package/dist/chunk-44CM72SQ.js +409 -0
  21. package/dist/chunk-4GRI7MEB.js +1604 -0
  22. package/dist/chunk-4OHACBGX.js +606 -0
  23. package/dist/chunk-5DH3KYFH.js +21 -0
  24. package/dist/chunk-5MLYVTYM.js +76 -0
  25. package/dist/chunk-5QXL4NYS.js +553 -0
  26. package/dist/chunk-5WRI5ZAA.js +31 -0
  27. package/dist/chunk-6EK55ART.js +117 -0
  28. package/dist/chunk-6FZYCKXB.js +2065 -0
  29. package/dist/chunk-6HO5ZTXK.js +277 -0
  30. package/dist/chunk-6KFWC4CO.js +7 -0
  31. package/dist/chunk-6MTWIQVO.js +121 -0
  32. package/dist/chunk-6NYWYNBI.js +329 -0
  33. package/dist/chunk-6SM5NJQH.js +620 -0
  34. package/dist/chunk-725LDASD.js +422 -0
  35. package/dist/chunk-76OWZ3BA.js +130 -0
  36. package/dist/chunk-7JEGTRLD.js +338 -0
  37. package/dist/chunk-A44USUV7.js +923 -0
  38. package/dist/chunk-A4GOY3PE.js +25 -0
  39. package/dist/chunk-A4VFQH5G.js +251 -0
  40. package/dist/chunk-AELOBFW5.js +375 -0
  41. package/dist/chunk-AN2MOO5T.js +522 -0
  42. package/dist/chunk-BMR4CIEO.js +41 -0
  43. package/dist/chunk-BS7SV7C3.js +51 -0
  44. package/dist/chunk-BUPDIHML.js +613 -0
  45. package/dist/chunk-BUVJFRPY.js +887 -0
  46. package/dist/chunk-C3Z4DX3V.js +112 -0
  47. package/dist/chunk-CI2G3OEB.js +1818 -0
  48. package/dist/chunk-CKNVO24D.js +54 -0
  49. package/dist/chunk-CUVHQHZ7.js +391 -0
  50. package/dist/chunk-CXK4DZH3.js +114 -0
  51. package/dist/chunk-DKEPS5LH.js +315 -0
  52. package/dist/chunk-DU7W62N5.js +487 -0
  53. package/dist/chunk-DZAQBW35.js +751 -0
  54. package/dist/chunk-EB6FPQUP.js +316 -0
  55. package/dist/chunk-EMS2SK26.js +376 -0
  56. package/dist/chunk-ERLBPDGU.js +510 -0
  57. package/dist/chunk-EVCVDTXE.js +732 -0
  58. package/dist/chunk-FCIIHT24.js +384 -0
  59. package/dist/chunk-FFUN5D66.js +97 -0
  60. package/dist/chunk-FITOLXSX.js +714 -0
  61. package/dist/chunk-FMDSF3OV.js +68 -0
  62. package/dist/chunk-FNB3PNGF.js +410 -0
  63. package/dist/chunk-G2H74XJZ.js +2104 -0
  64. package/dist/chunk-GMR5MFHJ.js +339 -0
  65. package/dist/chunk-H6PI3KJT.js +305 -0
  66. package/dist/chunk-I46X5VUA.js +59 -0
  67. package/dist/chunk-I5IGB56C.js +255 -0
  68. package/dist/chunk-IH6ZMVQ5.js +3950 -0
  69. package/dist/chunk-IJZFN3HM.js +463 -0
  70. package/dist/chunk-IPWPWM6R.js +3079 -0
  71. package/dist/chunk-IYULMRBE.js +23 -0
  72. package/dist/chunk-IZMRON6C.js +167 -0
  73. package/dist/chunk-J5FIXQRT.js +813 -0
  74. package/dist/chunk-JED6ZDEE.js +73 -0
  75. package/dist/chunk-JEUJOX5X.js +136 -0
  76. package/dist/chunk-JM4LEPY3.js +436 -0
  77. package/dist/chunk-L3UHP6TD.js +101 -0
  78. package/dist/chunk-L66GEFB6.js +524 -0
  79. package/dist/chunk-LIOHW36Z.js +469 -0
  80. package/dist/chunk-LP7EC4MI.js +16 -0
  81. package/dist/chunk-MITI6NOL.js +548 -0
  82. package/dist/chunk-MO5YHHMQ.js +168 -0
  83. package/dist/chunk-MZSBFAPJ.js +885 -0
  84. package/dist/chunk-NNAAJVBU.js +9 -0
  85. package/dist/chunk-NOTA6TEI.js +47 -0
  86. package/dist/chunk-NURGB5Z4.js +335 -0
  87. package/dist/chunk-NX4EQS3U.js +1062 -0
  88. package/dist/chunk-NXMESY4J.js +1 -0
  89. package/dist/chunk-OJR3MQYV.js +1458 -0
  90. package/dist/chunk-OURHMODR.js +454 -0
  91. package/dist/chunk-P235SVAH.js +1057 -0
  92. package/dist/chunk-P4RH4OSP.js +1038 -0
  93. package/dist/chunk-P6T66CCZ.js +226 -0
  94. package/dist/chunk-PBAHEPLQ.js +223 -0
  95. package/dist/chunk-PBHE5UG6.js +1530 -0
  96. package/dist/chunk-PDKUANDZ.js +35 -0
  97. package/dist/chunk-PWIHZ6NJ.js +296 -0
  98. package/dist/chunk-QEBUY5NY.js +1685 -0
  99. package/dist/chunk-QLCCJEJI.js +253 -0
  100. package/dist/chunk-QOOUC2J5.js +52 -0
  101. package/dist/chunk-QYTPPDAO.js +402 -0
  102. package/dist/chunk-R3XI2VC7.js +801 -0
  103. package/dist/chunk-RCERWOJR.js +154 -0
  104. package/dist/chunk-RJE5JTVK.js +362 -0
  105. package/dist/chunk-RTLBSQ3G.js +1155 -0
  106. package/dist/chunk-RUNNI6VE.js +448 -0
  107. package/dist/chunk-RVMRZAPB.js +354 -0
  108. package/dist/chunk-RYEGFMUO.js +955 -0
  109. package/dist/chunk-RZCF2VVM.js +528 -0
  110. package/dist/chunk-SML67VPV.js +1025 -0
  111. package/dist/chunk-SQ7IY53Q.js +44 -0
  112. package/dist/chunk-SQAG3UXH.js +161 -0
  113. package/dist/chunk-SRTU6HMQ.js +1851 -0
  114. package/dist/chunk-T2OE3YQB.js +550 -0
  115. package/dist/chunk-T3UBLACL.js +299 -0
  116. package/dist/chunk-TLVIHFRO.js +296 -0
  117. package/dist/chunk-TYS6CSS5.js +52 -0
  118. package/dist/chunk-U6EQI3U6.js +130 -0
  119. package/dist/chunk-UJ4FJLBF.js +86 -0
  120. package/dist/chunk-ULOEATBZ.js +347 -0
  121. package/dist/chunk-UNCCZ3NU.js +127 -0
  122. package/dist/chunk-USZW2HHU.js +197 -0
  123. package/dist/chunk-UWN33VNX.js +1610 -0
  124. package/dist/chunk-UZ7EZW3B.js +40 -0
  125. package/dist/chunk-VOKGH627.js +37 -0
  126. package/dist/chunk-WBRZJOEC.js +204 -0
  127. package/dist/chunk-WCSOJFU3.js +380 -0
  128. package/dist/chunk-WCT3NYCV.js +160 -0
  129. package/dist/chunk-WVAJFAIA.js +529 -0
  130. package/dist/chunk-X5LCYCL5.js +394 -0
  131. package/dist/chunk-XAKEUMEJ.js +1256 -0
  132. package/dist/chunk-Y2ZE3MSG.js +590 -0
  133. package/dist/chunk-Y3J7VR52.js +646 -0
  134. package/dist/chunk-Y5QGVTVC.js +33 -0
  135. package/dist/chunk-YAA6IID3.js +548 -0
  136. package/dist/chunk-YGJTDXVR.js +692 -0
  137. package/dist/chunk-YRYKTYMQ.js +186 -0
  138. package/dist/chunk-YYVTBZZC.js +61 -0
  139. package/dist/chunk-Z5CGSFJB.js +647 -0
  140. package/dist/chunk-Z72XRXD4.js +787 -0
  141. package/dist/chunk-ZGR7ULFJ.js +978 -0
  142. package/dist/chunk-ZJEL4H2R.js +851 -0
  143. package/dist/chunk-ZO27FGJS.js +554 -0
  144. package/dist/collapse-CLPJD2RL.js +11 -0
  145. package/dist/collapse-SLINJQW6.js +9 -0
  146. package/dist/collapse-ZWUFFCK2.js +9 -0
  147. package/dist/compute-G55RG53N.js +8 -0
  148. package/dist/dgmo-router-DZCIDUO5.js +73 -0
  149. package/dist/dimensions-J3FHIMJ6.js +22 -0
  150. package/dist/element.cjs +1 -1
  151. package/dist/element.js +1 -1
  152. package/dist/element.mjs +1 -1
  153. package/dist/flowchart-parser-ZNSKIBVR.js +21 -0
  154. package/dist/flowchart-renderer-ZAEOL4DX.js +35 -0
  155. package/dist/index.cjs +3 -3
  156. package/dist/index.d.cts +3 -469
  157. package/dist/index.d.ts +3 -469
  158. package/dist/index.js +137 -69685
  159. package/dist/layout-46N4JJYK.js +17 -0
  160. package/dist/layout-5RA6QWR6.js +26 -0
  161. package/dist/layout-5T6RH5M6.js +14 -0
  162. package/dist/layout-7QXCNOVS.js +13 -0
  163. package/dist/layout-EE6GE46Y.js +17 -0
  164. package/dist/layout-G23F7LDH.js +9 -0
  165. package/dist/layout-HRBZPFCN.js +23 -0
  166. package/dist/layout-HWDSRX5E.js +20 -0
  167. package/dist/layout-HYZPWAK5.js +18 -0
  168. package/dist/layout-N76NR4ZO.js +19 -0
  169. package/dist/layout-OB3RI63S.js +14 -0
  170. package/dist/layout-S2QBYSK2.js +15 -0
  171. package/dist/layout-UM5F4DJB.js +15 -0
  172. package/dist/layout-search-OYV77HHS.js +1655 -0
  173. package/dist/load-data-EHDDZ5ZS.js +8 -0
  174. package/dist/palettes-PRJ2RI6D.js +56 -0
  175. package/dist/parser-2MFP2H2E.js +11 -0
  176. package/dist/parser-3STE62GB.js +21 -0
  177. package/dist/parser-4FL2CMDG.js +18 -0
  178. package/dist/parser-4OGOBJJ4.js +13 -0
  179. package/dist/parser-6BTRLKRZ.js +15 -0
  180. package/dist/parser-AQETEVRW.js +21 -0
  181. package/dist/parser-CFZD5IBL.js +12 -0
  182. package/dist/parser-FUSKFGZN.js +16 -0
  183. package/dist/parser-I6KXEYFK.js +13 -0
  184. package/dist/parser-IXSZZQHY.js +18 -0
  185. package/dist/parser-JAL2HD4I.js +13 -0
  186. package/dist/parser-KNSQSKQO.js +20 -0
  187. package/dist/parser-N5O4IHUN.js +13 -0
  188. package/dist/parser-NGU3ETO6.js +16 -0
  189. package/dist/parser-NRAI6O25.js +19 -0
  190. package/dist/parser-O5J4VBII.js +11 -0
  191. package/dist/parser-OV7NOBW6.js +21 -0
  192. package/dist/parser-PQ3POX45.js +23 -0
  193. package/dist/parser-TFZFBVWN.js +11 -0
  194. package/dist/parser-TRTHDFPP.js +18 -0
  195. package/dist/parser-VQP2UJ6W.js +11 -0
  196. package/dist/parser-XDVELHRK.js +13 -0
  197. package/dist/parser-XKRP7QKP.js +11 -0
  198. package/dist/parser-Y6WTBU76.js +14 -0
  199. package/dist/parser-ZSDPZYQP.js +12 -0
  200. package/dist/renderer-2XQQQ6QR.js +28 -0
  201. package/dist/renderer-5NDVNDAZ.js +26 -0
  202. package/dist/renderer-6EEZHMH4.js +26 -0
  203. package/dist/renderer-6W5462RB.js +43 -0
  204. package/dist/renderer-7MVLWWQD.js +22 -0
  205. package/dist/renderer-AWWAF6XD.js +33 -0
  206. package/dist/renderer-BYCNMBF7.js +34 -0
  207. package/dist/renderer-CLJHQPBJ.js +29 -0
  208. package/dist/renderer-GHPZMFU2.js +15 -0
  209. package/dist/renderer-JGBKUCZD.js +16 -0
  210. package/dist/renderer-KQB7UGDS.js +19 -0
  211. package/dist/renderer-PGX2TKVS.js +24 -0
  212. package/dist/renderer-QIWVHWZO.js +15 -0
  213. package/dist/renderer-RPOA5YPZ.js +35 -0
  214. package/dist/renderer-SMIBCRVB.js +24 -0
  215. package/dist/renderer-T7YKC5VP.js +28 -0
  216. package/dist/renderer-TOCOVLHS.js +37 -0
  217. package/dist/renderer-UWA5XS74.js +39 -0
  218. package/dist/renderer-VACVQYML.js +25 -0
  219. package/dist/renderer-W4M6QLIJ.js +37 -0
  220. package/dist/renderer-WZRREQ2P.js +23 -0
  221. package/dist/renderer-YY2OSF6E.js +27 -0
  222. package/dist/renderer-Z7I3W2PP.js +24 -0
  223. package/dist/renderer-ZGNTUWC4.js +22 -0
  224. package/dist/renderer-ZTR3DER3.js +19 -0
  225. package/dist/renderer-radial-C32GPJQ7.js +21 -0
  226. package/dist/resolver-NOAA7ID7.js +13 -0
  227. package/dist/state-collapse-HCGD6IVJ.js +8 -0
  228. package/dist/state-parser-Z2V23ATR.js +18 -0
  229. package/dist/state-renderer-RFYHSP4K.js +34 -0
  230. package/dist/themes-1-CuKpeH.d.cts +908 -0
  231. package/dist/themes-1-CuKpeH.d.ts +908 -0
  232. package/package.json +1 -1
@@ -0,0 +1,646 @@
1
+ import {
2
+ RECOGNIZED_COLOR_NAMES,
3
+ invalidColorDiagnostic,
4
+ resolveColor,
5
+ resolveColorWithDiagnostic
6
+ } from "./chunk-TLVIHFRO.js";
7
+ import {
8
+ METADATA_DIAGNOSTIC_CODES,
9
+ emptyMetadataValueMessage,
10
+ makeDgmoError,
11
+ suggest
12
+ } from "./chunk-CXK4DZH3.js";
13
+
14
+ // src/utils/reserved-key-registry.ts
15
+ function staticRegistry(keys) {
16
+ return { keys: new Set(keys), tagAliases: /* @__PURE__ */ new Set() };
17
+ }
18
+ function withTagAliases(base, aliases) {
19
+ return { keys: base.keys, tagAliases: aliases };
20
+ }
21
+ function isReservedKey(registry, key) {
22
+ return registry.keys.has(key) || registry.tagAliases.has(key);
23
+ }
24
+ var SEQUENCE_REGISTRY = staticRegistry([
25
+ "color",
26
+ "description",
27
+ "role",
28
+ "collapsed",
29
+ // Participant layout-order override (§2.2). Colon-keyed `position: N`.
30
+ "position"
31
+ ]);
32
+ var INFRA_REGISTRY = staticRegistry([
33
+ "color",
34
+ "description",
35
+ "collapsed",
36
+ "icon"
37
+ ]);
38
+ var MAP_REGISTRY = staticRegistry([
39
+ "heat",
40
+ "size",
41
+ "width",
42
+ "label",
43
+ "style"
44
+ // `surface:` was removed in the 2026-06-02 defaults-on review — it is no longer
45
+ // a recognized metadata key (the route/edge surface feature was cut; §24B.7).
46
+ // A stray `surface: water` is no longer captured as a reserved key.
47
+ ]);
48
+ var ORG_REGISTRY = staticRegistry([
49
+ "color",
50
+ "description",
51
+ "role",
52
+ "location",
53
+ "email",
54
+ "phone"
55
+ ]);
56
+ var C4_REGISTRY = staticRegistry([
57
+ "color",
58
+ "description",
59
+ "tech",
60
+ "type",
61
+ "collapsed"
62
+ ]);
63
+ var ER_REGISTRY = staticRegistry([
64
+ "color",
65
+ "description",
66
+ "domain"
67
+ ]);
68
+ var EVENT_LINE_REGISTRY = staticRegistry([
69
+ "color"
70
+ ]);
71
+ var KANBAN_REGISTRY = staticRegistry([
72
+ "color",
73
+ "description",
74
+ "wip",
75
+ "assignee",
76
+ "due",
77
+ "collapsed"
78
+ // `[Column] collapsed: true` view-state marker
79
+ ]);
80
+ var SITEMAP_REGISTRY = staticRegistry([
81
+ "color",
82
+ "description",
83
+ "status"
84
+ ]);
85
+ var GANTT_REGISTRY = staticRegistry([
86
+ "color",
87
+ "description",
88
+ "duration",
89
+ "offset",
90
+ "progress",
91
+ "start",
92
+ "collapsed"
93
+ // `[Group] collapsed: true` view-state marker
94
+ ]);
95
+ var PERT_REGISTRY = staticRegistry([
96
+ "color",
97
+ "description",
98
+ "confidence",
99
+ "collapsed"
100
+ ]);
101
+ var BOXES_AND_LINES_REGISTRY = staticRegistry([
102
+ "color",
103
+ "description",
104
+ "heat"
105
+ ]);
106
+ var TIMELINE_REGISTRY = staticRegistry([
107
+ "color",
108
+ "description",
109
+ "duration"
110
+ ]);
111
+ var MINDMAP_REGISTRY = staticRegistry([
112
+ "color",
113
+ "description",
114
+ "collapsed"
115
+ ]);
116
+ var TECH_RADAR_REGISTRY = staticRegistry([
117
+ "color",
118
+ "description",
119
+ "quadrant",
120
+ "ring",
121
+ "trend"
122
+ ]);
123
+ var CYCLE_REGISTRY = staticRegistry([
124
+ "color",
125
+ "description",
126
+ "width",
127
+ "span"
128
+ ]);
129
+ var JOURNEY_MAP_REGISTRY = staticRegistry([
130
+ "color",
131
+ "description",
132
+ "score",
133
+ "emotion",
134
+ "pain",
135
+ "opportunity",
136
+ "thought"
137
+ ]);
138
+ var PYRAMID_REGISTRY = staticRegistry([
139
+ "color",
140
+ "description"
141
+ ]);
142
+ var RING_REGISTRY = staticRegistry([
143
+ "color",
144
+ "description"
145
+ ]);
146
+ var TREEMAP_REGISTRY = staticRegistry(["heat"]);
147
+ var RACI_REGISTRY = staticRegistry([
148
+ "color",
149
+ "description"
150
+ ]);
151
+
152
+ // src/utils/parsing.ts
153
+ var RECOGNIZED_COLOR_SET = new Set(
154
+ RECOGNIZED_COLOR_NAMES
155
+ );
156
+ var ALL_CHART_TYPES = /* @__PURE__ */ new Set([
157
+ // data charts
158
+ "bar",
159
+ "line",
160
+ "pie",
161
+ "polar-area",
162
+ "radar",
163
+ "scatter",
164
+ "sankey",
165
+ "function",
166
+ "heatmap",
167
+ "funnel",
168
+ // visualizations
169
+ "slope",
170
+ "wordcloud",
171
+ "arc",
172
+ "timeline",
173
+ "event-line",
174
+ "venn",
175
+ "quadrant",
176
+ // diagrams
177
+ "sequence",
178
+ "flowchart",
179
+ "class",
180
+ "er",
181
+ "org",
182
+ "kanban",
183
+ "c4",
184
+ "state",
185
+ "sitemap",
186
+ "infra",
187
+ "gantt",
188
+ "pert",
189
+ "boxes-and-lines",
190
+ "swimlane",
191
+ "version-control",
192
+ "mindmap",
193
+ "wireframe",
194
+ "tech-radar",
195
+ "cycle",
196
+ "journey-map",
197
+ "pyramid",
198
+ "ring",
199
+ "treemap",
200
+ "block",
201
+ "raci",
202
+ "map"
203
+ ]);
204
+ function measureIndent(line) {
205
+ let indent = 0;
206
+ for (const ch of line) {
207
+ if (ch === " ") indent++;
208
+ else if (ch === " ") indent += 4;
209
+ else break;
210
+ }
211
+ return indent;
212
+ }
213
+ function extractColor(label, palette, diagnostics, line) {
214
+ const lastSpaceIdx = Math.max(
215
+ label.lastIndexOf(" "),
216
+ label.lastIndexOf(" ")
217
+ );
218
+ if (lastSpaceIdx < 0) return { label };
219
+ const trailing = label.substring(lastSpaceIdx + 1);
220
+ if (!RECOGNIZED_COLOR_SET.has(trailing)) {
221
+ if (diagnostics && line !== void 0) {
222
+ const diag = invalidColorDiagnostic(trailing, line);
223
+ if (diag) diagnostics.push(diag);
224
+ }
225
+ return { label };
226
+ }
227
+ let color;
228
+ if (diagnostics && line !== void 0) {
229
+ color = resolveColorWithDiagnostic(trailing, line, diagnostics, palette);
230
+ } else {
231
+ color = resolveColor(trailing, palette) ?? void 0;
232
+ }
233
+ return {
234
+ label: label.substring(0, lastSpaceIdx).trimEnd(),
235
+ ...color !== void 0 && { color }
236
+ };
237
+ }
238
+ var OPTION_NOCOLON_RE = /^([a-z][a-z0-9-]*)\s+(.+)$/i;
239
+ var GLOBAL_BOOLEANS = /* @__PURE__ */ new Set([
240
+ "solid-fill",
241
+ "no-title",
242
+ "no-notes"
243
+ ]);
244
+ function recognizeGlobalBoolean(token) {
245
+ const t = token.trim().toLowerCase();
246
+ return GLOBAL_BOOLEANS.has(t) ? t : null;
247
+ }
248
+ function tryParseSharedOption(line, options) {
249
+ const key = recognizeGlobalBoolean(line);
250
+ if (key) {
251
+ options[key] = "on";
252
+ return true;
253
+ }
254
+ return false;
255
+ }
256
+ function parseFirstLine(line) {
257
+ const trimmed = line.trim();
258
+ if (!trimmed || trimmed.startsWith("//")) return null;
259
+ const spaceIdx = trimmed.indexOf(" ");
260
+ if (spaceIdx === -1) {
261
+ const ct = trimmed.toLowerCase();
262
+ return ALL_CHART_TYPES.has(ct) ? { chartType: ct, title: void 0 } : null;
263
+ }
264
+ const firstToken = trimmed.substring(0, spaceIdx).toLowerCase();
265
+ if (!ALL_CHART_TYPES.has(firstToken)) return null;
266
+ return {
267
+ chartType: firstToken,
268
+ title: trimmed.substring(spaceIdx + 1).trim() || void 0
269
+ };
270
+ }
271
+ function normalizeNumericToken(token) {
272
+ if (!token.includes(",") && !token.includes("_")) return null;
273
+ if (token.includes(",") && token.includes("_")) return null;
274
+ let sign = "";
275
+ let unsigned = token;
276
+ if (unsigned.startsWith("-")) {
277
+ sign = "-";
278
+ unsigned = unsigned.substring(1);
279
+ }
280
+ if (!unsigned) return null;
281
+ if (unsigned.includes(",")) {
282
+ if (/^\d{1,3}(,\d{3})+$/.test(unsigned))
283
+ return sign + unsigned.replace(/,/g, "");
284
+ if (/^\d{1,3}(,\d{3})+\.\d+$/.test(unsigned))
285
+ return sign + unsigned.replace(/,/g, "");
286
+ return null;
287
+ }
288
+ if (/^\d+(_\d+)+$/.test(unsigned)) return sign + unsigned.replace(/_/g, "");
289
+ if (/^\d+(_\d+)*\.\d+$/.test(unsigned) && unsigned.includes("_"))
290
+ return sign + unsigned.replace(/_/g, "");
291
+ return null;
292
+ }
293
+ function stripQuotes(token) {
294
+ if (token.length >= 2) {
295
+ if (token[0] === '"' && token[token.length - 1] === '"' || token[0] === "'" && token[token.length - 1] === "'") {
296
+ return token.substring(1, token.length - 1);
297
+ }
298
+ }
299
+ return token;
300
+ }
301
+ function tokenizeQuoteAware(input) {
302
+ const tokens = [];
303
+ let i = 0;
304
+ while (i < input.length) {
305
+ if (input[i] === " " || input[i] === " ") {
306
+ i++;
307
+ continue;
308
+ }
309
+ if (input[i] === '"' || input[i] === "'") {
310
+ const quote = input[i];
311
+ const start2 = i;
312
+ i++;
313
+ while (i < input.length && input[i] !== quote) i++;
314
+ if (i < input.length) i++;
315
+ tokens.push(input.substring(start2, i));
316
+ continue;
317
+ }
318
+ const start = i;
319
+ while (i < input.length && input[i] !== " " && input[i] !== " ") i++;
320
+ tokens.push(input.substring(start, i));
321
+ }
322
+ return tokens;
323
+ }
324
+ function collectIndentedValues(lines, startIndex) {
325
+ const values = [];
326
+ const lineNumbers = [];
327
+ let j = startIndex + 1;
328
+ for (; j < lines.length; j++) {
329
+ const raw = lines[j];
330
+ const trimmed = raw.trim();
331
+ if (!trimmed) continue;
332
+ if (trimmed.startsWith("//")) continue;
333
+ if (raw[0] !== " " && raw[0] !== " ") break;
334
+ values.push(trimmed.replace(/,\s*$/, ""));
335
+ lineNumbers.push(j + 1);
336
+ }
337
+ return { values, lineNumbers, newIndex: j - 1 };
338
+ }
339
+ function parseSeriesNames(value, lines, lineIndex, palette, diagnostics) {
340
+ let rawNames;
341
+ let series;
342
+ let newIndex = lineIndex;
343
+ let nameLineNumbers = [];
344
+ if (value) {
345
+ series = value;
346
+ rawNames = value.split(",").map((s) => s.trim()).filter(Boolean);
347
+ nameLineNumbers = rawNames.map(() => lineIndex + 1);
348
+ } else {
349
+ const collected = collectIndentedValues(lines, lineIndex);
350
+ newIndex = collected.newIndex;
351
+ rawNames = collected.values;
352
+ nameLineNumbers = collected.lineNumbers;
353
+ series = rawNames.join(", ");
354
+ }
355
+ const isHeader = (s) => {
356
+ const tok = s.split(/\s+/, 1)[0];
357
+ if (tok === "y-label") return "left";
358
+ if (tok === "y-right-label") return "right";
359
+ return null;
360
+ };
361
+ if (rawNames.some((r) => isHeader(r) !== null)) {
362
+ const names2 = [];
363
+ const nameColors2 = [];
364
+ const axes = [];
365
+ const memberLineNumbers = [];
366
+ let leftLabel;
367
+ let rightLabel;
368
+ let currentAxis = "left";
369
+ for (let i = 0; i < rawNames.length; i++) {
370
+ const raw = rawNames[i];
371
+ const side = isHeader(raw);
372
+ if (side !== null) {
373
+ const label = raw.slice(raw.indexOf(" ") + 1).trim();
374
+ currentAxis = side;
375
+ if (side === "left") leftLabel = label || leftLabel;
376
+ else rightLabel = label || rightLabel;
377
+ continue;
378
+ }
379
+ const extracted = extractColor(
380
+ raw,
381
+ palette,
382
+ diagnostics,
383
+ nameLineNumbers[i]
384
+ );
385
+ names2.push(extracted.label);
386
+ nameColors2.push(extracted.color);
387
+ axes.push(currentAxis);
388
+ memberLineNumbers.push(nameLineNumbers[i]);
389
+ }
390
+ return {
391
+ series: names2.join(", "),
392
+ names: names2,
393
+ nameColors: nameColors2,
394
+ nameLineNumbers: memberLineNumbers,
395
+ newIndex,
396
+ axes,
397
+ ...leftLabel !== void 0 && { leftLabel },
398
+ ...rightLabel !== void 0 && { rightLabel }
399
+ };
400
+ }
401
+ const names = [];
402
+ const nameColors = [];
403
+ for (let i = 0; i < rawNames.length; i++) {
404
+ const raw = rawNames[i];
405
+ const extracted = extractColor(
406
+ raw,
407
+ palette,
408
+ diagnostics,
409
+ nameLineNumbers[i]
410
+ );
411
+ nameColors.push(extracted.color);
412
+ names.push(extracted.label);
413
+ }
414
+ if (names.length === 1) {
415
+ series = names[0];
416
+ }
417
+ return { series, names, nameColors, nameLineNumbers, newIndex };
418
+ }
419
+ function peelTrailingColorName(label) {
420
+ const lastSpaceIdx = Math.max(
421
+ label.lastIndexOf(" "),
422
+ label.lastIndexOf(" ")
423
+ );
424
+ if (lastSpaceIdx < 0) return { label };
425
+ const trailing = label.substring(lastSpaceIdx + 1);
426
+ if (!RECOGNIZED_COLOR_SET.has(trailing)) return { label };
427
+ return {
428
+ label: label.substring(0, lastSpaceIdx).trimEnd(),
429
+ colorName: trailing
430
+ };
431
+ }
432
+ function peelRampColors(label) {
433
+ const peelOne = (s) => {
434
+ const idx = Math.max(s.lastIndexOf(" "), s.lastIndexOf(" "));
435
+ if (idx < 0) return { rest: s };
436
+ const trailing = s.substring(idx + 1);
437
+ if (!RECOGNIZED_COLOR_SET.has(trailing)) return { rest: s };
438
+ return { rest: s.substring(0, idx).trimEnd(), color: trailing };
439
+ };
440
+ const first = peelOne(label);
441
+ if (first.color === void 0) return { label };
442
+ const second = peelOne(first.rest);
443
+ if (second.color === void 0) {
444
+ return { label: first.rest, high: first.color };
445
+ }
446
+ return { label: second.rest, low: second.color, high: first.color };
447
+ }
448
+ var RESERVED_KEY_RE = /^[A-Za-z][A-Za-z0-9_-]*$/;
449
+ var AS_ALIAS_RE = /\s+as\s+([A-Za-z][A-Za-z0-9_]{0,11})$/;
450
+ function scanTokens(line) {
451
+ const tokens = [];
452
+ let i = 0;
453
+ while (i < line.length) {
454
+ if (line[i] === " " || line[i] === " ") {
455
+ i++;
456
+ continue;
457
+ }
458
+ if (line[i] === '"' || line[i] === "'") {
459
+ const quote = line[i];
460
+ const start2 = i;
461
+ i++;
462
+ while (i < line.length && line[i] !== quote) i++;
463
+ if (i < line.length) i++;
464
+ tokens.push({
465
+ text: line.substring(start2, i),
466
+ start: start2,
467
+ end: i,
468
+ quoted: true
469
+ });
470
+ continue;
471
+ }
472
+ const start = i;
473
+ while (i < line.length && line[i] !== " " && line[i] !== " ") i++;
474
+ tokens.push({
475
+ text: line.substring(start, i),
476
+ start,
477
+ end: i,
478
+ quoted: false
479
+ });
480
+ }
481
+ return tokens;
482
+ }
483
+ function findMetadataCutOffset(line, tokens, registry) {
484
+ for (let i = 0; i < tokens.length; i++) {
485
+ const tok = tokens[i];
486
+ if (tok.quoted) continue;
487
+ const inlineColon = tok.text.indexOf(":");
488
+ if (inlineColon > 0) {
489
+ const keyPart = tok.text.substring(0, inlineColon);
490
+ if (RESERVED_KEY_RE.test(keyPart) && isReservedKey(registry, keyPart.toLowerCase())) {
491
+ return tok.start;
492
+ }
493
+ } else if (inlineColon < 0) {
494
+ if (RESERVED_KEY_RE.test(tok.text) && isReservedKey(registry, tok.text.toLowerCase())) {
495
+ const tail = line.substring(tok.end).replace(/^[ \t]+/, "");
496
+ if (tail.startsWith(":")) {
497
+ return tok.start;
498
+ }
499
+ }
500
+ }
501
+ }
502
+ return -1;
503
+ }
504
+ function parseMetadataRegion(region, aliasMap, diagnostics, line) {
505
+ const meta = {};
506
+ let i = 0;
507
+ while (i < region.length) {
508
+ while (i < region.length && (region[i] === " " || region[i] === " " || region[i] === ","))
509
+ i++;
510
+ if (i >= region.length) break;
511
+ const keyStart = i;
512
+ while (i < region.length && region[i] !== ":" && region[i] !== ",") i++;
513
+ if (i >= region.length || region[i] !== ":") break;
514
+ const rawKey = region.substring(keyStart, i).trim().toLowerCase();
515
+ if (!rawKey) break;
516
+ i++;
517
+ while (i < region.length && (region[i] === " " || region[i] === " ")) i++;
518
+ let value;
519
+ if (i < region.length && (region[i] === '"' || region[i] === "'")) {
520
+ const quote = region[i];
521
+ i++;
522
+ const vStart = i;
523
+ while (i < region.length && region[i] !== quote) i++;
524
+ value = region.substring(vStart, i);
525
+ if (i < region.length) i++;
526
+ while (i < region.length && (region[i] === " " || region[i] === " "))
527
+ i++;
528
+ } else {
529
+ const vStart = i;
530
+ while (i < region.length && region[i] !== ",") i++;
531
+ value = region.substring(vStart, i).trim();
532
+ }
533
+ const key = aliasMap.get(rawKey) ?? rawKey;
534
+ if (!value) {
535
+ if (diagnostics && line !== void 0) {
536
+ diagnostics.push(
537
+ makeDgmoError(
538
+ line,
539
+ emptyMetadataValueMessage(rawKey),
540
+ "warning",
541
+ METADATA_DIAGNOSTIC_CODES.EMPTY_METADATA_VALUE
542
+ )
543
+ );
544
+ }
545
+ continue;
546
+ }
547
+ meta[key] = value;
548
+ }
549
+ return meta;
550
+ }
551
+ function splitNameAndMeta(line, registry, aliasMap = /* @__PURE__ */ new Map(), palette, diagnostics, lineNumber, options = {}) {
552
+ const tokens = scanTokens(line);
553
+ const cutOffset = findMetadataCutOffset(line, tokens, registry);
554
+ let nameRegion;
555
+ let metaRegion;
556
+ if (cutOffset === -1) {
557
+ nameRegion = line.trim();
558
+ metaRegion = "";
559
+ } else {
560
+ nameRegion = line.substring(0, cutOffset).trimEnd();
561
+ metaRegion = line.substring(cutOffset);
562
+ }
563
+ const colorResult = peelTrailingColorName(nameRegion);
564
+ let postColorName = colorResult.label;
565
+ let alias;
566
+ if (options.peelAlias !== false) {
567
+ const aliasMatch = postColorName.match(AS_ALIAS_RE);
568
+ if (aliasMatch) {
569
+ alias = aliasMatch[1];
570
+ postColorName = postColorName.substring(0, aliasMatch.index).trimEnd();
571
+ }
572
+ }
573
+ const meta = metaRegion.length > 0 ? parseMetadataRegion(metaRegion, aliasMap, diagnostics, lineNumber) : {};
574
+ void palette;
575
+ return {
576
+ name: postColorName,
577
+ meta,
578
+ ...colorResult.colorName !== void 0 && {
579
+ color: colorResult.colorName
580
+ },
581
+ ...alias !== void 0 && { alias }
582
+ };
583
+ }
584
+ var POTENTIAL_META_RE = /\b([\w-]+)\s*:/;
585
+ function warnUnknownMetaKeys(meta, registry, warn, nameToScan) {
586
+ const candidates = Array.from(registry.keys);
587
+ for (const key of Object.keys(meta)) {
588
+ if (isReservedKey(registry, key)) continue;
589
+ const hint = suggest(key, candidates);
590
+ warn(`Unknown metadata key "${key}".${hint ? " " + hint : ""}`);
591
+ }
592
+ if (nameToScan) {
593
+ const m = nameToScan.match(POTENTIAL_META_RE);
594
+ if (m) {
595
+ const key = m[1].toLowerCase();
596
+ if (!isReservedKey(registry, key)) {
597
+ const hint = suggest(key, candidates);
598
+ if (hint) {
599
+ warn(`Unknown metadata key "${key}". ${hint}`);
600
+ }
601
+ }
602
+ }
603
+ }
604
+ }
605
+
606
+ export {
607
+ withTagAliases,
608
+ isReservedKey,
609
+ SEQUENCE_REGISTRY,
610
+ INFRA_REGISTRY,
611
+ MAP_REGISTRY,
612
+ ORG_REGISTRY,
613
+ C4_REGISTRY,
614
+ ER_REGISTRY,
615
+ EVENT_LINE_REGISTRY,
616
+ KANBAN_REGISTRY,
617
+ SITEMAP_REGISTRY,
618
+ GANTT_REGISTRY,
619
+ PERT_REGISTRY,
620
+ BOXES_AND_LINES_REGISTRY,
621
+ TIMELINE_REGISTRY,
622
+ MINDMAP_REGISTRY,
623
+ TECH_RADAR_REGISTRY,
624
+ CYCLE_REGISTRY,
625
+ JOURNEY_MAP_REGISTRY,
626
+ PYRAMID_REGISTRY,
627
+ RING_REGISTRY,
628
+ TREEMAP_REGISTRY,
629
+ RACI_REGISTRY,
630
+ ALL_CHART_TYPES,
631
+ measureIndent,
632
+ extractColor,
633
+ OPTION_NOCOLON_RE,
634
+ tryParseSharedOption,
635
+ parseFirstLine,
636
+ normalizeNumericToken,
637
+ stripQuotes,
638
+ tokenizeQuoteAware,
639
+ collectIndentedValues,
640
+ parseSeriesNames,
641
+ peelTrailingColorName,
642
+ peelRampColors,
643
+ splitNameAndMeta,
644
+ warnUnknownMetaKeys
645
+ };
646
+ //# sourceMappingURL=chunk-Y3J7VR52.js.map
@@ -0,0 +1,33 @@
1
+ import {
2
+ FONT_FAMILY
3
+ } from "./chunk-6KFWC4CO.js";
4
+
5
+ // src/utils/export-container.ts
6
+ function runInExportContainer(width, height, fn) {
7
+ const container = document.createElement("div");
8
+ container.style.width = `${width}px`;
9
+ container.style.height = `${height}px`;
10
+ container.style.position = "absolute";
11
+ container.style.left = "-9999px";
12
+ document.body.appendChild(container);
13
+ try {
14
+ return fn(container);
15
+ } finally {
16
+ document.body.removeChild(container);
17
+ }
18
+ }
19
+ function extractExportSvg(container, theme) {
20
+ const svgEl = container.querySelector("svg");
21
+ if (!svgEl) return "";
22
+ if (theme === "transparent") svgEl.style.background = "none";
23
+ svgEl.setAttribute("xmlns", "http://www.w3.org/2000/svg");
24
+ svgEl.style.fontFamily = FONT_FAMILY;
25
+ svgEl.querySelectorAll("[data-export-ignore]").forEach((el) => el.remove());
26
+ return svgEl.outerHTML;
27
+ }
28
+
29
+ export {
30
+ runInExportContainer,
31
+ extractExportSvg
32
+ };
33
+ //# sourceMappingURL=chunk-Y5QGVTVC.js.map