Changeset a39c9bd in Klonkt for src/assets/js/mod/news.js


Ignore:
Timestamp:
08/07/2026 07:01:20 PM (5 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
a66266d
Parents:
7df47b6 (diff), a8364ee (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge remote-tracking branch 'origin/main' into feature/playlists

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/assets/js/mod/news.js

    r7df47b6 ra39c9bd  
    66
    77import { pageData } from './lib.js';
     8
     9// De twee gedelegeerde blokken dragen een window-vlag en zijn bij een tweede
     10// init een no-op; de twee SCANNERS (gif-video's, lees-meer) moeten juist wel
     11// elke render opnieuw over de verse elementen lopen (shaer-5s1). Element-
     12// vlaggen (data-gif-wired, data-rm) houden dubbel bedraden tegen.
     13export function init() { run(); }
     14
     15function run() {
    816
    917  (function () {
     
    7785/* Short feed videos (gif/cover loops like an animated cover) autoplay + loop muted like a GIF;
    7886   longer real videos keep their controls. Decided on the actual duration once metadata loads. */
    79 (function(){
    80   document.querySelectorAll('.tl-media-video').forEach(function(v){
    81     if (v.dataset.gifWired) return; v.dataset.gifWired = '1';
    82     var decide = function(){
    83       if (v.duration && v.duration <= 30) {
    84         v.removeAttribute('controls'); v.loop = true; v.muted = true; v.play().catch(function(){});
    85       }
    86     };
    87     if (v.readyState >= 1) decide(); else v.addEventListener('loadedmetadata', decide, { once: true });
    88   });
    89 })();
     87wireGifVideos();
    9088
    9189/* Like/Boost toggle in place — POST via fetch, flip the button, stay on the page (no reload, no banner). */
     
    113111// actually overflows. Runs on every /news render (full load + htmx swap); a per-element flag
    114112// prevents double-wiring.
    115 (function(){
     113wireReadMore();
     114}
     115
     116/* Short feed videos: zie de opmerking bij de aanroep in run(). */
     117function wireGifVideos(){
     118  document.querySelectorAll('.tl-media-video').forEach(function(v){
     119    if (v.dataset.gifWired) return; v.dataset.gifWired = '1';
     120    var decide = function(){
     121      if (v.duration && v.duration <= 30) {
     122        v.removeAttribute('controls'); v.loop = true; v.muted = true; v.play().catch(function(){});
     123      }
     124    };
     125    if (v.readyState >= 1) decide(); else v.addEventListener('loadedmetadata', decide, { once: true });
     126  });
     127}
     128
     129function wireReadMore(){
    116130  var _d = pageData(); var RM = _d.readMore || 'Lees meer', SL = _d.showLess || 'Toon minder';
    117131  document.querySelectorAll('.tl-content:not(.nsfw-media):not([data-rm])').forEach(function(c){
     
    127141    }
    128142  });
    129 })();
     143}
     144
     145// Paginering: items die de feed later binnenhaalt zouden de scanners missen --
     146// init() draait per NAVIGATIE, en een pagineer-swap is er geen. Een keer,
     147// gedelegeerd; op andere pagina's vinden de scanners niets en doen ze niets.
     148document.body.addEventListener('htmx:afterSettle', function () { wireGifVideos(); wireReadMore(); });
Note: See TracChangeset for help on using the changeset viewer.