@coldtea/pr-lens-renderer 0.2.6 → 0.3.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/README.md +2 -1
- package/dist/bounds.d.ts +6 -1
- package/dist/bounds.d.ts.map +1 -1
- package/dist/bounds.js +21 -0
- package/dist/bounds.js.map +1 -1
- package/dist/design.d.ts +5 -0
- package/dist/design.d.ts.map +1 -1
- package/dist/design.js +5 -0
- package/dist/design.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/layout/architecture.d.ts +2 -0
- package/dist/layout/architecture.d.ts.map +1 -1
- package/dist/layout/architecture.js +5 -0
- package/dist/layout/architecture.js.map +1 -1
- package/dist/layout/congestion.d.ts +5 -0
- package/dist/layout/congestion.d.ts.map +1 -1
- package/dist/layout/congestion.js +50 -12
- package/dist/layout/congestion.js.map +1 -1
- package/dist/layout/edges.d.ts +18 -3
- package/dist/layout/edges.d.ts.map +1 -1
- package/dist/layout/edges.js +93 -23
- package/dist/layout/edges.js.map +1 -1
- package/dist/layout/labels.d.ts +15 -4
- package/dist/layout/labels.d.ts.map +1 -1
- package/dist/layout/labels.js +404 -119
- package/dist/layout/labels.js.map +1 -1
- package/dist/manifest.d.ts +1 -1
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +3 -1
- package/dist/manifest.js.map +1 -1
- package/dist/render.d.ts +12 -2
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +2 -2
- package/dist/render.js.map +1 -1
- package/dist/svg/architecture.d.ts.map +1 -1
- package/dist/svg/architecture.js +3 -8
- package/dist/svg/architecture.js.map +1 -1
- package/dist/theme.d.ts +9 -8
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +61 -8
- package/dist/theme.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
- package/src/bounds.ts +29 -1
- package/src/design.ts +5 -0
- package/src/index.ts +2 -1
- package/src/layout/architecture.ts +7 -0
- package/src/layout/congestion.ts +71 -12
- package/src/layout/edges.ts +126 -21
- package/src/layout/labels.ts +495 -136
- package/src/manifest.ts +3 -2
- package/src/render.ts +19 -4
- package/src/svg/architecture.ts +3 -7
- package/src/theme.ts +62 -8
- package/src/version.ts +1 -1
package/dist/layout/labels.js
CHANGED
|
@@ -1,31 +1,120 @@
|
|
|
1
1
|
import { assertNever } from "@coldtea/pr-lens-schema";
|
|
2
|
-
import { PILL_CLEARANCE, PILL_HEIGHT, PILL_PADDING_X, PILL_TEXT_SIZE } from "../design.js";
|
|
2
|
+
import { PILL_CARD_CLEARANCE, PILL_CLEARANCE, PILL_HEIGHT, PILL_PADDING_X, PILL_TEXT_SIZE, } from "../design.js";
|
|
3
|
+
import { boundsOf, gapBetween, inflate } from "../bounds.js";
|
|
3
4
|
import { measure } from "../text.js";
|
|
5
|
+
export const pillSize = (label) => ({
|
|
6
|
+
width: measure(label, "sans-bold", PILL_TEXT_SIZE) + PILL_PADDING_X * 2,
|
|
7
|
+
height: PILL_HEIGHT,
|
|
8
|
+
});
|
|
4
9
|
const EPSILON = 0.01;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
*/
|
|
10
|
-
const
|
|
11
|
-
|
|
10
|
+
const CUBIC_STEPS = 8;
|
|
11
|
+
/** How far inside the pill its own line must pass, clear of the rounded end. */
|
|
12
|
+
const THREAD_INSET = 10;
|
|
13
|
+
const OFFSET_STEP = 10;
|
|
14
|
+
/** A pill that cannot sit on its line may sit beside it, this far off. */
|
|
15
|
+
const BESIDE_GAP = 3;
|
|
16
|
+
/** Closer than this costs, but is allowed. */
|
|
17
|
+
const SOFT_CARD_GAP = 12;
|
|
18
|
+
const SOFT_PILL_GAP = 10;
|
|
19
|
+
/** Spots a cramped label tries when a neighbour makes way. */
|
|
20
|
+
const REPAIR_OPTIONS = 6;
|
|
21
|
+
/** A pill this close to its own route's end is sitting on the arrowhead. */
|
|
22
|
+
const ARROW_REACH = 12;
|
|
23
|
+
// Costs are pixels of travel from the preferred spot: a pill slides 400px
|
|
24
|
+
// along its line rather than lie across another, 250px rather than leave it.
|
|
25
|
+
const COST_OFFSET = 1.5;
|
|
26
|
+
const COST_BESIDE = 250;
|
|
27
|
+
const COST_FOREIGN_LINE = 400;
|
|
28
|
+
const COST_OWN_ARROW = 150;
|
|
29
|
+
const COST_CARD_NEAR = 4;
|
|
30
|
+
const COST_PILL_NEAR = 3;
|
|
31
|
+
const COST_OVERHANG = 3;
|
|
32
|
+
const cubicPoint = (from, first, second, to, t) => {
|
|
33
|
+
const u = 1 - t;
|
|
34
|
+
return {
|
|
35
|
+
x: u ** 3 * from.x + 3 * u * u * t * first.x + 3 * u * t * t * second.x + t ** 3 * to.x,
|
|
36
|
+
y: u ** 3 * from.y + 3 * u * u * t * first.y + 3 * u * t * t * second.y + t ** 3 * to.y,
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
const trace = (curve) => {
|
|
40
|
+
const runs = [];
|
|
41
|
+
const pieces = [];
|
|
42
|
+
let arc = 0;
|
|
43
|
+
let longest;
|
|
12
44
|
let start = curve.from;
|
|
13
45
|
for (const segment of curve.segments) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
46
|
+
switch (segment.kind) {
|
|
47
|
+
case "line": {
|
|
48
|
+
const end = segment.to;
|
|
49
|
+
const horizontal = Math.abs(end.y - start.y) < EPSILON;
|
|
50
|
+
const vertical = Math.abs(end.x - start.x) < EPSILON;
|
|
51
|
+
const length = Math.hypot(end.x - start.x, end.y - start.y);
|
|
52
|
+
if (horizontal || vertical) {
|
|
53
|
+
const [from, to] = horizontal ? [start.x, end.x] : [start.y, end.y];
|
|
54
|
+
runs.push({
|
|
55
|
+
axis: horizontal ? "x" : "y",
|
|
56
|
+
cross: horizontal ? start.y : start.x,
|
|
57
|
+
lo: Math.min(from, to),
|
|
58
|
+
hi: Math.max(from, to),
|
|
59
|
+
arcStart: arc,
|
|
60
|
+
forward: to >= from,
|
|
61
|
+
});
|
|
62
|
+
if (longest === undefined || length > longest.length)
|
|
63
|
+
longest = { length, middle: arc + length / 2 };
|
|
64
|
+
}
|
|
65
|
+
pieces.push({ bounds: boundsOf([start, end]), legs: [{ a: start, b: end }] });
|
|
66
|
+
arc += length;
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
case "cubic": {
|
|
70
|
+
const legs = [];
|
|
71
|
+
pieces.push({ bounds: boundsOf([start, segment.first, segment.second, segment.to]), legs });
|
|
72
|
+
let previous = start;
|
|
73
|
+
for (let step = 1; step <= CUBIC_STEPS; step += 1) {
|
|
74
|
+
const t = step / CUBIC_STEPS;
|
|
75
|
+
const point = cubicPoint(start, segment.first, segment.second, segment.to, t);
|
|
76
|
+
legs.push({ a: previous, b: point });
|
|
77
|
+
arc += Math.hypot(point.x - previous.x, point.y - previous.y);
|
|
78
|
+
previous = point;
|
|
79
|
+
}
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
default:
|
|
83
|
+
assertNever(segment, "Unhandled path segment");
|
|
25
84
|
}
|
|
26
|
-
start =
|
|
85
|
+
start = segment.to;
|
|
27
86
|
}
|
|
28
|
-
|
|
87
|
+
if (runs.length === 0) {
|
|
88
|
+
const middle = runThroughMiddle(pieces, arc / 2);
|
|
89
|
+
if (middle !== undefined)
|
|
90
|
+
runs.push(middle);
|
|
91
|
+
}
|
|
92
|
+
return { runs, pieces, preferred: longest?.middle ?? arc / 2, end: start };
|
|
93
|
+
};
|
|
94
|
+
/** A self-loop has no straight run, so it gets a zero-length one at its middle. */
|
|
95
|
+
const runThroughMiddle = (pieces, halfway) => {
|
|
96
|
+
let travelled = 0;
|
|
97
|
+
for (const { legs } of pieces)
|
|
98
|
+
for (const { a, b } of legs) {
|
|
99
|
+
const length = Math.hypot(b.x - a.x, b.y - a.y);
|
|
100
|
+
if (travelled + length < halfway || length === 0) {
|
|
101
|
+
travelled += length;
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
const t = (halfway - travelled) / length;
|
|
105
|
+
const point = { x: a.x + (b.x - a.x) * t, y: a.y + (b.y - a.y) * t };
|
|
106
|
+
const horizontal = Math.abs(b.x - a.x) >= Math.abs(b.y - a.y);
|
|
107
|
+
const along = horizontal ? point.x : point.y;
|
|
108
|
+
return {
|
|
109
|
+
axis: horizontal ? "x" : "y",
|
|
110
|
+
cross: horizontal ? point.y : point.x,
|
|
111
|
+
lo: along,
|
|
112
|
+
hi: along,
|
|
113
|
+
arcStart: halfway,
|
|
114
|
+
forward: true,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
return undefined;
|
|
29
118
|
};
|
|
30
119
|
const centred = (centre, size) => ({
|
|
31
120
|
x: centre.x - size.width / 2,
|
|
@@ -33,117 +122,313 @@ const centred = (centre, size) => ({
|
|
|
33
122
|
width: size.width,
|
|
34
123
|
height: size.height,
|
|
35
124
|
});
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
125
|
+
/** Strict, so exactly `clearance` of air is enough. */
|
|
126
|
+
const tooClose = (a, b, clearance) => a.x < b.x + b.width + clearance &&
|
|
127
|
+
b.x < a.x + a.width + clearance &&
|
|
128
|
+
a.y < b.y + b.height + clearance &&
|
|
129
|
+
b.y < a.y + a.height + clearance;
|
|
130
|
+
const overlaps = (a, b) => tooClose(a, b, 0);
|
|
131
|
+
const legCrosses = ({ a, b }, box) => {
|
|
132
|
+
let t0 = 0;
|
|
133
|
+
let t1 = 1;
|
|
134
|
+
const dx = b.x - a.x;
|
|
135
|
+
const dy = b.y - a.y;
|
|
136
|
+
const checks = [
|
|
137
|
+
[-dx, a.x - box.x],
|
|
138
|
+
[dx, box.x + box.width - a.x],
|
|
139
|
+
[-dy, a.y - box.y],
|
|
140
|
+
[dy, box.y + box.height - a.y],
|
|
141
|
+
];
|
|
142
|
+
for (const [p, q] of checks) {
|
|
143
|
+
if (p === 0) {
|
|
144
|
+
if (q <= 0)
|
|
145
|
+
return false;
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
const t = q / p;
|
|
149
|
+
if (p < 0)
|
|
150
|
+
t0 = Math.max(t0, t);
|
|
151
|
+
else
|
|
152
|
+
t1 = Math.min(t1, t);
|
|
153
|
+
if (t0 >= t1)
|
|
154
|
+
return false;
|
|
44
155
|
}
|
|
156
|
+
return true;
|
|
45
157
|
};
|
|
46
|
-
/**
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
if (
|
|
79
|
-
|
|
80
|
-
if (blocked.some((b) => b.from < candidate && candidate < b.to))
|
|
81
|
-
return;
|
|
82
|
-
if (best === undefined ||
|
|
83
|
-
Math.abs(candidate - preferred) < Math.abs(best - preferred) ||
|
|
84
|
-
(Math.abs(candidate - preferred) === Math.abs(best - preferred) && candidate < best))
|
|
85
|
-
best = candidate;
|
|
86
|
-
};
|
|
87
|
-
consider(preferred);
|
|
88
|
-
for (const b of blocked) {
|
|
89
|
-
consider(b.from);
|
|
90
|
-
consider(b.to);
|
|
158
|
+
/** Where a pill's centre may sit across a run, and what leaving the line costs. */
|
|
159
|
+
const crossOffsets = (run, size) => {
|
|
160
|
+
const halfCross = (run.axis === "x" ? size.height : size.width) / 2;
|
|
161
|
+
const reach = Math.max(0, halfCross - THREAD_INSET);
|
|
162
|
+
const beside = halfCross + BESIDE_GAP;
|
|
163
|
+
const both = (distance, penalty) => [
|
|
164
|
+
{ offset: -distance, penalty },
|
|
165
|
+
{ offset: distance, penalty },
|
|
166
|
+
];
|
|
167
|
+
const offsets = [{ offset: 0, penalty: 0 }];
|
|
168
|
+
for (let distance = OFFSET_STEP; distance < reach; distance += OFFSET_STEP)
|
|
169
|
+
offsets.push(...both(distance, distance * COST_OFFSET));
|
|
170
|
+
if (reach > 0)
|
|
171
|
+
offsets.push(...both(reach, reach * COST_OFFSET));
|
|
172
|
+
offsets.push(...both(beside, COST_BESIDE + beside * COST_OFFSET));
|
|
173
|
+
return offsets;
|
|
174
|
+
};
|
|
175
|
+
const spanOn = (box, axis) => axis === "x"
|
|
176
|
+
? [box.x, box.x + box.width, box.y, box.y + box.height]
|
|
177
|
+
: [box.y, box.y + box.height, box.x, box.x + box.width];
|
|
178
|
+
const runBounds = (run) => run.axis === "x"
|
|
179
|
+
? { x: run.lo, y: run.cross, width: run.hi - run.lo, height: 0 }
|
|
180
|
+
: { x: run.cross, y: run.lo, width: 0, height: run.hi - run.lo };
|
|
181
|
+
const crowding = (box, label, frame, around, pills) => {
|
|
182
|
+
let cost = 0;
|
|
183
|
+
for (const obstacle of around.obstacles) {
|
|
184
|
+
const gap = gapBetween(box, obstacle);
|
|
185
|
+
if (gap < SOFT_CARD_GAP)
|
|
186
|
+
cost += (SOFT_CARD_GAP - gap) * COST_CARD_NEAR;
|
|
187
|
+
}
|
|
188
|
+
for (const other of pills) {
|
|
189
|
+
const gap = gapBetween(box, other);
|
|
190
|
+
if (gap < SOFT_PILL_GAP)
|
|
191
|
+
cost += (SOFT_PILL_GAP - gap) * COST_PILL_NEAR;
|
|
91
192
|
}
|
|
92
|
-
|
|
193
|
+
// A pill over another route's line reads as that route's label.
|
|
194
|
+
const inner = inflate(box, -1);
|
|
195
|
+
const covered = new Set();
|
|
196
|
+
for (const { id, bounds, legs } of around.pieces)
|
|
197
|
+
if (!covered.has(id) && overlaps(bounds, box) && legs.some((leg) => legCrosses(leg, inner)))
|
|
198
|
+
covered.add(id);
|
|
199
|
+
cost += covered.size * COST_FOREIGN_LINE;
|
|
200
|
+
if (frame !== undefined)
|
|
201
|
+
cost +=
|
|
202
|
+
(Math.max(0, frame.x - box.x) +
|
|
203
|
+
Math.max(0, box.x + box.width - (frame.x + frame.width)) +
|
|
204
|
+
Math.max(0, frame.y - box.y) +
|
|
205
|
+
Math.max(0, box.y + box.height - (frame.y + frame.height))) *
|
|
206
|
+
COST_OVERHANG;
|
|
207
|
+
const reach = inflate(box, ARROW_REACH);
|
|
208
|
+
const { end } = label.own;
|
|
209
|
+
const onArrow = end.x > reach.x && end.x < reach.x + reach.width && end.y > reach.y && end.y < reach.y + reach.height;
|
|
210
|
+
if (onArrow)
|
|
211
|
+
cost += COST_OWN_ARROW;
|
|
212
|
+
return cost;
|
|
93
213
|
};
|
|
94
214
|
/**
|
|
95
|
-
* The
|
|
96
|
-
*
|
|
97
|
-
* the pill clears — it ends up beside its own line rather than on it, but
|
|
98
|
-
* never more than a step or two away, and always in the same place for the
|
|
99
|
-
* same document.
|
|
215
|
+
* The `limit` cheapest distinct placements the route offers, cheapest first;
|
|
216
|
+
* empty when it has no room at all.
|
|
100
217
|
*/
|
|
101
|
-
const
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
218
|
+
const rankOnRoute = (label, scene, settled, limit) => {
|
|
219
|
+
const { own, size } = label;
|
|
220
|
+
const settledPills = [...settled].filter(([id]) => id !== label.id).map(([, box]) => box);
|
|
221
|
+
const candidates = [];
|
|
222
|
+
for (const around of label.around) {
|
|
223
|
+
const { run } = around;
|
|
224
|
+
const pills = settledPills.filter((box) => overlaps(box, around.region));
|
|
225
|
+
const lines = around.pieces.map(({ bounds }) => spanOn(bounds, run.axis));
|
|
226
|
+
const arcAt = (position) => run.arcStart + (run.forward ? position - run.lo : run.hi - position);
|
|
227
|
+
const intoRun = own.preferred - run.arcStart;
|
|
228
|
+
const preferredAlong = Math.min(Math.max(run.forward ? run.lo + intoRun : run.hi - intoRun, run.lo), run.hi);
|
|
229
|
+
const halfAlong = (run.axis === "x" ? size.width : size.height) / 2;
|
|
230
|
+
const halfCross = (run.axis === "x" ? size.height : size.width) / 2;
|
|
231
|
+
const blocker = (clearance, soft) => (box) => ({
|
|
232
|
+
span: spanOn(box, run.axis),
|
|
233
|
+
clearance,
|
|
234
|
+
soft,
|
|
235
|
+
});
|
|
236
|
+
const blockers = [
|
|
237
|
+
...around.obstacles.map(blocker(PILL_CARD_CLEARANCE, SOFT_CARD_GAP)),
|
|
238
|
+
...pills.map(blocker(PILL_CLEARANCE, SOFT_PILL_GAP)),
|
|
239
|
+
];
|
|
240
|
+
const breaks = [];
|
|
241
|
+
const breakAt = (position) => {
|
|
242
|
+
if (position >= run.lo - EPSILON && position <= run.hi + EPSILON)
|
|
243
|
+
breaks.push(position);
|
|
244
|
+
};
|
|
245
|
+
for (const { offset, penalty } of crossOffsets(run, size)) {
|
|
246
|
+
const centreCross = run.cross + offset;
|
|
247
|
+
const low = centreCross - halfCross;
|
|
248
|
+
const high = centreCross + halfCross;
|
|
249
|
+
const hard = [];
|
|
250
|
+
breaks.length = 0;
|
|
251
|
+
breakAt(preferredAlong);
|
|
252
|
+
breakAt(run.lo);
|
|
253
|
+
breakAt(run.hi);
|
|
254
|
+
for (const { span: [alongLo, alongHi, crossLo, crossHi], clearance, soft } of blockers) {
|
|
255
|
+
if (low >= crossHi + soft || high <= crossLo - soft)
|
|
256
|
+
continue;
|
|
257
|
+
breakAt(alongLo - soft - halfAlong);
|
|
258
|
+
breakAt(alongHi + soft + halfAlong);
|
|
259
|
+
if (low >= crossHi + clearance || high <= crossLo - clearance)
|
|
260
|
+
continue;
|
|
261
|
+
const from = alongLo - clearance - halfAlong;
|
|
262
|
+
const to = alongHi + clearance + halfAlong;
|
|
263
|
+
hard.push({ from, to });
|
|
264
|
+
breakAt(from);
|
|
265
|
+
breakAt(to);
|
|
266
|
+
}
|
|
267
|
+
for (const [alongLo, alongHi, crossLo, crossHi] of lines) {
|
|
268
|
+
if (low > crossHi || high < crossLo)
|
|
269
|
+
continue;
|
|
270
|
+
breakAt(alongLo - halfAlong - 1);
|
|
271
|
+
breakAt(alongHi + halfAlong + 1);
|
|
272
|
+
}
|
|
273
|
+
hard.sort((a, b) => a.from - b.from);
|
|
274
|
+
let reachedTo = Number.NEGATIVE_INFINITY;
|
|
275
|
+
let next = 0;
|
|
276
|
+
let previous;
|
|
277
|
+
for (const position of Float64Array.from(breaks).sort()) {
|
|
278
|
+
if (position === previous)
|
|
279
|
+
continue;
|
|
280
|
+
previous = position;
|
|
281
|
+
// Intervals starting before this point are folded into `reachedTo`.
|
|
282
|
+
while (next < hard.length && (hard[next]?.from ?? Number.POSITIVE_INFINITY) < position) {
|
|
283
|
+
reachedTo = Math.max(reachedTo, hard[next]?.to ?? reachedTo);
|
|
284
|
+
next += 1;
|
|
285
|
+
}
|
|
286
|
+
if (position < reachedTo)
|
|
287
|
+
continue;
|
|
288
|
+
const centre = run.axis === "x" ? { x: position, y: centreCross } : { x: centreCross, y: position };
|
|
289
|
+
candidates.push({
|
|
290
|
+
box: centred(centre, size),
|
|
291
|
+
bound: Math.abs(arcAt(position) - own.preferred) + penalty,
|
|
292
|
+
around,
|
|
293
|
+
pills,
|
|
294
|
+
});
|
|
295
|
+
}
|
|
111
296
|
}
|
|
297
|
+
}
|
|
298
|
+
// Once a bound alone exceeds the worst kept placement, nothing later can win.
|
|
299
|
+
candidates.sort((a, b) => a.bound - b.bound || a.box.y - b.box.y || a.box.x - b.box.x);
|
|
300
|
+
const ranked = [];
|
|
301
|
+
for (const { box, bound, around, pills } of candidates) {
|
|
302
|
+
const worst = ranked[ranked.length - 1];
|
|
303
|
+
if (ranked.length === limit && worst !== undefined && bound >= worst.cost - EPSILON)
|
|
304
|
+
break;
|
|
305
|
+
if (ranked.some((kept) => kept.box.x === box.x && kept.box.y === box.y))
|
|
306
|
+
continue;
|
|
307
|
+
const cost = bound + crowding(box, label, scene.frame, around, pills);
|
|
308
|
+
const at = ranked.findIndex((kept) => cost < kept.cost - EPSILON);
|
|
309
|
+
ranked.splice(at === -1 ? ranked.length : at, 0, { box, cost });
|
|
310
|
+
if (ranked.length > limit)
|
|
311
|
+
ranked.pop();
|
|
312
|
+
}
|
|
313
|
+
return ranked;
|
|
112
314
|
};
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
315
|
+
/** Last resort, off the line: the layout widens the gap before a drawing lands here. */
|
|
316
|
+
const nearestClear = (label, scene, settled) => {
|
|
317
|
+
const { anchor, size } = label;
|
|
318
|
+
const pills = [...settled].filter(([id]) => id !== label.id).map(([, box]) => box);
|
|
319
|
+
const clear = (box) => !scene.obstacles.some((obstacle) => tooClose(box, obstacle, PILL_CLEARANCE)) &&
|
|
320
|
+
!pills.some((other) => tooClose(box, other, PILL_CLEARANCE));
|
|
321
|
+
const stepY = size.height + PILL_CLEARANCE;
|
|
322
|
+
const stepX = 8;
|
|
323
|
+
for (let ring = 0;; ring += 1) {
|
|
324
|
+
const found = [];
|
|
325
|
+
for (let j = -ring; j <= ring; j += 1)
|
|
326
|
+
for (let i = -ring * 4; i <= ring * 4; i += 1) {
|
|
327
|
+
if (Math.max(Math.abs(j), Math.ceil(Math.abs(i) / 4)) !== ring)
|
|
328
|
+
continue;
|
|
329
|
+
const box = centred({ x: anchor.x + i * stepX, y: anchor.y + j * stepY }, size);
|
|
330
|
+
if (clear(box))
|
|
331
|
+
found.push({ box, distance: Math.hypot(i * stepX, j * stepY) });
|
|
332
|
+
}
|
|
333
|
+
found.sort((a, b) => a.distance - b.distance || a.box.y - b.box.y || a.box.x - b.box.x);
|
|
334
|
+
const first = found[0];
|
|
335
|
+
if (first !== undefined)
|
|
336
|
+
return first.box;
|
|
337
|
+
}
|
|
127
338
|
};
|
|
128
339
|
/**
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
*
|
|
340
|
+
* Each label takes the cheapest spot on or beside its own route that keeps
|
|
341
|
+
* clear of cards, badges and other pills. A label with room at the middle of
|
|
342
|
+
* its longest run stays exactly there.
|
|
132
343
|
*/
|
|
133
|
-
export const placeLabelPills = (routed) => {
|
|
134
|
-
const
|
|
135
|
-
const
|
|
136
|
-
|
|
344
|
+
export const placeLabelPills = (routed, obstacles, frame) => {
|
|
345
|
+
const traced = routed.map((route) => ({ route, traced: trace(route.curve) }));
|
|
346
|
+
const pieces = traced.flatMap(({ route, traced: { pieces } }) => pieces.map((piece) => ({ ...piece, id: route.edge.id })));
|
|
347
|
+
const scene = { obstacles, frame };
|
|
348
|
+
const labels = traced.flatMap(({ route, traced: own }) => {
|
|
349
|
+
const { edge, labelAnchor } = route;
|
|
137
350
|
if (edge.label === undefined || labelAnchor === undefined)
|
|
351
|
+
return [];
|
|
352
|
+
const size = pillSize(edge.label);
|
|
353
|
+
const reach = Math.max(size.width, size.height) + SOFT_CARD_GAP + BESIDE_GAP;
|
|
354
|
+
const around = own.runs.map((run) => {
|
|
355
|
+
const region = inflate(runBounds(run), reach);
|
|
356
|
+
return {
|
|
357
|
+
run,
|
|
358
|
+
region,
|
|
359
|
+
obstacles: obstacles.filter((box) => overlaps(box, region)),
|
|
360
|
+
pieces: pieces.filter((piece) => piece.id !== edge.id && overlaps(piece.bounds, region)),
|
|
361
|
+
};
|
|
362
|
+
});
|
|
363
|
+
return [{ id: edge.id, own, size, anchor: labelAnchor, around }];
|
|
364
|
+
});
|
|
365
|
+
const boxes = new Map();
|
|
366
|
+
const costs = new Map();
|
|
367
|
+
/** So a label can tell whether anything near it moved. */
|
|
368
|
+
const moves = [];
|
|
369
|
+
const placedAt = new Map();
|
|
370
|
+
const place = (label) => {
|
|
371
|
+
const [found] = rankOnRoute(label, scene, boxes, 1);
|
|
372
|
+
return found ?? { box: nearestClear(label, scene, boxes), cost: Number.POSITIVE_INFINITY };
|
|
373
|
+
};
|
|
374
|
+
const keep = (id, placement) => {
|
|
375
|
+
const before = boxes.get(id);
|
|
376
|
+
moves.push({ id, boxes: before === undefined ? [placement.box] : [before, placement.box] });
|
|
377
|
+
placedAt.set(id, moves.length);
|
|
378
|
+
boxes.set(id, placement.box);
|
|
379
|
+
costs.set(id, placement.cost);
|
|
380
|
+
};
|
|
381
|
+
const isCramped = (id) => costs.get(id) === Number.POSITIVE_INFINITY;
|
|
382
|
+
const unsettled = (label) => moves
|
|
383
|
+
.slice(placedAt.get(label.id) ?? 0)
|
|
384
|
+
.some(({ id, boxes: moved }) => id !== label.id &&
|
|
385
|
+
moved.some((box) => label.around.some(({ region }) => overlaps(box, region))));
|
|
386
|
+
for (const label of labels)
|
|
387
|
+
keep(label.id, place(label));
|
|
388
|
+
// A label placed early could not see the ones after it.
|
|
389
|
+
for (const label of labels) {
|
|
390
|
+
const current = costs.get(label.id) ?? 0;
|
|
391
|
+
if (current < EPSILON || !unsettled(label))
|
|
138
392
|
continue;
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
};
|
|
143
|
-
const box = settle(curve, labelAnchor, size, settled);
|
|
144
|
-
settled.push(box);
|
|
145
|
-
boxes.set(edge.id, box);
|
|
393
|
+
const placement = place(label);
|
|
394
|
+
if (placement.cost < current - EPSILON)
|
|
395
|
+
keep(label.id, placement);
|
|
146
396
|
}
|
|
147
|
-
|
|
397
|
+
// A cramped label was usually beaten to the only room by a neighbour that
|
|
398
|
+
// had somewhere else to go: swap them when both still fit.
|
|
399
|
+
const repair = (label, other, regions) => {
|
|
400
|
+
const mine = boxes.get(label.id);
|
|
401
|
+
const theirs = boxes.get(other.id);
|
|
402
|
+
if (mine === undefined || theirs === undefined)
|
|
403
|
+
return false;
|
|
404
|
+
if (!regions.some((region) => overlaps(theirs, region)))
|
|
405
|
+
return false;
|
|
406
|
+
boxes.delete(other.id);
|
|
407
|
+
for (const option of rankOnRoute(label, scene, boxes, REPAIR_OPTIONS)) {
|
|
408
|
+
boxes.set(label.id, option.box);
|
|
409
|
+
const [moved] = rankOnRoute(other, scene, boxes, 1);
|
|
410
|
+
if (moved === undefined)
|
|
411
|
+
continue;
|
|
412
|
+
keep(label.id, option);
|
|
413
|
+
keep(other.id, moved);
|
|
414
|
+
return true;
|
|
415
|
+
}
|
|
416
|
+
boxes.set(label.id, mine);
|
|
417
|
+
boxes.set(other.id, theirs);
|
|
418
|
+
return false;
|
|
419
|
+
};
|
|
420
|
+
for (const label of labels) {
|
|
421
|
+
if (!isCramped(label.id))
|
|
422
|
+
continue;
|
|
423
|
+
const reach = label.size.width + SOFT_CARD_GAP + BESIDE_GAP;
|
|
424
|
+
const regions = label.around.map(({ run }) => inflate(runBounds(run), reach));
|
|
425
|
+
for (const other of labels)
|
|
426
|
+
if (other.id !== label.id && !isCramped(other.id) && repair(label, other, regions))
|
|
427
|
+
break;
|
|
428
|
+
}
|
|
429
|
+
return {
|
|
430
|
+
boxes,
|
|
431
|
+
cramped: new Map(labels.filter(({ id }) => isCramped(id)).map(({ id, size }) => [id, size.width])),
|
|
432
|
+
};
|
|
148
433
|
};
|
|
149
434
|
//# sourceMappingURL=labels.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labels.js","sourceRoot":"","sources":["../../src/layout/labels.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"labels.js","sourceRoot":"","sources":["../../src/layout/labels.ts"],"names":[],"mappings":"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"}
|
package/dist/manifest.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { GraphDoc, Lens, RenderAsset, RenderManifest } from "@coldtea/pr-lens-schema";
|
|
2
|
-
import type
|
|
2
|
+
import { type Theme } from "./theme.js";
|
|
3
3
|
/**
|
|
4
4
|
* How many hex characters of the digest an address carries. Long enough that
|
|
5
5
|
* two different renders will not collide inside one repository's history,
|
package/dist/manifest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE3F,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE3F,OAAO,EAAU,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAGhD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,UAAW,MAAM,KAAG,MAC4C,CAAC;AAEzF,4EAA4E;AAC5E,eAAO,MAAM,aAAa,UAAW,OAAO,KAAG,MAS9C,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAS,QAAQ,KAAG,MAAyC,CAAC;AAE3F,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAsDlF;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,0BAA2B,YAAY,KAAG,MAC1B,CAAC;AAE3C,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,YAAa,YAAY,QAAQ,MAAM,KAAG,MACjC,CAAC;AAE1C,eAAO,MAAM,aAAa,QAAS,QAAQ,UAAU,SAAS,WAAW,EAAE,KAAG,cAU5E,CAAC"}
|