{"tags":[{"tagId":"b2b72c5c-2bc4-4480-9413-d8f79d6d8cad","tagTypeId":"custom_tag_type","name":"PT Games Grid Styling","description":"PT Games Grid Styling","config":{"beforeEndHead":"","beforeEndBody":""},"conditionIds":["036bdbb4-1bc3-47fe-a0ec-b04d34fc2801"]},{"tagId":"0d67dfd0-4bbe-43ed-8c64-57286edd86df","tagTypeId":"custom_tag_type","name":"Custom Styling","description":"Custom Styling","config":{"beforeEndHead":"\n ","beforeEndBody":""},"conditionIds":["feea99e9-c324-47d8-b041-7e19f4ef92de"]},{"tagId":"d9ac2dde-1780-4649-8624-028e52df9253","tagTypeId":"custom_js","name":"excludedCountriesSegmentation","description":"Exclude Games based on countries","config":{"code":"{\r\n (async () => {\r\n try {\r\n const playerData = await Playtech.API.user.getPlayerBasicData();\r\n const playerCountry = playerData.countrySetByGeoIp?.toUpperCase();\r\n\r\n if (!playerCountry) return;\r\n\r\n const config = await Playtech.API.game.getGamesConfiguration();\r\n const excludedGameCodes = [];\r\n\r\n for (const game of Object.values(config.games)) {\r\n if (!game.gameCustomFieldsData) continue;\r\n\r\n const exclusionField = game.gameCustomFieldsData.find(\r\n (field) => field.name === \"excludedCountries\"\r\n );\r\n\r\n if (exclusionField?.value) {\r\n const excludedCountries = exclusionField.value\r\n .split(\",\")\r\n .map((country) => country.trim().toUpperCase());\r\n\r\n if (excludedCountries.includes(playerCountry)) {\r\n excludedGameCodes.push(game.gameCode);\r\n }\r\n }\r\n }\r\n\r\n if (excludedGameCodes.length > 0) {\r\n Playtech.API.game.setExcludedGameCodes({ excludedGameCodes });\r\n }\r\n } catch (error) {\r\n }\r\n })();\r\n}\r\n"},"conditionIds":["13d49fc7-2011-4bd2-b108-d66cc0f9ccfc"]},{"tagId":"77d47f39-b272-49b1-839d-d68028d3f66a","tagTypeId":"custom_tag_type","name":"adaCustomLauncher","description":"ada hides","config":{"beforeEndHead":"","beforeEndBody":"\r\n\r\n
"},"conditionIds":["feea99e9-c324-47d8-b041-7e19f4ef92de"]},{"tagId":"e47bfbf5-1e47-4dac-9395-4b287ced5257","tagTypeId":"custom_tag_type","name":"Sportsbook GTM","description":"Sportsbook GTM","config":{"beforeEndHead":" \n \n","beforeEndBody":""},"conditionIds":["13d49fc7-2011-4bd2-b108-d66cc0f9ccfc"]},{"tagId":"00e3d9b7-4db6-4b16-ba72-6a7413a25953","tagTypeId":"custom_js","name":"adaChatBot","description":"Ada Chat Bot","config":{"code":"(() => {\r\n window.toggleAdaChat = () => {\r\n if (window.adaEmbed) {\r\n window.adaEmbed.toggle();\r\n }\r\n }\r\n\r\n let listenerAdded = false;\r\n let adaTagName = \"Adachatbot/proactive_bubbles\";\r\n let adaMetaVariable = \"next_answer_to_run\";\r\n var adaTokenValidationId = \"65aaaa90fcfd4f3607f68748\";\r\n var isCampaignTriggered = false;\r\n\r\n var resetAda = async (settings) => {\r\n await window.adaEmbed?.stop();\r\n await window.adaEmbed?.start(settings);\r\n };\r\n \r\n var toggledOnce = false;\r\n var handleDrawerToggleCallback = async (isDrawerOpen) => {\r\n if (Playtech.API.auth.isLoggedIn) {\r\n await updateAdaSettings();\r\n toggledOnce = true;\r\n }\r\n };\r\n \r\n const language = Playtech.API.language.getCurrentLanguage().substring(0, 2);\r\n var defaultAdaSettings = {\r\n handle: '888casino',\r\n cluster: 'eu',\r\n language,\r\n toggleCallback: handleDrawerToggleCallback,\r\n conversationEndCallback: (e) => {\r\n toggledOnce = false;\r\n isCampaignTriggered = false;\r\n },\r\n metaFields: {},\r\n sensitiveMetaFields: {},\r\n };\r\n window.adaSettings = {\r\n ...defaultAdaSettings,\r\n };\r\n\r\n var getSettings = async () => {\r\n let metaFields = {};\r\n let sensitiveMetaFields = { jwt_token: \"\" };\r\n if (Playtech.API.auth.isLoggedIn) {\r\n let { firstName, lastName, email, username, vipLevel } =\r\n Playtech.fetchUserDetails();\r\n\r\n const response = await Playtech.API.server.getJWTToken();\r\n const jwtToken = response?.data?.jwtToken;\r\n\r\n metaFields = {\r\n name: [firstName, lastName].filter((v) => v).join(\" \"),\r\n first_name: firstName,\r\n last_name: lastName,\r\n email: email,\r\n user_id: username,\r\n vip_level: vipLevel,\r\n };\r\n sensitiveMetaFields = {\r\n jwt_token: jwtToken,\r\n };\r\n }\r\n\r\n return {\r\n ...defaultAdaSettings,\r\n metaFields,\r\n sensitiveMetaFields,\r\n };\r\n };\r\n\r\n var updateAdaSettings = async () => {\r\n const settings = await getSettings();\r\n window.adaSettings = {\r\n ...window.adaSettings,\r\n ...settings,\r\n };\r\n\r\n await Promise.all([\r\n window.adaEmbed?.setMetaFields(settings.metaFields),\r\n window.adaEmbed?.setSensitiveMetaFields(settings.sensitiveMetaFields),\r\n ]);\r\n\r\n // Only trigger the default greeting if not already shown and no campaign is triggered\r\n if (!toggledOnce && !isCampaignTriggered) {\r\n adaEmbed?.triggerAnswer(adaTokenValidationId);\r\n }\r\n };\r\n\r\n let script = document.createElement(\"script\");\r\n script.id = \"__ada\";\r\n script.setAttribute(\"data-handle\", defaultAdaSettings.handle);\r\n script.src = \"https://static.ada.support/embed2.js\";\r\n script.async = true;\r\n script.onerror = () => {\r\n console.error(\"Error loading Ada script\");\r\n };\r\n document.body.append(script);\r\n\r\n const proactiveTrigger = async ({ tag, value }) => {\r\n const settings = await getSettings();\r\n let metaFields = {\r\n ...(window.adaSettings.metaFields || {}),\r\n ...settings.metaFields,\r\n [adaMetaVariable]: value,\r\n };\r\n \r\n window.adaSettings = {\r\n ...window.adaSettings,\r\n ...settings,\r\n metaFields,\r\n };\r\n \r\n try {\r\n await Promise.all([\r\n window.adaEmbed?.setMetaFields(metaFields),\r\n window.adaEmbed?.setSensitiveMetaFields(settings.sensitiveMetaFields),\r\n ]);\r\n } catch (error) {\r\n console.error(\"Error setting metadata:\", error);\r\n }\r\n\r\n isCampaignTriggered = true;\r\n await window.adaEmbed.triggerCampaign(\"Proacitve_bubbles\");\r\n };\r\n \r\n const adaListener = async ({ tag, value, removed }) => {\r\n if (!removed && tag === adaTagName) {\r\n await proactiveTrigger({ tag, value });\r\n }\r\n };\r\n \r\n const listenToAdaTag = async () => {\r\n if (Playtech.API.user.isLoggedIn()) {\r\n const playerTags = await Playtech.API.user.getPlayerTags();\r\n \r\n const adaTag = playerTags?.data.tags.find(\r\n (tag) => tag.name === adaTagName\r\n );\r\n \r\n if (adaTag) {\r\n await proactiveTrigger({ tag: adaTag.name, value: adaTag.value });\r\n }\r\n \r\n if (!listenerAdded) {\r\n Playtech.on(\"player-tag-change\", adaListener);\r\n listenerAdded = true;\r\n }\r\n }\r\n };\r\n\r\n\r\n const initializeBasedOnLoginState = async () => {\r\n if (Playtech.API.user.isLoggedIn()) {\r\n const settings = await getSettings();\r\n const language = Playtech.API.language.getCurrentLanguage().substring(0, 2);\r\n await resetAda({...settings, language});\r\n await listenToAdaTag();\r\n }\r\n };\r\n\r\n initializeBasedOnLoginState();\r\n\r\n Playtech.on(Playtech.Events.LOGGED_IN, async () => {\r\n const language = Playtech.API.language.getCurrentLanguage().substring(0, 2);\r\n toggledOnce = false;\r\n isCampaignTriggered = false;\r\n const settings = await getSettings();\r\n await resetAda({...settings, language});\r\n await listenToAdaTag();\r\n });\r\n \r\n Playtech.on(Playtech.Events.LOGGED_OUT, async () => {\r\n const language = Playtech.API.language.getCurrentLanguage().substring(0, 2);\r\n isCampaignTriggered = false;\r\n await resetAda({...defaultAdaSettings, language});\r\n });\r\n\r\n Playtech.on(Playtech.Events.LANGUAGE_CHANGED, async (lang) => {\r\n const language = lang[0].substring(0, 2);\r\n window.adaEmbed?.setLanguage(language);\r\n if (Playtech.API.user.isLoggedIn()) {\r\n const settings = await getSettings();\r\n await resetAda({...settings, language});\r\n } else {\r\n await resetAda({...defaultAdaSettings, language});\r\n }\r\n });\r\n\r\n window.adaSettings.onAdaEmbedLoaded = () => {\r\n window.adaEmbed.subscribeEvent(\"ada:campaigns:opened\", () => {\r\n isCampaignTriggered = true;\r\n });\r\n };\r\n})(); "},"conditionIds":["13d49fc7-2011-4bd2-b108-d66cc0f9ccfc"]},{"tagId":"64c64cf2-2138-4dfb-af07-b73ed112fbe9","tagTypeId":"custom_js","name":"WrapperAppIntegrationWithPortal","description":"This tag integrates the webview inside the wrapper mobile app with Portal","config":{"code":"class Jn {\n static create(input) {\n const hexDigits = \"0123456789abcdef\";\n const result = [];\n\n for (let i = 0; i < 32; i++) {\n // If the input string has a character at this position counting from the end,\n // get its char code; otherwise, use 0.\n const charCode =\n input.length - i - 1 >= 0 ? input.charCodeAt(input.length - i - 1) : 0;\n // Determine the corresponding hex digit\n result[i] = hexDigits.substr(charCode % 16, 1);\n }\n\n return result.join(\"\");\n }\n}\n\nwindow.onDbAndroidNotificationReadyPromise.then(() => {\n const ezPushAppId = '67d1484afe9079181341d017';\n const imsApplicationName = '888casino1.com';\n const state = JSON.parse(DbAndroidNotification.getPushStatus());\n\n const updatePlaytechPush = (pushId) => {\n \n fetch(\"https://fe.techonlinecorp.com:4835/pt.openapi.push.devreg/registerDevice/1.0\", {\n \"headers\": {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n },\n \"body\": JSON.stringify({\n \"_id\": {\n \"hwid\": Jn.create(pushId),\n \"applicationId\": ezPushAppId\n },\n \"language\": \"en-GB\",\n \"platform\": 2,\n \"pushToken\": pushId,\n \"timeZone\": 3600\n }),\n \"method\": \"POST\",\n }).then(() => {\n Playtech.API.server.registerPushApplication({\n pushId: pushId,\n deviceId : Jn.create(pushId),\n application: imsApplicationName,\n deviceType: 'android'\n });\n }).catch(console.error);\n\n }\n\n Playtech.on('LOGGED_IN', () => {\n if (state.status === 'disabled') {\n DbAndroidNotification.requestPushPermission();\n } else {\n updatePlaytechPush(state.token);\n }\n });\n\n window.onDbAndroidNotificationPermissionChanged = (newState) => {\n updatePlaytechPush(state.token);\n };\n});"},"conditionIds":["13d49fc7-2011-4bd2-b108-d66cc0f9ccfc"]},{"tagId":"911349d1-d459-43d4-9277-9ad774ed60f4","tagTypeId":"custom_js","name":"UAE force english first time","description":"UAE force english first time","config":{"code":"(async () => {\n const apply = (country) => {\n if (country === 'AE') {\n const { origin, href, pathname, search, hash } = window.location;\n const arPrefix = `${origin}/ar/`;\n \n const newUrl = href.startsWith(arPrefix)\n ? href.replace(arPrefix, `${origin}/en/`)\n : `${origin}/en${pathname}${search}${hash}`;\n \n window.location.href = newUrl;\n }\n }\n\n const LOCAL_STORAGE_KEY = 'userLang';\n if (!firstTime || !localStorage.getItem(LOCAL_STORAGE_KEY) === '\"en_US\"') {\n return;\n }\n \n const urlParams = new URLSearchParams(window.location.search);\n if (window.location.pathname == '/en' || window.location.pathname.startsWith('/en')) return;\n \n let country = urlParams.get('forceGeoCountry') || (await Playtech.API.user.getGeoData()).country;\n if (!country) {\n const intervalId = setInterval(async () => {\n country = (await Playtech.API.user.getGeoData()).country;\n if (country) {\n clearInterval(intervalId);\n apply(country);\n }\n }, 1000);\n } else {\n apply(country);\n }\n})()"},"conditionIds":["13d49fc7-2011-4bd2-b108-d66cc0f9ccfc"]},{"tagId":"1d67c0f7-14f0-4e0b-822d-d29f27e8ab6f","tagTypeId":"custom_js","name":"Jumio Verification Check Tags ","description":"Jumio Verification Check Tags ","config":{"code":"(async () => {\n const ID = 'risk/doc/jumio_id_upload_requirement';\n const POA = 'risk/doc/jumio_poa_upload_requirement';\n const SOW = 'risk/doc/sow_upload_requirement';\n const BS = 'risk/doc/bs_upload_requirement';\n const DC = 'risk/doc/dc_upload_requirement';\n const order = [\n ID, \n POA, \n BS, \n DC, \n SOW\n ];\n\n const docType = {\n [ID]: 'ID_CARD',\n [POA]: 'UB',\n [SOW]: 'SOW',\n [BS]: 'BS',\n [DC]: 'DC'\n };\n\n async function checkTags() {\n if (!Playtech.API.auth.isLoggedIn) {\n // player not logged in\n return;\n }\n\n try {\n const response = await Playtech.API.user.getPlayerTags(order.join(','));\n const { tags = [] } = response?.data ?? {};\n\n if (tags.length === 0) {\n // no tags, all good\n return;\n }\n\n tags.some((tag) => {\n if (tag.value === 'required') {\n // only navigate once\n Playtech.API.common.navigate(`/verification?docType=${docType[tag.name]}`);\n\n Playtech.API.events.addEventListener('player-tag-change', async ({ detail: { tag, removed }}) => {\n if (docType[tag]) {\n Playtech.API.popup.closePageAsPopup();\n checkTags();\n }\n }, { once: true });\n \n return true;\n }\n \n return false;\n });\n } catch (error) {\n console.error(error);\n }\n }\n\n // do not run this on /verification page\n if (window.location.pathname.indexOf('/verification') > -1) {\n return;\n }\n\n Playtech.on('LOGGED_IN', () => {\n checkTags();\n}); })();\n"},"conditionIds":["036bdbb4-1bc3-47fe-a0ec-b04d34fc2801"]},{"tagId":"09ec98a0-15df-47af-8f3a-16e342b519c2","tagTypeId":"dynamic_client_type","name":"Dynamic client type","description":"Dynamic client type","config":{"clientTypeQueryStringPages":[{"page":"/deposit"},{"page":"/register"}],"clientTypeGroups":[{"clientType":"live","pages":[{"page":"/live-casino"},{"page":"/888-exclusive-games"}]},{"clientType":"casino","pages":[{"page":"/home"},{"page":"/slots"},{"page":"/new-games"},{"page":"/casino-games"},{"page":"/jackpots"}]},{"clientType":"sportsbook","pages":[{"page":"/sports"}]}]},"conditionIds":["13d49fc7-2011-4bd2-b108-d66cc0f9ccfc"]},{"tagId":"292e5610-8459-4d46-b593-22bf805e5a1a","tagTypeId":"custom_js","name":"PlayerTag portal/domain","description":"PlayerTag portal/domain","config":{"code":"Playtech.on('LOGGED_IN', () => { Playtech.API.user.setPlayerTags([{ name: 'portal/domain', value: window.location.hostname.split('.').slice(-2).join('.'), type: 'text', }] ); });\r\nPlaytech.on('REGISTRATION_COMPLETED', () => { Playtech.API.user.setPlayerTags([{ name: 'portal/domain', value: window.location.hostname.split('.').slice(-2).join('.'), type: 'text', }] ); });"},"conditionIds":["13d49fc7-2011-4bd2-b108-d66cc0f9ccfc"]},{"tagId":"8d311055-5036-4029-b09e-91bfc2f2298d","tagTypeId":"custom_js","name":"documentElement Player Tags","description":"documentElement Player Tags","config":{"code":"(() => {\r\n const dashToCamelCase = (str) => \r\n str.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());\r\n\r\n const capitalizeFirstLetter = (str) =>\r\n str.length === 0 ? str : str.charAt(0).toUpperCase() + str.slice(1);\r\n\r\n const setPlayerTags = (tags) => {\r\n tags.forEach(({ name, value }) => {\r\n try {\r\n const formattedName = capitalizeFirstLetter(dashToCamelCase(name.replaceAll('/', '-')));\r\n document.documentElement.dataset[`tag${formattedName}`] = value ?? '';\r\n } catch (error) {\r\n console.error(`Error setting tag for name: ${name}`, error);\r\n }\r\n });\r\n };\r\n\r\n const clearPlayerTags = () => {\r\n Object.keys(document.documentElement.dataset).forEach((key) => {\r\n if (key.startsWith('tag')) {\r\n delete document.documentElement.dataset[key];\r\n }\r\n });\r\n };\r\n\r\n const render = async () => {\r\n if (Playtech.API.user.isLoggedIn()) {\r\n try {\r\n const response = await Playtech.API.user.getPlayerTags();\r\n setPlayerTags(response.data.tags);\r\n } catch (error) {\r\n console.error('Error fetching player tags:', error);\r\n }\r\n } else {\r\n clearPlayerTags();\r\n }\r\n };\r\n\r\n Playtech.on('LOGGED_IN', render);\r\n Playtech.on('LOGGED_OUT', render);\r\n render();\r\n})();\r\n"},"conditionIds":["13d49fc7-2011-4bd2-b108-d66cc0f9ccfc"]},{"tagId":"c9bb8f60-36d8-4e06-9874-efd68e651a36","tagTypeId":"custom_tag_type","name":"Segment Content by Domain","description":"Segment Content by Domain","config":{"beforeEndHead":"","beforeEndBody":""},"conditionIds":["feea99e9-c324-47d8-b041-7e19f4ef92de"]},{"tagId":"72a18ed5-1408-4a98-9a66-502a3671435a","tagTypeId":"custom_tag_type","name":"User currency","description":"Adds the current currency of the user","config":{"beforeEndHead":"","beforeEndBody":""},"conditionIds":["13d49fc7-2011-4bd2-b108-d66cc0f9ccfc"]},{"tagId":"eb4f74fb-3688-486b-9cf6-9388ec926ddb","tagTypeId":"custom_js","name":"Display CSS helper","description":"Display CSS helper","config":{"code":"(() => {\n const DEFAULT_VIP_LEVEL = 'unlogged';\n \n let vipLevel = DEFAULT_VIP_LEVEL;\n let styleEl = document.createElement('style');\n document.body.appendChild(styleEl);\n \n const render = () => {\n const forceDate = new URLSearchParams(window.location.search).get('forceDate');\n \n const today = luxon.DateTime.now().setZone('America/Sao_Paulo')\n const todayDayName = (forceDate ? luxon.DateTime.fromISO(forceDate) : today).setLocale(\"en\").toFormat('cccc').toLowerCase();\n const todayDate = forceDate || today.toFormat('yyyy-MM-dd');\n \n window.document.documentElement.setAttribute('data-date', todayDate);\n window.document.documentElement.setAttribute('data-day-of-the-week', todayDayName);\n window.document.documentElement.setAttribute('data-vip-level', vipLevel);\n styleEl.textContent = `\n /* LEVEL 1 */\n [data-filter-date],\n [data-filter-day-of-the-week],\n [data-filter-vip-levels] {\n --display-applied: none;\n display: none;\n }\n \n [data-style-display=\"inline-block\"] {\n --display: inline-block;\n }\n \n [data-style-display=\"flex\"] {\n --display: flex;\n }\n \n html[data-date=\"${todayDate}\"] [data-filter-date~=\"${todayDate}\"],\n html[data-day-of-the-week=\"${todayDayName}\"] [data-filter-day-of-the-week~=\"${todayDayName}\"],\n html[data-vip-level=\"${vipLevel}\"] [data-filter-vip-levels~=\"${vipLevel}\"] {\n --display-applied: var(--display, block);\n display: var(--display-applied);\n }\n \n /* LEVEL 2 */\n html [data-filter-date][data-filter-day-of-the-week],\n html [data-filter-date][data-filter-vip-levels],\n html [data-filter-day-of-the-week][data-filter-vip-levels] {\n --display-applied: none;\n display: none;\n }\n \n html[data-date=\"${todayDate}\"][data-day-of-the-week=\"${todayDayName}\"] [data-filter-date~=\"${todayDate}\"][data-filter-day-of-the-week~=\"${todayDayName}\"],\n html[data-date=\"${todayDate}\"][data-vip-level=\"${vipLevel}\"] [data-filter-date~=\"${todayDate}\"][data-filter-vip-levels~=\"${vipLevel}\"],\n html[data-day-of-the-week=\"${todayDayName}\"][data-vip-level=\"${vipLevel}\"] [data-filter-day-of-the-week~=\"${todayDayName}\"][data-filter-vip-levels~=\"${vipLevel}\"] {\n --display-applied: var(--display, block);\n display: var(--display-applied);\n }\n /* LEVEL 3 */\n html [data-filter-date][data-filter-vip-levels][data-filter-day-of-the-week] {\n --display-applied: none;\n display: none;\n }\n \n html[data-date=\"${todayDate}\"][data-day-of-the-week=\"${todayDayName}\"][data-vip-level=\"${vipLevel}\"] [data-filter-date~=\"${todayDate}\"][data-filter-day-of-the-week~=\"${todayDayName}\"][data-filter-vip-levels~=\"${vipLevel}\"] {\n --display-applied: var(--display, block);\n display: var(--display-applied);\n }\n \n @media (min-width: 640px) {\n html [data-filter-date][data-desktop-style-display],\n html [data-filter-day-of-the-week][data-desktop-style-display],\n html [data-filter-vip-levels][data-desktop-style-display] {\n display: none;\n }\n \n html[data-date=\"${todayDate}\"] [data-filter-date~=\"${todayDate}\"][data-desktop-style-display],\n html[data-vip-level=\"${vipLevel}\"] [data-filter-vip-levels~=\"${vipLevel}\"][data-desktop-style-display],\n html[data-day-of-the-week=\"${todayDayName}\"] [data-filter-day-of-the-week~=\"${todayDayName}\"][data-desktop-style-display] {\n display: attr(data-desktop-style-display);\n }\n \n /* LEVEL 2 */\n html [data-filter-date][data-filter-day-of-the-week][data-desktop-style-display],\n html [data-filter-date][data-filter-vip-levels][data-desktop-style-display],\n html [data-filter-day-of-the-week][data-filter-vip-levels][data-desktop-style-display] {\n display: none;\n }\n \n html[data-date=\"${todayDate}\"][data-day-of-the-week=\"${todayDayName}\"] [data-filter-date~=\"${todayDate}\"][data-filter-day-of-the-week~=\"${todayDayName}\"][data-desktop-style-display],\n html[data-date=\"${todayDate}\"][data-vip-level=\"${vipLevel}\"] [data-filter-date~=\"${todayDate}\"][data-filter-vip-levels~=\"${vipLevel}\"][data-desktop-style-display],\n html[data-day-of-the-week=\"${todayDayName}\"][data-vip-level=\"${vipLevel}\"] [data-filter-day-of-the-week][data-filter-vip-levels~=\"${vipLevel}\"][data-desktop-style-display] {\n display: attr(data-desktop-style-display);\n }\n \n /* LEVEL 3 */\n html [data-filter-date][data-filter-vip-levels][data-filter-day-of-the-week][data-desktop-style-display] {\n display: none;\n }\n \n html[data-date=\"${todayDate}\"][data-day-of-the-week=\"${todayDayName}\"][data-vip-level=\"${vipLevel}\"] [data-filter-date~=\"${todayDate}\"][data-filter-day-of-the-week~=\"${todayDayName}\"][data-filter-vip-levels~=\"${vipLevel}\"][data-desktop-style-display] {\n display: attr(data-desktop-style-display);\n }\n }\n `;\n }\n \n const renderFull = () => {\n if (Playtech.API.user.isLoggedIn()) {\n vipLevel = Playtech.fetchUserDetails().vipLevel; \n } else {\n vipLevel = DEFAULT_VIP_LEVEL;\n }\n \n render();\n }\n \n Playtech.on('LOGGED_IN', renderFull);\n Playtech.on('LOGGED_OUT', renderFull);\n \n Playtech.API.common.getScript('https://cdn.jsdelivr.net/npm/luxon@3.4.2/build/global/luxon.min.js').then(() => {\n renderFull();\n });\n})();"},"conditionIds":["13d49fc7-2011-4bd2-b108-d66cc0f9ccfc"]},{"tagId":"8538007c-04c6-4494-9178-acb19caec675","tagTypeId":"custom_js","name":"data attribute country","description":"data attribute country","config":{"code":"(async () => {\n const urlParams = new URLSearchParams(window.location.search);\n const country = urlParams.get('forceCountry') || (await Playtech.API.user.getGeoData()).country;\n \n document.documentElement.dataset.country = country;\n})();"},"conditionIds":["13d49fc7-2011-4bd2-b108-d66cc0f9ccfc"]},{"tagId":"298a5b17-9770-4ebe-9947-f1d271b1ba01","tagTypeId":"custom_js","name":"Handle openRegistrationPage param","description":"Handle openRegistrationPage param","config":{"code":"(() => {\n const searchParams = new URLSearchParams(location.search);\n\n if (searchParams.get('openRegistrationPage')) {\n setTimeout(() => Playtech.API.common.navigate('/register'), Playtech.API.device.isDesktop ? 2500 : 1000);\n }\n})();"},"conditionIds":["13d49fc7-2011-4bd2-b108-d66cc0f9ccfc"]},{"tagId":"32e2e0ef-97e6-4abd-b5c3-7791e1662368","tagTypeId":"custom_js","name":"PLAYTECH API READY dataLayer","description":"PLAYTECH API READY dataLayer","config":{"code":"dataLayer.push({'event': 'PLAYTECH_API_READY'});"},"conditionIds":["13d49fc7-2011-4bd2-b108-d66cc0f9ccfc"]},{"tagId":"e2f88b49-7d25-4f40-a1a5-1e5f0da268de","tagTypeId":"custom_js","name":"Scroll Up on Navigate","description":"Scroll Up on Navigate","config":{"code":"Playtech.on('navigate', () => window.scrollTo(0, 0));"},"conditionIds":["13d49fc7-2011-4bd2-b108-d66cc0f9ccfc"]},{"tagId":"c8dd944e-a5b8-407b-bf3d-fb5e1318837e","tagTypeId":"custom_tag_type","name":"Sportsbook Events","description":"Sportsbook Events","config":{"beforeEndHead":"\n","beforeEndBody":""},"conditionIds":["13d49fc7-2011-4bd2-b108-d66cc0f9ccfc"]},{"tagId":"e8a75ec5-9c37-4f6f-bdc3-e960c1cc0395","tagTypeId":"custom_js","name":"Handle openLogin param","description":"Handle openLogin param","config":{"code":"(() => {\n const searchParams = new URLSearchParams(location.search);\n\n if (searchParams.get('openLogin')) {\n setTimeout(() => Playtech.API.popup.showPopup('login'), 1000);\n }\n})();"},"conditionIds":["13d49fc7-2011-4bd2-b108-d66cc0f9ccfc"]},{"tagId":"1026a21e-bebb-4074-b5f1-eecf01ece20f","tagTypeId":"custom_js","name":"Handle openLogin param","description":"Handle openLogin param","config":{"code":"(() => {\n const searchParams = new URLSearchParams(location.search);\n\n if (searchParams.get('openLogin')) {\n setTimeout(() => Playtech.API.popup.showPopup('login'), 1000);\n }\n})();"},"conditionIds":["13d49fc7-2011-4bd2-b108-d66cc0f9ccfc"]},{"tagId":"6832c394-f6e8-4991-86a6-404820841d63","tagTypeId":"custom_js","name":"Add VIP Level as class","description":"Add VIP Level as class","config":{"code":"(() => {\n // html tag to attach CSS classes to\n // needs to be #applicaion, because otherwise classes will get overwritten by Portal\n const root = document.querySelector('#application');\n const handler = () => {\n if (!Playtech.API.auth.isLoggedIn) {\n // if player is not logged in, do nothing\n return;\n }\n\n const getPlayersLevel = Playtech.fetchUserDetails();\n const vipLevel = getPlayersLevel.vipLevel; //get vip status\n // add viplevel1\n root.classList.add(`viplevel${vipLevel}`);\n };\n // subscribe to login event\n Playtech.on(Playtech.Events.LOGGED_IN, handler);\n // subscribe to logout event\n Playtech.on(Playtech.Events.LOGGED_OUT, () => {\n Array.from(root.classList)\n .filter((name) => name.startsWith('vipl'))\n .forEach((name) => root.classList.remove(name));\n });\n // check on app init\n handler();\n})();"},"conditionIds":["13d49fc7-2011-4bd2-b108-d66cc0f9ccfc"]}],"conditions":[{"conditionId":"bfddde61-2b69-4a47-b6cc-d46597c25ba3","conditionTypeId":"page_condition","name":"onTestPage","description":"on test","config":{"onPageLaunch":"/slots-fix-search,/ada-chatbot-test-page"}},{"conditionId":"530bebf8-3b7b-4fb9-9fe5-46e7b6ea743c","conditionTypeId":"native_app_condition","name":"Only on Native","description":"Only on Native","config":{"nativeAppRule":"1"}},{"conditionId":"52d7813e-1cfa-47ab-9bb3-c739d675df96","conditionTypeId":"page_condition","name":"On Test Pages","description":"Trigger Tag on specific test pages","config":{"onPageLaunch":"/seal-test"}},{"conditionId":"ea0c73e9-617f-47da-b2be-dbe0ada5b585","conditionTypeId":"page_condition","name":"On Promotions","description":"Condition to refresh everytime it change the language","config":{"onPageLaunch":"/promotions"}},{"conditionId":"d14145b8-963a-46bb-b6a4-69d573b3f0ac","conditionTypeId":"page_condition","name":"Only on casino","description":"Page cond","config":{"onPageLaunch":"/casino"}},{"conditionId":"37945668-7b7a-43c7-abbb-9ef4b789fdc2","conditionTypeId":"page_condition","name":"Old games","description":"for testing client type bingo","config":{"onPageLaunch":"/casino/old-games"}},{"conditionId":"13d49fc7-2011-4bd2-b108-d66cc0f9ccfc","conditionTypeId":"basic_condition","name":"On application init","description":"On application initialization","config":{"launch":"onAppInit"}},{"conditionId":"036bdbb4-1bc3-47fe-a0ec-b04d34fc2801","conditionTypeId":"basic_condition","name":"After page rendered","description":"After page rendered","config":{"launch":"afterPageRendered"}},{"conditionId":"feea99e9-c324-47d8-b041-7e19f4ef92de","conditionTypeId":"basic_condition","name":"Before page rendered","description":"Before page rendered","config":{"launch":"beforePageRendered"}}]}