1
1
import React , { useEffect , useRef } from 'react' ;
2
2
import { useRouter } from 'next/router' ;
3
3
4
- declare global {
5
- interface Window {
6
- _carbonads : {
7
- refresh : ( ) => void ;
8
- reload : ( where : string , force_serve : boolean ) => void ;
9
- remove : ( el : HTMLElement ) => void ;
10
- srv : ( ) => void ;
11
- } ;
12
- }
13
- }
14
-
15
4
type Props = {
16
5
className ?: string ;
17
6
variant ?: 'sidebar' ;
@@ -22,41 +11,28 @@ function CarbonAds({ className, variant = 'sidebar' }: Props) {
22
11
const router = useRouter ( ) ;
23
12
24
13
useEffect ( ( ) => {
25
- const mobileMediaQuery = window . matchMedia ( '(max-width: 1023px)' ) ;
26
- if ( ! mobileMediaQuery . matches ) {
27
- const hasCarbonAds = document . querySelector ( '#carbonads' ) ;
28
- // Check if another ad is present to refresh
29
- if ( hasCarbonAds ) {
30
- window . _carbonads . refresh ( ) ;
31
- return ;
32
- } else {
33
- // Check if the script is present (ad is not yet present) so that duplicate requests are not made to carbon ads
34
- const hasCarbonAdsScript = document . querySelector ( '#_carbonads_js' ) ;
35
- if ( ! hasCarbonAdsScript ) {
36
- const carbonAdsScript = document . createElement ( 'script' ) ;
37
- carbonAdsScript . id = '_carbonads_js' ;
38
- carbonAdsScript . type = 'text/javascript' ;
39
- carbonAdsScript . async = true ;
40
- document
41
- . querySelector ( '#carbonads-container' )
42
- ?. appendChild ( carbonAdsScript ) ;
43
- carbonAdsScript . src = `//cdn.carbonads.com/carbon.js?serve=CE7I627Y&placement=json-schemaorg&rnd=${ Math . random ( ) } ` ;
44
- }
45
- }
14
+ const hasCarbonAdsScript = document . querySelector ( '#_carbonads_js' ) ;
15
+ if ( ! hasCarbonAdsScript ) {
16
+ const carbonAdsScript = document . createElement ( 'script' ) ;
17
+ carbonAdsScript . id = '_carbonads_js' ;
18
+ carbonAdsScript . type = 'text/javascript' ;
19
+ carbonAdsScript . async = true ;
20
+ document
21
+ . querySelector ( '#carbonads-container' )
22
+ ?. appendChild ( carbonAdsScript ) ;
23
+ carbonAdsScript . src = `//cdn.carbonads.com/carbon.js?serve=CE7I627Y&placement=json-schemaorg&rnd=${ Math . random ( ) } ` ;
24
+ }
46
25
47
- const existingStyleSheet = document . querySelector ( '#_carbonads_css' ) ;
48
- if ( existingStyleSheet ) {
49
- existingStyleSheet . innerHTML = CarbonAds . stylesheet [ variant ] ;
50
- } else {
51
- const carbonAdsStyleSheet = document . createElement ( 'style' ) ;
52
- carbonAdsStyleSheet . id = '_carbonads_css' ;
53
- carbonAdsStyleSheet . innerHTML = CarbonAds . stylesheet [ variant ] ;
54
- document
55
- . querySelector ( '#carbonads-container' )
56
- ?. appendChild ( carbonAdsStyleSheet ) ;
57
- }
26
+ const existingStyleSheet = document . querySelector ( '#_carbonads_css' ) ;
27
+ if ( existingStyleSheet ) {
28
+ existingStyleSheet . innerHTML = CarbonAds . stylesheet [ variant ] ;
58
29
} else {
59
- ( carbonRef . current as HTMLElement ) . style . display = 'none' ;
30
+ const carbonAdsStyleSheet = document . createElement ( 'style' ) ;
31
+ carbonAdsStyleSheet . id = '_carbonads_css' ;
32
+ carbonAdsStyleSheet . innerHTML = CarbonAds . stylesheet [ variant ] ;
33
+ document
34
+ . querySelector ( '#carbonads-container' )
35
+ ?. appendChild ( carbonAdsStyleSheet ) ;
60
36
}
61
37
} , [ router . asPath ] ) ;
62
38
@@ -115,6 +91,12 @@ CarbonAds.stylesheet = {
115
91
margin-top: 4px;
116
92
color: rgb(100 116 139);
117
93
}
94
+
95
+ @media (max-width: 1023px) {
96
+ #carbonads-container {
97
+ display: none;
98
+ }
99
+ }
118
100
` ,
119
101
} ;
120
102
0 commit comments