@diagrammo/dgmo 0.48.2 → 0.50.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 (244) hide show
  1. package/.cursorrules +12 -3
  2. package/.github/copilot-instructions.md +12 -3
  3. package/.windsurfrules +12 -3
  4. package/SKILL.md +12 -3
  5. package/dist/advanced.d.ts +851 -1
  6. package/dist/advanced.js +601 -177
  7. package/dist/auto.css +63 -0
  8. package/dist/auto.js +220 -110
  9. package/dist/auto.mjs +45920 -33167
  10. package/dist/block.css +63 -0
  11. package/dist/block.d.ts +13 -5
  12. package/dist/block.js +239 -62
  13. package/dist/{charts-d3-QOZHKTCT.js → charts-d3-DKUD7MQE.js} +9 -8
  14. package/dist/{chunk-3MQQNXPD.js → chunk-2C56LEML.js} +3 -3
  15. package/dist/{chunk-L66GEFB6.js → chunk-2JJ2KNPI.js} +4 -4
  16. package/dist/{chunk-6SM5NJQH.js → chunk-2QYTMIRR.js} +4 -4
  17. package/dist/{chunk-RJE5JTVK.js → chunk-3G6TMNVF.js} +7 -7
  18. package/dist/{chunk-MO5YHHMQ.js → chunk-3LKM6FMW.js} +2 -2
  19. package/dist/{chunk-76OWZ3BA.js → chunk-3P2DKJCG.js} +2 -2
  20. package/dist/chunk-3TDRHT4J.js +1043 -0
  21. package/dist/chunk-3XPUDB7B.js +420 -0
  22. package/dist/{chunk-2LACINWN.js → chunk-3ZPC476N.js} +7 -7
  23. package/dist/{chunk-G2H74XJZ.js → chunk-4BMJQFNK.js} +8 -8
  24. package/dist/{chunk-THXCFRTU.js → chunk-4S723I74.js} +9 -9
  25. package/dist/{chunk-6NYWYNBI.js → chunk-4XK3FLFB.js} +3 -3
  26. package/dist/chunk-5JSWBPZZ.js +607 -0
  27. package/dist/{chunk-WCT3NYCV.js → chunk-5LWQH6QV.js} +1 -1
  28. package/dist/{chunk-7DTWEFUE.js → chunk-5Z736BSU.js} +8 -8
  29. package/dist/{chunk-ERLBPDGU.js → chunk-6BFZKBGD.js} +2 -2
  30. package/dist/{chunk-6HO5ZTXK.js → chunk-6IAA2QQ2.js} +2 -2
  31. package/dist/{chunk-H6PI3KJT.js → chunk-6IUAK7RZ.js} +2 -2
  32. package/dist/{chunk-RTLBSQ3G.js → chunk-6M5PJFQG.js} +3 -3
  33. package/dist/{chunk-Z5CGSFJB.js → chunk-6X4AKWLF.js} +4 -4
  34. package/dist/{chunk-OJR3MQYV.js → chunk-6ZT4U37Q.js} +291 -52
  35. package/dist/{chunk-5QXL4NYS.js → chunk-7G2ER4CY.js} +10 -5
  36. package/dist/chunk-7PQYTZMA.js +681 -0
  37. package/dist/{chunk-OURHMODR.js → chunk-7RB5Q6MB.js} +11 -11
  38. package/dist/{chunk-YAA6IID3.js → chunk-7UEMZREK.js} +2 -2
  39. package/dist/{chunk-AN2MOO5T.js → chunk-A3WQVFBS.js} +3 -3
  40. package/dist/{chunk-VOKGH627.js → chunk-AHGF2YYA.js} +13 -3
  41. package/dist/{chunk-CI2G3OEB.js → chunk-ASS5YYIZ.js} +12 -12
  42. package/dist/{chunk-TYS6CSS5.js → chunk-BCYVE3N5.js} +2 -2
  43. package/dist/chunk-BDXC7MDK.js +2395 -0
  44. package/dist/chunk-BTUTZMPT.js +482 -0
  45. package/dist/{chunk-YGJTDXVR.js → chunk-C4GQDB5L.js} +2 -2
  46. package/dist/{chunk-Y2ZE3MSG.js → chunk-C63UWAKM.js} +2 -2
  47. package/dist/{chunk-725LDASD.js → chunk-CLD2OKV7.js} +2 -2
  48. package/dist/{chunk-WBRZJOEC.js → chunk-CMCR5WBW.js} +3 -3
  49. package/dist/{chunk-IZMRON6C.js → chunk-CVV36CWI.js} +2 -2
  50. package/dist/chunk-DMJJ3CEQ.js +254 -0
  51. package/dist/{chunk-MZSBFAPJ.js → chunk-EJTKV7CY.js} +9 -9
  52. package/dist/{chunk-FITOLXSX.js → chunk-EOFPYPAU.js} +26 -2
  53. package/dist/{chunk-X5LCYCL5.js → chunk-ER5SCQWQ.js} +5 -5
  54. package/dist/{chunk-4OHACBGX.js → chunk-F2L5GCQ4.js} +2 -2
  55. package/dist/{chunk-FCIIHT24.js → chunk-F5UDBSJY.js} +7 -7
  56. package/dist/{chunk-3JLKYGBQ.js → chunk-F7BFXWNQ.js} +2 -2
  57. package/dist/{chunk-FANX6UJR.js → chunk-FAL7NOK3.js} +11 -11
  58. package/dist/{chunk-BUPDIHML.js → chunk-FB2WHOEQ.js} +4 -4
  59. package/dist/chunk-FL4IOQ37.js +379 -0
  60. package/dist/{chunk-LIOHW36Z.js → chunk-GBE54KY6.js} +6 -5
  61. package/dist/{chunk-RUNNI6VE.js → chunk-GL5UZ6NY.js} +3 -3
  62. package/dist/{chunk-4GRI7MEB.js → chunk-GPWHQ5FJ.js} +6 -6
  63. package/dist/chunk-GROQGHCT.js +960 -0
  64. package/dist/{chunk-SGZYXELT.js → chunk-H73FP42Q.js} +9 -6
  65. package/dist/{chunk-PBAHEPLQ.js → chunk-HGN652MU.js} +7 -6
  66. package/dist/{chunk-3SMGIJDD.js → chunk-HHXOONLX.js} +13 -1
  67. package/dist/{chunk-QOOUC2J5.js → chunk-HQCHYB5F.js} +2 -2
  68. package/dist/{chunk-AELOBFW5.js → chunk-I4IFRCUB.js} +3 -3
  69. package/dist/{chunk-GMR5MFHJ.js → chunk-I7F2A35O.js} +2 -2
  70. package/dist/{chunk-T2OE3YQB.js → chunk-IA3FJYWR.js} +3 -3
  71. package/dist/chunk-IAEC4KLA.js +492 -0
  72. package/dist/chunk-IVKC4GID.js +32 -0
  73. package/dist/{chunk-HSH73DP6.js → chunk-JFYIP7XU.js} +139 -39
  74. package/dist/{chunk-CKNVO24D.js → chunk-JZNMXEIV.js} +2 -2
  75. package/dist/chunk-KJXIHOVL.js +940 -0
  76. package/dist/chunk-L2ZTFHAY.js +331 -0
  77. package/dist/{chunk-B7JUCQUA.js → chunk-M5RXSRO2.js} +4 -4
  78. package/dist/{chunk-ULOEATBZ.js → chunk-NFFIKVNO.js} +106 -29
  79. package/dist/{chunk-PZMETGLY.js → chunk-NISQC5KW.js} +358 -122
  80. package/dist/chunk-O4VUFXIH.js +574 -0
  81. package/dist/{chunk-RVMRZAPB.js → chunk-O76UD6VJ.js} +3 -3
  82. package/dist/{chunk-JM4LEPY3.js → chunk-O7NUCTFU.js} +2 -2
  83. package/dist/{chunk-JED6ZDEE.js → chunk-O7WP4ZD4.js} +2 -2
  84. package/dist/{chunk-EVCVDTXE.js → chunk-OHQEMBLI.js} +3 -3
  85. package/dist/{chunk-ZBWMSD5N.js → chunk-ONA5KPV3.js} +4 -4
  86. package/dist/{chunk-Y3J7VR52.js → chunk-OTAL43EH.js} +34 -2
  87. package/dist/{chunk-WCSOJFU3.js → chunk-OTP5KVLO.js} +3 -3
  88. package/dist/{chunk-RYEGFMUO.js → chunk-PGEGPSCZ.js} +2 -2
  89. package/dist/{chunk-ZO27FGJS.js → chunk-PH5X4GIP.js} +2 -2
  90. package/dist/{chunk-ZJEL4H2R.js → chunk-PJUGRJHJ.js} +9 -9
  91. package/dist/{chunk-ZGR7ULFJ.js → chunk-PLZI6KPM.js} +26 -14
  92. package/dist/{chunk-3R5POCTZ.js → chunk-PMN3Q7RJ.js} +6 -6
  93. package/dist/{chunk-YGJZWZTY.js → chunk-PZFVK3IH.js} +2 -2
  94. package/dist/chunk-Q4V4XQWV.js +158 -0
  95. package/dist/chunk-QDFNCATJ.js +325 -0
  96. package/dist/{chunk-QEBUY5NY.js → chunk-QFQ35BTO.js} +4 -4
  97. package/dist/chunk-QQJUTGQH.js +135 -0
  98. package/dist/{chunk-PWIHZ6NJ.js → chunk-QUJGFNFN.js} +4 -4
  99. package/dist/{chunk-J5FIXQRT.js → chunk-R56LASIN.js} +4 -4
  100. package/dist/{chunk-SRTU6HMQ.js → chunk-RV26LTUU.js} +8 -8
  101. package/dist/chunk-RV6A2B5S.js +354 -0
  102. package/dist/{chunk-EB6FPQUP.js → chunk-S5GRONXL.js} +3 -3
  103. package/dist/{chunk-5MLYVTYM.js → chunk-SCHXJTZL.js} +2 -2
  104. package/dist/{chunk-T3UBLACL.js → chunk-SCQ5VPUF.js} +19 -5
  105. package/dist/{chunk-PBHE5UG6.js → chunk-SGFZZAUO.js} +46 -12
  106. package/dist/{chunk-BUVJFRPY.js → chunk-SU2VBK4L.js} +4 -4
  107. package/dist/{chunk-SML67VPV.js → chunk-T4BRO3Z6.js} +3 -3
  108. package/dist/{chunk-NURGB5Z4.js → chunk-TSA237IM.js} +2 -2
  109. package/dist/chunk-TWCLK2GA.js +273 -0
  110. package/dist/{chunk-IJZFN3HM.js → chunk-TWQUYVP3.js} +4 -4
  111. package/dist/{chunk-DKEPS5LH.js → chunk-U2HGPLZS.js} +36 -2
  112. package/dist/{chunk-B65G5DNL.js → chunk-URSQLCTR.js} +3 -3
  113. package/dist/{chunk-ILKORZ3H.js → chunk-UUS2GIJZ.js} +7 -7
  114. package/dist/{chunk-XAKEUMEJ.js → chunk-UXOSVCLJ.js} +4 -4
  115. package/dist/{chunk-QLCCJEJI.js → chunk-WCUHAQKB.js} +2 -2
  116. package/dist/{chunk-WVAJFAIA.js → chunk-WWN566I7.js} +257 -101
  117. package/dist/{chunk-IPWPWM6R.js → chunk-X2NMFTG3.js} +111 -10
  118. package/dist/{chunk-UWN33VNX.js → chunk-XCLHOZAM.js} +10 -10
  119. package/dist/{chunk-P235SVAH.js → chunk-XDXNDSKO.js} +2 -2
  120. package/dist/chunk-XHVV4NVW.js +51 -0
  121. package/dist/{chunk-33LCUH4H.js → chunk-XMVQ5F4M.js} +4 -4
  122. package/dist/{chunk-MITI6NOL.js → chunk-YA7D2N2O.js} +11 -11
  123. package/dist/{chunk-7JEGTRLD.js → chunk-YB3FW24O.js} +3 -3
  124. package/dist/chunk-YNRDWYZP.js +295 -0
  125. package/dist/{chunk-44CM72SQ.js → chunk-YZLMKW4T.js} +3 -3
  126. package/dist/chunk-Z6XJQ6KO.js +452 -0
  127. package/dist/cli.cjs +179 -133
  128. package/dist/clock.d.ts +10 -0
  129. package/dist/clock.js +235 -0
  130. package/dist/countdown.d.ts +12 -0
  131. package/dist/countdown.js +450 -0
  132. package/dist/dgmo-router-QOMFCOOV.js +84 -0
  133. package/dist/dimensions-P5FSX2QN.js +22 -0
  134. package/dist/editor.js +43 -2
  135. package/dist/element.js +220 -110
  136. package/dist/element.mjs +45920 -33167
  137. package/dist/{flowchart-parser-ZNSKIBVR.js → flowchart-parser-OE4WHLTF.js} +4 -4
  138. package/dist/{flowchart-renderer-SNDSII4D.js → flowchart-renderer-GPCSMTOR.js} +8 -8
  139. package/dist/highlight.d.ts +17 -1
  140. package/dist/highlight.js +163 -6
  141. package/dist/index.d.ts +5 -1
  142. package/dist/index.js +199 -233
  143. package/dist/{layout-HRBZPFCN.js → layout-34CLNICW.js} +5 -5
  144. package/dist/layout-46366KBT.js +10 -0
  145. package/dist/{layout-HWDSRX5E.js → layout-5BG6DFCU.js} +6 -6
  146. package/dist/layout-6RDJHS6E.js +9 -0
  147. package/dist/{layout-7QXCNOVS.js → layout-7H4H46CS.js} +3 -3
  148. package/dist/{layout-46N4JJYK.js → layout-7SKMFYHL.js} +5 -5
  149. package/dist/{layout-EE6GE46Y.js → layout-DC4TVXER.js} +5 -5
  150. package/dist/layout-FGQWRYYW.js +14 -0
  151. package/dist/{layout-S2QBYSK2.js → layout-NXG63LWH.js} +3 -3
  152. package/dist/{layout-N76NR4ZO.js → layout-PUQCB6AN.js} +7 -7
  153. package/dist/{layout-HYZPWAK5.js → layout-QNUQLEHU.js} +3 -3
  154. package/dist/{layout-UM5F4DJB.js → layout-T3OZU5QW.js} +5 -5
  155. package/dist/layout-TJIWF7EM.js +14 -0
  156. package/dist/layout-VYELEAW7.js +14 -0
  157. package/dist/{layout-5RA6QWR6.js → layout-WZHNDT2O.js} +6 -6
  158. package/dist/{layout-search-OYV77HHS.js → layout-search-QS44PI5R.js} +6 -6
  159. package/dist/{parser-6BTRLKRZ.js → parser-45DENHFZ.js} +4 -4
  160. package/dist/{parser-TFZFBVWN.js → parser-4AI5ZN5F.js} +3 -3
  161. package/dist/{parser-XDVELHRK.js → parser-4P36TUVD.js} +4 -4
  162. package/dist/{parser-ZSDPZYQP.js → parser-5AURY4A6.js} +4 -4
  163. package/dist/{parser-N5O4IHUN.js → parser-A2BEFMGK.js} +4 -4
  164. package/dist/parser-B5FVS7O6.js +11 -0
  165. package/dist/{parser-NGU3ETO6.js → parser-C2HF2C2E.js} +4 -4
  166. package/dist/parser-CSFUN3CT.js +14 -0
  167. package/dist/{parser-TRTHDFPP.js → parser-D3QT6GWN.js} +5 -5
  168. package/dist/parser-D5637H5H.js +15 -0
  169. package/dist/{parser-VQP2UJ6W.js → parser-DFFEDKHH.js} +3 -3
  170. package/dist/parser-DOKMZXVZ.js +13 -0
  171. package/dist/parser-FMPCVFRK.js +15 -0
  172. package/dist/{parser-Y6WTBU76.js → parser-HYRTF3DO.js} +3 -3
  173. package/dist/{parser-I6KXEYFK.js → parser-I2UIJKVQ.js} +4 -4
  174. package/dist/{parser-O5J4VBII.js → parser-IBWNAPY4.js} +3 -3
  175. package/dist/{parser-PQ3POX45.js → parser-KUQWRPIT.js} +4 -4
  176. package/dist/{parser-2MFP2H2E.js → parser-LWKKBNSA.js} +3 -3
  177. package/dist/{parser-OV7NOBW6.js → parser-O4QFCUW7.js} +5 -5
  178. package/dist/{parser-IXSZZQHY.js → parser-PGMQDD4G.js} +4 -4
  179. package/dist/{parser-3STE62GB.js → parser-Q4QKCIWQ.js} +4 -4
  180. package/dist/parser-QTOB4KFL.js +14 -0
  181. package/dist/{parser-2EWECDSA.js → parser-QYYM4QVW.js} +4 -4
  182. package/dist/{parser-4OGOBJJ4.js → parser-RZMQP7MM.js} +4 -4
  183. package/dist/parser-RZPVAQVX.js +11 -0
  184. package/dist/parser-SOUJOEYI.js +13 -0
  185. package/dist/{parser-4FL2CMDG.js → parser-UQE5OWZI.js} +5 -5
  186. package/dist/{parser-NRAI6O25.js → parser-WAV5JRPT.js} +4 -4
  187. package/dist/{parser-KNSQSKQO.js → parser-YLKYBRIT.js} +5 -5
  188. package/dist/{parser-XKRP7QKP.js → parser-YS7TOS2K.js} +3 -3
  189. package/dist/{parser-AQETEVRW.js → parser-ZSOWUBML.js} +5 -5
  190. package/dist/{parser-CFZD5IBL.js → parser-ZTBATMLX.js} +4 -4
  191. package/dist/{renderer-VACVQYML.js → renderer-35HSIDMZ.js} +8 -8
  192. package/dist/{renderer-5MYBMBYO.js → renderer-4ITCHBT7.js} +5 -5
  193. package/dist/{renderer-CLJHQPBJ.js → renderer-67NPCBIS.js} +11 -11
  194. package/dist/{renderer-5NDVNDAZ.js → renderer-6GHYK7DX.js} +9 -9
  195. package/dist/{renderer-Z7I3W2PP.js → renderer-6RNGHC5Z.js} +8 -8
  196. package/dist/renderer-72LGR2YF.js +14 -0
  197. package/dist/{renderer-KQB7UGDS.js → renderer-7RH2SI3B.js} +3 -3
  198. package/dist/renderer-7SWMIFMM.js +21 -0
  199. package/dist/renderer-BBCEFILK.js +24 -0
  200. package/dist/{renderer-JGBKUCZD.js → renderer-BSW7SRIZ.js} +4 -4
  201. package/dist/{renderer-BYCNMBF7.js → renderer-BY533UWU.js} +11 -11
  202. package/dist/{renderer-6W5462RB.js → renderer-BZSBPTZJ.js} +9 -9
  203. package/dist/{renderer-7MVLWWQD.js → renderer-CXUC4KAD.js} +9 -9
  204. package/dist/{renderer-QIWVHWZO.js → renderer-DAXMXIKD.js} +3 -3
  205. package/dist/renderer-FZUKFUNZ.js +23 -0
  206. package/dist/renderer-G2NLGNKF.js +17 -0
  207. package/dist/renderer-GO3FE3RA.js +24 -0
  208. package/dist/{renderer-ZGNTUWC4.js → renderer-HPGR6USK.js} +8 -8
  209. package/dist/{renderer-UV6MI64M.js → renderer-HVCU2C3Z.js} +3 -3
  210. package/dist/renderer-ICJN2SA2.js +24 -0
  211. package/dist/{renderer-AWWAF6XD.js → renderer-INEXO7B6.js} +10 -10
  212. package/dist/{renderer-YY2OSF6E.js → renderer-KDYCFRBX.js} +8 -8
  213. package/dist/renderer-KY4KQBTF.js +19 -0
  214. package/dist/{renderer-B2OMQIQG.js → renderer-LBN65V45.js} +13 -13
  215. package/dist/{renderer-N43WR5GV.js → renderer-MGBWOCXG.js} +10 -10
  216. package/dist/{renderer-PGX2TKVS.js → renderer-O4JKUGKO.js} +8 -8
  217. package/dist/{renderer-4JHRUBE6.js → renderer-OOGFODWP.js} +10 -10
  218. package/dist/{renderer-6EEZHMH4.js → renderer-Q6ZKPLS6.js} +9 -9
  219. package/dist/{renderer-RPOA5YPZ.js → renderer-SZQ326M5.js} +12 -12
  220. package/dist/{renderer-ZRNG54CW.js → renderer-TKG6LS4U.js} +11 -11
  221. package/dist/{renderer-W4M6QLIJ.js → renderer-TQMZGDAX.js} +13 -13
  222. package/dist/renderer-radial-JELMHQ24.js +21 -0
  223. package/dist/{resolver-NOAA7ID7.js → resolver-FHBCO3PL.js} +3 -3
  224. package/dist/{state-parser-Z2V23ATR.js → state-parser-3REXRK3R.js} +4 -4
  225. package/dist/{state-renderer-B4DQBM6M.js → state-renderer-XYLNRWXR.js} +8 -8
  226. package/docs/ai-integration.md +12 -3
  227. package/docs/language-reference.md +429 -24
  228. package/gallery/fixtures/body.dgmo +17 -0
  229. package/gallery/fixtures/bracket.dgmo +30 -0
  230. package/gallery/fixtures/clock.dgmo +8 -0
  231. package/gallery/fixtures/countdown.dgmo +3 -0
  232. package/gallery/fixtures/family.dgmo +23 -0
  233. package/gallery/fixtures/goal.dgmo +4 -0
  234. package/gallery/fixtures/sketch.dgmo +22 -0
  235. package/package.json +12 -4
  236. package/dist/chunk-ODZVHU3R.js +0 -153
  237. package/dist/dgmo-router-X35VLZLM.js +0 -73
  238. package/dist/dimensions-J3FHIMJ6.js +0 -22
  239. package/dist/layout-5T6RH5M6.js +0 -14
  240. package/dist/layout-G23F7LDH.js +0 -9
  241. package/dist/layout-OB3RI63S.js +0 -14
  242. package/dist/parser-JAL2HD4I.js +0 -13
  243. package/dist/renderer-SMIBCRVB.js +0 -24
  244. package/dist/renderer-radial-C32GPJQ7.js +0 -21
