@diagrammo/dgmo 0.25.0 → 0.25.2

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.
package/dist/advanced.cjs CHANGED
@@ -16361,6 +16361,9 @@ function parseMap(content) {
16361
16361
  break;
16362
16362
  // ── Cosmetic `no-*` opt-outs: bare flags, idempotent (mirror `no-legend`,
16363
16363
  // no dup warning); each defaults the feature ON when absent. ──
16364
+ case "no-title":
16365
+ d.noTitle = true;
16366
+ break;
16364
16367
  case "no-legend":
16365
16368
  d.noLegend = true;
16366
16369
  break;
@@ -16382,6 +16385,9 @@ function parseMap(content) {
16382
16385
  case "no-colorize":
16383
16386
  d.noColorize = true;
16384
16387
  break;
16388
+ case "no-cluster-pois":
16389
+ d.noClusterPois = true;
16390
+ break;
16385
16391
  }
16386
16392
  }
16387
16393
  function handleTag(trimmed, line12) {
@@ -16683,13 +16689,15 @@ var init_parser12 = __esm({
16683
16689
  "locale",
16684
16690
  "active-tag",
16685
16691
  "caption",
16692
+ "no-title",
16686
16693
  "no-legend",
16687
16694
  "no-coastline",
16688
16695
  "no-relief",
16689
16696
  "no-context-labels",
16690
16697
  "no-region-labels",
16691
16698
  "no-poi-labels",
16692
- "no-colorize"
16699
+ "no-colorize",
16700
+ "no-cluster-pois"
16693
16701
  ]);
16694
16702
  }
16695
16703
  });
