@diagrammo/dgmo 0.64.0 → 0.65.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 (138) hide show
  1. package/LICENSE +1 -1
  2. package/dist/advanced.js +71 -71
  3. package/dist/block.js +15 -15
  4. package/dist/chart-meta.js +3 -3
  5. package/dist/{charts-d3-ZTXJWEHI.js → charts-d3-I6OE5K3B.js} +9 -9
  6. package/dist/{chunk-C6DMG2V6.js → chunk-27YPE7NO.js} +28 -12
  7. package/dist/{chunk-RBAW7VUG.js → chunk-2EPV7CLY.js} +5 -7
  8. package/dist/{chunk-SCJ7CAJF.js → chunk-3HOCNSPD.js} +2 -2
  9. package/dist/{chunk-Z2ADWRSW.js → chunk-3PSPUYT5.js} +3 -3
  10. package/dist/{chunk-RBBJIHNL.js → chunk-4IE42ODL.js} +11 -11
  11. package/dist/{chunk-SMCUX42K.js → chunk-4TM7MWU4.js} +7 -6
  12. package/dist/{chunk-H3HFC3SQ.js → chunk-5GM6BZO7.js} +3 -3
  13. package/dist/{chunk-7T3A2UK3.js → chunk-5T7K6QND.js} +15 -16
  14. package/dist/{chunk-NKRCPBTJ.js → chunk-6BOPYGJC.js} +6 -6
  15. package/dist/{chunk-37EHGTQ2.js → chunk-6E5YZR4S.js} +18 -16
  16. package/dist/{chunk-MHI6W6XS.js → chunk-6IUL6LER.js} +10 -7
  17. package/dist/{chunk-S5RWWISJ.js → chunk-7L53J53J.js} +4 -4
  18. package/dist/{chunk-WDJ4HAGO.js → chunk-A6CTYC7O.js} +2 -2
  19. package/dist/{chunk-CDMF7P5A.js → chunk-BBCKUAUR.js} +2 -2
  20. package/dist/{chunk-AA4M6F2P.js → chunk-BBY57XAA.js} +3 -3
  21. package/dist/{chunk-NKRVFQGO.js → chunk-BDI25HWH.js} +18 -6
  22. package/dist/{chunk-SVR3YFM3.js → chunk-C666LP3O.js} +20 -15
  23. package/dist/{chunk-KRTO7NRK.js → chunk-D2WHS23S.js} +2 -2
  24. package/dist/{chunk-LYTEVE2N.js → chunk-DBF4IM4U.js} +20 -15
  25. package/dist/{chunk-PCWPYOT4.js → chunk-ET4R3AU5.js} +4 -4
  26. package/dist/{chunk-2KOBOIB2.js → chunk-FBD5ASMB.js} +2 -2
  27. package/dist/{chunk-ES66QH6J.js → chunk-FG24NXKN.js} +2 -2
  28. package/dist/{chunk-3CIOJ5YJ.js → chunk-FJ57274M.js} +3 -1
  29. package/dist/{chunk-6BVIZW5N.js → chunk-FLFBY5GN.js} +14 -12
  30. package/dist/{chunk-XUN3MIO3.js → chunk-G64OVYUT.js} +2 -2
  31. package/dist/{chunk-RQL25P3U.js → chunk-G7QZF6T3.js} +9 -9
  32. package/dist/{chunk-IGIJZHB6.js → chunk-GC7CBX6C.js} +6 -6
  33. package/dist/{chunk-B6AONGTI.js → chunk-GDQN2TPX.js} +21 -14
  34. package/dist/{chunk-CZUSH6NI.js → chunk-GMLSYNFP.js} +10 -9
  35. package/dist/{chunk-R6HCNSP6.js → chunk-GOW5VO6M.js} +2 -2
  36. package/dist/{chunk-SPHC4RYF.js → chunk-GXOMKWQ5.js} +10 -9
  37. package/dist/{chunk-MQHOKBJ6.js → chunk-IJ4FUFTR.js} +5 -5
  38. package/dist/{chunk-V3UQSKWJ.js → chunk-IJSFEU4J.js} +9 -9
  39. package/dist/{chunk-LSFZDBAP.js → chunk-IKHV5IJB.js} +2 -2
  40. package/dist/{chunk-LMXAB4YM.js → chunk-IZ6RWMBM.js} +9 -9
  41. package/dist/{chunk-6VJCURWU.js → chunk-J2EXBAPZ.js} +4 -5
  42. package/dist/{chunk-IX6N5MCY.js → chunk-JCL4K7AK.js} +12 -11
  43. package/dist/{chunk-OBKM6GIJ.js → chunk-JTUDM7S4.js} +10 -10
  44. package/dist/{chunk-CVVICCSB.js → chunk-L65WI4HO.js} +4 -4
  45. package/dist/{chunk-67D4MN2H.js → chunk-LK6LTSLH.js} +2 -2
  46. package/dist/{chunk-KOHIF4LD.js → chunk-MBODBL7C.js} +6 -5
  47. package/dist/chunk-MTGGOCND.js +638 -0
  48. package/dist/{chunk-VJARCVMH.js → chunk-MU3CJPJF.js} +2 -2
  49. package/dist/{chunk-RKTIIU7Z.js → chunk-N6XI5VTA.js} +4 -4
  50. package/dist/{chunk-ODUT5WMC.js → chunk-NVOU7N6C.js} +2 -2
  51. package/dist/{chunk-T4QXHE34.js → chunk-OWUWLZJT.js} +13 -11
  52. package/dist/{chunk-LDVUPGWC.js → chunk-OWVDD5EC.js} +2 -2
  53. package/dist/{chunk-M4HYPDER.js → chunk-P5OCINCI.js} +8 -8
  54. package/dist/{chunk-JU2VMFYC.js → chunk-PZOFMBF3.js} +2 -2
  55. package/dist/{chunk-YLK3JNWP.js → chunk-QNCXONBR.js} +2 -2
  56. package/dist/{chunk-DB2KQ5DN.js → chunk-QRWY5QTA.js} +5 -5
  57. package/dist/{chunk-I2ATN25N.js → chunk-R4XM44BW.js} +25 -16
  58. package/dist/{chunk-DJCZWQ2A.js → chunk-RTTZIX34.js} +4 -4
  59. package/dist/{chunk-OMTBYLKN.js → chunk-TPKNA2U5.js} +9 -7
  60. package/dist/{chunk-DN5HEDE4.js → chunk-TT5B36WO.js} +16 -20
  61. package/dist/{chunk-SF3JAWMY.js → chunk-TWILCDUE.js} +3 -3
  62. package/dist/{chunk-NIZM3LAG.js → chunk-UINRIO77.js} +10 -10
  63. package/dist/{chunk-5H2LIQIH.js → chunk-UJXCDF4E.js} +4 -4
  64. package/dist/{chunk-Z5ID35YP.js → chunk-UTCPNJND.js} +2 -4
  65. package/dist/{chunk-U42ZEK7L.js → chunk-V4BYBIBU.js} +24 -15
  66. package/dist/{chunk-L4IN4OBB.js → chunk-VLI5SYXW.js} +7 -7
  67. package/dist/{chunk-43E26CDA.js → chunk-VS2M72PF.js} +4 -4
  68. package/dist/{chunk-KZ3PCDUJ.js → chunk-VV6HZQ5K.js} +2 -2
  69. package/dist/{chunk-Z5BTSBWW.js → chunk-WF2HDQPG.js} +4 -4
  70. package/dist/{chunk-TAJ2XFTT.js → chunk-XKMCL2YJ.js} +19 -16
  71. package/dist/{chunk-7GUYGQR4.js → chunk-XVEPB2UU.js} +4 -4
  72. package/dist/{chunk-YHTKDIF2.js → chunk-YGFNITPC.js} +11 -11
  73. package/dist/{chunk-I24O2RWT.js → chunk-YJOOIOSR.js} +84 -14
  74. package/dist/{chunk-KPX2OWZR.js → chunk-YKWHUPBP.js} +13 -14
  75. package/dist/{chunk-FRC4LDTQ.js → chunk-YMYPFX4O.js} +36 -30
  76. package/dist/{chunk-VOJOARA6.js → chunk-ZZXPYVS4.js} +82 -77
  77. package/dist/{dgmo-router-QWRF7ZKM.js → dgmo-router-464FE256.js} +4 -4
  78. package/dist/{dimensions-ES6O2T4H.js → dimensions-ILAVBRQ3.js} +7 -7
  79. package/dist/{flowchart-renderer-EXMRHFTQ.js → flowchart-renderer-6JKM2FA4.js} +7 -7
  80. package/dist/index.js +15 -15
  81. package/dist/{layout-HBWT2G23.js → layout-4LNMXLVK.js} +3 -3
  82. package/dist/{layout-UU4VJTOP.js → layout-62ERBWCM.js} +3 -3
  83. package/dist/{layout-N6X46MWG.js → layout-6SKHNQYO.js} +4 -4
  84. package/dist/{layout-OH4VQ3OI.js → layout-7JULRP4Y.js} +4 -4
  85. package/dist/{layout-QTZO6CW5.js → layout-FA37VP7V.js} +4 -4
  86. package/dist/layout-IN53LAE6.js +9 -0
  87. package/dist/{layout-H4H4OFE4.js → layout-IO6ORC5T.js} +3 -3
  88. package/dist/{layout-54P3DAXY.js → layout-LVMWK4QY.js} +5 -5
  89. package/dist/{layout-WCOEZPOI.js → layout-MNOTDWXW.js} +4 -4
  90. package/dist/{layout-2T2VCCTM.js → layout-RD7GDM4I.js} +5 -5
  91. package/dist/{layout-SKQMIXTG.js → layout-SBQTN2YM.js} +4 -4
  92. package/dist/{layout-5E2NQZNM.js → layout-SGYR6HBX.js} +3 -3
  93. package/dist/{layout-W3ZBJOIK.js → layout-WIMQIHBU.js} +5 -5
  94. package/dist/{layout-search-AJ6VUVUI.js → layout-search-C44CJQOB.js} +5 -5
  95. package/dist/{legend-constants-QQU3QYBF.js → legend-constants-RGINV5SF.js} +3 -3
  96. package/dist/{parser-KSIYWKYF.js → parser-CSKF2KNO.js} +8 -4
  97. package/dist/{parser-2BGDJJ2L.js → parser-WLL63XH7.js} +2 -2
  98. package/dist/{renderer-XLEYPLVL.js → renderer-2UIQVKXK.js} +8 -8
  99. package/dist/{renderer-KOWVTTYR.js → renderer-3GG2DEFQ.js} +7 -7
  100. package/dist/{renderer-XLPNUOYA.js → renderer-6NDYVZXQ.js} +10 -10
  101. package/dist/{renderer-2ARNFXSC.js → renderer-6ST44AVP.js} +10 -10
  102. package/dist/{renderer-YLM4CGBG.js → renderer-ALP46W2X.js} +8 -8
  103. package/dist/{renderer-NHFRVCDC.js → renderer-AOFIEF2T.js} +9 -9
  104. package/dist/{renderer-HLWEJQJW.js → renderer-BEVY3UP5.js} +5 -5
  105. package/dist/{renderer-H6AQ4UIR.js → renderer-BXPWSNTJ.js} +13 -13
  106. package/dist/{renderer-BYWLJDT4.js → renderer-EWTETTII.js} +8 -8
  107. package/dist/{renderer-KK2534AF.js → renderer-FHXAWDNI.js} +4 -4
  108. package/dist/{renderer-OB77AT7V.js → renderer-FI4IKF4I.js} +7 -7
  109. package/dist/{renderer-DMVUBKP7.js → renderer-GHYH6DLG.js} +4 -4
  110. package/dist/{renderer-LSBXYOID.js → renderer-GYYJ4APT.js} +10 -10
  111. package/dist/{renderer-M43ROWET.js → renderer-JFOHE3YB.js} +9 -9
  112. package/dist/{renderer-OA7FSZ4A.js → renderer-L5QGQTLV.js} +3 -3
  113. package/dist/{renderer-7OOC2ZO2.js → renderer-L7S6YVM6.js} +4 -4
  114. package/dist/{renderer-YELZR4QT.js → renderer-LCHVBTV4.js} +12 -12
  115. package/dist/{renderer-IN3UPTZS.js → renderer-M4DAYNWC.js} +3 -3
  116. package/dist/{renderer-WN47AMUM.js → renderer-NXIK3LOA.js} +8 -8
  117. package/dist/{renderer-QR5343AR.js → renderer-OWUXQDHM.js} +3 -3
  118. package/dist/{renderer-FCO42JLK.js → renderer-PJNJOCLB.js} +8 -8
  119. package/dist/{renderer-OYTERGAO.js → renderer-QQBUBD66.js} +9 -9
  120. package/dist/{renderer-PM7JPC3J.js → renderer-REFE3YFH.js} +11 -11
  121. package/dist/{renderer-C6KOE774.js → renderer-RL2JGVPC.js} +10 -10
  122. package/dist/{renderer-ZNTLBQ45.js → renderer-RVFPPKWN.js} +9 -9
  123. package/dist/{renderer-QEHUJHRK.js → renderer-SFQHFPC5.js} +10 -10
  124. package/dist/{renderer-LO4FXQHP.js → renderer-T4CMBGA5.js} +8 -8
  125. package/dist/{renderer-M3PQKXK2.js → renderer-TJD6A3AK.js} +13 -13
  126. package/dist/{renderer-2E7LQC32.js → renderer-URPIVAPI.js} +3 -3
  127. package/dist/{renderer-T5CUGSXP.js → renderer-WENGQEX6.js} +7 -7
  128. package/dist/{renderer-WR3FA3FF.js → renderer-WR6J7NKH.js} +8 -8
  129. package/dist/{renderer-YBEZ5V2H.js → renderer-X3V2G4UL.js} +3 -3
  130. package/dist/{renderer-KPEQ72FY.js → renderer-YAW4VHAI.js} +11 -11
  131. package/dist/{renderer-radial-XWAKJACV.js → renderer-radial-HOUGPUPW.js} +7 -7
  132. package/dist/{state-renderer-LIESKSBO.js → state-renderer-JJSQJZEL.js} +11 -11
  133. package/docs/ai-integration.md +1 -1
  134. package/docs/language-reference.md +5 -0
  135. package/gallery/fixtures/er.dgmo +1 -1
  136. package/package.json +5 -3
  137. package/dist/chunk-4ASYQ347.js +0 -185
  138. package/dist/layout-5XGYNYVT.js +0 -9
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  layoutInlineHeader
3
- } from "./chunk-6VJCURWU.js";
3
+ } from "./chunk-J2EXBAPZ.js";
4
4
  import {
5
5
  TITLE_FONT_SIZE,
6
6
  TITLE_FONT_WEIGHT,
@@ -8,20 +8,20 @@ import {
8
8
  } from "./chunk-A4GOY3PE.js";
9
9
  import {
10
10
  renderIntegratedLegend
11
- } from "./chunk-RBAW7VUG.js";
11
+ } from "./chunk-2EPV7CLY.js";
12
12
  import {
13
13
  getLegendExtent,
14
14
  getMaxLegendReservedHeight
15
- } from "./chunk-ES66QH6J.js";
15
+ } from "./chunk-FG24NXKN.js";
16
16
  import {
17
17
  FONT_FAMILY
18
- } from "./chunk-Z5ID35YP.js";
18
+ } from "./chunk-UTCPNJND.js";
19
19
  import {
20
20
  LEGEND_GROUP_GAP
21
- } from "./chunk-SCJ7CAJF.js";
21
+ } from "./chunk-3HOCNSPD.js";
22
22
  import {
23
23
  measureText
24
- } from "./chunk-4ASYQ347.js";
24
+ } from "./chunk-MTGGOCND.js";
25
25
  import {
26
26
  isBlockNode
27
27
  } from "./chunk-XSVWUOUZ.js";
