@bebranded/bb-contents 1.0.48-beta → 1.0.50-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/bb-contents.js +86 -7
  2. package/package.json +1 -1
package/bb-contents.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * BeBranded Contents
3
3
  * Contenus additionnels français pour Webflow
4
- * @version 1.0.48-beta
4
+ * @version 1.0.50-beta
5
5
  * @author BeBranded
6
6
  * @license MIT
7
7
  * @website https://www.bebranded.xyz
@@ -22,7 +22,7 @@
22
22
 
23
23
  // Configuration
24
24
  const config = {
25
- version: '1.0.48-beta',
25
+ version: '1.0.50-beta',
26
26
  debug: false, // Debug désactivé
27
27
  prefix: 'bb-', // utilisé pour générer les sélecteurs (data-bb-*)
28
28
  youtubeEndpoint: null, // URL du worker YouTube (à définir par l'utilisateur)
@@ -253,13 +253,31 @@
253
253
  if (scope.closest && scope.closest('[data-bb-disable]')) return;
254
254
  const elements = scope.querySelectorAll(bbContents._attrSelector('marquee'));
255
255
 
256
- elements.forEach(function(element) {
256
+ // Debug: Log du nombre d'éléments marquee trouvés
257
+ console.log(`[bb-contents] Marquee init: ${elements.length} éléments trouvés`);
258
+
259
+ elements.forEach(function(element, index) {
260
+ // Debug: Log de chaque élément
261
+ console.log(`[bb-contents] Marquee ${index + 1}:`, {
262
+ element: element,
263
+ alreadyProcessed: element.bbProcessed,
264
+ hasYouTubeProcessed: element.hasAttribute('data-bb-youtube-processed'),
265
+ hasMarqueeProcessed: element.hasAttribute('data-bb-marquee-processed'),
266
+ attributes: {
267
+ speed: element.getAttribute('bb-marquee-speed'),
268
+ direction: element.getAttribute('bb-marquee-direction'),
269
+ orientation: element.getAttribute('bb-marquee-orientation'),
270
+ height: element.getAttribute('bb-marquee-height')
271
+ }
272
+ });
257
273
  // Vérifier si l'élément a déjà été traité par un autre module
258
274
  if (element.bbProcessed || element.hasAttribute('data-bb-youtube-processed')) {
259
275
  // Élément marquee déjà traité par un autre module, ignoré
276
+ console.log(`[bb-contents] Marquee ${index + 1}: IGNORÉ (déjà traité)`);
260
277
  return;
261
278
  }
262
279
  element.bbProcessed = true;
280
+ console.log(`[bb-contents] Marquee ${index + 1}: TRAITEMENT EN COURS`);
263
281
 
264
282
  // Récupérer les options
265
283
  const speed = bbContents._getAttr(element, 'bb-marquee-speed') || '100';
@@ -336,10 +354,26 @@
336
354
 
337
355
  // Fonction pour initialiser l'animation avec vérification robuste des dimensions
338
356
  const initAnimation = (retryCount = 0) => {
357
+ console.log(`[bb-contents] Marquee ${index + 1}: initAnimation tentative ${retryCount + 1}`);
358
+
339
359
  // Vérifier que les images sont chargées
340
360
  const images = mainBlock.querySelectorAll('img');
361
+
362
+ // Forcer le chargement des images lazy loading
363
+ images.forEach(img => {
364
+ if (img.loading === 'lazy' || img.hasAttribute('data-src')) {
365
+ // Forcer le chargement de l'image lazy
366
+ if (img.hasAttribute('data-src')) {
367
+ img.src = img.getAttribute('data-src');
368
+ }
369
+ img.loading = 'eager';
370
+ }
371
+ });
372
+
341
373
  const imagesLoaded = Array.from(images).every(img => img.complete && img.naturalHeight > 0);
342
374
 
375
+ console.log(`[bb-contents] Marquee ${index + 1}: Images chargées: ${imagesLoaded} (${images.length} images)`);
376
+
343
377
  // Attendre que le contenu soit dans le DOM et que les images soient chargées
344
378
  requestAnimationFrame(() => {
345
379
  // Calcul plus robuste des dimensions
@@ -347,6 +381,13 @@
347
381
  const contentWidth = rect.width || mainBlock.offsetWidth;
348
382
  const contentHeight = rect.height || mainBlock.offsetHeight;
349
383
 
384
+ console.log(`[bb-contents] Marquee ${index + 1}: Dimensions calculées:`, {
385
+ rect: rect,
386
+ contentWidth: contentWidth,
387
+ contentHeight: contentHeight,
388
+ isVertical: isVertical
389
+ });
390
+
350
391
  // Pour les marquees verticaux, utiliser la largeur du parent si nécessaire
351
392
  let finalWidth = contentWidth;
352
393
  let finalHeight = contentHeight;
@@ -362,21 +403,53 @@
362
403
 
363
404
  // Vérifications robustes avant initialisation
364
405
  const hasValidDimensions = (isVertical && finalHeight > 50) || (!isVertical && finalWidth > 50);
406
+ const hasContent = mainBlock.innerHTML.trim().length > 0;
365
407
  const maxRetries = 8; // Plus de tentatives pour attendre les images
366
408
 
367
- // Si pas de contenu valide ou images pas chargées, réessayer
368
- if (!hasValidDimensions || !imagesLoaded) {
409
+ // Fallback: si pas de dimensions valides mais qu'il y a du contenu, forcer l'initialisation
410
+ const shouldForceInit = !hasValidDimensions && hasContent && retryCount >= 3;
411
+
412
+ // Fallback pour images: forcer l'initialisation après 3 tentatives même si images pas chargées
413
+ const shouldForceInitImages = !imagesLoaded && hasContent && retryCount >= 3;
414
+
415
+ console.log(`[bb-contents] Marquee ${index + 1}: Vérifications:`, {
416
+ hasValidDimensions: hasValidDimensions,
417
+ hasContent: hasContent,
418
+ imagesLoaded: imagesLoaded,
419
+ retryCount: retryCount,
420
+ maxRetries: maxRetries,
421
+ shouldForceInit: shouldForceInit,
422
+ shouldForceInitImages: shouldForceInitImages
423
+ });
424
+
425
+ // Si pas de contenu valide ou images pas chargées, réessayer (sauf si on force)
426
+ if ((!hasValidDimensions || !imagesLoaded) && !shouldForceInit && !shouldForceInitImages) {
369
427
  if (retryCount < maxRetries) {
370
428
  const delay = 300 + retryCount * 200; // Délais plus longs pour attendre les images
429
+ console.log(`[bb-contents] Marquee ${index + 1}: RETRY dans ${delay}ms (dimensions: ${hasValidDimensions}, images: ${imagesLoaded})`);
371
430
  // Contenu/images non prêts, nouvelle tentative
372
431
  setTimeout(() => initAnimation(retryCount + 1), delay);
373
432
  return;
374
433
  } else {
375
434
  // Échec d'initialisation après plusieurs tentatives
435
+ console.log(`[bb-contents] Marquee ${index + 1}: ÉCHEC après ${maxRetries} tentatives`);
376
436
  return;
377
437
  }
378
438
  }
379
439
 
440
+ if (shouldForceInit || shouldForceInitImages) {
441
+ console.log(`[bb-contents] Marquee ${index + 1}: FORÇAGE DE L'INITIALISATION (fallback)`);
442
+ // Utiliser des dimensions par défaut si les vraies dimensions ne sont pas disponibles
443
+ if (isVertical && finalHeight <= 50) {
444
+ finalHeight = 200; // Hauteur par défaut pour vertical
445
+ }
446
+ if (!isVertical && finalWidth <= 50) {
447
+ finalWidth = 300; // Largeur par défaut pour horizontal
448
+ }
449
+ }
450
+
451
+ console.log(`[bb-contents] Marquee ${index + 1}: INITIALISATION DE L'ANIMATION`);
452
+
380
453
  if (isVertical) {
381
454
  // Animation JavaScript pour le vertical
382
455
  const contentSize = finalHeight;
@@ -553,11 +626,17 @@
553
626
  if (document.readyState !== 'complete') {
554
627
  // Attente de window.load pour initialiser le marquee
555
628
  window.addEventListener('load', () => {
556
- setTimeout(() => initAnimation(0), initDelay);
629
+ setTimeout(() => {
630
+ initAnimation(0);
631
+ console.log(`[bb-contents] Marquee ${index + 1}: Animation démarrée`);
632
+ }, initDelay);
557
633
  });
558
634
  } else {
559
635
  // window.load déjà déclenché, initialiser directement
560
- setTimeout(() => initAnimation(0), initDelay);
636
+ setTimeout(() => {
637
+ initAnimation(0);
638
+ console.log(`[bb-contents] Marquee ${index + 1}: Animation démarrée`);
639
+ }, initDelay);
561
640
  }
562
641
  });
563
642
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bebranded/bb-contents",
3
- "version": "1.0.48-beta",
3
+ "version": "1.0.50-beta",
4
4
  "description": "Contenus additionnels français pour Webflow",
5
5
  "main": "bb-contents.js",
6
6
  "scripts": {