@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,325 @@
1
+ import {
2
+ renderIntegratedLegend
3
+ } from "./chunk-QUJGFNFN.js";
4
+ import {
5
+ getFigure,
6
+ getPartGeom,
7
+ resolvePartKey
8
+ } from "./chunk-BDXC7MDK.js";
9
+ import {
10
+ FONT_FAMILY
11
+ } from "./chunk-6KFWC4CO.js";
12
+ import {
13
+ getSeriesColors,
14
+ mix
15
+ } from "./chunk-P6T66CCZ.js";
16
+ import {
17
+ resolveActiveTagGroup,
18
+ resolveTagColor,
19
+ tagAttrKey
20
+ } from "./chunk-WCUHAQKB.js";
21
+ import {
22
+ resolveColor
23
+ } from "./chunk-TLVIHFRO.js";
24
+
25
+ // src/body/renderer.ts
26
+ import * as d3Selection from "d3-selection";
27
+ var esc = (s) => s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
28
+ var TITLE_H = 60;
29
+ var LEGEND_SCALE = 2.4;
30
+ var LEGEND_BAND = 76;
31
+ var TITLE_PAD = TITLE_H + LEGEND_BAND;
32
+ var BOTTOM_PAD = 40;
33
+ var PAGE_MARGIN = 160;
34
+ var OUTER_MARGIN = 30;
35
+ var CENTER_COL = 420;
36
+ var LABEL_FONT = 23;
37
+ var NOTE_FONT = 17;
38
+ function pathStartX(d) {
39
+ const m = d.match(/[Mm]\s*(-?[\d.]+)/);
40
+ return m ? parseFloat(m[1]) : 0;
41
+ }
42
+ function partKey(part) {
43
+ return (part.side ? `${part.side} ` : "") + part.name.toLowerCase();
44
+ }
45
+ function partLabel(part) {
46
+ return part.side ? `${part.side} ${part.name}` : part.name;
47
+ }
48
+ function sideCenter(centers, side, view) {
49
+ const wantScreenRight = view === "front" ? side === "left" : side === "right";
50
+ return centers.reduce(
51
+ (best, c) => wantScreenRight ? c.x > best.x ? c : best : c.x < best.x ? c : best
52
+ );
53
+ }
54
+ function renderFigureBody(fig, view, parts, partColor, emphKey, form, palette, defs) {
55
+ const [vx, vy, vw, vh] = fig.viewBox.split(" ").map(Number);
56
+ const muscleFill = mix(palette.bg, palette.border, 0.7);
57
+ const seam = palette.bg;
58
+ const outlineStroke = palette.textMuted;
59
+ const gid = `body-skin-${vx}-${vy}`;
60
+ defs.push(
61
+ `<linearGradient id="${gid}" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="${mix(palette.surface, palette.bg, 0.4)}"/><stop offset="1" stop-color="${mix(palette.border, palette.bg, 0.3)}"/></linearGradient>`
62
+ );
63
+ let out = "";
64
+ if (form === "skin") {
65
+ out += `<path d="${fig.outline}" fill="url(#${gid})"/>`;
66
+ for (const d of fig.headPaths) {
67
+ out += `<path d="${d}" fill="url(#${gid})" stroke="${outlineStroke}" stroke-width="2.5"/>`;
68
+ }
69
+ const hairFill = mix(palette.text, palette.bg, 0.6);
70
+ for (const d of fig.hairPaths) {
71
+ out += `<path d="${d}" fill="${hairFill}" stroke="${outlineStroke}" stroke-width="1.5"/>`;
72
+ }
73
+ } else {
74
+ out += `<path d="${fig.outline}" fill="url(#${gid})"/>`;
75
+ for (const d of fig.base) {
76
+ out += `<path d="${d}" fill="${muscleFill}" fill-opacity="0.55" stroke="${seam}" stroke-width="1"/>`;
77
+ }
78
+ for (const d of fig.headPaths) {
79
+ out += `<path d="${d}" fill="url(#${gid})" stroke="${outlineStroke}" stroke-width="2.5"/>`;
80
+ }
81
+ for (const d of fig.hairPaths) {
82
+ out += `<path d="${d}" fill="none" stroke="${outlineStroke}" stroke-width="2.5"/>`;
83
+ }
84
+ }
85
+ const anchors = /* @__PURE__ */ new Map();
86
+ const cxMid = vx + vw / 2;
87
+ for (const part of parts) {
88
+ const key = resolvePartKey(fig, part.name);
89
+ if (!key) continue;
90
+ const geom = getPartGeom(fig, key);
91
+ const color = partColor(part);
92
+ const emph = emphKey(part).toLowerCase();
93
+ const dataLine = ` class="dgmo-body-part" data-line-number="${part.lineNumber}" data-emph-key="${esc(emph)}"`;
94
+ let paths = geom.paths;
95
+ if (part.side) {
96
+ const wantScreenRight = view === "front" ? part.side === "left" : part.side === "right";
97
+ const sidePaths = geom.paths.filter(
98
+ (d) => wantScreenRight ? pathStartX(d) >= cxMid : pathStartX(d) < cxMid
99
+ );
100
+ if (sidePaths.length) paths = sidePaths;
101
+ }
102
+ if (form === "skin") {
103
+ for (const d of paths) {
104
+ out += `<path${dataLine} d="${d}" fill="${color}" fill-opacity="0.5" stroke="${color}" stroke-width="1.5"/>`;
105
+ }
106
+ } else {
107
+ const lightFill = mix(color, palette.bg, 70);
108
+ for (const d of paths) {
109
+ out += `<path${dataLine} d="${d}" fill="${lightFill}" stroke="${color}" stroke-width="1.5"/>`;
110
+ }
111
+ }
112
+ const allCenters = geom.centers?.length ? geom.centers.map((c) => ({ x: c.x, y: c.y })) : [{ x: geom.anchor.x, y: geom.anchor.y }];
113
+ const chosen = part.side && allCenters.length > 1 ? sideCenter(allCenters, part.side, view) : null;
114
+ anchors.set(partKey(part), {
115
+ x: chosen?.x ?? geom.anchor.x,
116
+ y: chosen?.y ?? geom.anchor.y,
117
+ centers: chosen ? [chosen] : allCenters,
118
+ color,
119
+ emph,
120
+ part
121
+ });
122
+ }
123
+ out += `<path d="${fig.outline}" fill="none" stroke="${outlineStroke}" stroke-width="2.5"/>`;
124
+ return { fig, body: out, anchors, vx, vy, vw, vh };
125
+ }
126
+ function nearestCenter(a, targetX) {
127
+ let best = a.centers[0] ?? { x: a.x, y: a.y };
128
+ let bestD = Math.abs(best.x - targetX);
129
+ for (const c of a.centers) {
130
+ const d = Math.abs(c.x - targetX);
131
+ if (d < bestD) {
132
+ bestD = d;
133
+ best = c;
134
+ }
135
+ }
136
+ return best;
137
+ }
138
+ function gutterLabels(r, palette) {
139
+ const { vx, vw, vh } = r;
140
+ const cx = vx + vw / 2;
141
+ const list = [...r.anchors.values()];
142
+ const band = vw * 0.1;
143
+ const left = list.filter((a) => a.x < cx - band);
144
+ const right = list.filter((a) => a.x > cx + band);
145
+ const mid = list.filter((a) => a.x >= cx - band && a.x <= cx + band).sort((a, b) => a.y - b.y);
146
+ for (const a of mid) (left.length <= right.length ? left : right).push(a);
147
+ let labels = "";
148
+ const place = (arr, side) => {
149
+ const gx = side === "L" ? vx - 14 : vx + vw + 14;
150
+ const sx = side === "L" ? gx + 26 : gx - 26;
151
+ const anchorX = side === "L" ? "end" : "start";
152
+ const minGap = vh * 0.05;
153
+ const rows = arr.map((a) => ({ a, tgt: nearestCenter(a, gx) })).sort((p, q) => p.tgt.y - q.tgt.y);
154
+ let prevY = -1e9;
155
+ for (const { a, tgt } of rows) {
156
+ const ly = Math.max(tgt.y, prevY + minGap);
157
+ prevY = ly;
158
+ const note = a.part.notes.length ? a.part.notes[0] : "";
159
+ const dl = ` class="dgmo-body-part" data-line-number="${a.part.lineNumber}" data-emph-key="${esc(a.emph)}"`;
160
+ labels += `<path${dl} d="M${sx} ${ly} L${tgt.x} ${tgt.y}" stroke="${a.color}" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" fill="none" opacity="0.85"/><circle${dl} cx="${tgt.x}" cy="${tgt.y}" r="5.5" fill="${a.color}" stroke="${palette.bg}" stroke-width="2" vector-effect="non-scaling-stroke"/><text${dl} x="${gx}" y="${ly + (note ? -2 : 7)}" text-anchor="${anchorX}" font-size="${LABEL_FONT}" font-weight="700" fill="${palette.text}">${esc(partLabel(a.part))}</text>`;
161
+ if (note) {
162
+ labels += `<text${dl} x="${gx}" y="${ly + 22}" text-anchor="${anchorX}" font-size="${NOTE_FONT}" fill="${palette.textMuted}">${esc(note)}</text>`;
163
+ }
164
+ }
165
+ };
166
+ place(left, "L");
167
+ place(right, "R");
168
+ return labels;
169
+ }
170
+ function renderBody(container, parsed, palette, _isDark, _onClickItem, exportDims, tagOverride) {
171
+ const accent = getSeriesColors(palette)[0];
172
+ const activeGroup = resolveActiveTagGroup(
173
+ parsed.tagGroups,
174
+ void 0,
175
+ tagOverride
176
+ );
177
+ const partColor = (part) => resolveTagColor(part.metadata, parsed.tagGroups, activeGroup) ?? accent;
178
+ const emphKey = (part) => activeGroup ? part.metadata[tagAttrKey(activeGroup)] ?? "" : "";
179
+ const defs = [];
180
+ const rendered = parsed.options.views.map(
181
+ (view) => renderFigureBody(
182
+ getFigure(parsed.options.sex, view),
183
+ view,
184
+ parsed.parts,
185
+ partColor,
186
+ emphKey,
187
+ parsed.options.form,
188
+ palette,
189
+ defs
190
+ )
191
+ );
192
+ const figH = Math.max(...rendered.map((r) => r.fig.contentBox.h));
193
+ let body = "";
194
+ let totalW;
195
+ if (rendered.length === 1) {
196
+ const r = rendered[0];
197
+ const gutter = r.vw * 0.42;
198
+ const tx = OUTER_MARGIN + gutter - r.vx;
199
+ const ty = TITLE_PAD - r.vy;
200
+ body = `<g transform="translate(${tx.toFixed(2)} ${ty.toFixed(2)})">${r.body}${gutterLabels(r, palette)}</g>`;
201
+ totalW = OUTER_MARGIN * 2 + gutter * 2 + r.vw;
202
+ } else {
203
+ const fL = rendered[0];
204
+ const fR = rendered[1];
205
+ const cbL = fL.fig.contentBox;
206
+ const cbR = fR.fig.contentBox;
207
+ const sL = figH / cbL.h;
208
+ const sR = figH / cbR.h;
209
+ const leftX = OUTER_MARGIN;
210
+ const rightX = OUTER_MARGIN + cbL.w * sL + CENTER_COL;
211
+ const txL = leftX - cbL.x * sL;
212
+ const txR = rightX - cbR.x * sR;
213
+ const tyL = TITLE_PAD - cbL.y * sL;
214
+ const tyR = TITLE_PAD - cbR.y * sR;
215
+ body += `<g transform="translate(${txL.toFixed(2)} ${tyL.toFixed(2)}) scale(${sL.toFixed(4)})">${fL.body}</g>`;
216
+ body += `<g transform="translate(${txR.toFixed(2)} ${tyR.toFixed(2)}) scale(${sR.toFixed(4)})">${fR.body}</g>`;
217
+ totalW = OUTER_MARGIN * 2 + cbL.w * sL + CENTER_COL + cbR.w * sR;
218
+ const centerX = OUTER_MARGIN + cbL.w * sL + CENTER_COL / 2;
219
+ const mapL = (a) => ({
220
+ x: txL + a.x * sL,
221
+ y: tyL + a.y * sL
222
+ });
223
+ const mapR = (a) => ({
224
+ x: txR + a.x * sR,
225
+ y: tyR + a.y * sR
226
+ });
227
+ const seen = /* @__PURE__ */ new Set();
228
+ const items = [];
229
+ for (const part of parsed.parts) {
230
+ const nm = partKey(part);
231
+ if (seen.has(nm)) continue;
232
+ const aL = fL.anchors.get(nm);
233
+ const aR = fR.anchors.get(nm);
234
+ if (!aL && !aR) continue;
235
+ seen.add(nm);
236
+ const left = aL ? mapL(nearestCenter(aL, fL.vx + fL.vw)) : void 0;
237
+ const right = aR ? mapR(nearestCenter(aR, fR.vx)) : void 0;
238
+ const ys = [left?.y, right?.y].filter((v) => v != null);
239
+ items.push({
240
+ name: partLabel(part),
241
+ note: part.notes.length ? part.notes[0] : "",
242
+ color: (aL ?? aR).color,
243
+ emph: (aL ?? aR).emph,
244
+ line: part.lineNumber,
245
+ ...left && { left },
246
+ ...right && { right },
247
+ y: ys.reduce((s, v) => s + v, 0) / ys.length
248
+ });
249
+ }
250
+ items.sort((a, b) => a.y - b.y);
251
+ const minGap = figH * 0.052;
252
+ let prevY = -1e9;
253
+ for (const it of items) {
254
+ it.y = Math.max(it.y, prevY + minGap);
255
+ prevY = it.y;
256
+ }
257
+ let labels = "";
258
+ const stub = 96;
259
+ for (const it of items) {
260
+ const dl = ` class="dgmo-body-part" data-line-number="${it.line}" data-emph-key="${esc(it.emph)}"`;
261
+ if (it.left) {
262
+ labels += `<path${dl} d="M${(centerX - stub).toFixed(1)} ${it.y.toFixed(1)} L${it.left.x.toFixed(1)} ${it.left.y.toFixed(1)}" stroke="${it.color}" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" fill="none" opacity="0.85"/><circle${dl} cx="${it.left.x.toFixed(1)}" cy="${it.left.y.toFixed(1)}" r="5.5" fill="${it.color}" stroke="${palette.bg}" stroke-width="2" vector-effect="non-scaling-stroke"/>`;
263
+ }
264
+ if (it.right) {
265
+ labels += `<path${dl} d="M${(centerX + stub).toFixed(1)} ${it.y.toFixed(1)} L${it.right.x.toFixed(1)} ${it.right.y.toFixed(1)}" stroke="${it.color}" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" fill="none" opacity="0.85"/><circle${dl} cx="${it.right.x.toFixed(1)}" cy="${it.right.y.toFixed(1)}" r="5.5" fill="${it.color}" stroke="${palette.bg}" stroke-width="2" vector-effect="non-scaling-stroke"/>`;
266
+ }
267
+ labels += `<text${dl} x="${centerX}" y="${(it.y - 3).toFixed(1)}" text-anchor="middle" font-size="${LABEL_FONT}" font-weight="700" fill="${palette.text}">${esc(it.name)}</text>`;
268
+ if (it.note) {
269
+ labels += `<text${dl} x="${centerX}" y="${(it.y + 20).toFixed(1)}" text-anchor="middle" font-size="${NOTE_FONT}" fill="${palette.textMuted}">${esc(it.note)}</text>`;
270
+ }
271
+ }
272
+ body += labels;
273
+ }
274
+ const totalH = TITLE_PAD + figH + BOTTOM_PAD;
275
+ const exportMode = !!exportDims;
276
+ d3Selection.select(container).selectAll("svg").remove();
277
+ const width = exportDims?.width ?? container.clientWidth ?? 1200;
278
+ const height = exportDims?.height ?? container.clientHeight ?? 800;
279
+ const svg = d3Selection.select(container).append("svg").attr("width", width).attr("height", height).attr(
280
+ "viewBox",
281
+ `${-PAGE_MARGIN} ${-PAGE_MARGIN} ${(totalW + 2 * PAGE_MARGIN).toFixed(0)} ${(totalH + 2 * PAGE_MARGIN).toFixed(0)}`
282
+ ).attr("preserveAspectRatio", "xMidYMin meet").attr("xmlns", "http://www.w3.org/2000/svg").style("font-family", FONT_FAMILY);
283
+ if (defs.length) svg.append("defs").html(defs.join(""));
284
+ svg.append("g").html(body);
285
+ if (parsed.title) {
286
+ svg.append("text").attr("x", totalW / 2).attr("y", 40).attr("text-anchor", "middle").attr("font-size", 34).attr("font-weight", 700).attr("fill", palette.text).text(parsed.title);
287
+ }
288
+ if (!parsed.options.noLegend && parsed.tagGroups.length) {
289
+ const legendG = svg.append("g").attr("transform", `translate(0, ${TITLE_H}) scale(${LEGEND_SCALE})`);
290
+ const groups = parsed.tagGroups.map((g) => ({
291
+ name: g.name,
292
+ entries: g.entries.map((e) => ({
293
+ value: e.value,
294
+ color: resolveColor(e.color, palette) ?? e.color
295
+ }))
296
+ }));
297
+ renderIntegratedLegend(legendG, {
298
+ groups,
299
+ palette,
300
+ isDark: _isDark,
301
+ // Legend lays out in its own (pre-scale) coordinate space; passing the
302
+ // de-scaled width keeps it centered after the scale transform.
303
+ width: totalW / LEGEND_SCALE,
304
+ mode: exportMode ? "export" : "preview",
305
+ activeGroup
306
+ });
307
+ }
308
+ }
309
+ function renderBodyForExport(container, parsed, palette, isDark, exportDims, tagOverride) {
310
+ renderBody(
311
+ container,
312
+ parsed,
313
+ palette,
314
+ isDark,
315
+ void 0,
316
+ exportDims,
317
+ tagOverride
318
+ );
319
+ }
320
+
321
+ export {
322
+ renderBody,
323
+ renderBodyForExport
324
+ };
325
+ //# sourceMappingURL=chunk-QDFNCATJ.js.map
@@ -8,14 +8,14 @@ import {
8
8
  LEGEND_PILL_FONT_SIZE,
9
9
  LEGEND_PILL_PAD,
10
10
  measureLegendText
11
- } from "./chunk-QOOUC2J5.js";
11
+ } from "./chunk-HQCHYB5F.js";
12
12
  import {
13
13
  measureText,
14
14
  wrapTextToWidth
15
- } from "./chunk-WCT3NYCV.js";
15
+ } from "./chunk-5LWQH6QV.js";
16
16
  import {
17
17
  tagAttrKey
18
- } from "./chunk-QLCCJEJI.js";
18
+ } from "./chunk-WCUHAQKB.js";
19
19
 