@@ -287,12 +287,13 @@ function colorOf(node, ctx) {
287
287
  return resolveTagColor(node.metadata, ctx.tagGroups, ctx.activeGroup) ?? null;
288
288
  }
289
289
  function clipLabel(s, maxWidth, fs) {
290
- if (measureText(s, fs) <= maxWidth) return s;
290
+ if (measureText(s, fs, { bold: true }) <= maxWidth) return s;
291
291
  let lo = 0;
292
292
  let hi = s.length;
293
293
  while (lo < hi) {
294
294
  const mid = Math.ceil((lo + hi) / 2);
295
- if (measureText(s.slice(0, mid) + "\u2026", fs) <= maxWidth) lo = mid;
295
+ if (measureText(s.slice(0, mid) + "\u2026", fs, { bold: true }) <= maxWidth)
296
+ lo = mid;
296
297
  else hi = mid - 1;
297
298
  }
298
299
  return lo <= 0 ? "" : s.slice(0, lo) + "\u2026";
@@ -396,4 +397,4 @@ export {
396
397
  renderBlock,
397
398
  authoredCollapsedIds
398
399
  };
399
- //# sourceMappingURL=chunk-CZUSH6NI.js.map
400
+ //# sourceMappingURL=chunk-GMLSYNFP.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  measureText
3
- } from "./chunk-4ASYQ347.js";
3
+ } from "./chunk-MTGGOCND.js";
4
4
  import {
5
5
  formatDuration,
6
6
  formatScheduleValue,
@@ -603,4 +603,4 @@ export {
603
603
  layoutPert,
604
604
  relayoutPert
605
605
  };
606
- //# sourceMappingURL=chunk-R6HCNSP6.js.map
606
+ //# sourceMappingURL=chunk-GOW5VO6M.js.map
@@ -9,19 +9,19 @@ import {
9
9
  } from "./chunk-3A7KMF33.js";
10
10
  import {
11
11
  renderIntegratedLegend
12
- } from "./chunk-RBAW7VUG.js";
12
+ } from "./chunk-2EPV7CLY.js";
13
13
  import {
14
14
  getMaxLegendReservedHeight
15
- } from "./chunk-ES66QH6J.js";
15
+ } from "./chunk-FG24NXKN.js";
16
16
  import {
17
17
  FONT_FAMILY
18
- } from "./chunk-Z5ID35YP.js";
18
+ } from "./chunk-UTCPNJND.js";
19
19
  import {
20
20
  LEGEND_GROUP_GAP
21
- } from "./chunk-SCJ7CAJF.js";
21
+ } from "./chunk-3HOCNSPD.js";
22
22
  import {
23
23
  measureText
24
- } from "./chunk-4ASYQ347.js";
24
+ } from "./chunk-MTGGOCND.js";
25
25
  import {
26
26
  tagAttrKey
27
27
  } from "./chunk-MDI5FMWO.js";
