@diagrammo/dgmo 0.48.1 → 0.49.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 (216) hide show
  1. package/.cursorrules +8 -3
  2. package/.github/copilot-instructions.md +8 -3
  3. package/.windsurfrules +8 -3
  4. package/SKILL.md +8 -3
  5. package/dist/advanced.d.ts +444 -1
  6. package/dist/advanced.js +208 -146
  7. package/dist/auto.css +74 -5
  8. package/dist/auto.js +213 -107
  9. package/dist/auto.mjs +6906 -831
  10. package/dist/block.css +74 -5
  11. package/dist/block.d.ts +13 -5
  12. package/dist/block.js +148 -62
  13. package/dist/{charts-d3-QOZHKTCT.js → charts-d3-EW3YQTEA.js} +9 -8
  14. package/dist/chunk-26RVGM44.js +331 -0
  15. package/dist/{chunk-44CM72SQ.js → chunk-2WMBWZY2.js} +3 -3
  16. package/dist/{chunk-L66GEFB6.js → chunk-35BBZDFE.js} +4 -4
  17. package/dist/{chunk-4GRI7MEB.js → chunk-3BIAFYD2.js} +6 -6
  18. package/dist/chunk-3NFJWFNP.js +1474 -0
  19. package/dist/{chunk-76OWZ3BA.js → chunk-4BD7EVPK.js} +2 -2
  20. package/dist/{chunk-MITI6NOL.js → chunk-4FIV4K4Z.js} +9 -9
  21. package/dist/chunk-4HVNZ7WF.js +574 -0
  22. package/dist/{chunk-X5LCYCL5.js → chunk-4NQ3IKUM.js} +2 -2
  23. package/dist/{chunk-PWIHZ6NJ.js → chunk-4UDKKGHH.js} +4 -4
  24. package/dist/{chunk-6NYWYNBI.js → chunk-4XK3FLFB.js} +3 -3
  25. package/dist/chunk-4YNP6O47.js +607 -0
  26. package/dist/{chunk-3MQQNXPD.js → chunk-5FGDJIJX.js} +3 -3
  27. package/dist/{chunk-WCT3NYCV.js → chunk-5LWQH6QV.js} +1 -1
  28. package/dist/chunk-5XCM7UUW.js +261 -0
  29. package/dist/{chunk-RYEGFMUO.js → chunk-5ZZLLBFK.js} +2 -2
  30. package/dist/{chunk-EB6FPQUP.js → chunk-65RTDUZH.js} +3 -3
  31. package/dist/chunk-6CLKNXVP.js +664 -0
  32. package/dist/{chunk-H6PI3KJT.js → chunk-6IUAK7RZ.js} +2 -2
  33. package/dist/{chunk-ZGR7ULFJ.js → chunk-6SA7FJE4.js} +31 -19
  34. package/dist/{chunk-LIOHW36Z.js → chunk-6VE3VLWM.js} +3 -3
  35. package/dist/{chunk-AN2MOO5T.js → chunk-7OVSJI2V.js} +3 -3
  36. package/dist/{chunk-YAA6IID3.js → chunk-7UEMZREK.js} +2 -2
  37. package/dist/{chunk-FCIIHT24.js → chunk-7VLUGEMJ.js} +7 -7
  38. package/dist/{chunk-VOKGH627.js → chunk-AHGF2YYA.js} +13 -3
  39. package/dist/{chunk-3R5POCTZ.js → chunk-AJ2PEY7J.js} +6 -6
  40. package/dist/{chunk-PBHE5UG6.js → chunk-ALRHIR6I.js} +46 -12
  41. package/dist/{chunk-7JEGTRLD.js → chunk-B57V3DWN.js} +3 -3
  42. package/dist/{chunk-ILKORZ3H.js → chunk-BCT5G2VN.js} +7 -7
  43. package/dist/{chunk-TYS6CSS5.js → chunk-BCYVE3N5.js} +2 -2
  44. package/dist/{chunk-ZBWMSD5N.js → chunk-BGJV5ATD.js} +4 -4
  45. package/dist/{chunk-G2H74XJZ.js → chunk-BPIJLRYE.js} +8 -8
  46. package/dist/{chunk-YGJTDXVR.js → chunk-C4GQDB5L.js} +2 -2
  47. package/dist/{chunk-Y2ZE3MSG.js → chunk-C63UWAKM.js} +2 -2
  48. package/dist/{chunk-QEBUY5NY.js → chunk-CEHZOPGM.js} +4 -4
  49. package/dist/{chunk-725LDASD.js → chunk-CLD2OKV7.js} +2 -2
  50. package/dist/{chunk-5QXL4NYS.js → chunk-CLR4A2N2.js} +10 -5
  51. package/dist/{chunk-WBRZJOEC.js → chunk-CMCR5WBW.js} +3 -3
  52. package/dist/{chunk-SML67VPV.js → chunk-D5AVQCDN.js} +3 -3
  53. package/dist/{chunk-2LACINWN.js → chunk-DDTJ5N7Q.js} +9 -9
  54. package/dist/{chunk-FITOLXSX.js → chunk-EOFPYPAU.js} +26 -2
  55. package/dist/{chunk-B65G5DNL.js → chunk-EYN7VFKL.js} +3 -3
  56. package/dist/{chunk-4OHACBGX.js → chunk-F2L5GCQ4.js} +2 -2
  57. package/dist/{chunk-RVMRZAPB.js → chunk-F743CM2N.js} +3 -3
  58. package/dist/{chunk-3JLKYGBQ.js → chunk-F7BFXWNQ.js} +2 -2
  59. package/dist/{chunk-WCSOJFU3.js → chunk-FMKTYMP4.js} +3 -3
  60. package/dist/{chunk-RTLBSQ3G.js → chunk-FUCAB3KQ.js} +3 -3
  61. package/dist/{chunk-SGZYXELT.js → chunk-GB3YZTAM.js} +9 -6
  62. package/dist/{chunk-QLCCJEJI.js → chunk-HBVD67XG.js} +2 -2
  63. package/dist/{chunk-PBAHEPLQ.js → chunk-HGN652MU.js} +7 -6
  64. package/dist/{chunk-3SMGIJDD.js → chunk-HHXOONLX.js} +13 -1
  65. package/dist/{chunk-QOOUC2J5.js → chunk-HQCHYB5F.js} +2 -2
  66. package/dist/chunk-IAEC4KLA.js +492 -0
  67. package/dist/{chunk-J5FIXQRT.js → chunk-IBC35BTK.js} +4 -4
  68. package/dist/{chunk-NURGB5Z4.js → chunk-IFK3GIUW.js} +2 -2
  69. package/dist/{chunk-FANX6UJR.js → chunk-IHLSHCPZ.js} +11 -11
  70. package/dist/{chunk-GMR5MFHJ.js → chunk-IUK7AGD4.js} +2 -2
  71. package/dist/chunk-IVKC4GID.js +32 -0
  72. package/dist/{chunk-OJR3MQYV.js → chunk-JFPY3UJ7.js} +296 -57
  73. package/dist/{chunk-5MLYVTYM.js → chunk-K6HNAY5V.js} +2 -2
  74. package/dist/{chunk-P235SVAH.js → chunk-KQAEKMIX.js} +2 -2
  75. package/dist/{chunk-7DTWEFUE.js → chunk-KUBBJ2CD.js} +10 -10
  76. package/dist/{chunk-BUVJFRPY.js → chunk-KV6Y2HE6.js} +4 -4
  77. package/dist/{chunk-OURHMODR.js → chunk-LG4TWW4U.js} +13 -13
  78. package/dist/{chunk-XAKEUMEJ.js → chunk-LVHPTBO3.js} +3 -3
  79. package/dist/{chunk-ERLBPDGU.js → chunk-MJCG5K2O.js} +2 -2
  80. package/dist/{chunk-THXCFRTU.js → chunk-N4J5KGWG.js} +12 -12
  81. package/dist/{chunk-MZSBFAPJ.js → chunk-NVT6C2VE.js} +9 -9
  82. package/dist/{chunk-AELOBFW5.js → chunk-O5MQPK7E.js} +3 -3
  83. package/dist/{chunk-JM4LEPY3.js → chunk-O7NUCTFU.js} +2 -2
  84. package/dist/{chunk-JED6ZDEE.js → chunk-O7WP4ZD4.js} +2 -2
  85. package/dist/{chunk-ZO27FGJS.js → chunk-PH5X4GIP.js} +2 -2
  86. package/dist/{chunk-B7JUCQUA.js → chunk-PU3AUQPA.js} +4 -4
  87. package/dist/{chunk-A4VFQH5G.js → chunk-PZFVK3IH.js} +52 -7
  88. package/dist/chunk-QQJUTGQH.js +135 -0
  89. package/dist/{chunk-HSH73DP6.js → chunk-RI4NIMFP.js} +99 -39
  90. package/dist/{chunk-33LCUH4H.js → chunk-RTERS6S5.js} +3 -3
  91. package/dist/{chunk-T3UBLACL.js → chunk-SCQ5VPUF.js} +19 -5
  92. package/dist/chunk-SGHSY3LU.js +377 -0
  93. package/dist/{chunk-SRTU6HMQ.js → chunk-SJEGO2QL.js} +8 -8
  94. package/dist/chunk-SQDFK5ZQ.js +273 -0
  95. package/dist/{chunk-UC7TFHUM.js → chunk-SVDWQGX2.js} +296 -121
  96. package/dist/{chunk-Z5CGSFJB.js → chunk-T7IKPCMI.js} +4 -4
  97. package/dist/chunk-TC3YWBFO.js +233 -0
  98. package/dist/{chunk-EVCVDTXE.js → chunk-TLKMTQYL.js} +3 -3
  99. package/dist/{chunk-IJZFN3HM.js → chunk-TWQUYVP3.js} +4 -4
  100. package/dist/{chunk-IZMRON6C.js → chunk-UVCXZEGU.js} +2 -2
  101. package/dist/{chunk-CKNVO24D.js → chunk-UWDO3O52.js} +2 -2
  102. package/dist/{chunk-RJE5JTVK.js → chunk-VC3TR4NL.js} +7 -7
  103. package/dist/{chunk-CI2G3OEB.js → chunk-X2CH42BN.js} +9 -9
  104. package/dist/{chunk-6HO5ZTXK.js → chunk-XCC2RENT.js} +2 -2
  105. package/dist/chunk-XHVV4NVW.js +51 -0
  106. package/dist/{chunk-ZJEL4H2R.js → chunk-XJ7J6WOO.js} +9 -9
  107. package/dist/{chunk-ULOEATBZ.js → chunk-XKTN7CZF.js} +106 -29
  108. package/dist/{chunk-IPWPWM6R.js → chunk-YM2BSPYW.js} +111 -10
  109. package/dist/{chunk-BUPDIHML.js → chunk-YRVLP7UU.js} +3 -3
  110. package/dist/{chunk-T2OE3YQB.js → chunk-YTN572Q2.js} +3 -3
  111. package/dist/{chunk-WVAJFAIA.js → chunk-YYX3SU6H.js} +3 -3
  112. package/dist/{chunk-MO5YHHMQ.js → chunk-ZDUQGL3N.js} +2 -2
  113. package/dist/{chunk-Y3J7VR52.js → chunk-ZNQX6QWH.js} +30 -2
  114. package/dist/{chunk-UWN33VNX.js → chunk-ZREZOIGS.js} +8 -8
  115. package/dist/{chunk-6SM5NJQH.js → chunk-ZTLWVRNS.js} +4 -4
  116. package/dist/{chunk-RUNNI6VE.js → chunk-ZXL6MB4R.js} +3 -3
  117. package/dist/cli.cjs +159 -122
  118. package/dist/dgmo-router-ODKPEJ3P.js +79 -0
  119. package/dist/dimensions-WSIJXT5Q.js +22 -0
  120. package/dist/editor.js +4 -1
  121. package/dist/element.js +214 -108
  122. package/dist/element.mjs +6906 -831
  123. package/dist/{flowchart-parser-ZNSKIBVR.js → flowchart-parser-IVZN7CQN.js} +4 -4
  124. package/dist/{flowchart-renderer-SNDSII4D.js → flowchart-renderer-GMI2U3DD.js} +9 -9
  125. package/dist/highlight.js +7 -1
  126. package/dist/index.d.ts +5 -1
  127. package/dist/index.js +193 -232
  128. package/dist/{layout-HRBZPFCN.js → layout-34CLNICW.js} +5 -5
  129. package/dist/{layout-5RA6QWR6.js → layout-4Z5JM7PT.js} +6 -6
  130. package/dist/layout-6RDJHS6E.js +9 -0
  131. package/dist/{layout-7QXCNOVS.js → layout-7H4H46CS.js} +3 -3
  132. package/dist/{layout-46N4JJYK.js → layout-7SKMFYHL.js} +5 -5
  133. package/dist/{layout-HWDSRX5E.js → layout-D42XE4RE.js} +6 -6
  134. package/dist/{layout-EE6GE46Y.js → layout-DC4TVXER.js} +5 -5
  135. package/dist/layout-FGQWRYYW.js +14 -0
  136. package/dist/layout-GZ2CWONU.js +14 -0
  137. package/dist/layout-HQMBPJVS.js +10 -0
  138. package/dist/{layout-UM5F4DJB.js → layout-K2ZN3Q42.js} +5 -5
  139. package/dist/{layout-S2QBYSK2.js → layout-NXG63LWH.js} +3 -3
  140. package/dist/{layout-N76NR4ZO.js → layout-PUQCB6AN.js} +7 -7
  141. package/dist/{layout-HYZPWAK5.js → layout-QNUQLEHU.js} +3 -3
  142. package/dist/layout-S3EK4IYO.js +14 -0
  143. package/dist/{layout-search-OYV77HHS.js → layout-search-QS44PI5R.js} +6 -6
  144. package/dist/{parser-KNSQSKQO.js → parser-4BKIFG2C.js} +5 -5
  145. package/dist/{parser-OV7NOBW6.js → parser-4ROBKVUR.js} +4 -4
  146. package/dist/parser-667RGSUW.js +13 -0
  147. package/dist/{parser-IXSZZQHY.js → parser-BL7Z72EY.js} +4 -4
  148. package/dist/{parser-AQETEVRW.js → parser-CLMFZWCC.js} +4 -4
  149. package/dist/{parser-XKRP7QKP.js → parser-D6ONJQFR.js} +3 -3
  150. package/dist/{parser-2EWECDSA.js → parser-DERPY5KC.js} +4 -4
  151. package/dist/{parser-4OGOBJJ4.js → parser-GFSOPDB7.js} +4 -4
  152. package/dist/{parser-2MFP2H2E.js → parser-HVJFTOXL.js} +3 -3
  153. package/dist/{parser-VQP2UJ6W.js → parser-IKZFTLOJ.js} +3 -3
  154. package/dist/parser-J3P2D6IP.js +13 -0
  155. package/dist/{parser-PQ3POX45.js → parser-JD7OQ2E6.js} +4 -4
  156. package/dist/{parser-O5J4VBII.js → parser-K647FRI4.js} +3 -3
  157. package/dist/{parser-NGU3ETO6.js → parser-KPMN5KKE.js} +4 -4
  158. package/dist/{parser-4FL2CMDG.js → parser-MBJSBTL5.js} +4 -4
  159. package/dist/{parser-TFZFBVWN.js → parser-MCJWF5G3.js} +3 -3
  160. package/dist/{parser-NRAI6O25.js → parser-MRBPXXIV.js} +4 -4
  161. package/dist/{parser-6BTRLKRZ.js → parser-OBQG655V.js} +4 -4
  162. package/dist/{parser-3STE62GB.js → parser-QJYS7KQQ.js} +4 -4
  163. package/dist/{parser-XDVELHRK.js → parser-SMBJO3XN.js} +4 -4
  164. package/dist/{parser-TRTHDFPP.js → parser-TITK4YW6.js} +5 -5
  165. package/dist/{parser-I6KXEYFK.js → parser-TNYX5S7E.js} +4 -4
  166. package/dist/{parser-Y6WTBU76.js → parser-UBGPTIZD.js} +3 -3
  167. package/dist/parser-UGA23PYK.js +14 -0
  168. package/dist/{parser-N5O4IHUN.js → parser-WISPH7LW.js} +4 -4
  169. package/dist/{parser-CFZD5IBL.js → parser-XWUDFJ7P.js} +4 -4
  170. package/dist/parser-ZKF5K2H2.js +15 -0
  171. package/dist/{parser-ZSDPZYQP.js → parser-ZYC3XGNS.js} +4 -4
  172. package/dist/{renderer-AWWAF6XD.js → renderer-4IUPINAE.js} +10 -10
  173. package/dist/renderer-6L3NBEY5.js +24 -0
  174. package/dist/{renderer-ZRNG54CW.js → renderer-6T3KK4S3.js} +11 -11
  175. package/dist/{renderer-KQB7UGDS.js → renderer-7RH2SI3B.js} +3 -3
  176. package/dist/{renderer-6EEZHMH4.js → renderer-A5VFZQQK.js} +9 -9
  177. package/dist/{renderer-5MYBMBYO.js → renderer-BB5PREMY.js} +5 -5
  178. package/dist/{renderer-BYCNMBF7.js → renderer-CGW7QPNA.js} +10 -10
  179. package/dist/{renderer-QIWVHWZO.js → renderer-DAXMXIKD.js} +3 -3
  180. package/dist/{renderer-7MVLWWQD.js → renderer-DKESNMU5.js} +9 -9
  181. package/dist/{renderer-ZTR3DER3.js → renderer-HVCU2C3Z.js} +3 -3
  182. package/dist/{renderer-VACVQYML.js → renderer-LWGJFT3D.js} +8 -8
  183. package/dist/{renderer-PGX2TKVS.js → renderer-MFJ7HY2H.js} +8 -8
  184. package/dist/{renderer-B2OMQIQG.js → renderer-MJDDU27W.js} +15 -15
  185. package/dist/{renderer-4JHRUBE6.js → renderer-QL5KO6SK.js} +10 -10
  186. package/dist/{renderer-W4M6QLIJ.js → renderer-QNHUXCRL.js} +14 -14
  187. package/dist/{renderer-ZGNTUWC4.js → renderer-ROV756WT.js} +8 -8
  188. package/dist/{renderer-YY2OSF6E.js → renderer-SQ3JUAI7.js} +9 -9
  189. package/dist/renderer-THD6V5TL.js +22 -0
  190. package/dist/{renderer-5NDVNDAZ.js → renderer-TPIBXNOS.js} +9 -9
  191. package/dist/{renderer-RPOA5YPZ.js → renderer-TYXRHMRI.js} +13 -13
  192. package/dist/{renderer-N43WR5GV.js → renderer-UZF3JROD.js} +11 -11
  193. package/dist/{renderer-6W5462RB.js → renderer-V3JEMWMM.js} +9 -9
  194. package/dist/{renderer-JGBKUCZD.js → renderer-VFUVRNLK.js} +4 -4
  195. package/dist/{renderer-Z7I3W2PP.js → renderer-VICQ4WNY.js} +8 -8
  196. package/dist/renderer-W5RMOURB.js +21 -0
  197. package/dist/renderer-XEKIRPI6.js +23 -0
  198. package/dist/{renderer-CLJHQPBJ.js → renderer-YHXPN3GF.js} +12 -12
  199. package/dist/renderer-radial-MHO2VDXN.js +21 -0
  200. package/dist/{resolver-NOAA7ID7.js → resolver-FHBCO3PL.js} +3 -3
  201. package/dist/{state-parser-Z2V23ATR.js → state-parser-RX3GXOIB.js} +4 -4
  202. package/dist/{state-renderer-B4DQBM6M.js → state-renderer-AJUKGNWU.js} +9 -9
  203. package/docs/ai-integration.md +8 -3
  204. package/docs/language-reference.md +179 -5
  205. package/gallery/fixtures/family.dgmo +23 -0
  206. package/gallery/fixtures/sketch.dgmo +22 -0
  207. package/package.json +1 -1
  208. package/dist/chunk-ODZVHU3R.js +0 -153
  209. package/dist/dgmo-router-X35VLZLM.js +0 -73
  210. package/dist/dimensions-J3FHIMJ6.js +0 -22
  211. package/dist/layout-5T6RH5M6.js +0 -14
  212. package/dist/layout-G23F7LDH.js +0 -9
  213. package/dist/layout-OB3RI63S.js +0 -14
  214. package/dist/parser-JAL2HD4I.js +0 -13
  215. package/dist/renderer-SMIBCRVB.js +0 -24
  216. package/dist/renderer-radial-C32GPJQ7.js +0 -21