@@ -37492,18 +37500,10 @@ var init_layout11 = __esm({
37492
37500
  // src/pert/renderer.ts
37493
37501
  var renderer_exports11 = {};
37494
37502
  __export(renderer_exports11, {
37495
- PERT_LEGEND_PILL_HEIGHT: () => PERT_LEGEND_PILL_HEIGHT,
37496
- highlightPertCriticalPath: () => highlightPertCriticalPath,
37497
- highlightPertSet: () => highlightPertSet,
37498
37503
  measurePertAnalysisBlock: () => measurePertAnalysisBlock,
37499
- pertLegendBlockWidth: () => pertLegendBlockWidth,
37500
- pertLegendEntries: () => pertLegendEntries,
37501
- renderLegendBlock: () => renderLegendBlock,
37502
37504
  renderPert: () => renderPert,
37503
37505
  renderPertAnalysisBlock: () => renderPertAnalysisBlock,
37504
- renderPertForExport: () => renderPertForExport,
37505
- resetPertCriticalPath: () => resetPertCriticalPath,
37506
- resetPertHighlight: () => resetPertHighlight
37506
+ renderPertForExport: () => renderPertForExport
37507
37507
  });
37508
37508
  function analysisBlockChrome(palette, isDark) {
37509
37509
  const surfaceBg = isDark ? palette.surface : palette.bg;
@@ -37586,16 +37586,14 @@ function renderPert(container, resolved, layout, palette, isDark, options = {})
37586
37586
  const standaloneFieldLegendWidthForExport = layout.width;
37587
37587
  const analysisBlockHeight = analysisLayer.analysisHasContent ? CAPTION_TOP_GAP + analysisLayer.analysisRowHeight : 0;
37588
37588
  const fieldLegendBlockHeight = analysisLayer.fieldLegendStandalone ? CAPTION_TOP_GAP + fieldLegendHeightFor(standaloneFieldLegendWidthForExport) : 0;
37589
- const showTopLegend = options.showTopLegend ?? true;
37590
- const legendEntries = showTopLegend ? pertLegendEntries(resolved) : [];
37589
+ const showLegend = options.showLegend ?? true;
37591
37590
  const tagLegendActive = resolveActiveTagGroup(
37592
37591
  resolved.tagGroups,
37593
37592
  resolved.options.activeTag,
37594
37593
  options.activeTagOverride
37595
37594
  );
37596
- const showTagLegend = showTopLegend && resolved.tagGroups.length > 0;
37597
- const tagLegendBlockHeight = showTagLegend ? LEGEND_PILL_HEIGHT + LEGEND_BOTTOM_GAP : 0;
37598
- const legendBlockHeight = (legendEntries.length > 0 ? LEGEND_TOP_GAP + LEGEND_PILL_HEIGHT + LEGEND_BOTTOM_GAP : 0) + tagLegendBlockHeight;
37595
+ const showTagLegend = showLegend && resolved.tagGroups.length > 0;
37596
+ const legendBlockHeight = showTagLegend ? LEGEND_TOP_GAP + LEGEND_PILL_HEIGHT + LEGEND_BOTTOM_GAP : 0;
37599
37597
  const naturalChartWidth = layout.width + DIAGRAM_PADDING11 * 2;
37600
37598
  const minAnalysisRowW = analysisLayer.analysisHasContent ? analysisLayer.minContentWidth + 2 * DIAGRAM_PADDING11 : 0;
37601
37599
  const naturalWidth = Math.max(naturalChartWidth, minAnalysisRowW);
@@ -37618,8 +37616,7 @@ function renderPert(container, resolved, layout, palette, isDark, options = {})
37618
37616
  const sLegendTopGap = ctx.aesthetic(LEGEND_TOP_GAP);
37619
37617
  const sLegendBottomGap = ctx.aesthetic(LEGEND_BOTTOM_GAP);
37620
37618
  const sLegendPillHeight = ctx.structural(LEGEND_PILL_HEIGHT);
37621
- const sTagLegendBlockHeight = showTagLegend ? sLegendPillHeight + sLegendBottomGap : 0;
37622
- const sLegendBlockHeight = (legendEntries.length > 0 ? sLegendTopGap + sLegendPillHeight + sLegendBottomGap : 0) + sTagLegendBlockHeight;
37619
+ const sLegendBlockHeight = showTagLegend ? sLegendTopGap + sLegendPillHeight + sLegendBottomGap : 0;
37623
37620
  const sNodeRadius = ctx.structural(NODE_RADIUS2);
37624
37621
  const sNodeStrokeWidth = ctx.structural(NODE_STROKE_WIDTH10);
37625
37622
  const sNodeFontSize = ctx.text(NODE_FONT_SIZE4);
@@ -37651,17 +37648,8 @@ function renderPert(container, resolved, layout, palette, isDark, options = {})
37651
37648
  }
37652
37649
  const offsetX = Math.max(sDiagramPad, (svgW - layout.width) / 2);
37653
37650
  const offsetY = sDiagramPad + sTitleHeight + sLegendBlockHeight;
37654
- if (legendEntries.length > 0) {
37655
- renderLegendBlock(svg, legendEntries, {
37656
- x: 0,
37657
- y: sDiagramPad + sTitleHeight + sLegendTopGap,
37658
- width: svgW,
37659
- palette,
37660
- isDark
37661
- });
37662
- }
37663
37651
  if (showTagLegend) {
37664
- const tagLegendY = sDiagramPad + sTitleHeight + (legendEntries.length > 0 ? sLegendTopGap + sLegendPillHeight : sLegendTopGap);
37652
+ const tagLegendY = sDiagramPad + sTitleHeight + sLegendTopGap;
37665
37653
  renderTagLegendRow(svg, resolved, palette, isDark, {
37666
37654
  x: 0,
37667
37655
  y: tagLegendY,
@@ -37745,8 +37733,7 @@ function renderPertForExport(content, theme, palette, now) {
37745
37733
  }
37746
37734
  const captionBoxHeight = captionBullets.length > 0 ? captionBullets.length * CAPTION_LINE_HEIGHT + 2 * CAPTION_BOX_PADDING_Y + CAPTION_HEADER_BAND_HEIGHT : 0;
37747
37735
  const captionBlockHeight = captionBullets.length > 0 ? CAPTION_TOP_GAP + captionBoxHeight : 0;
37748
- const legendEntries = pertLegendEntries(resolved);
37749
- const legendBlockHeight = legendEntries.length > 0 ? LEGEND_TOP_GAP + LEGEND_PILL_HEIGHT + LEGEND_BOTTOM_GAP : 0;
37736
+ const legendBlockHeight = resolved.tagGroups.length > 0 ? LEGEND_TOP_GAP + LEGEND_PILL_HEIGHT + LEGEND_BOTTOM_GAP : 0;
37750
37737
  const exportWidth = layout.width + DIAGRAM_PADDING11 * 2;
37751
37738
  const exportHeight = layout.height + DIAGRAM_PADDING11 * 2 + titleHeight + legendBlockHeight + captionBlockHeight;
37752
37739
  const container = document.createElement("div");
@@ -38286,22 +38273,22 @@ function renderEdges2(root, resolved, layout, palette, collapsedSet, sc = {}) {
38286
38273
  if (srcGroup && tgtGroup && srcGroup === tgtGroup && collapsedSet.has(srcGroup)) {
38287
38274
  continue;
38288
38275
  }
38289
- const isCritical2 = criticalSet.has(e.source) && criticalSet.has(e.target);
38276
+ const isCritical = criticalSet.has(e.source) && criticalSet.has(e.target);
38290
38277
  let band;
38291
38278
  if (mcOn) {
38292
38279
  const sc2 = critById.get(e.source);
38293
38280
  const tc = critById.get(e.target);
38294
38281
  const minC = sc2 === null || tc === null || sc2 === void 0 || tc === void 0 ? null : Math.min(sc2, tc);
38295
38282
  band = criticalityBand(minC);
38296
- if (band === null && isCritical2) band = "red";
38283
+ if (band === null && isCritical) band = "red";
38297
38284
  } else {
38298
- band = isCritical2 ? "red" : null;
38285
+ band = isCritical ? "red" : null;
38299
38286
  }
38300
38287
  const path = lineGenerator6(e.points);
38301
38288
  if (!path) continue;
38302
38289
  const sESW = sc.edgeStrokeWidth ?? EDGE_STROKE_WIDTH10;
38303
38290
  const sELFS = sc.edgeLabelFontSize ?? 10;
38304
- layer.append("path").attr("class", "pert-edge").attr("d", path).attr("fill", "none").attr("stroke", bandColor(band, palette, palette.textMuted)).attr("stroke-width", sESW).attr("marker-end", `url(#${bandArrow(band)})`).attr("data-source", e.source).attr("data-target", e.target).attr("data-critical", String(isCritical2)).attr("data-critical-path", String(isCritical2)).attr("data-criticality-band", band ?? "");
38291
+ layer.append("path").attr("class", "pert-edge").attr("d", path).attr("fill", "none").attr("stroke", bandColor(band, palette, palette.textMuted)).attr("stroke-width", sESW).attr("marker-end", `url(#${bandArrow(band)})`).attr("data-source", e.source).attr("data-target", e.target).attr("data-critical", String(isCritical)).attr("data-critical-path", String(isCritical)).attr("data-criticality-band", band ?? "");
38305
38292
  const parsedEdge = edgeByKey.get(`${e.source}->${e.target}`);
38306
38293
  const labelText = parsedEdge ? formatEdgeLabel(parsedEdge) : null;
38307
38294
  if (labelText) {
@@ -38353,7 +38340,7 @@ function renderNodes2(root, _defs, resolved, layout, palette, isDark, sizing, on
38353
38340
  const r = byId.get(node.id);
38354
38341
  if (!r) continue;
38355
38342
  if (r.activity.groupId && collapsedSet.has(r.activity.groupId)) continue;
38356
- const isCritical2 = r.isCriticalPath;
38343
+ const isCritical = r.isCriticalPath;
38357
38344
  const isTbd = tbdSet.has(node.id);
38358
38345
  const dashArray = isTbd ? "4,3" : "none";
38359
38346
  const isTopMu = topMuIds.has(node.id);
@@ -38361,14 +38348,14 @@ function renderNodes2(root, _defs, resolved, layout, palette, isDark, sizing, on
38361
38348
  let band;
38362
38349
  if (mcOn) {
38363
38350
  band = criticalityBand(r.criticality);
38364
- if (band === null && isCritical2) band = "red";
38351
+ if (band === null && isCritical) band = "red";
38365
38352
  } else {
38366
- band = isCritical2 ? "red" : null;
38353
+ band = isCritical ? "red" : null;
38367
38354
  }
38368
38355
  const g = layer.append("g").attr("class", "pert-node").attr("transform", `translate(${node.x}, ${node.y})`).attr("data-activity-id", node.id).attr("data-line-number", String(r.activity.lineNumber)).attr(
38369
38356
  "data-group-id",
38370
38357
  r.activity.groupId !== void 0 ? r.activity.groupId : ""
38371
- ).attr("data-critical-path", String(isCritical2)).attr("data-criticality-band", band ?? "").attr("data-duration-rank", isTopMu ? "top" : isBottomMu ? "bottom" : "");
38358
+ ).attr("data-critical-path", String(isCritical)).attr("data-criticality-band", band ?? "").attr("data-duration-rank", isTopMu ? "top" : isBottomMu ? "bottom" : "");
38372
38359
  if (r.activity.tags) {
38373
38360
  for (const [tagKey, tagValue] of Object.entries(r.activity.tags)) {
38374
38361
  g.attr(`data-tag-${tagKey}`, String(tagValue).toLowerCase());
@@ -38678,69 +38665,6 @@ function computeAnchorPinSet(resolved) {
38678
38665
  }
38679
38666
  return pinned;
38680
38667
  }
38681
- function isCritical(el, mcOn) {
38682
- if (mcOn) {
38683
- return HIGHLIGHT_BANDS.has(el.getAttribute("data-criticality-band") ?? "");
38684
- }
38685
- return el.getAttribute("data-critical-path") === "true";
38686
- }
38687
- function isInHighlightSet(el, kind, mcOn) {
38688
- if (kind === "critical") return isCritical(el, mcOn);
38689
- if (kind === "milestone") {
38690
- return el.getAttribute("data-milestone") === "true";
38691
- }
38692
- return el.hasAttribute("data-anchor");
38693
- }
38694
- function highlightPertSet(container, kind) {
38695
- const svg = container.querySelector("svg");
38696
- if (!svg) return;
38697
- const mcOn = Array.from(svg.querySelectorAll(".pert-edge")).some((e) => {
38698
- const b = e.getAttribute("data-criticality-band");
38699
- return b !== null && b !== "" && b !== "red";
38700
- });
38701
- const candidates = svg.querySelectorAll(
38702
- ".pert-node, .pert-edge, .pert-group-collapsed"
38703
- );
38704
- let anyMatch = false;
38705
- for (const el of candidates) {
38706
- if (isInHighlightSet(el, kind, mcOn)) {
38707
- anyMatch = true;
38708
- break;
38709
- }
38710
- }
38711
- if (!anyMatch) return;
38712
- svg.setAttribute("data-pert-highlight-active", kind);
38713
- for (const el of svg.querySelectorAll(".pert-node, .pert-edge")) {
38714
- el.setAttribute(
38715
- "opacity",
38716
- isInHighlightSet(el, kind, mcOn) ? "1" : String(FADE_OPACITY)
38717
- );
38718
- }
38719
- for (const el of svg.querySelectorAll(".pert-group")) {
38720
- const inSet = el.classList.contains("pert-group-collapsed") && isInHighlightSet(el, kind, mcOn);
38721
- el.setAttribute(
38722
- "opacity",
38723
- inSet ? "1" : String(FADE_OPACITY)
38724
- );
38725
- }
38726
- }
38727
- function highlightPertCriticalPath(container) {
38728
- highlightPertSet(container, "critical");
38729
- }
38730
- function resetPertHighlight(container) {
38731
- const svg = container.querySelector("svg");
38732
- if (!svg) return;
38733
- svg.removeAttribute("data-pert-highlight-active");
38734
- svg.removeAttribute("data-critical-path-active");
38735
- for (const el of svg.querySelectorAll(
38736
- ".pert-node, .pert-edge, .pert-group"
38737
- )) {
38738
- el.removeAttribute("opacity");
38739
- }
38740
- }
38741
- function resetPertCriticalPath(container) {
38742
- resetPertHighlight(container);
38743
- }
38744
38668
  function anchorAnnotationText(resolved) {
38745
38669
  const anchor = resolved.options.anchor;
38746
38670
  if (anchor === null) return null;
@@ -38793,70 +38717,6 @@ function renderCaptionBlock(svg, bullets, args) {
38793
38717
  if (i > 0) tspan.attr("dy", CAPTION_LINE_HEIGHT);
38794
38718
  });
38795
38719
  }
38796
- function pertLegendEntries(resolved) {
38797
- const entries = [];
38798
- if (resolved.activities.length > 0) {
38799
- entries.push({ kind: "critical", label: "Critical Path" });
38800
- }
38801
- if (resolved.options.anchor !== null) {
38802
- entries.push({ kind: "anchor", label: "Anchor" });
38803
- }
38804
- if (resolved.activities.some((a) => a.activity.isMilestone)) {
38805
- entries.push({ kind: "milestone", label: "Milestone" });
38806
- }
38807
- return entries;
38808
- }
38809
- function legendSwatchWidth(kind) {
38810
- if (kind === "critical") return LEGEND_DOT_R * 2;
38811
- if (kind === "anchor") return PIN_ICON_W;
38812
- return LEGEND_FONT_SIZE;
38813
- }
38814
- function legendPillWidth(entry) {
38815
- const labelW = measureLegendText(entry.label, LEGEND_FONT_SIZE);
38816
- return Math.ceil(
38817
- LEGEND_PILL_PADDING_X + legendSwatchWidth(entry.kind) + LEGEND_SWATCH_GAP + labelW + LEGEND_PILL_PADDING_X
38818
- );
38819
- }
38820
- function legendNaturalWidth(entries) {
38821
- if (entries.length === 0) return 0;
38822
- let total = 0;
38823
- for (const e of entries) total += legendPillWidth(e);
38824
- total += (entries.length - 1) * LEGEND_PILL_GAP;
38825
- return total;
38826
- }
38827
- function pertLegendBlockWidth(entries) {
38828
- return legendNaturalWidth(entries);
38829
- }
38830
- function renderLegendBlock(svg, entries, args) {
38831
- if (entries.length === 0) return;
38832
- const { x, y, width, palette, isDark } = args;
38833
- const groupBg = isDark ? mix(palette.surface, palette.bg, 50) : mix(palette.surface, palette.bg, 30);
38834
- const block = svg.append("g").attr("class", "pert-legend").attr("data-pert-legend", "");
38835
- const totalW = legendNaturalWidth(entries);
38836
- let pillX = x + (width - totalW) / 2;
38837
- for (const entry of entries) {
38838
- const pillW = legendPillWidth(entry);
38839
- const pill = block.append("g").attr("class", "pert-legend-entry").attr("data-legend-entry", entry.kind).attr("transform", `translate(${pillX}, ${y})`).style("cursor", "pointer");
38840
- pill.append("rect").attr("class", "pert-legend-pill").attr("width", pillW).attr("height", LEGEND_PILL_HEIGHT).attr("rx", LEGEND_PILL_HEIGHT / 2).attr("ry", LEGEND_PILL_HEIGHT / 2).attr("fill", groupBg);
38841
- const swatchW = legendSwatchWidth(entry.kind);
38842
- const swatchCx = LEGEND_PILL_PADDING_X + swatchW / 2;
38843
- const swatchCy = LEGEND_PILL_HEIGHT / 2;
38844
- if (entry.kind === "critical") {
38845
- pill.append("circle").attr("class", "pert-legend-swatch").attr("cx", swatchCx).attr("cy", swatchCy).attr("r", LEGEND_DOT_R).attr("fill", palette.colors.red);
38846
- } else if (entry.kind === "anchor") {
38847
- drawAnchorPin(
38848
- pill,
38849
- swatchCx - PIN_ICON_W / 2,
38850
- swatchCy,
38851
- palette.textMuted
38852
- );
38853
- } else {
38854
- pill.append("text").attr("class", "pert-legend-swatch").attr("x", swatchCx).attr("y", swatchCy).attr("text-anchor", "middle").attr("dominant-baseline", "central").attr("font-family", FONT_FAMILY).attr("font-size", LEGEND_FONT_SIZE + 1).attr("fill", palette.textMuted).text("\u25C6");
38855
- }
38856
- pill.append("text").attr("class", "pert-legend-label").attr("x", LEGEND_PILL_PADDING_X + swatchW + LEGEND_SWATCH_GAP).attr("y", swatchCy).attr("dominant-baseline", "central").attr("font-family", FONT_FAMILY).attr("font-size", LEGEND_FONT_SIZE).attr("font-weight", 500).attr("fill", palette.textMuted).text(entry.label);
38857
- pillX += pillW + LEGEND_PILL_GAP;
38858
- }
38859
- }
38860
38720
  function renderTagLegendRow(svg, resolved, palette, isDark, args) {
38861
38721
  if (resolved.tagGroups.length === 0) return;
38862
38722
  const { x, y, width, activeGroup, exportMode } = args;
@@ -39303,7 +39163,7 @@ function formatScurveDate(iso) {
39303
39163
  if (month < 0 || month > 11 || isNaN(day)) return iso;
39304
39164
  return `${SCURVE_MONTH_NAMES[month]} ${day}`;
39305
39165
  }
39306
- var d3Selection12, d3Shape8, DIAGRAM_PADDING11, NODE_FONT_SIZE4, NODE_CELL_FONT_SIZE2, NODE_RADIUS2, NODE_STROKE_WIDTH10, NODE_TOP_ROW_HEIGHT, NODE_BOTTOM_ROW_HEIGHT, EDGE_STROKE_WIDTH10, ARROWHEAD_W4, ARROWHEAD_H4, CONTAINER_RADIUS3, CONTAINER_LABEL_FONT_SIZE3, CONTAINER_HEADER_HEIGHT3, COLLAPSE_BAR_HEIGHT7, FADE_OPACITY, DURATION_FADE_OPACITY, PIN_ICON_W, PIN_ICON_H, LEGEND_PILL_HEIGHT, LEGEND_PILL_PADDING_X, LEGEND_PILL_GAP, LEGEND_SWATCH_GAP, LEGEND_FONT_SIZE, LEGEND_TOP_GAP, LEGEND_BOTTOM_GAP, FIELD_LEGEND_HEADER_BAND_HEIGHT, FIELD_LEGEND_CELL_VPAD, FIELD_LEGEND_LABEL_FONT_SIZE, FIELD_LEGEND_DESC_FONT_SIZE, FIELD_LEGEND_DESC_LINE_HEIGHT, FIELD_LEGEND_LABEL_DESC_GAP, FIELD_LEGEND_CELLS, lineGenerator6, FIELD_LEGEND_MIN_W, HIGHLIGHT_BANDS, SUB_BULLET_INDENT, CAPTION_HEADER_BAND_HEIGHT, TORNADO_TOP_N, TORNADO_ROW_HEIGHT, TORNADO_NAME_COL_W, TORNADO_BAR_FONT_SIZE, TORNADO_BAR_HEIGHT, SUMMARY_MIN_W, SUMMARY_MAX_W, ANALYSIS_GAP, COL1_VSTACK_GAP, TORNADO_MIN_W, SCURVE_MIN_W, SCURVE_BOX_HEIGHT, SCURVE_PLOT_PADDING_X, SCURVE_PLOT_PADDING_RIGHT, SCURVE_PLOT_PADDING_BOTTOM, SCURVE_TICK_FONT_SIZE, SCURVE_PERCENTILE_RADIUS, PERT_LEGEND_PILL_HEIGHT, DAYS_PER_UNIT, SCURVE_MONTH_NAMES, UNIT_TO_DAYS_LOCAL2;
39166
+ var d3Selection12, d3Shape8, DIAGRAM_PADDING11, NODE_FONT_SIZE4, NODE_CELL_FONT_SIZE2, NODE_RADIUS2, NODE_STROKE_WIDTH10, NODE_TOP_ROW_HEIGHT, NODE_BOTTOM_ROW_HEIGHT, EDGE_STROKE_WIDTH10, ARROWHEAD_W4, ARROWHEAD_H4, CONTAINER_RADIUS3, CONTAINER_LABEL_FONT_SIZE3, CONTAINER_HEADER_HEIGHT3, COLLAPSE_BAR_HEIGHT7, DURATION_FADE_OPACITY, PIN_ICON_W, PIN_ICON_H, LEGEND_PILL_HEIGHT, LEGEND_TOP_GAP, LEGEND_BOTTOM_GAP, FIELD_LEGEND_HEADER_BAND_HEIGHT, FIELD_LEGEND_CELL_VPAD, FIELD_LEGEND_LABEL_FONT_SIZE, FIELD_LEGEND_DESC_FONT_SIZE, FIELD_LEGEND_DESC_LINE_HEIGHT, FIELD_LEGEND_LABEL_DESC_GAP, FIELD_LEGEND_CELLS, lineGenerator6, FIELD_LEGEND_MIN_W, SUB_BULLET_INDENT, CAPTION_HEADER_BAND_HEIGHT, TORNADO_TOP_N, TORNADO_ROW_HEIGHT, TORNADO_NAME_COL_W, TORNADO_BAR_FONT_SIZE, TORNADO_BAR_HEIGHT, SUMMARY_MIN_W, SUMMARY_MAX_W, ANALYSIS_GAP, COL1_VSTACK_GAP, TORNADO_MIN_W, SCURVE_MIN_W, SCURVE_BOX_HEIGHT, SCURVE_PLOT_PADDING_X, SCURVE_PLOT_PADDING_RIGHT, SCURVE_PLOT_PADDING_BOTTOM, SCURVE_TICK_FONT_SIZE, SCURVE_PERCENTILE_RADIUS, DAYS_PER_UNIT, SCURVE_MONTH_NAMES, UNIT_TO_DAYS_LOCAL2;
39307
39167
  var init_renderer11 = __esm({
39308
39168
  "src/pert/renderer.ts"() {
39309
39169
  "use strict";
@@ -39334,15 +39194,10 @@ var init_renderer11 = __esm({
39334
39194
  CONTAINER_LABEL_FONT_SIZE3 = 13;
39335
39195
  CONTAINER_HEADER_HEIGHT3 = 28;
39336
39196
  COLLAPSE_BAR_HEIGHT7 = 6;
39337
- FADE_OPACITY = 0.15;
39338
39197
  DURATION_FADE_OPACITY = 0.55;
39339
39198
  PIN_ICON_W = 13;
39340
39199
  PIN_ICON_H = 13;
39341
39200
  LEGEND_PILL_HEIGHT = LEGEND_HEIGHT;
39342
- LEGEND_PILL_PADDING_X = 8;
39343
- LEGEND_PILL_GAP = 8;
39344
- LEGEND_SWATCH_GAP = LEGEND_ENTRY_DOT_GAP;
39345
- LEGEND_FONT_SIZE = LEGEND_PILL_FONT_SIZE;
39346
39201
  LEGEND_TOP_GAP = 12;
39347
39202
  LEGEND_BOTTOM_GAP = 12;
39348
39203
  FIELD_LEGEND_HEADER_BAND_HEIGHT = 26;
@@ -39379,7 +39234,6 @@ var init_renderer11 = __esm({
39379
39234
  ];
39380
39235
  lineGenerator6 = d3Shape8.line().x((d) => d.x).y((d) => d.y).curve(d3Shape8.curveBasis);
39381
39236
  FIELD_LEGEND_MIN_W = 220;
39382
- HIGHLIGHT_BANDS = /* @__PURE__ */ new Set(["red", "orange", "yellow"]);
39383
39237
  SUB_BULLET_INDENT = 20;
39384
39238
  CAPTION_HEADER_BAND_HEIGHT = CAPTION_LINE_HEIGHT + 8;
39385
39239
  TORNADO_TOP_N = 10;
@@ -39399,7 +39253,6 @@ var init_renderer11 = __esm({
39399
39253
  SCURVE_PLOT_PADDING_BOTTOM = 44;
39400
39254
  SCURVE_TICK_FONT_SIZE = 13;
39401
39255
  SCURVE_PERCENTILE_RADIUS = 4;
39402
- PERT_LEGEND_PILL_HEIGHT = LEGEND_PILL_HEIGHT;
39403
39256
  DAYS_PER_UNIT = {
39404
39257
  min: 1 / (60 * 24),
39405
39258
  h: 1 / 24,
@@ -40924,31 +40777,31 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
40924
40777
  todayHoverG.on("mouseenter", () => {
40925
40778
  g.selectAll(".gantt-task").attr(
40926
40779
  "opacity",
40927
- FADE_OPACITY2
40780
+ FADE_OPACITY
40928
40781
  );
40929
40782
  g.selectAll(".gantt-milestone").attr(
40930
40783
  "opacity",
40931
- FADE_OPACITY2
40784
+ FADE_OPACITY
40932
40785
  );
40933
40786
  g.selectAll(
40934
40787
  ".gantt-group-bar, .gantt-group-summary"
40935
- ).attr("opacity", FADE_OPACITY2);
40936
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
40937
- svg.selectAll(".gantt-task-label").attr("opacity", FADE_OPACITY2);
40938
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
40788
+ ).attr("opacity", FADE_OPACITY);
40789
+ svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY);
40790
+ svg.selectAll(".gantt-task-label").attr("opacity", FADE_OPACITY);
40791
+ svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY);
40939
40792
  g.selectAll(
40940
40793
  ".gantt-lane-band, .gantt-lane-accent, .gantt-lane-band-group"
40941
- ).attr("opacity", FADE_OPACITY2);
40794
+ ).attr("opacity", FADE_OPACITY);
40942
40795
  g.selectAll(
40943
40796
  ".gantt-dep-arrow, .gantt-dep-arrowhead"
40944
- ).attr("opacity", FADE_OPACITY2);
40797
+ ).attr("opacity", FADE_OPACITY);
40945
40798
  g.selectAll(".gantt-era-group").attr(
40946
40799
  "opacity",
40947
- FADE_OPACITY2
40800
+ FADE_OPACITY
40948
40801
  );
40949
40802
  g.selectAll(".gantt-marker-group").attr(
40950
40803
  "opacity",
40951
- FADE_OPACITY2
40804
+ FADE_OPACITY
40952
40805
  );
40953
40806
  showGanttDateIndicators(
40954
40807
  g,
@@ -41180,28 +41033,28 @@ function applyCriticalPathHighlight(svg, chartG) {
41180
41033
  const el = d3Selection13.select(this);
41181
41034
  el.attr(
41182
41035
  "opacity",
41183
- el.attr("data-critical-path") === "true" ? 1 : FADE_OPACITY2
41036
+ el.attr("data-critical-path") === "true" ? 1 : FADE_OPACITY
41184
41037
  );
41185
41038
  });
41186
- chartG.selectAll(".gantt-milestone").attr("opacity", FADE_OPACITY2);
41187
- chartG.selectAll(".gantt-group-bar, .gantt-group-summary").attr("opacity", FADE_OPACITY2);
41039
+ chartG.selectAll(".gantt-milestone").attr("opacity", FADE_OPACITY);
41040
+ chartG.selectAll(".gantt-group-bar, .gantt-group-summary").attr("opacity", FADE_OPACITY);
41188
41041
  svg.selectAll(".gantt-task-label").each(function() {
41189
41042
  const el = d3Selection13.select(this);
41190
41043
  el.attr(
41191
41044
  "opacity",
41192
- el.attr("data-critical-path") === "true" ? 1 : FADE_OPACITY2
41045
+ el.attr("data-critical-path") === "true" ? 1 : FADE_OPACITY
41193
41046
  );
41194
41047
  });
41195
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41196
- svg.selectAll(".gantt-group-band-bg, .gantt-group-band-accent").attr("opacity", FADE_OPACITY2);
41197
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
41198
- svg.selectAll(".gantt-lane-band-bg, .gantt-lane-band-accent").attr("opacity", FADE_OPACITY2);
41199
- chartG.selectAll(".gantt-lane-band, .gantt-lane-accent").attr("opacity", FADE_OPACITY2);
41048
+ svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY);
41049
+ svg.selectAll(".gantt-group-band-bg, .gantt-group-band-accent").attr("opacity", FADE_OPACITY);
41050
+ svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY);
41051
+ svg.selectAll(".gantt-lane-band-bg, .gantt-lane-band-accent").attr("opacity", FADE_OPACITY);
41052
+ chartG.selectAll(".gantt-lane-band, .gantt-lane-accent").attr("opacity", FADE_OPACITY);
41200
41053
  chartG.selectAll(".gantt-dep-arrow, .gantt-dep-arrowhead").each(function() {
41201
41054
  const el = d3Selection13.select(this);
41202
41055
  el.attr(
41203
41056
  "opacity",
41204
- el.attr("data-critical-path") === "true" ? 0.7 : FADE_OPACITY2
41057
+ el.attr("data-critical-path") === "true" ? 0.7 : FADE_OPACITY
41205
41058
  );
41206
41059
  });
41207
41060
  }
@@ -41380,27 +41233,27 @@ function renderTagLegend(svg, chartG, tagGroups, activeGroupName, chartLeftMargi
41380
41233
  const el = d3Selection13.select(this);
41381
41234
  el.attr(
41382
41235
  "opacity",
41383
- el.attr(`data-tag-${tagKey}`) === ev ? 1 : FADE_OPACITY2
41236
+ el.attr(`data-tag-${tagKey}`) === ev ? 1 : FADE_OPACITY
41384
41237
  );
41385
41238
  });
41386
- chartG.selectAll(".gantt-milestone").attr("opacity", FADE_OPACITY2);
41387
- chartG.selectAll(".gantt-group-bar, .gantt-group-summary").attr("opacity", FADE_OPACITY2);
41239
+ chartG.selectAll(".gantt-milestone").attr("opacity", FADE_OPACITY);
41240
+ chartG.selectAll(".gantt-group-bar, .gantt-group-summary").attr("opacity", FADE_OPACITY);
41388
41241
  svg.selectAll(".gantt-task-label").each(function() {
41389
41242
  const el = d3Selection13.select(this);
41390
41243
  el.attr(
41391
41244
  "opacity",
41392
- el.attr(`data-tag-${tagKey}`) === ev ? 1 : FADE_OPACITY2
41245
+ el.attr(`data-tag-${tagKey}`) === ev ? 1 : FADE_OPACITY
41393
41246
  );
41394
41247
  });
41395
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41248
+ svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY);
41396
41249
  svg.selectAll(".gantt-lane-header").each(function() {
41397
41250
  const el = d3Selection13.select(this);
41398
41251
  el.attr(
41399
41252
  "opacity",
41400
- el.attr(`data-tag-${tagKey}`) === ev ? 1 : FADE_OPACITY2
41253
+ el.attr(`data-tag-${tagKey}`) === ev ? 1 : FADE_OPACITY
41401
41254
  );
41402
41255
  });
41403
- chartG.selectAll(".gantt-lane-band, .gantt-lane-accent").attr("opacity", FADE_OPACITY2);
41256
+ chartG.selectAll(".gantt-lane-band, .gantt-lane-accent").attr("opacity", FADE_OPACITY);
41404
41257
  } else {
41405
41258
  if (criticalPathActive) {
41406
41259
  applyCriticalPathHighlight(svg, chartG);
@@ -41505,27 +41358,27 @@ function renderErasAndMarkers(g, svg, resolved, xScale, innerHeight, palette, er
41505
41358
  eraG.on("mouseenter", () => {
41506
41359
  g.selectAll(".gantt-task").attr(
41507
41360
  "opacity",
41508
- FADE_OPACITY2
41361
+ FADE_OPACITY
41509
41362
  );
41510
41363
  g.selectAll(".gantt-milestone").attr(
41511
41364
  "opacity",
41512
- FADE_OPACITY2
41365
+ FADE_OPACITY
41513
41366
  );
41514
41367
  g.selectAll(
41515
41368
  ".gantt-group-bar, .gantt-group-summary"
41516
- ).attr("opacity", FADE_OPACITY2);
41517
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41518
- svg.selectAll(".gantt-task-label").attr("opacity", FADE_OPACITY2);
41519
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
41369
+ ).attr("opacity", FADE_OPACITY);
41370
+ svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY);
41371
+ svg.selectAll(".gantt-task-label").attr("opacity", FADE_OPACITY);
41372
+ svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY);
41520
41373
  g.selectAll(
41521
41374
  ".gantt-lane-band, .gantt-lane-accent, .gantt-lane-band-group"
41522
- ).attr("opacity", FADE_OPACITY2);
41375
+ ).attr("opacity", FADE_OPACITY);
41523
41376
  g.selectAll(
41524
41377
  ".gantt-dep-arrow, .gantt-dep-arrowhead"
41525
- ).attr("opacity", FADE_OPACITY2);
41378
+ ).attr("opacity", FADE_OPACITY);
41526
41379
  g.selectAll(".gantt-marker-group").attr(
41527
41380
  "opacity",
41528
- FADE_OPACITY2
41381
+ FADE_OPACITY
41529
41382
  );
41530
41383
  eraRect.attr("opacity", hoverEraOpacity);
41531
41384
  if (eraTruncated) eraLabel.text(era.label);
@@ -41583,31 +41436,31 @@ function renderErasAndMarkers(g, svg, resolved, xScale, innerHeight, palette, er
41583
41436
  markerG.on("mouseenter", () => {
41584
41437
  g.selectAll(".gantt-task").attr(
41585
41438
  "opacity",
41586
- FADE_OPACITY2
41439
+ FADE_OPACITY
41587
41440
  );
41588
41441
  g.selectAll(".gantt-milestone").attr(
41589
41442
  "opacity",
41590
- FADE_OPACITY2
41443
+ FADE_OPACITY
41591
41444
  );
41592
41445
  g.selectAll(
41593
41446
  ".gantt-group-bar, .gantt-group-summary"
41594
- ).attr("opacity", FADE_OPACITY2);
41595
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41596
- svg.selectAll(".gantt-task-label").attr("opacity", FADE_OPACITY2);
41597
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
41447
+ ).attr("opacity", FADE_OPACITY);
41448
+ svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY);
41449
+ svg.selectAll(".gantt-task-label").attr("opacity", FADE_OPACITY);
41450
+ svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY);
41598
41451
  g.selectAll(
41599
41452
  ".gantt-lane-band, .gantt-lane-accent, .gantt-lane-band-group"
41600
- ).attr("opacity", FADE_OPACITY2);
41453
+ ).attr("opacity", FADE_OPACITY);
41601
41454
  g.selectAll(
41602
41455
  ".gantt-dep-arrow, .gantt-dep-arrowhead"
41603
- ).attr("opacity", FADE_OPACITY2);
41456
+ ).attr("opacity", FADE_OPACITY);
41604
41457
  g.selectAll(".gantt-era-group").attr(
41605
41458
  "opacity",
41606
- FADE_OPACITY2
41459
+ FADE_OPACITY
41607
41460
  );
41608
41461
  g.selectAll(".gantt-marker-group").attr(
41609
41462
  "opacity",
41610
- FADE_OPACITY2
41463
+ FADE_OPACITY
41611
41464
  );
41612
41465
  markerG.attr("opacity", 1);
41613
41466
  markerLine.attr("opacity", 0.8);
@@ -41683,7 +41536,7 @@ function renderSprintBands(g, svg, resolved, xScale, innerHeight, palette) {
41683
41536
  const id = el.attr("data-task-id");
41684
41537
  el.attr(
41685
41538
  "opacity",
41686
- id && overlappingTaskIds.has(id) ? 1 : FADE_OPACITY2
41539
+ id && overlappingTaskIds.has(id) ? 1 : FADE_OPACITY
41687
41540
  );
41688
41541
  });
41689
41542
  g.selectAll(".gantt-milestone").each(function() {
@@ -41691,7 +41544,7 @@ function renderSprintBands(g, svg, resolved, xScale, innerHeight, palette) {
41691
41544
  const id = el.attr("data-task-id");
41692
41545
  el.attr(
41693
41546
  "opacity",
41694
- id && overlappingTaskIds.has(id) ? 1 : FADE_OPACITY2
41547
+ id && overlappingTaskIds.has(id) ? 1 : FADE_OPACITY
41695
41548
  );
41696
41549
  });
41697
41550
  svg.selectAll(".gantt-task-label").each(function() {
@@ -41699,7 +41552,7 @@ function renderSprintBands(g, svg, resolved, xScale, innerHeight, palette) {
41699
41552
  const id = el.attr("data-task-id");
41700
41553
  el.attr(
41701
41554
  "opacity",
41702
- id && overlappingTaskIds.has(id) ? 1 : FADE_OPACITY2
41555
+ id && overlappingTaskIds.has(id) ? 1 : FADE_OPACITY
41703
41556
  );
41704
41557
  });
41705
41558
  g.selectAll(
@@ -41709,7 +41562,7 @@ function renderSprintBands(g, svg, resolved, xScale, innerHeight, palette) {
41709
41562
  const name = el.attr("data-group");
41710
41563
  el.attr(
41711
41564
  "opacity",
41712
- name && overlappingGroupNames.has(name) ? 1 : FADE_OPACITY2
41565
+ name && overlappingGroupNames.has(name) ? 1 : FADE_OPACITY
41713
41566
  );
41714
41567
  });
41715
41568
  svg.selectAll(".gantt-group-label").each(function() {
@@ -41717,19 +41570,19 @@ function renderSprintBands(g, svg, resolved, xScale, innerHeight, palette) {
41717
41570
  const name = el.attr("data-group");
41718
41571
  el.attr(
41719
41572
  "opacity",
41720
- name && overlappingGroupNames.has(name) ? 1 : FADE_OPACITY2
41573
+ name && overlappingGroupNames.has(name) ? 1 : FADE_OPACITY
41721
41574
  );
41722
41575
  });
41723
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
41576
+ svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY);
41724
41577
  g.selectAll(
41725
41578
  ".gantt-lane-band, .gantt-lane-accent, .gantt-lane-band-group"
41726
- ).attr("opacity", FADE_OPACITY2);
41579
+ ).attr("opacity", FADE_OPACITY);
41727
41580
  g.selectAll(
41728
41581
  ".gantt-dep-arrow, .gantt-dep-arrowhead"
41729
- ).attr("opacity", FADE_OPACITY2);
41582
+ ).attr("opacity", FADE_OPACITY);
41730
41583
  g.selectAll(".gantt-marker-group").attr(
41731
41584
  "opacity",
41732
- FADE_OPACITY2
41585
+ FADE_OPACITY
41733
41586
  );
41734
41587
  sprintRect.attr("opacity", SPRINT_HOVER_OPACITY);
41735
41588
  const startVisible = rawSx >= chartMinX;
@@ -41798,20 +41651,20 @@ function highlightDeps(g, svg, taskId, resolved) {
41798
41651
  g.selectAll(".gantt-task").each(function() {
41799
41652
  const el = d3Selection13.select(this);
41800
41653
  const id = el.attr("data-task-id");
41801
- el.attr("opacity", id && related.has(id) ? 1 : FADE_OPACITY2);
41654
+ el.attr("opacity", id && related.has(id) ? 1 : FADE_OPACITY);
41802
41655
  });
41803
41656
  g.selectAll(".gantt-milestone").attr(
41804
41657
  "opacity",
41805
- FADE_OPACITY2
41658
+ FADE_OPACITY
41806
41659
  );
41807
41660
  g.selectAll(
41808
41661
  ".gantt-group-bar, .gantt-group-summary"
41809
- ).attr("opacity", FADE_OPACITY2);
41810
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41811
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
41662
+ ).attr("opacity", FADE_OPACITY);
41663
+ svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY);
41664
+ svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY);
41812
41665
  g.selectAll(".gantt-lane-band, .gantt-lane-accent").attr(
41813
41666
  "opacity",
41814
- FADE_OPACITY2
41667
+ FADE_OPACITY
41815
41668
  );
41816
41669
  g.selectAll(
41817
41670
  ".gantt-dep-arrow, .gantt-dep-arrowhead"
@@ -41820,52 +41673,52 @@ function highlightDeps(g, svg, taskId, resolved) {
41820
41673
  const from = el.attr("data-dep-from");
41821
41674
  const to = el.attr("data-dep-to");
41822
41675
  const isRelated = from && related.has(from) || to && related.has(to);
41823
- el.attr("opacity", isRelated ? 0.5 : FADE_OPACITY2);
41676
+ el.attr("opacity", isRelated ? 0.5 : FADE_OPACITY);
41824
41677
  });
41825
41678
  g.selectAll(".gantt-marker-group").attr(
41826
41679
  "opacity",
41827
- FADE_OPACITY2
41680
+ FADE_OPACITY
41828
41681
  );
41829
41682
  }
41830
41683
  function highlightGroup(g, svg, groupName) {
41831
41684
  g.selectAll(".gantt-task").each(function() {
41832
41685
  const el = d3Selection13.select(this);
41833
- el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY2);
41686
+ el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY);
41834
41687
  });
41835
41688
  g.selectAll(".gantt-milestone").each(function() {
41836
41689
  const el = d3Selection13.select(this);
41837
- el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY2);
41690
+ el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY);
41838
41691
  });
