Ignore:
File:
1 edited

Legend:

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

    ra8364ee r52fc278  
    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.
    13 export function init() { run(); }
    14 
    15 function run() {
    168
    179  (function () {
     
    8577/* Short feed videos (gif/cover loops like an animated cover) autoplay + loop muted like a GIF;
    8678   longer real videos keep their controls. Decided on the actual duration once metadata loads. */
    87 wireGifVideos();
     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})();
    8890
    8991/* Like/Boost toggle in place — POST via fetch, flip the button, stay on the page (no reload, no banner). */
     
    111113// actually overflows. Runs on every /news render (full load + htmx swap); a per-element flag
    112114// prevents double-wiring.
    113 wireReadMore();
    114 }
    115 
    116 /* Short feed videos: zie de opmerking bij de aanroep in run(). */
    117 function 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 
    129 function wireReadMore(){
     115(function(){
    130116  var _d = pageData(); var RM = _d.readMore || 'Lees meer', SL = _d.showLess || 'Toon minder';
    131117  document.querySelectorAll('.tl-content:not(.nsfw-media):not([data-rm])').forEach(function(c){
     
    141127    }
    142128  });
    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.
    148 document.body.addEventListener('htmx:afterSettle', function () { wireGifVideos(); wireReadMore(); });
     129})();
Note: See TracChangeset for help on using the changeset viewer.