@@ -362,7 +362,7 @@ function isBottomHalf(cell) {
362
362
  return mid > Math.PI / 2 && mid < 3 * Math.PI / 2;
363
363
  }
364
364
  function fitFs(text, maxFs, availLen) {
365
- const w = measureText(text, maxFs);
365
+ const w = measureText(text, maxFs, { bold: true });
366
366
  if (w <= availLen) return maxFs;
367
367
  return Math.max(MIN_LABEL_FS, Math.floor(maxFs * availLen / w));
368
368
  }
@@ -406,12 +406,13 @@ function clampFs(base, thickness) {
406
406
  return Math.max(8, Math.min(base, Math.round(thickness * 0.9)));
407
407
  }
408
408
  function clip(s, maxWidth, fs) {
409
- if (measureText(s, fs) <= maxWidth) return s;
409
+ if (measureText(s, fs, { bold: true }) <= maxWidth) return s;
410
410
  let lo = 0;
411
411
  let hi = s.length;
412
412
  while (lo < hi) {
413
413
  const mid = Math.ceil((lo + hi) / 2);
414
- if (measureText(s.slice(0, mid) + "\u2026", fs) <= maxWidth) lo = mid;
414
+ if (measureText(s.slice(0, mid) + "\u2026", fs, { bold: true }) <= maxWidth)
415
+ lo = mid;
415
416
  else hi = mid - 1;
416
417
  }
417
418
  return lo <= 0 ? "" : s.slice(0, lo) + "\u2026";
@@ -422,4 +423,4 @@ export {
422
423
  renderTreemapRadialForExport,
423
424
  renderTreemapRadial
424
425
  };
425
- //# sourceMappingURL=chunk-SPHC4RYF.js.map
426
+ //# sourceMappingURL=chunk-GXOMKWQ5.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  MONO_FAMILY
3
- } from "./chunk-S5RWWISJ.js";
3
+ } from "./chunk-7L53J53J.js";
4
4
  import {
5
5
  FONT_FAMILY
6
- } from "./chunk-Z5ID35YP.js";
6
+ } from "./chunk-UTCPNJND.js";
7
7
  import {
8
8
  truncateText
9
- } from "./chunk-4ASYQ347.js";
9
+ } from "./chunk-MTGGOCND.js";
10
10
 
