@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.
Files changed (2) hide show
  1. package/bb-contents.js +42 -33
  2. 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.109
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.109');
35
+ console.log('bb-contents | v1.0.111');
36
36
 
37
37
  // Configuration
38
38
  const config = {
39
- version: '1.0.109',
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, optimiser le rendu sur Safari mobile
482
- if (isSVG) {
483
- // Forcer le GPU rendering pour améliorer la netteté
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 sur Safari
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
- // Appliquer object-fit si défini dans le CSS
503
- // Pour les SVG, être plus prudent avec object-fit
504
- if (objectFit && objectFit !== 'none' && objectFit !== 'fill') {
505
- if (!isSVG || objectFit === 'contain' || objectFit === 'scale-down') {
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
- // Appliquer object-position si défini dans le CSS
510
- if (objectPosition && objectPosition !== 'initial' && objectPosition !== '50% 50%') {
511
- img.style.objectPosition = objectPosition;
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
- // Pour les SVG, forcer un re-render après application des styles
516
- if (isSVG) {
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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bebranded/bb-contents",
3
- "version": "1.0.109",
3
+ "version": "1.0.111",
4
4
  "description": "Contenus additionnels français pour Webflow",
5
5
  "main": "bb-contents.js",
6
6
  "scripts": {