%# View switcher partial — Tijdlijn / Grid + grid-cols picker.
Mounted in shell.ejs once, visible on every non-admin page. Click
handlers are wired in shell.ejs via event-delegation on document so
HTMX-swapped content keeps working without rebinding. %>
<%
var _bc = (typeof bodyClass === 'string') ? bodyClass : '';
var _onShows = _bc.indexOf('on-shows') >= 0;
// Pagina's zonder actieve feed-weergave → niets in de pill is 'actief' (Solo/Cirkel
// + Tijdlijn/Grid grijs). Alleen Agenda krijgt z'n eigen is-active op de agenda.
var _neutral = ['on-shows','on-downloads','on-post','on-epk','on-linkbio','on-newsletter','on-archive']
.some(function(c){ return _bc.indexOf(c) >= 0; });
// Lezen bestaat alleen waar een leessectie is, en dat is de eigen feed. De
// cirkel toont berichten van ANDEREN, opgehaald van hun servers -- daar is
// "het hele stuk" niet iets wat wij in handen hebben.
//
// De knop verdween daar eerst helemaal, met het argument dat een knop die
// niets doet erger is dan geen knop. In de praktijk pakte dat andersom uit:
// de pil werd smaller op de cirkel en breder op solo, en die sprong leest als
// "er is hier iets weg" -- terwijl juist NIET duidelijk werd dat Lezen
// bestaat en hier alleen niet kan. Hij staat er nu dood bij: zichtbaar, grijs
// en niet aan te klikken. Dan is er maar een mogelijkheid, Grid, en je ziet
// meteen dat dat geen toeval is maar de enige.
var _leesUit = _bc.indexOf('on-cirkel') >= 0;
var _gridStandaard = (typeof site !== 'undefined' && site && site.feed_view_default === 'grid');
// Welke tweede weergave biedt deze site aan? Bij 'auto' tekenen we ZE ALLEBEI
// en laat de CSS er per viewport een zien -- Lezen op mobiel, Tijdlijn op
// desktop. Dat scheelt een resize-afhandeling en een knop die van naam
// verspringt terwijl je kijkt.
var _alt = (typeof site !== 'undefined' && site && site.feed_alt_view) || 'reader';
if (['reader', 'timeline', 'auto'].indexOf(_alt) < 0) _alt = 'reader';
var _tweede = _alt === 'auto' ? ['reader', 'timeline'] : [_alt];
// De tijdlijn WERKT wel in de cirkel -- dat is er zelfs de natuurlijke vorm.
// Alleen Lezen kan daar niet, want dat zijn berichten van anderen.
var _dood = function (v) { return v === 'reader' && _leesUit; };
// Staat er GEEN levende tweede knop, dan is Grid het enige dat overblijft en
// hoort die aan te staan. Bij een tijdlijn-site is dat in de cirkel niet zo:
// daar werkt de tijdlijn gewoon.
var _alleenGrid = _tweede.every(_dood);
var _icoon = {
reader: '