41839
41692
  g.selectAll(
41840
41693
  ".gantt-group-bar, .gantt-group-summary"
41841
41694
  ).each(function() {
41842
41695
  const el = d3Selection13.select(this);
41843
- el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY2);
41696
+ el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY);
41844
41697
  });
41845
41698
  svg.selectAll(".gantt-group-label").each(function() {
41846
41699
  const el = d3Selection13.select(this);
41847
- el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY2);
41700
+ el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY);
41848
41701
  });
41849
41702
  svg.selectAll(".gantt-task-label").each(function() {
41850
41703
  const el = d3Selection13.select(this);
41851
- el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY2);
41704
+ el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY);
41852
41705
  });
41853
41706
  svg.selectAll(".gantt-group-band-bg, .gantt-group-band-accent").each(function() {
41854
41707
  const el = d3Selection13.select(this);
41855
41708
  el.attr(
41856
41709
  "opacity",
41857
- el.attr("data-group") === groupName ? 1 : FADE_OPACITY2
41710
+ el.attr("data-group") === groupName ? 1 : FADE_OPACITY
41858
41711
  );
41859
41712
  });
41860
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
41861
- svg.selectAll(".gantt-lane-band-bg, .gantt-lane-band-accent").attr("opacity", FADE_OPACITY2);
41713
+ svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY);
41714
+ svg.selectAll(".gantt-lane-band-bg, .gantt-lane-band-accent").attr("opacity", FADE_OPACITY);
41862
41715
  g.selectAll(".gantt-lane-band, .gantt-lane-accent").attr(
41863
41716
  "opacity",
41864
- FADE_OPACITY2
41717
+ FADE_OPACITY
41865
41718
  );