@@ -1,9 +1,9 @@
1
+ import {
2
+ renderNodeCard
3
+ } from "./chunk-AHGF2YYA.js";
1
4
  import {
2
5
  renderInlineText
3
6
  } from "./chunk-3HDBAXF5.js";
4
- import {
5
- renderNodeCard
6
- } from "./chunk-VOKGH627.js";
7
7
  import {
8
8
  CARD_RADIUS,
9
9
  COLLAPSE_BAR_HEIGHT,
@@ -20,15 +20,15 @@ import {
20
20
  NODE_STROKE_WIDTH,
21
21
  SEPARATOR_GAP
22
22
  } from "./chunk-3CIOJ5YJ.js";
23
- import {
24
- renderIntegratedLegend
25
- } from "./chunk-PWIHZ6NJ.js";
26
23
  import {
27
24
  ScaleContext
28
25
  } from "./chunk-YYVTBZZC.js";
26
+ import {
27
+ renderIntegratedLegend
28
+ } from "./chunk-4UDKKGHH.js";
29
29
  import {
30
30
  getMaxLegendReservedHeight
31
- } from "./chunk-YAA6IID3.js";
31
+ } from "./chunk-7UEMZREK.js";
32
32
  import {
33
33
  TITLE_FONT_SIZE,
34
34
  TITLE_FONT_WEIGHT
@@ -43,10 +43,10 @@ import {
43
43
  LEGEND_EYE_SIZE,
44
44
  LEGEND_GROUP_GAP,
45
45
  LEGEND_HEIGHT
46
- } from "./chunk-QOOUC2J5.js";
46
+ } from "./chunk-HQCHYB5F.js";
47
47
  import {
48
48
  measureText
49
- } from "./chunk-WCT3NYCV.js";
49
+ } from "./chunk-5LWQH6QV.js";
50
50
  import {
51
51
  preprocessDescriptionLine
52
52
  } from "./chunk-IYULMRBE.js";
