@diagrammo/dgmo 0.74.0 → 0.76.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 (100) hide show
  1. package/dist/advanced.d.ts +51 -50
  2. package/dist/advanced.js +211 -49
  3. package/dist/{analyzer-FHRJUIMW.js → analyzer-QTDQEMS5.js} +4 -6
  4. package/dist/block.css +20 -3
  5. package/dist/block.d.ts +10 -2
  6. package/dist/block.js +34 -17
  7. package/dist/chart-meta.js +6 -6
  8. package/dist/{charts-d3-LWHTOVX7.js → charts-d3-SQEVMIAM.js} +5 -5
  9. package/dist/{chunk-TC63QU4M.js → chunk-32MOGTKT.js} +31 -196
  10. package/dist/{chunk-LYLRNAX2.js → chunk-3EGIU5WY.js} +2 -2
  11. package/dist/{chunk-CMQJP5L4.js → chunk-3LJNQ6LR.js} +4 -4
  12. package/dist/{chunk-GJQQCI63.js → chunk-3SQJZMPO.js} +1 -127
  13. package/dist/{chunk-2NRIGEHZ.js → chunk-46KVXDUJ.js} +10 -3
  14. package/dist/{chunk-YXY6V2YN.js → chunk-4CRLM3IT.js} +56 -52
  15. package/dist/{chunk-BBH5IAAR.js → chunk-76IBFEYW.js} +3 -3
  16. package/dist/{chunk-YJ5G2WRU.js → chunk-7EZ5AKBK.js} +3 -3
  17. package/dist/{chunk-5NAOTRLN.js → chunk-7G4XMHDB.js} +3 -3
  18. package/dist/chunk-7IATMZSA.js +72 -0
  19. package/dist/{chunk-LSHMDQZQ.js → chunk-AFR6GWXD.js} +3 -3
  20. package/dist/{chunk-T6BO4VO6.js → chunk-AYM472K3.js} +2 -2
  21. package/dist/{chunk-YSMI6TNZ.js → chunk-BCB24FG7.js} +2 -2
  22. package/dist/{chunk-6DYZ2JM6.js → chunk-BZQCAZZZ.js} +203 -29
  23. package/dist/{chunk-KR432TCU.js → chunk-C576CU77.js} +4 -4
  24. package/dist/{chunk-5KE6KHY6.js → chunk-CAPR5DET.js} +2 -2
  25. package/dist/{chunk-GQJ35I2I.js → chunk-CLQJAGWL.js} +7 -5
  26. package/dist/{chunk-NW3VXCXR.js → chunk-COCMMQXW.js} +2 -2
  27. package/dist/{chunk-A4GOY3PE.js → chunk-DEW62ON3.js} +1 -3
  28. package/dist/{chunk-SXZS56YM.js → chunk-EGXJWRO6.js} +3 -3
  29. package/dist/{chunk-RT7ACF77.js → chunk-EGY3TS62.js} +6 -6
  30. package/dist/{chunk-TDHD3HNO.js → chunk-F4X5NVKY.js} +37 -16
  31. package/dist/{chunk-RQ6SEQOT.js → chunk-FMZEU7MF.js} +65 -24
  32. package/dist/{chunk-R5JPMW2F.js → chunk-FTTB64OJ.js} +5 -5
  33. package/dist/{chunk-PHRBLJ3K.js → chunk-GEURKGZS.js} +2 -2
  34. package/dist/{chunk-ALDU62VN.js → chunk-GFXFRKUG.js} +4 -4
  35. package/dist/{chunk-L2EA5YLO.js → chunk-HGFKDSKZ.js} +3 -3
  36. package/dist/{chunk-JSYAH7KR.js → chunk-HOIAQ3P2.js} +2 -2
  37. package/dist/{chunk-FGXBIOVK.js → chunk-IFC3JXCT.js} +2 -2
  38. package/dist/{chunk-EV6BZMBZ.js → chunk-IHUOYDLN.js} +3 -3
  39. package/dist/{chunk-474D3IUN.js → chunk-JL7BDLC6.js} +4 -4
  40. package/dist/{chunk-WWQ6TUVK.js → chunk-JLJ7SP4X.js} +3 -3
  41. package/dist/{chunk-ULEWCCBN.js → chunk-JQ575OAK.js} +2 -2
  42. package/dist/{chunk-SUA56ZSB.js → chunk-LTTZX6RD.js} +6 -2
  43. package/dist/{chunk-YJMWEZOB.js → chunk-MG3DE3VO.js} +2 -2
  44. package/dist/{chunk-GE5RO4BS.js → chunk-N6MZSBOL.js} +5 -1
  45. package/dist/{chunk-DU3OIBQE.js → chunk-NWNSXHA5.js} +6 -2
  46. package/dist/{chunk-57Z2WXJ2.js → chunk-OBYZU23V.js} +5 -5
  47. package/dist/{chunk-2MJSSDK5.js → chunk-OUJG73YJ.js} +2 -2
  48. package/dist/{chunk-XCAEHWQB.js → chunk-PAW4RMH3.js} +2 -2
  49. package/dist/{chunk-CDFIZHVD.js → chunk-QI4Q5ZZH.js} +3 -3
  50. package/dist/{chunk-ALBVWTU4.js → chunk-TF76LCZS.js} +35 -51
  51. package/dist/{chunk-FL5IKZQA.js → chunk-U5B3TUEW.js} +2 -2
  52. package/dist/{chunk-TTCXHFFB.js → chunk-U7AO6FRL.js} +2 -2
  53. package/dist/{chunk-RN3PAL4E.js → chunk-UBW53CNS.js} +2 -2
  54. package/dist/{chunk-MDEG62W7.js → chunk-UTTRJ6KN.js} +3 -3
  55. package/dist/{chunk-Q6LP67RP.js → chunk-UWYZIGCB.js} +2 -2
  56. package/dist/{chunk-XJLNQEQS.js → chunk-XHROEQ23.js} +3 -3
  57. package/dist/{chunk-EPH4UMUE.js → chunk-YVDBBWEP.js} +2 -2
  58. package/dist/{dgmo-router-KYNLRE7S.js → dgmo-router-A3LIHT6H.js} +7 -7
  59. package/dist/{dimensions-Q5SFPATB.js → dimensions-7NYBSZRJ.js} +4 -4
  60. package/dist/{flowchart-parser-LY5GGQL2.js → flowchart-parser-NVBP3C5D.js} +2 -2
  61. package/dist/{flowchart-renderer-TTUSBBQI.js → flowchart-renderer-QYGQ64BM.js} +6 -6
  62. package/dist/index.js +13 -13
  63. package/dist/{layout-UJ62RQQ3.js → layout-2OJ25STS.js} +2 -2
  64. package/dist/{layout-DAYQ46PS.js → layout-LAS67TK3.js} +3 -3
  65. package/dist/{parser-LUOINP6H.js → parser-QYAIFXLP.js} +3 -3
  66. package/dist/{parser-L7RXUKYN.js → parser-WVE6SKB7.js} +2 -2
  67. package/dist/{parser-JYIZEKAS.js → parser-ZYAFHXKQ.js} +2 -2
  68. package/dist/pert.d.ts +4 -33
  69. package/dist/{renderer-AA5CC4VJ.js → renderer-4EWGZLJ6.js} +3 -3
  70. package/dist/{renderer-6SSIELBC.js → renderer-4PNVGHVA.js} +3 -3
  71. package/dist/{renderer-U6PK5ZKD.js → renderer-5W3HWIUL.js} +3 -3
  72. package/dist/{renderer-TI7QABY7.js → renderer-CGOPX4HW.js} +4 -4
  73. package/dist/{renderer-6IGQEVTE.js → renderer-CO5O5VR5.js} +3 -3
  74. package/dist/{renderer-QLZVE45Z.js → renderer-D7N7PPB7.js} +3 -3
  75. package/dist/{renderer-6HRDO635.js → renderer-DKW273R7.js} +4 -4
  76. package/dist/{renderer-227JWWHX.js → renderer-E6NHTVN6.js} +5 -5
  77. package/dist/{renderer-IPNSOM5J.js → renderer-F24V3RD3.js} +4 -4
  78. package/dist/{renderer-N2X3WYBY.js → renderer-F6WSR7UM.js} +5 -5
  79. package/dist/{renderer-55JP6AO4.js → renderer-FGGDZZFQ.js} +3 -3
  80. package/dist/{renderer-E5BYZTVH.js → renderer-FUJNSC5X.js} +3 -3
  81. package/dist/{renderer-YQI5U6KJ.js → renderer-GF6S5ZX6.js} +3 -3
  82. package/dist/{renderer-UXZEYV2X.js → renderer-GJDVPXI3.js} +4 -4
  83. package/dist/{renderer-UYYBJ7OB.js → renderer-IH45QV6Z.js} +9 -9
  84. package/dist/{renderer-NECP7G4X.js → renderer-JMJ7Q5OC.js} +4 -4
  85. package/dist/{renderer-YM7PLDBF.js → renderer-KMOGGMM7.js} +5 -5
  86. package/dist/{renderer-P55KPBIX.js → renderer-LBNVKVO3.js} +4 -4
  87. package/dist/{renderer-46QQH33X.js → renderer-LE3ZKHNS.js} +4 -4
  88. package/dist/{renderer-4K6KR3U3.js → renderer-MUW4G2N6.js} +6 -6
  89. package/dist/{renderer-2WW35ZIW.js → renderer-PIEPRK6M.js} +4 -4
  90. package/dist/{renderer-EJXFEA5C.js → renderer-PKRKLOYR.js} +4 -4
  91. package/dist/{renderer-W7RKBG6C.js → renderer-PR3KLNST.js} +4 -4
  92. package/dist/{renderer-SCIHPARI.js → renderer-QAMOXOZ2.js} +3 -3
  93. package/dist/{renderer-3LD3ANCP.js → renderer-RUHC6D3B.js} +4 -4
  94. package/dist/{renderer-OWBIWBMK.js → renderer-UUP6OX6F.js} +3 -3
  95. package/dist/{renderer-UUPNOGO5.js → renderer-UYZSP7MF.js} +4 -4
  96. package/dist/{renderer-CF5TYQT4.js → renderer-ZAJ5353N.js} +3 -3
  97. package/dist/{state-renderer-OPP6YOJI.js → state-renderer-UIE3AQM6.js} +6 -6
  98. package/docs/language-reference.md +6 -6
  99. package/package.json +3 -3
  100. package/dist/chunk-PDKUANDZ.js +0 -35
