@diagrammo/dgmo 0.25.0 → 0.25.1

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/internal.js CHANGED
@@ -16377,6 +16377,9 @@ function parseMap(content) {
16377
16377
  break;
16378
16378
  // ── Cosmetic `no-*` opt-outs: bare flags, idempotent (mirror `no-legend`,
16379
16379
  // no dup warning); each defaults the feature ON when absent. ──
16380
+ case "no-title":
16381
+ d.noTitle = true;
16382
+ break;
16380
16383
  case "no-legend":
16381
16384
  d.noLegend = true;
16382
16385
  break;
@@ -16398,6 +16401,9 @@ function parseMap(content) {
16398
16401
  case "no-colorize":
16399
16402
  d.noColorize = true;
16400
16403
  break;
16404
+ case "no-cluster-pois":
16405
+ d.noClusterPois = true;
16406
+ break;
16401
16407
  }
16402
16408
  }
16403
16409
  function handleTag(trimmed, line12) {
@@ -16699,13 +16705,15 @@ var init_parser12 = __esm({
16699
16705
  "locale",
16700
16706
  "active-tag",
16701
16707
  "caption",
16708
+ "no-title",
16702
16709
  "no-legend",
16703
16710
  "no-coastline",
16704
16711
  "no-relief",
16705
16712
  "no-context-labels",
16706
16713
  "no-region-labels",
16707
16714
  "no-poi-labels",
16708
- "no-colorize"
16715
+ "no-colorize",
16716
+ "no-cluster-pois"
16709
16717
  ]);
16710
16718
  }
16711
16719
  });