41866
41719
  g.selectAll(".gantt-marker-group").attr(
41867
41720
  "opacity",
41868
- FADE_OPACITY2
41721
+ FADE_OPACITY
41869
41722
  );
41870
41723
  }
41871
41724
  function highlightLane(g, svg, tagKey, laneName) {
@@ -41873,105 +41726,105 @@ function highlightLane(g, svg, tagKey, laneName) {
41873
41726
  const laneValue = laneName.toLowerCase();
41874
41727
  g.selectAll(".gantt-task").each(function() {
41875
41728
  const el = d3Selection13.select(this);
41876
- el.attr("opacity", el.attr(tagAttr) === laneValue ? 1 : FADE_OPACITY2);
41729
+ el.attr("opacity", el.attr(tagAttr) === laneValue ? 1 : FADE_OPACITY);
41877
41730
  });
41878
41731
  g.selectAll(".gantt-milestone").each(function() {
41879
41732
  const el = d3Selection13.select(this);
41880
- el.attr("opacity", el.attr(tagAttr) === laneValue ? 1 : FADE_OPACITY2);
41733
+ el.attr("opacity", el.attr(tagAttr) === laneValue ? 1 : FADE_OPACITY);
41881
41734
  });
41882
41735
  svg.selectAll(".gantt-task-label").each(function() {
41883
41736
  const el = d3Selection13.select(this);
41884
- el.attr("opacity", el.attr(tagAttr) === laneValue ? 1 : FADE_OPACITY2);
41737
+ el.attr("opacity", el.attr(tagAttr) === laneValue ? 1 : FADE_OPACITY);
41885
41738
  });
41886
41739
  svg.selectAll(".gantt-lane-header").each(function() {
41887
41740
  const el = d3Selection13.select(this);
41888
- el.attr("opacity", el.attr("data-lane") === laneName ? 1 : FADE_OPACITY2);
41741
+ el.attr("opacity", el.attr("data-lane") === laneName ? 1 : FADE_OPACITY);
41889
41742
  });
41890
41743
  g.selectAll(".gantt-lane-band-group").each(function() {
41891
41744
  const el = d3Selection13.select(this);
41892
- el.attr("opacity", el.attr("data-lane") === laneName ? 1 : FADE_OPACITY2);
41745
+ el.attr("opacity", el.attr("data-lane") === laneName ? 1 : FADE_OPACITY);
41893
41746
  });
41894
41747
  svg.selectAll(".gantt-lane-band-bg, .gantt-lane-band-accent").each(function() {
41895
41748
  const el = d3Selection13.select(this);
41896
- el.attr("opacity", el.attr("data-lane") === laneName ? 1 : FADE_OPACITY2);
41749
+ el.attr("opacity", el.attr("data-lane") === laneName ? 1 : FADE_OPACITY);
41897
41750
  });
41898
41751
  g.selectAll(
41899
41752
  ".gantt-group-bar, .gantt-group-summary"
41900
- ).attr("opacity", FADE_OPACITY2);
41901
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41902
- svg.selectAll(".gantt-group-band-bg, .gantt-group-band-accent").attr("opacity", FADE_OPACITY2);
41753
+ ).attr("opacity", FADE_OPACITY);
41754
+ svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY);
41755
+ svg.selectAll(".gantt-group-band-bg, .gantt-group-band-accent").attr("opacity", FADE_OPACITY);
41903
41756
  g.selectAll(".gantt-marker-group").attr(
41904
41757
  "opacity",
41905
- FADE_OPACITY2
41758
+ FADE_OPACITY
41906
41759
  );