@@ -58,7 +58,7 @@ import {
58
58
  } from "./chunk-P6T66CCZ.js";
59
59
  import {
60
60
  tagAttrKey
61
- } from "./chunk-QLCCJEJI.js";
61
+ } from "./chunk-HBVD67XG.js";
62
62
 
63
63
  // src/sitemap/renderer.ts
64
64
  import * as d3Selection from "d3-selection";
@@ -400,8 +400,8 @@ function renderLegend(parent, legendGroups, palette, isDark, activeTagGroup, fix
400
400
  }
401
401
  }
402
402
  async function renderSitemapForExport(content, theme, palette) {
403
- const { parseSitemap } = await import("./parser-NGU3ETO6.js");
404
- const { layoutSitemap } = await import("./layout-5T6RH5M6.js");
403
+ const { parseSitemap } = await import("./parser-KPMN5KKE.js");
404
+ const { layoutSitemap } = await import("./layout-S3EK4IYO.js");
405
405
  const { getPalette } = await import("./palettes-PRJ2RI6D.js");
406
406
  const isDark = theme === "dark";
407
407
  const effectivePalette = palette ?? (isDark ? getPalette("nord").dark : getPalette("nord").light);
@@ -451,4 +451,4 @@ export {
451
451
  renderSitemap,
452
452
  renderSitemapForExport
453
453
  };
454
- //# sourceMappingURL=chunk-OURHMODR.js.map
454
+ //# sourceMappingURL=chunk-LG4TWW4U.js.map
@@ -15,7 +15,7 @@ import {
15
15
  stripDefaultModifier,
16
16
  tagAttrKey,
17
17
  validateTagGroupNames
18
- } from "./chunk-QLCCJEJI.js";
18
+ } from "./chunk-HBVD67XG.js";
19
19
  import {
20
20
  normalizeName
21
21
  } from "./chunk-NOTA6TEI.js";