11
11
  // src/live-link/renderer.ts
12
12
  var W = 560;
@@ -25,7 +25,7 @@ function renderLiveLinkCard(parsed, palette, theme) {
25
25
  const headline = parsed.title ?? parsed.id ?? "Unresolved live link";
26
26
  const headlineMono = parsed.title === null && parsed.id !== null;
27
27
  parts.push(
28
- `<text x="${CONTENT_X}" y="${y}" fill="${palette.text}" font-family="${headlineMono ? MONO_FAMILY : FONT_FAMILY}" font-size="${HEADLINE_FS}" font-weight="${headlineMono ? 500 : 700}">${escapeXml(truncateText(headline, HEADLINE_FS, CONTENT_W))}</text>`
28
+ `<text x="${CONTENT_X}" y="${y}" fill="${palette.text}" font-family="${headlineMono ? MONO_FAMILY : FONT_FAMILY}" font-size="${HEADLINE_FS}" font-weight="${headlineMono ? 500 : 700}">${escapeXml(truncateText(headline, HEADLINE_FS, CONTENT_W, { bold: !headlineMono }))}</text>`
29
29
  );
30
30
  y += 30;
31
31
  parts.push(
@@ -62,4 +62,4 @@ function escapeXml(s) {
62
62
  export {
63
63
  renderLiveLinkCard
64
64
  };
65
- //# sourceMappingURL=chunk-MQHOKBJ6.js.map
65
+ //# sourceMappingURL=chunk-IJ4FUFTR.js.map
@@ -11,10 +11,10 @@ import {
11
11
  META_LINE_HEIGHT,
12
12
  NODE_STROKE_WIDTH,
13
13
  SEPARATOR_GAP
14
- } from "./chunk-3CIOJ5YJ.js";
14
+ } from "./chunk-FJ57274M.js";
15
15
  import {
16
16
  layoutInlineHeader
17
- } from "./chunk-6VJCURWU.js";
17
+ } from "./chunk-J2EXBAPZ.js";
18
18
  import {
19
19
  TITLE_FONT_SIZE,
20
20
  TITLE_FONT_WEIGHT,
@@ -22,20 +22,20 @@ import {
22
22
  } from "./chunk-A4GOY3PE.js";
23
23
  import {
24
24
  renderIntegratedLegend
25
- } from "./chunk-RBAW7VUG.js";
25
+ } from "./chunk-2EPV7CLY.js";
26
26
  import {
27
27
  getLegendExtent,
28
28
  getMaxLegendReservedHeight
29
- } from "./chunk-ES66QH6J.js";
29
+ } from "./chunk-FG24NXKN.js";
30
30
  import {
31
31
  FONT_FAMILY
32
- } from "./chunk-Z5ID35YP.js";
32
+ } from "./chunk-UTCPNJND.js";
33
33
  import {
34
34
  LEGEND_GROUP_GAP
35
- } from "./chunk-SCJ7CAJF.js";
35
+ } from "./chunk-3HOCNSPD.js";
36
36
  import {
37
37
  measureText
38
- } from "./chunk-4ASYQ347.js";
38
+ } from "./chunk-MTGGOCND.js";
39
39
  import {
40
40
  EMPHASIS_DIM_OPACITY
41
41
  } from "./chunk-2CW5ZTNH.js";
