@diagrammo/dgmo 0.24.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/advanced.cjs CHANGED
@@ -840,7 +840,7 @@ function withTagAliases(base, aliases) {
840
840
  function isReservedKey(registry, key) {
841
841
  return registry.keys.has(key) || registry.tagAliases.has(key);
842
842
  }
843
- var SEQUENCE_REGISTRY, INFRA_REGISTRY, MAP_REGISTRY, ORG_REGISTRY, C4_REGISTRY, ER_REGISTRY, CLASS_REGISTRY, KANBAN_REGISTRY, SITEMAP_REGISTRY, GANTT_REGISTRY, PERT_REGISTRY, BOXES_AND_LINES_REGISTRY, TIMELINE_REGISTRY, MINDMAP_REGISTRY, TECH_RADAR_REGISTRY, CYCLE_REGISTRY, JOURNEY_MAP_REGISTRY, PYRAMID_REGISTRY, RING_REGISTRY, RACI_REGISTRY, WIREFRAME_REGISTRY;
843
+ var SEQUENCE_REGISTRY, INFRA_REGISTRY, MAP_REGISTRY, ORG_REGISTRY, C4_REGISTRY, ER_REGISTRY, KANBAN_REGISTRY, SITEMAP_REGISTRY, GANTT_REGISTRY, PERT_REGISTRY, BOXES_AND_LINES_REGISTRY, TIMELINE_REGISTRY, MINDMAP_REGISTRY, TECH_RADAR_REGISTRY, CYCLE_REGISTRY, JOURNEY_MAP_REGISTRY, PYRAMID_REGISTRY, RING_REGISTRY, RACI_REGISTRY;
844
844
  var init_reserved_key_registry = __esm({
845
845
  "src/utils/reserved-key-registry.ts"() {
846
846
  "use strict";
@@ -884,10 +884,6 @@ var init_reserved_key_registry = __esm({
884
884
  "description",
885
885
  "domain"
886
886
  ]);
887
- CLASS_REGISTRY = staticRegistry([
888
- "color",
889
- "description"
890
- ]);
891
887
  KANBAN_REGISTRY = staticRegistry([
892
888
  "color",
893
889
  "description",
@@ -963,7 +959,6 @@ var init_reserved_key_registry = __esm({
963
959
  "color",
964
960
  "description"
965
961
  ]);
966
- WIREFRAME_REGISTRY = staticRegistry([]);
967
962
  }
968
963
  });
969
964
 
@@ -4236,6 +4231,9 @@ var init_legend_layout = __esm({
4236
4231
  });
4237
4232
 
4238
4233
  // src/utils/legend-d3.ts
4234
+ function centerText(sel) {
4235
+ return sel.attr("dy", LEGEND_TEXT_DY);
4236
+ }
4239
4237
  function renderLegendD3(container, config, state, palette, isDark, callbacks, containerWidth) {
4240
4238
  const width = containerWidth ?? parseFloat(container.attr("width") || "800");
4241
4239
  let currentState = { ...state };
@@ -4318,21 +4316,21 @@ function renderCapsule(parent, capsule, palette, groupBg, pillBorder, _isDark, c
4318
4316
  const pill = capsule.pill;
4319
4317
  g.append("rect").attr("x", pill.x).attr("y", pill.y).attr("width", pill.width).attr("height", pill.height).attr("rx", pill.height / 2).attr("fill", palette.bg);
4320
4318
  g.append("rect").attr("x", pill.x).attr("y", pill.y).attr("width", pill.width).attr("height", pill.height).attr("rx", pill.height / 2).attr("fill", "none").attr("stroke", pillBorder).attr("stroke-width", 0.75);
4321
- g.append("text").attr("x", pill.x + pill.width / 2).attr("y", LEGEND_HEIGHT / 2).attr("text-anchor", "middle").attr("dominant-baseline", "central").attr("font-size", LEGEND_PILL_FONT_SIZE).attr("font-weight", 500).attr("fill", palette.text).attr("pointer-events", "none").attr("font-family", FONT_FAMILY).text(capsule.groupName);
4319
+ g.append("text").attr("x", pill.x + pill.width / 2).attr("y", LEGEND_HEIGHT / 2).attr("text-anchor", "middle").call(centerText).attr("font-size", LEGEND_PILL_FONT_SIZE).attr("font-weight", 500).attr("fill", palette.text).attr("pointer-events", "none").attr("font-family", FONT_FAMILY).text(capsule.groupName);
4322
4320
  if (capsule.gradient) {
4323
4321
  const gr = capsule.gradient;
4324
4322
  const gradId = `dgmo-legend-ramp-${capsule.groupName.toLowerCase().replace(/[^a-z0-9]+/g, "-")}`;
4325
4323
  const def = g.append("defs").append("linearGradient").attr("id", gradId);
4326
4324
  def.append("stop").attr("offset", "0%").attr("stop-color", mix(gr.hue, gr.base, 15));
4327
4325
  def.append("stop").attr("offset", "100%").attr("stop-color", gr.hue);
4328
- g.append("text").attr("x", gr.minX).attr("y", gr.textY).attr("dominant-baseline", "central").attr("font-size", LEGEND_ENTRY_FONT_SIZE).attr("fill", palette.textMuted).attr("pointer-events", "none").attr("font-family", FONT_FAMILY).text(gr.minText);
4326
+ g.append("text").attr("x", gr.minX).attr("y", gr.textY).call(centerText).attr("font-size", LEGEND_ENTRY_FONT_SIZE).attr("fill", palette.textMuted).attr("pointer-events", "none").attr("font-family", FONT_FAMILY).text(gr.minText);
4329
4327
  g.append("rect").attr("class", "dgmo-legend-gradient-ramp").attr("data-ramp-min", gr.min).attr("data-ramp-max", gr.max).attr("x", gr.rampX).attr("y", gr.rampY).attr("width", gr.rampW).attr("height", gr.rampH).attr("rx", 2).attr("fill", `url(#${gradId})`);
4330
- g.append("text").attr("x", gr.maxX).attr("y", gr.textY).attr("dominant-baseline", "central").attr("font-size", LEGEND_ENTRY_FONT_SIZE).attr("fill", palette.textMuted).attr("pointer-events", "none").attr("font-family", FONT_FAMILY).text(gr.maxText);
4328
+ g.append("text").attr("x", gr.maxX).attr("y", gr.textY).call(centerText).attr("font-size", LEGEND_ENTRY_FONT_SIZE).attr("fill", palette.textMuted).attr("pointer-events", "none").attr("font-family", FONT_FAMILY).text(gr.maxText);
4331
4329
  }
4332
4330
  for (const entry of capsule.entries) {
4333
4331
  const entryG = g.append("g").attr("data-legend-entry", entry.value.toLowerCase()).attr("data-series-name", entry.value).style("cursor", "pointer");
4334
4332
  entryG.append("circle").attr("cx", entry.dotCx).attr("cy", entry.dotCy).attr("r", LEGEND_DOT_R).attr("fill", entry.color);
4335
- entryG.append("text").attr("x", entry.textX).attr("y", entry.textY).attr("dominant-baseline", "central").attr("font-size", LEGEND_ENTRY_FONT_SIZE).attr("fill", palette.textMuted).attr("font-family", FONT_FAMILY).text(entry.displayValue ?? entry.value);
4333
+ entryG.append("text").attr("x", entry.textX).attr("y", entry.textY).call(centerText).attr("font-size", LEGEND_ENTRY_FONT_SIZE).attr("fill", palette.textMuted).attr("font-family", FONT_FAMILY).text(entry.displayValue ?? entry.value);
4336
4334
  if (callbacks?.onEntryHover) {
4337
4335
  const groupName = capsule.groupName;
4338
4336
  const entryValue = entry.value;
@@ -4352,7 +4350,7 @@ function renderCapsule(parent, capsule, palette, groupBg, pillBorder, _isDark, c
4352
4350
  function renderPill(parent, pill, palette, groupBg, callbacks) {
4353
4351
  const g = parent.append("g").attr("transform", `translate(${pill.x},${pill.y})`).attr("data-legend-group", pill.groupName.toLowerCase()).style("cursor", "pointer");
4354
4352
  g.append("rect").attr("width", pill.width).attr("height", pill.height).attr("rx", pill.height / 2).attr("fill", groupBg);
4355
- g.append("text").attr("x", pill.width / 2).attr("y", pill.height / 2).attr("text-anchor", "middle").attr("dominant-baseline", "central").attr("font-size", LEGEND_PILL_FONT_SIZE).attr("font-weight", 500).attr("fill", palette.textMuted).attr("pointer-events", "none").attr("font-family", FONT_FAMILY).text(pill.groupName);
4353
+ g.append("text").attr("x", pill.width / 2).attr("y", pill.height / 2).attr("text-anchor", "middle").call(centerText).attr("font-size", LEGEND_PILL_FONT_SIZE).attr("font-weight", 500).attr("fill", palette.textMuted).attr("pointer-events", "none").attr("font-family", FONT_FAMILY).text(pill.groupName);
4356
4354
  if (callbacks?.onGroupToggle) {
4357
4355
  const cb = callbacks.onGroupToggle;
4358
4356
  const name = pill.groupName;
@@ -4375,7 +4373,7 @@ function renderControl(parent, ctrl, palette, _groupBg, pillBorder, _isDark, con
4375
4373
  textX = 8 + 14 + LEGEND_ENTRY_DOT_GAP + measureLegendText(ctrl.label, LEGEND_PILL_FONT_SIZE) / 2;
4376
4374
  }
4377
4375
  if (ctrl.label) {
4378
- g.append("text").attr("x", textX).attr("y", ctrl.height / 2).attr("text-anchor", "middle").attr("dominant-baseline", "central").attr("font-size", LEGEND_PILL_FONT_SIZE).attr("font-weight", 500).attr("fill", palette.textMuted).attr("pointer-events", "none").attr("font-family", FONT_FAMILY).text(ctrl.label);
4376
+ g.append("text").attr("x", textX).attr("y", ctrl.height / 2).attr("text-anchor", "middle").call(centerText).attr("font-size", LEGEND_PILL_FONT_SIZE).attr("font-weight", 500).attr("fill", palette.textMuted).attr("pointer-events", "none").attr("font-family", FONT_FAMILY).text(ctrl.label);
4379
4377
  }
4380
4378
  if (ctrl.children) {
4381
4379
  let cx = ctrl.width + 4;
@@ -4385,7 +4383,7 @@ function renderControl(parent, ctrl, palette, _groupBg, pillBorder, _isDark, con
4385
4383
  "fill",
4386
4384
  child.isActive ? palette.primary ?? palette.text : "none"
4387
4385
  ).attr("stroke", pillBorder).attr("stroke-width", 0.75);
4388
- childG.append("text").attr("x", child.width / 2).attr("y", ctrl.height / 2).attr("text-anchor", "middle").attr("dominant-baseline", "central").attr("font-size", LEGEND_ENTRY_FONT_SIZE).attr("fill", child.isActive ? palette.bg : palette.textMuted).attr("font-family", FONT_FAMILY).text(child.label);
4386
+ childG.append("text").attr("x", child.width / 2).attr("y", ctrl.height / 2).attr("text-anchor", "middle").call(centerText).attr("font-size", LEGEND_ENTRY_FONT_SIZE).attr("fill", child.isActive ? palette.bg : palette.textMuted).attr("font-family", FONT_FAMILY).text(child.label);
4389
4387
  const configCtrl2 = configControls?.find((c) => c.id === ctrl.id);
4390
4388
  const configChild = configCtrl2?.children?.find((c) => c.id === child.id);
4391
4389
  if (configChild?.onClick) {
@@ -4439,7 +4437,7 @@ function renderControlsGroup(parent, layout, palette, groupBg, pillBorder, callb
4439
4437
  } else {
4440
4438
  entryG.append("circle").attr("cx", tl.dotCx).attr("cy", tl.dotCy).attr("r", LEGEND_TOGGLE_DOT_R).attr("fill", "none").attr("stroke", palette.textMuted).attr("stroke-width", 1);
4441
4439
  }
4442
- entryG.append("text").attr("x", tl.textX).attr("y", tl.textY).attr("dominant-baseline", "central").attr("font-size", LEGEND_ENTRY_FONT_SIZE).attr("fill", palette.textMuted).attr("opacity", tl.active ? 1 : LEGEND_TOGGLE_OFF_OPACITY).attr("font-family", FONT_FAMILY).text(tl.label);
4440
+ entryG.append("text").attr("x", tl.textX).attr("y", tl.textY).call(centerText).attr("font-size", LEGEND_ENTRY_FONT_SIZE).attr("fill", palette.textMuted).attr("opacity", tl.active ? 1 : LEGEND_TOGGLE_OFF_OPACITY).attr("font-family", FONT_FAMILY).text(tl.label);
4443
4441
  if (callbacks?.onControlsToggle && toggle) {
4444
4442
  const cb = callbacks.onControlsToggle;
4445
4443
  const id = tl.id;
@@ -4452,6 +4450,7 @@ function renderControlsGroup(parent, layout, palette, groupBg, pillBorder, callb
4452
4450
  }
4453
4451
  }
4454
4452
  }
4453
+ var LEGEND_TEXT_DY;
4455
4454
  var init_legend_d3 = __esm({
4456
4455
  "src/utils/legend-d3.ts"() {
4457
4456
  "use strict";
@@ -4459,6 +4458,7 @@ var init_legend_d3 = __esm({
4459
4458
  init_legend_layout();
4460
4459
  init_color_utils();
4461
4460
  init_fonts();
4461
+ LEGEND_TEXT_DY = "0.32em";
4462
4462
  }
4463
4463
  });
4464
4464
 
@@ -4644,7 +4644,6 @@ var init_name_normalize = __esm({
4644
4644
  var parser_exports = {};
4645
4645
  __export(parser_exports, {
4646
4646
  isSequenceBlock: () => isSequenceBlock,
4647
- isSequenceMessage: () => isSequenceMessage,
4648
4647
  isSequenceNote: () => isSequenceNote,
4649
4648
  isSequenceSection: () => isSequenceSection,
4650
4649
  looksLikeSequence: () => looksLikeSequence,
@@ -4660,9 +4659,6 @@ function isHardRemovedToken(remainder) {
4660
4659
  }
4661
4660
  return { removed: false };
4662
4661
  }
4663
- function isSequenceMessage(el) {
4664
- return el.kind === "message";
4665
- }
4666
4662
  function isSequenceBlock(el) {
4667
4663
  return el.kind === "block";
4668
4664
  }
@@ -16365,6 +16361,9 @@ function parseMap(content) {
16365
16361
  break;
16366
16362
  // ── Cosmetic `no-*` opt-outs: bare flags, idempotent (mirror `no-legend`,
16367
16363
  // no dup warning); each defaults the feature ON when absent. ──
16364
+ case "no-title":
16365
+ d.noTitle = true;
16366
+ break;
16368
16367
  case "no-legend":
16369
16368
  d.noLegend = true;
16370
16369
  break;
@@ -16386,6 +16385,9 @@ function parseMap(content) {
16386
16385
  case "no-colorize":
16387
16386
  d.noColorize = true;
16388
16387
  break;
16388
+ case "no-cluster-pois":
16389
+ d.noClusterPois = true;
16390
+ break;
16389
16391
  }
16390
16392
  }
16391
16393
  function handleTag(trimmed, line12) {
@@ -16687,13 +16689,15 @@ var init_parser12 = __esm({
16687
16689
  "locale",
16688
16690
  "active-tag",
16689
16691
  "caption",
16692
+ "no-title",
16690
16693
  "no-legend",
16691
16694
  "no-coastline",
16692
16695
  "no-relief",
16693
16696
  "no-context-labels",
16694
16697
  "no-region-labels",
16695
16698
  "no-poi-labels",
16696
- "no-colorize"
16699
+ "no-colorize",
16700
+ "no-cluster-pois"
16697
16701
  ]);
16698
16702
  }
16699
16703
  });
@@ -37496,18 +37500,10 @@ var init_layout11 = __esm({
37496
37500
  // src/pert/renderer.ts
37497
37501
  var renderer_exports11 = {};
37498
37502
  __export(renderer_exports11, {
37499
- PERT_LEGEND_PILL_HEIGHT: () => PERT_LEGEND_PILL_HEIGHT,
37500
- highlightPertCriticalPath: () => highlightPertCriticalPath,
37501
- highlightPertSet: () => highlightPertSet,
37502
37503
  measurePertAnalysisBlock: () => measurePertAnalysisBlock,
37503
- pertLegendBlockWidth: () => pertLegendBlockWidth,
37504
- pertLegendEntries: () => pertLegendEntries,
37505
- renderLegendBlock: () => renderLegendBlock,
37506
37504
  renderPert: () => renderPert,
37507
37505
  renderPertAnalysisBlock: () => renderPertAnalysisBlock,
37508
- renderPertForExport: () => renderPertForExport,
37509
- resetPertCriticalPath: () => resetPertCriticalPath,
37510
- resetPertHighlight: () => resetPertHighlight
37506
+ renderPertForExport: () => renderPertForExport
37511
37507
  });
37512
37508
  function analysisBlockChrome(palette, isDark) {
37513
37509
  const surfaceBg = isDark ? palette.surface : palette.bg;
@@ -37590,16 +37586,14 @@ function renderPert(container, resolved, layout, palette, isDark, options = {})
37590
37586
  const standaloneFieldLegendWidthForExport = layout.width;
37591
37587
  const analysisBlockHeight = analysisLayer.analysisHasContent ? CAPTION_TOP_GAP + analysisLayer.analysisRowHeight : 0;
37592
37588
  const fieldLegendBlockHeight = analysisLayer.fieldLegendStandalone ? CAPTION_TOP_GAP + fieldLegendHeightFor(standaloneFieldLegendWidthForExport) : 0;
37593
- const showTopLegend = options.showTopLegend ?? true;
37594
- const legendEntries = showTopLegend ? pertLegendEntries(resolved) : [];
37589
+ const showLegend = options.showLegend ?? true;
37595
37590
  const tagLegendActive = resolveActiveTagGroup(
37596
37591
  resolved.tagGroups,
37597
37592
  resolved.options.activeTag,
37598
37593
  options.activeTagOverride
37599
37594
  );
37600
- const showTagLegend = showTopLegend && resolved.tagGroups.length > 0;
37601
- const tagLegendBlockHeight = showTagLegend ? LEGEND_PILL_HEIGHT + LEGEND_BOTTOM_GAP : 0;
37602
- 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;
37603
37597
  const naturalChartWidth = layout.width + DIAGRAM_PADDING11 * 2;
37604
37598
  const minAnalysisRowW = analysisLayer.analysisHasContent ? analysisLayer.minContentWidth + 2 * DIAGRAM_PADDING11 : 0;
37605
37599
  const naturalWidth = Math.max(naturalChartWidth, minAnalysisRowW);
@@ -37622,8 +37616,7 @@ function renderPert(container, resolved, layout, palette, isDark, options = {})
37622
37616
  const sLegendTopGap = ctx.aesthetic(LEGEND_TOP_GAP);
37623
37617
  const sLegendBottomGap = ctx.aesthetic(LEGEND_BOTTOM_GAP);
37624
37618
  const sLegendPillHeight = ctx.structural(LEGEND_PILL_HEIGHT);
37625
- const sTagLegendBlockHeight = showTagLegend ? sLegendPillHeight + sLegendBottomGap : 0;
37626
- const sLegendBlockHeight = (legendEntries.length > 0 ? sLegendTopGap + sLegendPillHeight + sLegendBottomGap : 0) + sTagLegendBlockHeight;
37619
+ const sLegendBlockHeight = showTagLegend ? sLegendTopGap + sLegendPillHeight + sLegendBottomGap : 0;
37627
37620
  const sNodeRadius = ctx.structural(NODE_RADIUS2);
37628
37621
  const sNodeStrokeWidth = ctx.structural(NODE_STROKE_WIDTH10);
37629
37622
  const sNodeFontSize = ctx.text(NODE_FONT_SIZE4);
@@ -37655,17 +37648,8 @@ function renderPert(container, resolved, layout, palette, isDark, options = {})
37655
37648
  }
37656
37649
  const offsetX = Math.max(sDiagramPad, (svgW - layout.width) / 2);
37657
37650
  const offsetY = sDiagramPad + sTitleHeight + sLegendBlockHeight;
37658
- if (legendEntries.length > 0) {
37659
- renderLegendBlock(svg, legendEntries, {
37660
- x: 0,
37661
- y: sDiagramPad + sTitleHeight + sLegendTopGap,
37662
- width: svgW,
37663
- palette,
37664
- isDark
37665
- });
37666
- }
37667
37651
  if (showTagLegend) {
37668
- const tagLegendY = sDiagramPad + sTitleHeight + (legendEntries.length > 0 ? sLegendTopGap + sLegendPillHeight : sLegendTopGap);
37652
+ const tagLegendY = sDiagramPad + sTitleHeight + sLegendTopGap;
37669
37653
  renderTagLegendRow(svg, resolved, palette, isDark, {
37670
37654
  x: 0,
37671
37655
  y: tagLegendY,
@@ -37749,8 +37733,7 @@ function renderPertForExport(content, theme, palette, now) {
37749
37733
  }
37750
37734
  const captionBoxHeight = captionBullets.length > 0 ? captionBullets.length * CAPTION_LINE_HEIGHT + 2 * CAPTION_BOX_PADDING_Y + CAPTION_HEADER_BAND_HEIGHT : 0;
37751
37735
  const captionBlockHeight = captionBullets.length > 0 ? CAPTION_TOP_GAP + captionBoxHeight : 0;
37752
- const legendEntries = pertLegendEntries(resolved);
37753
- 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;
37754
37737
  const exportWidth = layout.width + DIAGRAM_PADDING11 * 2;
37755
37738
  const exportHeight = layout.height + DIAGRAM_PADDING11 * 2 + titleHeight + legendBlockHeight + captionBlockHeight;
37756
37739
  const container = document.createElement("div");
@@ -38290,22 +38273,22 @@ function renderEdges2(root, resolved, layout, palette, collapsedSet, sc = {}) {
38290
38273
  if (srcGroup && tgtGroup && srcGroup === tgtGroup && collapsedSet.has(srcGroup)) {
38291
38274
  continue;
38292
38275
  }
38293
- const isCritical2 = criticalSet.has(e.source) && criticalSet.has(e.target);
38276
+ const isCritical = criticalSet.has(e.source) && criticalSet.has(e.target);
38294
38277
  let band;
38295
38278
  if (mcOn) {
38296
38279
  const sc2 = critById.get(e.source);
38297
38280
  const tc = critById.get(e.target);
38298
38281
  const minC = sc2 === null || tc === null || sc2 === void 0 || tc === void 0 ? null : Math.min(sc2, tc);
38299
38282
  band = criticalityBand(minC);
38300
- if (band === null && isCritical2) band = "red";
38283
+ if (band === null && isCritical) band = "red";
38301
38284
  } else {
38302
- band = isCritical2 ? "red" : null;
38285
+ band = isCritical ? "red" : null;
38303
38286
  }
38304
38287
  const path = lineGenerator6(e.points);
38305
38288
  if (!path) continue;
38306
38289
  const sESW = sc.edgeStrokeWidth ?? EDGE_STROKE_WIDTH10;
38307
38290
  const sELFS = sc.edgeLabelFontSize ?? 10;
38308
- 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 ?? "");
38309
38292
  const parsedEdge = edgeByKey.get(`${e.source}->${e.target}`);
38310
38293
  const labelText = parsedEdge ? formatEdgeLabel(parsedEdge) : null;
38311
38294
  if (labelText) {
@@ -38357,7 +38340,7 @@ function renderNodes2(root, _defs, resolved, layout, palette, isDark, sizing, on
38357
38340
  const r = byId.get(node.id);
38358
38341
  if (!r) continue;
38359
38342
  if (r.activity.groupId && collapsedSet.has(r.activity.groupId)) continue;
38360
- const isCritical2 = r.isCriticalPath;
38343
+ const isCritical = r.isCriticalPath;
38361
38344
  const isTbd = tbdSet.has(node.id);
38362
38345
  const dashArray = isTbd ? "4,3" : "none";
38363
38346
  const isTopMu = topMuIds.has(node.id);
@@ -38365,14 +38348,14 @@ function renderNodes2(root, _defs, resolved, layout, palette, isDark, sizing, on
38365
38348
  let band;
38366
38349
  if (mcOn) {
38367
38350
  band = criticalityBand(r.criticality);
38368
- if (band === null && isCritical2) band = "red";
38351
+ if (band === null && isCritical) band = "red";
38369
38352
  } else {
38370
- band = isCritical2 ? "red" : null;
38353
+ band = isCritical ? "red" : null;
38371
38354
  }
38372
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(
38373
38356
  "data-group-id",
38374
38357
  r.activity.groupId !== void 0 ? r.activity.groupId : ""
38375
- ).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" : "");
38376
38359
  if (r.activity.tags) {
38377
38360
  for (const [tagKey, tagValue] of Object.entries(r.activity.tags)) {
38378
38361
  g.attr(`data-tag-${tagKey}`, String(tagValue).toLowerCase());
@@ -38682,69 +38665,6 @@ function computeAnchorPinSet(resolved) {
38682
38665
  }
38683
38666
  return pinned;
38684
38667
  }
38685
- function isCritical(el, mcOn) {
38686
- if (mcOn) {
38687
- return HIGHLIGHT_BANDS.has(el.getAttribute("data-criticality-band") ?? "");
38688
- }
38689
- return el.getAttribute("data-critical-path") === "true";
38690
- }
38691
- function isInHighlightSet(el, kind, mcOn) {
38692
- if (kind === "critical") return isCritical(el, mcOn);
38693
- if (kind === "milestone") {
38694
- return el.getAttribute("data-milestone") === "true";
38695
- }
38696
- return el.hasAttribute("data-anchor");
38697
- }
38698
- function highlightPertSet(container, kind) {
38699
- const svg = container.querySelector("svg");
38700
- if (!svg) return;
38701
- const mcOn = Array.from(svg.querySelectorAll(".pert-edge")).some((e) => {
38702
- const b = e.getAttribute("data-criticality-band");
38703
- return b !== null && b !== "" && b !== "red";
38704
- });
38705
- const candidates = svg.querySelectorAll(
38706
- ".pert-node, .pert-edge, .pert-group-collapsed"
38707
- );
38708
- let anyMatch = false;
38709
- for (const el of candidates) {
38710
- if (isInHighlightSet(el, kind, mcOn)) {
38711
- anyMatch = true;
38712
- break;
38713
- }
38714
- }
38715
- if (!anyMatch) return;
38716
- svg.setAttribute("data-pert-highlight-active", kind);
38717
- for (const el of svg.querySelectorAll(".pert-node, .pert-edge")) {
38718
- el.setAttribute(
38719
- "opacity",
38720
- isInHighlightSet(el, kind, mcOn) ? "1" : String(FADE_OPACITY)
38721
- );
38722
- }
38723
- for (const el of svg.querySelectorAll(".pert-group")) {
38724
- const inSet = el.classList.contains("pert-group-collapsed") && isInHighlightSet(el, kind, mcOn);
38725
- el.setAttribute(
38726
- "opacity",
38727
- inSet ? "1" : String(FADE_OPACITY)
38728
- );
38729
- }
38730
- }
38731
- function highlightPertCriticalPath(container) {
38732
- highlightPertSet(container, "critical");
38733
- }
38734
- function resetPertHighlight(container) {
38735
- const svg = container.querySelector("svg");
38736
- if (!svg) return;
38737
- svg.removeAttribute("data-pert-highlight-active");
38738
- svg.removeAttribute("data-critical-path-active");
38739
- for (const el of svg.querySelectorAll(
38740
- ".pert-node, .pert-edge, .pert-group"
38741
- )) {
38742
- el.removeAttribute("opacity");
38743
- }
38744
- }
38745
- function resetPertCriticalPath(container) {
38746
- resetPertHighlight(container);
38747
- }
38748
38668
  function anchorAnnotationText(resolved) {
38749
38669
  const anchor = resolved.options.anchor;
38750
38670
  if (anchor === null) return null;
@@ -38797,70 +38717,6 @@ function renderCaptionBlock(svg, bullets, args) {
38797
38717
  if (i > 0) tspan.attr("dy", CAPTION_LINE_HEIGHT);
38798
38718
  });
38799
38719
  }
38800
- function pertLegendEntries(resolved) {
38801
- const entries = [];
38802
- if (resolved.activities.length > 0) {
38803
- entries.push({ kind: "critical", label: "Critical Path" });
38804
- }
38805
- if (resolved.options.anchor !== null) {
38806
- entries.push({ kind: "anchor", label: "Anchor" });
38807
- }
38808
- if (resolved.activities.some((a) => a.activity.isMilestone)) {
38809
- entries.push({ kind: "milestone", label: "Milestone" });
38810
- }
38811
- return entries;
38812
- }
38813
- function legendSwatchWidth(kind) {
38814
- if (kind === "critical") return LEGEND_DOT_R * 2;
38815
- if (kind === "anchor") return PIN_ICON_W;
38816
- return LEGEND_FONT_SIZE;
38817
- }
38818
- function legendPillWidth(entry) {
38819
- const labelW = measureLegendText(entry.label, LEGEND_FONT_SIZE);
38820
- return Math.ceil(
38821
- LEGEND_PILL_PADDING_X + legendSwatchWidth(entry.kind) + LEGEND_SWATCH_GAP + labelW + LEGEND_PILL_PADDING_X
38822
- );
38823
- }
38824
- function legendNaturalWidth(entries) {
38825
- if (entries.length === 0) return 0;
38826
- let total = 0;
38827
- for (const e of entries) total += legendPillWidth(e);
38828
- total += (entries.length - 1) * LEGEND_PILL_GAP;
38829
- return total;
38830
- }
38831
- function pertLegendBlockWidth(entries) {
38832
- return legendNaturalWidth(entries);
38833
- }
38834
- function renderLegendBlock(svg, entries, args) {
38835
- if (entries.length === 0) return;
38836
- const { x, y, width, palette, isDark } = args;
38837
- const groupBg = isDark ? mix(palette.surface, palette.bg, 50) : mix(palette.surface, palette.bg, 30);
38838
- const block = svg.append("g").attr("class", "pert-legend").attr("data-pert-legend", "");
38839
- const totalW = legendNaturalWidth(entries);
38840
- let pillX = x + (width - totalW) / 2;
38841
- for (const entry of entries) {
38842
- const pillW = legendPillWidth(entry);
38843
- const pill = block.append("g").attr("class", "pert-legend-entry").attr("data-legend-entry", entry.kind).attr("transform", `translate(${pillX}, ${y})`).style("cursor", "pointer");
38844
- 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);
38845
- const swatchW = legendSwatchWidth(entry.kind);
38846
- const swatchCx = LEGEND_PILL_PADDING_X + swatchW / 2;
38847
- const swatchCy = LEGEND_PILL_HEIGHT / 2;
38848
- if (entry.kind === "critical") {
38849
- pill.append("circle").attr("class", "pert-legend-swatch").attr("cx", swatchCx).attr("cy", swatchCy).attr("r", LEGEND_DOT_R).attr("fill", palette.colors.red);
38850
- } else if (entry.kind === "anchor") {
38851
- drawAnchorPin(
38852
- pill,
38853
- swatchCx - PIN_ICON_W / 2,
38854
- swatchCy,
38855
- palette.textMuted
38856
- );
38857
- } else {
38858
- 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");
38859
- }
38860
- 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);
38861
- pillX += pillW + LEGEND_PILL_GAP;
38862
- }
38863
- }
38864
38720
  function renderTagLegendRow(svg, resolved, palette, isDark, args) {
38865
38721
  if (resolved.tagGroups.length === 0) return;
38866
38722
  const { x, y, width, activeGroup, exportMode } = args;
@@ -39307,7 +39163,7 @@ function formatScurveDate(iso) {
39307
39163
  if (month < 0 || month > 11 || isNaN(day)) return iso;
39308
39164
  return `${SCURVE_MONTH_NAMES[month]} ${day}`;
39309
39165
  }
39310
- 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;
39311
39167
  var init_renderer11 = __esm({
39312
39168
  "src/pert/renderer.ts"() {
39313
39169
  "use strict";
@@ -39338,15 +39194,10 @@ var init_renderer11 = __esm({
39338
39194
  CONTAINER_LABEL_FONT_SIZE3 = 13;
39339
39195
  CONTAINER_HEADER_HEIGHT3 = 28;
39340
39196
  COLLAPSE_BAR_HEIGHT7 = 6;
39341
- FADE_OPACITY = 0.15;
39342
39197
  DURATION_FADE_OPACITY = 0.55;
39343
39198
  PIN_ICON_W = 13;
39344
39199
  PIN_ICON_H = 13;
39345
39200
  LEGEND_PILL_HEIGHT = LEGEND_HEIGHT;
39346
- LEGEND_PILL_PADDING_X = 8;
39347
- LEGEND_PILL_GAP = 8;
39348
- LEGEND_SWATCH_GAP = LEGEND_ENTRY_DOT_GAP;
39349
- LEGEND_FONT_SIZE = LEGEND_PILL_FONT_SIZE;
39350
39201
  LEGEND_TOP_GAP = 12;
39351
39202
  LEGEND_BOTTOM_GAP = 12;
39352
39203
  FIELD_LEGEND_HEADER_BAND_HEIGHT = 26;
@@ -39383,7 +39234,6 @@ var init_renderer11 = __esm({
39383
39234
  ];
39384
39235
  lineGenerator6 = d3Shape8.line().x((d) => d.x).y((d) => d.y).curve(d3Shape8.curveBasis);
39385
39236
  FIELD_LEGEND_MIN_W = 220;
39386
- HIGHLIGHT_BANDS = /* @__PURE__ */ new Set(["red", "orange", "yellow"]);
39387
39237
  SUB_BULLET_INDENT = 20;
39388
39238
  CAPTION_HEADER_BAND_HEIGHT = CAPTION_LINE_HEIGHT + 8;
39389
39239
  TORNADO_TOP_N = 10;
@@ -39403,7 +39253,6 @@ var init_renderer11 = __esm({
39403
39253
  SCURVE_PLOT_PADDING_BOTTOM = 44;
39404
39254
  SCURVE_TICK_FONT_SIZE = 13;
39405
39255
  SCURVE_PERCENTILE_RADIUS = 4;
39406
- PERT_LEGEND_PILL_HEIGHT = LEGEND_PILL_HEIGHT;
39407
39256
  DAYS_PER_UNIT = {
39408
39257
  min: 1 / (60 * 24),
39409
39258
  h: 1 / 24,
@@ -40928,31 +40777,31 @@ function renderGantt(container, resolved, palette, isDark, options, exportDims)
40928
40777
  todayHoverG.on("mouseenter", () => {
40929
40778
  g.selectAll(".gantt-task").attr(
40930
40779
  "opacity",
40931
- FADE_OPACITY2
40780
+ FADE_OPACITY
40932
40781
  );
40933
40782
  g.selectAll(".gantt-milestone").attr(
40934
40783
  "opacity",
40935
- FADE_OPACITY2
40784
+ FADE_OPACITY
40936
40785
  );
40937
40786
  g.selectAll(
40938
40787
  ".gantt-group-bar, .gantt-group-summary"
40939
- ).attr("opacity", FADE_OPACITY2);
40940
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
40941
- svg.selectAll(".gantt-task-label").attr("opacity", FADE_OPACITY2);
40942
- 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);
40943
40792
  g.selectAll(
40944
40793
  ".gantt-lane-band, .gantt-lane-accent, .gantt-lane-band-group"
40945
- ).attr("opacity", FADE_OPACITY2);
40794
+ ).attr("opacity", FADE_OPACITY);
40946
40795
  g.selectAll(
40947
40796
  ".gantt-dep-arrow, .gantt-dep-arrowhead"
40948
- ).attr("opacity", FADE_OPACITY2);
40797
+ ).attr("opacity", FADE_OPACITY);
40949
40798
  g.selectAll(".gantt-era-group").attr(
40950
40799
  "opacity",
40951
- FADE_OPACITY2
40800
+ FADE_OPACITY
40952
40801
  );
40953
40802
  g.selectAll(".gantt-marker-group").attr(
40954
40803
  "opacity",
40955
- FADE_OPACITY2
40804
+ FADE_OPACITY
40956
40805
  );
40957
40806
  showGanttDateIndicators(
40958
40807
  g,
@@ -41184,28 +41033,28 @@ function applyCriticalPathHighlight(svg, chartG) {
41184
41033
  const el = d3Selection13.select(this);
41185
41034
  el.attr(
41186
41035
  "opacity",
41187
- el.attr("data-critical-path") === "true" ? 1 : FADE_OPACITY2
41036
+ el.attr("data-critical-path") === "true" ? 1 : FADE_OPACITY
41188
41037
  );
41189
41038
  });
41190
- chartG.selectAll(".gantt-milestone").attr("opacity", FADE_OPACITY2);
41191
- 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);
41192
41041
  svg.selectAll(".gantt-task-label").each(function() {
41193
41042
  const el = d3Selection13.select(this);
41194
41043
  el.attr(
41195
41044
  "opacity",
41196
- el.attr("data-critical-path") === "true" ? 1 : FADE_OPACITY2
41045
+ el.attr("data-critical-path") === "true" ? 1 : FADE_OPACITY
41197
41046
  );
41198
41047
  });
41199
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41200
- svg.selectAll(".gantt-group-band-bg, .gantt-group-band-accent").attr("opacity", FADE_OPACITY2);
41201
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
41202
- svg.selectAll(".gantt-lane-band-bg, .gantt-lane-band-accent").attr("opacity", FADE_OPACITY2);
41203
- 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);
41204
41053
  chartG.selectAll(".gantt-dep-arrow, .gantt-dep-arrowhead").each(function() {
41205
41054
  const el = d3Selection13.select(this);
41206
41055
  el.attr(
41207
41056
  "opacity",
41208
- el.attr("data-critical-path") === "true" ? 0.7 : FADE_OPACITY2
41057
+ el.attr("data-critical-path") === "true" ? 0.7 : FADE_OPACITY
41209
41058
  );
41210
41059
  });
41211
41060
  }
@@ -41384,27 +41233,27 @@ function renderTagLegend(svg, chartG, tagGroups, activeGroupName, chartLeftMargi
41384
41233
  const el = d3Selection13.select(this);
41385
41234
  el.attr(
41386
41235
  "opacity",
41387
- el.attr(`data-tag-${tagKey}`) === ev ? 1 : FADE_OPACITY2
41236
+ el.attr(`data-tag-${tagKey}`) === ev ? 1 : FADE_OPACITY
41388
41237
  );
41389
41238
  });
41390
- chartG.selectAll(".gantt-milestone").attr("opacity", FADE_OPACITY2);
41391
- 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);
41392
41241
  svg.selectAll(".gantt-task-label").each(function() {
41393
41242
  const el = d3Selection13.select(this);
41394
41243
  el.attr(
41395
41244
  "opacity",
41396
- el.attr(`data-tag-${tagKey}`) === ev ? 1 : FADE_OPACITY2
41245
+ el.attr(`data-tag-${tagKey}`) === ev ? 1 : FADE_OPACITY
41397
41246
  );
41398
41247
  });
41399
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41248
+ svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY);
41400
41249
  svg.selectAll(".gantt-lane-header").each(function() {
41401
41250
  const el = d3Selection13.select(this);
41402
41251
  el.attr(
41403
41252
  "opacity",
41404
- el.attr(`data-tag-${tagKey}`) === ev ? 1 : FADE_OPACITY2
41253
+ el.attr(`data-tag-${tagKey}`) === ev ? 1 : FADE_OPACITY
41405
41254
  );
41406
41255
  });
41407
- 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);
41408
41257
  } else {
41409
41258
  if (criticalPathActive) {
41410
41259
  applyCriticalPathHighlight(svg, chartG);
@@ -41509,27 +41358,27 @@ function renderErasAndMarkers(g, svg, resolved, xScale, innerHeight, palette, er
41509
41358
  eraG.on("mouseenter", () => {
41510
41359
  g.selectAll(".gantt-task").attr(
41511
41360
  "opacity",
41512
- FADE_OPACITY2
41361
+ FADE_OPACITY
41513
41362
  );
41514
41363
  g.selectAll(".gantt-milestone").attr(
41515
41364
  "opacity",
41516
- FADE_OPACITY2
41365
+ FADE_OPACITY
41517
41366
  );
41518
41367
  g.selectAll(
41519
41368
  ".gantt-group-bar, .gantt-group-summary"
41520
- ).attr("opacity", FADE_OPACITY2);
41521
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41522
- svg.selectAll(".gantt-task-label").attr("opacity", FADE_OPACITY2);
41523
- 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);
41524
41373
  g.selectAll(
41525
41374
  ".gantt-lane-band, .gantt-lane-accent, .gantt-lane-band-group"
41526
- ).attr("opacity", FADE_OPACITY2);
41375
+ ).attr("opacity", FADE_OPACITY);
41527
41376
  g.selectAll(
41528
41377
  ".gantt-dep-arrow, .gantt-dep-arrowhead"
41529
- ).attr("opacity", FADE_OPACITY2);
41378
+ ).attr("opacity", FADE_OPACITY);
41530
41379
  g.selectAll(".gantt-marker-group").attr(
41531
41380
  "opacity",
41532
- FADE_OPACITY2
41381
+ FADE_OPACITY
41533
41382
  );
41534
41383
  eraRect.attr("opacity", hoverEraOpacity);
41535
41384
  if (eraTruncated) eraLabel.text(era.label);
@@ -41587,31 +41436,31 @@ function renderErasAndMarkers(g, svg, resolved, xScale, innerHeight, palette, er
41587
41436
  markerG.on("mouseenter", () => {
41588
41437
  g.selectAll(".gantt-task").attr(
41589
41438
  "opacity",
41590
- FADE_OPACITY2
41439
+ FADE_OPACITY
41591
41440
  );
41592
41441
  g.selectAll(".gantt-milestone").attr(
41593
41442
  "opacity",
41594
- FADE_OPACITY2
41443
+ FADE_OPACITY
41595
41444
  );
41596
41445
  g.selectAll(
41597
41446
  ".gantt-group-bar, .gantt-group-summary"
41598
- ).attr("opacity", FADE_OPACITY2);
41599
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41600
- svg.selectAll(".gantt-task-label").attr("opacity", FADE_OPACITY2);
41601
- 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);
41602
41451
  g.selectAll(
41603
41452
  ".gantt-lane-band, .gantt-lane-accent, .gantt-lane-band-group"
41604
- ).attr("opacity", FADE_OPACITY2);
41453
+ ).attr("opacity", FADE_OPACITY);
41605
41454
  g.selectAll(
41606
41455
  ".gantt-dep-arrow, .gantt-dep-arrowhead"
41607
- ).attr("opacity", FADE_OPACITY2);
41456
+ ).attr("opacity", FADE_OPACITY);
41608
41457
  g.selectAll(".gantt-era-group").attr(
41609
41458
  "opacity",
41610
- FADE_OPACITY2
41459
+ FADE_OPACITY
41611
41460
  );
41612
41461
  g.selectAll(".gantt-marker-group").attr(
41613
41462
  "opacity",
41614
- FADE_OPACITY2
41463
+ FADE_OPACITY
41615
41464
  );
41616
41465
  markerG.attr("opacity", 1);
41617
41466
  markerLine.attr("opacity", 0.8);
@@ -41687,7 +41536,7 @@ function renderSprintBands(g, svg, resolved, xScale, innerHeight, palette) {
41687
41536
  const id = el.attr("data-task-id");
41688
41537
  el.attr(
41689
41538
  "opacity",
41690
- id && overlappingTaskIds.has(id) ? 1 : FADE_OPACITY2
41539
+ id && overlappingTaskIds.has(id) ? 1 : FADE_OPACITY
41691
41540
  );
41692
41541
  });
41693
41542
  g.selectAll(".gantt-milestone").each(function() {
@@ -41695,7 +41544,7 @@ function renderSprintBands(g, svg, resolved, xScale, innerHeight, palette) {
41695
41544
  const id = el.attr("data-task-id");
41696
41545
  el.attr(
41697
41546
  "opacity",
41698
- id && overlappingTaskIds.has(id) ? 1 : FADE_OPACITY2
41547
+ id && overlappingTaskIds.has(id) ? 1 : FADE_OPACITY
41699
41548
  );
41700
41549
  });
41701
41550
  svg.selectAll(".gantt-task-label").each(function() {
@@ -41703,7 +41552,7 @@ function renderSprintBands(g, svg, resolved, xScale, innerHeight, palette) {
41703
41552
  const id = el.attr("data-task-id");
41704
41553
  el.attr(
41705
41554
  "opacity",
41706
- id && overlappingTaskIds.has(id) ? 1 : FADE_OPACITY2
41555
+ id && overlappingTaskIds.has(id) ? 1 : FADE_OPACITY
41707
41556
  );
41708
41557
  });
41709
41558
  g.selectAll(
@@ -41713,7 +41562,7 @@ function renderSprintBands(g, svg, resolved, xScale, innerHeight, palette) {
41713
41562
  const name = el.attr("data-group");
41714
41563
  el.attr(
41715
41564
  "opacity",
41716
- name && overlappingGroupNames.has(name) ? 1 : FADE_OPACITY2
41565
+ name && overlappingGroupNames.has(name) ? 1 : FADE_OPACITY
41717
41566
  );
41718
41567
  });
41719
41568
  svg.selectAll(".gantt-group-label").each(function() {
@@ -41721,19 +41570,19 @@ function renderSprintBands(g, svg, resolved, xScale, innerHeight, palette) {
41721
41570
  const name = el.attr("data-group");
41722
41571
  el.attr(
41723
41572
  "opacity",
41724
- name && overlappingGroupNames.has(name) ? 1 : FADE_OPACITY2
41573
+ name && overlappingGroupNames.has(name) ? 1 : FADE_OPACITY
41725
41574
  );
41726
41575
  });
41727
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
41576
+ svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY);
41728
41577
  g.selectAll(
41729
41578
  ".gantt-lane-band, .gantt-lane-accent, .gantt-lane-band-group"
41730
- ).attr("opacity", FADE_OPACITY2);
41579
+ ).attr("opacity", FADE_OPACITY);
41731
41580
  g.selectAll(
41732
41581
  ".gantt-dep-arrow, .gantt-dep-arrowhead"
41733
- ).attr("opacity", FADE_OPACITY2);
41582
+ ).attr("opacity", FADE_OPACITY);
41734
41583
  g.selectAll(".gantt-marker-group").attr(
41735
41584
  "opacity",
41736
- FADE_OPACITY2
41585
+ FADE_OPACITY
41737
41586
  );
41738
41587
  sprintRect.attr("opacity", SPRINT_HOVER_OPACITY);
41739
41588
  const startVisible = rawSx >= chartMinX;
@@ -41802,20 +41651,20 @@ function highlightDeps(g, svg, taskId, resolved) {
41802
41651
  g.selectAll(".gantt-task").each(function() {
41803
41652
  const el = d3Selection13.select(this);
41804
41653
  const id = el.attr("data-task-id");
41805
- el.attr("opacity", id && related.has(id) ? 1 : FADE_OPACITY2);
41654
+ el.attr("opacity", id && related.has(id) ? 1 : FADE_OPACITY);
41806
41655
  });
41807
41656
  g.selectAll(".gantt-milestone").attr(
41808
41657
  "opacity",
41809
- FADE_OPACITY2
41658
+ FADE_OPACITY
41810
41659
  );
41811
41660
  g.selectAll(
41812
41661
  ".gantt-group-bar, .gantt-group-summary"
41813
- ).attr("opacity", FADE_OPACITY2);
41814
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41815
- 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);
41816
41665
  g.selectAll(".gantt-lane-band, .gantt-lane-accent").attr(
41817
41666
  "opacity",
41818
- FADE_OPACITY2
41667
+ FADE_OPACITY
41819
41668
  );
41820
41669
  g.selectAll(
41821
41670
  ".gantt-dep-arrow, .gantt-dep-arrowhead"
@@ -41824,52 +41673,52 @@ function highlightDeps(g, svg, taskId, resolved) {
41824
41673
  const from = el.attr("data-dep-from");
41825
41674
  const to = el.attr("data-dep-to");
41826
41675
  const isRelated = from && related.has(from) || to && related.has(to);
41827
- el.attr("opacity", isRelated ? 0.5 : FADE_OPACITY2);
41676
+ el.attr("opacity", isRelated ? 0.5 : FADE_OPACITY);
41828
41677
  });
41829
41678
  g.selectAll(".gantt-marker-group").attr(
41830
41679
  "opacity",
41831
- FADE_OPACITY2
41680
+ FADE_OPACITY
41832
41681
  );
41833
41682
  }
41834
41683
  function highlightGroup(g, svg, groupName) {
41835
41684
  g.selectAll(".gantt-task").each(function() {
41836
41685
  const el = d3Selection13.select(this);
41837
- el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY2);
41686
+ el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY);
41838
41687
  });
41839
41688
  g.selectAll(".gantt-milestone").each(function() {
41840
41689
  const el = d3Selection13.select(this);
41841
- el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY2);
41690
+ el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY);
41842
41691
  });
41843
41692
  g.selectAll(
41844
41693
  ".gantt-group-bar, .gantt-group-summary"
41845
41694
  ).each(function() {
41846
41695
  const el = d3Selection13.select(this);
41847
- el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY2);
41696
+ el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY);
41848
41697
  });
41849
41698
  svg.selectAll(".gantt-group-label").each(function() {
41850
41699
  const el = d3Selection13.select(this);
41851
- el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY2);
41700
+ el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY);
41852
41701
  });
41853
41702
  svg.selectAll(".gantt-task-label").each(function() {
41854
41703
  const el = d3Selection13.select(this);
41855
- el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY2);
41704
+ el.attr("opacity", el.attr("data-group") === groupName ? 1 : FADE_OPACITY);
41856
41705
  });
41857
41706
  svg.selectAll(".gantt-group-band-bg, .gantt-group-band-accent").each(function() {
41858
41707
  const el = d3Selection13.select(this);
41859
41708
  el.attr(
41860
41709
  "opacity",
41861
- el.attr("data-group") === groupName ? 1 : FADE_OPACITY2
41710
+ el.attr("data-group") === groupName ? 1 : FADE_OPACITY
41862
41711
  );
41863
41712
  });
41864
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
41865
- 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);
41866
41715
  g.selectAll(".gantt-lane-band, .gantt-lane-accent").attr(
41867
41716
  "opacity",
41868
- FADE_OPACITY2
41717
+ FADE_OPACITY
41869
41718
  );
41870
41719
  g.selectAll(".gantt-marker-group").attr(
41871
41720
  "opacity",
41872
- FADE_OPACITY2
41721
+ FADE_OPACITY
41873
41722
  );
41874
41723
  }
41875
41724
  function highlightLane(g, svg, tagKey, laneName) {
@@ -41877,105 +41726,105 @@ function highlightLane(g, svg, tagKey, laneName) {
41877
41726
  const laneValue = laneName.toLowerCase();
41878
41727
  g.selectAll(".gantt-task").each(function() {
41879
41728
  const el = d3Selection13.select(this);
41880
- el.attr("opacity", el.attr(tagAttr) === laneValue ? 1 : FADE_OPACITY2);
41729
+ el.attr("opacity", el.attr(tagAttr) === laneValue ? 1 : FADE_OPACITY);
41881
41730
  });
41882
41731
  g.selectAll(".gantt-milestone").each(function() {
41883
41732
  const el = d3Selection13.select(this);
41884
- el.attr("opacity", el.attr(tagAttr) === laneValue ? 1 : FADE_OPACITY2);
41733
+ el.attr("opacity", el.attr(tagAttr) === laneValue ? 1 : FADE_OPACITY);
41885
41734
  });
41886
41735
  svg.selectAll(".gantt-task-label").each(function() {
41887
41736
  const el = d3Selection13.select(this);
41888
- el.attr("opacity", el.attr(tagAttr) === laneValue ? 1 : FADE_OPACITY2);
41737
+ el.attr("opacity", el.attr(tagAttr) === laneValue ? 1 : FADE_OPACITY);
41889
41738
  });
41890
41739
  svg.selectAll(".gantt-lane-header").each(function() {
41891
41740
  const el = d3Selection13.select(this);
41892
- el.attr("opacity", el.attr("data-lane") === laneName ? 1 : FADE_OPACITY2);
41741
+ el.attr("opacity", el.attr("data-lane") === laneName ? 1 : FADE_OPACITY);
41893
41742
  });
41894
41743
  g.selectAll(".gantt-lane-band-group").each(function() {
41895
41744
  const el = d3Selection13.select(this);
41896
- el.attr("opacity", el.attr("data-lane") === laneName ? 1 : FADE_OPACITY2);
41745
+ el.attr("opacity", el.attr("data-lane") === laneName ? 1 : FADE_OPACITY);
41897
41746
  });
41898
41747
  svg.selectAll(".gantt-lane-band-bg, .gantt-lane-band-accent").each(function() {
41899
41748
  const el = d3Selection13.select(this);
41900
- el.attr("opacity", el.attr("data-lane") === laneName ? 1 : FADE_OPACITY2);
41749
+ el.attr("opacity", el.attr("data-lane") === laneName ? 1 : FADE_OPACITY);
41901
41750
  });
41902
41751
  g.selectAll(
41903
41752
  ".gantt-group-bar, .gantt-group-summary"
41904
- ).attr("opacity", FADE_OPACITY2);
41905
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41906
- 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);
41907
41756
  g.selectAll(".gantt-marker-group").attr(
41908
41757
  "opacity",
41909
- FADE_OPACITY2
41758
+ FADE_OPACITY
41910
41759
  );
41911
41760
  }
41912
41761
  function highlightTask(g, svg, taskId) {
41913
41762
  g.selectAll(".gantt-task").each(function() {
41914
41763
  const el = d3Selection13.select(this);
41915
- 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);
41916
41765
  });
41917
41766
  g.selectAll(".gantt-milestone").attr(
41918
41767
  "opacity",
41919
- FADE_OPACITY2
41768
+ FADE_OPACITY
41920
41769
  );
41921
41770
  svg.selectAll(".gantt-task-label").each(function() {
41922
41771
  const el = d3Selection13.select(this);
41923
- 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);
41924
41773
  });
41925
41774
  g.selectAll(
41926
41775
  ".gantt-group-bar, .gantt-group-summary"
41927
- ).attr("opacity", FADE_OPACITY2);
41928
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41929
- svg.selectAll(".gantt-group-band-bg, .gantt-group-band-accent").attr("opacity", FADE_OPACITY2);
41930
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
41931
- 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);
41932
41781
  g.selectAll(
41933
41782
  ".gantt-lane-band, .gantt-lane-accent, .gantt-lane-band-group"
41934
- ).attr("opacity", FADE_OPACITY2);
41783
+ ).attr("opacity", FADE_OPACITY);
41935
41784
  g.selectAll(
41936
41785
  ".gantt-dep-arrow, .gantt-dep-arrowhead"
41937
- ).attr("opacity", FADE_OPACITY2);
41786
+ ).attr("opacity", FADE_OPACITY);
41938
41787
  g.selectAll(".gantt-marker-group").attr(
41939
41788
  "opacity",
41940
- FADE_OPACITY2
41789
+ FADE_OPACITY
41941
41790
  );
41942
41791
  }
41943
41792
  function highlightMilestone(g, svg, taskId) {
41944
41793
  g.selectAll(".gantt-task").attr(
41945
41794
  "opacity",
41946
- FADE_OPACITY2
41795
+ FADE_OPACITY
41947
41796
  );
41948
41797
  g.selectAll(".gantt-milestone").each(function() {
41949
41798
  const el = d3Selection13.select(this);
41950
- 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);
41951
41800
  });
41952
41801
  svg.selectAll(".gantt-task-label").each(function() {
41953
41802
  const el = d3Selection13.select(this);
41954
- 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);
41955
41804
  });
41956
41805
  g.selectAll(
41957
41806
  ".gantt-group-bar, .gantt-group-summary"
41958
- ).attr("opacity", FADE_OPACITY2);
41959
- svg.selectAll(".gantt-group-label").attr("opacity", FADE_OPACITY2);
41960
- svg.selectAll(".gantt-group-band-bg, .gantt-group-band-accent").attr("opacity", FADE_OPACITY2);
41961
- svg.selectAll(".gantt-lane-header").attr("opacity", FADE_OPACITY2);
41962
- 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);
41963
41812
  g.selectAll(
41964
41813
  ".gantt-lane-band, .gantt-lane-accent, .gantt-lane-band-group"
41965
- ).attr("opacity", FADE_OPACITY2);
41814
+ ).attr("opacity", FADE_OPACITY);
41966
41815
  g.selectAll(
41967
41816
  ".gantt-dep-arrow, .gantt-dep-arrowhead"
41968
- ).attr("opacity", FADE_OPACITY2);
41817
+ ).attr("opacity", FADE_OPACITY);
41969
41818
  g.selectAll(".gantt-marker-group").attr(
41970
41819
  "opacity",
41971
- FADE_OPACITY2
41820
+ FADE_OPACITY
41972
41821
  );
41973
41822
  }
41974
41823
  function highlightTaskLabel(svg, lineNumber) {
41975
41824
  const ln = String(lineNumber);
41976
41825
  svg.selectAll(".gantt-task-label").each(function() {
41977
41826
  const el = d3Selection13.select(this);
41978
- 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);
41979
41828
  });
41980
41829
  }
