nodebb-plugin-ezoic-infinite 1.8.30 → 1.8.32

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/package.json +1 -1
  2. package/public/style.css +85 -42
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-plugin-ezoic-infinite",
3
- "version": "1.8.30",
3
+ "version": "1.8.32",
4
4
  "description": "Production-ready Ezoic infinite ads integration for NodeBB 4.x",
5
5
  "main": "library.js",
6
6
  "license": "MIT",
package/public/style.css CHANGED
@@ -1,5 +1,10 @@
1
1
  /*
2
- * NodeBB Ezoic Infinite Ads — style.css (v20.2)
2
+ * NodeBB Ezoic Infinite Ads — style.css (v20.5)
3
+ * Objectif:
4
+ * - comportement v50-like (pas de rognage involontaire)
5
+ * - neutraliser les wrappers Ezoic "adaptive/multi" (970px inline) sur mobile
6
+ * - éviter l'affichage multi-annonces (forcer 1 annonce / ligne)
7
+ * - garder anti-sticky + gestion .is-empty
3
8
  */
4
9
 
5
10
  /* ── Wrapper ──────────────────────────────────────────────────────────────── */
@@ -8,8 +13,12 @@
8
13
  width: 100%;
9
14
  margin: 0 !important;
10
15
  padding: 0 !important;
11
- overflow: hidden;
12
- contain: layout style;
16
+
17
+ /* Ne pas couper les ads rendues */
18
+ overflow: visible;
19
+
20
+ /* On évite les effets de layout imprévus avec certains thèmes */
21
+ contain: none;
13
22
  }
14
23
 
15
24
  /* Placeholder : 1px minimum pour rester visible par l'IntersectionObserver */
@@ -18,11 +27,12 @@
18
27
  margin: 0 !important;
19
28
  padding: 0 !important;
20
29
  min-height: 1px;
30
+ max-width: 100%;
21
31
  }
22
32
 
23
- /* ── Ciblage précis des nœuds Ezoic dans nos wraps ───────────────────────── */
33
+ /* ── Ciblage précis des nœuds Ezoic / Google dans nos wraps ──────────────── */
24
34
 
25
- /* Supprime le gap "baseline" sous les iframes (via block + line-height/font-size) */
35
+ /* Supprime le gap "baseline" sous les iframes */
26
36
  .nodebb-ezoic-wrap iframe,
27
37
  .nodebb-ezoic-wrap div[id$="__container__"] iframe {
28
38
  display: block !important;
@@ -30,21 +40,41 @@
30
40
  font-size: 0 !important;
31
41
  }
32
42
 
33
- .nodebb-ezoic-wrap div[id$="__container__"] {
43
+ /* Container Google/Ezoic : surtout PAS overflow hidden (sinon rognage) */
44
+ .nodebb-ezoic-wrap div[id$="__container__"],
45
+ .nodebb-ezoic-wrap [id^="google_ads_iframe_"][id$="__container__"] {
34
46
  display: block !important;
35
47
  line-height: 0 !important;
36
48
  font-size: 0 !important;
49
+ overflow: visible !important;
50
+
51
+ margin-left: auto !important;
52
+ margin-right: auto !important;
53
+
54
+ box-sizing: border-box !important;
55
+ max-width: 100% !important;
37
56
  }
38
57
 
39
- /* Ne pas écraser la hauteur réelle calculée par Ezoic */
58
+ /* Conteneur Ezoic : ne pas casser la hauteur, centrer */
40
59
  .nodebb-ezoic-wrap .ezoic-ad,
41
60
  .nodebb-ezoic-wrap span.ezoic-ad {
42
61
  display: block !important;
43
- margin: 0 !important;
62
+ margin: 0 auto !important;
44
63
  padding: 0 !important;
64
+
45
65
  height: auto !important;
46
66
  min-height: unset !important;
47
67
  max-height: none !important;
68
+
69
+ box-sizing: border-box !important;
70
+ max-width: 100% !important;
71
+ }
72
+
73
+ /* Iframes : centrées, bornées */
74
+ .nodebb-ezoic-wrap iframe {
75
+ margin-left: auto !important;
76
+ margin-right: auto !important;
77
+ max-width: 100% !important;
48
78
  }
49
79
 
50
80
  /* Reportline en absolu pour ne pas impacter le layout */
@@ -59,10 +89,6 @@
59
89
  }
60
90
 
61
91
  /* ── État vide ────────────────────────────────────────────────────────────── */
62
- /*
63
- Ajouté après le délai d'empty-check si aucun fill détecté.
64
- Collapse à 1px : réserve minimale, reste observable par l'IO.
65
- */
66
92
  .nodebb-ezoic-wrap.is-empty {
67
93
  display: block !important;
68
94
  height: 1px !important;
@@ -73,8 +99,7 @@
73
99
  overflow: hidden !important;
74
100
  }
75
101
 
76
- /* Anti-faux-empty : si la pub est réellement là, on annule le collapse
77
- (support moderne; si non supporté, le JS enlève .is-empty) */
102
+ /* Anti-faux-empty : si une pub est là, on ne collapse pas */
78
103
  .nodebb-ezoic-wrap.is-empty:has(iframe),