@@ -260,7 +260,7 @@ function renderFamilyForExport(container, parsed, layout, palette, isDark, opts
260
260
  if (v) g.attr(`data-tag-${key}`, v.toLowerCase());
261
261
  }
262
262
  g.append("rect").attr("x", 0).attr("y", 0).attr("width", node.width).attr("height", node.height).attr("rx", CARD_RADIUS).attr("fill", fill).attr("stroke", stroke).attr("stroke-width", NODE_STROKE_WIDTH);
263
- g.append("text").attr("x", node.width / 2).attr("y", HEADER_HEIGHT / 2 + LABEL_FONT_SIZE / 2 - 2).attr("text-anchor", "middle").attr("fill", labelColor).attr("font-size", LABEL_FONT_SIZE).attr("font-weight", "bold").text(noDaggers ? node.label : familyDisplayLabel(node));
263
+ g.append("text").attr("x", node.width / 2).attr("y", HEADER_HEIGHT / 2).attr("dominant-baseline", "central").attr("text-anchor", "middle").attr("fill", labelColor).attr("font-size", LABEL_FONT_SIZE).attr("font-weight", "bold").text(noDaggers ? node.label : familyDisplayLabel(node));
264
264
  if (isPh) continue;
265
265
  const fx = node.width - 13;
266
266
  const fy = 9;
@@ -317,4 +317,4 @@ export {
317
317
  renderFamilyForExport,
318
318
  renderFamily
319
319
  };
320
- //# sourceMappingURL=chunk-V3UQSKWJ.js.map
320
+ //# sourceMappingURL=chunk-IJSFEU4J.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-6EK55ART.js";
5
5
  import {
6
6
  noteBoxSize
7
- } from "./chunk-VJARCVMH.js";
7
+ } from "./chunk-MU3CJPJF.js";
8
8
  import {
9
9
  resolveNotes
10
10
  } from "./chunk-7NK42OIB.js";
@@ -311,4 +311,4 @@ function layoutGraph(graph, options) {
311
311
  export {
312
312
  layoutGraph
313
313
  };
314
- //# sourceMappingURL=chunk-LSFZDBAP.js.map
314
+ //# sourceMappingURL=chunk-IKHV5IJB.js.map
@@ -4,7 +4,7 @@ import {
4
4
  layoutC4Containers,
5
5
  layoutC4Context,
6
6
  layoutC4Deployment
7
- } from "./chunk-SF3JAWMY.js";
7
+ } from "./chunk-TWILCDUE.js";
8
8
  import {
9
9
  renderInlineText
10
10
  } from "./chunk-WGC42WJU.js";
