@bebranded/bb-contents 1.0.107 → 1.0.109

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 +62 -4
  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.107
4
+ * @version 1.0.109
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.107');
35
+ console.log('bb-contents | v1.0.109');
36
36
 
37
37
  // Configuration
38
38
  const config = {
39
- version: '1.0.107',
39
+ version: '1.0.109',
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)
@@ -438,13 +438,22 @@
438
438
  const waitForImages = () => {
439
439
  waitTimeout += 100;
440
440
 
441
- if (imagesLoaded >= totalImages || imagesLoaded === 0 || waitTimeout >= maxWaitTime) {
441
+ // Attendre que TOUTES les images soient chargées (ou s'il n'y a pas d'images, attendre un minimum)
442
+ if (totalImages === 0) {
443
+ // Pas d'images, démarrer après un court délai
444
+ const renderDelay = isMobile ? 500 : 100;
445
+ setTimeout(() => {
446
+ startSafariAnimation();
447
+ }, renderDelay);
448
+ } else if (imagesLoaded >= totalImages || waitTimeout >= maxWaitTime) {
449
+ // Toutes les images sont chargées OU timeout atteint
442
450
  // Attendre plus longtemps sur mobile pour le rendu visuel
443
451
  const renderDelay = isMobile ? 1000 : 200;
444
452
  setTimeout(() => {
445
453
  startSafariAnimation();
446
454
  }, renderDelay);
447
455
  } else {
456
+ // Continuer à attendre
448
457
  setTimeout(waitForImages, 100);
449
458
  }
450
459
  };
@@ -462,6 +471,55 @@
462
471
  });
463
472
  }
464
473
 
474
+ // CORRECTION: Appliquer les styles CSS aux images dans les copies également
475
+ // pour éviter les images floues ou mal cadrées
476
+ const allImages = scrollContainer.querySelectorAll('img');
477
+ allImages.forEach(img => {
478
+ // Détecter si c'est un SVG (par l'extension du src ou le type)
479
+ const isSVG = img.src && (img.src.toLowerCase().endsWith('.svg') || img.src.includes('data:image/svg+xml'));
480
+
481
+ // Pour les SVG, optimiser le rendu sur Safari mobile
482
+ if (isSVG) {
483
+ // Forcer le GPU rendering pour améliorer la netteté
484
+ img.style.webkitTransform = 'translate3d(0, 0, 0)';
485
+ img.style.transform = 'translate3d(0, 0, 0)';
486
+
487
+ // Améliorer le rendu des SVG sur Safari
488
+ img.style.imageRendering = '-webkit-optimize-contrast';
489
+ 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
+
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') {
506
+ img.style.objectFit = objectFit;
507
+ }
508
+ }
509
+ // Appliquer object-position si défini dans le CSS
510
+ if (objectPosition && objectPosition !== 'initial' && objectPosition !== '50% 50%') {
511
+ img.style.objectPosition = objectPosition;
512
+ }
513
+ }
514
+
515
+ // Pour les SVG, forcer un re-render après application des styles
516
+ if (isSVG) {
517
+ requestAnimationFrame(() => {
518
+ void img.offsetHeight;
519
+ });
520
+ }
521
+ });
522
+
465
523
  // Vérifier que les images ont une taille visible
466
524
  let imagesWithSize = 0;
467
525
  images.forEach(img => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bebranded/bb-contents",
3
- "version": "1.0.107",
3
+ "version": "1.0.109",
4
4
  "description": "Contenus additionnels français pour Webflow",
5
5
  "main": "bb-contents.js",
6
6
  "scripts": {