@@ -28,7 +28,7 @@ import {
28
28
  splitNameAndMeta,
29
29
  warnUnknownMetaKeys,
30
30
  withTagAliases
31
- } from "./chunk-Y3J7VR52.js";
31
+ } from "./chunk-ZNQX6QWH.js";
32
32
  import {
33
33
  formatDgmoError,
34
34
  makeDgmoError
@@ -1253,4 +1253,4 @@ export {
1253
1253
  GANTT_KNOWN_OPTIONS,
1254
1254
  GANTT_KNOWN_BOOLEANS
1255
1255
  };
1256
- //# sourceMappingURL=chunk-XAKEUMEJ.js.map
1256
+ //# sourceMappingURL=chunk-LVHPTBO3.js.map
@@ -2,7 +2,7 @@ import {
2
2
  extractColor,
3
3
  measureIndent,
4
4
  parseFirstLine
5
- } from "./chunk-Y3J7VR52.js";
5
+ } from "./chunk-ZNQX6QWH.js";
6
6
  import {
7
7
  emit,
8
8
  formatDgmoError,
@@ -507,4 +507,4 @@ export {
507
507
  VERSION_CONTROL_DIAGNOSTICS,
508
508
  parseVersionControl
509
509
  };
510
- //# sourceMappingURL=chunk-ERLBPDGU.js.map
510
+ //# sourceMappingURL=chunk-MJCG5K2O.js.map
@@ -1,28 +1,28 @@
1
1
  import {
2
2
  computeNodeText,
3
3
  layoutMindmap
4
- } from "./chunk-T2OE3YQB.js";
5
- import {
6
- renderInlineText
7
- } from "./chunk-3HDBAXF5.js";
4
+ } from "./chunk-YTN572Q2.js";
8
5
  import {
9
6
  extractExportSvg,
10
7
  runInExportContainer
11
8
  } from "./chunk-JTSMEYIZ.js";
