@diagrammo/dgmo 0.53.0 → 0.55.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 (212) hide show
  1. package/dist/advanced.d.ts +112 -9
  2. package/dist/advanced.js +188 -160
  3. package/dist/auto.js +147 -132
  4. package/dist/auto.mjs +2352 -746
  5. package/dist/block.js +65 -62
  6. package/dist/chart-meta.js +52 -49
  7. package/dist/{charts-d3-DH2XA45I.js → charts-d3-KZ6V4OP2.js} +10 -8
  8. package/dist/chunk-2CW5ZTNH.js +58 -0
  9. package/dist/{chunk-MA3HJZHB.js → chunk-2HX6ZGY7.js} +7 -7
  10. package/dist/{chunk-YG2BEIQU.js → chunk-2R6HG6D5.js} +11 -11
  11. package/dist/{chunk-65V6IRFN.js → chunk-2ZJXKJSI.js} +106 -60
  12. package/dist/{chunk-PYO4TJJ3.js → chunk-32HUNA33.js} +60 -18
  13. package/dist/{chunk-UK6DKJLD.js → chunk-3BFXELBL.js} +51 -4
  14. package/dist/{chunk-RW5PEJ7D.js → chunk-3BZJ5KD5.js} +7 -3
  15. package/dist/{chunk-FT7TPPZ5.js → chunk-3FUTFYSP.js} +65 -26
  16. package/dist/{chunk-QAALSCKI.js → chunk-4MZCJV4M.js} +12 -12
  17. package/dist/{chunk-ZXUAPTCK.js → chunk-4R5KIPNX.js} +2 -2
  18. package/dist/{chunk-QWIBT6DS.js → chunk-5D5VHDJM.js} +49 -14
  19. package/dist/{chunk-U7NKYLX2.js → chunk-5H5GWWA4.js} +55 -19
  20. package/dist/{chunk-P3H7QVDH.js → chunk-5K5XBEXT.js} +11 -6
  21. package/dist/{chunk-PT4SW76W.js → chunk-6NJWBMJV.js} +49 -14
  22. package/dist/{chunk-I46X5VUA.js → chunk-7TF3QOOD.js} +25 -1
  23. package/dist/{chunk-6DCOIN4W.js → chunk-A2ARDILY.js} +783 -3
  24. package/dist/{chunk-CK2GMDXD.js → chunk-A2PTRSAO.js} +2 -2
  25. package/dist/{chunk-APKUAJ2L.js → chunk-A2RUBBVT.js} +14 -1
  26. package/dist/{chunk-GMIJ35PW.js → chunk-A4UJP4IS.js} +68 -20
  27. package/dist/{chunk-LQHVDZYC.js → chunk-AKE6C2D7.js} +4 -4
  28. package/dist/{chunk-W5KMNC5U.js → chunk-ASPS5O6F.js} +9 -10
  29. package/dist/{chunk-FLDC7ZAK.js → chunk-AU75JHSR.js} +6 -3
  30. package/dist/chunk-BEOAKGNA.js +484 -0
  31. package/dist/{chunk-XY3UDKKH.js → chunk-COVYNAKJ.js} +4 -4
  32. package/dist/{chunk-4ASVFYB2.js → chunk-DS4MDEQ7.js} +5 -5
  33. package/dist/{chunk-7JDTNFAK.js → chunk-EFUQENO5.js} +76 -32
  34. package/dist/{chunk-BULHGPHK.js → chunk-EMSOFHEN.js} +2 -2
  35. package/dist/{chunk-3BEKKRH5.js → chunk-ETTDF3S2.js} +49 -11
  36. package/dist/{chunk-JHOAH4TI.js → chunk-ETYF5QZR.js} +2 -2
  37. package/dist/{chunk-AHXIMHDQ.js → chunk-F5ZNUMSY.js} +53 -14
  38. package/dist/{chunk-I64ECJX3.js → chunk-FBP33UM6.js} +3 -3
  39. package/dist/{chunk-VIRANCNY.js → chunk-FGAMFJNJ.js} +58 -20
  40. package/dist/{chunk-774C2FF3.js → chunk-GRXPFBYC.js} +24 -3
  41. package/dist/{chunk-NNYFQOTK.js → chunk-GTO5VCYG.js} +10 -8
  42. package/dist/{chunk-RJ5LBZ5U.js → chunk-HES4K6DV.js} +13 -13
  43. package/dist/{chunk-AZNXGWDC.js → chunk-HGKOVKAX.js} +7 -7
  44. package/dist/{chunk-DWUMPMV2.js → chunk-HLGOG44K.js} +2 -2
  45. package/dist/{chunk-VJHBSPGF.js → chunk-HUTP35XT.js} +5 -4
  46. package/dist/{chunk-3CZLWOCI.js → chunk-HX7QNHC6.js} +3 -3
  47. package/dist/{chunk-R5NH5BZG.js → chunk-IALX52TR.js} +6 -6
  48. package/dist/{chunk-A44USUV7.js → chunk-ICZ7M6IZ.js} +23 -17
  49. package/dist/{chunk-27STWBOK.js → chunk-IF4KYSJZ.js} +10 -8
  50. package/dist/{chunk-HORZ5H2L.js → chunk-IG6J7JWH.js} +61 -22
  51. package/dist/{chunk-VRRDUYOK.js → chunk-IIUYKQ5J.js} +3 -3
  52. package/dist/{chunk-GMAH572Z.js → chunk-INTAQV2Y.js} +2 -2
  53. package/dist/{chunk-6AUZPPAV.js → chunk-ITXL2KU5.js} +2 -2
  54. package/dist/{chunk-KKHCNSKK.js → chunk-IWG2ECAO.js} +5 -5
  55. package/dist/{chunk-GQ644SPD.js → chunk-JGCEFKZP.js} +14 -14
  56. package/dist/{chunk-HNBY6CNV.js → chunk-JQLSFZZP.js} +2 -2
  57. package/dist/{chunk-CMVZWP32.js → chunk-JR7Q6GHE.js} +2 -2
  58. package/dist/{chunk-LHILKFDP.js → chunk-KC3WBBI7.js} +9 -9
  59. package/dist/{chunk-GABSL6TH.js → chunk-KK3L5NVK.js} +3 -3
  60. package/dist/{chunk-LC3FFD43.js → chunk-L2DIXZUT.js} +98 -48
  61. package/dist/{chunk-4WGMGKCZ.js → chunk-LCRPGGGS.js} +11 -11
  62. package/dist/{chunk-6KY7OCZC.js → chunk-LKGQ46P4.js} +3 -3
  63. package/dist/{chunk-HE5J53SZ.js → chunk-LW7STMYZ.js} +3 -3
  64. package/dist/{chunk-BD3WGY4T.js → chunk-M53MDBIW.js} +2 -2
  65. package/dist/{chunk-AN2DQB3G.js → chunk-MEH4TJEX.js} +12 -12
  66. package/dist/{chunk-SGPFVDUL.js → chunk-MNS2ENXF.js} +6 -6
  67. package/dist/{chunk-FXCB7H5O.js → chunk-MSWIBF6J.js} +2 -2
  68. package/dist/{chunk-BR7AYN76.js → chunk-NL7FUIVD.js} +12 -12
  69. package/dist/{chunk-AIMLCDAO.js → chunk-NN5TF4OV.js} +2 -2
  70. package/dist/{chunk-7GUF6SDR.js → chunk-NPPUZ4SK.js} +9 -9
  71. package/dist/{chunk-4K42RUGC.js → chunk-NYOOPQFD.js} +47 -12
  72. package/dist/{chunk-FFXCKZOU.js → chunk-O4CZDTQA.js} +3 -3
  73. package/dist/{chunk-6HTRCTAS.js → chunk-P5XXIVEU.js} +6 -4
  74. package/dist/{chunk-XEAQDIMF.js → chunk-PC4YLEKA.js} +6 -6
  75. package/dist/{chunk-Q7AH665U.js → chunk-PCVXXPYU.js} +121 -38
  76. package/dist/{chunk-W2DINCHL.js → chunk-PKUWYPI5.js} +207 -24
  77. package/dist/{chunk-PV2QO7QL.js → chunk-PSIDVCBA.js} +2 -2
  78. package/dist/{chunk-YR43LJT5.js → chunk-PV7ND5WL.js} +58 -15
  79. package/dist/{chunk-QI3BOLQB.js → chunk-Q5CMQVWF.js} +4 -4
  80. package/dist/{chunk-4RGZFA7H.js → chunk-Q5IHQ4NW.js} +11 -1
  81. package/dist/{chunk-SG4PRYO3.js → chunk-QQXFYTLC.js} +391 -60
  82. package/dist/{chunk-GWQJKTFS.js → chunk-QZYGRDMM.js} +118 -99
  83. package/dist/{chunk-CQFNIIQN.js → chunk-RKBCKCSF.js} +2 -2
  84. package/dist/{chunk-FUKNRLIJ.js → chunk-RSBH2C7O.js} +6 -6
  85. package/dist/{chunk-2QC4HXCY.js → chunk-RYNCWA5X.js} +11 -10
  86. package/dist/{chunk-NNUMX6WX.js → chunk-RZWIPDZ2.js} +40 -15
  87. package/dist/{chunk-VKNCC2GX.js → chunk-S52F62GW.js} +13 -13
  88. package/dist/{chunk-UQRIKAMH.js → chunk-SCOHNGPG.js} +59 -18
  89. package/dist/{chunk-VGNIDAPQ.js → chunk-SSHS42QG.js} +4 -4
  90. package/dist/chunk-TGOMHUOV.js +218 -0
  91. package/dist/{chunk-UKP5HWB5.js → chunk-UBQU2BY6.js} +4 -4
  92. package/dist/{chunk-IQJCVREL.js → chunk-UES4P7FN.js} +6 -6
  93. package/dist/chunk-US3P2DQO.js +87 -0
  94. package/dist/{chunk-GAWKIIPO.js → chunk-UXXLE6AH.js} +8 -8
  95. package/dist/{chunk-22OQWBWD.js → chunk-VMWSZCAK.js} +12 -11
  96. package/dist/{chunk-XG4NWFPY.js → chunk-VVIRAGID.js} +13 -13
  97. package/dist/{chunk-X3RXGSCZ.js → chunk-VXTUWXFB.js} +54 -15
  98. package/dist/{chunk-J7HI6G3G.js → chunk-W4TSD3IP.js} +6 -6
  99. package/dist/{chunk-FGDSTT3F.js → chunk-WB3NA3JJ.js} +2 -2
  100. package/dist/{chunk-KUSAVOWZ.js → chunk-WITOJZGL.js} +8 -4
  101. package/dist/{chunk-UVDCHR4E.js → chunk-WVGNXDEE.js} +2 -2
  102. package/dist/{chunk-HOXKNRON.js → chunk-X3X4LZDC.js} +2 -2
  103. package/dist/{chunk-SQCBSFT5.js → chunk-XKKH2DPG.js} +51 -263
  104. package/dist/{chunk-NR5HCAUD.js → chunk-XSVWUOUZ.js} +1 -1
  105. package/dist/{chunk-BFDVEO5R.js → chunk-Y4BBGFKY.js} +2 -2
  106. package/dist/{chunk-VAO6ANGC.js → chunk-YP2T5YUP.js} +14 -9
  107. package/dist/{chunk-PKNNHU7H.js → chunk-YXKNXIWA.js} +19 -11
  108. package/dist/{chunk-UFQJMOVZ.js → chunk-ZGIBV36U.js} +6 -6
  109. package/dist/{chunk-XQ4KN6JQ.js → chunk-ZP265ICS.js} +16 -15
  110. package/dist/{chunk-JTMSWEIW.js → chunk-ZWVKTWK6.js} +4 -4
  111. package/dist/{chunk-ALYZ3MAA.js → chunk-ZXNHHO6D.js} +8 -476
  112. package/dist/cli.cjs +166 -149
  113. package/dist/clock.js +34 -1
  114. package/dist/completion-registry.d.ts +129 -0
  115. package/dist/completion-registry.js +1278 -0
  116. package/dist/{compute-G55RG53N.js → compute-JAP5E2E4.js} +2 -2
  117. package/dist/dgmo-router-T4HGLIGA.js +88 -0
  118. package/dist/{dimensions-K6PGYYGT.js → dimensions-3JINHSYK.js} +8 -8
  119. package/dist/editor.js +28 -1
  120. package/dist/element.js +148 -133
  121. package/dist/element.mjs +2352 -746
  122. package/dist/{flowchart-parser-LALR6J6F.js → flowchart-parser-M7KKTLX7.js} +5 -5
  123. package/dist/{flowchart-renderer-DXYB5YRF.js → flowchart-renderer-FFEQFQEU.js} +9 -9
  124. package/dist/highlight.js +28 -1
  125. package/dist/index.js +77 -64
  126. package/dist/{layout-ZE5DRJWX.js → layout-3ZZBKUQC.js} +4 -4
  127. package/dist/{layout-3BVDMKXI.js → layout-AUKTWGYL.js} +4 -4
  128. package/dist/{layout-4IHCMWZN.js → layout-CRLTSFYQ.js} +4 -4
  129. package/dist/{layout-WCAIKGZG.js → layout-FNZDJGKF.js} +5 -5
  130. package/dist/layout-GHWRJKZQ.js +15 -0
  131. package/dist/{layout-3V2A4MUE.js → layout-LGXOKUCD.js} +6 -5
  132. package/dist/{layout-WSMPBQ4Q.js → layout-NF4EWFLT.js} +3 -3
  133. package/dist/{layout-OL2XFJXA.js → layout-SP7HJWKA.js} +3 -3
  134. package/dist/{layout-E6HR6PXH.js → layout-UR7CYAHL.js} +3 -3
  135. package/dist/layout-UTMEVFHN.js +15 -0
  136. package/dist/{layout-search-34DPZD43.js → layout-search-U2H4ORFJ.js} +14 -7
  137. package/dist/{legend-constants-P5EQWRQQ.js → legend-constants-B77VKB3R.js} +7 -2
  138. package/dist/{parser-6PPHAXXH.js → parser-2AXPSKWB.js} +5 -5
  139. package/dist/{parser-5HQXCNOS.js → parser-2AZ2KQTO.js} +4 -4
  140. package/dist/{parser-3KIGEEJM.js → parser-2LF33IS2.js} +4 -4
  141. package/dist/{parser-NNIL3HXU.js → parser-3QJ2Z4H4.js} +3 -3
  142. package/dist/parser-5GCQFSTQ.js +13 -0
  143. package/dist/{parser-6B6SSZT7.js → parser-62OHBRU5.js} +3 -3
  144. package/dist/{parser-VOERD6XR.js → parser-7LYJFZCP.js} +4 -4
  145. package/dist/{parser-ZGNXYFPS.js → parser-BMOTF72G.js} +3 -3
  146. package/dist/{parser-IVGHXLZP.js → parser-CIFLYZYP.js} +4 -3
  147. package/dist/{parser-GN2MM5CC.js → parser-D2UL2G5U.js} +3 -3
  148. package/dist/{parser-GKP2MHHL.js → parser-DM2APTKB.js} +3 -3
  149. package/dist/{parser-27Z76SN3.js → parser-DYYTPLBL.js} +4 -4
  150. package/dist/{parser-5FGJSQNS.js → parser-GOUGUTPU.js} +4 -4
  151. package/dist/{parser-G26MTBFS.js → parser-HGVUVD6J.js} +3 -3
  152. package/dist/{parser-EXNBDNGY.js → parser-IEJD3CZB.js} +3 -3
  153. package/dist/{parser-ZQDQTB4X.js → parser-JBEWNLAV.js} +5 -5
  154. package/dist/{parser-5QPFOB5F.js → parser-JMXPHNZD.js} +4 -4
  155. package/dist/{parser-4E4I3GNT.js → parser-JMXSQY3K.js} +4 -4
  156. package/dist/{parser-FF4BMRSB.js → parser-LUXS7J32.js} +4 -4
  157. package/dist/{parser-3VSWEKBF.js → parser-M5BUHULF.js} +4 -4
  158. package/dist/{parser-IKWK2ZU3.js → parser-MESRHUS4.js} +4 -5
  159. package/dist/{parser-3CODK6RG.js → parser-OOYNI2UT.js} +4 -4
  160. package/dist/{parser-YSLNDFLV.js → parser-PVBUAVRR.js} +4 -5
  161. package/dist/{parser-CKA3QMAG.js → parser-QKRBSQLJ.js} +5 -5
  162. package/dist/{parser-UWRX52PC.js → parser-S6NWSIJO.js} +4 -4
  163. package/dist/{parser-RNLTBIJ6.js → parser-SFEK6Q7Z.js} +4 -4
  164. package/dist/{parser-7JVIDLLR.js → parser-SUV52NQW.js} +4 -4
  165. package/dist/{parser-CRKLXGW7.js → parser-SZHGLOOZ.js} +4 -4
  166. package/dist/{parser-275KP7JO.js → parser-TO7IENWL.js} +5 -6
  167. package/dist/{parser-XNKJCMMA.js → parser-TVAMC7CQ.js} +4 -4
  168. package/dist/{parser-FOOFEJQU.js → parser-VAW46R57.js} +4 -4
  169. package/dist/{parser-XVPTRWZ4.js → parser-XDSPOXSE.js} +4 -4
  170. package/dist/pert.d.ts +2 -0
  171. package/dist/{renderer-D3BRNOMV.js → renderer-3PWLOJPD.js} +11 -11
  172. package/dist/{renderer-7NQSTQMQ.js → renderer-5EMHIQL5.js} +4 -4
  173. package/dist/{renderer-ZBTEX2JK.js → renderer-5PODNLYP.js} +4 -4
  174. package/dist/{renderer-6WRYVM5R.js → renderer-AQJIQ2XU.js} +9 -8
  175. package/dist/{renderer-JCZG6AYU.js → renderer-BEW3AYFT.js} +10 -10
  176. package/dist/{renderer-YUKPS27O.js → renderer-C3UYAXA6.js} +10 -8
  177. package/dist/{renderer-AK2WO4EI.js → renderer-CENXCMWG.js} +4 -4
  178. package/dist/{renderer-HIFQVEJA.js → renderer-CXM3ARYN.js} +10 -9
  179. package/dist/{renderer-JTCX6PCG.js → renderer-DW6TEBLA.js} +10 -9
  180. package/dist/{renderer-VMH6L6CP.js → renderer-FE5M6SEZ.js} +10 -9
  181. package/dist/{renderer-TYHGXAVT.js → renderer-FXK6ZL3P.js} +4 -4
  182. package/dist/{renderer-UPF7NRTI.js → renderer-G5ESLCJB.js} +12 -11
  183. package/dist/{renderer-CWEFGEIC.js → renderer-HTDS4FED.js} +14 -13
  184. package/dist/{renderer-XTXSOK3L.js → renderer-IO4KCFVL.js} +10 -10
  185. package/dist/{renderer-SQ54MDSA.js → renderer-IRAFJNTK.js} +10 -9
  186. package/dist/{renderer-JWGQSTMR.js → renderer-MFTTFW32.js} +15 -14
  187. package/dist/{renderer-2C6DJRYN.js → renderer-MPXI4FVL.js} +8 -8
  188. package/dist/{renderer-5MPN7CXZ.js → renderer-NVBEMQ6L.js} +5 -5
  189. package/dist/{renderer-7ZNVOVFG.js → renderer-OOGDCR6K.js} +3 -3
  190. package/dist/{renderer-COLQFSFV.js → renderer-Q5P72O4A.js} +9 -9
  191. package/dist/{renderer-WCWI4I6A.js → renderer-QZESC66H.js} +2 -2
  192. package/dist/{renderer-NE5W7CQP.js → renderer-RDBUXW7P.js} +6 -5
  193. package/dist/{renderer-6EN5XXJZ.js → renderer-S4XB3JR2.js} +11 -11
  194. package/dist/{renderer-WFSUBKUL.js → renderer-SIWEEWJ5.js} +9 -8
  195. package/dist/{renderer-LVZAHRP6.js → renderer-TKTM2SL4.js} +12 -12
  196. package/dist/{renderer-QD2SJF2I.js → renderer-TXTTV4HA.js} +10 -9
  197. package/dist/{renderer-YUXGXGSW.js → renderer-UZIU4AHK.js} +10 -9
  198. package/dist/{renderer-RLMOTXZ6.js → renderer-V72VJIGG.js} +14 -13
  199. package/dist/{renderer-UKXW2QPE.js → renderer-VEGOEZOI.js} +10 -8
  200. package/dist/{renderer-WNFXYYGL.js → renderer-W6I6T2TA.js} +8 -8
  201. package/dist/{renderer-KARQF3F3.js → renderer-WSHJRR2T.js} +8 -8
  202. package/dist/{renderer-radial-WF6VOUOD.js → renderer-radial-AG75PBYD.js} +9 -9
  203. package/dist/{resolver-WFKZYBJ2.js → resolver-ZSFQQRTH.js} +3 -3
  204. package/dist/{state-parser-L7DHZIQO.js → state-parser-KIPZGIB4.js} +5 -5
  205. package/dist/{state-renderer-TFEUOP4H.js → state-renderer-U6OSJG52.js} +13 -12
  206. package/docs/language-reference.md +2 -1
  207. package/package.json +5 -1
  208. package/dist/chunk-YJVA3QUU.js +0 -734
  209. package/dist/dgmo-router-B4S23EBH.js +0 -86
  210. package/dist/layout-3M5UYJHY.js +0 -14
  211. package/dist/layout-KPQWJNAG.js +0 -14
  212. package/dist/parser-7JHWEWXM.js +0 -13