41981
41830
  function resetTaskLabels(svg) {
@@ -42249,7 +42098,7 @@ function renderTimeScaleHorizontal(g, scale, _innerWidth, innerHeight, textColor
42249
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);
42250
42099
  }
42251
42100
  }
42252
- 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;
42253
42102
  var init_renderer12 = __esm({
42254
42103
  "src/gantt/renderer.ts"() {
42255
42104
  "use strict";
@@ -42292,7 +42141,7 @@ var init_renderer12 = __esm({
42292
42141
  SPRINT_BAND_OPACITY = 0.05;
42293
42142
  SPRINT_HOVER_OPACITY = 0.12;
42294
42143
  SPRINT_BOUNDARY_OPACITY = 0.3;
42295
- FADE_OPACITY2 = 0.1;
42144
+ FADE_OPACITY = 0.1;
42296
42145
  MONTH_ABBR2 = [
42297
42146
  "Jan",
42298
42147
  "Feb",
@@ -47827,7 +47676,8 @@ function layoutMap(resolved, data, size, opts) {
47827
47676
  palette.bg,
47828
47677
  mutedBasemap ? isDark ? MUTED_FOREIGN_DARK : MUTED_FOREIGN_LIGHT : isDark ? FOREIGN_TINT_DARK : FOREIGN_TINT_LIGHT
47829
47678
  );
47830
- 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;
47831
47681
  const colorByIso = /* @__PURE__ */ new Map();
47832
47682
  if (colorizeActive) {
47833
47683
  const adjacency = /* @__PURE__ */ new Map();
@@ -47923,16 +47773,17 @@ function layoutMap(resolved, data, size, opts) {
47923
47773
  };
47924
47774
  }
47925
47775
  }
47776
+ const shownTitle = resolved.directives.noTitle ? null : resolved.title;
47926
47777
  const TITLE_GAP2 = 16;
47927
47778
  let topPad = FIT_PAD;
47928
- if (resolved.title && resolved.pois.length > 0) {
47779
+ if (shownTitle && resolved.pois.length > 0) {
47929
47780
  const bannerBottom = (resolved.subtitle ? TITLE_Y + TITLE_FONT_SIZE : TITLE_Y) + TITLE_FONT_SIZE / 2;
47930
47781
  topPad = Math.max(FIT_PAD, bannerBottom + TITLE_GAP2);
47931
47782
  }
47932
47783
  const legendBand = mapLegendBand(legend, {
47933
47784
  width,
47934
47785
  mode: opts.legendMode ?? "preview",
47935
- hasTitle: Boolean(resolved.title),
47786
+ hasTitle: Boolean(shownTitle),
47936
47787
  hasSubtitle: Boolean(resolved.subtitle)
47937
47788
  });
47938
47789
  if (legendBand > topPad) topPad = legendBand;
@@ -49021,7 +48872,7 @@ function layoutMap(resolved, data, size, opts) {
49021
48872
  width,
49022
48873
  height,
49023
48874
  background: water,
49024
- title: resolved.title,
48875
+ title: shownTitle,
49025
48876
  ...resolved.subtitle !== void 0 && { subtitle: resolved.subtitle },
49026
48877
  ...resolved.caption !== void 0 && { caption: resolved.caption },
49027
48878
  regions,
@@ -49431,9 +49282,10 @@ function renderMap(container, resolved, data, palette, isDark, onClickItem, expo
49431
49282
  wireSync(lt, leg.lineNumber);
49432
49283
  }
49433
49284
  });
49285
+ const clusterUi = !exportDims && !resolved.directives.noClusterPois;
49434
49286
  const gSpider = svg.append("g").attr("class", "dgmo-map-spider");
49435
49287
  for (const cl of layout.clusters) {
49436
- if (!exportDims) {
49288
+ if (clusterUi) {
49437
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");
49438
49290
  }
49439
49291
  for (const leg of cl.legs) {
@@ -49525,13 +49377,18 @@ function renderMap(container, resolved, data, palette, isDark, onClickItem, expo
49525
49377
  }
49526
49378
  wireSync(t, lab.lineNumber);
49527
49379
  }
49528
- if (!exportDims && layout.clusters.length) {
49380
+ if (clusterUi && layout.clusters.length) {
49529
49381
  const gBadge = svg.append("g").attr("class", "dgmo-map-cluster-badges");
49530
49382
  for (const cl of layout.clusters) {
49531
49383
  const g = gBadge.append("g").attr("data-cluster", cl.id).style("opacity", 0).style("pointer-events", "none");
49532
49384
  const R = 9;
49533
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);
49534
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
+ }
49535
49392
  emitText(
49536
49393
  g,
49537
49394
  cl.cx,
@@ -52457,10 +52314,12 @@ function renderSequenceDiagram(container, parsed, palette, isDark, _onNavigateTo
52457
52314
  isDark ? 15 : 20
52458
52315
  ) : isDark ? palette.surface : palette.bg;
52459
52316
  const strokeColor = groupTagColor || palette.textMuted;
52460
- 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");
52461
52318
  groupG.append("title").text("Click to collapse");
52462
- 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");
52463
- 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);
52464
52323
  }
52465
52324
  const lifelineStartY = lifelineStartY0;
52466
52325
  participants.forEach((participant) => {
@@ -52502,7 +52361,7 @@ function renderSequenceDiagram(container, parsed, palette, isDark, _onNavigateTo
52502
52361
  const participantG = svg.select(
52503
52362
  `.participant[data-participant-id="${participant.id}"]`
52504
52363
  );
52505
- 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");
52506
52365
  participantG.append("title").text("Click to expand");
52507
52366
  const pFill = effectiveTagColor ? mix(
52508
52367
  effectiveTagColor,
@@ -54481,7 +54340,7 @@ function renderArcDiagram(container, parsed, palette, _isDark, onClickItem, expo
54481
54340
  neighbors2.get(link.source).add(link.target);
54482
54341
  neighbors2.get(link.target).add(link.source);
54483
54342
  }
54484
- const FADE_OPACITY3 = 0.1;
54343
+ const FADE_OPACITY2 = 0.1;
54485
54344
  function handleMouseEnter(hovered) {
54486
54345
  const connected = neighbors2.get(hovered);
54487
54346
  g.selectAll(".arc-link").each(function() {
@@ -54489,13 +54348,13 @@ function renderArcDiagram(container, parsed, palette, _isDark, onClickItem, expo
54489
54348
  const src = el.attr("data-source");
54490
54349
  const tgt = el.attr("data-target");
54491
54350
  const isRelated = src === hovered || tgt === hovered;
54492
- el.attr("stroke-opacity", isRelated ? 0.85 : FADE_OPACITY3);
54351
+ el.attr("stroke-opacity", isRelated ? 0.85 : FADE_OPACITY2);
54493
54352
  });
54494
54353
  g.selectAll(".arc-node").each(function() {
54495
54354
  const el = d3Selection23.select(this);
54496
54355
  const name = el.attr("data-node");
54497
54356
  const isRelated = name === hovered || connected.has(name);
54498
- el.attr("opacity", isRelated ? 1 : FADE_OPACITY3);
54357
+ el.attr("opacity", isRelated ? 1 : FADE_OPACITY2);
54499
54358
  });
54500
54359
  }
54501
54360
  function handleMouseLeave() {
@@ -54519,11 +54378,11 @@ function renderArcDiagram(container, parsed, palette, _isDark, onClickItem, expo
54519
54378
  g.selectAll(".arc-link").each(function() {
54520
54379
  const el = d3Selection23.select(this);
54521
54380
  const isRelated = members.has(el.attr("data-source")) || members.has(el.attr("data-target"));
54522
- el.attr("stroke-opacity", isRelated ? 0.85 : FADE_OPACITY3);
54381
+ el.attr("stroke-opacity", isRelated ? 0.85 : FADE_OPACITY2);
54523
54382
  });
54524
54383
  g.selectAll(".arc-node").each(function() {
54525
54384
  const el = d3Selection23.select(this);
54526
- 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);
54527
54386
  });
54528
54387
  g.selectAll(".arc-group-band").each(function() {
54529
54388
  const el = d3Selection23.select(this);
@@ -55045,23 +54904,23 @@ function setupTimeline(container, parsed, palette, isDark, exportDims, activeTag
55045
54904
  };
55046
54905
  }
55047
54906
  function makeTimelineHoverHelpers() {
55048
- const FADE_OPACITY3 = 0.1;
54907
+ const FADE_OPACITY2 = 0.1;
55049
54908
  function fadeToGroup(g, groupName) {
55050
54909
  g.selectAll(".tl-event").each(function() {
55051
54910
  const el = d3Selection23.select(this);
55052
54911
  const evGroup = el.attr("data-group");
55053
- el.attr("opacity", evGroup === groupName ? 1 : FADE_OPACITY3);
54912
+ el.attr("opacity", evGroup === groupName ? 1 : FADE_OPACITY2);
55054
54913
  });
55055
54914
  g.selectAll(".tl-legend-item, .tl-lane-header").each(
55056
54915
  function() {
55057
54916
  const el = d3Selection23.select(this);
55058
54917
  const name = el.attr("data-group");
55059
- el.attr("opacity", name === groupName ? 1 : FADE_OPACITY3);
54918
+ el.attr("opacity", name === groupName ? 1 : FADE_OPACITY2);
55060
54919
  }
55061
54920
  );
55062
54921
  g.selectAll(".tl-marker").attr(
55063
54922
  "opacity",
55064
- FADE_OPACITY3
54923
+ FADE_OPACITY2
55065
54924
  );
55066
54925
  }
55067
54926
  function fadeToEra(g, eraStart, eraEnd) {
@@ -55071,40 +54930,40 @@ function makeTimelineHoverHelpers() {
55071
54930
  const endDate = el.attr("data-end-date");
55072
54931
  const evEnd = endDate ? parseFloat(endDate) : date;
55073
54932
  const inside = evEnd >= eraStart && date <= eraEnd;
55074
- el.attr("opacity", inside ? 1 : FADE_OPACITY3);
54933
+ el.attr("opacity", inside ? 1 : FADE_OPACITY2);
55075
54934
  });
55076
54935
  g.selectAll(".tl-legend-item, .tl-lane-header").attr(
55077
54936
  "opacity",
55078
- FADE_OPACITY3
54937
+ FADE_OPACITY2
55079
54938
  );
55080
54939
  g.selectAll(".tl-era").each(function() {
55081
54940
  const el = d3Selection23.select(this);
55082
54941
  const s = parseFloat(el.attr("data-era-start"));
55083
54942
  const e = parseFloat(el.attr("data-era-end"));
55084
54943
  const isSelf = s === eraStart && e === eraEnd;
55085
- el.attr("opacity", isSelf ? 1 : FADE_OPACITY3);
54944
+ el.attr("opacity", isSelf ? 1 : FADE_OPACITY2);
55086
54945
  });
55087
54946
  g.selectAll(".tl-marker").each(function() {
55088
54947
  const el = d3Selection23.select(this);
55089
54948
  const date = parseFloat(el.attr("data-marker-date"));
55090
54949
  const inside = date >= eraStart && date <= eraEnd;
55091
- el.attr("opacity", inside ? 1 : FADE_OPACITY3);
54950
+ el.attr("opacity", inside ? 1 : FADE_OPACITY2);
55092
54951
  });
55093
54952
  }
55094
54953
  function fadeToMarker(g, markerDate) {
55095
54954
  g.selectAll(".tl-event").attr(
55096
54955
  "opacity",
55097
- FADE_OPACITY3
54956
+ FADE_OPACITY2
55098
54957
  );
55099
- g.selectAll(".tl-era").attr("opacity", FADE_OPACITY3);
54958
+ g.selectAll(".tl-era").attr("opacity", FADE_OPACITY2);
55100
54959
  g.selectAll(".tl-legend-item, .tl-lane-header").attr(
55101
54960
  "opacity",
55102
- FADE_OPACITY3
54961
+ FADE_OPACITY2
55103
54962
  );
55104
54963
  g.selectAll(".tl-marker").each(function() {
55105
54964
  const el = d3Selection23.select(this);
55106
54965
  const date = parseFloat(el.attr("data-marker-date"));
55107
- el.attr("opacity", date === markerDate ? 1 : FADE_OPACITY3);
54966
+ el.attr("opacity", date === markerDate ? 1 : FADE_OPACITY2);
55108
54967
  });
55109
54968
  }
55110
54969
  function fadeReset(g) {
@@ -55118,15 +54977,15 @@ function makeTimelineHoverHelpers() {
55118
54977
  g.selectAll(".tl-event").each(function() {
55119
54978
  const el = d3Selection23.select(this);
55120
54979
  const val = el.attr(attrName);
55121
- el.attr("opacity", val === tagValue ? 1 : FADE_OPACITY3);
54980
+ el.attr("opacity", val === tagValue ? 1 : FADE_OPACITY2);
55122
54981
  });
55123
54982
  g.selectAll(".tl-legend-item, .tl-lane-header").attr(
55124
54983
  "opacity",
55125
- FADE_OPACITY3
54984
+ FADE_OPACITY2
55126
54985
  );
55127
54986
  g.selectAll(".tl-marker").attr(
55128
54987
  "opacity",
55129
- FADE_OPACITY3
54988
+ FADE_OPACITY2
55130
54989
  );
55131
54990
  g.selectAll(".tl-tag-legend-entry").each(function() {
55132
54991
  const el = d3Selection23.select(this);
@@ -55135,7 +54994,7 @@ function makeTimelineHoverHelpers() {
55135
54994
  const entryGroup = el.attr("data-tag-group");
55136
54995
  el.attr(
55137
54996
  "opacity",
55138
- entryGroup === tagKey && entryValue === tagValue ? 1 : FADE_OPACITY3
54997
+ entryGroup === tagKey && entryValue === tagValue ? 1 : FADE_OPACITY2
55139
54998
  );
55140
54999
  });
55141
55000
  }
@@ -55145,7 +55004,7 @@ function makeTimelineHoverHelpers() {
55145
55004
  }
55146
55005
  }
55147
55006
  return {
55148
- FADE_OPACITY: FADE_OPACITY3,
55007
+ FADE_OPACITY: FADE_OPACITY2,
55149
55008
  fadeToGroup,
55150
55009
  fadeToEra,
55151
55010
  fadeToMarker,
@@ -55157,7 +55016,7 @@ function makeTimelineHoverHelpers() {
55157
55016
  function renderTimelineTagLegendOverlay(container, parsed, palette, isDark, setup, hovers, onClickItem, exportDims, swimlaneTagGroup, activeTagGroup, onTagStateChange, viewMode, exportMode) {
55158
55017
  if (parsed.timelineTagGroups.length === 0) return;
55159
55018
  const { width, textColor, groupColorMap, solid } = setup;
55160
- const { FADE_OPACITY: FADE_OPACITY3, fadeReset, fadeToTagValue } = hovers;
55019
+ const { FADE_OPACITY: FADE_OPACITY2, fadeReset, fadeToTagValue } = hovers;
55161
55020
  const title = parsed.noTitle ? null : parsed.title;
55162
55021
  const { timelineEvents } = parsed;
55163
55022
  const LG_HEIGHT = LEGEND_HEIGHT;
@@ -55247,7 +55106,7 @@ function renderTimelineTagLegendOverlay(container, parsed, palette, isDark, setu
55247
55106
  const eg = el.attr("data-tag-group") ?? el.node()?.closest?.("[data-tag-group]")?.getAttribute("data-tag-group");
55248
55107
  el.attr(
55249
55108
  "opacity",
55250
- eg === tagKey && ev === tagVal ? 1 : FADE_OPACITY3
55109
+ eg === tagKey && ev === tagVal ? 1 : FADE_OPACITY2
55251
55110
  );
55252
55111
  });
55253
55112
  } else {
@@ -58062,6 +57921,9 @@ async function renderForExport(content, theme, palette, viewState, options) {
58062
57921
  const { renderSequenceDiagram: renderSequenceDiagram2 } = await Promise.resolve().then(() => (init_renderer20(), renderer_exports20));
58063
57922
  const seqParsed = parseSequenceDgmo2(content);
58064
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;
58065
57927
  renderSequenceDiagram2(
58066
57928
  container,
58067
57929
  seqParsed,
@@ -58070,9 +57932,11 @@ async function renderForExport(content, theme, palette, viewState, options) {
58070
57932
  void 0,
58071
57933
  {
58072
57934
  exportWidth: EXPORT_WIDTH,
58073
- ...options?.tagGroup !== void 0 && {
58074
- activeTagGroup: options.tagGroup
58075
- }
57935
+ ...seqActiveTagGroup !== void 0 && {
57936
+ activeTagGroup: seqActiveTagGroup
57937
+ },
57938
+ ...collapsedSections !== void 0 && { collapsedSections },
57939
+ ...collapsedGroups !== void 0 && { collapsedGroups }
58076
57940
  }
58077
57941
  );
58078
57942
  } else if (parsed.type === "wordcloud") {
@@ -58778,7 +58642,6 @@ __export(advanced_exports, {
58778
58642
  LEGEND_HEIGHT: () => LEGEND_HEIGHT,
58779
58643
  METADATA_KEY_SET: () => METADATA_KEY_SET,
58780
58644
  MIN_PRIMARY_SCORE: () => MIN_PRIMARY_SCORE,
58781
- PERT_LEGEND_PILL_HEIGHT: () => PERT_LEGEND_PILL_HEIGHT,
58782
58645
  PIPE_METADATA: () => PIPE_METADATA,
58783
58646
  RACI_ERROR_CODES: () => RACI_ERROR_CODES,
58784
58647
  RACI_VARIANTS: () => VARIANTS,
@@ -58855,8 +58718,6 @@ __export(advanced_exports, {
58855
58718
  gruvboxPalette: () => gruvboxPalette,
58856
58719
  hexToHSL: () => hexToHSL,
58857
58720
  hexToHSLString: () => hexToHSLString,
58858
- highlightPertCriticalPath: () => highlightPertCriticalPath,
58859
- highlightPertSet: () => highlightPertSet,
58860
58721
  hslToHex: () => hslToHex,
58861
58722
  inferParticipantType: () => inferParticipantType,
58862
58723
  inferRoles: () => inferRoles,
@@ -58946,8 +58807,6 @@ __export(advanced_exports, {
58946
58807
  parseTimelineDate: () => parseTimelineDate,
58947
58808
  parseVisualization: () => parseVisualization,
58948
58809
  parseWireframe: () => parseWireframe,
58949
- pertLegendBlockWidth: () => pertLegendBlockWidth,
58950
- pertLegendEntries: () => pertLegendEntries,
58951
58810
  raciCellAppendMarker: () => cellAppendMarker,
58952
58811
  raciCellCycle: () => cellCycle,
58953
58812
  raciCellRemove: () => cellRemove,
@@ -58994,7 +58853,6 @@ __export(advanced_exports, {
58994
58853
  renderPert: () => renderPert,
58995
58854
  renderPertAnalysisBlock: () => renderPertAnalysisBlock,
58996
58855
  renderPertForExport: () => renderPertForExport,
58997
- renderPertLegendBlock: () => renderLegendBlock,
58998
58856
  renderPyramid: () => renderPyramid,
58999
58857
  renderPyramidForExport: () => renderPyramidForExport,
59000
58858
  renderQuadrant: () => renderQuadrant,
@@ -59016,8 +58874,6 @@ __export(advanced_exports, {
59016
58874
  renderVenn: () => renderVenn,
59017
58875
  renderWireframe: () => renderWireframe,
59018
58876
  renderWordCloud: () => renderWordCloud,
59019
- resetPertCriticalPath: () => resetPertCriticalPath,
59020
- resetPertHighlight: () => resetPertHighlight,
59021
58877
  resolveColor: () => resolveColor,
59022
58878
  resolveColorWithDiagnostic: () => resolveColorWithDiagnostic,
59023
58879
  resolveMap: () => resolveMap,
@@ -60861,6 +60717,7 @@ var COMPLETION_REGISTRY = /* @__PURE__ */ new Map([
60861
60717
  description: "Which tag group leads when several are present"
60862
60718
  },
60863
60719
  caption: { description: "Caption line (data-source attribution)" },
60720
+ "no-title": { description: "Suppress the title banner" },
60864
60721
  "no-legend": { description: "Suppress the legend" },
60865
60722
  "no-coastline": {
60866
60723
  description: "Turn off coastal water-lines (on by default)"
@@ -60877,6 +60734,9 @@ var COMPLETION_REGISTRY = /* @__PURE__ */ new Map([
60877
60734
  "no-poi-labels": { description: "Turn off POI labels (on by default)" },
60878
60735
  "no-colorize": {
60879
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"
60880
60740
  }
60881
60741
  })
60882
60742
  ]
@@ -62331,7 +62191,6 @@ function formatLineDiff(path, original, migrated) {
62331
62191
  LEGEND_HEIGHT,
62332
62192
  METADATA_KEY_SET,
62333
62193
  MIN_PRIMARY_SCORE,
62334
- PERT_LEGEND_PILL_HEIGHT,
62335
62194
  PIPE_METADATA,
62336
62195
  RACI_ERROR_CODES,
62337
62196
  RACI_VARIANTS,
@@ -62408,8 +62267,6 @@ function formatLineDiff(path, original, migrated) {
62408
62267
  gruvboxPalette,
62409
62268
  hexToHSL,
62410
62269
  hexToHSLString,
62411
- highlightPertCriticalPath,
62412
- highlightPertSet,
62413
62270
  hslToHex,
62414
62271
  inferParticipantType,
62415
62272
  inferRoles,
@@ -62499,8 +62356,6 @@ function formatLineDiff(path, original, migrated) {
62499
62356
  parseTimelineDate,
62500
62357
  parseVisualization,
62501
62358
  parseWireframe,
62502
- pertLegendBlockWidth,
62503
- pertLegendEntries,
62504
62359
  raciCellAppendMarker,
62505
62360
  raciCellCycle,
62506
62361
  raciCellRemove,
@@ -62547,7 +62402,6 @@ function formatLineDiff(path, original, migrated) {
62547
62402
  renderPert,
62548
62403
  renderPertAnalysisBlock,
62549
62404
  renderPertForExport,
62550
- renderPertLegendBlock,
62551
62405
  renderPyramid,
62552
62406
  renderPyramidForExport,
62553
62407
  renderQuadrant,
@@ -62569,8 +62423,6 @@ function formatLineDiff(path, original, migrated) {
62569
62423
  renderVenn,
62570
62424
  renderWireframe,
62571
62425
  renderWordCloud,
62572
- resetPertCriticalPath,
62573
- resetPertHighlight,
62574
62426
  resolveColor,
62575
62427
  resolveColorWithDiagnostic,
62576
62428
  resolveMap,