@@ -37508,18 +37516,10 @@ var init_layout11 = __esm({
37508
37516
  // src/pert/renderer.ts
37509
37517
  var renderer_exports11 = {};
37510
37518
  __export(renderer_exports11, {
37511
- PERT_LEGEND_PILL_HEIGHT: () => PERT_LEGEND_PILL_HEIGHT,
37512
- highlightPertCriticalPath: () => highlightPertCriticalPath,
37513
- highlightPertSet: () => highlightPertSet,
37514
37519
  measurePertAnalysisBlock: () => measurePertAnalysisBlock,
37515
- pertLegendBlockWidth: () => pertLegendBlockWidth,
37516
- pertLegendEntries: () => pertLegendEntries,
37517
- renderLegendBlock: () => renderLegendBlock,
37518
37520
  renderPert: () => renderPert,
37519
37521
  renderPertAnalysisBlock: () => renderPertAnalysisBlock,
37520
- renderPertForExport: () => renderPertForExport,
37521
- resetPertCriticalPath: () => resetPertCriticalPath,
37522
- resetPertHighlight: () => resetPertHighlight
37522
+ renderPertForExport: () => renderPertForExport
37523
37523
  });
37524
37524
  import * as d3Selection12 from "d3-selection";
37525
37525
  import * as d3Shape8 from "d3-shape";
@@ -37604,16 +37604,14 @@ function renderPert(container, resolved, layout, palette, isDark, options = {})
37604
37604
  const standaloneFieldLegendWidthForExport = layout.width;
37605
37605
  const analysisBlockHeight = analysisLayer.analysisHasContent ? CAPTION_TOP_GAP + analysisLayer.analysisRowHeight : 0;
37606
37606
  const fieldLegendBlockHeight = analysisLayer.fieldLegendStandalone ? CAPTION_TOP_GAP + fieldLegendHeightFor(standaloneFieldLegendWidthForExport) : 0;
37607
- const showTopLegend = options.showTopLegend ?? true;
37608
- const legendEntries = showTopLegend ? pertLegendEntries(resolved) : [];
37607
+ const showLegend = options.showLegend ?? true;
37609
37608
  const tagLegendActive = resolveActiveTagGroup(
37610
37609
  resolved.tagGroups,
37611
37610
  resolved.options.activeTag,
37612
37611
  options.activeTagOverride
37613
37612
  );
37614
- const showTagLegend = showTopLegend && resolved.tagGroups.length > 0;
37615
- const tagLegendBlockHeight = showTagLegend ? LEGEND_PILL_HEIGHT + LEGEND_BOTTOM_GAP : 0;
37616
- const legendBlockHeight = (legendEntries.length > 0 ? LEGEND_TOP_GAP + LEGEND_PILL_HEIGHT + LEGEND_BOTTOM_GAP : 0) + tagLegendBlockHeight;
37613
+ const showTagLegend = showLegend && resolved.tagGroups.length > 0;
37614
+ const legendBlockHeight = showTagLegend ? LEGEND_TOP_GAP + LEGEND_PILL_HEIGHT + LEGEND_BOTTOM_GAP : 0;
37617
37615
  const naturalChartWidth = layout.width + DIAGRAM_PADDING11 * 2;
37618
37616
  const minAnalysisRowW = analysisLayer.analysisHasContent ? analysisLayer.minContentWidth + 2 * DIAGRAM_PADDING11 : 0;
37619
37617
  const naturalWidth = Math.max(naturalChartWidth, minAnalysisRowW);
@@ -37636,8 +37634,7 @@ function renderPert(container, resolved, layout, palette, isDark, options = {})
37636
37634
  const sLegendTopGap = ctx.aesthetic(LEGEND_TOP_GAP);
37637
37635
  const sLegendBottomGap = ctx.aesthetic(LEGEND_BOTTOM_GAP);
37638
37636
  const sLegendPillHeight = ctx.structural(LEGEND_PILL_HEIGHT);
37639
- const sTagLegendBlockHeight = showTagLegend ? sLegendPillHeight + sLegendBottomGap : 0;
37640
- const sLegendBlockHeight = (legendEntries.length > 0 ? sLegendTopGap + sLegendPillHeight + sLegendBottomGap : 0) + sTagLegendBlockHeight;
37637
+ const sLegendBlockHeight = showTagLegend ? sLegendTopGap + sLegendPillHeight + sLegendBottomGap : 0;
37641
37638
  const sNodeRadius = ctx.structural(NODE_RADIUS2);
37642
37639
  const sNodeStrokeWidth = ctx.structural(NODE_STROKE_WIDTH10);
37643
37640
  const sNodeFontSize = ctx.text(NODE_FONT_SIZE4);
@@ -37669,17 +37666,8 @@ function renderPert(container, resolved, layout, palette, isDark, options = {})
37669
37666
  }
37670
37667
  const offsetX = Math.max(sDiagramPad, (svgW - layout.width) / 2);
37671
37668
  const offsetY = sDiagramPad + sTitleHeight + sLegendBlockHeight;
37672
- if (legendEntries.length > 0) {
37673
- renderLegendBlock(svg, legendEntries, {
37674
- x: 0,
37675
- y: sDiagramPad + sTitleHeight + sLegendTopGap,
37676
- width: svgW,
37677
- palette,
37678
- isDark
37679
- });
37680
- }
37681
37669
  if (showTagLegend) {
37682
- const tagLegendY = sDiagramPad + sTitleHeight + (legendEntries.length > 0 ? sLegendTopGap + sLegendPillHeight : sLegendTopGap);
37670
+ const tagLegendY = sDiagramPad + sTitleHeight + sLegendTopGap;
37683
37671
  renderTagLegendRow(svg, resolved, palette, isDark, {
37684
37672
  x: 0,
37685
37673
  y: tagLegendY,
@@ -37763,8 +37751,7 @@ function renderPertForExport(content, theme, palette, now) {
37763
37751
  }
37764
37752
  const captionBoxHeight = captionBullets.length > 0 ? captionBullets.length * CAPTION_LINE_HEIGHT + 2 * CAPTION_BOX_PADDING_Y + CAPTION_HEADER_BAND_HEIGHT : 0;
37765
37753
  const captionBlockHeight = captionBullets.length > 0 ? CAPTION_TOP_GAP + captionBoxHeight : 0;
37766
- const legendEntries = pertLegendEntries(resolved);
37767
- const legendBlockHeight = legendEntries.length > 0 ? LEGEND_TOP_GAP + LEGEND_PILL_HEIGHT + LEGEND_BOTTOM_GAP : 0;
37754
+ const legendBlockHeight = resolved.tagGroups.length > 0 ? LEGEND_TOP_GAP + LEGEND_PILL_HEIGHT + LEGEND_BOTTOM_GAP : 0;
37768
37755
  const exportWidth = layout.width + DIAGRAM_PADDING11 * 2;
37769
37756
  const exportHeight = layout.height + DIAGRAM_PADDING11 * 2 + titleHeight + legendBlockHeight + captionBlockHeight;
37770
37757
  const container = document.createElement("div");
@@ -38304,22 +38291,22 @@ function renderEdges2(root, resolved, layout, palette, collapsedSet, sc = {}) {
38304
38291
  if (srcGroup && tgtGroup && srcGroup === tgtGroup && collapsedSet.has(srcGroup)) {
38305
38292
  continue;
38306
38293
  }
38307
- const isCritical2 = criticalSet.has(e.source) && criticalSet.has(e.target);
38294
+ const isCritical = criticalSet.has(e.source) && criticalSet.has(e.target);
38308
38295
  let band;
38309
38296
  if (mcOn) {
38310
38297
  const sc2 = critById.get(e.source);
38311
38298
  const tc = critById.get(e.target);
38312
38299
  const minC = sc2 === null || tc === null || sc2 === void 0 || tc === void 0 ? null : Math.min(sc2, tc);
38313
38300
  band = criticalityBand(minC);
38314
- if (band === null && isCritical2) band = "red";
38301
+ if (band === null && isCritical) band = "red";
38315
38302
  } else {
38316
- band = isCritical2 ? "red" : null;
38303
+ band = isCritical ? "red" : null;
38317
38304
  }
38318
38305
  const path = lineGenerator6(e.points);
38319
38306
  if (!path) continue;
38320
38307
  const sESW = sc.edgeStrokeWidth ?? EDGE_STROKE_WIDTH10;
38321
38308
  const sELFS = sc.edgeLabelFontSize ?? 10;
38322
- 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 ?? "");
38309
+ 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 ?? "");
38323
38310
  const parsedEdge = edgeByKey.get(`${e.source}->${e.target}`);
38324
38311
  const labelText = parsedEdge ? formatEdgeLabel(parsedEdge) : null;
38325
38312
  if (labelText) {
@@ -38371,7 +38358,7 @@ function renderNodes2(root, _defs, resolved, layout, palette, isDark, sizing, on
38371
38358
  const r = byId.get(node.id);
38372
38359
  if (!r) continue;
38373
38360
  if (r.activity.groupId && collapsedSet.has(r.activity.groupId)) continue;
38374
- const isCritical2 = r.isCriticalPath;
38361
+ const isCritical = r.isCriticalPath;
38375
38362
  const isTbd = tbdSet.has(node.id);
38376
38363
  const dashArray = isTbd ? "4,3" : "none";
38377
38364
  const isTopMu = topMuIds.has(node.id);
@@ -38379,14 +38366,14 @@ function renderNodes2(root, _defs, resolved, layout, palette, isDark, sizing, on
38379
38366
  let band;
38380
38367
  if (mcOn) {
38381
38368
  band = criticalityBand(r.criticality);
38382
- if (band === null && isCritical2) band = "red";
38369
+ if (band === null && isCritical) band = "red";
38383
38370
  } else {
38384
- band = isCritical2 ? "red" : null;
38371
+ band = isCritical ? "red" : null;
38385
38372
  }
38386
38373
  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(
38387
38374
  "data-group-id",
38388
38375
  r.activity.groupId !== void 0 ? r.activity.groupId : ""
38389
- ).attr("data-critical-path", String(isCritical2)).attr("data-criticality-band", band ?? "").attr("data-duration-rank", isTopMu ? "top" : isBottomMu ? "bottom" : "");
38376
+ ).attr("data-critical-path", String(isCritical)).attr("data-criticality-band", band ?? "").attr("data-duration-rank", isTopMu ? "top" : isBottomMu ? "bottom" : "");
38390
38377
  if (r.activity.tags) {
38391
38378
  for (const [tagKey, tagValue] of Object.entries(r.activity.tags)) {
38392
38379
  g.attr(`data-tag-${tagKey}`, String(tagValue).toLowerCase());
@@ -38696,69 +38683,6 @@ function computeAnchorPinSet(resolved) {
38696
38683
  }
38697
38684
  return pinned;
38698
38685
  }
38699
- function isCritical(el, mcOn) {
38700
- if (mcOn) {
38701
- return HIGHLIGHT_BANDS.has(el.getAttribute("data-criticality-band") ?? "");
38702
- }
38703
- return el.getAttribute("data-critical-path") === "true";
38704
- }
38705
- function isInHighlightSet(el, kind, mcOn) {
38706
- if (kind === "critical") return isCritical(el, mcOn);
38707
- if (kind === "milestone") {
38708
- return el.getAttribute("data-milestone") === "true";
38709
- }
38710
- return el.hasAttribute("data-anchor");
38711
- }
38712
- function highlightPertSet(container, kind) {
38713
- const svg = container.querySelector("svg");
38714
- if (!svg) return;
38715
- const mcOn = Array.from(svg.querySelectorAll(".pert-edge")).some((e) => {
38716
- const b = e.getAttribute("data-criticality-band");
38717
- return b !== null && b !== "" && b !== "red";
38718
- });
38719
- const candidates = svg.querySelectorAll(
38720
- ".pert-node, .pert-edge, .pert-group-collapsed"
38721
- );
38722
- let anyMatch = false;
38723
- for (const el of candidates) {
38724
- if (isInHighlightSet(el, kind, mcOn)) {
38725
- anyMatch = true;
38726
- break;
38727
- }
38728
- }
38729
- if (!anyMatch) return;
38730
- svg.setAttribute("data-pert-highlight-active", kind);
38731
- for (const el of svg.querySelectorAll(".pert-node, .pert-edge")) {
38732
- el.setAttribute(
38733
- "opacity",
38734
- isInHighlightSet(el, kind, mcOn) ? "1" : String(FADE_OPACITY)
38735
- );
38736
- }
38737
- for (const el of svg.querySelectorAll(".pert-group")) {
38738
- const inSet = el.classList.contains("pert-group-collapsed") && isInHighlightSet(el, kind, mcOn);
38739
- el.setAttribute(
38740
- "opacity",
38741
- inSet ? "1" : String(FADE_OPACITY)
38742
- );
38743
- }
38744
- }
38745
- function highlightPertCriticalPath(container) {
38746
- highlightPertSet(container, "critical");
38747
- }
38748
- function resetPertHighlight(container) {
38749
- const svg = container.querySelector("svg");
38750
- if (!svg) return;
38751
- svg.removeAttribute("data-pert-highlight-active");
38752
- svg.removeAttribute("data-critical-path-active");
38753
- for (const el of svg.querySelectorAll(
38754
- ".pert-node, .pert-edge, .pert-group"
38755
- )) {
38756
- el.removeAttribute("opacity");
38757
- }
38758
- }
38759
- function resetPertCriticalPath(container) {
38760
- resetPertHighlight(container);
38761
- }
38762
38686
  function anchorAnnotationText(resolved) {
38763
38687
  const anchor = resolved.options.anchor;
38764
38688
  if (anchor === null) return null;
@@ -38811,70 +38735,6 @@ function renderCaptionBlock(svg, bullets, args) {
38811
38735
  if (i > 0) tspan.attr("dy", CAPTION_LINE_HEIGHT);
38812
38736
  });
38813
38737
  }
38814
- function pertLegendEntries(resolved) {
38815
- const entries = [];
38816
- if (resolved.activities.length > 0) {
38817
- entries.push({ kind: "critical", label: "Critical Path" });
38818
- }
38819
- if (resolved.options.anchor !== null) {
38820
- entries.push({ kind: "anchor", label: "Anchor" });
38821
- }
38822
- if (resolved.activities.some((a) => a.activity.isMilestone)) {
38823
- entries.push({ kind: "milestone", label: "Milestone" });
38824
- }
38825
- return entries;
38826
- }
38827
- function legendSwatchWidth(kind) {
38828
- if (kind === "critical") return LEGEND_DOT_R * 2;
38829
- if (kind === "anchor") return PIN_ICON_W;
38830
- return LEGEND_FONT_SIZE;
38831
- }
38832
- function legendPillWidth(entry) {
38833
- const labelW = measureLegendText(entry.label, LEGEND_FONT_SIZE);
38834
- return Math.ceil(
38835
- LEGEND_PILL_PADDING_X + legendSwatchWidth(entry.kind) + LEGEND_SWATCH_GAP + labelW + LEGEND_PILL_PADDING_X
38836
- );
38837
- }
38838
- function legendNaturalWidth(entries) {
38839
- if (entries.length === 0) return 0;
38840
- let total = 0;
38841
- for (const e of entries) total += legendPillWidth(e);
38842
- total += (entries.length - 1) * LEGEND_PILL_GAP;
38843
- return total;
38844
- }
38845
- function pertLegendBlockWidth(entries) {
38846
- return legendNaturalWidth(entries);
38847
- }
38848
- function renderLegendBlock(svg, entries, args) {
38849
- if (entries.length === 0) return;
38850
- const { x, y, width, palette, isDark } = args;
38851
- const groupBg = isDark ? mix(palette.surface, palette.bg, 50) : mix(palette.surface, palette.bg, 30);
38852
- const block = svg.append("g").attr("class", "pert-legend").attr("data-pert-legend", "");
38853
- const totalW = legendNaturalWidth(entries);
38854
- let pillX = x + (width - totalW) / 2;
38855
- for (const entry of entries) {
38856
- const pillW = legendPillWidth(entry);
38857
- const pill = block.append("g").attr("class", "pert-legend-entry").attr("data-legend-entry", entry.kind).attr("transform", `translate(${pillX}, ${y})`).style("cursor", "pointer");
38858
- 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);
38859
- const swatchW = legendSwatchWidth(entry.kind);
38860
- const swatchCx = LEGEND_PILL_PADDING_X + swatchW / 2;
38861
- const swatchCy = LEGEND_PILL_HEIGHT / 2;
38862
- if (entry.kind === "critical") {
38863
- pill.append("circle").attr("class", "pert-legend-swatch").attr("cx", swatchCx).attr("cy", swatchCy).attr("r", LEGEND_DOT_R).attr("fill", palette.colors.red);
38864
- } else if (entry.kind === "anchor") {
38865
- drawAnchorPin(
38866
- pill,
38867
- swatchCx - PIN_ICON_W / 2,
38868
- swatchCy,
38869
- palette.textMuted
38870
- );
38871
- } else {
38872
- 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");
38873
- }
38874
- 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);
38875
- pillX += pillW + LEGEND_PILL_GAP;
38876
- }
38877
- }
38878
38738
  function renderTagLegendRow(svg, resolved, palette, isDark, args) {
38879
38739
  if (resolved.tagGroups.length === 0) return;
38880
38740
  const { x, y, width, activeGroup, exportMode } = args;
@@ -39321,7 +39181,7 @@ function formatScurveDate(iso) {
39321
39181
  if (month < 0 || month > 11 || isNaN(day)) return iso;
39322
39182
  return `${SCURVE_MONTH_NAMES[month]} ${day}`;
39323
39183
  }
39324
- var 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;
39184
+ var 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;
39325
39185
  var init_renderer11 = __esm({
39326
39186
  "src/pert/renderer.ts"() {
39327
39187
  "use strict";
@@ -39350,15 +39210,10 @@ var init_renderer11 = __esm({
39350
39210
  CONTAINER_LABEL_FONT_SIZE3 = 13;
39351
39211
  CONTAINER_HEADER_HEIGHT3 = 28;
39352
39212
  COLLAPSE_BAR_HEIGHT7 = 6;
39353
- FADE_OPACITY = 0.15;
39354
39213
  DURATION_FADE_OPACITY = 0.55;
39355
39214
  PIN_ICON_W = 13;
39356
39215
  PIN_ICON_H = 13;
39357
39216
  LEGEND_PILL_HEIGHT = LEGEND_HEIGHT;
39358
- LEGEND_PILL_PADDING_X = 8;
39359
- LEGEND_PILL_GAP = 8;
39360
- LEGEND_SWATCH_GAP = LEGEND_ENTRY_DOT_GAP;
39361
- LEGEND_FONT_SIZE = LEGEND_PILL_FONT_SIZE;
39362
39217
  LEGEND_TOP_GAP = 12;
39363
39218
  LEGEND_BOTTOM_GAP = 12;
39364
39219
  FIELD_LEGEND_HEADER_BAND_HEIGHT = 26;
@@ -39395,7 +39250,6 @@ var init_renderer11 = __esm({
39395
39250
  ];
39396
39251
  lineGenerator6 = d3Shape8.line().x((d) => d.x).y((d) => d.y).curve(d3Shape8.curveBasis);
39397
39252
  FIELD_LEGEND_MIN_W = 220;
39398
- HIGHLIGHT_BANDS = /* @__PURE__ */ new Set(["red", "orange", "yellow"]);
39399
39253
  SUB_BULLET_INDENT = 20;
39400
39254
  CAPTION_HEADER_BAND_HEIGHT = CAPTION_LINE_HEIGHT + 8;
39401
39255
  TORNADO_TOP_N = 10;
@@ -39415,7 +39269,6 @@ var init_renderer11 = __esm({
39415
39269
  SCURVE_PLOT_PADDING_BOTTOM = 44;
39416
39270
  SCURVE_TICK_FONT_SIZE = 13;
39417
39271
  SCURVE_PERCENTILE_RADIUS = 4;
39418
- PERT_LEGEND_PILL_HEIGHT = LEGEND_PILL_HEIGHT;
39419
39272
  DAYS_PER_UNIT = {
39420
39273
  min: 1 / (60 * 24),
39421
39274
  h: 1 / 24,
@@ -40942,31 +40795,31 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
40942
40795
  todayHoverG.on("mouseenter", () => {
40943
40796
  g.selectAll(".gantt-task").attr(
40944
40797
  "opacity",
40945
- FADE_OPACITY2
40798
+ FADE_OPACITY
40946
40799
  );
40947
40800
  g.selectAll(".gantt-milestone").attr(
40948
40801
  "opacity",
40949
- FADE_OPACITY2
40802
+ FADE_OPACITY
40950
40803
  );
40951
40804
  g.selectAll(
40952
40805
  ".gantt-group-bar, .gantt-group-summary"
40953
- ).attr("opacity", FADE_OPACITY2);
40954
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
40955
- svg.selectAll(".gantt-task-label").attr("opacity", FADE_OPACITY2);
40956
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
40806
+ ).attr("opacity", FADE_OPACITY);
40807
+ svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY);
40808
+ svg.selectAll(".gantt-task-label").attr("opacity", FADE_OPACITY);
40809
+ svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY);
40957
40810
  g.selectAll(
40958
40811
  ".gantt-lane-band, .gantt-lane-accent, .gantt-lane-band-group"
40959
- ).attr("opacity", FADE_OPACITY2);
40812
+ ).attr("opacity", FADE_OPACITY);
40960
40813
  g.selectAll(
40961
40814
  ".gantt-dep-arrow, .gantt-dep-arrowhead"
40962
- ).attr("opacity", FADE_OPACITY2);
40815
+ ).attr("opacity", FADE_OPACITY);
40963
40816
  g.selectAll(".gantt-era-group").attr(
40964
40817
  "opacity",
40965
- FADE_OPACITY2
40818
+ FADE_OPACITY
40966
40819
  );
40967
40820
  g.selectAll(".gantt-marker-group").attr(
40968
40821
  "opacity",
40969
- FADE_OPACITY2
40822
+ FADE_OPACITY
40970
40823
  );
40971
40824
  showGanttDateIndicators(
40972
40825
  g,
@@ -41198,28 +41051,28 @@ function applyCriticalPathHighlight(svg, chartG) {
41198
41051
  const el = d3Selection13.select(this);
41199
41052
  el.attr(
41200
41053
  "opacity",
41201
- el.attr("data-critical-path") === "true" ? 1 : FADE_OPACITY2
41054
+ el.attr("data-critical-path") === "true" ? 1 : FADE_OPACITY
41202
41055
  );
41203
41056
  });
41204
- chartG.selectAll(".gantt-milestone").attr("opacity", FADE_OPACITY2);
41205
- chartG.selectAll(".gantt-group-bar, .gantt-group-summary").attr("opacity", FADE_OPACITY2);
41057
+ chartG.selectAll(".gantt-milestone").attr("opacity", FADE_OPACITY);
41058
+ chartG.selectAll(".gantt-group-bar, .gantt-group-summary").attr("opacity", FADE_OPACITY);
41206
41059
  svg.selectAll(".gantt-task-label").each(function() {
41207
41060
  const el = d3Selection13.select(this);
41208
41061
  el.attr(
41209
41062
  "opacity",
41210
- el.attr("data-critical-path") === "true" ? 1 : FADE_OPACITY2
41063
+ el.attr("data-critical-path") === "true" ? 1 : FADE_OPACITY
41211
41064
  );
41212
41065
  });
41213
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41214
- svg.selectAll(".gantt-group-band-bg, .gantt-group-band-accent").attr("opacity", FADE_OPACITY2);
41215
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
41216
- svg.selectAll(".gantt-lane-band-bg, .gantt-lane-band-accent").attr("opacity", FADE_OPACITY2);
41217
- chartG.selectAll(".gantt-lane-band, .gantt-lane-accent").attr("opacity", FADE_OPACITY2);
41066
+ svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY);
41067
+ svg.selectAll(".gantt-group-band-bg, .gantt-group-band-accent").attr("opacity", FADE_OPACITY);
41068
+ svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY);
41069
+ svg.selectAll(".gantt-lane-band-bg, .gantt-lane-band-accent").attr("opacity", FADE_OPACITY);
41070
+ chartG.selectAll(".gantt-lane-band, .gantt-lane-accent").attr("opacity", FADE_OPACITY);
41218
41071
  chartG.selectAll(".gantt-dep-arrow, .gantt-dep-arrowhead").each(function() {
41219
41072
  const el = d3Selection13.select(this);
41220
41073
  el.attr(
41221
41074
  "opacity",
41222
- el.attr("data-critical-path") === "true" ? 0.7 : FADE_OPACITY2
41075
+ el.attr("data-critical-path") === "true" ? 0.7 : FADE_OPACITY
41223
41076
  );
41224
41077
  });
41225
41078
  }
@@ -41398,27 +41251,27 @@ function renderTagLegend(svg, chartG, tagGroups, activeGroupName, chartLeftMargi
41398
41251
  const el = d3Selection13.select(this);
41399
41252
  el.attr(
41400
41253
  "opacity",
41401
- el.attr(`data-tag-${tagKey}`) === ev ? 1 : FADE_OPACITY2
41254
+ el.attr(`data-tag-${tagKey}`) === ev ? 1 : FADE_OPACITY
41402
41255
  );
41403
41256
  });
41404
- chartG.selectAll(".gantt-milestone").attr("opacity", FADE_OPACITY2);
41405
- chartG.selectAll(".gantt-group-bar, .gantt-group-summary").attr("opacity", FADE_OPACITY2);
41257
+ chartG.selectAll(".gantt-milestone").attr("opacity", FADE_OPACITY);
41258
+ chartG.selectAll(".gantt-group-bar, .gantt-group-summary").attr("opacity", FADE_OPACITY);
41406
41259
  svg.selectAll(".gantt-task-label").each(function() {
41407
41260
  const el = d3Selection13.select(this);
41408
41261
  el.attr(
41409
41262
  "opacity",
41410
- el.attr(`data-tag-${tagKey}`) === ev ? 1 : FADE_OPACITY2
41263
+ el.attr(`data-tag-${tagKey}`) === ev ? 1 : FADE_OPACITY
41411
41264
  );
41412
41265
  });
41413
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41266
+ svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY);
41414
41267
  svg.selectAll(".gantt-lane-header").each(function() {
41415
41268
  const el = d3Selection13.select(this);
41416
41269
  el.attr(
41417
41270
  "opacity",
41418
- el.attr(`data-tag-${tagKey}`) === ev ? 1 : FADE_OPACITY2
41271
+ el.attr(`data-tag-${tagKey}`) === ev ? 1 : FADE_OPACITY
41419
41272
  );
41420
41273
  });
41421
- chartG.selectAll(".gantt-lane-band, .gantt-lane-accent").attr("opacity", FADE_OPACITY2);
41274
+ chartG.selectAll(".gantt-lane-band, .gantt-lane-accent").attr("opacity", FADE_OPACITY);
41422
41275
  } else {
41423
41276
  if (criticalPathActive) {
41424
41277
  applyCriticalPathHighlight(svg, chartG);
@@ -41523,27 +41376,27 @@ function renderErasAndMarkers(g, svg, resolved, xScale, innerHeight, palette, er
41523
41376
  eraG.on("mouseenter", () => {
41524
41377
  g.selectAll(".gantt-task").attr(
41525
41378
  "opacity",
41526
- FADE_OPACITY2
41379
+ FADE_OPACITY
41527
41380
  );
41528
41381
  g.selectAll(".gantt-milestone").attr(
41529
41382
  "opacity",
41530
- FADE_OPACITY2
41383
+ FADE_OPACITY
41531
41384
  );
41532
41385
  g.selectAll(
41533
41386
  ".gantt-group-bar, .gantt-group-summary"
41534
- ).attr("opacity", FADE_OPACITY2);
41535
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41536
- svg.selectAll(".gantt-task-label").attr("opacity", FADE_OPACITY2);
41537
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
41387
+ ).attr("opacity", FADE_OPACITY);
41388
+ svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY);
41389
+ svg.selectAll(".gantt-task-label").attr("opacity", FADE_OPACITY);
41390
+ svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY);
41538
41391
  g.selectAll(
41539
41392
  ".gantt-lane-band, .gantt-lane-accent, .gantt-lane-band-group"
41540
- ).attr("opacity", FADE_OPACITY2);
41393
+ ).attr("opacity", FADE_OPACITY);
41541
41394
  g.selectAll(
41542
41395
  ".gantt-dep-arrow, .gantt-dep-arrowhead"
41543
- ).attr("opacity", FADE_OPACITY2);
41396
+ ).attr("opacity", FADE_OPACITY);
41544
41397
  g.selectAll(".gantt-marker-group").attr(
41545
41398
  "opacity",
41546
- FADE_OPACITY2
41399
+ FADE_OPACITY
41547
41400
  );
41548
41401
  eraRect.attr("opacity", hoverEraOpacity);
41549
41402
  if (eraTruncated) eraLabel.text(era.label);
@@ -41601,31 +41454,31 @@ function renderErasAndMarkers(g, svg, resolved, xScale, innerHeight, palette, er
41601
41454
  markerG.on("mouseenter", () => {
41602
41455
  g.selectAll(".gantt-task").attr(
41603
41456
  "opacity",
41604
- FADE_OPACITY2
41457
+ FADE_OPACITY
41605
41458
  );
41606
41459
  g.selectAll(".gantt-milestone").attr(
41607
41460
  "opacity",
41608
- FADE_OPACITY2
41461
+ FADE_OPACITY
41609
41462
  );
41610
41463
  g.selectAll(
41611
41464
  ".gantt-group-bar, .gantt-group-summary"
41612
- ).attr("opacity", FADE_OPACITY2);
41613
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41614
- svg.selectAll(".gantt-task-label").attr("opacity", FADE_OPACITY2);
41615
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
41465
+ ).attr("opacity", FADE_OPACITY);
41466
+ svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY);
41467
+ svg.selectAll(".gantt-task-label").attr("opacity", FADE_OPACITY);
41468
+ svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY);
41616
41469
  g.selectAll(
41617
41470
  ".gantt-lane-band, .gantt-lane-accent, .gantt-lane-band-group"
41618
- ).attr("opacity", FADE_OPACITY2);
41471
+ ).attr("opacity", FADE_OPACITY);
41619
41472
  g.selectAll(
41620
41473
  ".gantt-dep-arrow, .gantt-dep-arrowhead"
41621
- ).attr("opacity", FADE_OPACITY2);
41474
+ ).attr("opacity", FADE_OPACITY);
41622
41475
  g.selectAll(".gantt-era-group").attr(
41623
41476
  "opacity",
41624
- FADE_OPACITY2
41477
+ FADE_OPACITY
41625
41478
  );
41626
41479
  g.selectAll(".gantt-marker-group").attr(
41627
41480
  "opacity",
41628
- FADE_OPACITY2
41481
+ FADE_OPACITY
41629
41482
  );
41630
41483
  markerG.attr("opacity", 1);
41631
41484
  markerLine.attr("opacity", 0.8);
@@ -41701,7 +41554,7 @@ function renderSprintBands(g, svg, resolved, xScale, innerHeight, palette) {
41701
41554
  const id = el.attr("data-task-id");
41702
41555
  el.attr(
41703
41556
  "opacity",
41704
- id && overlappingTaskIds.has(id) ? 1 : FADE_OPACITY2
41557
+ id && overlappingTaskIds.has(id) ? 1 : FADE_OPACITY
41705
41558
  );
41706
41559
  });
41707
41560
  g.selectAll(".gantt-milestone").each(function() {
@@ -41709,7 +41562,7 @@ function renderSprintBands(g, svg, resolved, xScale, innerHeight, palette) {
41709
41562
  const id = el.attr("data-task-id");
41710
41563
  el.attr(
41711
41564
  "opacity",
41712
- id && overlappingTaskIds.has(id) ? 1 : FADE_OPACITY2
41565
+ id && overlappingTaskIds.has(id) ? 1 : FADE_OPACITY
41713
41566
  );
41714
41567
  });
41715
41568
  svg.selectAll(".gantt-task-label").each(function() {
@@ -41717,7 +41570,7 @@ function renderSprintBands(g, svg, resolved, xScale, innerHeight, palette) {
41717
41570
  const id = el.attr("data-task-id");
41718
41571
  el.attr(
41719
41572
  "opacity",
41720
- id && overlappingTaskIds.has(id) ? 1 : FADE_OPACITY2
41573
+ id && overlappingTaskIds.has(id) ? 1 : FADE_OPACITY
41721
41574
  );
41722
41575
  });
41723
41576
  g.selectAll(
@@ -41727,7 +41580,7 @@ function renderSprintBands(g, svg, resolved, xScale, innerHeight, palette) {
41727
41580
  const name = el.attr("data-group");
41728
41581
  el.attr(
41729
41582
  "opacity",
41730
- name && overlappingGroupNames.has(name) ? 1 : FADE_OPACITY2
41583
+ name && overlappingGroupNames.has(name) ? 1 : FADE_OPACITY
41731
41584
  );
41732
41585
  });
41733
41586
  svg.selectAll(".gantt-group-label").each(function() {
@@ -41735,19 +41588,19 @@ function renderSprintBands(g, svg, resolved, xScale, innerHeight, palette) {
41735
41588
  const name = el.attr("data-group");
41736
41589
  el.attr(
41737
41590
  "opacity",
41738
- name && overlappingGroupNames.has(name) ? 1 : FADE_OPACITY2
41591
+ name && overlappingGroupNames.has(name) ? 1 : FADE_OPACITY
41739
41592
  );
41740
41593
  });
41741
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
41594
+ svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY);
41742
41595
  g.selectAll(
41743
41596
  ".gantt-lane-band, .gantt-lane-accent, .gantt-lane-band-group"
41744
- ).attr("opacity", FADE_OPACITY2);
41597
+ ).attr("opacity", FADE_OPACITY);
41745
41598
  g.selectAll(
41746
41599
  ".gantt-dep-arrow, .gantt-dep-arrowhead"
41747
- ).attr("opacity", FADE_OPACITY2);
41600
+ ).attr("opacity", FADE_OPACITY);
41748
41601
  g.selectAll(".gantt-marker-group").attr(
41749
41602
  "opacity",
41750
- FADE_OPACITY2
41603
+ FADE_OPACITY
41751
41604
  );
41752
41605
  sprintRect.attr("opacity", SPRINT_HOVER_OPACITY);
41753
41606
  const startVisible = rawSx >= chartMinX;
@@ -41816,20 +41669,20 @@ function highlightDeps(g, svg, taskId, resolved) {
41816
41669
  g.selectAll(".gantt-task").each(function() {
41817
41670
  const el = d3Selection13.select(this);
41818
41671
  const id = el.attr("data-task-id");
41819
- el.attr("opacity", id && related.has(id) ? 1 : FADE_OPACITY2);
41672
+ el.attr("opacity", id && related.has(id) ? 1 : FADE_OPACITY);
41820
41673
  });
41821
41674
  g.selectAll(".gantt-milestone").attr(
41822
41675
  "opacity",
41823
- FADE_OPACITY2
41676
+ FADE_OPACITY
41824
41677
  );
41825
41678
  g.selectAll(
41826
41679
  ".gantt-group-bar, .gantt-group-summary"
41827
- ).attr("opacity", FADE_OPACITY2);
41828
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41829
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
41680
+ ).attr("opacity", FADE_OPACITY);
41681
+ svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY);
41682
+ svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY);
41830
41683
  g.selectAll(".gantt-lane-band, .gantt-lane-accent").attr(
41831
41684
  "opacity",
41832
- FADE_OPACITY2
41685
+ FADE_OPACITY
41833
41686
  );
