@bebranded/bb-contents 1.0.113 → 1.0.114
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 +54 -33
- 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.114
|
|
5
5
|
* @author BeBranded
|
|
6
6
|
* @license MIT
|
|
7
7
|
* @website https://www.bebranded.xyz
|
|
@@ -32,11 +32,11 @@
|
|
|
32
32
|
window._bbContentsInitialized = true;
|
|
33
33
|
|
|
34
34
|
// Log de démarrage simple (une seule fois)
|
|
35
|
-
console.log('bb-contents | v1.0.
|
|
35
|
+
console.log('bb-contents | v1.0.114');
|
|
36
36
|
|
|
37
37
|
// Configuration
|
|
38
38
|
const config = {
|
|
39
|
-
version: '1.0.
|
|
39
|
+
version: '1.0.114',
|
|
40
40
|
debug: false, // Debug désactivé pour rendu propre
|
|
41
41
|
prefix: 'bb-', // utilisé pour générer les sélecteurs (data-bb-*)
|
|
42
42
|
youtubeEndpoint: null, // URL du worker YouTube (à définir par l'utilisateur)
|
|
@@ -409,43 +409,42 @@
|
|
|
409
409
|
const originalHeight = img.style.height;
|
|
410
410
|
|
|
411
411
|
img.onload = () => {
|
|
412
|
-
// SOLUTION MOBILE SAFARI : Pour les SVG sur mobile Safari,
|
|
412
|
+
// SOLUTION MOBILE SAFARI : Pour les SVG sur mobile Safari, utiliser contain avec optimisations
|
|
413
413
|
if (isSVG && isMobile && isSafari) {
|
|
414
|
-
// SUR SAFARI MOBILE :
|
|
415
|
-
|
|
416
|
-
img.style.objectFit = 'none';
|
|
414
|
+
// SUR SAFARI MOBILE : Utiliser contain MAIS avec des optimisations pour éviter le flou
|
|
415
|
+
img.style.objectFit = 'contain';
|
|
417
416
|
img.style.objectPosition = 'center';
|
|
418
417
|
|
|
419
|
-
//
|
|
418
|
+
// Dimensions avec contraintes pour forcer contain
|
|
419
|
+
img.style.width = '100%';
|
|
420
|
+
img.style.height = '100%';
|
|
421
|
+
img.style.maxWidth = '100%';
|
|
422
|
+
img.style.maxHeight = '100%';
|
|
423
|
+
img.style.boxSizing = 'border-box';
|
|
424
|
+
|
|
425
|
+
// Optimisations pour améliorer le rendu des SVG avec contain
|
|
426
|
+
// Utiliser auto au lieu de crisp-edges pour contain
|
|
427
|
+
img.style.imageRendering = 'auto';
|
|
428
|
+
img.style.webkitBackfaceVisibility = 'hidden';
|
|
429
|
+
img.style.backfaceVisibility = 'hidden';
|
|
430
|
+
|
|
431
|
+
// Forcer le GPU rendering AVANT d'appliquer contain
|
|
432
|
+
img.style.webkitTransform = 'translateZ(0)';
|
|
433
|
+
img.style.transform = 'translateZ(0)';
|
|
434
|
+
|
|
435
|
+
// Conteneur parent pour contraindre et centrer
|
|
420
436
|
const parent = img.parentElement;
|
|
421
437
|
if (parent) {
|
|
422
|
-
// S'assurer que le parent a des dimensions fixes
|
|
423
|
-
const parentComputed = getComputedStyle(parent);
|
|
424
|
-
if (!parentComputed.width || parentComputed.width === 'auto') {
|
|
425
|
-
parent.style.width = '100%';
|
|
426
|
-
}
|
|
427
|
-
if (!parentComputed.height || parentComputed.height === 'auto') {
|
|
428
|
-
parent.style.height = '100%';
|
|
429
|
-
}
|
|
430
|
-
|
|
431
438
|
parent.style.display = 'flex';
|
|
432
439
|
parent.style.alignItems = 'center';
|
|
433
440
|
parent.style.justifyContent = 'center';
|
|
434
441
|
parent.style.overflow = 'hidden';
|
|
435
442
|
parent.style.boxSizing = 'border-box';
|
|
436
443
|
|
|
437
|
-
//
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
img.style.maxWidth = '100%';
|
|
441
|
-
img.style.maxHeight = '100%';
|
|
442
|
-
img.style.boxSizing = 'border-box';
|
|
444
|
+
// S'assurer que le parent a des dimensions
|
|
445
|
+
if (!parent.style.width) parent.style.width = '100%';
|
|
446
|
+
if (!parent.style.height) parent.style.height = '100%';
|
|
443
447
|
}
|
|
444
|
-
|
|
445
|
-
// Améliorer le rendu des SVG sans object-fit
|
|
446
|
-
img.style.imageRendering = 'crisp-edges';
|
|
447
|
-
img.style.webkitBackfaceVisibility = 'hidden';
|
|
448
|
-
img.style.backfaceVisibility = 'hidden';
|
|
449
448
|
} else if (isSVG && isMobile) {
|
|
450
449
|
// Pour Chrome mobile, utiliser contain normalement
|
|
451
450
|
img.style.objectFit = 'contain';
|
|
@@ -501,17 +500,39 @@
|
|
|
501
500
|
const waitForImages = () => {
|
|
502
501
|
waitTimeout += 100;
|
|
503
502
|
|
|
504
|
-
// Attendre que TOUTES les images soient chargées
|
|
503
|
+
// SAFARI MOBILE : Attendre ABSOLUMENT que TOUTES les images soient chargées
|
|
505
504
|
if (totalImages === 0) {
|
|
506
505
|
// Pas d'images, démarrer après un court délai
|
|
507
506
|
const renderDelay = isMobile ? 500 : 100;
|
|
508
507
|
setTimeout(() => {
|
|
509
508
|
startSafariAnimation();
|
|
510
509
|
}, renderDelay);
|
|
511
|
-
} else if (imagesLoaded >= totalImages
|
|
512
|
-
//
|
|
513
|
-
|
|
514
|
-
|
|
510
|
+
} else if (imagesLoaded >= totalImages) {
|
|
511
|
+
// SAFARI MOBILE : Vérifier que les images ont vraiment leurs dimensions
|
|
512
|
+
let imagesReady = true;
|
|
513
|
+
if (isSafari && isMobile) {
|
|
514
|
+
images.forEach(img => {
|
|
515
|
+
if (!img.complete || img.naturalWidth === 0 || img.naturalHeight === 0) {
|
|
516
|
+
imagesReady = false;
|
|
517
|
+
}
|
|
518
|
+
});
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
if (imagesReady) {
|
|
522
|
+
// Toutes les images sont chargées ET ont leurs dimensions
|
|
523
|
+
// Attendre plus longtemps sur mobile Safari pour le rendu visuel
|
|
524
|
+
const renderDelay = isSafari && isMobile ? 1500 : (isMobile ? 1000 : 200);
|
|
525
|
+
setTimeout(() => {
|
|
526
|
+
startSafariAnimation();
|
|
527
|
+
}, renderDelay);
|
|
528
|
+
} else {
|
|
529
|
+
// Continuer à attendre que les dimensions soient disponibles
|
|
530
|
+
setTimeout(waitForImages, 100);
|
|
531
|
+
}
|
|
532
|
+
} else if (waitTimeout >= maxWaitTime) {
|
|
533
|
+
// Timeout atteint : forcer le démarrage mais c'est un fallback
|
|
534
|
+
console.warn('[MARQUEE] Timeout atteint, certaines images peuvent ne pas être chargées');
|
|
535
|
+
const renderDelay = isSafari && isMobile ? 1500 : (isMobile ? 1000 : 200);
|
|
515
536
|
setTimeout(() => {
|
|
516
537
|
startSafariAnimation();
|
|
517
538
|
}, renderDelay);
|