41907
41760
  }
41908
41761
  function highlightTask(g, svg, taskId) {
41909
41762
  g.selectAll(".gantt-task").each(function() {
41910
41763
  const el = d3Selection13.select(this);
41911
- el.attr("opacity", el.attr("data-task-id") === taskId ? 1 : FADE_OPACITY2);
41764
+ el.attr("opacity", el.attr("data-task-id") === taskId ? 1 : FADE_OPACITY);
41912
41765
  });
41913
41766
  g.selectAll(".gantt-milestone").attr(
41914
41767
  "opacity",
41915
- FADE_OPACITY2
41768
+ FADE_OPACITY
41916
41769
  );
41917
41770
  svg.selectAll(".gantt-task-label").each(function() {
41918
41771
  const el = d3Selection13.select(this);
41919
- el.attr("opacity", el.attr("data-task-id") === taskId ? 1 : FADE_OPACITY2);
41772
+ el.attr("opacity", el.attr("data-task-id") === taskId ? 1 : FADE_OPACITY);
41920
41773
  });
41921
41774
  g.selectAll(
41922
41775
  ".gantt-group-bar, .gantt-group-summary"
41923
- ).attr("opacity", FADE_OPACITY2);
41924
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41925
- svg.selectAll(".gantt-group-band-bg, .gantt-group-band-accent").attr("opacity", FADE_OPACITY2);
41926
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
41927
- svg.selectAll(".gantt-lane-band-bg, .gantt-lane-band-accent").attr("opacity", FADE_OPACITY2);
41776
+ ).attr("opacity", FADE_OPACITY);
41777
+ svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY);
41778
+ svg.selectAll(".gantt-group-band-bg, .gantt-group-band-accent").attr("opacity", FADE_OPACITY);
41779
+ svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY);
41780
+ svg.selectAll(".gantt-lane-band-bg, .gantt-lane-band-accent").attr("opacity", FADE_OPACITY);
41928
41781
  g.selectAll(
41929
41782
  ".gantt-lane-band, .gantt-lane-accent, .gantt-lane-band-group"
41930
- ).attr("opacity", FADE_OPACITY2);
41783
+ ).attr("opacity", FADE_OPACITY);
41931
41784
  g.selectAll(
41932
41785
  ".gantt-dep-arrow, .gantt-dep-arrowhead"
41933
- ).attr("opacity", FADE_OPACITY2);
41786
+ ).attr("opacity", FADE_OPACITY);
41934
41787
  g.selectAll(".gantt-marker-group").attr(
41935
41788
  "opacity",
41936
- FADE_OPACITY2
41789
+ FADE_OPACITY
41937
41790
  );
41938
41791
  }