package/dist/block.js CHANGED
@@ -4,21 +4,21 @@ import {
4
4
  } from "./chunk-D3K4U3ZM.js";
5
5
  import {
6
6
  render
7
- } from "./chunk-YXY6V2YN.js";
7
+ } from "./chunk-4CRLM3IT.js";
8
8
  import {
9
9
  docsLink,
10
10
  renderErrorCard
11
- } from "./chunk-XCAEHWQB.js";
11
+ } from "./chunk-PAW4RMH3.js";
12
12
  import "./chunk-EOYPX6SF.js";
13
- import "./chunk-474D3IUN.js";
13
+ import "./chunk-JL7BDLC6.js";
14
14
  import "./chunk-L65WI4HO.js";
15
- import "./chunk-EPH4UMUE.js";
15
+ import "./chunk-YVDBBWEP.js";
16
16
  import "./chunk-YRYKTYMQ.js";
17
17
  import "./chunk-24YPR5EH.js";
18
- import "./chunk-RN3PAL4E.js";
19
- import "./chunk-YJMWEZOB.js";
18
+ import "./chunk-UBW53CNS.js";
19
+ import "./chunk-MG3DE3VO.js";
20
20
  import "./chunk-RU2HHHYA.js";
21
- import "./chunk-A4GOY3PE.js";
21
+ import "./chunk-DEW62ON3.js";
22
22
  import "./chunk-QT5UMFPE.js";
23
23
  import "./chunk-4SXHMFFP.js";
24
24
  import "./chunk-UTCPNJND.js";
@@ -27,7 +27,7 @@ import "./chunk-MTGGOCND.js";
27
27
  import {
28
28
  encodeDiagramUrl
29
29
  } from "./chunk-U7VO6JAA.js";
30
- import "./chunk-R5JPMW2F.js";
30
+ import "./chunk-FTTB64OJ.js";
31
31
  import "./chunk-SH4PPRU7.js";
32
32
  import "./chunk-A2RUBBVT.js";
33
33
  import "./chunk-5PFNUDXR.js";
@@ -51,8 +51,8 @@ import {
51
51
  } from "./chunk-WFA6IULY.js";
52
52
  import "./chunk-BWJLLNUX.js";
53
53
  import "./chunk-KRTLS3G6.js";