@@ -0,0 +1,87 @@
1
+ import {
2
+ TITLE_FONT_SIZE,
3
+ TITLE_Y
4
+ } from "./chunk-A4GOY3PE.js";
5
+ import {
6
+ LEGEND_HEIGHT
7
+ } from "./chunk-Q5IHQ4NW.js";
8
+ import {
9
+ measureText
10
+ } from "./chunk-4ASYQ347.js";
11
+
12
+ // src/utils/inline-header.ts
13
+ var LEGEND_INLINE_SUPPORTED = /* @__PURE__ */ new Set([
14
+ // data charts
15
+ "bar",
16
+ "line",
17
+ "radar",
18
+ "scatter",
19
+ "function",
20
+ // structured
21
+ "state",
22
+ "treemap",
23
+ "block",
24
+ "event-line",
25
+ "boxes-and-lines",
26
+ "er",
27
+ "class",
28
+ "family",
29
+ "infra",
30
+ "sequence",
31
+ "sketch",
32
+ "bracket",
33
+ "gantt",
34
+ "pert",
35
+ "sitemap",
36
+ "mindmap",
37
+ "kanban",
38
+ "journey-map"
39
+ ]);
40
+ function legendInlineSupported(type) {
41
+ return LEGEND_INLINE_SUPPORTED.has(type.toLowerCase());
42
+ }
43
+ var INLINE_HEADER_PAD = 8;
44
+ var INLINE_HEADER_GAP = 16;
45
+ var BOLD_WIDTH_FACTOR = 1.06;
46
+ var MIN_INLINE_LEGEND_W = 48;
47
+ function measureTitleWidth(title, fontSize = TITLE_FONT_SIZE) {
48
+ return measureText(title, fontSize) * BOLD_WIDTH_FACTOR;
49
+ }
50
+ function layoutInlineHeader(input) {
51
+ const pad = input.pad ?? INLINE_HEADER_PAD;
52
+ const gap = input.gap ?? INLINE_HEADER_GAP;
53
+ const fontSize = input.titleFontSize ?? TITLE_FONT_SIZE;
54
+ const baselineY = input.titleBaselineY ?? TITLE_Y;
55
+ const stacked = {
56
+ inline: false,
57
+ titleX: input.containerWidth / 2,
58
+ titleAnchor: "middle",
59
+ legendX: 0,
60
+ legendY: input.titleBandHeight,
61
+ headerHeight: input.titleBandHeight + (input.hasLegend ? input.legendReserve : 0)
62
+ };
63
+ if (!input.requested || !input.hasLegend) return stacked;
64
+ const titleW = measureTitleWidth(input.title, fontSize);
65
+ const titleRight = pad + titleW + gap;
66
+ const avail = input.containerWidth - titleRight - pad;
67
+ const fits = avail >= MIN_INLINE_LEGEND_W && input.legendHeight <= LEGEND_HEIGHT + 1 && input.legendWidth <= avail + 0.5;
68
+ if (!fits) return stacked;
69
+ return {
70
+ inline: true,
71
+ titleX: pad,
72
+ titleAnchor: "start",
73
+ // Flush to the right edge; the fit test guarantees this clears the title.
74
+ legendX: input.containerWidth - pad - input.legendWidth,
75
+ // Center the legend row on the title's visual middle (cap-center ≈ baseline
76
+ // − 0.36·fontSize).
77
+ legendY: baselineY - fontSize * 0.36 - input.legendHeight / 2,
78
+ headerHeight: input.titleBandHeight
79
+ };
80
+ }
81
+
82
+ export {
83
+ legendInlineSupported,
84
+ INLINE_HEADER_PAD,
85
+ layoutInlineHeader
86
+ };
87
+ //# sourceMappingURL=chunk-US3P2DQO.js.map
@@ -6,10 +6,10 @@ import {
6
6
  mapLegendConfig,
7
7
  mapLegendGroups,
8
8
  parsePathRings
9
- } from "./chunk-UFQJMOVZ.js";
9
+ } from "./chunk-ZGIBV36U.js";
10
10
  import {
11
11
  renderIntegratedLegend
12
- } from "./chunk-W5KMNC5U.js";
12
+ } from "./chunk-ASPS5O6F.js";
13
13
  import {
14
14
  TITLE_FONT_SIZE,
15
15
  TITLE_FONT_WEIGHT,
@@ -20,21 +20,21 @@ import {
20
20
  } from "./chunk-6KFWC4CO.js";
21
21
  import {
22
22
  parseClock
23
- } from "./chunk-FLDC7ZAK.js";
23
+ } from "./chunk-AU75JHSR.js";
24
24
  import {
25
25
  fixedParts,
26
26
  formatTime,
27
27
  sunLine,
28
28
  workStatus,
29
29
  zoneParts
30
- } from "./chunk-APKUAJ2L.js";
30
+ } from "./chunk-A2RUBBVT.js";
31
+ import {
32
+ measureText
33
+ } from "./chunk-4ASYQ347.js";
31
34
  import {
32
35
  mix,
33
36
  themeBaseBg
34
37
  } from "./chunk-JYDMBWRP.js";