@@ -0,0 +1,574 @@
1
+ import {
2
+ buildCoupleQuotient
3
+ } from "./chunk-QQJUTGQH.js";
4
+ import {
5
+ AUTO_TAG_COLOR_SENTINEL,
6
+ finalizeAutoTagColors,
7
+ matchTagBlockHeading,
8
+ stripDefaultModifier,
9
+ tagAttrKey
10
+ } from "./chunk-WCUHAQKB.js";
11
+ import {
12
+ displayName,
13
+ normalizeName
14
+ } from "./chunk-NOTA6TEI.js";
15
+ import {
16
+ FAMILY_PERSON_REGISTRY,
17
+ FAMILY_UNION_REGISTRY,
18
+ cutUnionMetadata,
19
+ extractColor,
20
+ isReservedKey,
21
+ measureIndent,
22
+ parseFirstLine,
23
+ peelTrailingColorName,
24
+ splitNameAndMeta,
25
+ stripQuotes,
26
+ tokenizeQuoteAware,
27
+ tryParseSharedOption,
28
+ withTagAliases
29
+ } from "./chunk-OTAL43EH.js";
30
+ import {
31
+ nord,
32
+ resolveColor
33
+ } from "./chunk-TLVIHFRO.js";
34
+ import {
35
+ emit
36
+ } from "./chunk-CXK4DZH3.js";
37
+
38
+ // src/family/diagnostics.ts
39
+ var FAMILY_DX = {
40
+ SELF_UNION: {
41
+ code: "E_FAMILY_SELF_UNION",
42
+ severity: "error",
43
+ chartType: "family",
44
+ title: "Self union",
45
+ message: (p) => `A person cannot marry themselves ('${p.name ?? "Anne"}')`,
46
+ hint: "A union line joins two DIFFERENT people \u2014 check the names on each side of `+`.",
47
+ example: `family
48
+ Anne + Anne`
49
+ },
50
+ TOO_MANY_PARENTS: {
51
+ code: "E_FAMILY_TOO_MANY_PARENTS",
52
+ severity: "error",
53
+ chartType: "family",
54
+ title: "Too many parents in a union",
55
+ message: (p) => `A union joins at most two people, found ${p.count ?? 3} ('${p.line ?? "Anne + Bob + Carol"}')`,
56
+ hint: "Split into separate union lines \u2014 one couple per line. A trio like `A + B + C` is not a union.",
57
+ example: `family
58
+ Anne + Bob + Carol`
59
+ },
60
+ MISSING_OPERAND: {
61
+ code: "E_FAMILY_MISSING_OPERAND",
62
+ severity: "error",
63
+ chartType: "family",
64
+ title: "Union missing an operand",
65
+ message: "A union line needs a name on both sides of `+`",
66
+ hint: "Write `NameA + NameB`. A trailing/leading/doubled `+` with a blank side is not a valid union.",
67
+ example: `family
68
+ Anne +`
69
+ },
70
+ ANCESTRY_CYCLE: {
71
+ code: "E_FAMILY_ANCESTRY_CYCLE",
72
+ severity: "error",
73
+ chartType: "family",
74
+ title: "Ancestry cycle",
75
+ message: "union creates an ancestry cycle \u2014 a person and their own ancestor cannot share a marriage row",
76
+ hint: "Someone is listed as their own ancestor, married to a direct ancestor, or a parent-child pair forms a union. Remove the cycle.",
77
+ example: `family
78
+ Anne + Bob
79
+ Carol
80
+ Carol + Anne`
81
+ },
82
+ CHILD_OUTSIDE_UNION: {
83
+ code: "E_FAMILY_CHILD_OUTSIDE_UNION",
84
+ severity: "error",
85
+ chartType: "family",
86
+ title: "Child outside a union",
87
+ message: "indented child line has no union or person line above it to attach to",
88
+ hint: "A child must be indented under a union line (`A + B`) or a single parent line.",
89
+ example: `family
90
+ Carol`
91
+ },
92
+ UNKNOWN_KEY: {
93
+ code: "W_FAMILY_UNKNOWN_KEY",
94
+ severity: "warning",
95
+ chartType: "family",
96
+ title: "Unknown metadata key",
97
+ message: (p) => `Unknown metadata key "${p.key ?? "favouritecolor"}".`,
98
+ hint: "Recognized person keys: sex, b, d, bp, dp, occupation, military, education, religion, burial. Union key: m.",
99
+ example: `family
100
+ Anne favouritecolor: red`
101
+ },
102
+ DUPLICATE_METADATA: {
103
+ code: "W_FAMILY_DUPLICATE_METADATA",
104
+ severity: "warning",
105
+ chartType: "family",
106
+ title: "Conflicting metadata re-declaration",
107
+ message: (p) => `Metadata key '${p.key ?? "b"}' re-declared with a different value ('${p.old ?? "1665"}' \u2192 '${p.new ?? "1666"}') \u2014 keeping the first.`,
108
+ hint: "A person was declared more than once with conflicting values for the same key. Consolidate the declarations.",
109
+ example: `family
110
+ Anne b: 1665
111
+ Anne b: 1666`
112
+ },
113
+ HIGHLIGHT_UNKNOWN: {
114
+ code: "W_FAMILY_HIGHLIGHT_UNKNOWN",
115
+ severity: "warning",
116
+ chartType: "family",
117
+ title: "Highlight target not found",
118
+ message: (p) => `\`highlight\` names an unknown person "${p.name ?? "Ghost"}" \u2014 nothing was dimmed.`,
119
+ hint: "The `highlight` directive must name a person that appears in the tree.",
120
+ example: `family
121
+ highlight Ghost
122
+
123
+ Anne + Bob`
124
+ }
125
+ };
126
+ var FAMILY_DIAGNOSTICS = Object.values(FAMILY_DX);
127
+
128
+ // src/family/parser.ts
129
+ function normKey(label) {
130
+ return label.trim().replace(/\s+/g, " ").toLowerCase();
131
+ }
132
+ function splitUnionSides(nameRegion) {
133
+ const tokens = tokenizeQuoteAware(nameRegion);
134
+ const sides = [];
135
+ let cur = [];
136
+ for (const tok of tokens) {
137
+ if (tok === "+") {
138
+ sides.push(cur.join(" "));
139
+ cur = [];
140
+ } else {
141
+ cur.push(tok);
142
+ }
143
+ }
144
+ sides.push(cur.join(" "));
145
+ return sides;
146
+ }
147
+ function matchFamilyOption(line) {
148
+ const h = line.match(/^highlight\s+(.+)$/i);
149
+ if (h) return { key: "highlight", value: h[1].trim() };
150
+ if (/^generations$/i.test(line)) return { key: "generations", value: "true" };
151
+ if (/^no-daggers$/i.test(line)) return { key: "no-daggers", value: "true" };
152
+ return null;
153
+ }
154
+ function parseFamily(content, palette) {
155
+ const diagnostics = [];
156
+ const persons = /* @__PURE__ */ new Map();
157
+ const unions = [];
158
+ const tagGroups = [];
159
+ const options = {};
160
+ const rawLines = content.split("\n");
161
+ let title;
162
+ let titleLineNumber;
163
+ let startIdx = 0;
164
+ for (let i = 0; i < rawLines.length; i++) {
165
+ const t = rawLines[i].trim();
166
+ if (!t || t.startsWith("//")) continue;
167
+ const fl = parseFirstLine(rawLines[i]);
168
+ if (fl?.chartType === "family") {
169
+ title = fl.title;
170
+ titleLineNumber = i + 1;
171
+ }
172
+ startIdx = i + 1;
173
+ break;
174
+ }
175
+ const metaAliasMap = /* @__PURE__ */ new Map();
176
+ const aliasKeys = /* @__PURE__ */ new Set();
177
+ let currentTagGroup = null;
178
+ let sawContent = false;
179
+ for (let i = startIdx; i < rawLines.length; i++) {
180
+ const raw = rawLines[i];
181
+ const lineNum = i + 1;
182
+ const trimmed = raw.trim();
183
+ if (!trimmed || trimmed.startsWith("//")) continue;
184
+ const indent = measureIndent(raw);
185
+ const tagMatch = matchTagBlockHeading(trimmed);
186
+ if (tagMatch && indent === 0 && !sawContent) {
187
+ const newGroup = {
188
+ name: tagMatch.name,
189
+ ...tagMatch.alias !== void 0 && { alias: tagMatch.alias },
190
+ entries: [],
191
+ lineNumber: lineNum
192
+ };
193
+ currentTagGroup = newGroup;
194
+ const attr = tagAttrKey(tagMatch.name);
195
+ metaAliasMap.set(normKey(tagMatch.name), attr);
196
+ aliasKeys.add(normKey(tagMatch.name));
197
+ if (tagMatch.alias) {
198
+ metaAliasMap.set(normKey(tagMatch.alias), attr);
199
+ aliasKeys.add(normKey(tagMatch.alias));
200
+ }
201
+ if (tagMatch.inlineValues) {
202
+ for (const rawVal of tagMatch.inlineValues) {
203
+ const { text, isDefault } = stripDefaultModifier(rawVal);
204
+ const { label, color } = extractColor(
205
+ text,
206
+ palette,
207
+ diagnostics,
208
+ lineNum
209
+ );
210
+ newGroup.entries.push({
211
+ value: label,
212
+ color: color ?? AUTO_TAG_COLOR_SENTINEL,
213
+ lineNumber: lineNum
214
+ });
215
+ if (isDefault) newGroup.defaultValue = label;
216
+ }
217
+ if (!newGroup.defaultValue && newGroup.entries.length > 0) {
218
+ newGroup.defaultValue = newGroup.entries[0].value;
219
+ }
220
+ }
221
+ tagGroups.push(newGroup);
222
+ continue;
223
+ }
224
+ if (currentTagGroup && indent > 0 && !sawContent) {
225
+ const { text, isDefault } = stripDefaultModifier(trimmed);
226
+ const { label, color } = extractColor(
227
+ text,
228
+ palette,
229
+ diagnostics,
230
+ lineNum
231
+ );
232
+ currentTagGroup.entries.push({
233
+ value: label,
234
+ color: color ?? AUTO_TAG_COLOR_SENTINEL,
235
+ lineNumber: lineNum
236
+ });
237
+ if (isDefault || currentTagGroup.entries.length === 1) {
238
+ currentTagGroup.defaultValue = label;
239
+ }
240
+ continue;
241
+ }
242
+ if (indent === 0) currentTagGroup = null;
243
+ if (indent === 0) {
244
+ const fam = matchFamilyOption(trimmed);
245
+ if (fam) {
246
+ options[fam.key] = fam.value;
247
+ continue;
248
+ }
249
+ }
250
+ if (indent === 0 && tryParseSharedOption(trimmed, options)) continue;
251
+ if (indent === 0 && !tagMatch) sawContent = true;
252
+ }
253
+ const personRegistry = withTagAliases(FAMILY_PERSON_REGISTRY, aliasKeys);
254
+ const tagAttrKeys = new Set(tagGroups.map((g) => tagAttrKey(g.name)));
255
+ const aliasMap = /* @__PURE__ */ new Map();
256
+ const getPerson = (rawName, lineNum) => {
257
+ const aliasHit = aliasMap.get(normalizeName(rawName));
258
+ const id = aliasHit ?? normalizeName(rawName);
259
+ let p = persons.get(id);
260
+ if (!p) {
261
+ p = {
262
+ id,
263
+ label: displayName(rawName),
264
+ sex: "unknown",
265
+ metadata: {},
266
+ tagMetadata: {},
267
+ lineNumber: lineNum
268
+ };
269
+ persons.set(id, p);
270
+ }
271
+ return p;
272
+ };
273
+ const applyMeta = (p, meta, color, lineNum) => {
274
+ if (color !== void 0 && p.color === void 0) p.color = color;
275
+ for (const [k, v] of Object.entries(meta)) {
276
+ if (k === "sex") {
277
+ const s = v.trim().toLowerCase();
278
+ const sex = s === "m" ? "m" : s === "f" ? "f" : "unknown";
279
+ if (sex !== "unknown" && p.sex === "unknown") p.sex = sex;
280
+ continue;
281
+ }
282
+ if (tagAttrKeys.has(k)) {
283
+ p.tagMetadata[k] = v;
284
+ continue;
285
+ }
286
+ if (isReservedKey(FAMILY_PERSON_REGISTRY, k)) {
287
+ const prev = p.metadata[k];
288
+ if (prev !== void 0 && prev !== v) {
289
+ diagnostics.push(
290
+ emit(FAMILY_DX.DUPLICATE_METADATA, lineNum, {
291
+ key: k,
292
+ old: prev,
293
+ new: v
294
+ })
295
+ );
296
+ continue;
297
+ }
298
+ p.metadata[k] = v;
299
+ continue;
300
+ }
301
+ diagnostics.push(emit(FAMILY_DX.UNKNOWN_KEY, lineNum, { key: k }));
302
+ }
303
+ };
304
+ const parsePersonRef = (segment, lineNum, allowAdopted) => {
305
+ let adopted = false;
306
+ let seg = segment;
307
+ if (allowAdopted) {
308
+ const toks = tokenizeQuoteAware(seg);
309
+ if (toks.length >= 2 && toks[toks.length - 1] === "adopted") {
310
+ adopted = true;
311
+ seg = toks.slice(0, -1).join(" ");
312
+ }
313
+ }
314
+ const {
315
+ name,
316
+ meta,
317
+ color: rawColor,
318
+ alias
319
+ } = splitNameAndMeta(
320
+ seg,
321
+ personRegistry,
322
+ metaAliasMap,
323
+ palette,
324
+ diagnostics,
325
+ lineNum
326
+ );
327
+ let cleanName = name.replace(/,\s*$/, "").trim();
328
+ let color = rawColor;
329
+ if (allowAdopted) {
330
+ const toks = tokenizeQuoteAware(cleanName);
331
+ if (toks.length >= 2 && toks[toks.length - 1] === "adopted") {
332
+ adopted = true;
333
+ cleanName = toks.slice(0, -1).join(" ");
334
+ const re = peelTrailingColorName(cleanName);
335
+ if (re.colorName !== void 0) {
336
+ cleanName = re.label;
337
+ if (color === void 0) color = re.colorName;
338
+ }
339
+ }
340
+ }
341
+ if (!/^["']/.test(cleanName)) {
342
+ const um = cleanName.match(/\b([A-Za-z][\w-]*)\s*:/);
343
+ if (um?.index !== void 0 && um.index > 0 && !isReservedKey(personRegistry, um[1].toLowerCase())) {
344
+ diagnostics.push(
345
+ emit(FAMILY_DX.UNKNOWN_KEY, lineNum, { key: um[1].toLowerCase() })
346
+ );
347
+ cleanName = cleanName.slice(0, um.index).trim();
348
+ }
349
+ }
350
+ cleanName = stripQuotes(cleanName.trim());
351
+ if (cleanName === "?") {
352
+ const ph = {
353
+ id: `?#${++placeholderSeq}`,
354
+ label: "?",
355
+ sex: "unknown",
356
+ metadata: {},
357
+ tagMetadata: {},
358
+ placeholder: true,
359
+ lineNumber: lineNum
360
+ };
361
+ persons.set(ph.id, ph);
362
+ return { person: ph, adopted };
363
+ }
364
+ const person = getPerson(cleanName, lineNum);
365
+ if (alias !== void 0) aliasMap.set(normalizeName(alias), person.id);
366
+ applyMeta(person, meta, color, lineNum);
367
+ return { person, adopted };
368
+ };
369
+ const stack = [];
370
+ let unionSeq = 0;
371
+ let placeholderSeq = 0;
372
+ const unionById = /* @__PURE__ */ new Map();
373
+ const makeUnion = (parents, metadata, lineNum, divorced = false) => {
374
+ const u = {
375
+ id: `u${unionSeq++}`,
376
+ parents,
377
+ metadata,
378
+ children: [],
379
+ ...divorced && { divorced: true },
380
+ lineNumber: lineNum
381
+ };
382
+ unions.push(u);
383
+ unionById.set(u.id, u);
384
+ return u;
385
+ };
386
+ const attachChild = (parentScope, childId, adopted, lineNum) => {
387
+ let unionId = parentScope.unionId;
388
+ if (!unionId) {
389
+ if (!parentScope.singleParentUnionId) {
390
+ const u2 = makeUnion([parentScope.personId], {}, lineNum);
391
+ parentScope.singleParentUnionId = u2.id;
392
+ }
393
+ unionId = parentScope.singleParentUnionId;
394
+ }
395
+ const u = unionById.get(unionId);
396
+ u.children.push({ personId: childId, adopted });
397
+ };
398
+ let inTagBlock = false;
399
+ for (let i = startIdx; i < rawLines.length; i++) {
400
+ const raw = rawLines[i];
401
+ const lineNum = i + 1;
402
+ let trimmed = raw.trim();
403
+ if (!trimmed || trimmed.startsWith("//")) continue;
404
+ const cIdx = trimmed.indexOf(" //");
405
+ if (cIdx > 0) trimmed = trimmed.slice(0, cIdx).trim();
406
+ if (!trimmed) continue;
407
+ const indent = measureIndent(raw);
408
+ if (indent === 0 && matchTagBlockHeading(trimmed)) {
409
+ inTagBlock = true;
410
+ continue;
411
+ }
412
+ if (indent === 0) inTagBlock = false;
413
+ if (inTagBlock && indent > 0) continue;
414
+ if (indent === 0 && matchFamilyOption(trimmed)) continue;
415
+ if (indent === 0 && tryParseSharedOption(trimmed, {})) continue;
416
+ while (stack.length && stack[stack.length - 1].indent >= indent) {
417
+ stack.pop();
418
+ }
419
+ const parentScope = stack.length ? stack[stack.length - 1] : null;
420
+ let divorced = false;
421
+ if (/\s\+\s/.test(trimmed) && /\s+divorced$/i.test(trimmed)) {
422
+ divorced = true;
423
+ trimmed = trimmed.replace(/\s+divorced$/i, "").trimEnd();
424
+ }
425
+ const cut = cutUnionMetadata(trimmed, FAMILY_UNION_REGISTRY);
426
+ const nameRegion = cut < 0 ? trimmed : trimmed.slice(0, cut).trimEnd();
427
+ const metaRegion = cut < 0 ? "" : trimmed.slice(cut);
428
+ const rawSides = splitUnionSides(nameRegion);
429
+ const hadPlus = rawSides.length >= 2;
430
+ const sides = rawSides.map((s) => s.trim()).filter((s) => s !== "");
431
+ if (hadPlus && sides.length >= 2) {
432
+ let parentSides = sides;
433
+ if (sides.length > 2) {
434
+ diagnostics.push(
435
+ emit(FAMILY_DX.TOO_MANY_PARENTS, lineNum, {
436
+ count: sides.length,
437
+ line: nameRegion
438
+ })
439
+ );
440
+ parentSides = sides.slice(0, 2);
441
+ }
442
+ const unionMeta = {};
443
+ if (metaRegion) {
444
+ const { meta } = splitNameAndMeta(
445
+ metaRegion,
446
+ withTagAliases(FAMILY_UNION_REGISTRY, /* @__PURE__ */ new Set()),
447
+ /* @__PURE__ */ new Map(),
448
+ palette,
449
+ diagnostics,
450
+ lineNum
451
+ );
452
+ for (const [k, v] of Object.entries(meta)) {
453
+ if (k === "m") unionMeta["m"] = v;
454
+ else
455
+ diagnostics.push(emit(FAMILY_DX.UNKNOWN_KEY, lineNum, { key: k }));
456
+ }
457
+ }
458
+ const parentPersons = parentSides.map(
459
+ (s) => parsePersonRef(s, lineNum, false).person
460
+ );
461
+ if (parentPersons.length === 2 && parentPersons[0].id === parentPersons[1].id) {
462
+ diagnostics.push(
463
+ emit(FAMILY_DX.SELF_UNION, lineNum, {
464
+ name: parentPersons[0].label
465
+ })
466
+ );
467
+ }
468
+ if (parentScope) {
469
+ attachChild(parentScope, parentPersons[0].id, false, lineNum);
470
+ }
471
+ const u = makeUnion(
472
+ parentPersons.map((p) => p.id),
473
+ unionMeta,
474
+ lineNum,
475
+ divorced
476
+ );
477
+ stack.push({ indent, unionId: u.id });
478
+ } else if (hadPlus) {
479
+ diagnostics.push(
480
+ emit(FAMILY_DX.MISSING_OPERAND, lineNum, { line: nameRegion })
481
+ );
482
+ if (sides.length === 1) {
483
+ const isChild = parentScope !== null;
484
+ const { person, adopted } = parsePersonRef(sides[0], lineNum, isChild);
485
+ if (parentScope) attachChild(parentScope, person.id, adopted, lineNum);
486
+ stack.push({ indent, personId: person.id });
487
+ }
488
+ } else {
489
+ const isChild = parentScope !== null;
490
+ const { person, adopted } = parsePersonRef(trimmed, lineNum, isChild);
491
+ if (parentScope) {
492
+ attachChild(parentScope, person.id, adopted, lineNum);
493
+ } else if (indent > 0) {
494
+ diagnostics.push(emit(FAMILY_DX.CHILD_OUTSIDE_UNION, lineNum, {}));
495
+ }
496
+ stack.push({ indent, personId: person.id });
497
+ }
498
+ }
499
+ finalizeAutoTagColors(tagGroups, palette);
500
+ const SEX_META = {
501
+ m: ["Male", "blue", nord.nord10],
502
+ f: ["Female", "purple", nord.nord15],
503
+ unknown: ["Unknown", "gray", nord.nord3]
504
+ };
505
+ const anySex = [...persons.values()].some((p) => p.sex !== "unknown");
506
+ if (anySex) {
507
+ const present = new Set([...persons.values()].map((p) => p.sex));
508
+ const order = ["m", "f", "unknown"];
509
+ const entries = order.filter((s) => present.has(s)).map((s) => {
510
+ const [label, colorName, fallback] = SEX_META[s];
511
+ return {
512
+ value: label,
513
+ color: resolveColor(colorName, palette) ?? fallback,
514
+ lineNumber: 0
515
+ };
516
+ });
517
+ for (const p of persons.values()) p.tagMetadata["sex"] = SEX_META[p.sex][0];
518
+ const sexGroup = {
519
+ name: "Sex",
520
+ entries,
521
+ defaultValue: entries[0].value,
522
+ lineNumber: 0
523
+ };
524
+ tagGroups.unshift(sexGroup);
525
+ }
526
+ const frozenPersons = /* @__PURE__ */ new Map();
527
+ for (const [id, p] of persons) {
528
+ frozenPersons.set(id, {
529
+ id: p.id,
530
+ label: p.label,
531
+ sex: p.sex,
532
+ metadata: p.metadata,
533
+ ...p.color !== void 0 && { color: p.color },
534
+ tagMetadata: p.tagMetadata,
535
+ ...p.placeholder && { placeholder: true },
536
+ lineNumber: p.lineNumber
537
+ });
538
+ }
539
+ if (options["highlight"]) {
540
+ const norm = normalizeName(options["highlight"]);
541
+ const hit = aliasMap.get(norm) ?? (frozenPersons.has(norm) ? norm : void 0);
542
+ if (hit) {
543
+ options["highlight"] = hit;
544
+ } else {
545
+ diagnostics.push(
546
+ emit(FAMILY_DX.HIGHLIGHT_UNKNOWN, 0, { name: options["highlight"] })
547
+ );
548
+ delete options["highlight"];
549
+ }
550
+ }
551
+ let error = null;
552
+ const quotient = buildCoupleQuotient(frozenPersons, unions);
553
+ if (quotient.cycle) {
554
+ const diag = emit(FAMILY_DX.ANCESTRY_CYCLE, 0, {});
555
+ diagnostics.push(diag);
556
+ error = diag.message;
557
+ }
558
+ return {
559
+ ...title !== void 0 && { title },
560
+ ...titleLineNumber !== void 0 && { titleLineNumber },
561
+ persons: frozenPersons,
562
+ unions,
563
+ tagGroups,
564
+ options,
565
+ diagnostics,
566
+ error
567
+ };
568
+ }
569
+
570
+ export {
571
+ FAMILY_DIAGNOSTICS,
572
+ parseFamily
573
+ };
574
+ //# sourceMappingURL=chunk-O4VUFXIH.js.map
@@ -7,7 +7,7 @@ import {
7
7
  tagAttrKey,
8
8
  validateTagGroupNames,
9
9
  validateTagValues
10
- } from "./chunk-QLCCJEJI.js";
10
+ } from "./chunk-WCUHAQKB.js";
11
11
  import {
12
12
  normalizeName
13
13
  } from "./chunk-NOTA6TEI.js";
