@bebranded/bb-contents 1.0.109 → 1.0.111
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 +42 -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.111
|
|
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.111');
|
|
36
36
|
|
|
37
37
|
// Configuration
|
|
38
38
|
const config = {
|
|
39
|
-
version: '1.0.
|
|
39
|
+
version: '1.0.111',
|
|
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)
|
|
@@ -478,46 +478,55 @@
|
|
|
478
478
|
// Détecter si c'est un SVG (par l'extension du src ou le type)
|
|
479
479
|
const isSVG = img.src && (img.src.toLowerCase().endsWith('.svg') || img.src.includes('data:image/svg+xml'));
|
|
480
480
|
|
|
481
|
-
// Pour les SVG,
|
|
482
|
-
if (isSVG) {
|
|
483
|
-
//
|
|
481
|
+
// SOLUTION MOBILE SAFARI : Pour les SVG sur mobile, éviter object-fit qui cause du flou
|
|
482
|
+
if (isSVG && isMobile) {
|
|
483
|
+
// Sur mobile, utiliser contain pour éviter le débordement, mais avec optimisations anti-flou
|
|
484
|
+
img.style.objectFit = 'contain';
|
|
485
|
+
img.style.objectPosition = 'center';
|
|
486
|
+
|
|
487
|
+
// Ajouter des contraintes pour empêcher le débordement
|
|
488
|
+
img.style.maxWidth = '100%';
|
|
489
|
+
img.style.maxHeight = '100%';
|
|
490
|
+
img.style.width = '100%';
|
|
491
|
+
img.style.height = '100%';
|
|
492
|
+
|
|
493
|
+
// Forcer le GPU rendering
|
|
484
494
|
img.style.webkitTransform = 'translate3d(0, 0, 0)';
|
|
485
495
|
img.style.transform = 'translate3d(0, 0, 0)';
|
|
486
496
|
|
|
487
|
-
// Améliorer le rendu des SVG
|
|
488
|
-
img.style.imageRendering = '-webkit-optimize-contrast';
|
|
497
|
+
// Améliorer le rendu des SVG
|
|
489
498
|
img.style.imageRendering = 'crisp-edges';
|
|
490
|
-
img.style.imageRendering = 'auto'; // Fallback si crisp-edges n'est pas supporté
|
|
491
|
-
|
|
492
|
-
// Forcer un reflow pour stabiliser le rendu
|
|
493
|
-
void img.offsetHeight;
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
// Vérifier si l'image a déjà des styles inline
|
|
497
|
-
if (!img.style.objectFit) {
|
|
498
|
-
const computedStyle = getComputedStyle(img);
|
|
499
|
-
const objectFit = computedStyle.objectFit;
|
|
500
|
-
const objectPosition = computedStyle.objectPosition;
|
|
501
499
|
|
|
502
|
-
//
|
|
503
|
-
//
|
|
504
|
-
|
|
505
|
-
|
|
500
|
+
// S'assurer que le conteneur parent permet au SVG de s'afficher correctement
|
|
501
|
+
// et empêche le débordement avec overflow hidden
|
|
502
|
+
const parent = img.parentElement;
|
|
503
|
+
if (parent) {
|
|
504
|
+
parent.style.display = 'flex';
|
|
505
|
+
parent.style.alignItems = 'center';
|
|
506
|
+
parent.style.justifyContent = 'center';
|
|
507
|
+
parent.style.overflow = 'hidden'; // Empêcher le débordement
|
|
508
|
+
}
|
|
509
|
+
} else {
|
|
510
|
+
// Pour les images non-SVG ou sur desktop, appliquer les styles normaux
|
|
511
|
+
// Vérifier si l'image a déjà des styles inline
|
|
512
|
+
if (!img.style.objectFit) {
|
|
513
|
+
const computedStyle = getComputedStyle(img);
|
|
514
|
+
const objectFit = computedStyle.objectFit;
|
|
515
|
+
const objectPosition = computedStyle.objectPosition;
|
|
516
|
+
|
|
517
|
+
// Appliquer object-fit si défini dans le CSS
|
|
518
|
+
if (objectFit && objectFit !== 'none' && objectFit !== 'fill') {
|
|
506
519
|
img.style.objectFit = objectFit;
|
|
507
520
|
}
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
521
|
+
// Appliquer object-position si défini dans le CSS
|
|
522
|
+
if (objectPosition && objectPosition !== 'initial' && objectPosition !== '50% 50%') {
|
|
523
|
+
img.style.objectPosition = objectPosition;
|
|
524
|
+
}
|
|
512
525
|
}
|
|
513
526
|
}
|
|
514
527
|
|
|
515
|
-
//
|
|
516
|
-
|
|
517
|
-
requestAnimationFrame(() => {
|
|
518
|
-
void img.offsetHeight;
|
|
519
|
-
});
|
|
520
|
-
}
|
|
528
|
+
// Forcer un reflow pour stabiliser le rendu
|
|
529
|
+
void img.offsetHeight;
|
|
521
530
|
});
|
|
522
531
|
|
|
523
532
|
// Vérifier que les images ont une taille visible
|