41834
41687
  g.selectAll(
41835
41688
  ".gantt-dep-arrow, .gantt-dep-arrowhead"
@@ -41838,52 +41691,52 @@ function highlightDeps(g, svg, taskId, resolved) {
41838
41691
  const from = el.attr("data-dep-from");
41839
41692
  const to = el.attr("data-dep-to");
41840
41693
  const isRelated = from && related.has(from) || to && related.has(to);
41841
- el.attr("opacity", isRelated ? 0.5 : FADE_OPACITY2);
41694
+ el.attr("opacity", isRelated ? 0.5 : FADE_OPACITY);
41842
41695
  });
41843
41696
  g.selectAll(".gantt-marker-group").attr(
41844
41697
  "opacity",
41845
- FADE_OPACITY2
41698
+ FADE_OPACITY
41846
41699
  );
41847
41700
  }
41848
41701
  function highlightGroup(g, svg, groupName) {
41849
41702
  g.selectAll(".gantt-task").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
  g.selectAll(".gantt-milestone").each(function() {
41854
41707
  const el = d3Selection13.select(this);
41855
- el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY2);
41708
+ el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY);
41856
41709
  });
41857
41710
  g.selectAll(
41858
41711
  ".gantt-group-bar, .gantt-group-summary"
41859
41712
  ).each(function() {
41860
41713
  const el = d3Selection13.select(this);
41861
- el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY2);
41714
+ el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY);
41862
41715
  });