@@ -20,7 +20,7 @@ import {
20
20
  splitNameAndMeta,
21
21
  warnUnknownMetaKeys,
22
22
  withTagAliases
23
- } from "./chunk-Y3J7VR52.js";
23
+ } from "./chunk-OTAL43EH.js";
24
24
  import {
25
25
  formatDgmoError,
26
26
  makeDgmoError,
@@ -351,4 +351,4 @@ export {
351
351
  looksLikeOrg,
352
352
  parseOrg
353
353
  };
354
- //# sourceMappingURL=chunk-RVMRZAPB.js.map
354
+ //# sourceMappingURL=chunk-O76UD6VJ.js.map
@@ -18,7 +18,7 @@ import {
18
18
  import {
19
19
  CHAR_WIDTH_RATIO,
20
20
  measureText
21
- } from "./chunk-WCT3NYCV.js";
21
+ } from "./chunk-5LWQH6QV.js";
22
22
  import {
23
23
  contrastText,
24
24
  getSeriesColors,
@@ -433,4 +433,4 @@ export {
433
433
  renderPyramid,
434
434
  renderPyramidForExport
435
435
  };
436
- //# sourceMappingURL=chunk-JM4LEPY3.js.map
436
+ //# sourceMappingURL=chunk-O7NUCTFU.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-6EK55ART.js";
4
4
  import {
5
5
  noteBoxSize
6
- } from "./chunk-TYS6CSS5.js";
6
+ } from "./chunk-BCYVE3N5.js";
7
7
 
8
8
  // src/utils/notes/build.ts
9
9
  function buildPlacedNotes(anchors, noteByNode, direction, collapsedNotes) {
@@ -70,4 +70,4 @@ function buildPlacedNotes(anchors, noteByNode, direction, collapsedNotes) {
70
70
  export {
71
71
  buildPlacedNotes
72
72
  };
73
- //# sourceMappingURL=chunk-JED6ZDEE.js.map
73
+ //# sourceMappingURL=chunk-O7WP4ZD4.js.map
@@ -5,14 +5,14 @@ import {
5
5
  matchTagBlockHeading,
6
6
  stripDefaultModifier,
7
7
  validateTagGroupNames
8
- } from "./chunk-QLCCJEJI.js";
8
+ } from "./chunk-WCUHAQKB.js";
9
9
  import {
10
10
  OPTION_NOCOLON_RE,
11
11
  extractColor,
12
12
  measureIndent,
13
13
  parseFirstLine,
14
14
  tryParseSharedOption
15
- } from "./chunk-Y3J7VR52.js";
15
+ } from "./chunk-OTAL43EH.js";
16
16
  import {
17
17
  formatDgmoError,
18
18
  makeDgmoError
@@ -729,4 +729,4 @@ export {
729
729
  resetWireframeIds,
730
730
  parseWireframe
731
731
  };
732
- //# sourceMappingURL=chunk-EVCVDTXE.js.map
732
+ //# sourceMappingURL=chunk-OHQEMBLI.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-PDKUANDZ.js";
5
5
  import {
6
6
  layoutGraph
7
- } from "./chunk-T3UBLACL.js";
7
+ } from "./chunk-SCQ5VPUF.js";
8
8
  import {
9
9
  appendArrowheadMarkers
10
10
  } from "./chunk-LP7EC4MI.js";
@@ -32,7 +32,7 @@ import {
32
32
  } from "./chunk-6KFWC4CO.js";
33
33
  import {
34
34
  measureText
35
- } from "./chunk-WCT3NYCV.js";
35
+ } from "./chunk-5LWQH6QV.js";
36
36
  import {
37
37
  contrastText,
38
38
  mix,
@@ -41,7 +41,7 @@ import {
41
41
  } from "./chunk-P6T66CCZ.js";
42
42
  import {
43
43
  parseState
44
- } from "./chunk-3MQQNXPD.js";
44
+ } from "./chunk-2C56LEML.js";
45
45
 
46
46
  // src/graph/state-renderer.ts
47
47
  import * as d3Selection from "d3-selection";
@@ -375,4 +375,4 @@ export {
375
375
  renderState,
376
376
  renderStateForExport
377
377
  };
378
- //# sourceMappingURL=chunk-ZBWMSD5N.js.map
378
+ //# sourceMappingURL=chunk-ONA5KPV3.js.map