79
104
  .nodebb-ezoic-wrap.is-empty:has([data-google-container-id]),
80
105
  .nodebb-ezoic-wrap.is-empty:has(div[id$="__container__"]) {
@@ -84,45 +109,63 @@
84
109
  overflow: visible !important;
85
110
  }
86
111
 
87
- /* ── Anti décalage horizontal sur desktop (largeurs fixes 970px, etc.) ───── */
88
-
89
- /* Les wraps/placeholder ne doivent jamais créer de largeur fantôme */
90
- .nodebb-ezoic-wrap,
91
- .nodebb-ezoic-wrap > [id^="ezoic-pub-ad-placeholder-"] {
92
- width: 100% !important;
93
- max-width: 100% !important;
94
- }
112
+ /* ── Fix: Ezoic "adaptive/multi" qui force 970px & multi-annonces ────────── */
113
+ /*
114
+ Certains placements "adaptive/multi" gardent des inline styles:
115
+ width/min-width: 970px + display:flex + plusieurs blocs 300x250.
116
+ Ce n'est pas souhaité -> on:
117
+ - neutralise les largeurs forcées
118
+ - empêche l'affichage multi en ne gardant que le 1er slot rendu
119
+ - force une mise en page "1 annonce centrée"
120
+ */
95
121
 
96
- /* Le conteneur Ezoic : centré, largeur auto, jamais > 100% */
97
- .nodebb-ezoic-wrap .ezoic-ad,
98
- .nodebb-ezoic-wrap span.ezoic-ad {
99
- display: block !important;
122
+ /* Neutralise les inline width/min-width (970px) sur ces wrappers */
123
+ .nodebb-ezoic-wrap .ezoic-ad-adaptive,
124
+ .nodebb-ezoic-wrap .adtester-container,
125
+ .nodebb-ezoic-wrap [class*="Content-multi-"] {
100
126
  width: auto !important;
127
+ min-width: 0 !important;
101
128
  max-width: 100% !important;
102
- margin-left: auto !important;
103
- margin-right: auto !important;
104
129
  box-sizing: border-box !important;
105
130
  }
106
131
 
107
- /* Containers Google (souvent inline-block avec width fixe) : on les laisse auto mais on borne */
108
- .nodebb-ezoic-wrap div[id$="__container__"],
109
- .nodebb-ezoic-wrap [id^="google_ads_iframe_"][id$="__container__"] {
132
+ /* Ces wrappers sont souvent en flex -> on les remet en bloc centrable */
133
+ .nodebb-ezoic-wrap .ezoic-ad-adaptive,
134
+ .nodebb-ezoic-wrap .adtester-container {
110
135
  display: block !important;
111
- width: auto !important;
112
- max-width: 100% !important;
113
136
  margin-left: auto !important;
114
137
  margin-right: auto !important;
115
- overflow: hidden !important; /* coupe ce qui dépasse sans décaler la page */
116
- box-sizing: border-box !important;
117
138
  }
118
139
 
119
- /* Iframes : auto + max-width pour éviter le dépassement / décalage */
120
- .nodebb-ezoic-wrap iframe {
121
- display: block !important;
122
- width: auto !important;
123
- max-width: 100% !important;
124
- margin-left: auto !important;
125
- margin-right: auto !important;
140
+ /* Si Ezoic met plusieurs "Content-multi-XXX" dans le même placeholder:
141
+ on masque toutes les occurrences sauf la première. */
142
+ .nodebb-ezoic-wrap [class*="Content-multi-"] ~ [class*="Content-multi-"] {
143
+ display: none !important;
144
+ }
145
+
146
+ /* Si plusieurs containers Google sont présents (multi slots), on masque tout sauf le premier */
147
+ .nodebb-ezoic-wrap div[id$="__container__"] ~ div[id$="__container__"] {
148
+ display: none !important;
149
+ }
150
+
151
+ /* ── Mobile: éviter tout débordement horizontal ──────────────────────────── */
152
+ @media (max-width: 767px) {
153
+ /* On s'assure que les wrappers ne gardent pas de min-width forcé */
154
+ .nodebb-ezoic-wrap .ezoic-ad,
155
+ .nodebb-ezoic-wrap span.ezoic-ad,
156
+ .nodebb-ezoic-wrap .ezoic-ad-adaptive,
157
+ .nodebb-ezoic-wrap .adtester-container,
158
+ .nodebb-ezoic-wrap [class*="Content-multi-"] {
159
+ min-width: 0 !important;
160
+ width: auto !important;
161
+ max-width: 100% !important;
162
+ }
163
+
164
+ /* Si un thème parent clippe encore, on préfère un scroll interne au rognage */
165
+ .nodebb-ezoic-wrap > [id^="ezoic-pub-ad-placeholder-"] {
166
+ overflow-x: auto !important;
167
+ -webkit-overflow-scrolling: touch;
168
+ }
126
169
  }
127
170
 
128
171
  /* ── Ezoic global (hors de nos wraps) ────────────────────────────────────── */