41863
41716
  svg.selectAll(".gantt-group-label").each(function() {
41864
41717
  const el = d3Selection13.select(this);
41865
- el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY2);
41718
+ el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY);
41866
41719
  });
41867
41720
  svg.selectAll(".gantt-task-label").each(function() {
41868
41721
  const el = d3Selection13.select(this);
41869
- el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY2);
41722
+ el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY);
41870
41723
  });
41871
41724
  svg.selectAll(".gantt-group-band-bg, .gantt-group-band-accent").each(function() {
41872
41725
  const el = d3Selection13.select(this);
41873
41726
  el.attr(
41874
41727
  "opacity",
41875
- el.attr("data-group") === groupName ? 1 : FADE_OPACITY2
41728
+ el.attr("data-group") === groupName ? 1 : FADE_OPACITY
41876
41729
  );
41877
41730
  });
41878
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
41879
- svg.selectAll(".gantt-lane-band-bg, .gantt-lane-band-accent").attr("opacity", FADE_OPACITY2);
41731
+ svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY);
41732
+ svg.selectAll(".gantt-lane-band-bg, .gantt-lane-band-accent").attr("opacity", FADE_OPACITY);
41880
41733
  g.selectAll(".gantt-lane-band, .gantt-lane-accent").attr(
41881
41734
  "opacity",
41882
- FADE_OPACITY2
41735
+ FADE_OPACITY
41883
41736
  );