35
- import {
36
- measureText
37
- } from "./chunk-4ASYQ347.js";
38
38
 
39
39
  // src/map/renderer.ts
40
40
  import * as d3Selection from "d3-selection";
@@ -781,4 +781,4 @@ export {
781
781
  renderMap,
782
782
  renderMapForExport
783
783
  };
784
- //# sourceMappingURL=chunk-GAWKIIPO.js.map
784
+ //# sourceMappingURL=chunk-UXXLE6AH.js.map
@@ -1,14 +1,6 @@
1
1
  import {
2
2
  inferParticipantType
3
3
  } from "./chunk-C3Z4DX3V.js";
4
- import {
5
- AUTO_TAG_COLOR_SENTINEL,
6
- finalizeAutoTagColors,
7
- matchTagBlockHeading,
8
- stripDefaultModifier,
9
- validateTagGroupNames,
10
- validateTagValues
11
- } from "./chunk-CMVZWP32.js";
12
4
  import {
13
5
  parseArrow,
14
6
  parseInArrowLabel
@@ -17,6 +9,14 @@ import {
17
9
  displayName,
18
10
  normalizeName
19
11
  } from "./chunk-NOTA6TEI.js";
12
+ import {
13
+ AUTO_TAG_COLOR_SENTINEL,
14
+ finalizeAutoTagColors,
15
+ matchTagBlockHeading,
16
+ stripDefaultModifier,
17
+ validateTagGroupNames,
18
+ validateTagValues
19
+ } from "./chunk-JR7Q6GHE.js";
20
20
  import {
21
21
  FILL_FAMILY_TOKENS,
22
22
  OPTION_NOCOLON_RE,
@@ -28,7 +28,7 @@ import {
28
28
  splitNameAndMeta,
29
29
  warnUnknownMetaKeys,
30
30
  withTagAliases
31
- } from "./chunk-YJVA3QUU.js";
31
+ } from "./chunk-A2ARDILY.js";
32
32
  import {
33
33
  NAME_DIAGNOSTIC_CODES,
34
34
  formatDgmoError,
@@ -45,7 +45,8 @@ var KNOWN_SEQ_BOOLEANS = /* @__PURE__ */ new Set([
45
45
  "fill-solid",
46
46
  "fill-outline",
47
47
  "no-title",
48
- "no-legend"
48
+ "no-legend",
49
+ "legend-inline"
49
50
  ]);
50
51
  var NO_PREFIX_ONLY_BOOLEANS = /* @__PURE__ */ new Set(["activations"]);
51
52
  var VALID_PARTICIPANT_TYPES = /* @__PURE__ */ new Set([
@@ -1039,4 +1040,4 @@ export {
1039
1040
  parseSequenceDgmo,
1040
1041
  looksLikeSequence
1041
1042
  };
1042
- //# sourceMappingURL=chunk-22OQWBWD.js.map
1043
+ //# sourceMappingURL=chunk-VMWSZCAK.js.map
@@ -9,10 +9,10 @@ import {
9
9
  } from "./chunk-YYVTBZZC.js";
10
10
  import {
11
11
  renderIntegratedLegend
12
- } from "./chunk-W5KMNC5U.js";
12
+ } from "./chunk-ASPS5O6F.js";
13
13
  import {
14
14
  getMaxLegendReservedHeight
15
- } from "./chunk-774C2FF3.js";
15
+ } from "./chunk-GRXPFBYC.js";
16
16
  import {
17
17
  TITLE_FONT_SIZE,
18
18
  TITLE_FONT_WEIGHT
@@ -22,27 +22,27 @@ import {
22
22
  } from "./chunk-6KFWC4CO.js";
23
23
  import {
24
24
  parseKanban
25
- } from "./chunk-FUKNRLIJ.js";
26
- import {
27
- contrastText,
28
- mix,
29
- shapeFill,
30
- themeBaseBg
31
- } from "./chunk-JYDMBWRP.js";
25
+ } from "./chunk-RSBH2C7O.js";
32
26
  import {
33
27
  LEGEND_HEIGHT,
34
28
  measureLegendText
35
- } from "./chunk-4RGZFA7H.js";
29
+ } from "./chunk-Q5IHQ4NW.js";
36
30
  import {
37
31
  measureText
38
32
  } from "./chunk-4ASYQ347.js";
33
+ import {
34
+ contrastText,
35
+ mix,
36
+ shapeFill,
37
+ themeBaseBg
38
+ } from "./chunk-JYDMBWRP.js";
39
39
  import {
40
40
  tagAttrKey
41
- } from "./chunk-CMVZWP32.js";
41
+ } from "./chunk-JR7Q6GHE.js";
42
42
  import {
43
43
  fillModeFromOptions,
44
44
  legendSuppressed
45
- } from "./chunk-YJVA3QUU.js";
45
+ } from "./chunk-A2ARDILY.js";
46
46
 