9
+ import {
10
+ renderInlineText
11
+ } from "./chunk-3HDBAXF5.js";
12
12
  import {
13
13
  COLLAPSE_BAR_HEIGHT,
14
14
  EDGE_STROKE_WIDTH,
15
15
  NODE_STROKE_WIDTH
16
16
  } from "./chunk-3CIOJ5YJ.js";
17
- import {
18
- renderIntegratedLegend
19
- } from "./chunk-PWIHZ6NJ.js";
20
17
  import {
21
18
  ScaleContext
22
19
  } from "./chunk-YYVTBZZC.js";
20
+ import {
21
+ renderIntegratedLegend
22
+ } from "./chunk-4UDKKGHH.js";
23
23
  import {
24
24
  getMaxLegendReservedHeight
25
- } from "./chunk-YAA6IID3.js";
25
+ } from "./chunk-7UEMZREK.js";
26
26
  import {
27
27
  TITLE_FONT_SIZE,
28
28
  TITLE_FONT_WEIGHT
@@ -32,10 +32,10 @@ import {
32
32
  } from "./chunk-6KFWC4CO.js";
33
33
  import {
34
34
  LEGEND_GROUP_GAP
35
- } from "./chunk-QOOUC2J5.js";
35
+ } from "./chunk-HQCHYB5F.js";
36
36
  import {
37
37
  parseMindmap
38
- } from "./chunk-EB6FPQUP.js";
38
+ } from "./chunk-65RTDUZH.js";
39
39
  import {
40
40
  preprocessDescriptionLine
41
41
  } from "./chunk-IYULMRBE.js";