20
20
  // src/c4/layout.ts
21
21
  import dagre from "@dagrejs/dagre";
@@ -1682,4 +1682,4 @@ export {
1682
1682
  layoutC4Components,
1683
1683
  layoutC4Deployment
1684
1684
  };
1685
- //# sourceMappingURL=chunk-QEBUY5NY.js.map
1685
+ //# sourceMappingURL=chunk-QFQ35BTO.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
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  computeLegendLayout
3
- } from "./chunk-YAA6IID3.js";
3
+ } from "./chunk-7UEMZREK.js";
4
4
  import {
5
5
  FONT_FAMILY
6
6
  } from "./chunk-6KFWC4CO.js";
@@ -14,14 +14,14 @@ import {
14
14
  LEGEND_TOGGLE_DOT_R,
15
15
  LEGEND_TOGGLE_OFF_OPACITY,
16
16
  measureLegendText
17
- } from "./chunk-QOOUC2J5.js";
17
+ } from "./chunk-HQCHYB5F.js";
18
18
  import {
19
19
  mix,
20
20
  valueRampStops
21
21
  } from "./chunk-P6T66CCZ.js";
22
22
  import {
23
23
  tagAttrKey
24
- } from "./chunk-QLCCJEJI.js";
24
+ } from "./chunk-WCUHAQKB.js";
25
25
 
