fix(street-level): four regressions from the merge review

- The selected sequence is drawn past the per-tile caps again, and its
  highlight takes every loaded part, drawn or not: in a dense tile a
  clicked Mapillary or Panoramax line kept its cones but lost its line.
- photoViewer tries :fullscreen and :popover-open one at a time, each in
  its own try: Safari before 16.4 parses neither, and the fallback threw
  on every flat KartaView or Panoramax photo.
- A lit Street View off Google 3D says it needs the Google 3D map again,
  instead of "every provider is switched off".
- Chips carry their provider colour again (--chip-color, as on main).

Each comes with the test that reproduced it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
German KhokhlovandClaude Opus 5.5 committed 2026-10-19 23:14:01 +04:00
1 parent 4e2e0d6900
commit fb777c1c93
9 files changed
+157 -17

No files matched your search

@@ -591,3 +591,34 @@ test('a tile that fails before the terrain table loads is reported at once, neve
process.off('unhandledRejection', onUnhandled);
}
});
test('the selected sequence is drawn and highlighted even past the per-tile cap', async () => {
const { state, source, coverage, centre, viewer } = setup();
const line = (n) => [
[
[centre.lon - 0.001, centre.lat + n * 1e-6],
[centre.lon + 0.001, centre.lat + n * 1e-6],
],
];
const sequences = [];
for (let i = 0; i < 700; i++)
sequences.push({
id: `new-${i}`,
parts: line(i),
capturedAt: 2_000_000_000_000 + i,
});
sequences.push({
id: 'old',
parts: line(800),
capturedAt: 1_000_000_000_000,
});
state.sequence.selectedId = 'old';
coverage.refresh();
source.calls[0].resolve(encodeCoverageTile(centre.tile, { sequences }));
await settle();
const [entry] = state.coverage.tiles.values();
assert.ok(entry.sequences.has('old'), 'the selected line is drawn');
coverage.highlight('old');
assert.ok(state.coverage.highlight, 'the selected line is highlighted');
coverage.clear();
});