Changeset d9f60f4 in Klonkt for src/assets/js/mod/read.js
- Timestamp:
- 08/20/2026 11:12:07 AM (3 weeks ago)
- Branches:
- main
- Children:
- 3ccca13
- Parents:
- 96a99bf
- File:
-
- 1 edited
-
src/assets/js/mod/read.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/assets/js/mod/read.js
r96a99bf rd9f60f4 413 413 // kandidaat beoordeelt: zonder deze omleiding houdt de zone vooruit op bij de 414 414 // helft van de afstand tussen twee berichten, hoe groot je de drempel ook zet. 415 // 416 // DE REGEL, in Robins woorden (21-8): "enkel bij downscrollen, aan de 417 // onderkant van elke post, snappen naar de lijn tussen de posts" -- en geen 418 // snap op een bericht dat al voorbij is gescrold. Drie voorwaarden dus: 419 // 1. de laatste echte beweging ging omlaag, 420 // 2. het doel ligt VOOR je (een punt achter je slaan we over), 421 // 3. het ligt binnen de vangzone -- die begint rond de voet van het bericht. 422 // Het doel zelf blijft de bovenkant van het volgende bericht: dat IS de lijn 423 // ertussen, en dat is het essentiële. 424 // 425 // DE ZONE IS EEN GETAL, geen '55%'. Die string kwam ongewijzigd uit de opties 426 // en werd hier met een getal vergeleken -- altijd onwaar, dus deze terugval 427 // heeft nooit gewerkt en alleen het doel dat lenis zelf koos kwam erdoor. 428 const vangZone = () => 0.55 * window.innerHeight; 429 // Lenis' eigen `direction` is het teken van de snelheid, en die is bij het 430 // afvuren van de (gedebouncede) snap alweer nul. Daarom onthouden we de 431 // laatste richting die er echt was. 432 let laatsteRichtingOmlaag = true; 433 lenis.on('scroll', () => { 434 if (Math.abs(lenis.velocity) > 0.05) laatsteRichtingOmlaag = lenis.velocity > 0; 435 }); 415 436 const echtGaNaar = snap.goTo.bind(snap); 416 437 snap.goTo = (index) => { 438 if (!laatsteRichtingOmlaag) return; // omhoog: nooit vangen 417 439 const punten = snap.computeSnaps(); // zelfde volgorde als goTo intern gebruikt 418 440 const nu = lenis.scroll; 419 const doel = punten[index];420 if (doel && doel.value > nu + 2) { echtGaNaar(index); return; }421 441 let vooruit = -1; 422 442 punten.forEach((punt, i) => { 423 443 if (punt.value > nu + 2 && (vooruit < 0 || punt.value < punten[vooruit].value)) vooruit = i; 424 444 }); 425 if (vooruit < 0) return; 426 if (punten[vooruit].value - nu <= snap.distanceThreshold) echtGaNaar(vooruit);445 if (vooruit < 0) return; // niets meer voor je: vrij uitscrollen 446 if (punten[vooruit].value - nu <= vangZone()) echtGaNaar(vooruit); 427 447 }; 428 448 // Native snappen uit: twee mechanismen op dezelfde scroller vechten.
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)