@nowline/embed 0.0.0-dev.20261019024645.g95fa9ba → 0.0.0-dev.20261019105958.g8f093e8

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/meta.json CHANGED
@@ -6107,7 +6107,7 @@
6107
6107
  "format": "esm"
6108
6108
  },
6109
6109
  "../layout/dist/chart-translation.js": {
6110
- "bytes": 3081,
6110
+ "bytes": 3417,
6111
6111
  "imports": [],
6112
6112
  "format": "esm"
6113
6113
  },
@@ -6265,7 +6265,7 @@
6265
6265
  "format": "esm"
6266
6266
  },
6267
6267
  "../layout/dist/layout-context.js": {
6268
- "bytes": 3798,
6268
+ "bytes": 3490,
6269
6269
  "imports": [
6270
6270
  {
6271
6271
  "path": "../layout/dist/calendar.js",
@@ -6496,7 +6496,7 @@
6496
6496
  "format": "esm"
6497
6497
  },
6498
6498
  "../layout/dist/nodes/marker-band.js": {
6499
- "bytes": 9564,
6499
+ "bytes": 13336,
6500
6500
  "imports": [
6501
6501
  {
6502
6502
  "path": "../layout/dist/dsl-utils.js",
@@ -6517,7 +6517,7 @@
6517
6517
  "format": "esm"
6518
6518
  },
6519
6519
  "../layout/dist/nodes/milestone-node.js": {
6520
- "bytes": 14950,
6520
+ "bytes": 16559,
6521
6521
  "imports": [
6522
6522
  {
6523
6523
  "path": "../layout/dist/dsl-utils.js",
@@ -6529,11 +6529,6 @@
6529
6529
  "kind": "import-statement",
6530
6530
  "original": "../item-port-geometry.js"
6531
6531
  },
6532
- {
6533
- "path": "../layout/dist/layout-context.js",
6534
- "kind": "import-statement",
6535
- "original": "../layout-context.js"
6536
- },
6537
6532
  {
6538
6533
  "path": "../layout/dist/style-resolution.js",
6539
6534
  "kind": "import-statement",
@@ -6558,7 +6553,7 @@
6558
6553
  "format": "esm"
6559
6554
  },
6560
6555
  "../layout/dist/nodes/region-markers.js": {
6561
- "bytes": 5797,
6556
+ "bytes": 5923,
6562
6557
  "imports": [
6563
6558
  {
6564
6559
  "path": "../layout/dist/text-measure.js",
@@ -6718,7 +6713,7 @@
6718
6713
  "format": "esm"
6719
6714
  },
6720
6715
  "../layout/dist/nodes/include-node.js": {
6721
- "bytes": 7155,
6716
+ "bytes": 7099,
6722
6717
  "imports": [
6723
6718
  {
6724
6719
  "path": "../layout/dist/chart-translation.js",
@@ -6964,7 +6959,7 @@
6964
6959
  "format": "esm"
6965
6960
  },
6966
6961
  "../layout/dist/phases/finalize.js": {
6967
- "bytes": 40739,
6962
+ "bytes": 41313,
6968
6963
  "imports": [
6969
6964
  {
6970
6965
  "path": "../layout/dist/axis-columns.js",
@@ -9549,7 +9544,7 @@
9549
9544
  "format": "esm"
9550
9545
  },
9551
9546
  "../layout/dist/phases/place.js": {
9552
- "bytes": 10643,
9547
+ "bytes": 10591,
9553
9548
  "imports": [
9554
9549
  {
9555
9550
  "path": "../layout/dist/axis-columns.js",
@@ -10309,7 +10304,7 @@
10309
10304
  "imports": [],
10310
10305
  "exports": [],
10311
10306
  "inputs": {},
10312
- "bytes": 3671548
10307
+ "bytes": 3681395
10313
10308
  },
10314
10309
  "dist/nowline.min.js": {
10315
10310
  "imports": [],
@@ -11154,7 +11149,7 @@
11154
11149
  "bytesInOutput": 529
11155
11150
  },
11156
11151
  "../layout/dist/edge-routing.js": {
11157
- "bytesInOutput": 3272
11152
+ "bytesInOutput": 3280
11158
11153
  },
11159
11154
  "../layout/dist/frame-tab-geometry.js": {
11160
11155
  "bytesInOutput": 357
@@ -11277,7 +11272,7 @@
11277
11272
  "bytesInOutput": 2059
11278
11273
  },
11279
11274
  "../layout/dist/view-preset.js": {
11280
- "bytesInOutput": 5859
11275
+ "bytesInOutput": 5861
11281
11276
  },
11282
11277
  "../layout/dist/phases/date-window.js": {
11283
11278
  "bytesInOutput": 1118
@@ -11286,7 +11281,7 @@
11286
11281
  "bytesInOutput": 917
11287
11282
  },
11288
11283
  "../layout/dist/chart-translation.js": {
11289
- "bytesInOutput": 690
11284
+ "bytesInOutput": 733
11290
11285
  },
11291
11286
  "../layout/dist/nodes/anchor-node.js": {
11292
11287
  "bytesInOutput": 916
@@ -11316,7 +11311,7 @@
11316
11311
  "bytesInOutput": 100
11317
11312
  },
11318
11313
  "../layout/dist/layout-context.js": {
11319
- "bytesInOutput": 1139
11314
+ "bytesInOutput": 1132
11320
11315
  },
11321
11316
  "../layout/dist/nodes/item-node.js": {
11322
11317
  "bytesInOutput": 1704
@@ -11334,13 +11329,13 @@
11334
11329
  "bytesInOutput": 1361
11335
11330
  },
11336
11331
  "../layout/dist/nodes/marker-band.js": {
11337
- "bytesInOutput": 1869
11332
+ "bytesInOutput": 2775
11338
11333
  },
11339
11334
  "../layout/dist/nodes/milestone-node.js": {
11340
- "bytesInOutput": 3250
11335
+ "bytesInOutput": 3598
11341
11336
  },
11342
11337
  "../layout/dist/nodes/region-markers.js": {
11343
- "bytesInOutput": 1265
11338
+ "bytesInOutput": 1279
11344
11339
  },
11345
11340
  "../layout/dist/lane-utilization.js": {
11346
11341
  "bytesInOutput": 1842
@@ -11355,7 +11350,7 @@
11355
11350
  "bytesInOutput": 1774
11356
11351
  },
11357
11352
  "../layout/dist/nodes/include-node.js": {
11358
- "bytesInOutput": 1473
11353
+ "bytesInOutput": 1431
11359
11354
  },
11360
11355
  "../layout/dist/nodes/nowline-node.js": {
11361
11356
  "bytesInOutput": 506
@@ -11376,7 +11371,7 @@
11376
11371
  "bytesInOutput": 1893
11377
11372
  },
11378
11373
  "../layout/dist/phases/finalize.js": {
11379
- "bytesInOutput": 11784
11374
+ "bytesInOutput": 11867
11380
11375
  },
11381
11376
  "../../node_modules/.pnpm/internmap@2.0.3/node_modules/internmap/src/index.js": {
11382
11377
  "bytesInOutput": 633
@@ -11403,7 +11398,7 @@
11403
11398
  "bytesInOutput": 727
11404
11399
  },
11405
11400
  "../layout/dist/phases/place.js": {
11406
- "bytesInOutput": 2213
11401
+ "bytesInOutput": 2171
11407
11402
  },
11408
11403
  "../layout/dist/nodes/group-node.js": {
11409
11404
  "bytesInOutput": 1240
@@ -11463,7 +11458,7 @@
11463
11458
  "bytesInOutput": 727
11464
11459
  },
11465
11460
  "../renderer/dist/svg/render.js": {
11466
- "bytesInOutput": 31144
11461
+ "bytesInOutput": 31140
11467
11462
  },
11468
11463
  "../browser/dist/pipeline.js": {
11469
11464
  "bytesInOutput": 2126
@@ -11490,7 +11485,7 @@
11490
11485
  "bytesInOutput": 257
11491
11486
  }
11492
11487
  },
11493
- "bytes": 671885
11488
+ "bytes": 673194
11494
11489
  }
11495
11490
  }
11496
11491
  }
@@ -1,4 +1,4 @@
1
- /*! @nowline/embed 0.0.0-dev.20261019024645.g95fa9ba sha=95fa9ba built=2026-10-19T02:41:07Z */
1
+ /*! @nowline/embed 0.0.0-dev.20261019105958.g8f093e8 sha=8f093e8 built=2026-10-19T10:54:08Z */
2
2
  var __create = Object.create;
3
3
  var __defProp = Object.defineProperty;
4
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -32201,11 +32201,14 @@ function translateIncludeY(region, dy) {
32201
32201
  point2.y += dy;
32202
32202
  }
32203
32203
  }
32204
- function translateMilestoneChartY(milestone, dy) {
32204
+ function translateMilestoneChartY(milestone, placement, dy) {
32205
32205
  milestone.cutTopY += dy;
32206
32206
  milestone.cutBottomY += dy;
32207
- for (const arrow of milestone.slackArrows ?? [])
32208
- arrow.y += dy;
32207
+ milestone.slackArrows?.forEach((arrow, i2) => {
32208
+ const start = placement.slackArrows?.[i2];
32209
+ if (start && "y" in start)
32210
+ arrow.y += dy;
32211
+ });
32209
32212
  }
32210
32213
 
32211
32214
  // ../layout/dist/nodes/marker-geometry.js
@@ -32732,13 +32735,13 @@ function createLayoutContext(source, shared, chart, init2) {
32732
32735
  entityLeftEdges: /* @__PURE__ */ new Map(),
32733
32736
  entityRightEdges: /* @__PURE__ */ new Map(),
32734
32737
  entityMidpoints: /* @__PURE__ */ new Map(),
32738
+ markerIds: /* @__PURE__ */ new Set([...source.content.anchors.keys(), ...source.content.milestones.keys()]),
32735
32739
  placedItems: /* @__PURE__ */ new Map(),
32736
32740
  itemFlowKey: /* @__PURE__ */ new Map(),
32737
32741
  currentFlowKey: "",
32738
32742
  slackCorridors: [],
32739
32743
  markerRowPlacements: init2.markerRowPlacements ?? /* @__PURE__ */ new Map(),
32740
32744
  chartTopY: chart.chartTopY,
32741
- estimatedChartTopY: chart.estimatedChartTopY,
32742
32745
  chartBottomY: chart.chartBottomY,
32743
32746
  swimlaneBottomY: chart.swimlaneBottomY,
32744
32747
  nextParallelId: 0,
@@ -32749,9 +32752,6 @@ function createLayoutContext(source, shared, chart, init2) {
32749
32752
  ...shared.waves ? { waves: shared.waves } : {}
32750
32753
  };
32751
32754
  }
32752
- function chartFrameY(canvasY, ctx) {
32753
- return canvasY - ctx.estimatedChartTopY;
32754
- }
32755
32755
 
32756
32756
  // ../layout/dist/nodes/item-node.js
32757
32757
  var TEXT_INSET_PX = 12;
@@ -33644,10 +33644,22 @@ function markerLabelsRightX(entries, chartLeftX, chartRightX, estimateTextWidth2
33644
33644
  function markerLabelWidth(e, estimateTextWidth2) {
33645
33645
  return estimateTextWidth2(e.title, e.fontSize) * (e.bold ? MARKER_BOLD_WIDTH_FACTOR : 1);
33646
33646
  }
33647
- function packMarkerRow(entries, chartLeftX, chartRightX, estimateTextWidth2) {
33647
+ function markerArrows(placements) {
33648
+ const out = [];
33649
+ for (const p of placements) {
33650
+ for (const a of p.slackArrows ?? []) {
33651
+ if ("marker" in a && a.marker !== p.id)
33652
+ out.push({ from: a.marker, to: p.id });
33653
+ }
33654
+ }
33655
+ return out;
33656
+ }
33657
+ function packMarkerRow(entries, chartLeftX, chartRightX, estimateTextWidth2, arrows = []) {
33648
33658
  const sorted = [...entries].sort((a, b) => a.centerX - b.centerX);
33649
33659
  const placements = /* @__PURE__ */ new Map();
33650
33660
  let rowSpans = [];
33661
+ const byId = new Map(entries.map((e) => [e.id, e]));
33662
+ const knownArrows = arrows.filter((a) => byId.has(a.from) && byId.has(a.to));
33651
33663
  for (const e of sorted) {
33652
33664
  const labelWidth = markerLabelWidth(e, estimateTextWidth2);
33653
33665
  const naturalRightX = e.centerX + e.radius + MARKER_LABEL_GAP_PX;
@@ -33658,17 +33670,47 @@ function packMarkerRow(entries, chartLeftX, chartRightX, estimateTextWidth2) {
33658
33670
  const diamondRight = e.centerX + e.radius;
33659
33671
  const sideXLeft = (s) => s === "right" ? naturalRightX : naturalLeftX;
33660
33672
  const sideFitsCanvas = (s) => s === "right" ? fitsRightCanvas : fitsLeftCanvas;
33673
+ const runs = knownArrows.filter((a) => a.from === e.id).map((a) => {
33674
+ const to = byId.get(a.to);
33675
+ return {
33676
+ left: Math.min(e.centerX, to.centerX) + e.radius,
33677
+ right: Math.max(e.centerX, to.centerX) - to.radius
33678
+ };
33679
+ }).filter((r) => r.right > r.left);
33680
+ let minRow = -1;
33681
+ let maxRow = Number.POSITIVE_INFINITY;
33682
+ for (const a of knownArrows) {
33683
+ if (a.to === e.id) {
33684
+ const from = placements.get(a.from);
33685
+ if (from)
33686
+ maxRow = Math.min(maxRow, from.rowIndex);
33687
+ }
33688
+ if (a.from === e.id) {
33689
+ const to = placements.get(a.to);
33690
+ if (to)
33691
+ minRow = Math.max(minRow, to.rowIndex);
33692
+ }
33693
+ }
33694
+ const crossesOwnRun = (s) => {
33695
+ const xLeft = sideXLeft(s);
33696
+ return runs.some((r) => r.left < xLeft + labelWidth && r.right > xLeft);
33697
+ };
33698
+ const freeSide = (s) => sideFitsCanvas(s) && !crossesOwnRun(s);
33699
+ const growSide = freeSide("right") ? "right" : freeSide("left") ? "left" : fitsRightCanvas ? "right" : "left";
33661
33700
  const collidesAt = (xLeft, row) => {
33662
33701
  const extLeft2 = Math.min(diamondLeft, xLeft);
33663
33702
  const extRight2 = Math.max(diamondRight, xLeft + labelWidth);
33664
- return rowSpans[row].some((s) => s.left < extRight2 && s.right > extLeft2);
33703
+ const own = [{ left: extLeft2, right: extRight2 }, ...runs];
33704
+ return rowSpans[row].some((s) => own.some((o) => s.left < o.right && s.right > o.left));
33665
33705
  };
33666
33706
  let placedRow = -1;
33667
33707
  let placedSide = "right";
33668
33708
  let placedXLeft = naturalRightX;
33669
33709
  outer: for (let row = rowSpans.length - 1; row >= 0; row--) {
33710
+ if (row < minRow || row > maxRow)
33711
+ continue;
33670
33712
  for (const side of ["right", "left"]) {
33671
- if (!sideFitsCanvas(side))
33713
+ if (!freeSide(side))
33672
33714
  continue;
33673
33715
  const xLeft = sideXLeft(side);
33674
33716
  if (collidesAt(xLeft, row))
@@ -33679,18 +33721,28 @@ function packMarkerRow(entries, chartLeftX, chartRightX, estimateTextWidth2) {
33679
33721
  break outer;
33680
33722
  }
33681
33723
  }
33682
- if (placedRow === -1) {
33724
+ if (placedRow === -1 && minRow >= 0 && minRow < maxRow) {
33725
+ const at = minRow + 1;
33726
+ for (const [id, p] of placements) {
33727
+ if (p.rowIndex >= at)
33728
+ placements.set(id, { ...p, rowIndex: p.rowIndex + 1 });
33729
+ }
33730
+ rowSpans.splice(at, 0, []);
33731
+ placedRow = at;
33732
+ placedSide = growSide;
33733
+ placedXLeft = sideXLeft(placedSide);
33734
+ } else if (placedRow === -1) {
33683
33735
  for (const [id, p] of placements) {
33684
33736
  placements.set(id, { ...p, rowIndex: p.rowIndex + 1 });
33685
33737
  }
33686
33738
  rowSpans = [[], ...rowSpans];
33687
33739
  placedRow = 0;
33688
- placedSide = fitsRightCanvas ? "right" : "left";
33740
+ placedSide = growSide;
33689
33741
  placedXLeft = sideXLeft(placedSide);
33690
33742
  }
33691
33743
  const extLeft = Math.min(diamondLeft, placedXLeft);
33692
33744
  const extRight = Math.max(diamondRight, placedXLeft + labelWidth);
33693
- rowSpans[placedRow].push({ left: extLeft, right: extRight });
33745
+ rowSpans[placedRow].push({ left: extLeft, right: extRight }, ...runs);
33694
33746
  placements.set(e.id, {
33695
33747
  rowIndex: placedRow,
33696
33748
  labelBox: { x: placedXLeft, y: 0, width: labelWidth, height: MARKER_LABEL_HEIGHT_PX },
@@ -33708,13 +33760,16 @@ function collectMilestonePredecessors(refs, ctx) {
33708
33760
  const endX = ctx.entityRightEdges.get(ref);
33709
33761
  if (endX === void 0)
33710
33762
  continue;
33711
- const markerY = item ? void 0 : ctx.entityMidpoints.get(ref)?.y;
33712
- const y = item ? itemSlackAttachY(item, ctx.bandScale.bandwidth()) : markerY === void 0 ? void 0 : chartFrameY(markerY, ctx);
33763
+ const y = item ? itemSlackAttachY(item, ctx.bandScale.bandwidth()) : void 0;
33713
33764
  if (!item && ctx.waves?.plan.index.has(ref)) {
33714
33765
  out.push({ ref, endX, y, flowKey: `wave:${ref}`, wave: ref });
33715
33766
  continue;
33716
33767
  }
33717
33768
  const flowKey = ctx.itemFlowKey.get(ref) ?? `marker:${ref}`;
33769
+ if (!item && ctx.markerIds.has(ref)) {
33770
+ out.push({ ref, endX, y, marker: true, flowKey });
33771
+ continue;
33772
+ }
33718
33773
  out.push({ ref, endX, y, flowKey });
33719
33774
  }
33720
33775
  return out;
@@ -33728,8 +33783,17 @@ function lastPredecessorPerFlow(preds) {
33728
33783
  }
33729
33784
  return Array.from(m.values());
33730
33785
  }
33731
- function hasSlackArrow(p, maxEnd) {
33732
- return p.endX < maxEnd && p.y !== void 0 && p.wave === void 0;
33786
+ function isOnTopOf(p, x2) {
33787
+ return Math.abs(x2 - p.endX) <= 2 * MARKER_DIAMOND_RADIUS_PX;
33788
+ }
33789
+ function slackArrowStart(p, maxEnd) {
33790
+ if (p.endX >= maxEnd || p.wave !== void 0)
33791
+ return null;
33792
+ if (p.y !== void 0)
33793
+ return { x: p.endX, y: p.y };
33794
+ if (p.marker && !isOnTopOf(p, maxEnd))
33795
+ return { x: p.endX, marker: p.ref };
33796
+ return null;
33733
33797
  }
33734
33798
  function latestArrowPredecessor(preds) {
33735
33799
  let maxPred = null;
@@ -33741,6 +33805,13 @@ function latestArrowPredecessor(preds) {
33741
33805
  }
33742
33806
  return maxPred;
33743
33807
  }
33808
+ function overrunArrowStart(maxPred, x2, id) {
33809
+ if (maxPred.y !== void 0)
33810
+ return { x: maxPred.endX, y: maxPred.y };
33811
+ if (!maxPred.marker)
33812
+ return { x: maxPred.endX, marker: id };
33813
+ return isOnTopOf(maxPred, x2) ? null : { x: maxPred.endX, marker: maxPred.ref };
33814
+ }
33744
33815
  function overrunningWave(preds, x2) {
33745
33816
  let latest;
33746
33817
  for (const p of preds) {
@@ -33763,12 +33834,12 @@ var MilestoneNode = class {
33763
33834
  * resolvable `after:` predecessor (skipped silently — matches the
33764
33835
  * legacy `buildMilestones` continue-paths).
33765
33836
  *
33766
- * Writes the milestone's entity edges and midpoint, which later
33767
- * milestones' `after:` references read. The midpoint's y is an
33837
+ * Writes the milestone's entity edges and midpoint; later milestones'
33838
+ * `after:` references read the edges. The midpoint's y is an
33768
33839
  * estimate: the pre-pack row of a dated milestone, the band's first
33769
- * row for an after-only one. Finalize replaces it with the final
33770
- * pack's row (f6); until then a later milestone's slack arrow from
33771
- * this one reads the estimate.
33840
+ * row for an after-only one. Nothing reads it before f6 replaces it
33841
+ * with the final pack's row, except f6's coverage trace, which
33842
+ * reports a milestone whose row differs from it.
33772
33843
  */
33773
33844
  place(ctx) {
33774
33845
  const m = this.milestone;
@@ -33799,12 +33870,9 @@ var MilestoneNode = class {
33799
33870
  const maxPred = latestArrowPredecessor(dedupedPreds);
33800
33871
  if (maxPred && maxPred.endX > x2) {
33801
33872
  isOverrun = true;
33802
- slackArrows = [
33803
- {
33804
- x: maxPred.endX,
33805
- y: maxPred.y ?? chartFrameY(estimatedCenterY, ctx)
33806
- }
33807
- ];
33873
+ const arrow = overrunArrowStart(maxPred, x2, this.id);
33874
+ if (arrow)
33875
+ slackArrows = [arrow];
33808
33876
  }
33809
33877
  overrunByWave = overrunningWave(dedupedPreds, x2);
33810
33878
  if (overrunByWave !== void 0)
@@ -33818,10 +33886,9 @@ var MilestoneNode = class {
33818
33886
  fixed = false;
33819
33887
  const arrows = [];
33820
33888
  for (let i2 = 1; i2 < dedupedPreds.length; i2++) {
33821
- const p = dedupedPreds[i2];
33822
- if (hasSlackArrow(p, maxEnd)) {
33823
- arrows.push({ x: p.endX, y: p.y });
33824
- }
33889
+ const arrow = slackArrowStart(dedupedPreds[i2], maxEnd);
33890
+ if (arrow)
33891
+ arrows.push(arrow);
33825
33892
  }
33826
33893
  if (arrows.length > 0)
33827
33894
  slackArrows = arrows;
@@ -33867,18 +33934,22 @@ function buildMilestones(milestones, ctx) {
33867
33934
  return out;
33868
33935
  }
33869
33936
  function positionMilestones(placements, rows) {
33870
- return placements.map((p) => {
33871
- const row = rows.get(p.id);
33937
+ const rowOf = (id) => {
33938
+ const row = rows.get(id);
33872
33939
  if (!row) {
33873
- throw new Error(`layout: milestone "${p.id}" has no marker-row placement`);
33940
+ throw new Error(`layout: marker "${id}" has no marker-row placement`);
33874
33941
  }
33942
+ return row;
33943
+ };
33944
+ return placements.map((p) => {
33945
+ const row = rowOf(p.id);
33875
33946
  const positioned = {
33876
33947
  id: p.id,
33877
33948
  title: p.title,
33878
33949
  center: { x: p.x, y: row.centerY },
33879
33950
  radius: p.radius,
33880
33951
  fixed: p.fixed,
33881
- slackArrows: p.slackArrows,
33952
+ slackArrows: p.slackArrows?.map((a) => "y" in a ? { x: a.x, y: a.y } : { x: a.x, y: rowOf(a.marker).centerY }),
33882
33953
  isOverrun: p.isOverrun,
33883
33954
  style: p.style,
33884
33955
  cutTopY: p.cutTopY,
@@ -33927,11 +33998,12 @@ function collectSlackCorridors(milestones, ctx) {
33927
33998
  const maxEnd = dedupedPreds[0].endX;
33928
33999
  for (let i2 = 1; i2 < dedupedPreds.length; i2++) {
33929
34000
  const p = dedupedPreds[i2];
33930
- if (hasSlackArrow(p, maxEnd)) {
34001
+ const arrow = slackArrowStart(p, maxEnd);
34002
+ if (arrow && "y" in arrow) {
33931
34003
  out.push({
33932
34004
  xStart: p.endX,
33933
34005
  xEnd: maxEnd,
33934
- y: p.y,
34006
+ y: arrow.y,
33935
34007
  slackPredId: p.ref,
33936
34008
  milestoneId: id
33937
34009
  });
@@ -33952,7 +34024,7 @@ function placeRegionMarkers(region, ctx, regionTopY, lanesTopY, lanesBottomY, ch
33952
34024
  if (entries.length === 0)
33953
34025
  return { anchors: [], milestones: [], laneShift: 0 };
33954
34026
  const leftX = REGION_MARKER_INSET_X_PX;
33955
- const packed = packMarkerRow(entries, leftX, markerLabelsRightX(entries, leftX, chartRightX - REGION_MARKER_INSET_X_PX, estimateTextWidth), estimateTextWidth);
34027
+ const packed = packMarkerRow(entries, leftX, markerLabelsRightX(entries, leftX, chartRightX - REGION_MARKER_INSET_X_PX, estimateTextWidth), estimateTextWidth, markerArrows(placements));
33956
34028
  const bandTopY = regionTopY + REGION_MARKER_BAND_TOP_PX;
33957
34029
  const laneShift = bandTopY + packed.rowCount * MARKER_ROW_PITCH_PX + REGION_MARKER_BAND_GAP_PX - lanesTopY;
33958
34030
  const cutBottomY = lanesBottomY + laneShift;
@@ -33965,7 +34037,7 @@ function placeRegionMarkers(region, ctx, regionTopY, lanesTopY, lanesBottomY, ch
33965
34037
  ...p,
33966
34038
  cutTopY: ctx.chartTopY,
33967
34039
  cutBottomY,
33968
- slackArrows: p.slackArrows?.map((a) => ({ x: a.x, y: a.y + laneShift }))
34040
+ slackArrows: p.slackArrows?.map((a) => "y" in a ? { x: a.x, y: a.y + laneShift } : a)
33969
34041
  })), rows);
33970
34042
  return { anchors: anchors2, milestones, laneShift };
33971
34043
  }
@@ -34487,7 +34559,6 @@ function buildIncludeRegions(regions, ctx, startY, helpers, chartRightX) {
34487
34559
  waves: ctx.waves
34488
34560
  }, {
34489
34561
  chartTopY: innerStartY,
34490
- estimatedChartTopY: ctx.estimatedChartTopY,
34491
34562
  chartBottomY: innerStartY,
34492
34563
  swimlaneBottomY: innerStartY
34493
34564
  }, { footnotes: indexFootnotes(region.content.footnotes, footnotesBefore) });
@@ -35646,7 +35717,7 @@ function fitWidths(fx) {
35646
35717
  }
35647
35718
  function packMarkers(fx) {
35648
35719
  const entries = need(fx.draft.markerEntries, "the marker entries");
35649
- const repacked = packMarkerRow(entries.all, fx.measured.header.chartLeftX, fx.canvas.final, estimateTextWidth);
35720
+ const repacked = packMarkerRow(entries.all, fx.measured.header.chartLeftX, fx.canvas.final, estimateTextWidth, markerArrows(fx.chart.milestones));
35650
35721
  const placements = markerRowPlacements(repacked.placements, fx.headerRowsTop().markerRowY);
35651
35722
  const rowCount = fx.measured.markers.hasEntities || entries.calendarCount > 0 ? Math.max(1, repacked.rowCount) : 0;
35652
35723
  fx.setMarkerBand({ rowCount, placements });
@@ -35719,7 +35790,7 @@ function growHeaderRows(fx) {
35719
35790
  changed = true;
35720
35791
  }
35721
35792
  fx.setHeaderRowsBottom(rowsTop.markerRowY + timeline.markerRow.height);
35722
- const topY = ctx.estimatedChartTopY + deltaY;
35793
+ const topY = bands.chartTopY + deltaY;
35723
35794
  fx.chartY.top = topY;
35724
35795
  fx.chartY.bottom += topY;
35725
35796
  fx.chartY.swimlaneBottom += topY;
@@ -35728,8 +35799,11 @@ function growHeaderRows(fx) {
35728
35799
  translateSwimlaneY(lane, topY);
35729
35800
  for (const inc of fx.chart.includes)
35730
35801
  translateIncludeY(inc, topY);
35731
- for (const m of need(fx.draft.milestones, "the milestones"))
35732
- translateMilestoneChartY(m, topY);
35802
+ const placements = fx.chart.milestones;
35803
+ const milestones = need(fx.draft.milestones, "the milestones");
35804
+ for (let i2 = 0; i2 < milestones.length; i2++) {
35805
+ translateMilestoneChartY(milestones[i2], placements[i2], topY);
35806
+ }
35733
35807
  return changed;
35734
35808
  }
35735
35809
  function bottomTickPanel(fx) {
@@ -35859,7 +35933,7 @@ var FINALIZE_STEPS = [
35859
35933
  },
35860
35934
  {
35861
35935
  name: "packMarkers",
35862
- reads: ["canvas", "markerEntries", "headerBands", "scale"],
35936
+ reads: ["placement", "canvas", "markerEntries", "headerBands", "scale"],
35863
35937
  writes: ["markerBand"],
35864
35938
  run: packMarkers
35865
35939
  },
@@ -35871,7 +35945,15 @@ var FINALIZE_STEPS = [
35871
35945
  },
35872
35946
  {
35873
35947
  name: "growHeaderRows",
35874
- reads: ["markerBand", "headerBands", "scale", "milestones", "chartTop", "laneBottom"],
35948
+ reads: [
35949
+ "placement",
35950
+ "markerBand",
35951
+ "headerBands",
35952
+ "scale",
35953
+ "milestones",
35954
+ "chartTop",
35955
+ "laneBottom"
35956
+ ],
35875
35957
  writes: [
35876
35958
  "chartTop",
35877
35959
  "rowsBottom",
@@ -36210,7 +36292,7 @@ function placeChart(resolved, scope, window, measured, helpers) {
36210
36292
  const { cal, calendar, schedule } = window;
36211
36293
  const plan = schedule.plan;
36212
36294
  const { originX, scale: timeScale } = measured.axis;
36213
- const { timeline, bands } = measured;
36295
+ const { timeline } = measured;
36214
36296
  const ctx = createLayoutContext(resolved, {
36215
36297
  theme,
36216
36298
  cal,
@@ -36223,7 +36305,6 @@ function placeChart(resolved, scope, window, measured, helpers) {
36223
36305
  waves: plan ? createWaveLayoutState(plan, timeScale, originX, localeStrings(scope.locale).waveBackgroundItem) : void 0
36224
36306
  }, {
36225
36307
  chartTopY: 0,
36226
- estimatedChartTopY: bands.chartTopY,
36227
36308
  chartBottomY: 0,
36228
36309
  swimlaneBottomY: 0
36229
36310
  }, {
@@ -40655,8 +40736,8 @@ function effectiveTheme(theme, systemTheme) {
40655
40736
  }
40656
40737
 
40657
40738
  // src/index.ts
40658
- var version = true ? "0.0.0-dev.20261019024645.g95fa9ba" : "0.0.0";
40659
- var sha = true ? "95fa9ba" : "unknown";
40739
+ var version = true ? "0.0.0-dev.20261019105958.g8f093e8" : "0.0.0";
40740
+ var sha = true ? "8f093e8" : "unknown";
40660
40741
  var DEFAULT_SELECTOR = "pre code.language-nowline, code.language-nowline";
40661
40742
  var initialConfig = {
40662
40743
  theme: "auto",