@bebranded/bb-contents 1.0.118 → 1.0.120

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 +37 -13
  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.118
4
+ * @version 1.0.120
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.118');
35
+ console.log('bb-contents | v1.0.120');
36
36
 
37
37
  // Configuration
38
38
  const config = {
39
- version: '1.0.118',
39
+ version: '1.0.120',
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)
@@ -1059,7 +1059,8 @@
1059
1059
 
1060
1060
  // Fonction pour calculer le temps de lecture
1061
1061
  calculateReadingTime: function(text, images, wordsPerMinute, secondsPerImage) {
1062
- const wordCount = text ? (text.match(/\b\w+\b/g) || []).length : 0;
1062
+ // Utiliser split(/\s+/) pour un comptage plus fiable (comme le code de référence)
1063
+ const wordCount = text ? text.trim().split(/\s+/).filter(function(word) { return word.length > 0; }).length : 0;
1063
1064
  const imageCount = images ? images.length : 0;
1064
1065
  const imageTimeInMinutes = (imageCount * secondsPerImage) / 60;
1065
1066
 
@@ -1088,15 +1089,15 @@
1088
1089
  const format = bbContents._getAttr(element, 'bb-reading-time-format') || '{minutes} min';
1089
1090
  const urlAttr = bbContents._getAttr(element, 'bb-reading-time-url');
1090
1091
 
1091
- const wordsPerMinute = Number(speedAttr) > 0 ? Number(speedAttr) : 230;
1092
- const secondsPerImage = Number(imageSpeedAttr) > 0 ? Number(imageSpeedAttr) : 12;
1093
-
1094
- // Validation des valeurs
1092
+ // Validation et correction des valeurs
1093
+ let wordsPerMinute = Number(speedAttr);
1095
1094
  if (isNaN(wordsPerMinute) || wordsPerMinute <= 0) {
1096
- bbContents.utils.log('Vitesse de lecture invalide, utilisation de la valeur par défaut (230)');
1095
+ wordsPerMinute = 230;
1097
1096
  }
1097
+
1098
+ let secondsPerImage = Number(imageSpeedAttr);
1098
1099
  if (isNaN(secondsPerImage) || secondsPerImage < 0) {
1099
- bbContents.utils.log('Temps par image invalide, utilisation de la valeur par défaut (12)');
1100
+ secondsPerImage = 12;
1100
1101
  }
1101
1102
 
1102
1103
  // Détecter l'URL : priorité 1 = lien parent, priorité 2 = attribut
@@ -1138,14 +1139,37 @@
1138
1139
  }
1139
1140
 
1140
1141
  // Comportement par défaut : analyser le contenu de la page actuelle
1141
- let sourceNode = element;
1142
+ let sourceNode = null;
1143
+
1142
1144
  if (targetSelector) {
1143
- const found = document.querySelector(targetSelector);
1144
- if (found) sourceNode = found;
1145
+ sourceNode = document.querySelector(targetSelector);
1146
+ if (!sourceNode) {
1147
+ console.warn('bb-reading-time: sélecteur non trouvé:', targetSelector);
1148
+ sourceNode = element;
1149
+ }
1150
+ } else {
1151
+ sourceNode = element;
1145
1152
  }
1146
1153
 
1147
1154
  const text = (sourceNode.textContent || '').trim();
1148
1155
  const images = sourceNode.querySelectorAll('img');
1156
+
1157
+ // Debug pour comprendre le problème
1158
+ const wordCount = text ? text.trim().split(/\s+/).filter(function(word) { return word.length > 0; }).length : 0;
1159
+ console.log('bb-reading-time DEBUG:', {
1160
+ selector: targetSelector,
1161
+ sourceNodeFound: !!sourceNode,
1162
+ sourceNodeTag: sourceNode ? sourceNode.tagName : 'null',
1163
+ sourceNodeClass: sourceNode ? (sourceNode.className || sourceNode.id || 'no class/id') : 'null',
1164
+ textLength: text.length,
1165
+ textPreview: text.substring(0, 100) + (text.length > 100 ? '...' : ''),
1166
+ wordCount: wordCount,
1167
+ imageCount: images.length,
1168
+ wordsPerMinute: wordsPerMinute,
1169
+ secondsPerImage: secondsPerImage,
1170
+ calculatedMinutes: Math.ceil((wordCount / wordsPerMinute) + (images.length * secondsPerImage / 60))
1171
+ });
1172
+
1149
1173
  const minutes = self.calculateReadingTime(text, images, wordsPerMinute, secondsPerImage);
1150
1174
 
1151
1175
  const output = format.replace('{minutes}', String(minutes));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bebranded/bb-contents",
3
- "version": "1.0.118",
3
+ "version": "1.0.120",
4
4
  "description": "Contenus additionnels français pour Webflow",
5
5
  "main": "bb-contents.js",
6
6
  "scripts": {