@@ -45,7 +45,7 @@ import {
45
45
  } from "./chunk-P6T66CCZ.js";
46
46
  import {
47
47
  tagAttrKey
48
- } from "./chunk-QLCCJEJI.js";
48
+ } from "./chunk-HBVD67XG.js";
49
49
 
50
50
  // src/mindmap/renderer.ts
51
51
  import * as d3Selection from "d3-selection";
@@ -388,4 +388,4 @@ export {
388
388
  renderMindmap,
389
389
  renderMindmapForExport
390
390
  };
391
- //# sourceMappingURL=chunk-THXCFRTU.js.map
391
+ //# sourceMappingURL=chunk-N4J5KGWG.js.map
@@ -4,15 +4,15 @@ import {
4
4
  import {
5
5
  CARD_RADIUS
6
6
  } from "./chunk-3CIOJ5YJ.js";
7
- import {
8
- renderIntegratedLegend
9
- } from "./chunk-PWIHZ6NJ.js";
10
7
  import {
11
8
  ScaleContext
12
9
  } from "./chunk-YYVTBZZC.js";
10
+ import {
11
+ renderIntegratedLegend
12
+ } from "./chunk-4UDKKGHH.js";
13
13
  import {
14
14
  getMaxLegendReservedHeight
15
- } from "./chunk-YAA6IID3.js";
15
+ } from "./chunk-7UEMZREK.js";
16
16
  import {
17
17
  TITLE_FONT_SIZE,
18
18
  TITLE_FONT_WEIGHT
@@ -23,13 +23,13 @@ import {
23
23
  import {
24
24
  LEGEND_HEIGHT,
25
25
  measureLegendText
26
- } from "./chunk-QOOUC2J5.js";
26
+ } from "./chunk-HQCHYB5F.js";
27
27
  import {
28
28
  measureText
29
- } from "./chunk-WCT3NYCV.js";
29
+ } from "./chunk-5LWQH6QV.js";
30
30
  import {
31
31
  parseKanban
32
- } from "./chunk-AELOBFW5.js";
32
+ } from "./chunk-O5MQPK7E.js";
33
33
  import {
34
34
  contrastText,
35
35
  mix,
@@ -37,7 +37,7 @@ import {
37
37
  } from "./chunk-P6T66CCZ.js";
38
38
  import {
39
39
  tagAttrKey
40
- } from "./chunk-QLCCJEJI.js";
40
+ } from "./chunk-HBVD67XG.js";
41
41
 
42
42
  // src/kanban/renderer.ts
43
43
  import * as d3Selection from "d3-selection";
@@ -882,4 +882,4 @@ export {
882
882
  renderKanban,
883
883
  renderKanbanForExport
884
884
  };
885
- //# sourceMappingURL=chunk-MZSBFAPJ.js.map
885
+ //# sourceMappingURL=chunk-NVT6C2VE.js.map
@@ -5,7 +5,7 @@ import {
5
5
  stripDefaultModifier,
6
6
  tagAttrKey,
7
7
  validateTagGroupNames
8
- } from "./chunk-QLCCJEJI.js";
8
+ } from "./chunk-HBVD67XG.js";
9
9
  import {
10
10
  normalizeName
11
11
  } from "./chunk-NOTA6TEI.js";
@@ -18,7 +18,7 @@ import {
18
18
  splitNameAndMeta,
19
19
  warnUnknownMetaKeys,
20
20
  withTagAliases
21
- } from "./chunk-Y3J7VR52.js";
21
+ } from "./chunk-ZNQX6QWH.js";
22
22
  import {
23
23
  resolveColorWithDiagnostic
24
24
  } from "./chunk-TLVIHFRO.js";
@@ -372,4 +372,4 @@ function parseCardLine(trimmed, lineNumber, counter, metaAliasMap, _palette, dia
372
372
  export {
373
373
  parseKanban
374
374
  };
375
- //# sourceMappingURL=chunk-AELOBFW5.js.map
375
+ //# sourceMappingURL=chunk-O5MQPK7E.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
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-6KFWC4CO.js";
11
11
  import {
12
12
  measureText
13
- } from "./chunk-WCT3NYCV.js";
13
+ } from "./chunk-5LWQH6QV.js";
14
14
  import {
15
15
  contrastText,
16
16
  mix,
@@ -551,4 +551,4 @@ function renderModal(parent, node, ctx) {
551
551
  export {
552
552
  renderWireframe
553
553
  };
554
- //# sourceMappingURL=chunk-ZO27FGJS.js.map
554
+ //# sourceMappingURL=chunk-PH5X4GIP.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,14 +32,14 @@ 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
  shapeFill
39
39
  } from "./chunk-P6T66CCZ.js";
40
40
  import {
41
41
  parseFlowchart
42
- } from "./chunk-LIOHW36Z.js";
42
+ } from "./chunk-6VE3VLWM.js";
43
43
 
44
44
  // src/graph/flowchart-renderer.ts
45
45
  import * as d3Selection from "d3-selection";
@@ -527,4 +527,4 @@ export {
527
527
  renderFlowchart,
528
528
  renderFlowchartForExport
529
529
  };