@@ -14,7 +14,7 @@ import {
14
14
  META_FONT_SIZE,
15
15
  META_LINE_HEIGHT,
16
16
  NODE_STROKE_WIDTH
17
- } from "./chunk-3CIOJ5YJ.js";
17
+ } from "./chunk-FJ57274M.js";
18
18
  import {
19
19
  serializeSvg
20
20
  } from "./chunk-RU2HHHYA.js";
@@ -24,17 +24,17 @@ import {
24
24
  } from "./chunk-A4GOY3PE.js";
25
25
  import {
26
26
  renderIntegratedLegend
27
- } from "./chunk-RBAW7VUG.js";
27
+ } from "./chunk-2EPV7CLY.js";
28
28
  import {
29
29
  FONT_FAMILY
30
- } from "./chunk-Z5ID35YP.js";
30
+ } from "./chunk-UTCPNJND.js";
31
31
  import {
32
32
  LEGEND_HEIGHT
33
- } from "./chunk-SCJ7CAJF.js";
33
+ } from "./chunk-3HOCNSPD.js";
34
34
  import {
35
35
  measureText,
36
36
  wrapTextToWidth
37
- } from "./chunk-4ASYQ347.js";
37
+ } from "./chunk-MTGGOCND.js";
38
38
  import {
39
39
  parseC4
40
40
  } from "./chunk-IL5UVUMK.js";
@@ -247,7 +247,7 @@ function renderC4Context(container, parsed, layout, palette, isDark, onClickItem
247
247
  nodeG.append("text").attr("x", 0).attr("y", yPos + TYPE_FONT_SIZE / 2).attr("text-anchor", "middle").attr("dominant-baseline", "central").attr("fill", onFillText).attr("font-size", TYPE_FONT_SIZE).attr("font-style", "italic").text(typeLabel);
248
248
  yPos += TYPE_LABEL_HEIGHT;
249
249
  if (node.type === "person") {
250
- const textWidth = measureText(node.name, NAME_FONT_SIZE);
250
+ const textWidth = measureText(node.name, NAME_FONT_SIZE, { bold: true });
251
251
  const gap = 6;
252
252
  const totalWidth = PERSON_ICON_W + gap + textWidth;
253
253
  const iconCx = -totalWidth / 2 + PERSON_ICON_W / 2;
@@ -827,7 +827,7 @@ function renderC4Containers(container, parsed, layout, palette, isDark, onClickI
827
827
  yPos += TYPE_LABEL_HEIGHT;
828
828
  }
829
829
  if (node.type === "person") {
830
- const textWidth = measureText(node.name, NAME_FONT_SIZE);
830
+ const textWidth = measureText(node.name, NAME_FONT_SIZE, { bold: true });
831
831
  const gap = 6;
832
832
  const totalWidth = PERSON_ICON_W + gap + textWidth;
833
833
  const iconCx = -totalWidth / 2 + PERSON_ICON_W / 2;
@@ -1039,4 +1039,4 @@ export {
1039
1039
  renderC4Deployment,
1040
1040
  renderC4DeploymentForExport
1041
1041
  };
1042
- //# sourceMappingURL=chunk-LMXAB4YM.js.map
1042
+ //# sourceMappingURL=chunk-IZ6RWMBM.js.map
@@ -4,10 +4,10 @@ import {
4
4
  } from "./chunk-A4GOY3PE.js";
5
5
  import {
6
6
  LEGEND_HEIGHT
7
- } from "./chunk-SCJ7CAJF.js";
7
+ } from "./chunk-3HOCNSPD.js";
8
8
  import {
9
9
  measureText
10
- } from "./chunk-4ASYQ347.js";
10
+ } from "./chunk-MTGGOCND.js";
11
11
 
12
12
  // src/utils/inline-header.ts
13
13
  var LEGEND_INLINE_SUPPORTED = /* @__PURE__ */ new Set([
@@ -42,10 +42,9 @@ function legendInlineSupported(type) {
42
42
  }
43
43
  var INLINE_HEADER_PAD = 8;
44
44
  var INLINE_HEADER_GAP = 16;
45
- var BOLD_WIDTH_FACTOR = 1.06;
46
45
  var MIN_INLINE_LEGEND_W = 48;
47
46
  function measureTitleWidth(title, fontSize = TITLE_FONT_SIZE) {
48
- return measureText(title, fontSize) * BOLD_WIDTH_FACTOR;
47
+ return measureText(title, fontSize, { bold: true });
49
48
  }
50
49
  function layoutInlineHeader(input) {
51
50
  const pad = input.pad ?? INLINE_HEADER_PAD;
@@ -84,4 +83,4 @@ export {
84
83
  INLINE_HEADER_PAD,
85
84
  layoutInlineHeader
86
85
  };
87
- //# sourceMappingURL=chunk-6VJCURWU.js.map
86
+ //# sourceMappingURL=chunk-J2EXBAPZ.js.map
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-3A7KMF33.js";
10
10
  import {
11
11
  layoutInlineHeader
12
- } from "./chunk-6VJCURWU.js";
12
+ } from "./chunk-J2EXBAPZ.js";
13
13
  import {
14
14
  TITLE_FONT_SIZE,
15
15
  TITLE_FONT_WEIGHT,
@@ -17,20 +17,20 @@ import {
17
17
  } from "./chunk-A4GOY3PE.js";
18
18
  import {
19
19
  renderIntegratedLegend
20
- } from "./chunk-RBAW7VUG.js";
20
+ } from "./chunk-2EPV7CLY.js";
21
21
  import {
22
22
  getLegendExtent,
23
23
  getMaxLegendReservedHeight
24
- } from "./chunk-ES66QH6J.js";
24
+ } from "./chunk-FG24NXKN.js";
25
25
  import {
26
26
  FONT_FAMILY
27
- } from "./chunk-Z5ID35YP.js";
27
+ } from "./chunk-UTCPNJND.js";
28
28
  import {
29
29
  LEGEND_GROUP_GAP
30
- } from "./chunk-SCJ7CAJF.js";
30
+ } from "./chunk-3HOCNSPD.js";
31
31
  import {
32
32
  measureText
33
- } from "./chunk-4ASYQ347.js";
33
+ } from "./chunk-MTGGOCND.js";
34
34
  import {
35
35
  tagAttrKey
36
36
  } from "./chunk-MDI5FMWO.js";