26
26
  // src/utils/legend-d3.ts
27
27
  var LEGEND_TEXT_DY = "0.32em";
@@ -293,4 +293,4 @@ export {
293
293
  renderLegendD3,
294
294
  renderIntegratedLegend
295
295
  };
296
- //# sourceMappingURL=chunk-PWIHZ6NJ.js.map
296
+ //# sourceMappingURL=chunk-QUJGFNFN.js.map
@@ -11,15 +11,15 @@ import {
11
11
  LEGEND_PILL_FONT_SIZE,
12
12
  LEGEND_PILL_PAD,
13
13
  measureLegendText
14
- } from "./chunk-QOOUC2J5.js";
14
+ } from "./chunk-HQCHYB5F.js";
15
15
  import {
16
16
  measureText
17
- } from "./chunk-WCT3NYCV.js";
17
+ } from "./chunk-5LWQH6QV.js";
18
18
  import {
19
19
  injectDefaultTagMetadata,
20
20
  resolveTagColor,
21
21
  tagAttrKey
22
- } from "./chunk-QLCCJEJI.js";
22
+ } from "./chunk-WCUHAQKB.js";
23
23
 
24
24
  // src/org/layout.ts
25
25
  import { hierarchy, tree } from "d3-hierarchy";
@@ -810,4 +810,4 @@ function layoutOrg(parsed, hiddenCounts, activeTagGroup, hiddenAttributes, expan
810
810
  export {
811
811
  layoutOrg
812
812
  };
813
- //# sourceMappingURL=chunk-J5FIXQRT.js.map
813
+ //# sourceMappingURL=chunk-R56LASIN.js.map
@@ -4,15 +4,15 @@ import {
4
4
  import {
5
5
  wrapDescriptionLines
6
6
  } from "./chunk-BMR4CIEO.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-QUJGFNFN.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,
@@ -24,7 +24,7 @@ import {
24
24
  import {
25
25
  measureText,
26
26
  truncateText
27
- } from "./chunk-WCT3NYCV.js";
27
+ } from "./chunk-5LWQH6QV.js";
28
28
  import {
29
29
  contrastText,
30
30
  mix,
@@ -35,11 +35,11 @@ import {
35
35
  isSequenceBlock,
36
36
  isSequenceNote,
37
37
  isSequenceSection
38
- } from "./chunk-SML67VPV.js";
38
+ } from "./chunk-T4BRO3Z6.js";
39
39
  import {
40
40
  resolveActiveTagGroup,
41
41
  tagAttrKey
42
- } from "./chunk-QLCCJEJI.js";
42
+ } from "./chunk-WCUHAQKB.js";
43
43
 
44
44
  // src/sequence/renderer.ts
45
45
  import * as d3Selection from "d3-selection";
@@ -1848,4 +1848,4 @@ export {
1848
1848
  renderSequenceDiagram,
1849
1849
  buildNoteMessageMap
1850
1850
  };
1851
- //# sourceMappingURL=chunk-SRTU6HMQ.js.map
1851
+ //# sourceMappingURL=chunk-RV26LTUU.js.map