41884
41737
  g.selectAll(".gantt-marker-group").attr(
41885
41738
  "opacity",
41886
- FADE_OPACITY2
41739
+ FADE_OPACITY
41887
41740
  );
41888
41741
  }
41889
41742
  function highlightLane(g, svg, tagKey, laneName) {
@@ -41891,105 +41744,105 @@ function highlightLane(g, svg, tagKey, laneName) {
41891
41744
  const laneValue = laneName.toLowerCase();
41892
41745
  g.selectAll(".gantt-task").each(function() {
41893
41746
  const el = d3Selection13.select(this);
41894
- el.attr("opacity", el.attr(tagAttr) === laneValue ? 1 : FADE_OPACITY2);
41747
+ el.attr("opacity", el.attr(tagAttr) === laneValue ? 1 : FADE_OPACITY);
41895
41748
  });
41896
41749
  g.selectAll(".gantt-milestone").each(function() {
41897
41750
  const el = d3Selection13.select(this);
41898
- el.attr("opacity", el.attr(tagAttr) === laneValue ? 1 : FADE_OPACITY2);
41751
+ el.attr("opacity", el.attr(tagAttr) === laneValue ? 1 : FADE_OPACITY);
41899
41752
  });
41900
41753
  svg.selectAll(".gantt-task-label").each(function() {
41901
41754
  const el = d3Selection13.select(this);
41902
- el.attr("opacity", el.attr(tagAttr) === laneValue ? 1 : FADE_OPACITY2);
41755
+ el.attr("opacity", el.attr(tagAttr) === laneValue ? 1 : FADE_OPACITY);
41903
41756
  });
41904
41757
  svg.selectAll(".gantt-lane-header").each(function() {
41905
41758
  const el = d3Selection13.select(this);
41906
- el.attr("opacity", el.attr("data-lane") === laneName ? 1 : FADE_OPACITY2);
41759
+ el.attr("opacity", el.attr("data-lane") === laneName ? 1 : FADE_OPACITY);
41907
41760
  });
41908
41761
  g.selectAll(".gantt-lane-band-group").each(function() {
41909
41762
  const el = d3Selection13.select(this);
41910
- el.attr("opacity", el.attr("data-lane") === laneName ? 1 : FADE_OPACITY2);
41763
+ el.attr("opacity", el.attr("data-lane") === laneName ? 1 : FADE_OPACITY);
41911
41764
  });
41912
41765
  svg.selectAll(".gantt-lane-band-bg, .gantt-lane-band-accent").each(function() {
41913
41766
  const el = d3Selection13.select(this);
41914
- el.attr("opacity", el.attr("data-lane") === laneName ? 1 : FADE_OPACITY2);
41767
+ el.attr("opacity", el.attr("data-lane") === laneName ? 1 : FADE_OPACITY);
41915
41768
  });
41916
41769
  g.selectAll(
41917
41770
  ".gantt-group-bar, .gantt-group-summary"
41918
- ).attr("opacity", FADE_OPACITY2);
41919
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41920
- svg.selectAll(".gantt-group-band-bg, .gantt-group-band-accent").attr("opacity", FADE_OPACITY2);
41771
+ ).attr("opacity", FADE_OPACITY);
41772
+ svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY);
41773
+ svg.selectAll(".gantt-group-band-bg, .gantt-group-band-accent").attr("opacity", FADE_OPACITY);
41921
41774
  g.selectAll(".gantt-marker-group").attr(
41922
41775
  "opacity",
41923
- FADE_OPACITY2
41776
+ FADE_OPACITY
41924
41777
  );
41925
41778
  }
