@bebranded/bb-contents 1.0.19-beta → 1.0.20-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 +27 -5
- 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.20-beta
|
|
5
5
|
* @author BeBranded
|
|
6
6
|
* @license MIT
|
|
7
7
|
* @website https://www.bebranded.xyz
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
// Configuration
|
|
19
19
|
const config = {
|
|
20
|
-
version: '1.0.
|
|
20
|
+
version: '1.0.20-beta',
|
|
21
21
|
debug: window.location.hostname === 'localhost' || window.location.hostname.includes('webflow.io'),
|
|
22
22
|
prefix: 'bb-', // utilisé pour générer les sélecteurs (data-bb-*)
|
|
23
23
|
i18n: {
|
|
@@ -317,7 +317,11 @@
|
|
|
317
317
|
bbContents.utils.log('Module détecté: marquee');
|
|
318
318
|
|
|
319
319
|
elements.forEach(element => {
|
|
320
|
-
|
|
320
|
+
// Vérifier si l'élément a déjà été traité par un autre module
|
|
321
|
+
if (element.bbProcessed || element.hasAttribute('data-bb-youtube-processed')) {
|
|
322
|
+
bbContents.utils.log('Élément marquee déjà traité par un autre module, ignoré:', element);
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
321
325
|
element.bbProcessed = true;
|
|
322
326
|
|
|
323
327
|
// Récupérer les options
|
|
@@ -357,9 +361,14 @@
|
|
|
357
361
|
|
|
358
362
|
// Assembler
|
|
359
363
|
mainContainer.appendChild(scrollContainer);
|
|
364
|
+
// Sauvegarder le contenu original avant de vider
|
|
365
|
+
const originalMarqueeContent = element.innerHTML;
|
|
360
366
|
element.innerHTML = '';
|
|
361
367
|
element.appendChild(mainContainer);
|
|
362
368
|
|
|
369
|
+
// Marquer l'élément comme traité par le module marquee
|
|
370
|
+
element.setAttribute('data-bb-marquee-processed', 'true');
|
|
371
|
+
|
|
363
372
|
// Animation JavaScript simple et efficace
|
|
364
373
|
const isVertical = orientation === 'vertical';
|
|
365
374
|
let animationId;
|
|
@@ -437,7 +446,11 @@
|
|
|
437
446
|
bbContents.utils.log('Module détecté: youtube');
|
|
438
447
|
|
|
439
448
|
elements.forEach(element => {
|
|
440
|
-
|
|
449
|
+
// Vérifier si l'élément a déjà été traité par un autre module
|
|
450
|
+
if (element.bbProcessed || element.hasAttribute('data-bb-marquee-processed')) {
|
|
451
|
+
bbContents.utils.log('Élément youtube déjà traité par un autre module, ignoré:', element);
|
|
452
|
+
return;
|
|
453
|
+
}
|
|
441
454
|
element.bbProcessed = true;
|
|
442
455
|
|
|
443
456
|
const channelId = bbContents._getAttr(element, 'bb-youtube-channel');
|
|
@@ -478,6 +491,9 @@
|
|
|
478
491
|
// Cacher le template original
|
|
479
492
|
template.style.display = 'none';
|
|
480
493
|
|
|
494
|
+
// Marquer l'élément comme traité par le module YouTube
|
|
495
|
+
element.setAttribute('data-bb-youtube-processed', 'true');
|
|
496
|
+
|
|
481
497
|
// Afficher un loader
|
|
482
498
|
container.innerHTML = '<div style="padding: 20px; text-align: center; color: #6b7280;">Chargement des vidéos YouTube...</div>';
|
|
483
499
|
|
|
@@ -512,9 +528,15 @@
|
|
|
512
528
|
let videos = data.items;
|
|
513
529
|
bbContents.utils.log(`Vidéos reçues de l'API: ${videos.length} (allowShorts: ${allowShorts})`);
|
|
514
530
|
|
|
515
|
-
// Vider le conteneur
|
|
531
|
+
// Vider le conteneur (en préservant les éléments marquee)
|
|
532
|
+
const marqueeElements = container.querySelectorAll('[data-bb-marquee-processed]');
|
|
516
533
|
container.innerHTML = '';
|
|
517
534
|
|
|
535
|
+
// Restaurer les éléments marquee si présents
|
|
536
|
+
marqueeElements.forEach(marqueeEl => {
|
|
537
|
+
container.appendChild(marqueeEl);
|
|
538
|
+
});
|
|
539
|
+
|
|
518
540
|
// Cloner le template pour chaque vidéo
|
|
519
541
|
videos.forEach(item => {
|
|
520
542
|
const videoId = item.id.videoId;
|