@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.
- package/bb-contents.js +86 -7
- 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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
//
|
|
368
|
-
|
|
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(() =>
|
|
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(() =>
|
|
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
|
|