41926
41779
  function highlightTask(g, svg, taskId) {
41927
41780
  g.selectAll(".gantt-task").each(function() {
41928
41781
  const el = d3Selection13.select(this);
41929
- el.attr("opacity", el.attr("data-task-id") === taskId ? 1 : FADE_OPACITY2);
41782
+ el.attr("opacity", el.attr("data-task-id") === taskId ? 1 : FADE_OPACITY);
41930
41783
  });
41931
41784
  g.selectAll(".gantt-milestone").attr(
41932
41785
  "opacity",
41933
- FADE_OPACITY2
41786
+ FADE_OPACITY
41934
41787
  );
41935
41788
  svg.selectAll(".gantt-task-label").each(function() {
41936
41789
  const el = d3Selection13.select(this);
41937
- el.attr("opacity", el.attr("data-task-id") === taskId ? 1 : FADE_OPACITY2);
41790
+ el.attr("opacity", el.attr("data-task-id") === taskId ? 1 : FADE_OPACITY);
41938
41791
  });
41939
41792
  g.selectAll(
41940
41793
  ".gantt-group-bar, .gantt-group-summary"
41941
- ).attr("opacity", FADE_OPACITY2);
41942
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41943
- svg.selectAll(".gantt-group-band-bg, .gantt-group-band-accent").attr("opacity", FADE_OPACITY2);
41944
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
41945
- svg.selectAll(".gantt-lane-band-bg, .gantt-lane-band-accent").attr("opacity", FADE_OPACITY2);
41794
+ ).attr("opacity", FADE_OPACITY);
41795
+ svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY);
41796
+ svg.selectAll(".gantt-group-band-bg, .gantt-group-band-accent").attr("opacity", FADE_OPACITY);
41797
+ svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY);
41798
+ svg.selectAll(".gantt-lane-band-bg, .gantt-lane-band-accent").attr("opacity", FADE_OPACITY);
41946
41799
  g.selectAll(
41947
41800
  ".gantt-lane-band, .gantt-lane-accent, .gantt-lane-band-group"
41948
- ).attr("opacity", FADE_OPACITY2);
41801
+ ).attr("opacity", FADE_OPACITY);
41949
41802
  g.selectAll(
41950
41803
  ".gantt-dep-arrow, .gantt-dep-arrowhead"
41951
- ).attr("opacity", FADE_OPACITY2);
41804
+ ).attr("opacity", FADE_OPACITY);
41952
41805
  g.selectAll(".gantt-marker-group").attr(
41953
41806
  "opacity",
41954
- FADE_OPACITY2
41807
+ FADE_OPACITY
41955
41808
  );
41956
41809
  }
41957
41810
  function highlightMilestone(g, svg, taskId) {
41958
41811
  g.selectAll(".gantt-task").attr(
41959
41812
  "opacity",
41960
- FADE_OPACITY2
41813
+ FADE_OPACITY
41961
41814
  );
41962
41815
  g.selectAll(".gantt-milestone").each(function() {
41963
41816
  const el = d3Selection13.select(this);
41964
- el.attr("opacity", el.attr("data-task-id") === taskId ? 1 : FADE_OPACITY2);
41817
+ el.attr("opacity", el.attr("data-task-id") === taskId ? 1 : FADE_OPACITY);
41965
41818
  });
41966
41819
  svg.selectAll(".gantt-task-label").each(function() {
41967
41820
  const el = d3Selection13.select(this);
41968
- el.attr("opacity", el.attr("data-task-id") === taskId ? 1 : FADE_OPACITY2);
41821
+ el.attr("opacity", el.attr("data-task-id") === taskId ? 1 : FADE_OPACITY);
41969
41822
  });
41970
41823
  g.selectAll(
41971
41824
  ".gantt-group-bar, .gantt-group-summary"
41972
- ).attr("opacity", FADE_OPACITY2);
41973
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41974
- svg.selectAll(".gantt-group-band-bg, .gantt-group-band-accent").attr("opacity", FADE_OPACITY2);
41975
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
41976
- svg.selectAll(".gantt-lane-band-bg, .gantt-lane-band-accent").attr("opacity", FADE_OPACITY2);
41825
+ ).attr("opacity", FADE_OPACITY);
41826
+ svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY);
41827
+ svg.selectAll(".gantt-group-band-bg, .gantt-group-band-accent").attr("opacity", FADE_OPACITY);
41828
+ svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY);
41829
+ svg.selectAll(".gantt-lane-band-bg, .gantt-lane-band-accent").attr("opacity", FADE_OPACITY);
41977
41830
  g.selectAll(
41978
41831
  ".gantt-lane-band, .gantt-lane-accent, .gantt-lane-band-group"
41979
- ).attr("opacity", FADE_OPACITY2);
41832
+ ).attr("opacity", FADE_OPACITY);
41980
41833
  g.selectAll(
41981
41834
  ".gantt-dep-arrow, .gantt-dep-arrowhead"
41982
- ).attr("opacity", FADE_OPACITY2);
41835
+ ).attr("opacity", FADE_OPACITY);
41983
41836
  g.selectAll(".gantt-marker-group").attr(
41984
41837
  "opacity",
41985
- FADE_OPACITY2
41838
+ FADE_OPACITY
41986
41839
  );
41987
41840
  }
41988
41841
  function highlightTaskLabel(svg, lineNumber) {
41989
41842
  const ln = String(lineNumber);
41990
41843
  svg.selectAll(".gantt-task-label").each(function() {
41991
41844
  const el = d3Selection13.select(this);
41992
- el.attr("opacity", el.attr("data-line-number") === ln ? 1 : FADE_OPACITY2);
41845
+ el.attr("opacity", el.attr("data-line-number") === ln ? 1 : FADE_OPACITY);
41993
41846
  });
41994
41847
  }
41995
41848
  function resetTaskLabels(svg) {
@@ -42263,7 +42116,7 @@ function renderTimeScaleHorizontal(g, scale, _innerWidth, innerHeight, textColor
42263
42116
  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);
42264
42117
  }
42265
42118
  }