@@ -323,7 +323,7 @@ function renderTreemap(container, parsed, palette, isDark, exportDims, options =
323
323
  } else if (fitsW) {
324
324
  const ivfs = clamp(Math.round(fs * 0.5), 11, Math.max(11, vfs));
325
325
  const rendered = clipLabel(cell.label, maxW, fs);
326
- const nW = measureText(rendered, fs) * 1.12;
326
+ const nW = measureText(rendered, fs, { bold: true });
327
327
  const gap = Math.max(12, Math.round(fs * 0.25));
328
328
  if (PAD + nW + gap + measureText(combined, ivfs) <= w - PAD) {
329
329
  g.append("text").attr("class", "dgmo-treemap-value").attr("x", PAD + nW + gap).attr("y", nameBaseY).attr("font-size", ivfs).attr("fill", ink).attr("opacity", valOpacity).text(combined);
@@ -405,7 +405,7 @@ function drawVerticalLabel(g, label, w, h, pad, ink) {
405
405
  const availLen = h - 2 * pad;
406
406
  const availThick = w - 2 * pad;
407
407
  let fs = clamp(Math.round(Math.min(availThick / 0.8, 14)), MIN_FS, 22);
408
- const nameW = measureText(label, fs) * 1.06;
408
+ const nameW = measureText(label, fs, { bold: true });
409
409
  if (nameW > availLen)
410
410
  fs = Math.max(MIN_FS, Math.floor(fs * availLen / nameW));
411
411
  const text = clipLabel(label, availLen, fs);
@@ -422,12 +422,13 @@ function clamp(x, lo, hi) {
422
422
  return Math.max(lo, Math.min(hi, x));
423
423
  }
424
424
  function clipLabel(s, maxWidth, fs) {
425
- if (measureText(s, fs) <= maxWidth) return s;
425
+ if (measureText(s, fs, { bold: true }) <= maxWidth) return s;
426
426
  let lo = 0;
427
427
  let hi = s.length;
428
428
  while (lo < hi) {
429
429
  const mid = Math.ceil((lo + hi) / 2);
430
- if (measureText(s.slice(0, mid) + "\u2026", fs) <= maxWidth) lo = mid;
430
+ if (measureText(s.slice(0, mid) + "\u2026", fs, { bold: true }) <= maxWidth)
431
+ lo = mid;
431
432
  else hi = mid - 1;
432
433
  }
433
434
  return lo <= 0 ? "" : s.slice(0, lo) + "\u2026";
@@ -438,4 +439,4 @@ export {
438
439
  renderTreemapForExport,
439
440
  renderTreemap
440
441
  };
441
- //# sourceMappingURL=chunk-IX6N5MCY.js.map
442
+ //# sourceMappingURL=chunk-JCL4K7AK.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  layoutERDiagram
3
- } from "./chunk-5H2LIQIH.js";
3
+ } from "./chunk-UJXCDF4E.js";
4
4
  import {
5
5
  NOTE_BADGE_RADIUS,
6
6
  noteConnectorPoints,
@@ -11,13 +11,13 @@ import {
11
11
  import {
12
12
  EDGE_STROKE_WIDTH,
13
13
  NODE_STROKE_WIDTH
14
- } from "./chunk-3CIOJ5YJ.js";
14
+ } from "./chunk-FJ57274M.js";
15
15
  import {
16
16
  ScaleContext
17
17
  } from "./chunk-YYVTBZZC.js";
18
18
  import {
19
19
  layoutInlineHeader
20
- } from "./chunk-6VJCURWU.js";
20
+ } from "./chunk-J2EXBAPZ.js";
21
21
  import {
22
22
  serializeSvg
23
23
  } from "./chunk-RU2HHHYA.js";
@@ -28,22 +28,22 @@ import {
28
28
  } from "./chunk-A4GOY3PE.js";
29
29
  import {
30
30
  renderIntegratedLegend
31
- } from "./chunk-RBAW7VUG.js";
31
+ } from "./chunk-2EPV7CLY.js";
32
32
  import {
33
33
  getLegendExtent
34
- } from "./chunk-ES66QH6J.js";
34
+ } from "./chunk-FG24NXKN.js";
35
35
  import {
36
36
  FONT_FAMILY
37
- } from "./chunk-Z5ID35YP.js";
37
+ } from "./chunk-UTCPNJND.js";
38
38
  import {
39
39
  LEGEND_HEIGHT
40
- } from "./chunk-SCJ7CAJF.js";
40
+ } from "./chunk-3HOCNSPD.js";
41
41
  import {
42
42
  measureText
43
- } from "./chunk-4ASYQ347.js";
43
+ } from "./chunk-MTGGOCND.js";
44
44
  import {
45
45
  parseERDiagram
46
- } from "./chunk-NKRVFQGO.js";
46
+ } from "./chunk-BDI25HWH.js";
47
47
  import {
48
48
  resolveTagColor,
49
49
  tagAttrKey
@@ -603,4 +603,4 @@ export {
603
603
  renderERDiagram,
604
604
  renderERDiagramForExport
605
605
  };
606
- //# sourceMappingURL=chunk-OBKM6GIJ.js.map
606
+ //# sourceMappingURL=chunk-JTUDM7S4.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  measureText
3
- } from "./chunk-4ASYQ347.js";
3
+ } from "./chunk-MTGGOCND.js";
4
4
 