530
- //# sourceMappingURL=chunk-B7JUCQUA.js.map
530
+ //# sourceMappingURL=chunk-PU3AUQPA.js.map
@@ -16,8 +16,9 @@ import {
16
16
  FONT_FAMILY
17
17
  } from "./chunk-6KFWC4CO.js";
18
18
  import {
19
- CHAR_WIDTH_RATIO
20
- } from "./chunk-WCT3NYCV.js";
19
+ CHAR_WIDTH_RATIO,
20
+ measureText
21
+ } from "./chunk-5LWQH6QV.js";
21
22
  import {
22
23
  contrastText,
23
24
  getSeriesColors,
@@ -127,20 +128,35 @@ function renderRing(container, parsed, palette, isDark, onClickItem, exportDims)
127
128
  }
128
129
  if (inBandLabelsVisible) {
129
130
  const labelsG = svg.append("g").attr("class", "ring-labels");
131
+ const labelDefs = labelsG.append("defs");
132
+ let ringLabelSeq = 0;
130
133
  for (let i = 0; i < N; i++) {
131
134
  const layer = parsed.layers[i];
132
135
  const fill = layerFills[i];
133
136
  const isInnermost = i === 0;
134
- const labelY = isInnermost ? cy : cy - (i + 0.5) * thickness;
135
- const fittedFont = labelFont;
136
137
  const textColor = contrastText(
137
138
  fill,
138
139
  palette.textOnFillLight,
139
140
  palette.textOnFillDark
140
141
  );
141
142
  const labelG = labelsG.append("g").attr("class", "ring-label-group").attr("data-line-number", layer.lineNumber);
142
- const label = labelG.append("text").attr("class", "ring-label").attr("x", cx).attr("y", labelY).attr("dy", "0.35em").attr("text-anchor", "middle").attr("fill", textColor).attr("font-family", FONT_FAMILY).attr("font-size", fittedFont).attr("font-weight", 600).style("pointer-events", "none");
143
- renderInlineText(label, layer.label, palette, fittedFont);
143
+ if (isInnermost) {
144
+ const label = labelG.append("text").attr("class", "ring-label").attr("x", cx).attr("y", cy).attr("dy", "0.35em").attr("text-anchor", "middle").attr("fill", textColor).attr("font-family", FONT_FAMILY).attr("font-size", labelFont).attr("font-weight", 600).style("pointer-events", "none");
145
+ renderInlineText(label, layer.label, palette, labelFont);
146
+ continue;
147
+ }
148
+ drawRingCurvedLabel(
149
+ labelG,
150
+ labelDefs,
151
+ `dgmo-ring-lbl-${ringLabelSeq++}`,
152
+ layer.label,
153
+ cx,
154
+ cy,
155
+ (i + 0.5) * thickness,
156
+ labelFont,
157
+ textColor,
158
+ palette
159
+ );
144
160
  }
145
161
  }
146
162
  if (hasAnyDescription || !inBandLabelsVisible) {
@@ -160,6 +176,35 @@ function renderRing(container, parsed, palette, isDark, onClickItem, exportDims)
160
176
  });
161
177
  }
162
178
  }
179
+ var MAX_LABEL_ARC = 1.6 * Math.PI;
180
+ function drawRingCurvedLabel(labelG, defs, pathId, text, cx, cy, rMid, labelFont, textColor, palette) {
181
+ const PAD = 1.18;
182
+ let fs = labelFont;
183
+ let rPath = rMid - fs * 0.32;
184
+ const maxLen = MAX_LABEL_ARC * rPath;
185
+ const wPadded = measureText(text, labelFont) * PAD;
186
+ if (wPadded > maxLen) {
187
+ fs = Math.max(LABEL_FONT_MIN, Math.floor(labelFont * maxLen / wPadded));
188
+ rPath = rMid - fs * 0.32;
189
+ }
190
+ const arcLen = measureText(text, fs) * PAD;
191
+ const halfAngle = Math.min(arcLen / (2 * rPath), MAX_LABEL_ARC / 2);
192
+ const largeArc = halfAngle * 2 > Math.PI ? 1 : 0;
193
+ const p0x = cx - Math.sin(halfAngle) * rPath;
194
+ const p0y = cy - Math.cos(halfAngle) * rPath;
195
+ const p1x = cx + Math.sin(halfAngle) * rPath;
196
+ const p1y = cy - Math.cos(halfAngle) * rPath;
197
+ const d = `M ${p0x.toFixed(2)} ${p0y.toFixed(2)} A ${rPath.toFixed(2)} ${rPath.toFixed(2)} 0 ${largeArc} 1 ${p1x.toFixed(2)} ${p1y.toFixed(2)}`;
198
+ defs.append("path").attr("id", pathId).attr("d", d);
199
+ const label = labelG.append("text").attr("class", "ring-label").attr("fill", textColor).attr("font-family", FONT_FAMILY).attr("font-size", fs).attr("font-weight", 600).style("pointer-events", "none");
200
+ const textPath = label.append("textPath").attr("href", `#${pathId}`).attr("startOffset", "50%").attr("text-anchor", "middle");
201
+ renderInlineText(
202
+ textPath,
203
+ text,
204
+ palette,
205
+ fs
206
+ );
207
+ }
163
208
  function renderRingForExport(container, parsed, palette, isDark, exportDims) {
164
209
  renderRing(container, parsed, palette, isDark, void 0, exportDims);
165
210
  }
@@ -248,4 +293,4 @@ export {
248
293
  renderRing,
249
294
  renderRingForExport
250
295
  };