54
- import "./chunk-TDHD3HNO.js";
55
- import "./chunk-RT7ACF77.js";
54
+ import "./chunk-F4X5NVKY.js";
55
+ import "./chunk-EGY3TS62.js";
56
56
  import "./chunk-W7UBPARG.js";
57
57
  import "./chunk-S5P5Z5Y5.js";
58
58
  import "./chunk-QQJUTGQH.js";
@@ -66,7 +66,7 @@ import "./chunk-UCZBRGJN.js";
66
66
  import "./chunk-7BMX2M3F.js";
67
67
  import "./chunk-3SP6G4LN.js";
68
68
  import "./chunk-ZM27UI5O.js";
69
- import "./chunk-2NRIGEHZ.js";
69
+ import "./chunk-46KVXDUJ.js";
70
70
  import "./chunk-TPN7RJOM.js";
71
71
  import "./chunk-EQW6HOP4.js";
72
72
  import {
@@ -74,11 +74,11 @@ import {
74
74
  } from "./chunk-DAOFNU6J.js";
75
75
  import "./chunk-7NSNE52V.js";
76
76
  import "./chunk-C3Z4DX3V.js";
77
- import "./chunk-DU3OIBQE.js";
77
+ import "./chunk-NWNSXHA5.js";
78
78
  import "./chunk-7TF3QOOD.js";
79
79
  import "./chunk-M5JT2AU7.js";
80
80
  import "./chunk-NXMESY4J.js";
81
- import "./chunk-SUA56ZSB.js";
81
+ import "./chunk-LTTZX6RD.js";
82
82
  import "./chunk-ICVIJLBA.js";
83
83
  import "./chunk-76NHL5UG.js";
84
84
  import "./chunk-E6PNTYRK.js";
@@ -572,10 +572,21 @@ function escapeAttr(s) {
572
572
  // src/embed/css.ts
573
573
  var BLOCK_CSS = `
574
574
  /* @diagrammo/dgmo block \u2014 standard embed chrome.
575
- * Override the [data-theme="dark"] selectors if your site uses .dark or
576
- * another color-mode convention. */
575
+ * Dark mode is keyed on a data-theme="dark" attribute (Starlight, Docusaurus)
576
+ * AND an html.dark class (Tailwind, next-themes, VitePress), so all of those
577
+ * work as shipped. Add your own selector if your site marks dark a third way.
578
+ *
579
+ * No selector is spelled in bracket form anywhere in these comments on
580
+ * purpose: the adapters that re-key the attribute rules onto another host's
581
+ * signal match that exact substring, and a mention inside a comment would be
582
+ * swallowed into a rule they then emit as garbage. */
577
583
 
578
- /* === Color-mode visibility (dual-render) === */
584
+ /* === Color-mode visibility (dual-render) ===
585
+ * The dark wrapper also carries the "hidden" ATTRIBUTE, so a page that never
586
+ * loaded this stylesheet shows the light diagram rather than both of them.
587
+ * Every rule below is author-origin and therefore still overrides it.
588
+ * Keep the two host conventions in separate rule blocks \u2014 the adapters
589
+ * rewrite by literal replace and a folded rule would half-rewrite. */
579
590
  .dgmo-dark {
580
591
  display: none;
581
592
  }
@@ -585,6 +596,12 @@ var BLOCK_CSS = `
585
596
  [data-theme="dark"] .dgmo-dark {
586
597
  display: block;
587
598
  }
599
+ html.dark .dgmo-light {
600
+ display: none;
601
+ }
602
+ html.dark .dgmo-dark {
603
+ display: block;
604
+ }
588
605
 
589
606
  /* === Diagram sizing ===
590
607
  * SVGs are emitted with viewBox only (no fixed width/height). Force them to
@@ -1068,7 +1085,7 @@ async function renderDgmoBlock(source, options = {}) {
1068
1085
  renderTheme("dark")
1069
1086
  ]);
1070
1087
  const background = opts.background === "auto" ? defaultEmbedBackground(chartType) : opts.background;
1071
- svgsHtml = `<div class="${escapeAttr(innerClasses(opts, "dgmo-light"))}" data-dgmo-bg="${escapeAttr(palette.light.bg)}">${normalizeSvgForEmbed(light, { background })}</div><div class="${escapeAttr(innerClasses(opts, "dgmo-dark"))}" data-dgmo-bg="${escapeAttr(palette.dark.bg)}">${normalizeSvgForEmbed(dark, { background })}</div>`;
1088
+ svgsHtml = `<div class="${escapeAttr(innerClasses(opts, "dgmo-light"))}" data-dgmo-bg="${escapeAttr(palette.light.bg)}">${normalizeSvgForEmbed(light, { background })}</div><div class="${escapeAttr(innerClasses(opts, "dgmo-dark"))}" data-dgmo-bg="${escapeAttr(palette.dark.bg)}" hidden>${normalizeSvgForEmbed(dark, { background })}</div>`;
1072
1089
  } else {
1073
1090
  const svg = await renderTheme(opts.colorMode);
1074
1091
  const background = opts.background === "auto" ? defaultEmbedBackground(chartType) : opts.background;
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-U7VO6JAA.js";
11
11
  import {
12
12
  parseDgmoChartType
13
- } from "./chunk-R5JPMW2F.js";
13
+ } from "./chunk-FTTB64OJ.js";
14
14
  import "./chunk-SH4PPRU7.js";
15
15
  import "./chunk-A2RUBBVT.js";
16
16
  import "./chunk-5PFNUDXR.js";
@@ -33,8 +33,8 @@ import "./chunk-Z7KVOVE4.js";
33
33
  import "./chunk-WFA6IULY.js";
34
34
  import "./chunk-BWJLLNUX.js";
35
35
  import "./chunk-KRTLS3G6.js";
36
- import "./chunk-TDHD3HNO.js";
37
- import "./chunk-RT7ACF77.js";
36
+ import "./chunk-F4X5NVKY.js";
37
+ import "./chunk-EGY3TS62.js";
38
38
  import "./chunk-W7UBPARG.js";
39
39
  import "./chunk-S5P5Z5Y5.js";
40
40
  import "./chunk-QQJUTGQH.js";
@@ -48,17 +48,17 @@ import "./chunk-UCZBRGJN.js";
48
48
  import "./chunk-7BMX2M3F.js";
49
49
  import "./chunk-3SP6G4LN.js";
50
50
  import "./chunk-ZM27UI5O.js";
51
- import "./chunk-2NRIGEHZ.js";
51
+ import "./chunk-46KVXDUJ.js";
52
52
  import "./chunk-TPN7RJOM.js";
53
53
  import "./chunk-EQW6HOP4.js";
54
54
  import "./chunk-DAOFNU6J.js";
55
55
  import "./chunk-7NSNE52V.js";
56
56
  import "./chunk-C3Z4DX3V.js";
57
- import "./chunk-DU3OIBQE.js";
57
+ import "./chunk-NWNSXHA5.js";
58
58
  import "./chunk-7TF3QOOD.js";
59
59
  import "./chunk-M5JT2AU7.js";
60
60
  import "./chunk-NXMESY4J.js";
61
- import "./chunk-SUA56ZSB.js";
61
+ import "./chunk-LTTZX6RD.js";
62
62
  import "./chunk-ICVIJLBA.js";
63
63
  import "./chunk-76NHL5UG.js";
64
64
  import "./chunk-E6PNTYRK.js";
@@ -2,12 +2,12 @@ import {
2
2
  D3_DATA_CHART_TYPES,
3
3
  renderDataChartD3,
4
4
  supportsD3DataChart
5
- } from "./chunk-474D3IUN.js";
5
+ } from "./chunk-JL7BDLC6.js";
6
6
  import "./chunk-L65WI4HO.js";
7
- import "./chunk-RN3PAL4E.js";
8
- import "./chunk-YJMWEZOB.js";
7
+ import "./chunk-UBW53CNS.js";
8
+ import "./chunk-MG3DE3VO.js";
9
9
  import "./chunk-RU2HHHYA.js";
10
- import "./chunk-A4GOY3PE.js";
10
+ import "./chunk-DEW62ON3.js";
11
11
  import "./chunk-4SXHMFFP.js";
12
12
  import "./chunk-UTCPNJND.js";
13
13
  import "./chunk-YT5ICQ4R.js";
@@ -26,4 +26,4 @@ export {
26
26
  renderDataChartD3,
27
27
  supportsD3DataChart
28
28
  };
29
- //# sourceMappingURL=charts-d3-LWHTOVX7.js.map
29
+ //# sourceMappingURL=charts-d3-SQEVMIAM.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  analyzePert
3
- } from "./chunk-GJQQCI63.js";
3
+ } from "./chunk-3SQJZMPO.js";
4
4
  import {
5
5
  computeNodeSizing,
6
6
  layoutPert
@@ -19,7 +19,7 @@ import {
19
19
  import {
20
20
  INLINE_HEADER_PAD,
21
21
  layoutInlineHeader
22
- } from "./chunk-YJMWEZOB.js";
22
+ } from "./chunk-MG3DE3VO.js";
23
23
  import {
24
24
  serializeSvg
25
25
  } from "./chunk-RU2HHHYA.js";
@@ -27,13 +27,12 @@ import {
27
27
  CAPTION_BOX_PADDING_X,
28
28
  CAPTION_BOX_PADDING_Y,
29
29
  CAPTION_FONT_SIZE,
30
- CAPTION_FONT_WEIGHT,
31
30
  CAPTION_LINE_HEIGHT,
32
31
  CAPTION_TOP_GAP,
33
32
  TITLE_FONT_SIZE,
34
33
  TITLE_FONT_WEIGHT,
35
34
  TITLE_Y
36
- } from "./chunk-A4GOY3PE.js";
35
+ } from "./chunk-DEW62ON3.js";
37
36
  import {
38
37
  renderIntegratedLegend
39
38
  } from "./chunk-QT5UMFPE.js";
@@ -169,19 +168,8 @@ function renderPert(container, resolved, layout, palette, isDark, options = {})
169
168
  const effectiveTitle = options.title;
170
169
  const effectiveSubtitle = options.subtitle ?? null;
171
170
  const titleHeight = effectiveTitle ? 80 : effectiveSubtitle ? 50 : 0;
172
- const anchorAnnotation = anchorAnnotationText(resolved);
173
171
  const collapsedSet = new Set(options.collapsedGroupIds ?? []);
174
- const captionRows = resolved.error !== null ? null : resolved.summaryRows;
175
- const captionBullets = captionRows !== null && captionRows.length > 0 ? bulletizeCaption(captionRows) : [];
176
- if (anchorAnnotation) {
177
- captionBullets.push({
178
- text: anchorAnnotation,
179
- level: 0,
180
- italic: true
181
- });
182
- }
183
- const analysisLayer = computeAnalysisLayer(resolved, captionBullets, {
184
- showSummary: options.showSummary ?? true,
172
+ const analysisLayer = computeAnalysisLayer(resolved, {
185
173
  showTornado: options.showTornado ?? false,
186
174
  showScurve: options.showScurve ?? false,
187
175
  showFieldLegend: options.showFieldLegend ?? false
@@ -340,7 +328,6 @@ function renderPert(container, resolved, layout, palette, isDark, options = {})
340
328
  palette,
341
329
  isDark,
342
330
  analysisLayer,
343
- captionBullets,
344
331
  sDiagramPad,
345
332
  offsetY + layout.height,
346
333
  svgW - 2 * sDiagramPad
@@ -358,16 +345,9 @@ function renderPertForExport(content, theme, palette, now) {
358
345
  const hasTitle = !!parsed.title && !resolved.options.noTitle;
359
346
  const hasSubtitle = resolved.projectSubtitle !== null;
360
347
  const titleHeight = hasTitle ? 80 : hasSubtitle ? 50 : 0;
361
- const captionBullets = resolved.summaryRows !== null && resolved.summaryRows.length > 0 ? bulletizeCaption(resolved.summaryRows) : [];
362
- const anchorNote = anchorAnnotationText(resolved);
363
- if (anchorNote) {
364
- captionBullets.push({ text: anchorNote, level: 0, italic: true });
365
- }
366
- const captionBoxHeight = captionBullets.length > 0 ? captionBullets.length * CAPTION_LINE_HEIGHT + 2 * CAPTION_BOX_PADDING_Y + CAPTION_HEADER_BAND_HEIGHT : 0;
367
- const captionBlockHeight = captionBullets.length > 0 ? CAPTION_TOP_GAP + captionBoxHeight : 0;
368
348
  const legendBlockHeight = resolved.tagGroups.length > 0 ? LEGEND_TOP_GAP + LEGEND_PILL_HEIGHT + LEGEND_BOTTOM_GAP : 0;
369
349
  const exportWidth = layout.width + DIAGRAM_PADDING * 2;
370
- const exportHeight = layout.height + DIAGRAM_PADDING * 2 + titleHeight + legendBlockHeight + captionBlockHeight;
350
+ const exportHeight = layout.height + DIAGRAM_PADDING * 2 + titleHeight + legendBlockHeight;
371
351
  const container = document.createElement("div");
372
352
  container.style.width = `${exportWidth}px`;
373
353
  container.style.height = `${exportHeight}px`;
@@ -392,25 +372,17 @@ function renderPertForExport(content, theme, palette, now) {
392
372
  document.body.removeChild(container);
393
373
  }
394
374
  }
395
- function computeAnalysisLayer(resolved, captionBullets, opts) {
396
- const summaryRendered = opts.showSummary && captionBullets.length > 0;
397
- const captionBoxHeight = summaryRendered ? captionBullets.length * CAPTION_LINE_HEIGHT + 2 * CAPTION_BOX_PADDING_Y + CAPTION_HEADER_BAND_HEIGHT : 0;
375
+ function computeAnalysisLayer(resolved, opts) {
398
376
  let tornadoRows = opts.showTornado ? buildTornadoRows(resolved) : [];
399
377
  const showTornado = tornadoRows.length > 0;
400
378
  let tornadoBoxHeight = showTornado ? tornadoBoxHeightFor(tornadoRows) : 0;
401
379
  const scurveData = opts.showScurve ? buildScurveData(resolved) : null;
402
380
  const showScurve = scurveData !== null;
403
381
  const scurveBoxHeight = showScurve ? SCURVE_BOX_HEIGHT : 0;
404
- const fieldLegendInAnalysisRow = opts.showFieldLegend && (summaryRendered || showTornado || showScurve);
405
- const col1Width = summaryRendered ? Math.max(
406
- SUMMARY_MIN_W,
407
- Math.min(SUMMARY_MAX_W, captionNaturalWidth(captionBullets))
408
- ) : fieldLegendInAnalysisRow ? SUMMARY_MAX_W : 0;
409
- const fieldLegendCol1Height = fieldLegendInAnalysisRow ? fieldLegendHeightFor(col1Width) : 0;
410
- const col1Items = [];
411
- if (summaryRendered) col1Items.push(captionBoxHeight);
412
- if (fieldLegendInAnalysisRow) col1Items.push(fieldLegendCol1Height);
413
- const col1Height = col1Items.length ? col1Items.reduce((a, b) => a + b, 0) + (col1Items.length - 1) * COL1_VSTACK_GAP : 0;
382
+ const fieldLegendInAnalysisRow = opts.showFieldLegend && (showTornado || showScurve);
383
+ const col1Width = fieldLegendInAnalysisRow ? FIELD_LEGEND_COL1_W : 0;
384
+ const col1Height = fieldLegendInAnalysisRow ? fieldLegendHeightFor(col1Width) : 0;
385
+ const fieldLegendCol1Height = col1Height;
414
386
  let analysisRowHeight = Math.max(
415
387
  col1Height,
416
388
  scurveBoxHeight,
@@ -433,11 +405,11 @@ function computeAnalysisLayer(resolved, captionBullets, opts) {
433
405
  analysisCharts.push({ kind: "tornado", contentHeight: tornadoBoxHeight });
434
406
  if (showScurve)
435
407
  analysisCharts.push({ kind: "scurve", contentHeight: scurveBoxHeight });
436
- const analysisHasContent = summaryRendered || analysisCharts.length > 0 || fieldLegendInAnalysisRow;
408
+ const analysisHasContent = analysisCharts.length > 0 || fieldLegendInAnalysisRow;
437
409
  const fieldLegendStandalone = opts.showFieldLegend && !fieldLegendInAnalysisRow;
438
410
  let minContentWidth = 0;
439
411
  if (analysisHasContent) {
440
- const col1Used = summaryRendered || fieldLegendInAnalysisRow;
412
+ const col1Used = fieldLegendInAnalysisRow;
441
413
  if (col1Used) minContentWidth += col1Width;
442
414
  for (const w of analysisCharts) {
443
415
  minContentWidth += w.kind === "tornado" ? TORNADO_MIN_W : SCURVE_MIN_W;
@@ -446,7 +418,6 @@ function computeAnalysisLayer(resolved, captionBullets, opts) {
446
418
  if (colCount > 1) minContentWidth += (colCount - 1) * ANALYSIS_GAP;
447
419
  }
448
420
  return {
449
- summaryRendered,
450
421
  showTornado,
451
422
  showScurve,
452
423
  fieldLegendInAnalysisRow,
@@ -455,7 +426,6 @@ function computeAnalysisLayer(resolved, captionBullets, opts) {
455
426
  tornadoRows,
456
427
  scurveData,
457
428
  analysisCharts,
458
- captionBoxHeight,
459
429
  fieldLegendCol1Height,
460
430
  tornadoBoxHeight,
461
431
  scurveBoxHeight,
@@ -489,7 +459,7 @@ function analysisContentHeightAt(state, availableWidth) {
489
459
  });
490
460
  return total;
491
461
  }
492
- function paintAnalysisLayer(svg, resolved, palette, isDark, state, captionBullets, x, y, availableWidth) {
462
+ function paintAnalysisLayer(svg, resolved, palette, isDark, state, x, y, availableWidth) {
493
463
  if (!state.analysisHasContent) {
494
464
  if (!state.fieldLegendStandalone) return 0;
495
465
  const bandY = y + CAPTION_TOP_GAP;
@@ -511,7 +481,6 @@ function paintAnalysisLayer(svg, resolved, palette, isDark, state, captionBullet
511
481
  palette,
512
482
  isDark,
513
483
  state,
514
- captionBullets,
515
484
  x,
516
485
  y,
517
486
  availableWidth
@@ -523,15 +492,14 @@ function paintAnalysisLayer(svg, resolved, palette, isDark, state, captionBullet
523
492
  palette,
524
493
  isDark,
525
494
  state,
526
- captionBullets,
527
495
  x,
528
496
  y,
529
497
  availableWidth
530
498
  );
531
499
  }
532
- function paintAnalysisRowMode(svg, resolved, palette, isDark, state, captionBullets, x, y, availableWidth) {
500
+ function paintAnalysisRowMode(svg, resolved, palette, isDark, state, x, y, availableWidth) {
533
501
  const bandY = y + CAPTION_TOP_GAP;
534
- const col1Used = state.summaryRendered || state.fieldLegendInAnalysisRow;
502
+ const col1Used = state.fieldLegendInAnalysisRow;
535
503
  const colCount = (col1Used ? 1 : 0) + state.analysisCharts.length;
536
504
  const nGaps = Math.max(0, colCount - 1);
537
505
  const usableWidth = availableWidth - nGaps * ANALYSIS_GAP;
@@ -552,35 +520,18 @@ function paintAnalysisRowMode(svg, resolved, palette, isDark, state, captionBull
552
520
  fillMode: resolved.options.fillMode
553
521
  });
554
522
  } else {
555
- const scurveTitle = !state.summaryRendered && captionBullets.length > 0 ? (
556
- // In-bounds by length check.
557
- captionBullets[0].text
558
- ) : void 0;
559
523
  renderScurveBlock(svg, state.scurveData, {
560
524
  ...args,
561
- unit: resolved.options.timeUnit,
562
- ...scurveTitle !== void 0 && { title: scurveTitle }
525
+ unit: resolved.options.timeUnit
563
526
  });
564
527
  }
565
528
  cursorX += chartWidth + ANALYSIS_GAP;
566
529
  }
567
530
  if (col1Used) {
568
- let stackY = bandY;
569
- if (state.summaryRendered) {
570
- renderCaptionBlock(svg, captionBullets, {
571
- x: cursorX,
572
- y: stackY,
573
- width: state.col1Width,
574
- height: state.captionBoxHeight,
575
- palette,
576
- isDark
577
- });
578
- stackY += state.captionBoxHeight + COL1_VSTACK_GAP;
579
- }
580
531
  if (state.fieldLegendInAnalysisRow) {
581
532
  renderFieldLegendBlock(svg, {
582
533
  x: cursorX,
583
- y: stackY,
534
+ y: bandY,
584
535
  width: state.col1Width,
585
536
  height: state.fieldLegendCol1Height,
586
537
  palette,
@@ -590,7 +541,6 @@ function paintAnalysisRowMode(svg, resolved, palette, isDark, state, captionBull
590
541
  }
591
542
  return CAPTION_TOP_GAP + state.analysisRowHeight;
592
543
  }
593
- var FIELD_LEGEND_MIN_W = 220;
594
544
  function packRows(state, availableWidth) {
595
545
  const rows = [];
596
546
  const charts = state.analysisCharts;
@@ -610,23 +560,7 @@ function packRows(state, availableWidth) {
610
560
  } else if (charts.length === 1) {
611
561
  rows.push([{ kind: charts[0].kind, paintWidth: availableWidth }]);
612
562
  }
613
- const hasSummary = state.summaryRendered;
614
- const hasField = state.fieldLegendInAnalysisRow;
615
- if (hasSummary && hasField) {
616
- const summaryW = state.col1Width;
617
- const fieldW = availableWidth - summaryW - ANALYSIS_GAP;
618
- if (fieldW >= FIELD_LEGEND_MIN_W) {
619
- rows.push([
620
- { kind: "summary", paintWidth: summaryW },
621
- { kind: "field", paintWidth: fieldW }
622
- ]);
623
- } else {
624
- rows.push([{ kind: "summary", paintWidth: summaryW }]);
625
- rows.push([{ kind: "field", paintWidth: availableWidth }]);
626
- }
627
- } else if (hasSummary) {
628
- rows.push([{ kind: "summary", paintWidth: state.col1Width }]);
629
- } else if (hasField) {
563
+ if (state.fieldLegendInAnalysisRow) {
630
564
  rows.push([{ kind: "field", paintWidth: availableWidth }]);
631
565
  }
632
566
  return rows;
@@ -637,13 +571,11 @@ function itemContentHeight(state, kind, paintWidth) {
637
571
  return state.tornadoBoxHeight;
638
572
  case "scurve":
639
573
  return state.scurveBoxHeight;
640
- case "summary":
641
- return state.captionBoxHeight;
642
574
  case "field":
643
575
  return fieldLegendHeightFor(paintWidth);
644
576
  }
645
577
  }
646
- function paintAnalysisStackMode(svg, resolved, palette, isDark, state, captionBullets, x, y, availableWidth) {
578
+ function paintAnalysisStackMode(svg, resolved, palette, isDark, state, x, y, availableWidth) {
647
579
  const rows = packRows(state, availableWidth);
648
580
  let cursorY = y + CAPTION_TOP_GAP;
649
581
  rows.forEach((row, rowIndex) => {
@@ -674,21 +606,12 @@ function paintAnalysisStackMode(svg, resolved, palette, isDark, state, captionBu
674
606
  fillMode: resolved.options.fillMode
675
607
  });
676
608
  break;
677
- case "scurve": {
678
- const scurveTitle = !state.summaryRendered && captionBullets.length > 0 ? (
679
- // In-bounds by length check.
680
- captionBullets[0].text
681
- ) : void 0;
609
+ case "scurve":
682
610
  renderScurveBlock(svg, state.scurveData, {
683
611
  ...args,
684
- unit: resolved.options.timeUnit,
685
- ...scurveTitle !== void 0 && { title: scurveTitle }
612
+ unit: resolved.options.timeUnit
686
613
  });
687
614
  break;
688
- }
689
- case "summary":
690
- renderCaptionBlock(svg, captionBullets, args);
691
- break;
692
615
  case "field":
693
616
  renderFieldLegendBlock(svg, args);
694
617
  break;
@@ -701,14 +624,7 @@ function paintAnalysisStackMode(svg, resolved, palette, isDark, state, captionBu
701
624
  return cursorY - y;
702
625
  }
703
626
  function measurePertAnalysisBlock(resolved, width, options) {
704
- const captionRows = resolved.error !== null ? null : resolved.summaryRows;
705
- const captionBullets = captionRows !== null && captionRows.length > 0 ? bulletizeCaption(captionRows) : [];
706
- const anchorAnnotation = anchorAnnotationText(resolved);
707
- if (anchorAnnotation) {
708
- captionBullets.push({ text: anchorAnnotation, level: 0, italic: true });
709
- }
710
- const state = computeAnalysisLayer(resolved, captionBullets, {
711
- showSummary: options.showSummary ?? true,
627
+ const state = computeAnalysisLayer(resolved, {
712
628
  showTornado: options.showTornado ?? false,
713
629
  showScurve: options.showScurve ?? false,
714
630
  showFieldLegend: options.showFieldLegend ?? false
@@ -717,7 +633,6 @@ function measurePertAnalysisBlock(resolved, width, options) {
717
633
  return { width: 0, height: 0 };
718
634
  }
719
635
  const itemMinW = Math.max(
720
- state.summaryRendered ? SUMMARY_MIN_W : 0,
721
636
  state.showTornado ? TORNADO_MIN_W : 0,
722
637
  state.showScurve ? SCURVE_MIN_W : 0,
723
638
  0
@@ -727,21 +642,13 @@ function measurePertAnalysisBlock(resolved, width, options) {
727
642
  }
728
643
  function renderPertAnalysisBlock(container, resolved, palette, isDark, options) {
729
644
  d3Selection.select(container).selectAll(":not([data-d3-tooltip])").remove();
730
- const captionRows = resolved.error !== null ? null : resolved.summaryRows;
731
- const captionBullets = captionRows !== null && captionRows.length > 0 ? bulletizeCaption(captionRows) : [];
732
- const anchorAnnotation = anchorAnnotationText(resolved);
733
- if (anchorAnnotation) {
734
- captionBullets.push({ text: anchorAnnotation, level: 0, italic: true });
735
- }
736
- const state = computeAnalysisLayer(resolved, captionBullets, {
737
- showSummary: options.showSummary ?? true,
645
+ const state = computeAnalysisLayer(resolved, {
738
646
  showTornado: options.showTornado ?? false,
739
647
  showScurve: options.showScurve ?? false,
740
648
  showFieldLegend: options.showFieldLegend ?? false
741
649
  });
742
650
  if (!state.analysisHasContent && !state.fieldLegendStandalone) return;
743
651
  const itemMinW = Math.max(
744
- state.summaryRendered ? SUMMARY_MIN_W : 0,
745
652
  state.showTornado ? TORNADO_MIN_W : 0,
746
653
  state.showScurve ? SCURVE_MIN_W : 0,
747
654
  // Field labels has no hard min — it wraps to whatever width it gets.
@@ -751,17 +658,7 @@ function renderPertAnalysisBlock(container, resolved, palette, isDark, options)
751
658
  const totalHeight = analysisLayerHeightAt(state, width);
752
659
  if (totalHeight <= 0 || width <= 0) return;
753
660
  const svg = d3Selection.select(container).append("svg").attr("width", width).attr("height", totalHeight).attr("viewBox", `0 0 ${width} ${totalHeight}`).attr("preserveAspectRatio", "xMidYMin meet").style("font-family", FONT_FAMILY).style("overflow", "visible");
754
- paintAnalysisLayer(
755
- svg,
756
- resolved,
757
- palette,
758
- isDark,
759
- state,
760
- captionBullets,
761
- 0,
762
- 0,
763
- width
764
- );
661
+ paintAnalysisLayer(svg, resolved, palette, isDark, state, 0, 0, width);
765
662
  }
766
663
  function buildArrowheads(defs, palette, arrowW = ARROWHEAD_W, arrowH = ARROWHEAD_H) {
767
664
  const mk = (id, fill) => {
@@ -1308,48 +1205,14 @@ function computeAnchorPinSet(resolved) {
1308
1205
  }
1309
1206
  return pinned;
1310
1207
  }
1311
- function anchorAnnotationText(resolved) {
1312
- const anchor = resolved.options.anchor;
1313
- if (anchor === null) return null;
1314
- const today = resolved.options.today;
1315
- if (anchor.kind === "forward") {
1316
- return `Forward from start-date ${anchor.date}`;
1317
- }
1318
- const asOf = today ? ` (as of ${today})` : "";
1319
- if (resolved.projectStart) {
1320
- return `Backward-anchored from end-date ${anchor.date}${asOf}`;
1321
- }
1322
- return `Backward-anchored from end-date ${anchor.date}${asOf} \u2014 upstream activities still need estimates`;
1323
- }
1324
- function bulletizeCaption(rows) {
1325
- return rows.map((row) => {
1326
- const out = { text: row.text, level: row.level };
1327
- if (row.italic) out.italic = true;
1328
- if (row.isPast) out.isPast = true;
1329
- return out;
1330
- });
1331
- }
1332
- var SUB_BULLET_INDENT = 20;
1333
1208
  var CAPTION_HEADER_BAND_HEIGHT = CAPTION_LINE_HEIGHT + 8;
1334
- function captionNaturalWidth(bullets) {
1335
- const charW = CAPTION_FONT_SIZE * 0.55;
1336
- let max = "Summary".length * charW;
1337
- for (const b of bullets) {
1338
- const indent = b.level === 1 ? SUB_BULLET_INDENT : 0;
1339
- const w = indent + `\u2022 ${b.text}`.length * charW;
1340
- if (w > max) max = w;
1341
- }
1342
- return Math.ceil(max + 2 * CAPTION_BOX_PADDING_X);
1343
- }
1344
1209
  var TORNADO_TOP_N = 10;
1345
1210
  var TORNADO_ROW_HEIGHT = 26;
1346
1211
  var TORNADO_NAME_COL_W = 160;
1347
1212
  var TORNADO_BAR_FONT_SIZE = 13;
1348
1213
  var TORNADO_BAR_HEIGHT = 16;
1349
- var SUMMARY_MIN_W = 260;
1350
- var SUMMARY_MAX_W = 420;
1214
+ var FIELD_LEGEND_COL1_W = 420;
1351
1215
  var ANALYSIS_GAP = 16;
1352
- var COL1_VSTACK_GAP = 8;
1353
1216
  var TORNADO_MIN_W = 340;
1354
1217
  var SCURVE_MIN_W = 320;
1355
1218
  var SCURVE_BOX_HEIGHT = 220;
@@ -1358,27 +1221,6 @@ var SCURVE_PLOT_PADDING_RIGHT = 16;
1358
1221
  var SCURVE_PLOT_PADDING_BOTTOM = 44;
1359
1222
  var SCURVE_TICK_FONT_SIZE = 13;
1360
1223
  var SCURVE_PERCENTILE_RADIUS = 4;
1361
- function renderCaptionBlock(svg, bullets, args) {
1362
- const { x, y, width, height, palette, isDark } = args;
1363
- const { fill, stroke: chromeStroke } = analysisBlockChrome(palette, isDark);
1364
- const labelColor = contrastText(
1365
- fill,
1366
- palette.textOnFillLight,
1367
- palette.textOnFillDark
1368
- );
1369
- const block = svg.append("g").attr("class", "pert-caption-block").attr("data-pert-caption", "");
1370
- block.append("rect").attr("class", "pert-caption-rect").attr("x", x).attr("y", y).attr("width", width).attr("height", height).attr("rx", NODE_RADIUS).attr("ry", NODE_RADIUS).attr("fill", fill).attr("stroke", chromeStroke).attr("stroke-width", NODE_STROKE_WIDTH);
1371
- block.append("text").attr("class", "pert-caption-header").attr("x", x + width / 2).attr("y", y + CAPTION_BOX_PADDING_Y + CAPTION_FONT_SIZE).attr("text-anchor", "middle").attr("fill", labelColor).attr("font-size", CAPTION_FONT_SIZE).attr("font-weight", "700").text("Summary");
1372
- const textX = x + CAPTION_BOX_PADDING_X;
1373
- const firstBaselineY = y + CAPTION_BOX_PADDING_Y + CAPTION_HEADER_BAND_HEIGHT + CAPTION_FONT_SIZE;
1374
- const text = block.append("text").attr("class", "pert-caption").attr("x", textX).attr("y", firstBaselineY).attr("text-anchor", "start").attr("fill", labelColor).attr("font-size", CAPTION_FONT_SIZE).attr("font-weight", CAPTION_FONT_WEIGHT);
1375
- bullets.forEach((bullet, i) => {
1376
- const indent = bullet.level === 1 ? SUB_BULLET_INDENT : 0;
1377
- const tspan = text.append("tspan").attr("x", textX + indent).text(`\u2022 ${bullet.text}`);
1378
- if (bullet.italic) tspan.attr("font-style", "italic");
1379
- if (i > 0) tspan.attr("dy", CAPTION_LINE_HEIGHT);
1380
- });
1381
- }
1382
1224
  function renderTagLegendRow(svg, resolved, palette, isDark, args) {
1383
1225
  if (resolved.tagGroups.length === 0) return;
1384
1226
  const { x, y, width, activeGroup, exportMode, inline } = args;
@@ -1632,24 +1474,22 @@ function buildScurveData(resolved) {
1632
1474
  samples,
1633
1475
  p16Days: bandLeft,
1634
1476
  p84Days: bandRight,
1635
- // Percentile dots/date-labels — `projectRounded` matches the
1636
- // analyzer's `roundConservative` (Math.ceil of the duration), so
1637
- // each dot's date label is byte-identical to the caption's
1638
- // "P{X} latest-safe start: <date>" row.
1477
+ // Percentile dots/date-labels — `projectRounded` ceils the
1478
+ // duration, so each dot's date label is the conservative reading
1479
+ // of its trial rather than a rounded-down one.
1639
1480
  p50Days: projectRounded(mc.p50),
1640
1481
  p80Days: projectRounded(mc.p80),
1641
1482
  p95Days: projectRounded(mc.p95),
1642
1483
  xMinDays,
1643
1484
  xMaxDays,
1644
1485
  referenceLines,
1645
- framingNote: anchorAnnotationText(resolved),
1646
1486
  anchorDate: resolved.projectStart,
1647
1487
  deadlineDays,
1648
1488
  deadlineDate
1649
1489
  };
1650
1490
  }
1651
1491
  function renderScurveBlock(svg, data, args) {
1652
- const { x, y, width, height, palette, isDark, unit, title } = args;
1492
+ const { x, y, width, height, palette, isDark, unit } = args;
1653
1493
  const { fill, stroke: chromeStroke } = analysisBlockChrome(palette, isDark);
1654
1494
  const labelColor = contrastText(
1655
1495
  fill,
@@ -1658,16 +1498,11 @@ function renderScurveBlock(svg, data, args) {
1658
1498
  );
1659
1499
  const block = svg.append("g").attr("class", "pert-scurve-block").attr("data-pert-scurve", "");
1660
1500
  block.append("rect").attr("class", "pert-scurve-rect").attr("x", x).attr("y", y).attr("width", width).attr("height", height).attr("rx", NODE_RADIUS).attr("ry", NODE_RADIUS).attr("fill", fill).attr("stroke", chromeStroke).attr("stroke-width", NODE_STROKE_WIDTH);
1661
- const hasTitle = typeof title === "string" && title.length > 0;
1662
- if (hasTitle) {
1663
- const titleText = title.replace(/\.$/, "");
1664
- block.append("text").attr("class", "pert-scurve-header").attr("x", x + width / 2).attr("y", y + CAPTION_BOX_PADDING_Y + CAPTION_FONT_SIZE).attr("text-anchor", "middle").attr("fill", labelColor).attr("font-size", CAPTION_FONT_SIZE).attr("font-weight", "700").text(titleText);
1665
- }
1666
1501
  const SCURVE_DEADLINE_LABEL_HEIGHT = 16;
1667
1502
  const hasDeadline = data.deadlineDays !== null;
1668
1503
  const plotLeft = x + SCURVE_PLOT_PADDING_X;
1669
1504
  const plotRight = x + width - SCURVE_PLOT_PADDING_RIGHT;
1670
- const plotTop = y + CAPTION_BOX_PADDING_Y + (hasTitle ? CAPTION_HEADER_BAND_HEIGHT : 0) + (hasDeadline ? SCURVE_DEADLINE_LABEL_HEIGHT : 0);
1505
+ const plotTop = y + CAPTION_BOX_PADDING_Y + (hasDeadline ? SCURVE_DEADLINE_LABEL_HEIGHT : 0);
1671
1506
  const isAnchored = data.anchorDate !== null;
1672
1507
  const plotBottom = y + height - SCURVE_PLOT_PADDING_BOTTOM;
1673
1508
  const plotW = plotRight - plotLeft;
@@ -1873,4 +1708,4 @@ export {
1873
1708
  measurePertAnalysisBlock,
1874
1709
  renderPertAnalysisBlock
1875
1710
  };
1876
- //# sourceMappingURL=chunk-TC63QU4M.js.map
1711
+ //# sourceMappingURL=chunk-32MOGTKT.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  MONO_FAMILY
3
- } from "./chunk-XCAEHWQB.js";
3
+ } from "./chunk-PAW4RMH3.js";
4
4
  import {
5
5
  FONT_FAMILY
6
6
  } from "./chunk-UTCPNJND.js";
@@ -62,4 +62,4 @@ function escapeXml(s) {
62
62
  export {
63
63
  renderLiveLinkCard
64
64
  };
65
- //# sourceMappingURL=chunk-LYLRNAX2.js.map
65
+ //# sourceMappingURL=chunk-3EGIU5WY.js.map