5
5
  // src/label-layout.ts
6
6
  function rectsOverlap(a, b) {
@@ -76,7 +76,7 @@ function createLabelPlacement(init) {
76
76
  }
77
77
  };
78
78
  }
79
- function computeQuadrantPointLabels(points, chartBounds, obstacles, pointRadius, fontSize) {
79
+ function computeQuadrantPointLabels(points, chartBounds, obstacles, pointRadius, fontSize, bold = false) {
80
80
  const labelHeight = fontSize + 4;
81
81
  const stepSize = labelHeight + 2;
82
82
  const pointCircles = points.map((p) => ({
@@ -89,7 +89,7 @@ function computeQuadrantPointLabels(points, chartBounds, obstacles, pointRadius,
89
89
  for (let i = 0; i < points.length; i++) {
90
90
  const pt = points[i];
91
91
  const minGap = (pt.r ?? pointRadius) + 4;
92
- const labelWidth = measureText(pt.label, fontSize) + 8;
92
+ const labelWidth = measureText(pt.label, fontSize, { bold }) + 8;
93
93
  let best = null;
94
94
  const directions = [
95
95
  {
@@ -243,4 +243,4 @@ export {
243
243
  createLabelPlacement,
244
244
  computeQuadrantPointLabels
245
245
  };
246
- //# sourceMappingURL=chunk-CVVICCSB.js.map
246
+ //# sourceMappingURL=chunk-L65WI4HO.js.map
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-A4GOY3PE.js";
9
9
  import {
10
10
  FONT_FAMILY
11
- } from "./chunk-Z5ID35YP.js";
11
+ } from "./chunk-UTCPNJND.js";
12
12
  import {
13
13
  getSeriesColors
14
14
  } from "./chunk-42IT4BG2.js";
@@ -130,4 +130,4 @@ export {
130
130
  createExportContainer,
131
131
  finalizeSvgExport
132
132
  };
133
- //# sourceMappingURL=chunk-67D4MN2H.js.map
133
+ //# sourceMappingURL=chunk-LK6LTSLH.js.map
@@ -11,10 +11,10 @@ import {
11
11
  LEGEND_PILL_FONT_SIZE,
12
12
  LEGEND_PILL_PAD,
13
13
  measureLegendText
14
- } from "./chunk-SCJ7CAJF.js";
14
+ } from "./chunk-3HOCNSPD.js";
15
15
  import {
16
16
  measureText
17
- } from "./chunk-4ASYQ347.js";
17
+ } from "./chunk-MTGGOCND.js";
18
18
  import {
19
19
  injectDefaultTagMetadata,
20
20
  resolveTagColor,
@@ -60,7 +60,7 @@ function filterMetadata(metadata, hiddenAttributes) {
60
60
  return filtered;
61
61
  }
62
62
  function computeCardWidth(label, meta, descLines) {
63
- let maxContentWidth = measureText(label, LABEL_FONT_SIZE);
63
+ let maxContentWidth = measureText(label, LABEL_FONT_SIZE, { bold: true });
64
64
  for (const [key, value] of Object.entries(meta)) {
65
65
  const lineWidth = measureText(`${key}: ${value}`, META_FONT_SIZE);
66
66
  if (lineWidth > maxContentWidth) maxContentWidth = lineWidth;
@@ -132,7 +132,8 @@ function flattenNodes(nodes, parentContainerId, parentPageId, hiddenCounts, hidd
132
132
  fullMeta: { ...node.metadata },
133
133
  width: Math.max(
134
134
  MIN_CARD_WIDTH,
135
- measureText(node.label, CONTAINER_LABEL_FONT_SIZE) + CARD_H_PAD * 2
135
+ // The renderer draws the container name bold.
136
+ measureText(node.label, CONTAINER_LABEL_FONT_SIZE, { bold: true }) + CARD_H_PAD * 2
136
137
  ),
137
138
  height: labelHeight + CONTAINER_PAD_BOTTOM
138
139
  });
@@ -617,4 +618,4 @@ function layoutSitemap(parsed, hiddenCounts, activeTagGroup, hiddenAttributes, e
617
618
  export {
618
619
  layoutSitemap
619
620
  };
620
- //# sourceMappingURL=chunk-KOHIF4LD.js.map
621
+ //# sourceMappingURL=chunk-MBODBL7C.js.map