251
- //# sourceMappingURL=chunk-A4VFQH5G.js.map
296
+ //# sourceMappingURL=chunk-PZFVK3IH.js.map
@@ -0,0 +1,135 @@
1
+ // src/family/couple-rank.ts
2
+ var UnionFind = class {
3
+ parent = /* @__PURE__ */ new Map();
4
+ find(x) {
5
+ if (!this.parent.has(x)) {
6
+ this.parent.set(x, x);
7
+ return x;
8
+ }
9
+ let root = x;
10
+ while (this.parent.get(root) !== root) root = this.parent.get(root);
11
+ let cur = x;
12
+ while (this.parent.get(cur) !== root) {
13
+ const next = this.parent.get(cur);
14
+ this.parent.set(cur, root);
15
+ cur = next;
16
+ }
17
+ return root;
18
+ }
19
+ union(a, b) {
20
+ const ra = this.find(a);
21
+ const rb = this.find(b);
22
+ if (ra !== rb) this.parent.set(ra, rb);
23
+ }
24
+ add(x) {
25
+ if (!this.parent.has(x)) this.parent.set(x, x);
26
+ }
27
+ };
28
+ function buildCoupleQuotient(persons, unions) {
29
+ const uf = new UnionFind();
30
+ for (const id of persons.keys()) uf.add(id);
31
+ for (const u of unions) {
32
+ for (const p of u.parents) uf.add(p);
33
+ for (let i = 1; i < u.parents.length; i++) {
34
+ uf.union(u.parents[0], u.parents[i]);
35
+ }
36
+ }
37
+ const rootToClass = /* @__PURE__ */ new Map();
38
+ const classOf = /* @__PURE__ */ new Map();
39
+ const classMembers = /* @__PURE__ */ new Map();
40
+ const claim = (id) => {
41
+ const root = uf.find(id);
42
+ let c = rootToClass.get(root);
43
+ if (c === void 0) {
44
+ c = rootToClass.size;
45
+ rootToClass.set(root, c);
46
+ classMembers.set(c, []);
47
+ }
48
+ classOf.set(id, c);
49
+ classMembers.get(c).push(id);
50
+ return c;
51
+ };
52
+ for (const id of persons.keys()) claim(id);
53
+ for (const u of unions) {
54
+ for (const p of u.parents) if (!classOf.has(p)) claim(p);
55
+ for (const c of u.children) if (!classOf.has(c.personId)) claim(c.personId);
56
+ }
57
+ const edgeSet = /* @__PURE__ */ new Set();
58
+ const edges = [];
59
+ for (const u of unions) {
60
+ if (u.parents.length === 0) continue;
61
+ const pc = classOf.get(u.parents[0]);
62
+ for (const child of u.children) {
63
+ const cc = classOf.get(child.personId);
64
+ const key = `${pc}\0${cc}`;
65
+ if (edgeSet.has(key)) continue;
66
+ edgeSet.add(key);
67
+ edges.push([pc, cc]);
68
+ }
69
+ }
70
+ const cycle = hasCycle(rootToClass.size, edges);
71
+ return { classOf, classMembers, edges, cycle };
72
+ }
73
+ function hasCycle(n, edges) {
74
+ const adj = /* @__PURE__ */ new Map();
75
+ for (const [a, b] of edges) {
76
+ if (a === b) return true;
77
+ (adj.get(a) ?? adj.set(a, []).get(a)).push(b);
78
+ }
79
+ const color = new Int8Array(n);
80
+ const stack = [];
81
+ for (let s = 0; s < n; s++) {
82
+ if (color[s] !== 0) continue;
83
+ stack.push({ v: s, i: 0 });
84
+ color[s] = 1;
85
+ while (stack.length) {
86
+ const top = stack[stack.length - 1];
87
+ const nbrs = adj.get(top.v) ?? [];
88
+ if (top.i < nbrs.length) {
89
+ const w = nbrs[top.i++];
90
+ if (color[w] === 1) return true;
91
+ if (color[w] === 0) {
92
+ color[w] = 1;
93
+ stack.push({ v: w, i: 0 });
94
+ }
95
+ } else {
96
+ color[top.v] = 2;
97
+ stack.pop();
98
+ }
99
+ }
100
+ }
101
+ return false;
102
+ }
103
+ function rankClasses(q) {
104
+ const n = q.classMembers.size;
105
+ const adj = /* @__PURE__ */ new Map();
106
+ const indeg = new Array(n).fill(0);
107
+ for (const [a, b] of q.edges) {
108
+ if (a === b) continue;
109
+ (adj.get(a) ?? adj.set(a, []).get(a)).push(b);
110
+ indeg[b] = (indeg[b] ?? 0) + 1;
111
+ }
112
+ const row = /* @__PURE__ */ new Map();
113
+ const queue = [];
114
+ for (let c = 0; c < n; c++) {
115
+ row.set(c, 0);
116
+ if ((indeg[c] ?? 0) === 0) queue.push(c);
117
+ }
118
+ for (let qi = 0; qi < queue.length; qi++) {
119
+ const u = queue[qi];
120
+ const ru = row.get(u);
121
+ for (const w of adj.get(u) ?? []) {
122
+ if (ru + 1 > (row.get(w) ?? 0)) row.set(w, ru + 1);
123
+ const nd = (indeg[w] ?? 0) - 1;
124
+ indeg[w] = nd;
125
+ if (nd === 0) queue.push(w);
126
+ }
127
+ }
128
+ return row;
129
+ }
130
+
131
+ export {
132
+ buildCoupleQuotient,
133
+ rankClasses
134
+ };
135
+ //# sourceMappingURL=chunk-QQJUTGQH.js.map