PageSourceSearch

https://7thsense.one/themes/seventhsense/assets/vendor/glow-cookies/glowCookies.js

js 7thsense.one collected 2026-10-01 15:35:49 UTC 22,864 bytes, 486 lines download raw bytes

1/*
2    GLOW COOKIES
3    CREATED BY MANUEL CARRILLO
4    https://github.com/manucaralmo/GlowCookies
5    2021 - v 3.1.3
6*/
7
8class GlowCookies {
9  constructor() {
10    // Cookies banner
11    this.banner = undefined
12    // Config
13    this.config = undefined
14    this.tracking = undefined
15    // DOM ELEMENTS
16    this.PreBanner = undefined
17    this.Cookies = undefined
18    this.DOMbanner = undefined
19  }
20
21  render() {
22    this.addCss()
23    this.createDOMElements()
24    this.checkStatus()
25  }
26
27  addCss() {
28    const stylesheet = document.createElement('link');
29    stylesheet.setAttribute('rel', 'stylesheet');
30    stylesheet.setAttribute('href', `https://cdn.jsdelivr.net/gh/manucaralmo/[email protected]/src/glowCookies.min.css`);
31    document.head.appendChild(stylesheet);
32  }
33
34  createDOMElements() {
35    // COOKIES BUTTON
36    this.PreBanner = document.createElement("div");
37    this.PreBanner.innerHTML = `<button type="button" id="prebannerBtn" class="prebanner prebanner__border__${this.config.bannerStyle} glowCookies__${this.config.position} glowCookies__${this.config.border} animation" style="color: ${this.banner.manageCookies.color}; background-color: ${this.banner.manageCookies.background};">
38                                    <svg fill="currentColor" style="margin-right: 7px; margin-top: 2px; vertical-align: text-top;" height="15px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
39                                        <path d="M510.52 255.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45-27.26-4.14-55.13.3-79.72 12.82l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.27a132.521 132.521 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.15c27.51 4.36 55.7-.11 80.53-12.76l69.13-35.21a132.273 132.273 0 0 0 57.79-57.81l35.1-68.88c12.56-24.64 17.01-52.58 12.91-79.91zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"/>
39
40                                    </svg>${this.banner.manageCookies.text}</button>`;
41    this.PreBanner.style.display = "none";
42    document.body.appendChild(this.PreBanner);
43
44    // COOKIES BANNER
45    this.Cookies = document.createElement("div");
46    this.Cookies.innerHTML = `<div 
47                                    id="glowCookies-banner" 
48                                    class="glowCookies__banner glowCookies__banner__${this.config.bannerStyle} glowCookies__${this.config.border} glowCookies__${this.config.position}"
49                                    style="background-color: ${this.banner.background};"
50                                >
51                                    <h3 style="color: ${this.banner.color};">${this.banner.heading}</h3>
52                                    <p style="color: ${this.banner.color};">
53                                        ${this.banner.description} 
54                                        <a 
55                                            href="${this.banner.link}"
56                                            target="_blank" 
57                                            class="read__more"
58                                            style="color: ${this.banner.color};"
59                                        >
60                                            ${this.banner.linkText}
61                                        </a>
62                                    </p>
63                                    <div class="btn__section">
64                                        <button type="button" id="acceptCookies" class="btn__accept accept__btn__styles" style="color: ${this.banner.acceptBtn.color}; background-color: ${this.banner.acceptBtn.background};">
65                                            ${this.banner.acceptBtn.text}
66                                        </button>
67                                        <button type="button" id="rejectCookies" class="btn__settings settings__btn__styles" style="color: ${this.banner.rejectBtn.color}; background-color: ${this.banner.rejectBtn.background};">
68                                            ${this.banner.rejectBtn.text}
69                                        </button>
70                                    </div>
71                                </div>
72                            `;
73    document.body.appendChild(this.Cookies);
74    this.DOMbanner = document.getElementById('glowCookies-banner')
75
76
77    // SET EVENT LISTENERS
78    document.getElementById('prebannerBtn').addEventListener('click', () => this.openSelector())
79    document.getElementById('acceptCookies').addEventListener('click', () => this.acceptCookies())
80    document.getElementById('rejectCookies').addEventListener('click', () => this.rejectCookies())
81  }
82
83  checkStatus() {
84    switch (localStorage.getItem("GlowCookies")) {
85      case "1":
86        this.openManageCookies();
87        this.activateTracking();
88        this.addCustomScript();
89        break;
90      case "0":
91        this.openManageCookies();
92        break;
93      default:
94        this.openSelector();
95    }
96  }
97
98  openManageCookies() {
99    this.PreBanner.style.display = this.config.hideAfterClick ? "none" : "block"
100    this.DOMbanner.classList.remove('glowCookies__show')
101  }
102
103  openSelector() {
104    this.PreBanner.style.display = "none";
105    this.DOMbanner.classList.add('glowCookies__show')
106  }
107
108  acceptCookies() {
109    localStorage.setItem("GlowCookies", "1")
110    this.openManageCookies()
111    this.activateTracking()
112    this.addCustomScript()
113  }
114
115  rejectCookies() {
116    localStorage.setItem("GlowCookies", "0");
117    this.openManageCookies();
118    this.disableTracking();
119  }
120
121  activateTracking() {
122    // Google Analytics Tracking
123    if (this.tracking.AnalyticsCode) {
124      let Analytics = document.createElement('script');
125      Analytics.setAttribute('src', `https://www.googletagmanager.com/gtag/js?id=${this.tracking.AnalyticsCode}`);
126      document.head.appendChild(Analytics);
127      let AnalyticsData = document.createElement('script');
128      AnalyticsData.text = `window.dataLayer = window.dataLayer || [];
129                                function gtag(){dataLayer.push(arguments);}
130                                gtag('js', new Date());
131                                gtag('config', '${this.tracking.AnalyticsCode}');`;
132      document.head.appendChild(AnalyticsData);
133    }
134
135    // Facebook pixel tracking code
136    if (this.tracking.FacebookPixelCode) {
137      let FacebookPixelData = document.createElement('script');
138      FacebookPixelData.text = `
139                                    !function(f,b,e,v,n,t,s)
140                                    {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
141                                    n.callMethod.apply(n,arguments):n.queue.push(arguments)};
142                                    if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
143                                    n.queue=[];t=b.createElement(e);t.async=!0;
144                                    t.src=v;s=b.getElementsByTagName(e)[0];
145                                    s.parentNode.insertBefore(t,s)}(window, document,'script',
146                                    'https://connect.facebook.net/en_US/fbevents.js');
147                                    fbq('init', '${this.tracking.FacebookPixelCode}');
148                                    fbq('track', 'PageView');
149                                `;
150      document.head.appendChild(FacebookPixelData);
151      let FacebookPixel = document.createElement('noscript');
152      FacebookPixel.setAttribute('height', `1`);
153      FacebookPixel.setAttribute('width', `1`);
154      FacebookPixel.setAttribute('style', `display:none`);
155      FacebookPixel.setAttribute('src', `https://www.facebook.com/tr?id=${this.tracking.FacebookPixelCode}&ev=PageView&noscript=1`);
156      document.head.appendChild(FacebookPixel);
157    }
158
159    // Hotjar Tracking
160    if (this.tracking.HotjarTrackingCode) {
161      let hotjarTrackingData = document.createElement('script');
162      hotjarTrackingData.text = `
163                                (function(h,o,t,j,a,r){
164                                    h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};
165                                    h._hjSettings={hjid:${this.tracking.HotjarTrackingCode},hjsv:6};
166                                    a=o.getElementsByTagName('head')[0];
167                                    r=o.createElement('script');r.async=1;
168                                    r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;
169                                    a.appendChild(r);
170                                })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');
171                                `;
172      document.head.appendChild(hotjarTrackingData);
173    }
174  }
175
176  disableTracking() {
177    // Google Analytics Tracking ('client_storage': 'none')
178    if (this.tracking.AnalyticsCode) {
179      let Analytics = document.createElement('script');
180      Analytics.setAttribute('src', `https://www.googletagmanager.com/gtag/js?id=${this.tracking.AnalyticsCode}`);
181      document.head.appendChild(Analytics);
182      let AnalyticsData = document.createElement('script');
183      AnalyticsData.text = `window.dataLayer = window.dataLayer || [];
184                        function gtag(){dataLayer.push(arguments);}
185                        gtag('js', new Date());
186                        gtag('config', '${this.tracking.AnalyticsCode}' , {
187                            'client_storage': 'none',
188                            'anonymize_ip': true
189                        });`;
190      document.head.appendChild(AnalyticsData);
191    }
192
193    // Clear cookies - not working 100%
194    this.clearCookies()
195  }
196
197  clearCookies() {
198    let cookies = document.cookie.split("; ");
199    for (let c = 0; c < cookies.length; c++) {
200      let d = window.location.hostname.split(".");
201      while (d.length > 0) {
202        let cookieBase = encodeURIComponent(cookies[c].split(";")[0].split("=")[0]) + '=; expires=Thu, 01-Jan-1970 00:00:01 GMT; domain=' + d.join('.') + ' ;path=';
203        let p = location.pathname.split('/');
204        document.cookie = cookieBase + '/';
205        while (p.length > 0) {
206          document.cookie = cookieBase + p.join('/');
207          p.pop();
208        };
209        d.shift();
210      }
211    }
212  }
213
214  addCustomScript() {
215    if (this.tracking.customScript !== undefined) {
216      let customScriptTag
217
218      this.tracking.customScript.forEach(script => {
219        if (script.type === 'src') {
220          customScriptTag = document.createElement('script');
221          customScriptTag.setAttribute('src', script.content);
222        } else if (script.type === 'custom') {
223          customScriptTag = document.createElement('script');
224          customScriptTag.text = script.content;
225        }
226
227        if (script.position === 'head') {
228          document.head.appendChild(customScriptTag);
229        } else {
230          document.body.appendChild(customScriptTag);
231        }
232      })
233    }
234  }
235
236  start(languaje, obj) {
237    if (!obj) obj = {}
238    const lang = new LanguagesGC(languaje)
239
240    this.config = {
241      border: obj.border || 'border',
242      position: obj.position || 'left',
243      hideAfterClick: obj.hideAfterClick || false,
244      bannerStyle: obj.style || 2
245    }
246
247    this.tracking = {
248      AnalyticsCode: obj.analytics || undefined,
249      FacebookPixelCode: obj.facebookPixel || undefined,
250      HotjarTrackingCode: obj.hotjar || undefined,
251      customScript: obj.customScript || undefined
252    }
253
254    this.banner = {
255      description: obj.bannerDescription || lang.bannerDescription,
256      linkText: obj.bannerLinkText || lang.bannerLinkText,
257      link: obj.policyLink || '#link',
258      background: obj.bannerBackground || '#fff',
259      color: obj.bannerColor || '#1d2e38',
260      heading: obj.bannerHeading !== 'none' ? obj.bannerHeading || lang.bannerHeading : '',
261      acceptBtn: {
262        text: obj.acceptBtnText || lang.acceptBtnText,
263        background: obj.acceptBtnBackground || '#253b48',
264        color: obj.acceptBtnColor || '#fff'
265      },
266      rejectBtn: {
267        text: obj.rejectBtnText || lang.rejectBtnText,
268        background: obj.rejectBtnBackground || '#E8E8E8',
269        color: obj.rejectBtnColor || '#636363'
270      },
271      manageCookies: {
272        color: obj.manageColor || '#1d2e38',
273        background: obj.manageBackground || '#fff',
274        text: obj.manageText || lang.manageText,
275      }
276    }
277
278    // Draw banner
279    window.addEventListener('load', () => { this.render() })
280  }
281}
282
283class LanguagesGC {
284  constructor(code) {
285    this.init()
286    let lang = this.arrLang[code] || this.arrLang['en']
287    this.bannerHeading = lang['bannerHeading']
288    this.bannerDescription = lang['bannerDescription']
289    this.bannerLinkText = lang['bannerLinkText']
290    this.acceptBtnText = lang['acceptBtnText']
291    this.rejectBtnText = lang['rejectBtnText']
292    this.manageText = lang['manageText']
293  }
294
295  init() {
296    this.arrLang = {
297      af: {
298        'bannerHeading': 'Ons gebruik koekies',
299        'bannerDescription': 'Ons gebruik ons eie koekies en die van derdepartye, om inhoud te verpersoonlik en om webverkeer te ontleed.',
300        'bannerLinkText': 'Lees meer oor koekies',
301        'acceptBtnText': 'Aanvaar koekies',
302        'rejectBtnText': 'Weier',
303        'manageText': 'Koekie-instellings'
304      },
305      bg: {
306        'bannerHeading': 'Ние използваме бисквитки',
307        'bannerDescription': 'Използваме наши и бисквитки на трети страни, за да запазим Вашите предпочитания и да събираме аналитични данни.',
308        'bannerLinkText': 'Прочетете повече за бисквитките',
309        'acceptBtnText': 'Приеми бисквитките',
310        'rejectBtnText': 'Откажи',
311        'manageText': 'Настрой бисквитките'
312      },
313      de: {
314        'bannerHeading': 'Verwendung von Cookies',
315        'bannerDescription': 'Wir nutzen Cookies (auch von Drittanbietern), um Inhalte zu personalisieren und Surfverhalten zu analysieren.',
316        'bannerLinkText': 'Mehr über Cookies',
317        'acceptBtnText': 'Cookies akzeptieren',
318        'rejectBtnText': 'Ablehnen',
319        'manageText': 'Cookies verwalten'
320      },
321      en: {
322        'bannerHeading': 'We use cookies',
323        'bannerDescription': 'We use our own and third-party cookies to personalize content and to analyze web traffic.',
324        'bannerLinkText': 'Read more about cookies',
325        'acceptBtnText': 'Accept cookies',
326        'rejectBtnText': 'Reject',
327        'manageText': 'Manage cookies'
328      },
329      sv: {
330        'bannerHeading': 'Vi använder cookies',
331        'bannerDescription' : 'Vi använder våra egna och tredjepartscookies för att personalisera innehåll och till statistik.',
332        'bannerLinkText' : 'Läs mer om cookies',
333        'acceptBtnText' : 'Acceptera cookies',
334        'rejectBtnText' : 'Avslå',
335        'manageText' : 'Hantera cookies'
336      },
337      no: {
338        'bannerHeading': 'Vi benytter cookies',
339        'bannerDescription' : 'Vi benytter våre egne og tredjepartscookies for å personalisere innehold og til statistikk.',
340        'bannerLinkText' : 'Les mer om cookies',
341        'acceptBtnText' : 'Aksepter cookies',
342        'rejectBtnText' : 'Avslå',
343        'manageText' : 'HÃ¥ndter cookies'
344      },
345      da: {
346        'bannerHeading': 'Vi bruger cookies',
347        'bannerDescription' : 'Vi bruger vores egne og tredjepartscookies til at tilpasse indhold og måle statistik.',
348        'bannerLinkText' : 'Læs mere om cookies',
349        'acceptBtnText' : 'Accepter cookies',
350        'rejectBtnText' : 'Afvis',
351        'manageText' : 'Administrer cookies'
352      },
353      es: {
354        'bannerHeading': 'Uso de cookies',
355        'bannerDescription': 'Utilizamos cookies propias y de terceros para personalizar el contenido y para analizar el tráfico de la web.',
356        'bannerLinkText': 'Ver más sobre las cookies',
357        'acceptBtnText': 'Aceptar cookies',
358        'rejectBtnText': 'Rechazar',
359        'manageText': 'Cookies'
360      },
361      fr: {
362        'bannerHeading': 'Nous utilisons des cookies',
363        'bannerDescription': 'Nous utilisons nos propres cookies et ceux de tiers pour adapter le contenu et analyser le trafic web.',
364        'bannerLinkText': 'En savoir plus sur les cookies',
365        'acceptBtnText': 'Accepter les cookies',
366        'rejectBtnText': 'Refuser',
367        'manageText': 'Paramétrez les cookies'
368      },
369      it: {
370        'bannerHeading': 'Utilizziamo i cookie',
371        'bannerDescription': 'Utilizziamo cookie nostri e di terze parti per personalizzare il contenuto e analizzare il traffico web.',
372        'bannerLinkText': 'Per saperne di più riguardo i cookie',
373        'acceptBtnText': 'Accetta i cookie',
374        'rejectBtnText': 'Rifiuta',
375        'manageText': 'Gestisci i cookie'
376      },
377      mg: {
378        'bannerHeading': 'Izahay dia mampiasa cookies',
379        'bannerDescription': "Mampiasa ny cookies anay manokana sy ireo an'ny antoko fahatelo izahay hampifanarahana ny atiny sy hamakafaka ny fivezivezena amin'ny tranonkala.",
380        'bannerLinkText': 'Maniry halala bebe kokoa momba ny cookies',
381        'acceptBtnText': 'Manaiky ireo cookies',
382        'rejectBtnText': 'Tsy mety',
383        'manageText': 'Hamboarina ny cookies'
384      },
385      nl: {
386        'bannerHeading': 'We gebruiken cookies',
387        'bannerDescription': 'We gebruiken onze en third-party cookies om content te personaliseren en web traffic te analyseren.',
388        'bannerLinkText': 'Lees meer over cookies',
389        'acceptBtnText': 'Cookies accepteren',
390        'rejectBtnText': 'Weigeren',
391        'manageText': 'Cookies beheren'
392      },
393      oc: {
394        'bannerHeading': 'Utilizam de cookies',
395        'bannerDescription': 'Utilizam nòstres pròpris cookies e de cookies tèrces per adaptar lo contengut e analisar lo trafic web.',
396        'bannerLinkText': 'Ne saber mai suls cookies',
397        'acceptBtnText': 'Acceptar los cookies',
398        'rejectBtnText': 'Refusar',
399        'manageText': 'Configurar los cookies'
400      },        
401      pl: {
402        'bannerHeading': 'Używamy plików cookie',
403        'bannerDescription': 'Ta strona używa plików cookie - zarówno własnych, jak i od zewnętrznych dostawców, w celu personalizacji treści i analizy ruchu.',
404        'bannerLinkText': 'Więcej o plikach cookie',
405        'acceptBtnText': 'Zaakceptuj pliki cookie',
406        'rejectBtnText': 'Odrzuć',
407        'manageText': 'Ustawienia plików cookie'
408      },
409      pt_BR: {
410        'bannerHeading': 'Uso de cookies',
411        'bannerDescription': 'Usamos cookies próprios e de terceiros para personalizar o conteúdo e analisar o tráfego da web.',
412        'bannerLinkText': 'Leia mais sobre os cookies',
413        'acceptBtnText': 'Aceitar cookies',
414        'rejectBtnText': 'Rejeitar',
415        'manageText': 'Gerenciar cookies'
416      },
417      ru: {
418        'bannerHeading': 'Позвольте использовать куки?',
419        'bannerDescription': 'Мы используем собственные и сторонние куки для персонализации контента и анализа веб-трафика.',
420        'bannerLinkText': 'Узнать больше про куки.',
421        'acceptBtnText': 'Ок, используйте',
422        'rejectBtnText': 'Не разрешаю',
423        'manageText': 'Разрешите использовать куки?'
424      },
425      sk: {
426        'bannerHeading': 'Používame cookies',
427        'bannerDescription': 'Na prispôsobenie obsahu a analýzu webovej stránky používame vlastné cookies a cookies tretích strán.',
428        'bannerLinkText': 'Čo sú cookies?',
429        'acceptBtnText': 'Povoliť cookies',
430        'rejectBtnText': 'Nepovoliť',
431        'manageText': 'Spravovať cookies'
432      },
433      th: {
434        'bannerHeading': 'Cookies',
435        'bannerDescription': 'พวกเราใช้คุà¸
435à¸à¸µà¹‰à¸šà¸¸à¸„คลที่สาม เพื่อปรับแต่งเนื้อหาและวิเคราะห์การเข้าชมเว็บ',
436        'bannerLinkText': 'อ่านเพิ่มเติมเกี่ยวกับคุกกี้',
437        'acceptBtnText': 'ยอมรับคุกกี้',
438        'rejectBtnText': 'ปฏิเสธคุกกี้',
439        'manageText': 'Cookies'
440      },
441      tr: {
442        'bannerHeading': 'Çerez kullanımı',
443        'bannerDescription': 'İçeriği kişiselleştirmek ve web trafiğini analiz etmek için kendi ve üçüncü taraf çerezlerimizi kullanıyoruz.',
444        'bannerLinkText': 'Çerezler hakkında daha fazlasını okuyun',
445        'acceptBtnText': 'Çerezleri kabul et',
446        'rejectBtnText': 'Reddet',
447        'manageText': 'Çerezleri yönet'
448      },
449      uk: {
450        'bannerHeading': 'Ми використовуємо кукі',
451        'bannerDescription': 'Ми використовуємо власні та сторонні cookie для персоналізації досвіду користування та аналізу веб-трафіку.',
452        'bannerLinkText': 'Дізнайтеся більше про cookie',
453        'acceptBtnText': 'Прийняти',
454        'rejectBtnText': 'Відхилити',
455        'manageText': 'Налаштування cookie'
456      },
457      ja: {
458        'bannerHeading': 'Cookies を使用しています',
459        'bannerDescription': '私たちは、コンテンツのパーソナライズやトラフィックの分析のために、独自およびサードパーティー製 Cookies を使用しています。',
460        'bannerLinkText': 'Cookiesについて詳しく見る',
461        'acceptBtnText': 'Cookiesを受け入れる',
462        'rejectBtnText': '拒否',
463        'manageText': 'cookies管理'
464      },
465      zh_TW: {
466        'bannerHeading': '我們使用 Cookies',
467        'bannerDescription' : '我們使用了自己和第三方的 cookies 來個人化您的內容和分析網頁的流量。',
468        'bannerLinkText' : '閱讀更多關於 cookies',
469        'acceptBtnText' : '同意 cookies',
470        'rejectBtnText' : '拒絕',
471        'manageText' : '管理 cookies'
472      },
473      zh: {
474        'bannerHeading': '我们使用 Cookies',
475        'bannerDescription': '我们使用了自己和第三方的 cookies 来个性化您的内容和分析网页的流量。',
476        'bannerLinkText': '阅读更多关于 cookies',
477        'acceptBtnText': '同意 cookies',
478        'rejectBtnText': '拒绝',
479        'manageText': '管理 cookies'
480      }
481    }
482  }
483
484}
485
486const glowCookies = new GlowCookies()

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.