47
47
  // src/kanban/renderer.ts
48
48
  import * as d3Selection from "d3-selection";
@@ -893,4 +893,4 @@ export {
893
893
  renderKanban,
894
894
  renderKanbanForExport
895
895
  };
896
- //# sourceMappingURL=chunk-XG4NWFPY.js.map
896
+ //# sourceMappingURL=chunk-VVIRAGID.js.map
@@ -6,13 +6,17 @@ import {
6
6
  formatPct,
7
7
  resolveCellColor,
8
8
  resolveColorMode
9
- } from "./chunk-UVDCHR4E.js";
9
+ } from "./chunk-WVGNXDEE.js";
10
+ import {
11
+ layoutInlineHeader
12
+ } from "./chunk-US3P2DQO.js";
10
13
  import {
11
14
  renderIntegratedLegend
12
- } from "./chunk-W5KMNC5U.js";
15
+ } from "./chunk-ASPS5O6F.js";
13
16
  import {
17
+ getLegendExtent,
14
18
  getMaxLegendReservedHeight
15
- } from "./chunk-774C2FF3.js";
19
+ } from "./chunk-GRXPFBYC.js";
16
20
  import {
17
21
  TITLE_FONT_SIZE,
18
22
  TITLE_FONT_WEIGHT,
@@ -21,21 +25,21 @@ import {
21
25
  import {
22
26
  FONT_FAMILY
23
27
  } from "./chunk-6KFWC4CO.js";
28
+ import {
29
+ LEGEND_GROUP_GAP
30
+ } from "./chunk-Q5IHQ4NW.js";
31
+ import {
32
+ measureText
33
+ } from "./chunk-4ASYQ347.js";
24
34
  import {
25
35
  contrastText,
26
36
  getSeriesColors,
27
37
  mix,
28
38
  themeBaseBg
29
39
  } from "./chunk-JYDMBWRP.js";
30
- import {
31
- LEGEND_GROUP_GAP
32
- } from "./chunk-4RGZFA7H.js";
33
- import {
34
- measureText
35
- } from "./chunk-4ASYQ347.js";
36
40
  import {
37
41
  tagAttrKey
38
- } from "./chunk-CMVZWP32.js";
42
+ } from "./chunk-JR7Q6GHE.js";
39
43
 
40
44
  // src/treemap/renderer.ts
41
45
  import * as d3Selection from "d3-selection";
@@ -175,9 +179,36 @@ function renderTreemap(container, parsed, palette, isDark, exportDims, options =
175
179
  { groups: legend.groups, position: LEGEND_POSITION, mode: "preview" },
176
180
  width
177
181
  ) + LEGEND_GROUP_GAP : 0;
182
+ const inlineRequested = parsed.options.legendInline === true;
183
+ const legendExtent = inlineRequested && legend ? getLegendExtent(
184
+ {
185
+ groups: legend.groups,
186
+ position: {
187
+ placement: "top-center",
188
+ titleRelation: "inline-with-title"
189
+ },
190
+ mode: exportMode ? "export" : "preview",
191
+ showInactivePills: !exportMode,
192
+ showEmptyGroups: !exportMode
193
+ },
194
+ { activeGroup: legend.activeGroup },
195
+ width
196
+ ) : { width: 0, height: 0 };
197
+ const header = layoutInlineHeader({
198
+ requested: inlineRequested,
199
+ title: parsed.title ?? "",
200
+ hasLegend: !!legend,
201
+ legendWidth: legendExtent.width,
202
+ legendHeight: legendExtent.height,
203
+ containerWidth: width,
204
+ titleBandHeight: titleH,
205
+ legendReserve,
206
+ titleBaselineY: TITLE_Y,
207
+ titleFontSize: TITLE_FONT_SIZE
208
+ });
178
209
  const headerH = opts.noHeaders ? 0 : HEADER_H;
179
210
  const areaX = PADDING;
180
- const areaY = titleH + legendReserve + PADDING;
211
+ const areaY = (header.inline ? titleH : titleH + legendReserve) + PADDING;
181
212
  const areaW = Math.max(1, width - PADDING * 2);
182
213
  const areaH = Math.max(1, height - areaY - PADDING);
183
214
  const layout = layoutTreemap(parsed.roots, {
@@ -192,7 +223,7 @@ function renderTreemap(container, parsed, palette, isDark, exportDims, options =
192
223
  );
193
224
  svg.append("rect").attr("width", width).attr("height", height).attr("fill", palette.bg);
194
225
  if (showTitle) {
195
- const title = svg.append("text").attr("class", "chart-title").attr("x", width / 2).attr("y", TITLE_Y).attr("text-anchor", "middle").attr("fill", palette.text).attr("font-family", FONT_FAMILY).attr("font-size", TITLE_FONT_SIZE).attr("font-weight", TITLE_FONT_WEIGHT).text(parsed.title);
226
+ const title = svg.append("text").attr("class", "chart-title").attr("x", header.titleX).attr("y", TITLE_Y).attr("text-anchor", header.titleAnchor).attr("fill", palette.text).attr("font-family", FONT_FAMILY).attr("font-size", TITLE_FONT_SIZE).attr("font-weight", TITLE_FONT_WEIGHT).text(parsed.title);
196
227
  if (parsed.titleLineNumber !== null) {
197
228
  title.attr("data-line-number", parsed.titleLineNumber);
198
229
  }
@@ -322,7 +353,10 @@ function renderTreemap(container, parsed, palette, isDark, exportDims, options =
322
353
  }
323
354
  }
324
355
  if (legend) {
325
- const legendG = svg.append("g").attr("class", "dgmo-treemap-legend").attr("transform", `translate(0, ${titleH})`);
356
+ const legendG = svg.append("g").attr("class", "dgmo-treemap-legend").attr(
357
+ "transform",
358
+ header.inline ? `translate(${header.legendX}, ${header.legendY})` : `translate(0, ${titleH})`
359
+ );
326
360
  renderIntegratedLegend(legendG, {
327
361
  groups: legend.groups,
328
362
  palette: {
@@ -335,7 +369,12 @@ function renderTreemap(container, parsed, palette, isDark, exportDims, options =
335
369
  isDark,
336
370
  width,
337
371
  mode: exportMode ? "export" : "preview",
338
- position: LEGEND_POSITION,
372
+ // Inline → left-origin so the wrapper's right-flush translate lands the
373
+ // legend at the chart's right edge; stacked → centered below the title.
374
+ position: {
375
+ placement: "top-center",
376
+ titleRelation: header.inline ? "inline-with-title" : "below-title"
377
+ },
339
378
  activeGroup: legend.activeGroup,
340
379
  // The color-mode switcher is the legend itself: each applicable mode is a
341
380
  // group pill; the active one is the open capsule, the rest are clickable
@@ -399,4 +438,4 @@ export {
399
438
  renderTreemapForExport,
400
439
  renderTreemap
401
440
  };
402
- //# sourceMappingURL=chunk-X3RXGSCZ.js.map
441
+ //# sourceMappingURL=chunk-VXTUWXFB.js.map
@@ -1,14 +1,14 @@
1
- import {
2
- mix,
3
- shapeFill
4
- } from "./chunk-JYDMBWRP.js";
5
1
  import {
6
2
  measureText,
7
3
  wrapTextToWidth
8
4
  } from "./chunk-4ASYQ347.js";
5
+ import {
6
+ mix,
7
+ shapeFill
8
+ } from "./chunk-JYDMBWRP.js";
9
9
  import {
10
10
  fillModeFromOptions
11
- } from "./chunk-YJVA3QUU.js";
11
+ } from "./chunk-A2ARDILY.js";
12
12
 
13
13
  // src/journey-map/layout.ts
14
14
  var PADDING = 24;
@@ -290,4 +290,4 @@ export {
290
290
  scoreToCurveY,
291
291
  layoutJourneyMap
292
292
  };
293
- //# sourceMappingURL=chunk-J7HI6G3G.js.map
293
+ //# sourceMappingURL=chunk-W4TSD3IP.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  NODE_HEIGHT,
3
3
  NODE_WIDTH
4
- } from "./chunk-KKHCNSKK.js";
4
+ } from "./chunk-IWG2ECAO.js";
5
5
 
6
6
  // src/boxes-and-lines/layout-grouped.ts
7
7
  var NODESEP = 50;
@@ -689,4 +689,4 @@ export {
689
689
  acyclicOrient,
690
690
  groupedTierCandidates
691
691
  };
692
- //# sourceMappingURL=chunk-FGDSTT3F.js.map
692
+ //# sourceMappingURL=chunk-WB3NA3JJ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isBlockNode
3
- } from "./chunk-NR5HCAUD.js";
3
+ } from "./chunk-XSVWUOUZ.js";
4
4
  import {
5
5
  AUTO_TAG_COLOR_SENTINEL,
6
6
  finalizeAutoTagColors,
@@ -9,13 +9,13 @@ import {
9
9
  tagAttrKey,
10
10
  validateTagGroupNames,
11
11
  validateTagValues
12
- } from "./chunk-CMVZWP32.js";
12
+ } from "./chunk-JR7Q6GHE.js";
13
13
  import {
14
14
  extractColor,
15
15
  fillModeFromToken,
16
16
  measureIndent,
17
17
  parseFirstLine
18
- } from "./chunk-YJVA3QUU.js";
18
+ } from "./chunk-A2ARDILY.js";
19
19
  import {
20
20
  formatDgmoError,
21
21
  makeDgmoError,
@@ -133,6 +133,10 @@ function parseBlock(content, palette) {
133
133
  options.noLegend = true;
134
134
  continue;
135
135
  }
136
+ if (/^legend-inline\s*$/i.test(trimmed)) {
137
+ options.legendInline = true;
138
+ continue;
139
+ }
136
140
  const fm = fillModeFromToken(trimmed);
137
141
  if (fm !== null) {
138
142
  if (fm === "tint") delete options.fillMode;
@@ -338,4 +342,4 @@ function parseBlockTail(tail, aliasMap) {
338
342
  export {
339
343
  parseBlock
340
344
  };
341
- //# sourceMappingURL=chunk-KUSAVOWZ.js.map
345
+ //# sourceMappingURL=chunk-WITOJZGL.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  resolveTagColor,
6
6
  tagAttrKey
7
- } from "./chunk-CMVZWP32.js";
7
+ } from "./chunk-JR7Q6GHE.js";
8
8
  import {
9
9
  resolveColor
10
10
  } from "./chunk-ZKPPI6BF.js";
@@ -176,4 +176,4 @@ export {
176
176
  formatPct,
177
177
  buildLegend
178
178
  };
179
- //# sourceMappingURL=chunk-UVDCHR4E.js.map
179
+ //# sourceMappingURL=chunk-WVGNXDEE.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  acyclicOrient
3
- } from "./chunk-FGDSTT3F.js";
3
+ } from "./chunk-WB3NA3JJ.js";
4
4
 
5
5
  // src/swimlane/layout.ts
6
6
  var MARGIN = 30;
@@ -419,4 +419,4 @@ function layoutSwimlane(parsed) {
419
419
  export {
420
420
  layoutSwimlane
421
421
  };
422
- //# sourceMappingURL=chunk-HOXKNRON.js.map
422
+ //# sourceMappingURL=chunk-X3X4LZDC.js.map