@bebranded/bb-contents 1.0.35-beta → 1.0.37-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.
- package/bb-contents.js +61 -31
- package/package.json +1 -1
package/bb-contents.js
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
// Configuration
|
|
19
19
|
const config = {
|
|
20
|
-
version: '1.0.
|
|
20
|
+
version: '1.0.37-beta',
|
|
21
21
|
debug: true, // Activé temporairement pour debug
|
|
22
22
|
prefix: 'bb-', // utilisé pour générer les sélecteurs (data-bb-*)
|
|
23
23
|
i18n: {
|
|
@@ -466,43 +466,53 @@
|
|
|
466
466
|
// Marquer l'élément comme traité par le module marquee
|
|
467
467
|
element.setAttribute('data-bb-marquee-processed', 'true');
|
|
468
468
|
|
|
469
|
-
// Fonction pour initialiser l'animation avec
|
|
469
|
+
// Fonction pour initialiser l'animation avec vérification robuste des dimensions
|
|
470
470
|
const initAnimation = (retryCount = 0) => {
|
|
471
|
-
//
|
|
471
|
+
// Vérifier que les images sont chargées
|
|
472
|
+
const images = mainBlock.querySelectorAll('img');
|
|
473
|
+
const imagesLoaded = Array.from(images).every(img => img.complete && img.naturalHeight > 0);
|
|
474
|
+
|
|
475
|
+
// Attendre que le contenu soit dans le DOM et que les images soient chargées
|
|
472
476
|
requestAnimationFrame(() => {
|
|
473
|
-
|
|
474
|
-
const
|
|
477
|
+
// Calcul plus robuste des dimensions
|
|
478
|
+
const rect = mainBlock.getBoundingClientRect();
|
|
479
|
+
const contentWidth = rect.width || mainBlock.offsetWidth;
|
|
480
|
+
const contentHeight = rect.height || mainBlock.offsetHeight;
|
|
475
481
|
|
|
476
|
-
//
|
|
477
|
-
|
|
482
|
+
// Pour les marquees verticaux, utiliser la largeur du parent si nécessaire
|
|
483
|
+
let finalWidth = contentWidth;
|
|
484
|
+
let finalHeight = contentHeight;
|
|
478
485
|
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
return;
|
|
485
|
-
} else {
|
|
486
|
-
bbContents.utils.log('Échec d\'initialisation après 5 tentatives');
|
|
487
|
-
return;
|
|
488
|
-
}
|
|
486
|
+
if (isVertical && contentWidth < 10) {
|
|
487
|
+
// Si largeur trop petite, utiliser la largeur du parent
|
|
488
|
+
const parentRect = mainBlock.parentElement.getBoundingClientRect();
|
|
489
|
+
finalWidth = parentRect.width || mainBlock.parentElement.offsetWidth;
|
|
490
|
+
bbContents.utils.log('Largeur corrigée pour marquee vertical:', finalWidth, 'px (était:', contentWidth, 'px)');
|
|
489
491
|
}
|
|
490
492
|
|
|
491
|
-
//
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
493
|
+
// Debug amélioré avec statut des images
|
|
494
|
+
bbContents.utils.log('Debug - Largeur:', finalWidth, 'px, Hauteur:', finalHeight, 'px, Images chargées:', imagesLoaded, 'Enfants:', mainBlock.children.length, 'Vertical:', isVertical, 'Direction:', direction, 'Tentative:', retryCount + 1);
|
|
495
|
+
|
|
496
|
+
// Vérifications robustes avant initialisation
|
|
497
|
+
const hasValidDimensions = (isVertical && finalHeight > 50) || (!isVertical && finalWidth > 50);
|
|
498
|
+
const maxRetries = 8; // Plus de tentatives pour attendre les images
|
|
499
|
+
|
|
500
|
+
// Si pas de contenu valide ou images pas chargées, réessayer
|
|
501
|
+
if (!hasValidDimensions || !imagesLoaded) {
|
|
502
|
+
if (retryCount < maxRetries) {
|
|
503
|
+
const delay = 300 + retryCount * 200; // Délais plus longs pour attendre les images
|
|
504
|
+
bbContents.utils.log('Contenu/images non prêts, nouvelle tentative dans', delay, 'ms');
|
|
505
|
+
setTimeout(() => initAnimation(retryCount + 1), delay);
|
|
496
506
|
return;
|
|
497
507
|
} else {
|
|
498
|
-
bbContents.utils.log('Échec d\'initialisation -
|
|
508
|
+
bbContents.utils.log('Échec d\'initialisation après', maxRetries, 'tentatives - dimensions:', finalWidth + 'x' + finalHeight, 'images chargées:', imagesLoaded);
|
|
499
509
|
return;
|
|
500
510
|
}
|
|
501
511
|
}
|
|
502
512
|
|
|
503
513
|
if (isVertical) {
|
|
504
514
|
// Animation JavaScript pour le vertical
|
|
505
|
-
const contentSize =
|
|
515
|
+
const contentSize = finalHeight;
|
|
506
516
|
const totalSize = contentSize * 4 + parseInt(gap) * 3; // 4 copies au lieu de 3
|
|
507
517
|
|
|
508
518
|
// Ajuster la hauteur du scrollContainer seulement si pas en mode auto
|
|
@@ -550,7 +560,7 @@
|
|
|
550
560
|
}
|
|
551
561
|
} else {
|
|
552
562
|
// Animation JavaScript pour l'horizontal (comme le vertical pour éviter les saccades)
|
|
553
|
-
const contentSize =
|
|
563
|
+
const contentSize = finalWidth;
|
|
554
564
|
const totalSize = contentSize * 4 + parseInt(gap) * 3;
|
|
555
565
|
scrollContainer.style.width = totalSize + 'px';
|
|
556
566
|
|
|
@@ -596,12 +606,22 @@
|
|
|
596
606
|
});
|
|
597
607
|
};
|
|
598
608
|
|
|
599
|
-
// Démarrer l'initialisation avec délai adaptatif
|
|
600
|
-
let initDelay = isVertical ?
|
|
609
|
+
// Démarrer l'initialisation avec délai adaptatif - Option 1: Attendre que tout soit prêt
|
|
610
|
+
let initDelay = isVertical ? 500 : 200; // Délais plus longs par défaut
|
|
601
611
|
if (bbContents._performanceBoostDetected) {
|
|
602
|
-
initDelay = isVertical ?
|
|
612
|
+
initDelay = isVertical ? 800 : 500; // Délais encore plus longs avec bb-performance-boost
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
// Attendre window.load si pas encore déclenché
|
|
616
|
+
if (document.readyState !== 'complete') {
|
|
617
|
+
bbContents.utils.log('Attente de window.load pour initialiser le marquee');
|
|
618
|
+
window.addEventListener('load', () => {
|
|
619
|
+
setTimeout(() => initAnimation(0), initDelay);
|
|
620
|
+
});
|
|
621
|
+
} else {
|
|
622
|
+
// window.load déjà déclenché, initialiser directement
|
|
623
|
+
setTimeout(() => initAnimation(0), initDelay);
|
|
603
624
|
}
|
|
604
|
-
setTimeout(() => initAnimation(0), initDelay);
|
|
605
625
|
});
|
|
606
626
|
|
|
607
627
|
bbContents.utils.log('Module Marquee initialisé:', elements.length, 'éléments');
|
|
@@ -1007,9 +1027,9 @@
|
|
|
1007
1027
|
}, delay);
|
|
1008
1028
|
}
|
|
1009
1029
|
|
|
1010
|
-
// Initialisation différée supplémentaire pour les cas difficiles
|
|
1030
|
+
// Initialisation différée supplémentaire pour les cas difficiles - Option 1: Attendre que tout soit vraiment prêt
|
|
1011
1031
|
window.addEventListener('load', function() {
|
|
1012
|
-
const loadDelay = document.body.hasAttribute('bb-performance-boost') ?
|
|
1032
|
+
const loadDelay = document.body.hasAttribute('bb-performance-boost') ? 3000 : 1500; // Délais plus longs
|
|
1013
1033
|
setTimeout(function() {
|
|
1014
1034
|
// Vérifier s'il y a des éléments non initialisés
|
|
1015
1035
|
const unprocessedMarquees = document.querySelectorAll('[bb-marquee]:not([data-bb-marquee-processed])');
|
|
@@ -1017,6 +1037,16 @@
|
|
|
1017
1037
|
bbContents.utils.log('Éléments marquee non initialisés détectés après load, réinitialisation...');
|
|
1018
1038
|
bbContents.reinit();
|
|
1019
1039
|
}
|
|
1040
|
+
|
|
1041
|
+
// Vérification supplémentaire des images chargées
|
|
1042
|
+
const allImages = document.querySelectorAll('img');
|
|
1043
|
+
const unloadedImages = Array.from(allImages).filter(img => !img.complete || img.naturalHeight === 0);
|
|
1044
|
+
if (unloadedImages.length > 0) {
|
|
1045
|
+
bbContents.utils.log('Images non chargées détectées:', unloadedImages.length, '- attente supplémentaire...');
|
|
1046
|
+
setTimeout(() => {
|
|
1047
|
+
bbContents.reinit();
|
|
1048
|
+
}, 1000);
|
|
1049
|
+
}
|
|
1020
1050
|
}, loadDelay);
|
|
1021
1051
|
});
|
|
1022
1052
|
}
|