41939
41792
  function highlightMilestone(g, svg, taskId) {
41940
41793
  g.selectAll(".gantt-task").attr(
41941
41794
  "opacity",
41942
- FADE_OPACITY2
41795
+ FADE_OPACITY
41943
41796
  );
41944
41797
  g.selectAll(".gantt-milestone").each(function() {
41945
41798
  const el = d3Selection13.select(this);
41946
- el.attr("opacity", el.attr("data-task-id") === taskId ? 1 : FADE_OPACITY2);
41799
+ el.attr("opacity", el.attr("data-task-id") === taskId ? 1 : FADE_OPACITY);
41947
41800
  });
41948
41801
  svg.selectAll(".gantt-task-label").each(function() {
41949
41802
  const el = d3Selection13.select(this);
41950
- el.attr("opacity", el.attr("data-task-id") === taskId ? 1 : FADE_OPACITY2);
41803
+ el.attr("opacity", el.attr("data-task-id") === taskId ? 1 : FADE_OPACITY);
41951
41804
  });
41952
41805
  g.selectAll(
41953
41806
  ".gantt-group-bar, .gantt-group-summary"
41954
- ).attr("opacity", FADE_OPACITY2);
41955
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41956
- svg.selectAll(".gantt-group-band-bg, .gantt-group-band-accent").attr("opacity", FADE_OPACITY2);
41957
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
41958
- svg.selectAll(".gantt-lane-band-bg, .gantt-lane-band-accent").attr("opacity", FADE_OPACITY2);
41807
+ ).attr("opacity", FADE_OPACITY);
41808
+ svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY);
41809
+ svg.selectAll(".gantt-group-band-bg, .gantt-group-band-accent").attr("opacity", FADE_OPACITY);
41810
+ svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY);
41811
+ svg.selectAll(".gantt-lane-band-bg, .gantt-lane-band-accent").attr("opacity", FADE_OPACITY);
41959
41812
  g.selectAll(
41960
41813
  ".gantt-lane-band, .gantt-lane-accent, .gantt-lane-band-group"
41961
- ).attr("opacity", FADE_OPACITY2);
41814
+ ).attr("opacity", FADE_OPACITY);
41962
41815
  g.selectAll(
41963
41816
  ".gantt-dep-arrow, .gantt-dep-arrowhead"
41964
- ).attr("opacity", FADE_OPACITY2);
41817
+ ).attr("opacity", FADE_OPACITY);
41965
41818
  g.selectAll(".gantt-marker-group").attr(
41966
41819
  "opacity",
41967
- FADE_OPACITY2
41820
+ FADE_OPACITY
41968
41821
  );
41969
41822
  }
41970
41823
  function highlightTaskLabel(svg, lineNumber) {
41971
41824
  const ln = String(lineNumber);
41972
41825
  svg.selectAll(".gantt-task-label").each(function() {
41973
41826
  const el = d3Selection13.select(this);
41974
- el.attr("opacity", el.attr("data-line-number") === ln ? 1 : FADE_OPACITY2);
41827
+ el.attr("opacity", el.attr("data-line-number") === ln ? 1 : FADE_OPACITY);
41975
41828
  });
41976
41829
  }
41977
41830
  function resetTaskLabels(svg) {
@@ -42245,7 +42098,7 @@ function renderTimeScaleHorizontal(g, scale, _innerWidth, innerHeight, textColor
42245
42098
  g.append("text").attr("class", "gantt-scale-tick").attr("x", tick.pos).attr("y", innerHeight + tickLen + 12).attr("text-anchor", "middle").attr("font-size", "10px").attr("fill", textColor).attr("opacity", opacity).text(tick.label);
42246
42099
  }
42247
42100
  }
