const setDefaultConsentState = require('setDefaultConsentState'); const updateConsentState = require('updateConsentState'); const callInWindow = require('callInWindow'); const getUrl = require('getUrl'); const gtagSet = require('gtagSet'); const getCookieValues = require('getCookieValues'); const JSON = require('JSON'); const makeInteger = require('makeInteger'); const injectScript = require('injectScript'); const encodeUriComponent = require('encodeUriComponent'); const queryPermission = require('queryPermission'); const getLanguage = function() { const defaultLanguage = data.language; const language_settings = data.language_settings; const languageData = data[language_settings]; // returns default language when "none" option is chosen // or when any option target has falsy value if(language_settings === "none" || !languageData) return defaultLanguage; // handles languages for each provided domain if(language_settings === "different_for_specific_domain") { const websiteCanonicalDomain = getUrl("href"); const matchedLanguage = languageData.filter(function(el) { return websiteCanonicalDomain.indexOf(el.domain_column) !== -1; }); return matchedLanguage.length !== 0 ? matchedLanguage[0].language_column : defaultLanguage; } // returns language from GTM variable return data[language_settings]; }; /* * Called when consent changes. Assumes that consent object contains keys which * directly correspond to Google consent types. */ const onUserConsent = (consent) => { const marketingConsent = consent.cookie_cat_marketing ? 'granted' : 'denied'; const analyticsStorage = consent.cookie_cat_statistic ? 'granted' : 'denied'; const functionalityStorage = consent.cookie_cat_functional ? 'granted' : 'denied'; const personalizationStorage = consent.cookie_cat_functional ? 'granted' : 'denied'; const securityStorage = 'granted'; const consentModeStates = { ad_storage: marketingConsent, ad_user_data: marketingConsent, ad_personalization: marketingConsent, analytics_storage: analyticsStorage, functionality_storage: functionalityStorage, personalization_storage: personalizationStorage, security_storage: securityStorage, }; updateConsentState(consentModeStates); gtagSet({ 'ads_data_redaction': marketingConsent === 'denied' && !!data.ads_data_redaction, 'url_passthrough': !!data.url_passthrough, 'developer_id.dNmIyNz': true }); }; const setSettings = (rowSetting) => ({ ad_storage: rowSetting.ad_storage || 'denied', ad_user_data: rowSetting.ad_user_data || 'denied', ad_personalization: rowSetting.ad_personalization || 'denied', analytics_storage: rowSetting.analytics_storage || 'denied', functionality_storage: rowSetting.functionality_storage || 'denied', personalization_storage: rowSetting.personalization_storage || 'denied', security_storage: rowSetting.security_storage || 'denied', wait_for_update: makeInteger(data.wait_for_update) || 500, }); const handleDefaultsSettingsWithRegions = (settingsRows) => { let isGlobalRegionsDefaultsSet = false; settingsRows.forEach((row) => { let settings = {}; // means that user adjusted global defaults - for rest regions if(row.region.trim() === '') { isGlobalRegionsDefaultsSet = true; settings = setSettings(row); } else { settings = setSettings(row); settings.region = row.region.split(",").map(el => el.trim()); } setDefaultConsentState(settings); }); if(isGlobalRegionsDefaultsSet === false) { let globalDefaultSettings = {}; globalDefaultSettings = setSettings({}); setDefaultConsentState(globalDefaultSettings); } }; /* * Executes the default command, sets the developer ID */ const setDefaults = () => { const defaultSettings = data.defaultSettings || []; if(defaultSettings.length > 0) { handleDefaultsSettingsWithRegions(defaultSettings); } else { let defaultSettings = {}; defaultSettings = setSettings({}); setDefaultConsentState(defaultSettings); } /* * Optional settings using gtagSet */ gtagSet({ 'ads_data_redaction': !!data.ads_data_redaction, 'url_passthrough': !!data.url_passthrough, 'developer_id.dNmIyNz': true, }); }; /* * Sets up the consent update callback */ const main = () => { callInWindow('CookieInformation.addCustomEventListenerForGTMConsentModeTemplate', onUserConsent); data.gtmOnSuccess(); }; setDefaults(); if (data.inject_script) { const domainLanguage = getLanguage(); const scriptUrl = 'https://policy.app.cookieinformation.com/uc.js?language=' + encodeUriComponent(domainLanguage || 'default') + '&gcmEnabledByConsentLibrary=false'; if(queryPermission('inject_script', scriptUrl)) injectScript(scriptUrl, main, data.gtmOnFailure); else data.gtmOnFailure(); } else { main(); }
Explore the wild world of animals with fascinating wildlife facts, stunning discoveries, and inspiring stories that bring nature and the animal kingdom closer.