{"version":3,"sources":["../../../../dev/j/v3/components/cmp-offerbox.js"],"names":["originalCM","URL","location","href","searchParams","get","pricingFrames","document","querySelectorAll","switchTheme","getElementById","el","prefix","regex","RegExp","regexDef","defVar","i","l","classList","length","test","replace","remove","storeTheme","add","forEach","frame","trackBoxExpand","actionType","selector","selectorMap","ps-collapses","vpn-collapses","sbd-collapses","cp-collapses","ap-collapses","bgw-collapses","drw-collapses","au-collapses","remappedSelector","window","sdl","push","user","click","element","id","event","frameTexts","querySelector","radioWrappers","priceboxes","giftCheckers","textRenewWithGift","getAttribute","textRenewWithoutGift","textRenewFallback","textUpgradeWithGift","textUpgradeWithoutGift","textUpgradeFallback","setBoxes","boxes","checkers","box","themeDefaultBox","themeDefaultLabel","themeDefaultLabelBorder","themeDefaultToggler","container","label","parentNode","toggler","cta","radio","closest","contains","checked","updateBuyButtons","setCheckers","giftCode","checkerFrame","checker","value","button","cmParamName","cmSplitter","cmValueOld","split","cm","cmValueNew","buttonBoxId","textFallback","textWithGift","textWithoutGift","innerText","selectedOne","parent","wrap","addEventListener","this","item","trgt","collCtrls","showHidden","hiddenItems","style","height","scrollHeight","setTimeout","hideShown","shownItems","console","log","offColl","collapsible","hasIcon","activity","$","each","index","additionalId","attr","eq"],"mappings":"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","file":"cmp-offerbox.js","sourcesContent":["(function() {\n\t'use strict';\n\n\tvar\n\t\toriginalCM = new URL(location.href).searchParams.get('marker'),\n\t\tpricingFrames = document.querySelectorAll('.pricing-frame'),\n\t\texpandFeaturesBtn = document.getElementById('expand-features-btn'),\n\t\tcartLinkBtn = document.getElementById('cart-link-btn'),\n\t\tswitchTheme = function(el, prefix) {\n\t\t\tvar regex = new RegExp(\"^\" + prefix + \".*\");\n\t\t\tvar regexDef = new RegExp(\"^def-\" + prefix + \".*\");\n\t\t\tvar defVar = false;\n\t\t\t // read default theme class\n\t\t\tfor (var i = 0, l = el.classList.length; i < l; ++i) {\n\t\t\t\tif(regexDef.test(el.classList[i])) {\n\t\t\t\t\tdefVar = el.classList[i].replace(\"def-\",\"\");\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// remove all theme classes\n\t\t\tfor (var i = 0, l = el.classList.length; i < l; ++i) {\n\t\t\t\tif(regex.test(el.classList[i])) {\n\t\t\t\t\tel.classList.remove(el.classList[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn defVar ? defVar : false;\n\t\t},\n\t\tstoreTheme = function(el, prefix) {\n\t\t\t// store original theme classes to 'def-' prefixed class\n\t\t\tvar regex = new RegExp(\"^\" + prefix + \".*\");\n\t\t\tfor (var i = 0, l = el.classList.length; i < l; ++i) {\n\t\t\t\tif(regex.test(el.classList[i])) {\n\t\t\t\t\tel.classList.add('def-'+el.classList[i]);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t;\n\t\n\tpricingFrames.forEach(function(frame) {\n\t\tvar\n\t\t\tframeTexts = frame.querySelector('[data-renew-gifted], [data-renew-nogift], [data-renew-fallback]'),\n\t\t\tradioWrappers = frame.querySelectorAll('.form-check'),\n\t\t\tpriceboxes = frame.querySelectorAll('.pricebox'),\n\t\t\tgiftCheckers = frame.querySelectorAll('.pricing-gift .form-check-input');\n\n\t\tif (frameTexts) {\n\t\t\tvar\n\t\t\t\ttextRenewWithGift = frameTexts.getAttribute('data-renew-gifted'),\n\t\t\t\ttextRenewWithoutGift = frameTexts.getAttribute('data-renew-nogift'),\n\t\t\t\ttextRenewFallback = frameTexts.getAttribute('data-renew-fallback'),\n\t\t\t\ttextUpgradeWithGift = frameTexts.getAttribute('data-upgrade-gifted'),\n\t\t\t\ttextUpgradeWithoutGift = frameTexts.getAttribute('data-upgrade-nogift'),\n\t\t\t\ttextUpgradeFallback = frameTexts.getAttribute('data-upgrade-fallback');\n\t\t}\n\n\t\tvar\n\n\t\t\t// store original themes as classes\n\t\t\tstoreThemes = function(boxes) {\n\t\t\t\tboxes.forEach(function(box) {\n\t\t\t\t\tvar\n\t\t\t\t\t\tcontainer = box.querySelector('.box-container'),\n\t\t\t\t\t\tlabel = box.parentNode.querySelector('.label'),\n\t\t\t\t\t\ttoggler = box.querySelector('.box-toggler > *');\n\n\t\t\t\t\t// store default theme of PRICEBOX as a class\n\t\t\t\t\tstoreTheme(container, 'theme-');\n\t\t\t\t\t// store default theme of LABEL as a class\n\t\t\t\t\tif (label && label.parentNode.classList.contains('box-wrap')) {\n\t\t\t\t\t\tstoreTheme(label, 'bg-');\n\t\t\t\t\t\tstoreTheme(label, 'fauxborder-');\n\t\t\t\t\t}\n\t\t\t\t\t// store default theme of TOGGLER as a class\n\t\t\t\t\tif (toggler && toggler.classList.contains('toggler')) {\n\t\t\t\t\t\tstoreTheme(toggler, 'bg-');\n\t\t\t\t\t} else if (toggler && toggler.classList.contains('form-select')) {\n\t\t\t\t\t\tstoreTheme(toggler, 'theme-');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\n\t\t\t// priceboxes update by radio checkers status (themes included)\n\t\t\tsetBoxes = function(boxes, checkers) {\n\t\t\t\tboxes.forEach(function(box) {\n\t\t\t\t\tvar\n\t\t\t\t\t\tcontainer = box.querySelector('.box-container'),\n\t\t\t\t\t\tlabel = box.parentNode.querySelector('.label'),\n\t\t\t\t\t\ttoggler = box.querySelector('.box-toggler > *'),\n\t\t\t\t\t\tcta = box.querySelector('.box-cta .btn'),\n\t\t\t\t\t\tradio = box.closest('.box-wrap').querySelector('.form-check #'+box.id),\n\t\t\t\t\t\tthemeDefaultBox,\n\t\t\t\t\t\tthemeDefaultLabel,\n\t\t\t\t\t\tthemeDefaultLabelBorder,\n\t\t\t\t\t\tthemeDefaultToggler\n\t\t\t\t\t;\n\n\t\t\t\t\t// get and switch default theme of PRICEBOX\n\t\t\t\t\tthemeDefaultBox = switchTheme(container, 'theme-');\n\t\t\t\t\t\n\t\t\t\t\t// get and switch default theme of LABEL\n\t\t\t\t\tif (label && label.parentNode.classList.contains('box-wrap')) {\n\t\t\t\t\t\tthemeDefaultLabel = switchTheme(label, 'bg-');\n\t\t\t\t\t\tthemeDefaultLabelBorder = switchTheme(label, 'fauxborder-');\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// get and switch default theme of TOGGLER\n\t\t\t\t\tif (toggler && toggler.classList.contains('toggler')) {\n\t\t\t\t\t\tthemeDefaultToggler = switchTheme(toggler, 'bg-');\n\t\t\t\t\t} else if (toggler && toggler.classList.contains('form-select')) {\n\t\t\t\t\t\tthemeDefaultToggler = switchTheme(toggler, 'theme-');\n\t\t\t\t\t}\n\n\t\t\t\t\tcta.classList.add('hide'); // hide button\n\n\t\t\t\t\t// set proper themes and button visibility by radio state\n\t\t\t\t\tif (radio.checked) {\n\t\t\t\t\t\tcontainer.classList.remove(themeDefaultBox);\n\t\t\t\t\t\tcontainer.classList.add('theme-blue');\n\n\t\t\t\t\t\tif (label && label.parentNode.classList.contains('box-wrap')) {\n\t\t\t\t\t\t\tlabel.classList.remove(themeDefaultLabel);\n\t\t\t\t\t\t\tlabel.classList.add('fauxborder-blue-bright');\n\t\t\t\t\t\t\tlabel.classList.remove(themeDefaultLabelBorder);\n\t\t\t\t\t\t\tlabel.classList.add('bg-blue-pale');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (toggler && toggler.classList.contains('toggler')) {\n\t\t\t\t\t\t\ttoggler.classList.remove(themeDefaultToggler);\n\t\t\t\t\t\t\ttoggler.classList.add('bg-blue-bright');\n\t\t\t\t\t\t} else if (toggler && toggler.classList.contains('form-select')) {\n\t\t\t\t\t\t\ttoggler.classList.remove(themeDefaultToggler);\n\t\t\t\t\t\t\ttoggler.classList.add('theme-blue');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcta.classList.remove('hide');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontainer.classList.remove('theme-blue');\n\t\t\t\t\t\tcontainer.classList.add(themeDefaultBox);\n\n\t\t\t\t\t\tif (label && label.parentNode.classList.contains('box-wrap')) {\n\t\t\t\t\t\t\tlabel.classList.remove('bg-blue-pale');\n\t\t\t\t\t\t\tlabel.classList.add(themeDefaultLabel);\n\t\t\t\t\t\t\tlabel.classList.remove('fauxborder-blue-bright');\n\t\t\t\t\t\t\tlabel.classList.add(themeDefaultLabelBorder);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (toggler && toggler.classList.contains('toggler')) {\n\t\t\t\t\t\t\ttoggler.classList.remove('bg-blue-bright');\n\t\t\t\t\t\t\ttoggler.classList.add(themeDefaultToggler);\n\t\t\t\t\t\t} else if (toggler && toggler.classList.contains('form-select')) {\n\t\t\t\t\t\t\ttoggler.classList.remove('theme-blue');\n\t\t\t\t\t\t\ttoggler.classList.add(themeDefaultToggler);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcta.classList.add('hide');\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t;\n\n\t\t\t\tupdateBuyButtons(checkers);\n\t\t\t},\n\n\t\t\t// updating campaign marker on all buy buttons based on selected gift\n\t\t\tupdateBuyButtons = function(checkers) {\n\t\t\t\tif (checkers && checkers.length > 0) {\n\t\t\t\t\tsetCheckers();\n\t\t\t\t\tvar giftCode = false;\n\t\t\t\t\tvar checkerFrame = checkers[0].closest('.pricing-frame-right');\n\t\t\n\t\t\t\t\tcheckers.forEach(function(checker){\n\t\t\t\t\t\tif (checker.checked) {\n\t\t\t\t\t\t\tgiftCode = checker.checked ? checker.value : giftCode;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t// in priceboxes, select not hidden button with cart-link role\n\t\t\t\t\tcheckerFrame.querySelectorAll('.pricebox .btn:not(.hide)[data-role=\"cart-link\"]').forEach(function(button) {\n\t\t\t\t\t\tvar cmParamName = 'campaignMarker=';\n\t\t\t\t\t\tvar cmSplitter = '&';\n\n\t\t\t\t\t\tif (/CampaignMarker=/.test(button.href)) { // PL, CZ, etc... cart link pattern\n\t\t\t\t\t\t\tvar cmParamName = 'CampaignMarker=';\n\t\t\t\t\t\t} else if (/campaignMarker\\./.test(button.href)) { // PT-BR cart link pattern\n\t\t\t\t\t\t\tvar cmParamName = 'campaignMarker.';\n\t\t\t\t\t\t\tvar cmSplitter = '/';\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar\n\t\t\t\t\t\t\tcmValueOld = cmParamName + button.href.split(cmParamName)[1].split(cmSplitter)[0],\n\t\t\t\t\t\t\tcm = cmParamName + originalCM,\n\t\t\t\t\t\t\tcmValueNew = giftCode ? cm+'_'+giftCode : cm;\n\n\t\t\t\t\t\t// update the campaign marker\n\t\t\t\t\t\tbutton.href = button.href.replace(cmValueOld, cmValueNew);\n\n\t\t\t\t\t\t// Update button text to gift or default retention value\n\t\t\t\t\t\tvar buttonBoxId = button.closest('.box-guts').querySelector('.box-top').getAttribute('id');\n\t\t\t\t\t\tif (buttonBoxId && buttonBoxId == 'upgradeOption') {\n\t\t\t\t\t\t\tvar textFallback = textUpgradeFallback;\n\t\t\t\t\t\t\tvar textWithGift = textUpgradeWithGift;\n\t\t\t\t\t\t\tvar textWithoutGift = textUpgradeWithoutGift;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar textFallback = textRenewFallback;\n\t\t\t\t\t\t\tvar textWithGift = textRenewWithGift;\n\t\t\t\t\t\t\tvar textWithoutGift = textRenewWithoutGift;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (giftCode && textFallback) {\n\t\t\t\t\t\t\tbutton.innerText = textWithGift ? textWithGift : textFallback;\n\t\t\t\t\t\t} else if (textFallback) {\n\t\t\t\t\t\t\tbutton.innerText = textWithoutGift ? textWithoutGift : textFallback;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\t//uncheck all gift checkers except the one and set proper class for gift frame\n\t\t\tsetCheckers = function(selectedOne){\n\t\t\t\tvar checked = false; // control whether checked checker was already found\n\t\n\t\t\t\tgiftCheckers.forEach(function(checker){\n\t\t\t\t\tvar parent = checker.closest('.pricing-gift');\n\t\n\t\t\t\t\t// function was called without parameter:\n\t\t\t\t\tif (!selectedOne && checker.checked && !checked) {\n\t\t\t\t\t\tparent.classList.add('selected');\n\t\t\t\t\t\tchecked = true;\n\t\n\t\t\t\t\t// with parameter and it matches with checker\n\t\t\t\t\t} else if (selectedOne && checker === selectedOne) {\n\t\t\t\t\t\tparent.classList.add('selected');\n\t\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchecker.checked = false;\n\t\t\t\t\t\tparent.classList.remove('selected');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\n\t\t// Highlight box after click on related radio\n\t\tradioWrappers.forEach(function(wrap) {\n\t\t\twrap.addEventListener('click', function(){\n\t\t\t\tsetBoxes(priceboxes, giftCheckers);\n\t\t\t});\n\t\t});\n\t\n\t\t//add event listener to checkers and if checked, uncheck all other checkers\n\t\tgiftCheckers.forEach(function(checker){\n\t\t\tchecker.addEventListener('click', function(){\n\t\t\t\tsetCheckers(this);\n\t\t\t});\n\t\t});\n\t\t\n\n\t\t// Check radio after click on related pricebox (toggler is excluded from listener)\n\t\tpriceboxes.forEach(function(box) {\n\t\t\tvar boxFrame = box.querySelector('.box-guts');\n\t\t\tboxFrame.addEventListener('click', function(){\n\t\t\t\tthis.closest('.box-wrap').querySelector('.form-check #'+box.id).checked = true;\n\t\t\t\tsetBoxes(priceboxes, giftCheckers);\n\t\t\t});\n\n\t\t\tvar boxTogglerItems = box.querySelectorAll('.toggler-item');\n\t\t\tboxTogglerItems.forEach(function(item) {\n\t\t\t\titem.addEventListener('click', function(){\n\t\t\t\t\tupdateBuyButtons(giftCheckers);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\t\n\t\t// COLLAPSIBLES\n\t\tvar\n\t\t\tcollCtrls = frame.querySelectorAll('.collapse-btn'), // collapse buttons controllers\n\t\t\ttrgt,\n\t\t\tshowHidden = function(hiddenItems) {\n\t\t\t\tif (hiddenItems.length > 0) {\n\t\t\t\t\thiddenItems.forEach(function(element){\n\t\t\t\t\t\telement.classList.add('collapsing');\n\t\t\t\t\t\telement.classList.remove('collapse');\n\t\t\t\t\t\telement.style.height = element.scrollHeight+'px';\n\n\t\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\t\telement.classList.remove('collapsing');\n\t\t\t\t\t\t\telement.classList.add('collapse', 'show');\n\t\t\t\t\t\t\telement.style.height = null;\n\t\t\t\t\t\t},350);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\thideShown = function(shownItems) {\n\t\t\t\tif (shownItems.length > 0) {\n\t\t\t\t\tshownItems.forEach(function(element){\n\t\t\t\t\t\telement.style.height = element.scrollHeight+'px';\n\t\t\t\t\t\telement.classList.remove('collapse', 'show');\n\t\t\t\t\t\telement.classList.add('collapsing');\n\n\t\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\t\telement.style.height = '0px';\n\t\t\t\t\t\t},100);\n\n\t\t\t\t\t\t// detect whether collapsing element contains priceboxes,\n\t\t\t\t\t\t// then RESET priceboxes selection to the first one\n\t\t\t\t\t\tif (element.querySelectorAll('.box-wrap').length > 0) {\n\t\t\t\t\t\t\telement.parentNode.querySelector('.box-wrap .form-check input').checked = true; // check the first radio\n\t\t\t\t\t\t\tsetBoxes(priceboxes, giftCheckers); // reset priceboxes and potential gift checkboxes\n\n\t\t\t\t\t\t\tconsole.log(element);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\t\telement.classList.remove('collapsing');\n\t\t\t\t\t\t\telement.classList.add('collapse');\n\t\t\t\t\t\t\telement.style.height = null;\n\t\t\t\t\t\t},350);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t;\n\n\t\tcollCtrls.forEach(function(offColl){\n\t\t\tvar selector = offColl.getAttribute('aria-controls'); // get the target class of controlled elements\n\n\t\t\tif (selector !== trgt) {\n\t\t\t\ttrgt = selector;\n\t\t\t\tvar collapsible = document.getElementById(selector); // element which is actually controlled by Boostrap and we use that with event listeners\n\n\t\t\t\t// if the first item is showing\n\t\t\t\tcollapsible.addEventListener('show.bs.collapse', function(el) {\n\t\t\t\t\tshowHidden(document.querySelectorAll('.'+selector+':not(.show)'));// show hidden stuff\n\t\t\t\t\thideShown(document.querySelectorAll('.'+selector+'.show'));// hide shown stuff\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t// if the first item is hiding\n\t\t\t\tcollapsible.addEventListener('hide.bs.collapse', function() {\n\t\t\t\t\tshowHidden(document.querySelectorAll('.'+selector+':not(.show)'));// show hidden stuff\n\t\t\t\t\thideShown(document.querySelectorAll('.'+selector+'.show'));// hide shown stuff\t\t\t\t\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\n\t\t// **************************************************************************\n\t\t// Box expand tracking\n\t\t// **************************************************************************\n\t\t// Select the buttons by their class name\n\t\tvar buttons = frame.querySelectorAll('.collapse-btn');\n\t\t\t\n\t\t// Add click event listener to each button\n\t\tbuttons.forEach(function(button) {\n\t\t\tvar selector = button.getAttribute('aria-controls');\n\t\t\t\n\t\t\tbutton.addEventListener('click', function() {\n\t\t\t\t// Check if the button has the class 'btn-icon-right'\n\t\t\t\tvar hasIcon = button.classList.contains('btn-icon-right'),\n\t\t\t\t\tariaStatus = button.getAttribute('aria-expanded');\n\n\t\t\t\tif (ariaStatus == 'true') {\n\t\t\t\t\tvar activity = 'collapse';\n\t\t\t\t} else {\n\t\t\t\t\tvar activity = 'expand';\n\t\t\t\t}\n\n\t\t\t\t// Differentiate based on the presence of icon\n\t\t\t\tif (hasIcon) {\n\t\t\t\t\t// Button has an icon\n\t\t\t\t\ttrackBoxExpand(activity + '_features', selector);\n\t\t\t\t} else {\n\t\t\t\t\t// Button does not have an icon\n\t\t\t\t\ttrackBoxExpand(activity + '_pricing', selector);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\t\n\t\t// Function to track box expand event\n\t\tfunction trackBoxExpand(actionType, selector) {\n\n\t\t\t// Object mapping for remapping selectors\n\t\t\tvar selectorMap = {\n\t\t\t\t'ps-collapses': 'premium_security',\n\t\t\t\t'vpn-collapses': 'secureline_vpn',\n\t\t\t\t'sbd-collapses': 'secure_browser_pro',\n\t\t\t\t'cp-collapses': 'cleanup_premium',\n\t\t\t\t'ap-collapses': 'antitrack',\n\t\t\t\t'bgw-collapses': 'breachguard',\n\t\t\t\t'drw-collapses': 'driver_updater',\n\t\t\t\t'au-collapses': 'ultimate',\n\t\t\t\t},\n\t\t\t\tremappedSelector = selectorMap[selector] || selector; // Remap the selector if needed\n\n\t\t\t//single data layer push\n\t\t\twindow.sdl = window.sdl || [];\n\t\t\twindow.sdl.push({\n\t\t\t\tuser: {\n\t\t\t\t\tclick: {\n\t\t\t\t\t\telement: {\n\t\t\t\t\t\t\tactionType: actionType, //expand_prices|collapse_features|collapse_prices, based on which element the user clicked on\n\t\t\t\t\t\t\tid: remappedSelector //Product the user clicked on\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tevent: \"user.click.element\"\n\t\t\t})\n\t\t}\n\t\t// **************************************************************************\n\n\t\t// -- INITIAL SETUP CALLS\n\t\tstoreThemes(priceboxes); // Init store original themes as classes\n\t\tsetBoxes(priceboxes, giftCheckers); // Init priceboxes and gift checkers reset\n\t});\n\n\n\t// **************************************************************************\n\t// Additional QA information to elements for retention email campaign testing\n\t// **************************************************************************\n\t$('div[id^=box_customRadio]').each(function (index) {\n\t\t// Create the additional ID to be appended, e.g., \"data-offer-box-1,\" \"data-offer-box-2,\" etc.\n\t\tvar additionalId = 'data-offer-box-' + (index + 1);\n\n\t\t// Update the element's ID attribute with the new ID\n\t\t$(this).attr('data-test-id', additionalId);\n\t});\n\n\tif($(\".product-name\").length == 2) {\n\t\t$(\".product-name\").eq(0).attr('id', \"test-id-product-name-1\");\n\t\t$(\".product-name\").eq(1).attr('id', \"test-id-product-name-2\");\n\t}\n\telse {\n\t\t$(\".product-name\").eq(0).attr('id', \"test-id-product-name-1\");\n\t}\n\t\n})()"]}