42248
- var d3Scale, d3Selection13, BAR_H, ROW_GAP, GROUP_GAP2, MILESTONE_SIZE, MIN_LEFT_MARGIN, BOTTOM_MARGIN, RIGHT_MARGIN, CHAR_W2, LABEL_PAD2, LABEL_GAP, BAND_ACCENT_W, BAND_RADIUS, bandClipCounter, JS_DAY_TO_WEEKDAY2, ERA_COLORS, SPRINT_BAND_OPACITY, SPRINT_HOVER_OPACITY, SPRINT_BOUNDARY_OPACITY, FADE_OPACITY2, MONTH_ABBR2;
42101
+ var d3Scale, d3Selection13, BAR_H, ROW_GAP, GROUP_GAP2, MILESTONE_SIZE, MIN_LEFT_MARGIN, BOTTOM_MARGIN, RIGHT_MARGIN, CHAR_W2, LABEL_PAD2, LABEL_GAP, BAND_ACCENT_W, BAND_RADIUS, bandClipCounter, JS_DAY_TO_WEEKDAY2, ERA_COLORS, SPRINT_BAND_OPACITY, SPRINT_HOVER_OPACITY, SPRINT_BOUNDARY_OPACITY, FADE_OPACITY, MONTH_ABBR2;
42249
42102
  var init_renderer12 = __esm({
42250
42103
  "src/gantt/renderer.ts"() {
42251
42104
  "use strict";
@@ -42288,7 +42141,7 @@ var init_renderer12 = __esm({
42288
42141
  SPRINT_BAND_OPACITY = 0.05;
42289
42142
  SPRINT_HOVER_OPACITY = 0.12;
42290
42143
  SPRINT_BOUNDARY_OPACITY = 0.3;
42291
- FADE_OPACITY2 = 0.1;
42144
+ FADE_OPACITY = 0.1;
42292
42145
  MONTH_ABBR2 = [
42293
42146
  "Jan",
42294
42147
  "Feb",
@@ -47823,7 +47676,8 @@ function layoutMap(resolved, data, size, opts) {
47823
47676
  palette.bg,
47824
47677
  mutedBasemap ? isDark ? MUTED_FOREIGN_DARK : MUTED_FOREIGN_LIGHT : isDark ? FOREIGN_TINT_DARK : FOREIGN_TINT_LIGHT
47825
47678
  );
47826
- const colorizeActive = resolved.directives.noColorize !== true && !hasRamp && resolved.tagGroups.length === 0;
47679
+ const hasDirectColor = resolved.regions.some((r) => r.color !== void 0);
47680
+ const colorizeActive = resolved.directives.noColorize !== true && !hasRamp && !hasDirectColor && resolved.tagGroups.length === 0;
47827
47681
  const colorByIso = /* @__PURE__ */ new Map();
47828
47682
  if (colorizeActive) {
47829
47683
  const adjacency = /* @__PURE__ */ new Map();
@@ -47919,16 +47773,17 @@ function layoutMap(resolved, data, size, opts) {
47919
47773
  };
47920
47774
  }
47921
47775
  }
47776
+ const shownTitle = resolved.directives.noTitle ? null : resolved.title;
47922
47777
  const TITLE_GAP2 = 16;
47923
47778
  let topPad = FIT_PAD;
47924
- if (resolved.title && resolved.pois.length > 0) {
47779
+ if (shownTitle && resolved.pois.length > 0) {
47925
47780
  const bannerBottom = (resolved.subtitle ? TITLE_Y + TITLE_FONT_SIZE : TITLE_Y) + TITLE_FONT_SIZE / 2;
47926
47781
  topPad = Math.max(FIT_PAD, bannerBottom + TITLE_GAP2);
47927
47782
  }
47928
47783
  const legendBand = mapLegendBand(legend, {
47929
47784
  width,
47930
47785
  mode: opts.legendMode ?? "preview",
47931
- hasTitle: Boolean(resolved.title),
47786
+ hasTitle: Boolean(shownTitle),
47932
47787
  hasSubtitle: Boolean(resolved.subtitle)
47933
47788
  });
47934
47789
  if (legendBand > topPad) topPad = legendBand;
@@ -49017,7 +48872,7 @@ function layoutMap(resolved, data, size, opts) {
49017
48872
  width,
49018
48873
  height,
49019
48874
  background: water,
49020
- title: resolved.title,
48875
+ title: shownTitle,
49021
48876
  ...resolved.subtitle !== void 0 && { subtitle: resolved.subtitle },
49022
48877
  ...resolved.caption !== void 0 && { caption: resolved.caption },
49023
48878
  regions,
@@ -49427,9 +49282,10 @@ function renderMap(container, resolved, data, palette, isDark, onClickItem, expo
49427
49282
  wireSync(lt, leg.lineNumber);
49428
49283
  }
49429
49284
  });
49285
+ const clusterUi = !exportDims && !resolved.directives.noClusterPois;
49430
49286
  const gSpider = svg.append("g").attr("class", "dgmo-map-spider");
49431
49287
  for (const cl of layout.clusters) {
49432
- if (!exportDims) {
49288
+ if (clusterUi) {
49433
49289
  gSpider.append("circle").attr("cx", cl.cx).attr("cy", cl.cy).attr("r", cl.hitR).attr("fill", "transparent").attr("data-cluster-hit", cl.id).style("cursor", "pointer");
49434
49290
  }
49435
49291
  for (const leg of cl.legs) {
@@ -49521,13 +49377,18 @@ function renderMap(container, resolved, data, palette, isDark, onClickItem, expo
49521
49377
  }
49522
49378
  wireSync(t, lab.lineNumber);
49523
49379
  }
49524
- if (!exportDims && layout.clusters.length) {
49380
+ if (clusterUi && layout.clusters.length) {
49525
49381
  const gBadge = svg.append("g").attr("class", "dgmo-map-cluster-badges");
49526
49382
  for (const cl of layout.clusters) {
49527
49383
  const g = gBadge.append("g").attr("data-cluster", cl.id).style("opacity", 0).style("pointer-events", "none");
49528
49384
  const R = 9;
49529
49385
  g.append("circle").attr("cx", cl.cx).attr("cy", cl.cy).attr("r", R).attr("fill", mix(palette.textMuted, palette.bg, 35)).attr("stroke", palette.textMuted).attr("stroke-width", 1);
49530
49386
  g.append("circle").attr("cx", cl.cx).attr("cy", cl.cy).attr("r", R + 2.5).attr("fill", "none").attr("stroke", palette.textMuted).attr("stroke-width", 1);
49387
+ const beadR = R + 2.5;
49388
+ for (const leg of cl.legs) {
49389
+ const a = Math.atan2(leg.y2 - cl.cy, leg.x2 - cl.cx);
49390
+ g.append("circle").attr("class", "dgmo-map-cluster-bead").attr("cx", cl.cx + beadR * Math.cos(a)).attr("cy", cl.cy + beadR * Math.sin(a)).attr("r", 1.8).attr("fill", leg.color).attr("stroke", palette.bg).attr("stroke-width", 0.5);
49391
+ }
49531
49392
  emitText(
49532
49393
  g,
49533
49394
  cl.cx,
@@ -52453,10 +52314,12 @@ function renderSequenceDiagram(container, parsed, palette, isDark, _onNavigateTo
52453
52314
  isDark ? 15 : 20
52454
52315
  ) : isDark ? palette.surface : palette.bg;
52455
52316
  const strokeColor = groupTagColor || palette.textMuted;
52456
- const groupG = svg.append("g").attr("class", "group-box-wrapper").attr("data-group-toggle", "").attr("data-group-line", String(group.lineNumber)).attr("cursor", "pointer");
52317
+ const groupG = svg.append("g").attr("class", "group-box-wrapper").attr("data-group-toggle", "").attr("data-group-line", String(group.lineNumber)).attr("tabindex", "0").attr("role", "button").attr("aria-expanded", "true").attr("cursor", "pointer");
52457
52318
  groupG.append("title").text("Click to collapse");
52458
- groupG.append("rect").attr("x", minX).attr("y", boxY).attr("width", maxX - minX).attr("height", boxH).attr("rx", 6).attr("fill", fillColor).attr("stroke", strokeColor).attr("stroke-width", 1).attr("stroke-opacity", 0.5).attr("class", "group-box");
52459
- groupG.append("text").attr("x", minX + 8).attr("y", boxY + GROUP_LABEL_SIZE + 4).attr("fill", strokeColor).attr("font-size", GROUP_LABEL_SIZE).attr("font-weight", "bold").attr("opacity", 0.7).attr("class", "group-label").text(group.name);
52319
+ groupG.append("rect").attr("x", minX).attr("y", boxY).attr("width", maxX - minX).attr("height", boxH).attr("rx", 6).attr("fill", fillColor).attr("stroke", strokeColor).attr("stroke-width", 1).attr("stroke-opacity", 0.5).attr("pointer-events", "none").attr("class", "group-box");
52320
+ groupG.append("rect").attr("x", minX).attr("y", boxY).attr("width", maxX - minX).attr("height", participantStartY - boxY).attr("fill", "transparent").attr("class", "group-label-hit");
52321
+ groupG.append("text").attr("x", minX + 8).attr("y", boxY + GROUP_LABEL_SIZE + 4).attr("fill", strokeColor).attr("font-size", GROUP_LABEL_SIZE).attr("opacity", 0.7).attr("pointer-events", "none").attr("class", "group-chevron").text("\u25BE");
52322
+ groupG.append("text").attr("x", minX + 8 + GROUP_LABEL_SIZE + 2).attr("y", boxY + GROUP_LABEL_SIZE + 4).attr("fill", strokeColor).attr("font-size", GROUP_LABEL_SIZE).attr("font-weight", "bold").attr("opacity", 0.7).attr("pointer-events", "none").attr("class", "group-label").text(group.name);
52460
52323
  }
52461
52324
  const lifelineStartY = lifelineStartY0;
52462
52325
  participants.forEach((participant) => {
@@ -52498,7 +52361,7 @@ function renderSequenceDiagram(container, parsed, palette, isDark, _onNavigateTo
52498
52361
  const participantG = svg.select(
52499
52362
  `.participant[data-participant-id="${participant.id}"]`
52500
52363
  );
52501
- participantG.attr("data-group-toggle", "").attr("data-group-line", String(meta.lineNumber)).attr("cursor", "pointer");
52364
+ participantG.attr("data-group-toggle", "").attr("data-group-line", String(meta.lineNumber)).attr("tabindex", "0").attr("role", "button").attr("aria-expanded", "false").attr("cursor", "pointer");
52502
52365
  participantG.append("title").text("Click to expand");
52503
52366
  const pFill = effectiveTagColor ? mix(
52504
52367
  effectiveTagColor,
@@ -54477,7 +54340,7 @@ function renderArcDiagram(container, parsed, palette, _isDark, onClickItem, expo
54477
54340
  neighbors2.get(link.source).add(link.target);
54478
54341
  neighbors2.get(link.target).add(link.source);
54479
54342
  }
54480
- const FADE_OPACITY3 = 0.1;
54343
+ const FADE_OPACITY2 = 0.1;
54481
54344
  function handleMouseEnter(hovered) {
54482
54345
  const connected = neighbors2.get(hovered);
54483
54346
  g.selectAll(".arc-link").each(function() {
@@ -54485,13 +54348,13 @@ function renderArcDiagram(container, parsed, palette, _isDark, onClickItem, expo
54485
54348
  const src = el.attr("data-source");
54486
54349
  const tgt = el.attr("data-target");
54487
54350
  const isRelated = src === hovered || tgt === hovered;
54488
- el.attr("stroke-opacity", isRelated ? 0.85 : FADE_OPACITY3);
54351
+ el.attr("stroke-opacity", isRelated ? 0.85 : FADE_OPACITY2);
54489
54352
  });
54490
54353
  g.selectAll(".arc-node").each(function() {
54491
54354
  const el = d3Selection23.select(this);
54492
54355
  const name = el.attr("data-node");
54493
54356
  const isRelated = name === hovered || connected.has(name);
54494
- el.attr("opacity", isRelated ? 1 : FADE_OPACITY3);
54357
+ el.attr("opacity", isRelated ? 1 : FADE_OPACITY2);
54495
54358
  });
54496
54359
  }
54497
54360
  function handleMouseLeave() {
@@ -54515,11 +54378,11 @@ function renderArcDiagram(container, parsed, palette, _isDark, onClickItem, expo
54515
54378
  g.selectAll(".arc-link").each(function() {
54516
54379
  const el = d3Selection23.select(this);
54517
54380
  const isRelated = members.has(el.attr("data-source")) || members.has(el.attr("data-target"));
54518
- el.attr("stroke-opacity", isRelated ? 0.85 : FADE_OPACITY3);
54381
+ el.attr("stroke-opacity", isRelated ? 0.85 : FADE_OPACITY2);
54519
54382
  });
54520
54383
  g.selectAll(".arc-node").each(function() {
54521
54384
  const el = d3Selection23.select(this);
54522
- el.attr("opacity", members.has(el.attr("data-node")) ? 1 : FADE_OPACITY3);
54385
+ el.attr("opacity", members.has(el.attr("data-node")) ? 1 : FADE_OPACITY2);
54523
54386
  });
54524
54387
  g.selectAll(".arc-group-band").each(function() {
54525
54388
  const el = d3Selection23.select(this);
@@ -55041,23 +54904,23 @@ function setupTimeline(container, parsed, palette, isDark, exportDims, activeTag
55041
54904
  };
55042
54905
  }
55043
54906
  function makeTimelineHoverHelpers() {
55044
- const FADE_OPACITY3 = 0.1;
54907
+ const FADE_OPACITY2 = 0.1;
55045
54908
  function fadeToGroup(g, groupName) {
55046
54909
  g.selectAll(".tl-event").each(function() {
55047
54910
  const el = d3Selection23.select(this);
55048
54911
  const evGroup = el.attr("data-group");
55049
- el.attr("opacity", evGroup === groupName ? 1 : FADE_OPACITY3);
54912
+ el.attr("opacity", evGroup === groupName ? 1 : FADE_OPACITY2);
55050
54913
  });
55051
54914
  g.selectAll(".tl-legend-item, .tl-lane-header").each(
55052
54915
  function() {
55053
54916
  const el = d3Selection23.select(this);
55054
54917
  const name = el.attr("data-group");
55055
- el.attr("opacity", name === groupName ? 1 : FADE_OPACITY3);
54918
+ el.attr("opacity", name === groupName ? 1 : FADE_OPACITY2);
55056
54919
  }
55057
54920
  );
55058
54921
  g.selectAll(".tl-marker").attr(
55059
54922
  "opacity",
55060
- FADE_OPACITY3
54923
+ FADE_OPACITY2
55061
54924
  );
55062
54925
  }
55063
54926
  function fadeToEra(g, eraStart, eraEnd) {
@@ -55067,40 +54930,40 @@ function makeTimelineHoverHelpers() {
55067
54930
  const endDate = el.attr("data-end-date");
55068
54931
  const evEnd = endDate ? parseFloat(endDate) : date;
55069
54932
  const inside = evEnd >= eraStart && date <= eraEnd;
55070
- el.attr("opacity", inside ? 1 : FADE_OPACITY3);
54933
+ el.attr("opacity", inside ? 1 : FADE_OPACITY2);
55071
54934
  });
55072
54935
  g.selectAll(".tl-legend-item, .tl-lane-header").attr(
55073
54936
  "opacity",
55074
- FADE_OPACITY3
54937
+ FADE_OPACITY2
55075
54938
  );
55076
54939
  g.selectAll(".tl-era").each(function() {
55077
54940
  const el = d3Selection23.select(this);
55078
54941
  const s = parseFloat(el.attr("data-era-start"));
55079
54942
  const e = parseFloat(el.attr("data-era-end"));
55080
54943
  const isSelf = s === eraStart && e === eraEnd;
55081
- el.attr("opacity", isSelf ? 1 : FADE_OPACITY3);
54944
+ el.attr("opacity", isSelf ? 1 : FADE_OPACITY2);
55082
54945
  });
55083
54946
  g.selectAll(".tl-marker").each(function() {
55084
54947
  const el = d3Selection23.select(this);
55085
54948
  const date = parseFloat(el.attr("data-marker-date"));
55086
54949
  const inside = date >= eraStart && date <= eraEnd;
55087
- el.attr("opacity", inside ? 1 : FADE_OPACITY3);
54950
+ el.attr("opacity", inside ? 1 : FADE_OPACITY2);
55088
54951
  });
55089
54952
  }
55090
54953
  function fadeToMarker(g, markerDate) {
55091
54954
  g.selectAll(".tl-event").attr(
55092
54955
  "opacity",
55093
- FADE_OPACITY3
54956
+ FADE_OPACITY2
55094
54957
  );
55095
- g.selectAll(".tl-era").attr("opacity", FADE_OPACITY3);
54958
+ g.selectAll(".tl-era").attr("opacity", FADE_OPACITY2);
55096
54959
  g.selectAll(".tl-legend-item, .tl-lane-header").attr(
55097
54960
  "opacity",
55098
- FADE_OPACITY3
54961
+ FADE_OPACITY2
55099
54962
  );
55100
54963
  g.selectAll(".tl-marker").each(function() {
55101
54964
  const el = d3Selection23.select(this);
55102
54965
  const date = parseFloat(el.attr("data-marker-date"));
55103
- el.attr("opacity", date === markerDate ? 1 : FADE_OPACITY3);
54966
+ el.attr("opacity", date === markerDate ? 1 : FADE_OPACITY2);
55104
54967
  });
55105
54968
  }
55106
54969
  function fadeReset(g) {
@@ -55114,15 +54977,15 @@ function makeTimelineHoverHelpers() {
55114
54977
  g.selectAll(".tl-event").each(function() {
55115
54978
  const el = d3Selection23.select(this);
55116
54979
  const val = el.attr(attrName);
55117
- el.attr("opacity", val === tagValue ? 1 : FADE_OPACITY3);
54980
+ el.attr("opacity", val === tagValue ? 1 : FADE_OPACITY2);
55118
54981
  });
55119
54982
  g.selectAll(".tl-legend-item, .tl-lane-header").attr(
55120
54983
  "opacity",
55121
- FADE_OPACITY3
54984
+ FADE_OPACITY2
55122
54985
  );
55123
54986
  g.selectAll(".tl-marker").attr(
55124
54987
  "opacity",
55125
- FADE_OPACITY3
54988
+ FADE_OPACITY2
55126
54989
  );
55127
54990
  g.selectAll(".tl-tag-legend-entry").each(function() {
55128
54991
  const el = d3Selection23.select(this);
@@ -55131,7 +54994,7 @@ function makeTimelineHoverHelpers() {
55131
54994
  const entryGroup = el.attr("data-tag-group");
55132
54995
  el.attr(
55133
54996
  "opacity",
55134
- entryGroup === tagKey && entryValue === tagValue ? 1 : FADE_OPACITY3
54997
+ entryGroup === tagKey && entryValue === tagValue ? 1 : FADE_OPACITY2
55135
54998
  );
55136
54999
  });
55137
55000
  }
@@ -55141,7 +55004,7 @@ function makeTimelineHoverHelpers() {
55141
55004
  }
55142
55005
  }
55143
55006
  return {
55144
- FADE_OPACITY: FADE_OPACITY3,
55007
+ FADE_OPACITY: FADE_OPACITY2,
55145
55008
  fadeToGroup,
55146
55009
  fadeToEra,
55147
55010
  fadeToMarker,
@@ -55153,7 +55016,7 @@ function makeTimelineHoverHelpers() {
55153
55016
  function renderTimelineTagLegendOverlay(container, parsed, palette, isDark, setup, hovers, onClickItem, exportDims, swimlaneTagGroup, activeTagGroup, onTagStateChange, viewMode, exportMode) {
55154
55017
  if (parsed.timelineTagGroups.length === 0) return;
55155
55018
  const { width, textColor, groupColorMap, solid } = setup;
55156
- const { FADE_OPACITY: FADE_OPACITY3, fadeReset, fadeToTagValue } = hovers;
55019
+ const { FADE_OPACITY: FADE_OPACITY2, fadeReset, fadeToTagValue } = hovers;
55157
55020
  const title = parsed.noTitle ? null : parsed.title;
55158
55021
  const { timelineEvents } = parsed;
55159
55022
  const LG_HEIGHT = LEGEND_HEIGHT;
@@ -55243,7 +55106,7 @@ function renderTimelineTagLegendOverlay(container, parsed, palette, isDark, setu
55243
55106
  const eg = el.attr("data-tag-group") ?? el.node()?.closest?.("[data-tag-group]")?.getAttribute("data-tag-group");
55244
55107
  el.attr(
55245
55108
  "opacity",
55246
- eg === tagKey && ev === tagVal ? 1 : FADE_OPACITY3
55109
+ eg === tagKey && ev === tagVal ? 1 : FADE_OPACITY2
55247
55110
  );
55248
55111
  });
55249
55112
  } else {
@@ -58058,6 +57921,9 @@ async function renderForExport(content, theme, palette, viewState, options) {
58058
57921
  const { renderSequenceDiagram: renderSequenceDiagram2 } = await Promise.resolve().then(() => (init_renderer20(), renderer_exports20));
58059
57922
  const seqParsed = parseSequenceDgmo2(content);
58060
57923
  if (seqParsed.error || seqParsed.participants.length === 0) return "";
57924
+ const collapsedSections = viewState?.cs ? new Set(viewState.cs) : void 0;
57925
+ const collapsedGroups = viewState?.cg ? new Set(viewState.cg.map(Number).filter((n) => Number.isFinite(n))) : void 0;
57926
+ const seqActiveTagGroup = viewState?.tag ?? options?.tagGroup;
58061
57927
  renderSequenceDiagram2(
58062
57928
  container,
58063
57929
  seqParsed,
@@ -58066,9 +57932,11 @@ async function renderForExport(content, theme, palette, viewState, options) {
58066
57932
  void 0,
58067
57933
  {
58068
57934
  exportWidth: EXPORT_WIDTH,
58069
- ...options?.tagGroup !== void 0 && {
58070
- activeTagGroup: options.tagGroup
58071
- }
57935
+ ...seqActiveTagGroup !== void 0 && {
57936
+ activeTagGroup: seqActiveTagGroup
57937
+ },
57938
+ ...collapsedSections !== void 0 && { collapsedSections },
57939
+ ...collapsedGroups !== void 0 && { collapsedGroups }
58072
57940
  }
58073
57941
  );
58074
57942
  } else if (parsed.type === "wordcloud") {
@@ -58774,7 +58642,6 @@ __export(advanced_exports, {
58774
58642
  LEGEND_HEIGHT: () => LEGEND_HEIGHT,
58775
58643
  METADATA_KEY_SET: () => METADATA_KEY_SET,
58776
58644
  MIN_PRIMARY_SCORE: () => MIN_PRIMARY_SCORE,
58777
- PERT_LEGEND_PILL_HEIGHT: () => PERT_LEGEND_PILL_HEIGHT,
58778
58645
  PIPE_METADATA: () => PIPE_METADATA,
58779
58646
  RACI_ERROR_CODES: () => RACI_ERROR_CODES,
58780
58647
  RACI_VARIANTS: () => VARIANTS,
@@ -58851,8 +58718,6 @@ __export(advanced_exports, {
58851
58718
  gruvboxPalette: () => gruvboxPalette,
58852
58719
  hexToHSL: () => hexToHSL,
58853
58720
  hexToHSLString: () => hexToHSLString,
58854
- highlightPertCriticalPath: () => highlightPertCriticalPath,
58855
- highlightPertSet: () => highlightPertSet,
58856
58721
  hslToHex: () => hslToHex,
58857
58722
  inferParticipantType: () => inferParticipantType,
58858
58723
  inferRoles: () => inferRoles,
@@ -58942,8 +58807,6 @@ __export(advanced_exports, {
58942
58807
  parseTimelineDate: () => parseTimelineDate,
58943
58808
  parseVisualization: () => parseVisualization,
58944
58809
  parseWireframe: () => parseWireframe,
58945
- pertLegendBlockWidth: () => pertLegendBlockWidth,
58946
- pertLegendEntries: () => pertLegendEntries,
58947
58810
  raciCellAppendMarker: () => cellAppendMarker,
58948
58811
  raciCellCycle: () => cellCycle,
58949
58812
  raciCellRemove: () => cellRemove,
@@ -58990,7 +58853,6 @@ __export(advanced_exports, {
58990
58853
  renderPert: () => renderPert,
58991
58854
  renderPertAnalysisBlock: () => renderPertAnalysisBlock,
58992
58855
  renderPertForExport: () => renderPertForExport,
58993
- renderPertLegendBlock: () => renderLegendBlock,
58994
58856
  renderPyramid: () => renderPyramid,
58995
58857
  renderPyramidForExport: () => renderPyramidForExport,
58996
58858
  renderQuadrant: () => renderQuadrant,
@@ -59012,8 +58874,6 @@ __export(advanced_exports, {
59012
58874
  renderVenn: () => renderVenn,
59013
58875
  renderWireframe: () => renderWireframe,
59014
58876
  renderWordCloud: () => renderWordCloud,
59015
- resetPertCriticalPath: () => resetPertCriticalPath,
59016
- resetPertHighlight: () => resetPertHighlight,
59017
58877
  resolveColor: () => resolveColor,
59018
58878
  resolveColorWithDiagnostic: () => resolveColorWithDiagnostic,
59019
58879
  resolveMap: () => resolveMap,
@@ -60857,6 +60717,7 @@ var COMPLETION_REGISTRY = /* @__PURE__ */ new Map([
60857
60717
  description: "Which tag group leads when several are present"
60858
60718
  },
60859
60719
  caption: { description: "Caption line (data-source attribution)" },
60720
+ "no-title": { description: "Suppress the title banner" },
60860
60721
  "no-legend": { description: "Suppress the legend" },
60861
60722
  "no-coastline": {
60862
60723
  description: "Turn off coastal water-lines (on by default)"
@@ -60873,6 +60734,9 @@ var COMPLETION_REGISTRY = /* @__PURE__ */ new Map([
60873
60734
  "no-poi-labels": { description: "Turn off POI labels (on by default)" },
60874
60735
  "no-colorize": {
60875
60736
  description: "Force plain green-land reference dress (regions are auto-coloured by default)"
60737
+ },
60738
+ "no-cluster-pois": {
60739
+ description: "Always fan out coincident POI markers instead of collapsing them into a count badge"
60876
60740
  }
60877
60741
  })
60878
60742
  ]
@@ -62327,7 +62191,6 @@ function formatLineDiff(path, original, migrated) {
62327
62191
  LEGEND_HEIGHT,
62328
62192
  METADATA_KEY_SET,
62329
62193
  MIN_PRIMARY_SCORE,
62330
- PERT_LEGEND_PILL_HEIGHT,
62331
62194
  PIPE_METADATA,
62332
62195
  RACI_ERROR_CODES,
62333
62196
  RACI_VARIANTS,
@@ -62404,8 +62267,6 @@ function formatLineDiff(path, original, migrated) {
62404
62267
  gruvboxPalette,
62405
62268
  hexToHSL,
62406
62269
  hexToHSLString,
62407
- highlightPertCriticalPath,
62408
- highlightPertSet,
62409
62270
  hslToHex,
62410
62271
  inferParticipantType,
62411
62272
  inferRoles,
@@ -62495,8 +62356,6 @@ function formatLineDiff(path, original, migrated) {
62495
62356
  parseTimelineDate,
62496
62357
  parseVisualization,
62497
62358
  parseWireframe,
62498
- pertLegendBlockWidth,
62499
- pertLegendEntries,
62500
62359
  raciCellAppendMarker,
62501
62360
  raciCellCycle,
62502
62361
  raciCellRemove,
@@ -62543,7 +62402,6 @@ function formatLineDiff(path, original, migrated) {
62543
62402
  renderPert,
62544
62403
  renderPertAnalysisBlock,
62545
62404
  renderPertForExport,
62546
- renderPertLegendBlock,
62547
62405
  renderPyramid,
62548
62406
  renderPyramidForExport,
62549
62407
  renderQuadrant,
@@ -62565,8 +62423,6 @@ function formatLineDiff(path, original, migrated) {
62565
62423
  renderVenn,
62566
62424
  renderWireframe,
62567
62425
  renderWordCloud,
62568
- resetPertCriticalPath,
62569
- resetPertHighlight,
62570
62426
  resolveColor,
62571
62427
  resolveColorWithDiagnostic,
62572
62428
  resolveMap,