42266
- var 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;
42119
+ var 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;
42267
42120
  var init_renderer12 = __esm({
42268
42121
  "src/gantt/renderer.ts"() {
42269
42122
  "use strict";
@@ -42304,7 +42157,7 @@ var init_renderer12 = __esm({
42304
42157
  SPRINT_BAND_OPACITY = 0.05;
42305
42158
  SPRINT_HOVER_OPACITY = 0.12;
42306
42159
  SPRINT_BOUNDARY_OPACITY = 0.3;
42307
- FADE_OPACITY2 = 0.1;
42160
+ FADE_OPACITY = 0.1;
42308
42161
  MONTH_ABBR2 = [
42309
42162
  "Jan",
42310
42163
  "Feb",
@@ -47850,7 +47703,8 @@ function layoutMap(resolved, data, size, opts) {
47850
47703
  palette.bg,
47851
47704
  mutedBasemap ? isDark ? MUTED_FOREIGN_DARK : MUTED_FOREIGN_LIGHT : isDark ? FOREIGN_TINT_DARK : FOREIGN_TINT_LIGHT
47852
47705
  );
47853
- const colorizeActive = resolved.directives.noColorize !== true && !hasRamp && resolved.tagGroups.length === 0;
47706
+ const hasDirectColor = resolved.regions.some((r) => r.color !== void 0);
47707
+ const colorizeActive = resolved.directives.noColorize !== true && !hasRamp && !hasDirectColor && resolved.tagGroups.length === 0;
47854
47708
  const colorByIso = /* @__PURE__ */ new Map();
47855
47709
  if (colorizeActive) {
47856
47710
  const adjacency = /* @__PURE__ */ new Map();
@@ -47946,16 +47800,17 @@ function layoutMap(resolved, data, size, opts) {
47946
47800
  };
47947
47801
  }
47948
47802
  }
47803
+ const shownTitle = resolved.directives.noTitle ? null : resolved.title;
47949
47804
  const TITLE_GAP2 = 16;
47950
47805
  let topPad = FIT_PAD;
47951
- if (resolved.title && resolved.pois.length > 0) {
47806
+ if (shownTitle && resolved.pois.length > 0) {
47952
47807
  const bannerBottom = (resolved.subtitle ? TITLE_Y + TITLE_FONT_SIZE : TITLE_Y) + TITLE_FONT_SIZE / 2;
47953
47808
  topPad = Math.max(FIT_PAD, bannerBottom + TITLE_GAP2);
47954
47809
  }
47955
47810
  const legendBand = mapLegendBand(legend, {
47956
47811
  width,
47957
47812
  mode: opts.legendMode ?? "preview",
47958
- hasTitle: Boolean(resolved.title),
47813
+ hasTitle: Boolean(shownTitle),
47959
47814
  hasSubtitle: Boolean(resolved.subtitle)
47960
47815
  });
47961
47816
  if (legendBand > topPad) topPad = legendBand;
@@ -49044,7 +48899,7 @@ function layoutMap(resolved, data, size, opts) {
49044
48899
  width,
49045
48900
  height,
49046
48901
  background: water,
49047
- title: resolved.title,
48902
+ title: shownTitle,
49048
48903
  ...resolved.subtitle !== void 0 && { subtitle: resolved.subtitle },
49049
48904
  ...resolved.caption !== void 0 && { caption: resolved.caption },
49050
48905
  regions,
@@ -49453,9 +49308,10 @@ function renderMap(container, resolved, data, palette, isDark, onClickItem, expo
49453
49308
  wireSync(lt, leg.lineNumber);
49454
49309
  }
49455
49310
  });
49311
+ const clusterUi = !exportDims && !resolved.directives.noClusterPois;
49456
49312
  const gSpider = svg.append("g").attr("class", "dgmo-map-spider");
49457
49313
  for (const cl of layout.clusters) {
49458
- if (!exportDims) {
49314
+ if (clusterUi) {
49459
49315
  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");
49460
49316
  }
49461
49317
  for (const leg of cl.legs) {
@@ -49547,13 +49403,18 @@ function renderMap(container, resolved, data, palette, isDark, onClickItem, expo
49547
49403
  }
49548
49404
  wireSync(t, lab.lineNumber);
49549
49405
  }
49550
- if (!exportDims && layout.clusters.length) {
49406
+ if (clusterUi && layout.clusters.length) {
49551
49407
  const gBadge = svg.append("g").attr("class", "dgmo-map-cluster-badges");
49552
49408
  for (const cl of layout.clusters) {
49553
49409
  const g = gBadge.append("g").attr("data-cluster", cl.id).style("opacity", 0).style("pointer-events", "none");
49554
49410
  const R = 9;
49555
49411
  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);
49556
49412
  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);
49413
+ const beadR = R + 2.5;
49414
+ for (const leg of cl.legs) {
49415
+ const a = Math.atan2(leg.y2 - cl.cy, leg.x2 - cl.cx);
49416
+ 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);
49417
+ }
49557
49418
  emitText(
49558
49419
  g,
49559
49420
  cl.cx,
@@ -52478,10 +52339,12 @@ function renderSequenceDiagram(container, parsed, palette, isDark, _onNavigateTo
52478
52339
  isDark ? 15 : 20
52479
52340
  ) : isDark ? palette.surface : palette.bg;
52480
52341
  const strokeColor = groupTagColor || palette.textMuted;
52481
- const groupG = svg.append("g").attr("class", "group-box-wrapper").attr("data-group-toggle", "").attr("data-group-line", String(group.lineNumber)).attr("cursor", "pointer");
52342
+ 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");
52482
52343
  groupG.append("title").text("Click to collapse");
52483
- 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");
52484
- 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);
52344
+ 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");
52345
+ 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");
52346
+ 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");
52347
+ 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);
52485
52348
  }
52486
52349
  const lifelineStartY = lifelineStartY0;
52487
52350
  participants.forEach((participant) => {
@@ -52523,7 +52386,7 @@ function renderSequenceDiagram(container, parsed, palette, isDark, _onNavigateTo
52523
52386
  const participantG = svg.select(
52524
52387
  `.participant[data-participant-id="${participant.id}"]`
52525
52388
  );
52526
- participantG.attr("data-group-toggle", "").attr("data-group-line", String(meta.lineNumber)).attr("cursor", "pointer");
52389
+ 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");
52527
52390
  participantG.append("title").text("Click to expand");
52528
52391
  const pFill = effectiveTagColor ? mix(
52529
52392
  effectiveTagColor,
@@ -54506,7 +54369,7 @@ function renderArcDiagram(container, parsed, palette, _isDark, onClickItem, expo
54506
54369
  neighbors2.get(link.source).add(link.target);
54507
54370
  neighbors2.get(link.target).add(link.source);
54508
54371
  }
54509
- const FADE_OPACITY3 = 0.1;
54372
+ const FADE_OPACITY2 = 0.1;
54510
54373
  function handleMouseEnter(hovered) {
54511
54374
  const connected = neighbors2.get(hovered);
54512
54375
  g.selectAll(".arc-link").each(function() {
@@ -54514,13 +54377,13 @@ function renderArcDiagram(container, parsed, palette, _isDark, onClickItem, expo
54514
54377
  const src = el.attr("data-source");
54515
54378
  const tgt = el.attr("data-target");
54516
54379
  const isRelated = src === hovered || tgt === hovered;
54517
- el.attr("stroke-opacity", isRelated ? 0.85 : FADE_OPACITY3);
54380
+ el.attr("stroke-opacity", isRelated ? 0.85 : FADE_OPACITY2);
54518
54381
  });
54519
54382
  g.selectAll(".arc-node").each(function() {
54520
54383
  const el = d3Selection23.select(this);
54521
54384
  const name = el.attr("data-node");
54522
54385
  const isRelated = name === hovered || connected.has(name);
54523
- el.attr("opacity", isRelated ? 1 : FADE_OPACITY3);
54386
+ el.attr("opacity", isRelated ? 1 : FADE_OPACITY2);
54524
54387
  });
54525
54388
  }
54526
54389
  function handleMouseLeave() {
@@ -54544,11 +54407,11 @@ function renderArcDiagram(container, parsed, palette, _isDark, onClickItem, expo
54544
54407
  g.selectAll(".arc-link").each(function() {
54545
54408
  const el = d3Selection23.select(this);
54546
54409
  const isRelated = members.has(el.attr("data-source")) || members.has(el.attr("data-target"));
54547
- el.attr("stroke-opacity", isRelated ? 0.85 : FADE_OPACITY3);
54410
+ el.attr("stroke-opacity", isRelated ? 0.85 : FADE_OPACITY2);
54548
54411
  });
54549
54412
  g.selectAll(".arc-node").each(function() {
54550
54413
  const el = d3Selection23.select(this);
54551
- el.attr("opacity", members.has(el.attr("data-node")) ? 1 : FADE_OPACITY3);
54414
+ el.attr("opacity", members.has(el.attr("data-node")) ? 1 : FADE_OPACITY2);
54552
54415
  });
54553
54416
  g.selectAll(".arc-group-band").each(function() {
54554
54417
  const el = d3Selection23.select(this);
@@ -55070,23 +54933,23 @@ function setupTimeline(container, parsed, palette, isDark, exportDims, activeTag
55070
54933
  };
55071
54934
  }
55072
54935
  function makeTimelineHoverHelpers() {
55073
- const FADE_OPACITY3 = 0.1;
54936
+ const FADE_OPACITY2 = 0.1;
55074
54937
  function fadeToGroup(g, groupName) {
55075
54938
  g.selectAll(".tl-event").each(function() {
55076
54939
  const el = d3Selection23.select(this);
55077
54940
  const evGroup = el.attr("data-group");
55078
- el.attr("opacity", evGroup === groupName ? 1 : FADE_OPACITY3);
54941
+ el.attr("opacity", evGroup === groupName ? 1 : FADE_OPACITY2);
55079
54942
  });
55080
54943
  g.selectAll(".tl-legend-item, .tl-lane-header").each(
55081
54944
  function() {
55082
54945
  const el = d3Selection23.select(this);
55083
54946
  const name = el.attr("data-group");
55084
- el.attr("opacity", name === groupName ? 1 : FADE_OPACITY3);
54947
+ el.attr("opacity", name === groupName ? 1 : FADE_OPACITY2);
55085
54948
  }
55086
54949
  );
55087
54950
  g.selectAll(".tl-marker").attr(
55088
54951
  "opacity",
55089
- FADE_OPACITY3
54952
+ FADE_OPACITY2
55090
54953
  );
55091
54954
  }
55092
54955
  function fadeToEra(g, eraStart, eraEnd) {
@@ -55096,40 +54959,40 @@ function makeTimelineHoverHelpers() {
55096
54959
  const endDate = el.attr("data-end-date");
55097
54960
  const evEnd = endDate ? parseFloat(endDate) : date;
55098
54961
  const inside = evEnd >= eraStart && date <= eraEnd;
55099
- el.attr("opacity", inside ? 1 : FADE_OPACITY3);
54962
+ el.attr("opacity", inside ? 1 : FADE_OPACITY2);
55100
54963
  });
55101
54964
  g.selectAll(".tl-legend-item, .tl-lane-header").attr(
55102
54965
  "opacity",
55103
- FADE_OPACITY3
54966
+ FADE_OPACITY2
55104
54967
  );
55105
54968
  g.selectAll(".tl-era").each(function() {
55106
54969
  const el = d3Selection23.select(this);
55107
54970
  const s = parseFloat(el.attr("data-era-start"));
55108
54971
  const e = parseFloat(el.attr("data-era-end"));
55109
54972
  const isSelf = s === eraStart && e === eraEnd;
55110
- el.attr("opacity", isSelf ? 1 : FADE_OPACITY3);
54973
+ el.attr("opacity", isSelf ? 1 : FADE_OPACITY2);
55111
54974
  });
55112
54975
  g.selectAll(".tl-marker").each(function() {
55113
54976
  const el = d3Selection23.select(this);
55114
54977
  const date = parseFloat(el.attr("data-marker-date"));
55115
54978
  const inside = date >= eraStart && date <= eraEnd;
55116
- el.attr("opacity", inside ? 1 : FADE_OPACITY3);
54979
+ el.attr("opacity", inside ? 1 : FADE_OPACITY2);
55117
54980
  });
55118
54981
  }
55119
54982
  function fadeToMarker(g, markerDate) {
55120
54983
  g.selectAll(".tl-event").attr(
55121
54984
  "opacity",
55122
- FADE_OPACITY3
54985
+ FADE_OPACITY2
55123
54986
  );
55124
- g.selectAll(".tl-era").attr("opacity", FADE_OPACITY3);
54987
+ g.selectAll(".tl-era").attr("opacity", FADE_OPACITY2);
55125
54988
  g.selectAll(".tl-legend-item, .tl-lane-header").attr(
55126
54989
  "opacity",
55127
- FADE_OPACITY3
54990
+ FADE_OPACITY2
55128
54991
  );
55129
54992
  g.selectAll(".tl-marker").each(function() {
55130
54993
  const el = d3Selection23.select(this);
55131
54994
  const date = parseFloat(el.attr("data-marker-date"));
55132
- el.attr("opacity", date === markerDate ? 1 : FADE_OPACITY3);
54995
+ el.attr("opacity", date === markerDate ? 1 : FADE_OPACITY2);
55133
54996
  });
55134
54997
  }
55135
54998
  function fadeReset(g) {
@@ -55143,15 +55006,15 @@ function makeTimelineHoverHelpers() {
55143
55006
  g.selectAll(".tl-event").each(function() {
55144
55007
  const el = d3Selection23.select(this);
55145
55008
  const val = el.attr(attrName);
55146
- el.attr("opacity", val === tagValue ? 1 : FADE_OPACITY3);
55009
+ el.attr("opacity", val === tagValue ? 1 : FADE_OPACITY2);
55147
55010
  });
55148
55011
  g.selectAll(".tl-legend-item, .tl-lane-header").attr(
55149
55012
  "opacity",
55150
- FADE_OPACITY3
55013
+ FADE_OPACITY2
55151
55014
  );
55152
55015
  g.selectAll(".tl-marker").attr(
55153
55016
  "opacity",
55154
- FADE_OPACITY3
55017
+ FADE_OPACITY2
55155
55018
  );
55156
55019
  g.selectAll(".tl-tag-legend-entry").each(function() {
55157
55020
  const el = d3Selection23.select(this);
@@ -55160,7 +55023,7 @@ function makeTimelineHoverHelpers() {
55160
55023
  const entryGroup = el.attr("data-tag-group");
55161
55024
  el.attr(
55162
55025
  "opacity",
55163
- entryGroup === tagKey && entryValue === tagValue ? 1 : FADE_OPACITY3
55026
+ entryGroup === tagKey && entryValue === tagValue ? 1 : FADE_OPACITY2
55164
55027
  );
55165
55028
  });
55166
55029
  }
@@ -55170,7 +55033,7 @@ function makeTimelineHoverHelpers() {
55170
55033
  }
55171
55034
  }
55172
55035
  return {
55173
- FADE_OPACITY: FADE_OPACITY3,
55036
+ FADE_OPACITY: FADE_OPACITY2,
55174
55037
  fadeToGroup,
55175
55038
  fadeToEra,
55176
55039
  fadeToMarker,
@@ -55182,7 +55045,7 @@ function makeTimelineHoverHelpers() {
55182
55045
  function renderTimelineTagLegendOverlay(container, parsed, palette, isDark, setup, hovers, onClickItem, exportDims, swimlaneTagGroup, activeTagGroup, onTagStateChange, viewMode, exportMode) {
55183
55046
  if (parsed.timelineTagGroups.length === 0) return;
55184
55047
  const { width, textColor, groupColorMap, solid } = setup;
55185
- const { FADE_OPACITY: FADE_OPACITY3, fadeReset, fadeToTagValue } = hovers;
55048
+ const { FADE_OPACITY: FADE_OPACITY2, fadeReset, fadeToTagValue } = hovers;
55186
55049
  const title = parsed.noTitle ? null : parsed.title;
55187
55050
  const { timelineEvents } = parsed;
55188
55051
  const LG_HEIGHT = LEGEND_HEIGHT;
@@ -55272,7 +55135,7 @@ function renderTimelineTagLegendOverlay(container, parsed, palette, isDark, setu
55272
55135
  const eg = el.attr("data-tag-group") ?? el.node()?.closest?.("[data-tag-group]")?.getAttribute("data-tag-group");
55273
55136
  el.attr(
55274
55137
  "opacity",
55275
- eg === tagKey && ev === tagVal ? 1 : FADE_OPACITY3
55138
+ eg === tagKey && ev === tagVal ? 1 : FADE_OPACITY2
55276
55139
  );
55277
55140
  });
55278
55141
  } else {
@@ -58087,6 +57950,9 @@ async function renderForExport(content, theme, palette, viewState, options) {
58087
57950
  const { renderSequenceDiagram: renderSequenceDiagram2 } = await Promise.resolve().then(() => (init_renderer20(), renderer_exports20));
58088
57951
  const seqParsed = parseSequenceDgmo2(content);
58089
57952
  if (seqParsed.error || seqParsed.participants.length === 0) return "";
57953
+ const collapsedSections = viewState?.cs ? new Set(viewState.cs) : void 0;
57954
+ const collapsedGroups = viewState?.cg ? new Set(viewState.cg.map(Number).filter((n) => Number.isFinite(n))) : void 0;
57955
+ const seqActiveTagGroup = viewState?.tag ?? options?.tagGroup;
58090
57956
  renderSequenceDiagram2(
58091
57957
  container,
58092
57958
  seqParsed,
@@ -58095,9 +57961,11 @@ async function renderForExport(content, theme, palette, viewState, options) {
58095
57961
  void 0,
58096
57962
  {
58097
57963
  exportWidth: EXPORT_WIDTH,
58098
- ...options?.tagGroup !== void 0 && {
58099
- activeTagGroup: options.tagGroup
58100
- }
57964
+ ...seqActiveTagGroup !== void 0 && {
57965
+ activeTagGroup: seqActiveTagGroup
57966
+ },
57967
+ ...collapsedSections !== void 0 && { collapsedSections },
57968
+ ...collapsedGroups !== void 0 && { collapsedGroups }
58101
57969
  }
58102
57970
  );
58103
57971
  } else if (parsed.type === "wordcloud") {
@@ -60597,6 +60465,7 @@ var COMPLETION_REGISTRY = /* @__PURE__ */ new Map([
60597
60465
  description: "Which tag group leads when several are present"
60598
60466
  },
60599
60467
  caption: { description: "Caption line (data-source attribution)" },
60468
+ "no-title": { description: "Suppress the title banner" },
60600
60469
  "no-legend": { description: "Suppress the legend" },
60601
60470
  "no-coastline": {
60602
60471
  description: "Turn off coastal water-lines (on by default)"
@@ -60613,6 +60482,9 @@ var COMPLETION_REGISTRY = /* @__PURE__ */ new Map([
60613
60482
  "no-poi-labels": { description: "Turn off POI labels (on by default)" },
60614
60483
  "no-colorize": {
60615
60484
  description: "Force plain green-land reference dress (regions are auto-coloured by default)"
60485
+ },
60486
+ "no-cluster-pois": {
60487
+ description: "Always fan out coincident POI markers instead of collapsing them into a count badge"
60616
60488
  }
60617
60489
  })
60618
60490
  ]
@@ -62072,7 +61944,6 @@ export {
62072
61944
  LEGEND_HEIGHT,
62073
61945
  METADATA_KEY_SET,
62074
61946
  MIN_PRIMARY_SCORE,
62075
- PERT_LEGEND_PILL_HEIGHT,
62076
61947
  PIPE_METADATA,
62077
61948
  RACI_ERROR_CODES,
62078
61949
  VARIANTS as RACI_VARIANTS,
@@ -62149,8 +62020,6 @@ export {
62149
62020
  gruvboxPalette,
62150
62021
  hexToHSL,
62151
62022
  hexToHSLString,
62152
- highlightPertCriticalPath,
62153
- highlightPertSet,
62154
62023
  hslToHex,
62155
62024
  inferParticipantType,
62156
62025
  inferRoles,
@@ -62240,8 +62109,6 @@ export {
62240
62109
  parseTimelineDate,
62241
62110
  parseVisualization,
62242
62111
  parseWireframe,
62243
- pertLegendBlockWidth,
62244
- pertLegendEntries,
62245
62112
  cellAppendMarker as raciCellAppendMarker,
62246
62113
  cellCycle as raciCellCycle,
62247
62114
  cellRemove as raciCellRemove,
@@ -62288,7 +62155,6 @@ export {
62288
62155
  renderPert,
62289
62156
  renderPertAnalysisBlock,
62290
62157
  renderPertForExport,
62291
- renderLegendBlock as renderPertLegendBlock,
62292
62158
  renderPyramid,
62293
62159
  renderPyramidForExport,
62294
62160
  renderQuadrant,
@@ -62310,8 +62176,6 @@ export {
62310
62176
  renderVenn,
62311
62177
  renderWireframe,
62312
62178
  renderWordCloud,
62313
- resetPertCriticalPath,
62314
- resetPertHighlight,
62315
62179
  resolveColor,
62316
62180
  resolveColorWithDiagnostic,
62317
62181
  resolveMap,