"use strict"; window.etag = window.etag || {}; (function (__) { const _ = {}; _.init = () => { _.modules = {}; _.config = { uuid: "8C08F346-D5EC-48BD-892A-32326566E615", modules: {"core":(data, root) => { const _ = root; const moduleName = "core"; const api = () => { const sessionName = "_etg"; const headers = { Accept: "application/json", "Content-Type": "application/json;charset=UTF-8", }; const get = (url, endpoint, data) => { const _session = _.utils.cookies.get(sessionName); const sendData = { location: _.utils.currentURL(), uuid: _session.uuid, session: _session.sessionId, ...data }; const params = new URLSearchParams(sendData).toString(); const options = { method: "GET", headers: headers, }; return fetch(url + endpoint + (params ? "?" : "") + params, options) .then((response) => response); }; const post = (url, endpoint, data) => { const _session = _.utils.cookies.get(sessionName); data["location"] = _.utils.currentURL(); data["uuid"] = _session.uuid; data["session"] = _session.sessionId; data["device"] = _.utils.getDevice(); data["isMobile"] = _.utils.isMobile(); const options = { method: "POST", headers: headers, body: JSON.stringify(data), }; return fetch(url + endpoint, options).then((response) => response); }; return { get: get, post: post, track: { url: (url, data = {}) => { const _session = _.utils.cookies.get(sessionName); data["location"] = _.utils.currentURL(); data["uuid"] = _session.uuid; data["session"] = _session.sessionId; data["url"] = url; return _.config.urls.trackingService + "/link?rd=" + encodeURIComponent(btoa(JSON.stringify(data))); }, interaction: (target, trigger, action, data = {}) => { data["target"] = target; data["trigger"] = trigger; data["action"] = action; _.api.post(_.api.urlTrackingService, "/interaction", data); } }, urlApiCapture: _.config.urls.apiCapture, urlCaptureService: _.config.urls.captureService, urlTrackingService: _.config.urls.trackingService, sessionName: sessionName }; }; const utils = { uuid: () => { return _.config.uuid; }, debug: (msg, ...arg) => { _.config.debugMode && console.log("[ETAG] " + msg, ...arg); }, currentURL: (removeParam = true) => { return removeParam ? window.location.href.split("?")[0] ?? window.location.href : window.location.href; }, isMobile: () => { return ((agent) => { return (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(agent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(agent.substring(0, 4))); })(navigator.userAgent || navigator.vendor || window.opera); }, getMobileOS: () => { const isIOS = /iPhone|iPad|iPod/i.test(navigator.userAgent); const isAndroid = /Android/i.test(navigator.userAgent); if (isIOS) return "IOS"; if (isAndroid) return "Android"; return "Other Mobile OS"; }, getDevice: () => { if (utils.isMobile()) return utils.getMobileOS(); return "Desktop"; }, uuidv4: () => { return `${1e7}-${1e3}-${4e3}-${8e3}-${1e11}`.replace(/[018]/g, (c) => { const b = c; return (b ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (b / 4)))).toString(16); }); }, isEmailValid: (email) => { return /^[\w-.]+@([\w-]+\.)+[\w-]{2,4}$/.test(email); }, isEmpty: (value) => { return value == null || !(Object.keys(value) || value.trim()).length; }, session: (sessionName) => { return { set: function (key, value) { const session = this.get(); session[key] = value; localStorage.setItem(sessionName, JSON.stringify(session)); }, get: function (key) { let initValues = { uuid: _.config.uuid, sessionId: _.utils.uuidv4(), }; if (localStorage.getItem(sessionName)) initValues = JSON.parse(localStorage.getItem(sessionName)); else localStorage.setItem(sessionName, JSON.stringify(initValues)); const keyValue = key ? initValues[key] : undefined; return keyValue ?? initValues; }, delete: function (key) { const session = this.get(); delete session[key]; localStorage.setItem(sessionName, JSON.stringify(session)); }, }; }, cookies: { set: (name, value, days) => { const date = new Date(); date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000); const expires = "; expires=" + date.toUTCString(); document.cookie = name + "=" + (btoa(JSON.stringify(value)) || "") + (days ? expires : "") + "; path=/; SameSite=None; Secure; domain=" + _.utils.getRootDomain(window.location.href); }, get: (name) => { const pattern = new RegExp(name + "=([^;]+)"); const match = pattern.exec(document.cookie); if (match) return JSON.parse(atob(match[1])); const initValues = { uuid: _.config.uuid, sessionId: _.utils.uuidv4(), }; _.utils.cookies.set(name, initValues, 365); return initValues; }, delete: (name) => { document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC;" + "path=/; Max-Age=-9999; domain=" + _.utils.getRootDomain(window.location.href); } }, getElements: (selector) => { if (!selector || selector.trim() == "") return null; if (selector.indexOf("evaluate:") == 0) { const xpathExpression = selector.substring(9); const result = document.evaluate(xpathExpression, document, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null); let element; const elements = []; while ((element = result.iterateNext())) elements.push(element); return elements; } else return Array.from(document.querySelectorAll(selector)); }, getURLParameter: (parameterName) => { const params = new URLSearchParams(window.location.search); return params.get(parameterName); }, isCampaignOnDate: (startDateString, endDateString) => { const today = Date.now(); const startDate = startDateString ? new Date(startDateString).getTime() : Date.now(); const endDate = endDateString ? new Date(endDateString).getTime() : Date.now(); return today >= startDate && endDate >= today; }, isRequiredElementOnPage: (selector) => { const element = document.querySelector(selector); return element; }, applyCampaign: (item, type) => { const isCampaignOnDate = _.utils.isCampaignOnDate(item["startDate"], item["endDate"]); const apply = (!item["includeIfUrlRegex"] || _.utils.matchPageURL(item["includeIfUrlRegex"])) && ((item["active"] && isCampaignOnDate) || (item["preview"] && _.utils.getURLParameter("preview") == type && _.utils.getURLParameter("id") == item["id"])); const isRequiredElementOnPage = !item["includeIfHtmlSelector"] || _.utils.isRequiredElementOnPage(item["includeIfHtmlSelector"]); return !!(apply && isRequiredElementOnPage); }, addUtmToLinks: (content, utm) => { const contentLinks = content.querySelectorAll("a"); contentLinks.forEach((link) => { link.href = _.utils.formatLink(link.href, utm); }); }, addTrackToLinks: (content, data = {}) => { const contentLinks = content.querySelectorAll("a"); contentLinks.forEach((link) => { link.href = _.api.track.url(link.href, data); }); }, matchPageURL: (includeUrl) => { const regexp = new RegExp(includeUrl); const pageUrl = window.location.href; return regexp.test(pageUrl); }, formatLink: (link, utm = "") => { return link + (link.indexOf("?") == -1 ? "?" : "&") + utm; }, getRootDomain: (urlBase) => { const url = new URL(urlBase); const domain = url.hostname; const elems = domain.split("."); const iMax = elems.length - 1; const elem1 = elems[iMax - 1]; const elem2 = elems[iMax]; const isSecondLevelDomain = iMax >= 2 && 5 >= (elem1 + elem2).length; return ((isSecondLevelDomain ? elems[iMax - 2] + "." : "") + (elem1 ? elem1 + "." : "") + elem2); }, fetchURL: async (url, successCallback, failCallback) => { try { const response = await fetch(url); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const json = await response.json(); successCallback(json); } catch (error) { failCallback(error); } }, }; const init = () => { _.config.debugMode && console.log("%c" + " _____ __ ______ \n" + " / ___/____ ___ ____ _____/ //_ __/___ ____ \n" + " \\__ \\/ __ `__ \\/ __ `/ ___/ __// / / __ `/ __ `/\n" + " ___/ / / / / / / /_/ / / / /_ / / / /_/ / /_/ / \n" + "/____/_/ /_/ /_/\\__,_/_/ \\__//_/ \\__,_/\\__, / \n" + " /____/ \n" + " By EtagDigital \n" + "\n", "color:#fecc30"); _.utils = utils; _.api = api(); utils.debug("%c" + "###### Initializing module " + moduleName, "color:#fecc30"); utils.debug("%c" + "## Check device", "color:#fecc30"); }; init(); return { name: moduleName, };},"tag-capture":(data, root) => { const _ = root; const moduleName = "tag-capture"; const captureTypeMap = { LEAD: "lead", CART: "cart", CONVERSION: "conversion", PRODUCT: "product", REGISTER: "register" }; const eventMap = { LOAD: "load", CHANGE: "change", LOAD_CHANGE: "load-change", CLICK: "click" }; const htmlAttributeMap = { VALUE: { value: "value", type: "prop" }, SRC: { value: "src", type: "attr" }, HREF: { value: "href", type: "attr" }, BACKGROUND_IMAGE: { value: "background-image", type: "style" }, INNER_HTML: { value: "innerHTML", type: "prop" }, INNER_TEXT: { value: "innerText", type: "prop" }, META_CONTENT: { value: "content", type: "meta" }, URL: { value: "url", type: "script" }, NONE: { value: "none", type: "none" }, }; const debug = (value, ...args) => { _.utils.debug(`%c[${moduleName}] ` + value, "color:#77dd77; padding-top:10px", ...args); }; const Capture = () => { const itens = []; const add = (item) => { const captureItem = CaptureItem(item); if (captureItem) itens.push(captureItem); }; const capture = () => { for (const item of itens) item.capture(); }; const deactivate = () => { for (const item of itens) item.deactivate(); }; const CaptureItem = (item) => { const captureTypeValid = Object.keys(captureTypeMap).indexOf(item["type"]) > -1; if (!captureTypeValid) return null; const type = captureTypeMap[item["type"]]; const id = item["id"]; let captureOnLoad = true; let lastCaptureInfo = null; let checkinterval; let fields = {}; const itemData = { id: id, type: type, fields: fields }; const dataCapture = () => { const capturedData = { captureId: item.id, info: {} }; let hasCapturedAny = false; for (const [field, value] of Object.entries(fields)) { if (Array.isArray(value)) { const qtyObjects = value[0].elements ? value[0].elements.length : 1; const group = capturedData.info[field] = []; for (let index = qtyObjects - 1; index >= 0; index--) { const groupObject = {}; for (const groupField of value) { const currentValue = groupField.value(index); const value = type == captureTypeMap.LEAD ? (_.utils.isEmailValid(currentValue) ? currentValue : "") : currentValue; groupObject[groupField.name] = value.trim(); hasCapturedAny = hasCapturedAny || !_.utils.isEmpty(groupObject[groupField.name]); } group.push(groupObject); } } else { const currentValue = value.value(); capturedData.info[field] = type == captureTypeMap.LEAD ? (_.utils.isEmailValid(currentValue) ? currentValue : "") : currentValue; hasCapturedAny = hasCapturedAny || !_.utils.isEmpty(capturedData.info[field]); } } return [hasCapturedAny, capturedData]; }; const checkCapture = () => { const [hasCapturedAny, capturedData] = dataCapture(); if (hasCapturedAny && JSON.stringify(lastCaptureInfo) != JSON.stringify(capturedData.info)) { doDeactivate(); init(); } }; const doCapture = () => { const [hasCapturedAny, capturedData] = dataCapture(); lastCaptureInfo = capturedData.info; debug("###### Captured", hasCapturedAny, capturedData); if (!hasCapturedAny) return null; _.api.post(_.api.urlCaptureService, "/capture/" + type, capturedData); return capturedData; }; const doDeactivate = () => { for (const [field, value] of Object.entries(fields)) if (Array.isArray(value)) { const qtyObjects = value[0].elements ? value[0].elements.length : 1; for (let index = qtyObjects - 1; index >= 0; index--) for (const groupField of value) groupField.deactivate(); } else value.deactivate(); clearInterval(checkinterval); }; const init = () => { fields = {}; for (const field of item["fields"]) { const validEvent = Object.keys(eventMap).indexOf(field["triggerEvent"]) > -1; captureOnLoad = captureOnLoad && validEvent; const capturedField = CaptureField(field, doCapture); if (capturedField.isElement && capturedField.elements.length == 0) { debug(`Field not found: ${capturedField.name}`); } else { if (field.group) { const group = fields[field.group] = fields[field.group] || []; group.push(capturedField); } else { fields[field["name"]] = capturedField; } } } if (captureOnLoad) doCapture(); if (type == "cart") checkinterval = setInterval(checkCapture, 2000); debug(`###### Capturing on${captureOnLoad ? "Load" : "Change"}`, item); }; init(); return { ...itemData, capture: doCapture, deactivate: doDeactivate }; }; const CaptureField = (field, captureFunction) => { const htmlAttributeObj = htmlAttributeMap[field["htmlAttribute"]]; const attribute = htmlAttributeObj.value; const attributeType = htmlAttributeObj.type; const isElement = attributeType != "script"; const elements = isElement ? _.utils.getElements(field["selector"]) : null; const value = (index = 0) => { if (attribute && isElement && elements.length > 0) { const element = elements[index]; if (!element || attribute == "none") return null; else if (attributeType == "attr") return element.getAttribute(attribute); else if (attributeType == "prop") { if (attribute === "innerHTML" || attribute === "innerText") return element[attribute] || null; else if (attribute === "value") return element[attribute] || null; } else if (attribute == "url") return _.utils.currentURL(); else if (attribute == "background-image") { const style = window.getComputedStyle(element, null); const url = style.backgroundImage.match(/"+(.+)"+/); return url ? url[1] : null; } else if (attribute == "content") return element.getAttribute(attribute) || null; } else { if (attribute == "url") return _.utils.currentURL(); } return null; }; let event = eventMap[field["triggerEvent"]]; event = event == "load-change" ? "change" : event; if (isElement && event !== "load") { for (const element of elements) element.addEventListener(event, captureFunction); } const deactivate = () => { if (!isElement) return; for (const element of elements) element.removeEventListener(event, captureFunction); }; return { name: field["name"], type: attributeType, isElement: isElement, elements: elements, value: value, deactivate: deactivate }; }; return { add: add, capture: capture, deactivate: deactivate }; }; const capture = Capture(); const init = (reset = false) => { debug(`${reset ? "Re-i" : "I"}nitialize module`); for (const item of data) { const name = item["name"]; const delay = item.delay || 0; debug(`${reset ? "Re-i" : "I"}nitializing item ${name} in ${delay}ms`, item); setTimeout(() => { const apply = !item["includeIfUrlRegex"] || _.utils.matchPageURL(item["includeIfUrlRegex"]); debug(`#### Capture ${name}`, apply); if (apply) capture.add(item); }, delay); } }; const reset = () => { capture.deactivate(); init(true); }; init(); return { name: moduleName, reset: reset };},"tag-assist":(data, root) => { const _ = root; const moduleName = "tag-assist"; const debug = (value, ...args) => { _.utils.debug(`%c[${moduleName}] ` + value, "color:#84b6f4; padding-top:10px", ...args); }; let productsViewButtonLabel = "Vizualizar"; let productsBuyButtonLabel = "Comprar"; const promoButtonLabel = "Continuar comprando"; const filterSearchPlaceholder = "Pesquise no site..."; const TagAssist = () => { const components = { container: { selector: ".etag-assist-container" }, productsListNotFound: { selector: ".etag-products.not-found", removeOnInit: true }, productsListItem: { selector: ".etag-products.product-item", removeOnInit: true }, productsFilter: { selector: ".etag-assist-main-products-filter" }, productView: { selector: ".etag-assist-main-product-view", removeOnInit: true }, filterSearch: { selector: ".etag-assist-main-products-filter-search" }, backButton: { selector: ".etag-go-back-etag-button" }, searchButton: { selector: ".etag-assist-search-etag-button" }, closeSearchButton: { selector: ".etag-assist-search-close" }, inputSeach: { selector: ".etag-assist-search-query" }, productsFilterItem: { selector: ".etag-assist-main-products-filter-item", removeOnInit: true }, products: { selector: ".etag-assist-main-products", removeOnInit: true }, header: { selector: ".etag-assist-main-header" }, headerImage: { selector: ".etag-assist-main-header-logo img" }, contentPromo: { selector: ".etag-assist-main-body-promo" }, ctaButton: { selector: ".cta-etag-button" }, content: { selector: ".etag-assist-main-body", removeOnInit: true }, closeButton: { selector: ".etag-assist-content-close" }, overlay: { selector: ".etag-assist-overlay" }, }; const create = (itemData) => { const closeAssist = () => { element.classList.remove("show"); _.api.track.interaction("btnClose", "click", "close", { campaignId: itemData.id, module: moduleName }); }; const clearList = () => { const list = components.productsListItem.parent; while (list.firstChild) list.removeChild(list.lastChild); }; const doSearch = async (value) => { await _.api.get(_.api.urlCaptureService, "/products/" + _.utils.uuid() + "/search", { "q": value, "p": moduleName }) .then((response) => { return response.json(); }).then((data) => { const listProducts = filterObjectsWithAttributes(data); displayData(listProducts); }); }; const viewProduct = (product) => { _.api.track.interaction("view-product", "click", "display", { campaignId: itemData.id, module: moduleName, productId: product.id }); const productView = components.productView.element.cloneNode(true); components.products.element.classList.add("product-view"); for (const prop in product) { const propLower = prop.toLowerCase(); const propValue = product[prop]; const isImage = propLower == "image" && propValue.indexOf("svg") == -1; const tag = productView.querySelector("." + propLower + (isImage ? " img" : "")); if (tag) if (propLower == "url") tag.setAttribute("href", _.api.track.url(propValue, { origin: moduleName + "|detail" })); else if (isImage) tag.setAttribute("src", propValue); else tag.innerHTML = propValue; } components.productView.parent.appendChild(productView); }; const closeProduct = () => { components.products.element.classList.remove("product-view"); components.productView.parent .querySelector(".etag-assist-main-product-view") .remove(); }; const displayData = (listProducts) => { clearList(); const list = components.productsListItem.parent; if (listProducts.length == 0) list.appendChild(components.productsListNotFound.element); else for (const item of listProducts) { const listItem = components.productsListItem.element.cloneNode(true); const view = listItem.querySelector(".view"); const buy = listItem.querySelector(".buy"); view.innerHTML = productsViewButtonLabel; buy.innerHTML = productsBuyButtonLabel; for (const prop in item) { const propLower = prop.toLowerCase(); const propValue = item[prop]; const isImage = propLower == "image" && propValue.indexOf("svg") == -1; const tag = listItem.querySelector("." + propLower + (isImage ? " img" : "")); if (tag) if (propLower == "url") tag.setAttribute("href", _.api.track.url(propValue, { origin: moduleName + "|list" })); else if (isImage) tag.setAttribute("src", propValue); else tag.innerHTML = propValue; } listItem.querySelector(".etag-products-view") .addEventListener("click", () => { viewProduct(item); }); list.appendChild(listItem); } }; const filterObjectsWithAttributes = (objects) => { const requiredAttributes = ["image", "url", "description", "price", "name"]; return objects.filter((obj) => requiredAttributes.every((attr) => Object.keys(obj).some((key) => key.toLowerCase() === attr.toLowerCase()) && typeof obj[attr] !== "undefined" && obj[attr] !== null && String(obj[attr]).trim() !== "")).slice(0, 20); }; const createFilter = (filter, active = false) => { if (!filter?.label) return; debug("Filter: ", filter.label, active); let listProducts = []; const itemParent = components.productsFilterItem.parent; const filterItem = components.productsFilterItem.element.cloneNode(true); filterItem.querySelector(".label").innerHTML = filter.label; itemParent.appendChild(filterItem); filterItem.addEventListener("displayData", () => { itemParent .querySelectorAll("div") .forEach((div) => { div.classList.remove("active"); }); filterItem.classList.add("active"); displayData(listProducts); }); filterItem.addEventListener("click", () => { filterItem.dispatchEvent(new Event("displayData")); }); if (active) filterItem.classList.add("active"); const successCallback = (data) => { listProducts = filterObjectsWithAttributes(data || []); filterItem.querySelector(".qty").innerHTML = "" + listProducts.length; if (active) displayData(listProducts); }; const failCallback = (error) => console.log("Erro:", error); _.utils.fetchURL(filter.url, successCallback, failCallback); }; const dispath = (trigger, action) => { const cookie = _.utils.cookies.get("_etg"); const assistImpressions = cookie.assistImpressions || 0; if (itemData["fireInSessionQtty"] > assistImpressions) { add(); cookie.assistImpressions = assistImpressions + 1; _.utils.cookies.set("_etg", cookie, 365); _.api.track.interaction(null, trigger, action, { campaignId: itemData.id, module: moduleName }); } clearDispath(); }; const dispathConfig = { dispatchInactivityInterval: setTimeout(() => { }), dispatchExitIntentInterval: setTimeout(() => { }), engageOffset: 100, engageMaxLimit: 0, desktopInactivityFunction: () => { clearTimeout(dispathConfig.dispatchInactivityInterval); dispathConfig.dispatchInactivityInterval = setTimeout(dispath, itemData["fireDesktopInactivityDelay"], "inactivity", "open"); }, desktopExitIntentFunction: (evt) => { clearTimeout(dispathConfig.dispatchExitIntentInterval); const intentions = { PASSIVE: [50, itemData["fireDesktopExitIntentDelay"]], NEUTRAL: [100, 0], ACTIVE: [150, 0] }; const intention = intentions[itemData["fireDesktopExitIntentAction"]]; if (intention[0] >= evt.y) { dispathConfig.dispatchExitIntentInterval = setTimeout(dispath, intention[1], "exit-intention-" + itemData["fireDesktopExitIntentAction"], "open"); } }, mobileInactivityFunction: () => { clearTimeout(dispathConfig.dispatchInactivityInterval); dispathConfig.dispatchInactivityInterval = setTimeout(dispath, itemData["fireMobileInactivityDelay"], "inactivity", "open"); }, mobileOnLostFocusFunction: () => { clearTimeout(dispathConfig.dispatchExitIntentInterval); dispathConfig.dispatchExitIntentInterval = setTimeout(dispath, itemData["fireMobileOnLostFocusDelay"], "onLostFocus", "open"); }, mobileOnFocusFunction: () => { clearTimeout(dispathConfig.dispatchExitIntentInterval); }, mobileOnScrollFunction: () => { dispathConfig.engageMaxLimit = Math.max(dispathConfig.engageOffset, dispathConfig.engageMaxLimit, window.scrollY); if (dispathConfig.engageMaxLimit > window.scrollY) dispath("onScroll", "open"); } }; const setDispath = () => { if (!_.utils.isMobile()) { if (itemData["fireDesktopExitIntent"]) document.addEventListener("mousemove", dispathConfig.desktopExitIntentFunction); if (itemData["fireDesktopInactivity"]) document.addEventListener("mousemove", dispathConfig.desktopInactivityFunction); } else { if (itemData["fireMobileInactivity"]) document.addEventListener("touchmove", dispathConfig.mobileInactivityFunction); if (itemData["fireMobileOnLostFocus"]) { document.addEventListener("blur", dispathConfig.mobileOnLostFocusFunction); document.addEventListener("focus", dispathConfig.mobileOnFocusFunction); } if (itemData["fireMobileOnScroll"]) document.addEventListener("scroll", dispathConfig.mobileOnScrollFunction); } }; const clearDispath = () => { clearTimeout(dispathConfig.dispatchInactivityInterval); clearTimeout(dispathConfig.dispatchExitIntentInterval); document.removeEventListener("mousemove", dispathConfig.desktopExitIntentFunction); document.removeEventListener("mousemove", dispathConfig.desktopInactivityFunction); document.removeEventListener("touchmove", dispathConfig.mobileInactivityFunction); document.removeEventListener("blur", dispathConfig.mobileOnLostFocusFunction); document.removeEventListener("focus", dispathConfig.mobileOnFocusFunction); document.removeEventListener("scroll", dispathConfig.mobileOnScrollFunction); }; const targetHtmlSelector = itemData["targetHtmlSelector"] || "body"; const targets = _.utils.getElements(targetHtmlSelector); if (targets.length == 0) { debug(`Target element not found: ${targetHtmlSelector}`); return null; } const target = targets[0]; const css = ""; const script = document.createElement("script"); script.type = "text/javascript"; script.append(itemData["customJs"]); const element = document.createElement("div"); const init = () => { element.setAttribute("class", "etag-assist etag-assist" + itemData["id"]); element.innerHTML = css + DEFAULT_TEMPLATE; element.prepend(script); for (const el in components) { const obj = components[el]; obj.element = element.querySelector(obj.selector); obj.parent = obj.element.parentElement; if (obj.removeOnInit) obj.element.remove(); } !itemData["headerDisplay"] && components.header.element.remove(); itemData["headerImage"] && components.headerImage.element.setAttribute("src", itemData["headerImage"]); itemData["closeOnClickOutside"] && components.overlay.element.addEventListener("click", closeAssist); components.closeButton.element.addEventListener("click", closeAssist); if (itemData["contentDisplay"]) { components.content.parent.appendChild(components.content.element); if (itemData["contentPromoContent"]) { const el = components.contentPromo.element; el.querySelector("div").innerHTML = itemData["contentPromoContent"]; const link = components.ctaButton.element; link.setAttribute("href", itemData["contentPromoButtonLink"] || "#"); link.innerHTML = itemData["contentPromoButtonLabel"] || promoButtonLabel; const links = el.querySelectorAll("a"); for (const link of links) { link.setAttribute("href", _.api.track.url(link.getAttribute("href"), { origin: moduleName + "|content|" + link.innerText })); link.addEventListener("click", () => { _.api.track.interaction(link.innerHTML, "click", "redirect", { campaignId: itemData["id"], link: link.href, module: moduleName }); }); } } } if (itemData["productsDisplay"]) { components.products.parent.appendChild(components.products.element); productsViewButtonLabel = itemData["productsViewButtonLabel"] || productsViewButtonLabel; productsBuyButtonLabel = itemData["productsBuyButtonLabel"] || productsBuyButtonLabel; const filters = []; const cookie = _.utils.cookies.get(_.api.sessionName); if (itemData["productsFeedDisplay"]) filters.push({ slug: "related", label: itemData["productsFeedLabel"] || "Recomendações", url: _.api.urlCaptureService + "/products/" + cookie.uuid + "?limit=50", }); if (itemData["productsHistoricDisplay"]) filters.push({ slug: "history", label: itemData["productsHistoricLabel"] || "Histórico", url: _.api.urlCaptureService + "/history/" + cookie.sessionId + "?limit=50", }); for (const index in filters) createFilter(filters[index], +index == 0); const filterSearch = components.filterSearch.element; const searchInput = filterSearch.querySelector("input"); searchInput.setAttribute("placeholder", filterSearchPlaceholder); components.searchButton.element.addEventListener("click", () => { filterSearch.classList.add("open"); }); components.closeSearchButton.element.addEventListener("click", () => { filterSearch.classList.remove("open"); searchInput.value = ""; components.productsFilterItem.parent .querySelector(".active") .dispatchEvent(new Event("displayData")); }); searchInput.addEventListener("input", (evt) => { const target = evt.target; const value = target.value; if (value.length > 2) doSearch(value); else clearList(); }); components.backButton.element.addEventListener("click", closeProduct); } setDispath(); }; const add = () => { target.appendChild(element); element.offsetWidth; element.classList.add("show"); }; const remove = () => { target.removeChild(element); }; init(); return { remove: remove, add: add }; }; return { create: create, }; }; const DEFAULT_TEMPLATE = decodeURIComponent("%3Cdiv%20class%3D%22etag-assist-container%22%3E%0A%09%3Cdiv%20class%3D%22etag-assist-content-box%22%3E%0A%09%09%3Cdiv%20class%3D%22etag-assist-content-close%22%3E%3C%2Fdiv%3E%0A%09%09%3Cdiv%20class%3D%22etag-assist-content%22%3E%0A%09%09%09%3Cdiv%20class%3D%22etag-asssist-main%22%3E%0A%09%09%09%09%3Cdiv%20class%3D%22etag-assist-main-header%22%3E%0A%09%09%09%09%09%3Cdiv%20class%3D%22etag-assist-main-header-logo%22%3E%0A%09%09%09%09%09%09%3Cimg%20src%3D%22https%3A%2F%2Fs3.amazonaws.com%2Ffiles.etagdigital.com.br%2Fimagens%2Fetag-logo.png%22%20alt%3D%22Logo%22%20%2F%3E%0A%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%3Cdiv%20class%3D%22etag-assist-main-body%22%3E%0A%09%09%09%09%09%3Cdiv%20class%3D%22etag-assist-main-body-promo%22%3E%0A%09%09%09%09%09%09%3Cdiv%20class%3D%22etag-assist-main-body-promo-content%22%3E%0A%09%09%09%09%09%09%09%3Cdiv%20style%3D%22padding%3A%2020px%3B%22%3E%0A%09%09%09%09%09%09%09%09%3Cspan%3EParab%C3%A9ns!%3C%2Fspan%3E%3C%2Fbr%3E%0A%09%09%09%09%09%09%09%09Seu%20%3Cb%20style%3D%22font%3A%20revert%3B%22%3ETagassit%3C%2Fb%3E%20foi%20instalado%20com%20sucesso%20e%20agora%20est%C3%A1%0A%09%09%09%09%09%09%09%09funcionando.%3C%2Fbr%3E%0A%09%09%09%09%09%09%09%09Para%20personalizar%20seu%20conte%C3%BAdo%2C%20acesse%20sua%20%3Ca%0A%09%09%09%09%09%09%09%09%09style%3D%22%20text-decoration%3A%20underline%3B%20color%3A%20blue%3B%22%20href%3D%22%22%3Ep%C3%A1gina%20de%0A%09%09%09%09%09%09%09%09%09administra%C3%A7%C3%A3o%3C%2Fa%3E.%20Aqui%20voc%C3%AA%20pode%20personalizar%20e%20adaptar%20o%20banner%20de%20acordo%20com%20suas%0A%09%09%09%09%09%09%09%09prefer%C3%AAncias.%3C%2Fbr%3E%0A%09%09%09%09%09%09%09%09Se%20precisar%20de%20ajuda%20durante%20o%20processo%20de%20personaliza%C3%A7%C3%A3o%2C%20n%C3%A3o%20hesite%20em%20entrar%20em%0A%09%09%09%09%09%09%09%09contato%20com%20nossa%20equipe%20de%20suporte!%20%3C%2Fbr%3E%0A%09%09%09%09%09%09%09%09Obrigado!%0A%09%09%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%09%09%3Ca%20class%3D%22etag-button%20etag-assist-main-body-cta%20cta-etag-button%22%20href%3D%22%23%22%3EComprar%3C%2Fa%3E%0A%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%3Cdiv%20class%3D%22etag-assist-main-products%22%3E%0A%09%09%09%09%09%3Cdiv%20class%3D%22etag-assist-main-products-filter%22%3E%0A%09%09%09%09%09%09%3Cdiv%20class%3D%22etag-assist-main-products-selections%22%3E%0A%09%09%09%09%09%09%09%3Cdiv%20class%3D%22etag-assist-main-products-filter-item%22%3E%0A%09%09%09%09%09%09%09%09%3Cbutton%20class%3D%22etag-button%22%3E%3Cspan%20class%3D%22label%22%3EFiltro%3C%2Fspan%3E%3Cspan%0A%09%09%09%09%09%09%09%09%09%09class%3D%22qty%22%3E0%3C%2Fspan%3E%3C%2Fbutton%3E%0A%09%09%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%09%09%3Cdiv%20class%3D%22etag-assist-main-products-filter-search%22%3E%0A%09%09%09%09%09%09%09%3Cbutton%20class%3D%22etag-assist-search-etag-button%22%3E%3C%2Fbutton%3E%0A%09%09%09%09%09%09%09%3Cinput%20type%3D%22text%22%20placeholder%3D%22Pesquise...%22%20class%3D%22etag-assist-search-query%22%20%2F%3E%0A%09%09%09%09%09%09%09%3Cbutton%20class%3D%22etag-assist-search-close%22%3E%26times%3B%3C%2Fbutton%3E%0A%09%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%09%09%3Cdiv%20class%3D%22etag-assist-main-product-to-view%22%3E%0A%09%09%09%09%09%09%09%3Cdiv%20class%3D%22etag-assist-main-products-go-back%22%3E%0A%09%09%09%09%09%09%09%09%3Ca%20class%3D%22etag-go-back-etag-button%22%20href%3D%22javascript%3A%3B%22%3E%0A%09%09%09%09%09%09%09%09%09%3Cdiv%20class%3D%22etag-ponta%22%3E%3C%2Fdiv%3E%0A%09%09%09%09%09%09%09%09%09%3Cdiv%20class%3D%22etag-corpo%22%3E%3C%2Fdiv%3E%0A%09%09%09%09%09%09%09%09%09%3Cspan%3E%20Voltar%20%3C%2Fspan%3E%0A%09%09%09%09%09%09%09%09%3C%2Fa%3E%0A%09%09%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%09%3Cdiv%20class%3D%22etag-assist-main-products-list%22%3E%0A%09%09%09%09%09%09%3Cul%3E%0A%09%09%09%09%09%09%09%3Cli%20class%3D%22etag-products%20not-found%22%3E%0A%09%09%09%09%09%09%09%09%3Cp%3ENenhum%20registro%20foi%20encontrado!%3C%2Fp%3E%0A%09%09%09%09%09%09%09%3C%2Fli%3E%0A%09%09%09%09%09%09%09%3Cli%20class%3D%22etag-products%20product-item%22%3E%0A%09%09%09%09%09%09%09%09%3Cdiv%20class%3D%22etag-products-img%20image%22%3E%0A%09%09%09%09%09%09%09%09%09%3Cimg%20class%3D%22img-responsive%22%20src%3D%22%22%20%2F%3E%0A%09%09%09%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%09%09%09%09%3Cdiv%20class%3D%22etag-products-description%22%3E%0A%09%09%09%09%09%09%09%09%09%3Ch2%20class%3D%22name%22%3EFiltro%20de%20%C3%81gua%20Externo%20para%20Refrigerador%20Side%20By%20Side%20Electrolux%0A%09%09%09%09%09%09%09%09%09%3C%2Fh2%3E%0A%09%09%09%09%09%09%09%09%09%3Cdiv%20class%3D%22price%22%3ER%24%20129%2C90%3C%2Fdiv%3E%0A%09%09%09%09%09%09%09%09%09%3Cdiv%20class%3D%22etag-assist-main-products-selections%22%3E%0A%09%09%09%09%09%09%09%09%09%09%3Ca%20class%3D%22etag-products-view%20etag-button%20view%22%20href%3D%22%23%22%3EVisualizar%3C%2Fa%3E%0A%09%09%09%09%09%09%09%09%09%09%3Ca%20class%3D%22etag-products-buy%20etag-button%20buy%20url%22%20href%3D%22%23%22%3EComprar%3C%2Fa%3E%0A%09%09%09%09%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%09%09%09%3C%2Fli%3E%0A%09%09%09%09%09%09%3C%2Ful%3E%0A%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%09%3Cdiv%20class%3D%22etag-assist-main-product-view%22%3E%0A%09%09%09%09%09%09%3Cdiv%20class%3D%22etag-assist-product-view%22%3E%0A%09%09%09%09%09%09%09%3Cdiv%20class%3D%22etag-assist-product-view-image%20image%22%3E%0A%09%09%09%09%09%09%09%09%3Cimg%20src%3D%22https%3A%2F%2Fcdn.etagdigital.com%2Fsite-institucional%2F2023%2F04%2Fsimbolo.png%22%20%2F%3E%0A%09%09%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%09%09%09%3Cdiv%20class%3D%22etag-assist-product-view-name%20name%22%3E%3C%2Fdiv%3E%0A%09%09%09%09%09%09%09%3Cdiv%20class%3D%22etag-assist-product-view-price%20price%22%3E%3C%2Fdiv%3E%0A%09%09%09%09%09%09%09%3Cdiv%20class%3D%22etag-assist-product-view-description%20description%22%3E%3C%2Fdiv%3E%0A%09%09%09%09%09%09%3C%2Fdiv%3E%0A%0A%09%09%09%09%09%09%3Cdiv%20class%3D%22etag-product-action%22%3E%0A%09%09%09%09%09%09%09%3Ca%20class%3D%22etag-button%20url%22%20href%3D%22javascript%3A%3B%22%3EComprar%20agora%3C%2Fa%3E%0A%09%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%3C%2Fdiv%3E%0A%09%09%3C%2Fdiv%3E%0A%09%3C%2Fdiv%3E%0A%09%3Cdiv%20class%3D%22etag-assist-overlay%22%3E%3C%2Fdiv%3E%0A%3C%2Fdiv%3E"); const DEFAULT_STYLE = decodeURIComponent(".etag-assist-container%20%3A%3A-webkit-scrollbar%20%7B%0A%09width%3A%200px%3B%0A%7D%0A%0A.etag-assist%20*%20%7B%0A%09margin%3A%200%3B%0A%09padding%3A%200%3B%0A%09border%3A%200%3B%0A%09font%3A%20inherit%3B%0A%09vertical-align%3A%20baseline%3B%0A%09box-sizing%3A%20border-box%3B%0A%09position%3A%20relative%3B%0A%09background%3A%20none%3B%0A%09color%3A%20var(--content-txt-color)%3B%0A%7D%0A%0A.etag-assist%20%7B%0A%09--content-opacity%3A%200%3B%0A%09--color-default%3A%20%23fecc30%3B%0A%09--bg-color%3A%20%23ffffff%3B%0A%09--color-black%3A%20%23000000%3B%0A%09--shadow%3A%202px%203px%2011px%20%2300000087%3B%0A%09--component-transition%3A%200.4s%20linear%3B%0A%09--content-txt-color%3A%20rgb(49%2C%2049%2C%2049)%3B%0A%09--btn-close-tx-color%3A%20%23e7e7e7%3B%0A%09--btn-close-tx-color-hover%3A%20%23939393%3B%0A%09--btn-close-bg-color%3A%20%23202020%3B%0A%09--btn-close-bg-color-hover%3A%20%23050505%3B%0A%0A%09position%3A%20fixed%3B%0A%09top%3A%200%3B%0A%09right%3A%200%3B%0A%09height%3A%20100%25%3B%0A%09z-index%3A%202147483646%20!important%3B%0A%09transition%3A%200.9s%20cubic-bezier(0.165%2C%200.84%2C%200.44%2C%201)%3B%0A%09font-family%3A%20%22Montserrat%22%2C%20sans-serif%3B%0A%09pointer-events%3A%20none%3B%0A%7D%0A%0A.etag-assist-hide%20%7B%0A%09display%3A%20none%3B%0A%7D%0A%0A.etag-assist-container%20%7B%0A%09height%3A%20100%25%3B%0A%09right%3A%20-105%25%3B%0A%09transition%3A%20right%20var(--component-transition)%3B%0A%7D%0A%0A.etag-assist%20a%20%7B%0A%09text-decoration%3A%20none%3B%0A%7D%0A%0A.etag-assist.show%20%7B%0A%09pointer-events%3A%20auto%3B%0A%7D%0A%0A.etag-assist.show%20%3E%20.etag-assist-container%20%3E%20.etag-assist-overlay%20%7B%0A%09--content-opacity%3A%201%3B%0A%09pointer-events%3A%20auto%3B%0A%7D%0A%0A.etag-assist.show%20%3E%20.etag-assist-container%20%7B%0A%09right%3A%200%3B%0A%7D%0A%0A.etag-assist-container.show%20.etag-assist-content%20%7B%0A%7D%0A%0A.etag-assist-content-box%20%7B%0A%09height%3A%20100%25%3B%0A%09min-width%3A%20390px%3B%0A%09z-index%3A%202%3B%0A%09overflow%3A%20visible%3B%0A%09display%3A%20inline-flex%3B%0A%7D%0A%0A.etag-assist-overlay%20%7B%0A%09position%3A%20fixed%3B%0A%09left%3A%200px%3B%0A%09top%3A%200px%3B%0A%09width%3A%20100%25%3B%0A%09height%3A%20100%25%3B%0A%09background%3A%20%23363636cc%3B%0A%09opacity%3A%20var(--content-opacity)%3B%0A%09z-index%3A%201%3B%0A%09transition%3A%201s%20cubic-bezier(0.165%2C%200.84%2C%200.44%2C%201)%3B%0A%09pointer-events%3A%20none%3B%0A%09backdrop-filter%3A%20blur(2px)%3B%0A%7D%0A%0A.etag-assist-content%20%7B%0A%09background%3A%20var(--bg-color)%3B%0A%09height%3A%20100%25%3B%0A%09max-width%3A%20350px%3B%0A%09width%3A%20350px%3B%0A%09box-shadow%3A%20var(--shadow)%3B%0A%09overflow-y%3A%20auto%3B%0A%7D%0A%0A.etag-assist-content%20img%20%7B%0A%09transform%3A%20scale(1)%3B%0A%7D%0A%0A.etag-assist-content%20img%3Ahover%20%7B%0A%09transform%3A%20scale(1)%3B%0A%7D%0A%0A.etag-assist-content-close%20%7B%0A%09--component-transition%3A%200.2s%20ease-out%3B%0A%09background-color%3A%20var(--btn-close-bg-color)%3B%0A%09height%3A%2040px%3B%0A%09width%3A%2040px%3B%0A%09border-radius%3A%206px%200px%200px%206px%3B%0A%09cursor%3A%20pointer%3B%0A%09transition%3A%20all%20var(--component-transition)%3B%0A%09-moz-transition%3A%20all%20var(--component-transition)%3B%0A%09-webkit-transition%3A%20all%20var(--component-transition)%3B%0A%09-o-transition%3A%20all%20var(--component-transition)%3B%0A%09-ms-transition%3A%20all%20var(--component-transition)%3B%0A%09box-shadow%3A%20var(--shadow)%3B%0A%7D%0A%0A.etag-assist-content-close%3Ahover%20%7B%0A%09background-color%3A%20var(--btn-close-bg-color-hover)%3B%0A%7D%0A%0A.etag-assist-content-close%3Ahover%3A%3Aafter%2C%0A.etag-assist-content-close%3Ahover%3A%3Abefore%20%7B%0A%09background-color%3A%20var(--btn-close-tx-color-hover)%3B%0A%7D%0A%0A.etag-assist-content-close%3A%3Aafter%2C%0A.etag-assist-content-close%3A%3Abefore%20%7B%0A%09background-color%3A%20var(--btn-close-tx-color)%3B%0A%09position%3A%20absolute%3B%0A%09content%3A%20%22%22%3B%0A%09display%3A%20block%3B%0A%09width%3A%2020px%3B%0A%09height%3A%202px%3B%0A%09border-radius%3A%205px%3B%0A%09margin%3A%20auto%3B%0A%09top%3A%200%3B%0A%09bottom%3A%200%3B%0A%09left%3A%200%3B%0A%09right%3A%200%3B%0A%7D%0A%0A.etag-assist-content-close%3A%3Aafter%20%7B%0A%09transform%3A%20rotate(-45deg)%3B%0A%7D%0A%0A.etag-assist-content-close%3A%3Abefore%20%7B%0A%09transform%3A%20rotate(45deg)%3B%0A%7D%0A%0A.etag-assist-main-header%20%7B%0A%09top%3A%200%3B%0A%09position%3A%20sticky%3B%0A%09z-index%3A%2010%3B%0A%09background%3A%20white%3B%0A%09text-align%3A%20center%3B%0A%7D%0A%0A.etag-assist-main-header-logo%20%7B%0A%09max-width%3A%20100%25%3B%0A%09max-height%3A%20100%25%3B%0A%7D%0A.etag-assist-main-header-logo%20img%20%7B%0A%09object-fit%3A%20contain%3B%0A%09max-width%3A%20100%25%3B%0A%09max-height%3A%20100%25%3B%0A%7D%0A%0A.etag-assist-main-body-content%20%7B%0A%09text-align%3A%20center%3B%0A%09font-size%3A%2012px%3B%0A%09padding%3A%205px%200px%3B%0A%7D%0A%0A.etag-assist-main-body%20%7B%0A%09padding%3A%200px%3B%0A%09text-align%3A%20center%3B%0A%7D%0A%0A.etag-assist-main-body%20img%20%7B%0A%09max-width%3A%20100%25%3B%0A%09max-height%3A%20100%25%3B%0A%09object-fit%3A%20contain%3B%0A%7D%0A%0A.etag-assist-main-body%20.etag-button%20%7B%0A%09background-color%3A%20var(--color-default)%3B%0A%09color%3A%20%23ffffff%3B%0A%09display%3A%20block%3B%0A%09display%3A%20block%3B%0A%09font-weight%3A%20700%3B%0A%09border-radius%3A%204px%3B%0A%09line-height%3A%2014px%3B%0A%09margin%3A%208px%2030px%200%2030px%3B%0A%09padding%3A%2016px%200%3B%0A%09text-align%3A%20center%3B%0A%09text-transform%3A%20uppercase%3B%0A%7D%0A%0A.etag-assist-main-products-filter%20%7B%0A%09position%3A%20relative%3B%0A%09background%3A%20%23fff%3B%0A%09box-shadow%3A%201px%202px%203px%20%23999%3B%0A%09border-top%3A%201px%20solid%20%23eee%3B%0A%09height%3A%2050px%3B%0A%09margin%3A%200%200%207px%200%3B%0A%09padding%3A%200%2016px%3B%0A%09display%3A%20flex%3B%0A%09overflow%3A%20hidden%3B%0A%7D%0A%0A.etag-filter-fixed%20%7B%0A%09position%3A%20fixed%3B%0A%09top%3A%20100px%3B%0A%09max-width%3A%20350px%3B%0A%09z-index%3A%2050%3B%0A%09width%3A%20100%25%3B%0A%7D%0A%0A.etag-assist-main-products-filter%20.etag-assist-main-products-selections%20%7B%0A%09display%3A%20flex%3B%0A%7D%0A%0A.etag-assist-main-products-filter-search%20%7B%0A%09position%3A%20absolute%3B%0A%09left%3A%2089%25%3B%0A%09display%3A%20flex%3B%0A%09align-items%3A%20center%3B%0A%09background-color%3A%20%23fff%3B%0A%09padding-left%3A%2010px%3B%0A%7D%0A%0A.etag-assist-main-products-filter-search.open%20%7B%0A%09left%3A%200%3B%0A%7D%0A%0A.etag-assist-main-products-filter-search.open%20.etag-assist-search-etag-button%20%7B%0A%09scale%3A%201%3B%0A%7D%0A%0A.etag-assist-main-products-filter-search%20input%20%7B%0A%20%20%20%20outline%3A%200%3B%0A%20%20%20%20border-radius%3A%200%3B%0A%20%20%20%20border%3A%200%3B%0A%20%20%20%20font-size%3A%2012px%3B%0A%20%20%20%20color%3A%20%23999%3B%0A%20%20%20%20border%3A%200%3B%0A%20%20%20%20width%3A%20260px%3B%0A%20%20%20%20height%3A%2030px%3B%0A%20%20%20%20margin%3A%2010px%2010px%3B%0A%20%20%20%20box-shadow%3A%20none%3B%0A%7D%0A%0A.etag-assist-main-products-filter-search%20input%3Afocus%20%7B%20%0A%20%20%20%20box-shadow%3A%20none%3B%0A%7D%0A%0A.etag-assist-main-products-filter%20%3E%20div%20%7B%0A%09white-space%3A%20nowrap%3B%0A%7D%0A%0A.etag-assist-main-products-filter%20.etag-button%20%7B%0A%09color%3A%20var(--color-black)%3B%0A%09display%3A%20inline-block%3B%0A%09font-size%3A%2012px%3B%0A%09line-height%3A%2024px%3B%0A%09margin%3A%2012px%2012px%200%200%3B%0A%0A%09background-color%3A%20transparent%3B%0A%09background-repeat%3A%20no-repeat%3B%0A%09border%3A%20none%3B%0A%09cursor%3A%20pointer%3B%0A%09overflow%3A%20hidden%3B%0A%09outline%3A%20none%3B%0A%7D%0A%0A.etag-assist-main-products-filter%20.etag-button%20%3E%20.qty%20%7B%0A%09background-color%3A%20var(--color-default)%3B%0A%09color%3A%20%23ffffff%3B%0A%09border-radius%3A%2020px%3B%0A%09width%3A%2024px%3B%0A%09line-height%3A%2024px%3B%0A%09text-align%3A%20center%3B%0A%09display%3A%20inline-block%3B%0A%09margin-left%3A%202px%3B%0A%7D%0A%0A.etag-assist-main-product-to-view%20%7B%0A%09display%3A%20none%3B%0A%09align-items%3A%20center%3B%0A%7D%0A%0A.etag-go-back-etag-button%20%7B%0A%09color%3A%20var(--color-black)%3B%0A%09display%3A%20flex%3B%0A%09align-items%3A%20center%3B%0A%7D%0A.etag-go-back-etag-button%20span%20%7B%0A%09margin-left%3A%2010px%3B%0A%09font-size%3A%2012px%3B%0A%7D%0A%0A.etag-go-back-etag-button%20.etag-ponta%20%7B%0A%09width%3A%200%3B%0A%09height%3A%200%3B%0A%09padding%3A%205px%3B%0A%09box-shadow%3A%202px%20-2px%200px%200px%20%23000%20inset%3B%0A%09border%3A%20solid%20transparent%3B%0A%09transform%3A%20rotate(45deg)%3B%0A%09border-radius%3A%203px%3B%0A%7D%0A%0A.etag-go-back-etag-button%20.etag-corpo%20%7B%0A%09width%3A%2014px%3B%0A%09height%3A%202px%3B%0A%09background%3A%20%23000%3B%0A%09position%3A%20absolute%3B%0A%09margin-left%3A%206%25%3B%0A%09border-radius%3A%202px%3B%0A%7D%0A%0A.etag-assist-search-etag-button%3A%3Abefore%20%7B%0A%09content%3A%20%22%22%3B%0A%09box-sizing%3A%20border-box%3B%0A%09position%3A%20relative%3B%0A%09display%3A%20block%3B%0A%09width%3A%2014px%3B%0A%09height%3A%2014px%3B%0A%09border%3A%203px%20solid%3B%0A%09border-radius%3A%20100%25%3B%0A%09margin-left%3A%200px%3B%0A%09margin-top%3A%20-8px%3B%0A%7D%0A%0A.etag-assist-search-etag-button%3A%3Aafter%20%7B%0A%09content%3A%20%22%22%3B%0A%09display%3A%20block%3B%0A%09box-sizing%3A%20border-box%3B%0A%09position%3A%20absolute%3B%0A%09border-radius%3A%203px%3B%0A%09width%3A%203px%3B%0A%09height%3A%2010px%3B%0A%09background%3A%20currentColor%3B%0A%09transform%3A%20rotate(-45deg)%3B%0A%09top%3A%2010px%3B%0A%09left%3A%2012px%3B%0A%7D%0A%0A.etag-assist-search-etag-button%20%7B%0A%09width%3A%2025px%3B%0A%09height%3A%2025px%3B%0A%09scale%3A%201.2%3B%0A%09cursor%3A%20pointer%3B%0A%09background-color%3A%20%23ffffff00%3B%0A%09color%3A%20var(--color-default)%3B%0A%09border%3A%20none%3B%0A%7D%0A%0A.etag-assist-search-close%20%7B%0A%09cursor%3A%20pointer%3B%0A%09font-size%3A%2030px%3B%0A%09background-color%3A%20%23ffffff00%3B%0A%09color%3A%20var(--color-default)%3B%0A%09border%3A%20none%3B%0A%7D%0A%0A.etag-assist-search-close%3Ahover%20%7B%0A%09color%3A%20red%3B%0A%7D%0A%0A.etag-assist-main-products%20%7B%0A%7D%0A%0A.etag-assist-main-products-list%20%7B%0A%09padding%3A%200px%2010px%3B%0A%7D%0A%0A.etag-assist-main-products-list%20p%20%7B%0A%09font-size%3A%2012px%3B%0A%7D%0A%0A.etag-assist-main-products-list%20li%20%7B%0A%09display%3A%20flex%3B%0A%7D%0A%0A.etag-assist-main-products-list%20h2%20%7B%0A%09font-size%3A%2012px%3B%0A%09color%3A%20%23000000%3B%0A%09padding%3A%200%200%208px%3B%0A%7D%0A%0A.etag-assist-main-products-list%20.price%20%7B%0A%09font-size%3A%2014px%3B%0A%09font-weight%3A%20700%3B%0A%09padding%3A%200%200%208px%3B%0A%7D%0A%0A.etag-assist-main-products-list%20.etag-products%20%7B%0A%09padding-block%3A%2010px%3B%0A%09border-bottom%3A%201px%20solid%20%23eee%3B%0A%7D%0A.etag-assist-main-products-list%20.etag-products-img%20%7B%0A%09display%3A%20flex%3B%0A%09justify-content%3A%20center%3B%0A%09align-items%3A%20center%3B%0A%09width%3A%2020%25%3B%0A%7D%0A.etag-assist-main-products-list%20.etag-products-description%20%7B%0A%09width%3A%2080%25%3B%0A%7D%0A%0A.etag-assist-main-products-list%20img%20%7B%0A%09max-width%3A%20100%25%3B%0A%09height%3A%2082px%3B%0A%09width%3A%2082px%3B%0A%09object-fit%3A%20contain%3B%0A%09padding-right%3A%2010px%3B%0A%7D%0A%0A.etag-assist-main-products-list%20.etag-button%20%7B%0A%09background-color%3A%20var(--color-default)%3B%0A%09color%3A%20%23ffffff%3B%0A%09display%3A%20block%3B%0A%09line-height%3A%2014px%3B%0A%09padding%3A%2010px%200%3B%0A%09text-align%3A%20center%3B%0A%09text-transform%3A%20uppercase%3B%0A%09font-size%3A%2012px%3B%0A%09border%3A%201px%20solid%20var(--color-default)%3B%0A%7D%0A%0A.etag-assist-main-products-list%20.etag-assist-main-products-selections%20%7B%0A%09display%3A%20flex%3B%0A%7D%0A%0A.etag-assist-main-products-list%20.view%20%7B%0A%09width%3A%2048%25%3B%0A%09margin-right%3A%205px%3B%0A%09color%3A%20var(--color-default)%3B%0A%09background%3A%20%23fff0%3B%0A%7D%0A%0A.etag-assist-main-products-list%20.buy%20%7B%0A%09width%3A%2048%25%3B%0A%09margin-left%3A%205px%3B%0A%7D%0A%0A.etag-assist-main-product-view%20%7B%0A%7D%0A%0A.etag-assist-product-view%20%7B%0A%09padding%3A%2016px%2024px%2082px%3B%0A%7D%0A%0A.etag-assist-product-view-image%20%7B%0A%09display%3A%20flex%3B%0A%09justify-content%3A%20center%3B%0A%09align-items%3A%20center%3B%0A%7D%0A%0A.etag-assist-product-view-image%20img%20%7B%0A%09max-width%3A%20100%25%3B%0A%7D%0A%0A.etag-assist-product-view-name%20%7B%0A%20%20%20%20font-weight%3A%20700%3B%0A%20%20%20%20margin-bottom%3A%2010px%3B%0A%09font-size%3A13px%3B%0A%7D%0A.etag-assist-product-view-price%20%7B%0A%20%20%20%20font-weight%3A%20700%3B%0A%20%20%20%20margin-bottom%3A%2010px%3B%0A%7D%0A%0A.etag-assist-product-view-description%20%7B%0A%09font-size%3A%2015px%3B%0A%09padding-block%3A%2010px%3B%0A%7D%0A%0A.etag-product-action%20%7B%0A%09position%3A%20fixed%3B%0A%09bottom%3A%200%3B%0A%09background%3A%20%23fff%3B%0A%09box-shadow%3A%200%20-2px%203px%20%23999%3B%0A%09width%3A%20100%25%3B%0A%09max-width%3A%20350px%3B%0A%09padding%3A%2010px%3B%0A%09z-index%3A%201001%3B%0A%7D%0A.etag-product-action%20a%20%7B%0A%09background-color%3A%20var(--color-default)%3B%0A%09color%3A%20%23fff%3B%0A%09display%3A%20block%3B%0A%09font-size%3A%2012px%3B%0A%09font-weight%3A%20700%3B%0A%09border-radius%3A%204px%3B%0A%09line-height%3A%2024px%3B%0A%09margin%3A%200%3B%0A%09padding%3A%208px%200%3B%0A%09text-align%3A%20center%3B%0A%09text-transform%3A%20uppercase%3B%0A%7D%0A%0A.etag-assist-main-box-header%20%7B%0A%09height%3A%20100px%3B%0A%09padding%3A%2020px%2030px%3B%0A%09text-align%3A%20center%3B%0A%0A%09-webkit-box-sizing%3A%20border-box%3B%0A%09-moz-box-sizing%3A%20border-box%3B%0A%09box-sizing%3A%20border-box%3B%0A%7D%0A%0A.etag-assist-main-box-header%20%3E%20img%20%7B%0A%09position%3A%20relative%3B%0A%09max-width%3A%20100%25%3B%0A%09max-height%3A%20100%25%3B%0A%7D%0A%0A.etag-assist-main-box-main%20%7B%0A%09padding%3A%200%200%2020px%200%3B%0A%09overflow-x%3A%20hidden%3B%0A%09overflow-y%3A%20scroll%3B%0A%7D%0A%0A.etag-assist-main-box-main%20%3E%20p%20%7B%0A%09color%3A%20var(--color-default)%3B%0A%09text-align%3A%20center%3B%0A%09font-size%3A%2012px%3B%0A%09position%3A%20relative%3B%0A%09padding%3A%200%2030px%2020px%2030px%3B%0A%09margin%3A%200%3B%0A%7D%0A%0A.etag-assist-main-box-main%20%3E%20p%3Aafter%20%7B%0A%09content%3A%20%22%22%3B%0A%09position%3A%20absolute%3B%0A%09bottom%3A%200%3B%0A%09left%3A%2035%25%3B%0A%09height%3A%201px%3B%0A%09width%3A%2030%25%3B%0A%09border-bottom%3A%201px%20solid%20var(--color-default)%3B%0A%09margin-bottom%3A%2010px%3B%0A%7D%0A%0A.etag-assist-main-box-main%20%3E%20img%20%7B%0A%09display%3A%20block%3B%0A%09width%3A%20100%25%3B%0A%09max-width%3A%20340px%3B%0A%09margin%3A%200%20auto%2010px%20auto%3B%0A%7D%0A%0A.etag-assist-content-close%20%3E%20a%20%7B%0A%09display%3A%20block%3B%0A%09width%3A%2040px%3B%0A%09height%3A%2040px%3B%0A%09cursor%3A%20pointer%3B%0A%09opacity%3A%201%3B%0A%7D%0A%0A.etag-assist-content-close%20%3E%20a%3Ahover%20%7B%0A%09opacity%3A%200.6%3B%0A%7D%0A%0A.etag-assist-content-close%20%3E%20a%3Abefore%2C%0A.etag-assist-content-close%20%3E%20a%3Aafter%20%7B%0A%09position%3A%20absolute%3B%0A%09left%3A%2017px%3B%0A%09top%3A%206px%3B%0A%09content%3A%20%22%20%22%3B%0A%09height%3A%2027px%3B%0A%09width%3A%206px%3B%0A%09background-color%3A%20%23fff%3B%0A%09border-radius%3A%204px%3B%0A%7D%0A%0A.etag-assist-content-close%20%3E%20a%3Abefore%20%7B%0A%09transform%3A%20rotate(45deg)%3B%0A%7D%0A%0A.etag-assist-content-close%20%3E%20a%3Aafter%20%7B%0A%09transform%3A%20rotate(-45deg)%3B%0A%7D%0A%0A.etag-assist-content-box-etag-assist-search-etag-button%20%7B%0A%09position%3A%20relative%3B%0A%09display%3A%20inline-block%3B%0A%09background%3A%20%23fff%3B%0A%09border-radius%3A%2030px%3B%0A%09height%3A%206px%3B%0A%09width%3A%206px%3B%0A%09border%3A%202px%20solid%20var(--color-default)%3B%0A%09float%3A%20right%3B%0A%09margin%3A%2018px%200%200%200%20!important%3B%0A%09opacity%3A%201%3B%0A%7D%0A%0A.etag-assist-content-box-etag-assist-search-etag-button%3Aafter%20%7B%0A%09content%3A%20%22%22%3B%0A%09height%3A%202px%3B%0A%09width%3A%205px%3B%0A%09background%3A%20var(--color-default)%3B%0A%09position%3A%20absolute%3B%0A%09top%3A%207px%3B%0A%09left%3A%205px%3B%0A%09-webkit-transform%3A%20rotate(45deg)%3B%0A%09-moz-transform%3A%20rotate(45deg)%3B%0A%09-ms-transform%3A%20rotate(45deg)%3B%0A%09-o-transform%3A%20rotate(45deg)%3B%0A%7D%0A%0A.etag-assist-main-products-filter-item%20%7B%0A%09opacity%3A%200.5%3B%0A%7D%0A%0A.etag-assist-main-products-filter-item.active%20%7B%0A%09opacity%3A%201%3B%0A%7D%0A%0A.etag-assist-main-products.product-view%20.etag-assist-main-products-filter-search%2C%0A.etag-assist-main-products.product-view%20.etag-assist-main-products-selections%2C%0A.etag-assist-main-products.product-view%20.etag-assist-main-products-list%20%7B%0A%09display%3A%20none%3B%0A%7D%0A%0A.etag-assist-main-products.product-view%20.etag-assist-main-product-to-view%20%7B%0A%09display%3A%20block%3B%0A%7D%0A%0A.etag-assist-main-products-go-back%20%7B%0A%09padding%3A%2017px%200%3B%0A%7D%0A%0A%40media%20(max-width%3A%20390px)%20%7B%0A%09.etag-assist-content-box%20%7B%0A%09%09min-width%3A%20340px%3B%0A%09%7D%0A%0A%09.etag-assist-content%20%7B%0A%09%09max-width%3A%20300px%3B%0A%09%09width%3A%20300px%3B%0A%09%7D%0A%0A%09.etag-product-action%20%7B%0A%09%09max-width%3A%20300px%3B%0A%09%7D%0A%0A%09.etag-filter-fixed%20%7B%0A%09%09max-width%3A%20300px%3B%0A%09%7D%0A%7D"); const tagAssist = TagAssist(); const campaigns = {}; function init() { debug("Initialize module"); data = data.map((ta) => { if (ta.children) ta.children = ta.children.map((tac) => ({ ...tac, contentPromoContent: decodeURIComponent(tac.contentPromoContent), customCss: decodeURIComponent(tac.customCss), customJs: decodeURIComponent(tac.customJs) })); return { ...ta, contentPromoContent: decodeURIComponent(ta.contentPromoContent), customCss: decodeURIComponent(ta.customCss), customJs: decodeURIComponent(ta.customJs) }; }); for (let item of data) { if (item.active && item.children) { const options = item.children.concat([item]); item = options[Math.floor(Math.random() * options.length)]; } const name = item["name"]; const delay = item.delay || 0; debug(`Initializing item ${name} in ${delay}ms`, item); setTimeout(() => { const apply = _.utils.applyCampaign(item, moduleName); debug(`#### Assist ${name}`, "Apply:", apply); if (apply) campaigns[name] = tagAssist.create(item); }, delay); } } function update() { debug("Update module"); for (const item of data) { const name = item["name"]; const apply = _.utils.applyCampaign(item, moduleName); const campaign = campaigns[name]; debug(`Updateting item ${name}`, item); debug(`#### Assist ${name}`, "Apply:", apply); if (apply) !campaign && (campaigns[name] = tagAssist.create(item)); else campaign && campaign.remove(); } } init(); return { name: moduleName, update: update, };},"tag-wid":(data, root) => { const _ = root; const moduleName = "tag-wid"; const debug = (value, ...args) => { _.utils.debug(`%c[${moduleName}] ` + value, "color:#ffca99; padding-top:10px", ...args); }; const CreateDragElement = (objectDrag, objectTarget, badge) => { let posInit = { x: 0, y: 0, }; function dragStart(e) { e = e || window.event; e.preventDefault(); let target = e; if (e.type === "touchstart") { target = e.touches[0]; document.addEventListener("touchend", dragEnd, false); document.addEventListener("touchmove", dragElement, false); } else { document.addEventListener("mouseup", dragEnd, false); document.addEventListener("mousemove", dragElement, false); } posInit = { x: target.clientX, y: target.clientY, }; } function dragElement(e) { e = e || window.event; e.preventDefault(); const target = e.type === "touchmove" ? e.touches[0] : e; const pos = { x: posInit.x - target.clientX, y: posInit.y - target.clientY, }; posInit = { x: target.clientX, y: target.clientY, }; const yOffset = Math.min(Math.max(0, objectTarget.offsetTop - pos.y), window.innerHeight - badge.clientHeight); objectTarget.style.top = yOffset + "px"; } function dragEnd(e) { if (e.type === "touchend") { document.removeEventListener("touchend", dragEnd, false); document.removeEventListener("touchmove", dragElement, false); } else { document.removeEventListener("mouseup", dragEnd, false); document.removeEventListener("mousemove", dragElement, false); } } objectDrag.addEventListener("touchstart", dragStart, false); objectDrag.addEventListener("mousedown", dragStart, false); }; const DEFAULT_TEMPLATE = decodeURIComponent("%3Cdiv%20class%3D%22etag-tagwid-container%22%3E%0A%20%20%20%20%3Cdiv%20class%3D%22etag-tagwid-badge%22%3E%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22etag-tagwid-badge-container%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cimg%20src%3D%22https%3A%2F%2Fs3.amazonaws.com%2Ffiles.etagdigital.com.br%2Fassets%2Ftagwidget%2Fimages%2Ficon.png%22%20alt%3D%22Wid%20badge%22%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22etag-tagwid-drag-component%22%3E%3C%2Fdiv%3E%0A%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%3Cdiv%20class%3D%22etag-tagwid-content%20bottom%22%3E%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22etag-tagwid-content-header%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22etag-tagwid-content-header-image%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cimg%20src%3D%22https%3A%2F%2Fs3.amazonaws.com%2Ffiles.etagdigital.com.br%2Fassets%2Ftagwidget%2Fimages%2Flogo-horizontal.png%22%20alt%3D%22Image%20header%22%20%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22etag-tagwid-content-header-close%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%22etag-tagwid-content-value%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20style%3D%22padding%3A%2020px%3Btext-align%3A%20center%3B%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%3EParab%C3%A9ns!%3C%2Fspan%3E%3C%2Fbr%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Seu%20%3Cb%20style%3D%22font%3A%20revert%3B%22%3ETagwid%3C%2Fb%3E%20foi%20instalado%20com%20sucesso%20e%20agora%20est%C3%A1%20funcionando.%3C%2Fbr%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Para%20personalizar%20seu%20conte%C3%BAdo%2C%20acesse%20sua%20%3Ca%20style%3D%22%20text-decoration%3A%20underline%3B%20color%3A%20blue%3B%22%20href%3D%22%22%3Ep%C3%A1gina%20de%20administra%C3%A7%C3%A3o%3C%2Fa%3E.%20Aqui%20voc%C3%AA%20pode%20personalizar%20e%20adaptar%20o%20banner%20de%20acordo%20com%20suas%20prefer%C3%AAncias.%3C%2Fbr%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Se%20precisar%20de%20ajuda%20durante%20o%20processo%20de%20personaliza%C3%A7%C3%A3o%2C%20n%C3%A3o%20hesite%20em%20entrar%20em%20contato%20com%20nossa%20equipe%20de%20suporte!%20%3C%2Fbr%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Obrigado!%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%3C%2Fdiv%3E%0A%3C%2Fdiv%3E"); const DEFAULT_STYLE = decodeURIComponent(".etag-tagwid%20*%20%7B%0A%09box-sizing%3A%20border-box%3B%0A%09margin%3A%200%3B%0A%09padding%3A%200%3B%0A%09border%3A%200%3B%0A%09font%3A%20inherit%3B%0A%09background%3A%20none%3B%0A%09color%3A%20var(--wid-content-txt-color)%3B%0A%7D%0A%0A.etag-tagwid%20%7B%0A%09--wid-bg-color%3A%20%23ffffffcd%3B%0A%09--wid-shadow%3A%202px%203px%2011px%20%23a5a5a587%3B%0A%09--wid-pos-top%3A%205%3B%0A%09--wid-pos-left%3A%20100vw%3B%0A%09--wid-font-family%3A%20%22Montserrat%22%2C%20sans-serif%3B%0A%09--cta-main-color%3A%20%23204986%3B%0A%09--badge-background%3A%20%23ffffff%3B%0A%09--badge-img-height%3A%20100%25%3B%0A%09--badge-container-padding%3A%208px%3B%0A%09--drag-component-bg%3A%20%2300000055%3B%0A%09--drag-component-color%3A%20%2300000088%3B%0A%09--btn-close-stick-color%3A%20var(--wid-content-txt-color)%3B%0A%09--btn-close-hover-bg%3A%20%23dddddd38%3B%0A%09--wid-content-txt-color%3A%20rgb(49%2C%2049%2C%2049)%3B%0A%09--wid-content-padding%3A%201.2rem%201rem%3B%0A%09--wid-content-radius%3A%201.2rem%201rem%3B%0A%0A%09position%3A%20fixed%3B%0A%09top%3A%20var(--wid-pos-top)%3B%0A%09left%3A%20var(--wid-pos-left)%3B%0A%09z-index%3A%202147483645%20!important%3B%0A%09font-family%3A%20var(--wid-font-family)%3B%0A%0A%09-webkit-font-smoothing%3A%20antialiased%3B%0A%09-moz-osx-font-smoothing%3A%20auto%3B%0A%0A%09--wid-component-transition%3A%200.4s%20linear%3B%0A%09transition%3A%20right%20var(--wid-component-transition)%3B%0A%09-moz-transition%3A%20right%20var(--wid-component-transition)%3B%0A%09-webkit-transition%3A%20right%20var(--wid-component-transition)%3B%0A%09-o-transition%3A%20right%20var(--wid-component-transition)%3B%0A%09-ms-transition%3A%20right%20var(--wid-component-transition)%3B%0A%7D%0A%0A.etag-tagwid-badge%20%7B%0A%09background%3A%20var(--badge-background)%3B%0A%09box-shadow%3A%20var(--wid-shadow)%3B%0A%09display%3A%20flex%3B%0A%09width%3A%2071px%3B%0A%09height%3A%2056px%3B%0A%09backdrop-filter%3A%20blur(30px)%3B%0A%09cursor%3A%20pointer%3B%0A%09align-items%3A%20center%3B%0A%09position%3A%20fixed%3B%0A%09border-radius%3A%2012px%200px%200px%2012px%3B%0A%09right%3A%20-15px%3B%0A%0A%09transition%3A%20all%20var(--wid-component-transition)%3B%0A%09-moz-transition%3A%20all%20var(--wid-component-transition)%3B%0A%09-webkit-transition%3A%20all%20var(--wid-component-transition)%3B%0A%09-o-transition%3A%20all%20var(--wid-component-transition)%3B%0A%09-ms-transition%3A%20all%20var(--wid-component-transition)%3B%0A%7D%0A%0A.etag-tagwid-badge%3Ahover%20%7B%0A%09right%3A%200px%3B%0A%7D%0A%0A.etag-tagwid-drag-component%20%7B%0A%09position%3A%20relative%3B%0A%09display%3A%20flex%3B%0A%09cursor%3A%20move%3B%0A%09width%3A%2015px%3B%0A%09height%3A%2056px%3B%0A%7D%0A%0A.etag-tagwid-drag-component%3Aafter%20%7B%0A%09content%3A%20%22%E2%88%99%22%3B%0A%09position%3A%20absolute%3B%0A%09width%3A%20100%25%3B%0A%09height%3A%20100%25%3B%0A%09font-size%3A%20xx-large%3B%0A%09padding-left%3A%201px%3B%0A%09line-height%3A%2040px%3B%0A%09background%3A%20var(--drag-component-bg)%3B%0A%09color%3A%20var(--drag-component-color)%3B%0A%0A%09text-shadow%3A%200%206px%20var(--drag-component-color)%2C%200%2012px%20var(--drag-component-color)%2C%200%2018px%20var(--drag-component-color)%2C%0A%09%095px%200%20var(--drag-component-color)%2C%205px%206px%20var(--drag-component-color)%2C%205px%2012px%20var(--drag-component-color)%2C%0A%09%095px%2018px%20var(--drag-component-color)%3B%0A%7D%0A%0A.tag-tagwid-drag-component%20img%20%7B%0A%09margin%3A%2016px%204px%3B%0A%7D%0A%0A.etag-tagwid-badge-container%20%7B%0A%09padding%3A%20var(--badge-container-padding)%3B%0A%09width%3A%2056px%3B%0A%09display%3A%20flex%3B%0A%09justify-content%3A%20center%3B%0A%09height%3A%20100%25%3B%0A%7D%0A%0A.etag-tagwid-badge-container%20img%20%7B%0A%09height%3A%20var(--badge-img-height)%3B%0A%7D%0A%0A.etag-tagwid-content.invisible%20%7B%0A%09--content-opacity%3A%200%3B%0A%09pointer-events%3A%20none%3B%0A%7D%0A%0A.etag-tagwid-content%20%7B%0A%09display%3A%20var(--content-display%2C%20block)%3B%0A%09opacity%3A%20var(--content-opacity%2C%201)%3B%0A%09color%3A%20var(--wid-content-txt-color)%3B%0A%09box-shadow%3A%20var(--wid-shadow)%3B%0A%09background%3A%20var(--wid-bg-color)%3B%0A%09border-radius%3A%20var(--wid-content-radius)%3B%0A%09padding%3A%20var(--wid-content-padding)%3B%0A%09height%3A%20auto%3B%0A%09right%3A%2024px%3B%0A%09backdrop-filter%3A%20blur(30px)%3B%0A%09max-width%3A%2080%25%3B%0A%09min-width%3A%20300px%3B%0A%09position%3A%20absolute%3B%0A%0A%09--wid-component-transition%3A%200.3s%20linear%3B%0A%09transition%3A%20all%20var(--wid-component-transition)%3B%0A%09-moz-transition%3A%20all%20var(--wid-component-transition)%3B%0A%09-webkit-transition%3A%20all%20var(--wid-component-transition)%3B%0A%09-o-transition%3A%20all%20var(--wid-component-transition)%3B%0A%09-ms-transition%3A%20all%20var(--wid-component-transition)%3B%0A%7D%0A%0A.etag-tagwid-content.top%20%7B%0A%09bottom%3A%208px%3B%0A%09border-radius%3A%201rem%201rem%200%201rem%3B%0A%7D%0A%0A.etag-tagwid-content.bottom%20%7B%0A%09top%3A%2063px%3B%0A%09border-radius%3A%201rem%200%201rem%201rem%3B%0A%7D%0A%0A.etag-tagwid-content-header-close%20%7B%0A%09height%3A%2025px%3B%0A%09width%3A%2025px%3B%0A%09cursor%3A%20pointer%3B%0A%09border-radius%3A%20999px%3B%0A%09position%3A%20relative%3B%0A%0A%09--wid-component-transition%3A%200.2s%20ease-out%3B%0A%09transition%3A%20all%20var(--wid-component-transition)%3B%0A%09-moz-transition%3A%20all%20var(--wid-component-transition)%3B%0A%09-webkit-transition%3A%20all%20var(--wid-component-transition)%3B%0A%09-o-transition%3A%20all%20var(--wid-component-transition)%3B%0A%09-ms-transition%3A%20all%20var(--wid-component-transition)%3B%0A%7D%0A%0A.etag-tagwid-content-header-close%3Ahover%20%7B%0A%09background-color%3A%20var(--btn-close-hover-bg)%3B%0A%09transform%3A%20scale(1.1)%3B%0A%7D%0A%0A.etag-tagwid-content-header-close%3Aactive%20%7B%0A%09transform%3A%20scale(1)%3B%0A%7D%0A%0A.etag-tagwid-content-header-close%3A%3Aafter%2C%0A.etag-tagwid-content-header-close%3A%3Abefore%20%7B%0A%09background-color%3A%20var(--btn-close-stick-color)%3B%0A%09position%3A%20absolute%3B%0A%09content%3A%20%22%22%3B%0A%09display%3A%20block%3B%0A%09width%3A%2020px%3B%0A%09height%3A%202px%3B%0A%09border-radius%3A%205px%3B%0A%09margin%3A%20auto%3B%0A%09top%3A%200%3B%0A%09bottom%3A%200%3B%0A%09left%3A%200%3B%0A%09right%3A%200%3B%0A%7D%0A%0A.etag-tagwid-content-header-close%3A%3Aafter%20%7B%0A%09transform%3A%20rotate(-45deg)%3B%0A%7D%0A%0A.etag-tagwid-content-header-close%3A%3Abefore%20%7B%0A%09transform%3A%20rotate(45deg)%3B%0A%7D%0A%0A.etag-tagwid-content-header%20%7B%0A%09justify-content%3A%20space-between%3B%0A%09display%3A%20flex%3B%0A%09width%3A%20100%25%3B%0A%7D%0A%0A.etag-tagwid-content-header-image%20%7B%0A%09height%3A%2025px%3B%0A%7D%0A%0A.etag-tagwid-content-header-image%20img%20%7B%0A%09height%3A%20100%25%3B%0A%7D%0A%0A%40supports%20not%20(backdrop-filter%3A%20blur(30px))%20%7B%0A%09.etag-tagwid-content%20%7B%0A%09%09--wid-bg-color%3A%20%23ffffffed%20!important%3B%0A%09%7D%0A%7D%0A%0A.etag-tagwid-content-value%20img%20%7B%0A%09max-width%3A%20267px%3B%0A%7D%0A%0A.etag-tagwid-content-value%20img%20%7B%0A%09transform%3A%20scale(1)%3B%0A%7D%0A%0A.etag-tagwid-content-value%20img%3Ahover%20%7B%0A%09transform%3A%20scale(1)%3B%0A%7D%0A"); const DEFAULT_IMAGE = "[default_image]"; const templateFields = [ { key: "badgeImage", selector: ".etag-tagwid-badge-container img", prop: "src", }, { key: "headerImage", selector: ".etag-tagwid-content-header img", prop: "src", }, { key: "content", selector: ".etag-tagwid-content-value", prop: "innerHTML", }, ]; const fillWidTemplate = (target, data) => { templateFields.forEach((field) => { const key = field.key; const value = data[key]; if (!value || (field.prop == "src" && value == DEFAULT_IMAGE)) return; const element = target.querySelector(field.selector); if (element instanceof HTMLImageElement) element["src"] = value; else if (element instanceof HTMLElement) element["innerHTML"] = value; }); }; const setWidInitialState = (wid, data) => { const content = wid.querySelector(".etag-tagwid-content"); const badge = wid.querySelector(".etag-tagwid-badge-container"); _.api.track.interaction(null, "init", "init-" + (!+data["initOpen"] ? "closed" : "open"), { campaignId: data["id"], module: moduleName }); if (!+data["initOpen"]) content.classList.add("invisible"); if (data["initPosition"] == "bottom") { const badgeHeight = badge.offsetHeight; wid.style.top = `calc(100vh - ${badgeHeight}px - ${data["initPositionMargin"]}px)`; } else { wid.style.top = data["initPositionMargin"] + "px"; } }; const Widget = () => { const create = (itemData) => { const targetHtmlSelector = itemData["targetHtmlSelector"] || "body"; const targets = _.utils.getElements(targetHtmlSelector); if (targets.length == 0) { debug(`Target element not found: ${targetHtmlSelector}`); return; } const target = targets[0]; const css = ""; const script = document.createElement("script"); script.type = "text/javascript"; script.append(itemData["customJs"]); const wid = document.createElement("div"); wid.setAttribute("class", "etag-tagwid etag-tagwid" + itemData["id"]); wid.innerHTML = css + DEFAULT_TEMPLATE; wid.prepend(script); target.appendChild(wid); const dragComponent = wid.querySelector(".etag-tagwid-drag-component"); const badge = wid.querySelector(".etag-tagwid-badge-container"); const closeBtn = wid.querySelector(".etag-tagwid-content-header-close"); const widgetContent = wid.querySelector(".etag-tagwid-content"); fillWidTemplate(wid, itemData); setWidInitialState(wid, itemData); if (itemData["tracktLink"]) _.utils.addUtmToLinks(widgetContent, itemData["tracktLink"]); _.utils.addTrackToLinks(widgetContent, { origin: moduleName }); const links = widgetContent.querySelectorAll("a"); for (const link of links) { link.addEventListener("click", () => { _.api.track.interaction(link.innerText, "click", "redirect", { campaignId: itemData["id"], link: link.href, module: moduleName }); }); } document.addEventListener("pointermove", () => updateContentPosition(widgetContent)); badge.addEventListener("click", () => openWidget(widgetContent, itemData["id"])); closeBtn.addEventListener("click", () => closeWidget(widgetContent, itemData["id"])); CreateDragElement(dragComponent, wid, badge); }; const updateContentPosition = (widgetContent) => { const margin = 15; const widget = widgetContent.parentElement; const outScreen = widget.getBoundingClientRect().top - widgetContent.offsetHeight - margin; widgetContent.classList.add(outScreen > 1 ? "top" : "bottom"); widgetContent.classList.remove(outScreen > 1 ? "bottom" : "top"); }; const closeWidget = (target, id) => { _.api.track.interaction("btnClose", "click", "close", { campaignId: id, module: moduleName }); target.classList.add("invisible"); }; const openWidget = (target, id) => { _.api.track.interaction("badge", "click", "open", { campaignId: id, module: moduleName }); target.classList.remove("invisible"); updateContentPosition(target); }; return { create: create, }; }; function init() { debug("Initialize module"); const widget = Widget(); data = data.map((tw) => ({ ...tw, content: decodeURIComponent(tw.content), customCss: decodeURIComponent(tw.customCss), customJs: decodeURIComponent(tw.customJs), })); for (let item of data) { if (item.active && item.children) { const options = item.children.concat([item]); item = options[Math.floor(Math.random() * options.length)]; } const name = item["name"]; const delay = item.delay || 0; debug(`Initializing item ${name} in ${delay}ms`, item); setTimeout(() => { const apply = _.utils.applyCampaign(item, moduleName); debug(`#### Wid ${name}`, "Apply:", apply); if (apply) widget.create(item); }, delay); } } init(); return { name: moduleName, };},"tag-search":(data, root) => { const _ = root; const moduleName = "tag-search"; const DEFAULT_TEMPLATE = decodeURIComponent("%3Cdiv%20class%3D%22etag-search-container%22%3E%0A%09%3Cdiv%20class%3D%22etag-search-input%22%3E%0A%09%09%3Cinput%20type%3D%22text%22%20class%3D%22etag-search-input-field%22%20placeholder%3D%22PESQUISAR%22%20%2F%3E%0A%09%09%3Cspan%20class%3D%22etag-search-input-close%22%3EX%3C%2Fspan%3E%0A%09%3C%2Fdiv%3E%0A%09%3Cdiv%20class%3D%22etag-search-content%22%3E%0A%09%09%3Cdiv%20class%3D%22etag-search-banner%22%3E%0A%09%09%09%3Cdiv%20class%3D%22etag-search-banner-image%22%3E%0A%09%09%09%09%3Cimg%20src%3D%22%22%20%2F%3E%0A%09%09%09%3C%2Fdiv%3E%0A%09%09%3C%2Fdiv%3E%0A%09%09%3Cdiv%20class%3D%22etag-search-not-found%22%3E%0A%09%09%09%3Cdiv%20class%3D%22etag-search-not-found-icon-svg%22%3E%3C%2Fdiv%3E%0A%09%09%09%3Cdiv%20class%3D%22etag-search-not-found-text%22%3E%0A%09%09%09%09Nenhum%20resultado%20encontrado%20para%20%3Cspan%20class%3D%22etag-search-not-found-keyword%22%3Easdrubal%3C%2Fspan%3E%0A%09%09%09%3C%2Fdiv%3E%0A%09%09%3C%2Fdiv%3E%0A%09%09%3Cul%20class%3D%22etag-search-content-list%22%3E%0A%09%09%09%3Cli%20class%3D%22etag-search-content-listitem%22%3E%0A%09%09%09%09%3Ca%20class%3D%22etag-search-product-url%22%20target%3D%22_self%22%20href%3D%22%22%3E%0A%09%09%09%09%09%3Cdiv%20class%3D%22etag-search-product-image%22%3E%0A%09%09%09%09%09%09%3Cimg%20src%3D%22%22%20%2F%3E%0A%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%09%3Cdiv%20class%3D%22etag-search-product-info%22%3E%0A%09%09%09%09%09%09%3Cdiv%20class%3D%22etag-search-product-name%22%3ET%C3%AAnis%20Rise%20Nitro%20Basketball%3C%2Fdiv%3E%0A%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%09%3Cdiv%20class%3D%22etag-search-product-info-price-box%22%3E%0A%09%09%09%09%09%09%3Cspan%20class%3D%22etag-search-product-price%22%3ER%24559%2C90%3C%2Fspan%3E%0A%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%3C%2Fa%3E%0A%09%09%09%3C%2Fli%3E%0A%09%09%3C%2Ful%3E%0A%09%3C%2Fdiv%3E%0A%3C%2Fdiv%3E%0A"); const DEFAULT_STYLE = decodeURIComponent(".etag-search%20%7B%0A%20%20position%3A%20relative%3B%0A%20%20display%3A%20inline-block%3B%0A%20%20margin-left%3A%2018px%3B%0A%0A%20%20--search-bg-color%3A%20%23ffffffFF%3B%0A%20%20--search-content-txt-color%3A%20rgb(49%2C%2049%2C%2049)%3B%0A%20%20--search-shadow%3A%200%206px%2010px%20rgba(0%2C0%2C0%2C.4)%3B%0A%7D%0A%0A.etag-search-input-field%20%7B%0A%20%20padding%3A%205px%3B%0A%20%20border%3A%201px%20solid%20%23000%3B%0A%7D%0A%0A.etag-search-content%20%7B%0A%20%20position%3A%20absolute%3B%0A%20%20overflow-x%3A%20auto%3B%0A%20%20max-height%3A%20606px%3B%0A%20%20min-height%3A%20100px%3B%0A%20%20min-width%3A%20330px%3B%0A%20%20background%3A%20var(--search-bg-color)%3B%0A%20%20display%3Anone%3B%0A%0A%20%20padding%3A%201.2rem%201rem%3B%0A%20%20box-shadow%3A%20var(--search-shadow)%3B%0A%0A%20%20transition%3A%20all%200.3s%20linear%3B%0A%20%20-moz-transition%3A%20all%200.3s%20linear%3B%0A%20%20-webkit-transition%3A%20all%200.3s%20linear%3B%0A%20%20-o-transition%3A%20all%200.3s%20linear%3B%0A%20%20-ms-transition%3A%20all%200.3s%20linear%3B%0A%20%20z-index%3A%201000%3B%0A%7D%0A%0A.etag-search-content.show%20%7B%0A%20%20display%3Ainline-grid%3B%0A%7D%0A%0A.etag-search-not-found%20%7B%0A%20%20color%3A%20%23000%3B%0A%20%20display%3Anone%3B%0A%7D%0A%0A.etag-search%20ul%20%7B%0A%20%20width%3A%20max-content%3B%0A%20%20display%3A%20grid%3B%0A%20%20grid-template-columns%3A%20repeat(4%2C160px)%3B%0A%20%20grid-template-rows%3A%20repeat(1%2C275px)%3B%0A%20%20gap%3A%2015px%3B%0A%20%20pointer-events%3A%20none%3B%0A%7D%0A%0A.etag-search-not-found-icon-svg%20%7B%0A%20%20background-image%3A%20url(data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI%2BPHBhdGggZD0ibTIzLjgwOSAyMS42NDYtNi4yMDUtNi4yMDVhOS42OCA5LjY4IDAgMCAwIDEuODU3LTUuNzExQzE5LjQ2MSA0LjM2NSAxNS4wOTYgMCA5LjczIDAgNC4zNjUgMCAwIDQuMzY1IDAgOS43M2MwIDUuMzY2IDQuMzY1IDkuNzMgOS43MyA5LjczYTkuNjc4IDkuNjc4IDAgMCAwIDUuNDg3LTEuNjk4TDIxLjQ1NSAyNGwyLjM1NC0yLjM1NHpNMi44NTQgOS43M2MwLTMuNzkyIDMuMDg1LTYuODc3IDYuODc3LTYuODc3czYuODc3IDMuMDg1IDYuODc3IDYuODc3LTMuMDg1IDYuODc3LTYuODc3IDYuODc3QTYuODg0IDYuODg0IDAgMCAxIDIuODU0IDkuNzN6Ii8%2BPC9zdmc%2B)%3B%0A%20%20background-repeat%3A%20no-repeat%3B%0A%20%20background-size%3A%20cover%3B%0A%20%20height%3A%2050px%3B%0A%20%20width%3A%2050px%3B%0A%20%20margin%3A%200%20auto%2010px%3B%0A%7D%0A%0A.etag-search-not-found-keyword%20%7B%0A%20%20font-weight%3A%20bold%3B%0A%20%20color%3A%20gold%3B%0A%7D%0A%0A.etag-search-content.not-found%20ul%20%7B%0A%20%20display%3Anone%3B%0A%7D%0A%0A.etag-search-content.not-found%20.etag-search-not-found%20%7B%0A%20%20display%3Ablock%3B%0A%7D%0A%0A.etag-search-content.search%20.etag-search-banner%20%7B%0A%20%20display%3Anone%3B%0A%7D%0A%0A.etag-search-content-listitem%20%7B%0A%20%20border%3A%201px%20solid%20rgba(0%2C0%2C0%2C.1)%3B%0A%20%20min-height%3A%20275px%3B%0A%20%20box-sizing%3A%20border-box%3B%0A%20%20pointer-events%3A%20auto%3B%0A%7D%0A%0A.etag-search-content-listitem%20a%20%7B%0A%20%20padding%3A%2016px%2012px%3B%0A%20%20color%3A%20%23000%3B%0A%20%20display%3A%20inline-block%3B%0A%7D%0A%0A.etag-search-product-image%20%7B%0A%20%20width%3A%20110px%3B%0A%20%20height%3A%20110px%3B%0A%20%20display%3A%20inline-block%3B%0A%20%20background-color%3A%20lightyellow%3B%0A%20%20margin%3A%200%2013px%2016px%3B%0A%20%20text-align%3A%20center%3B%0A%7D%0A%0A.etag-search-product-image%20img%20%7B%0A%20%20max-height%3A%20100%25%3B%0A%20%20max-width%3A%20100%25%3B%0A%7D%0A%0A.etag-search-product-info%20%7B%0A%20%20margin-bottom%3A%2015px%3B%0A%20%20line-height%3A%201.3rem%3B%0A%7D%0A%0A.etag-search-product-price%20%7B%0A%20%20color%3Agold%3B%0A%7D%0A%0A.etag-search-banner%20%7B%0A%20%20pointer-events%3A%20none%3B%0A%7D%0A%0A.etag-search-banner-image%20%7B%0A%20%20width%3A%20685px%3B%0A%20%20height%3A%20220px%3B%0A%20%20margin-bottom%3A%2020px%3B%0A%7D%0A%0A.etag-search-banner-image%20img%3Ahover%20%7B%0A%20%20transform%3A%20inherit%3B%0A%7D%0A%0A.etag-search-input-close%20%7B%0A%20%20position%3A%20absolute%3B%0A%20%20%20%20right%3A%205px%3B%0A%20%20%20%20top%3A%202px%3B%0A%20%20%20%20color%3A%20black%3B%0A%20%20%20%20cursor%3A%20pointer%3B%0A%7D%0A"); const debug = (value, ...args) => { _.utils.debug(`%c[${moduleName}] ` + value, "color:#fdcae1; padding-top:10px", ...args); }; const Search = () => { let initData; const components = { searchInput: { selector: ".etag-search-input-field" }, searchContent: { selector: ".etag-search-content" }, notFoundKeyword: { selector: ".etag-search-not-found-keyword" }, listItem: { selector: ".etag-search-content-listitem", removeOnInit: true }, list: { selector: ".etag-search-content-list" }, banner: { selector: ".etag-search-banner" }, closeSearch: { selector: ".etag-search-input-close", removeOnInit: true }, }; const ge = (key) => { return components[key].element; }; const adjustPosition = () => { const etagSearchInput = ge("searchInput"); const etagSearchContent = ge("searchContent"); if (etagSearchInput) { const rect = etagSearchInput.getBoundingClientRect(); const windowWidth = window.innerWidth; const threshold = 300; if (rect.right > windowWidth - threshold) { etagSearchContent.style.left = "auto"; etagSearchContent.style.right = "0"; } else { etagSearchContent.style.left = "0"; etagSearchContent.style.right = "auto"; } } }; const openPanel = () => { adjustPosition(); ge("searchContent").classList.add("show"); }; const closePanel = () => { ge("searchContent").classList.remove("show"); }; const create = async (itemData) => { const targetHtmlSelector = itemData["targetHtmlSelector"] || "body"; const targets = _.utils.getElements(targetHtmlSelector); if (targets.length == 0) { debug(`Target element not found: ${targetHtmlSelector}`); return; } const target = targets[0]; const css = ""; const script = document.createElement("script"); script.type = "text/javascript"; script.append(itemData["customJs"]); const element = document.createElement("div"); element.setAttribute("class", "etag-search etag-search" + itemData["id"]); element.innerHTML = css + DEFAULT_TEMPLATE; element.prepend(script); for (const el in components) { const obj = components[el]; obj.element = element.querySelector(obj.selector); obj.parent = obj.element.parentElement; if (obj.removeOnInit) obj.element.remove(); } const onClose = () => { _.api.track.interaction("bt-close", "click", "close", { campaignId: itemData["id"], module: moduleName }); reset(); closePanel(); }; const add = () => { target.appendChild(element); document.addEventListener("click", onClick); window.addEventListener("resize", adjustPosition); }; const remove = () => { target.removeChild(element); document.removeEventListener("click", onClick); }; const reset = () => { ge("searchInput").value = ""; components.closeSearch.element.remove(); displayData({ result: initData }, false); }; const onClick = (evt) => { const target = evt.target; if (target != ge("searchInput") && target != ge("searchContent")) closePanel(); else { _.api.track.interaction("search-input", "click", "display-panel", { campaignId: itemData["id"], module: moduleName }); openPanel(); } }; const doSearch = async (value) => { await _.api.get(_.api.urlCaptureService, "/products/" + _.utils.uuid() + "/search", { "q": value, "p": moduleName }) .then((response) => { return response.json(); }).then((data) => { displayData({ term: value, result: data }); }); }; const displayData = (data, search = true) => { const listProducts = data.result; ge("list").innerHTML = ""; if (listProducts.length == 0) { ge("searchContent").classList.add("not-found"); ge("notFoundKeyword").innerHTML = data.term; } else { ge("searchContent").classList.remove("not-found"); for (const product of listProducts) { const item = ge("listItem").cloneNode(true); for (const prop in product) { const propLower = prop.toLowerCase(); const propValue = product[prop]; const isImage = propLower == "image" && propValue.indexOf("svg") == -1; const tag = item.querySelector(".etag-search-product-" + propLower + (isImage ? " img" : "")); if (tag) if (isImage) tag.setAttribute("src", propValue); else if (propLower == "url") { tag.setAttribute("href", _.api.track.url(propValue, { origin: moduleName })); tag.addEventListener("click", () => { _.api.track.interaction("list-item", "click", "redirect", { campaignId: itemData["id"], module: moduleName, link: tag.getAttribute("href") }); }); } else tag.innerHTML = propValue; ge("list").append(item); } } } if (search) { ge("searchContent").classList.add("search"); openPanel(); } else ge("searchContent").classList.remove("search"); }; const inputSearch = (evt) => { const target = evt.target; const value = target.value; if (value.length > 0) components.closeSearch.parent.appendChild(components.closeSearch.element); else { reset(); } if (value.length > 2) { _.api.track.interaction(null, "auto-search", "search", { campaignId: itemData["id"], module: moduleName, terms: value }); doSearch(value); } }; ge("searchInput").addEventListener("input", inputSearch); ge("closeSearch").addEventListener("click", onClose); const headerImage = itemData["headerImage"]; if (headerImage) { const isSVGImage = headerImage.indexOf("svg") > -1; const tag = ge("banner") .querySelector(".etag-search-banner-image" + (!isSVGImage ? " img" : "")); if (isSVGImage) tag.innerHTML = headerImage; else tag.setAttribute("src", headerImage); } else ge("banner").remove(); initData = await _.api.get(_.api.urlCaptureService, "/products/" + _.utils.uuid() + "/search", { "order": "views", "limit": (headerImage ? 4 : 8), "p": moduleName }) .then((response) => { return response.json(); }); add(); reset(); return { remove: remove, add: add }; }; return { create: create }; }; function init() { debug("Initialize module"); const search = Search(); for (let item of data) { if (item.active && item.children) { const options = item.children.concat([item]); item = options[Math.floor(Math.random() * options.length)]; } const name = item["name"]; const delay = item.delay || 0; debug(`Initializing item ${name} in ${delay}ms`, item); setTimeout(() => { const apply = _.utils.applyCampaign(item, moduleName); debug(`#### Assist ${name}`, "Apply:", apply); if (apply) search.create(item); }, delay); } } init(); return { name: moduleName, };},"tag-assist-remind":(data, root) => { const _ = root; const moduleName = "tag-assist-remind"; const debug = (value, ...args) => { _.utils.debug(`%c[${moduleName}] ` + value, "color:#b0c2f2; padding-top:10px", ...args); }; const sendButtonLabel = "Enviar"; let submitForm = false; const TagAssistRemind = () => { const components = { container: { selector: ".etag-assist-remind-container" }, header: { selector: ".etag-assist-remind-main-header" }, headerImage: { selector: ".etag-assist-remind-main-header-logo img" }, content: { selector: ".etag-assist-remind-main-body" }, contentPromo: { selector: ".etag-assist-remind-main-body-promo" }, sendInputBorder: { selector: ".etag-assist-remind-email-validate-field" }, sendInput: { selector: ".etag-input-send" }, invalidEmail: { selector: ".etag-invalid-email" }, sendButton: { selector: ".etag-button-send" }, contentSuccess: { selector: ".etag-assist-remind-main-success" }, labelEmail: { selector: ".etag-label-email" }, contentMainFail: { selector: ".etag-assist-remind-main-fail" }, contentFail: { selector: ".etag-fail-content" }, failButton: { selector: ".etag-button-fail" }, closeButton: { selector: ".etag-assist-remind-content-close" }, overlay: { selector: ".etag-assist-remind-overlay" } }; const create = (itemData) => { const closeAssistRemind = () => { element.classList.remove("show"); _.api.track.interaction("btnClose", "click", "close", { campaignId: itemData.id, module: moduleName }); }; const getInputValue = () => { const sendInput = components.sendInput.element; const email = sendInput.value; return email; }; const validateEmail = (email) => { const regexEmail = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; const isValid = regexEmail.test(email); const invalidEmail = components.invalidEmail.element; const sendInputBorder = components.sendInputBorder.element; if (isValid) { invalidEmail.style.display = "none"; sendInputBorder.style.borderColor = ""; } else { sendInputBorder.style.borderColor = "#d30000"; invalidEmail.style.display = "block"; } return isValid; }; const doCapture = async (email) => { const capturedData = { captureId: itemData.captureId, info: { lead: email } }; debug("###### Captured", true, capturedData); const captureData = (_?.config?.modulesData["tag-capture"] || []) .find(tcd => tcd.id === itemData.captureId); const captureType = (captureData?.type)?.toLocaleLowerCase() || "register"; const response = await _.api.post(_.api.urlCaptureService, "/capture/" + captureType, capturedData); return { capturedData, response }; }; const sendEmail = async () => { submitForm = true; const email = getInputValue(); const isValid = validateEmail(email); if (isValid) { const content = components.content.element; const { response } = await doCapture(email); const isSuccess = !(response?.status > 300); content.style.display = "none"; if (isSuccess) { const labelEmail = components.labelEmail.element; const contentSuccess = components.contentSuccess.element; labelEmail.innerHTML = email; contentSuccess.style.display = "flex"; if (itemData["contentSuccess"]) contentSuccess.innerHTML = itemData["contentSuccess"]; setTimeout(() => { closeAssistRemind(); }, 3000); } else { const contentMainFail = components.contentMainFail.element; contentMainFail.style.display = "flex"; const contentFail = components.contentFail.element; if (itemData["contentFail"]) contentFail.innerHTML = itemData["contentFail"]; const failButton = components.failButton.element; if (itemData["contentFailButtonLabel"]) failButton.innerHTML = itemData["contentFailButtonLabel"]; } } }; const dispath = (trigger, action) => { const cookie = _.utils.cookies.get("_etg"); const assistImpressions = cookie.assistImpressions || 0; if (itemData["fireInSessionQtty"] > assistImpressions) { add(); cookie.assistImpressions = assistImpressions + 1; _.utils.cookies.set("_etg", cookie, 365); _.api.track.interaction(null, trigger, action, { campaignId: itemData.id, module: moduleName }); } clearDispath(); }; const dispathConfig = { dispatchInactivityInterval: setTimeout(() => { }), dispatchExitIntentInterval: setTimeout(() => { }), engageOffset: 100, engageMaxLimit: 0, desktopInactivityFunction: () => { clearTimeout(dispathConfig.dispatchInactivityInterval); dispathConfig.dispatchInactivityInterval = setTimeout(dispath, itemData["fireDesktopInactivityDelay"], "inactivity", "open"); }, desktopExitIntentFunction: (evt) => { clearTimeout(dispathConfig.dispatchExitIntentInterval); const intentions = { PASSIVE: [50, itemData["fireDesktopExitIntentDelay"]], NEUTRAL: [100, 0], ACTIVE: [150, 0] }; const intention = intentions[itemData["fireDesktopExitIntentAction"]]; if (intention[0] >= evt.y) { dispathConfig.dispatchExitIntentInterval = setTimeout(dispath, intention[1], "exit-intention-" + itemData["fireDesktopExitIntentAction"], "open"); } }, mobileInactivityFunction: () => { clearTimeout(dispathConfig.dispatchInactivityInterval); dispathConfig.dispatchInactivityInterval = setTimeout(dispath, itemData["fireMobileInactivityDelay"], "inactivity", "open"); }, mobileOnLostFocusFunction: () => { clearTimeout(dispathConfig.dispatchExitIntentInterval); dispathConfig.dispatchExitIntentInterval = setTimeout(dispath, itemData["fireMobileOnLostFocusDelay"], "onLostFocus", "open"); }, mobileOnFocusFunction: () => { clearTimeout(dispathConfig.dispatchExitIntentInterval); }, mobileOnScrollFunction: () => { dispathConfig.engageMaxLimit = Math.max(dispathConfig.engageOffset, dispathConfig.engageMaxLimit, window.scrollY); if (dispathConfig.engageMaxLimit > window.scrollY) dispath("onScroll", "open"); } }; const setDispath = () => { if (!_.utils.isMobile()) { if (itemData["fireDesktopExitIntent"]) document.addEventListener("mousemove", dispathConfig.desktopExitIntentFunction); if (itemData["fireDesktopInactivity"]) document.addEventListener("mousemove", dispathConfig.desktopInactivityFunction); } else { if (itemData["fireMobileInactivity"]) document.addEventListener("touchmove", dispathConfig.mobileInactivityFunction); if (itemData["fireMobileOnLostFocus"]) { document.addEventListener("blur", dispathConfig.mobileOnLostFocusFunction); document.addEventListener("focus", dispathConfig.mobileOnFocusFunction); } if (itemData["fireMobileOnScroll"]) document.addEventListener("scroll", dispathConfig.mobileOnScrollFunction); } }; const clearDispath = () => { clearTimeout(dispathConfig.dispatchInactivityInterval); clearTimeout(dispathConfig.dispatchExitIntentInterval); document.removeEventListener("mousemove", dispathConfig.desktopExitIntentFunction); document.removeEventListener("mousemove", dispathConfig.desktopInactivityFunction); document.removeEventListener("touchmove", dispathConfig.mobileInactivityFunction); document.removeEventListener("blur", dispathConfig.mobileOnLostFocusFunction); document.removeEventListener("focus", dispathConfig.mobileOnFocusFunction); document.removeEventListener("scroll", dispathConfig.mobileOnScrollFunction); }; const targetHtmlSelector = itemData["targetHtmlSelector"] || "body"; const targets = _.utils.getElements(targetHtmlSelector); if (targets.length == 0) { debug(`Target element not found: ${targetHtmlSelector}`); return null; } const target = targets[0]; const css = ""; const script = document.createElement("script"); script.type = "text/javascript"; script.append(itemData["customJs"]); const element = document.createElement("div"); const init = () => { element.setAttribute("class", "etag-assist-remind etag-assist-remind" + itemData["id"]); element.innerHTML = css + DEFAULT_TEMPLATE; element.prepend(script); for (const el in components) { const obj = components[el]; obj.element = element.querySelector(obj.selector); obj.parent = obj.element.parentElement; if (obj.removeOnInit) obj.element.remove(); } !itemData["headerDisplay"] && components.header.element.remove(); itemData["headerImage"] && components.headerImage.element.setAttribute("src", itemData["headerImage"]); itemData["closeOnClickOutside"] && components.overlay.element.addEventListener("click", closeAssistRemind); components.closeButton.element.addEventListener("click", closeAssistRemind); components.content.parent.appendChild(components.content.element); const el = components.contentPromo.element; if (itemData["content"]) { el.querySelector("div").innerHTML = itemData["content"]; } const links = el.querySelectorAll("a"); for (const link of links) { link.setAttribute("href", _.api.track.url(link.getAttribute("href"), { origin: moduleName + "|content|" + link.innerText })); link.addEventListener("click", () => { _.api.track.interaction(link.innerHTML, "click", "redirect", { campaignId: itemData["id"], link: link.href, module: moduleName }); }); } const sendButton = components.sendButton.element; sendButton.innerHTML = itemData["contentSendButtonLabel"] || sendButtonLabel; sendButton.addEventListener("click", () => { sendEmail(); }); const failButton = components.failButton.element; failButton.addEventListener("click", () => { const content = components.content.element; const contentMainFail = components.contentMainFail.element; content.style.display = "grid"; contentMainFail.style.display = "none"; }); const sendInput = components.sendInput.element; sendInput.addEventListener("input", (evt) => { if (submitForm) { const target = evt.target; const email = target.value; validateEmail(email); } }); setDispath(); }; const add = () => { target.appendChild(element); element.offsetWidth; element.classList.add("show"); }; const remove = () => { target.removeChild(element); }; init(); return { remove: remove, add: add }; }; return { create: create, }; }; const DEFAULT_TEMPLATE = decodeURIComponent("%3Cdiv%20class%3D%22etag-assist-remind-container%22%3E%0A%09%3Cdiv%20class%3D%22etag-assist-remind-content-box%22%3E%0A%09%09%3Cdiv%20class%3D%22etag-assist-remind-content-close%22%3E%3C%2Fdiv%3E%0A%09%09%3Cdiv%20class%3D%22etag-assist-remind-content%22%3E%0A%09%09%09%3Cdiv%20class%3D%22etag-assist-remind-main%22%3E%0A%09%09%09%09%3Cdiv%20class%3D%22etag-assist-remind-main-header%22%3E%0A%09%09%09%09%09%3Cdiv%20class%3D%22etag-assist-remind-main-header-logo%22%3E%0A%09%09%09%09%09%09%3Cimg%20src%3D%22https%3A%2F%2Fs3.amazonaws.com%2Ffiles.etagdigital.com.br%2Fimagens%2Fetag-logo.png%22%20alt%3D%22Logo%22%20%2F%3E%0A%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%3Cdiv%20class%3D%22etag-assist-remind-main-body%22%3E%0A%09%09%09%09%09%3Cdiv%20class%3D%22etag-assist-remind-main-body-promo%22%3E%0A%09%09%09%09%09%09%3Cdiv%20style%3D%22padding%3A%2020px%3B%22%3E%0A%09%09%09%09%09%09%09%3Cspan%3EParab%C3%A9ns!%3C%2Fspan%3E%3C%2Fbr%3E%0A%09%09%09%09%09%09%09Seu%20%3Cb%20style%3D%22font%3A%20revert%3B%22%3ETagassit%20Remind%3C%2Fb%3E%20foi%20instalado%20com%20sucesso%20e%20agora%20est%C3%A1%0A%09%09%09%09%09%09%09funcionando.%3C%2Fbr%3E%0A%09%09%09%09%09%09%09Para%20personalizar%20seu%20conte%C3%BAdo%2C%20acesse%20sua%20%3Ca%0A%09%09%09%09%09%09%09%09style%3D%22%20text-decoration%3A%20underline%3B%20color%3A%20blue%3B%22%20href%3D%22%22%3E%0A%09%09%09%09%09%09%09%09p%C3%A1gina%20de%0A%09%09%09%09%09%09%09%09administra%C3%A7%C3%A3o%3C%2Fa%3E.%20Aqui%20voc%C3%AA%20pode%20personalizar%20e%20adaptar%20o%20banner%20de%20acordo%20com%20suas%0A%09%09%09%09%09%09%09prefer%C3%AAncias.%3C%2Fbr%3E%0A%09%09%09%09%09%09%09Se%20precisar%20de%20ajuda%20durante%20o%20processo%20de%20personaliza%C3%A7%C3%A3o%2C%20n%C3%A3o%20hesite%20em%20entrar%20em%0A%09%09%09%09%09%09%09contato%20com%20nossa%20equipe%20de%20suporte!%20%3C%2Fbr%3E%0A%09%09%09%09%09%09%09Obrigado!%0A%09%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%09%3Cdiv%20class%3D%22etag-assist-remind-form%22%3E%0A%09%09%09%09%09%09%3Cdiv%20class%3D%22etag-assist-remind-email-validate-field%22%3E%0A%09%09%09%09%09%09%09%3Cdiv%3E%E2%9C%89%EF%B8%8F%3C%2Fdiv%3E%0A%09%09%09%09%09%09%09%3Cinput%20type%3D%22email%22%20class%3D%22etag-input-send%22%20id%3D%22etag-assist-remind-input-send%22%20placeholder%3D%22Digite%20seu%20e-mail...%22%3E%0A%09%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%09%09%3Cdiv%20class%3D%22etag-invalid-email%22%3EOops!%20E-mail%20inv%C3%A1lido!%20%F0%9F%9A%AB%3C%2Fdiv%3E%0A%09%09%09%09%09%09%3Cbutton%20type%3D%22submit%22%20class%3D%22etag-button%20etag-button-send%22%3Eenviar%3C%2Fbutton%3E%0A%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%3C%2Fdiv%3E%20%0A%09%09%09%09%3Cdiv%20class%3D%22etag-assist-remind-main-success%22%3E%0A%09%09%09%09%09%3Cdiv%20%3E%0A%09%09%09%09%09%09%3Cp%3EObrigado!%3C%2Fp%3E%0A%09%09%09%09%09%09%3Cp%3EEmail%20enviado%20com%20sucesso%3C%2Fp%3E%0A%09%09%09%09%09%09%3Cp%20class%3D%22etag-label-email%22%3E%3C%2Fp%3E%0A%09%09%09%09%09%3C%2Fdiv%3E%09%09%09%0A%09%09%09%09%3C%2Fdiv%3E%20%0A%09%09%09%09%3Cdiv%20class%3D%22etag-assist-remind-main-fail%22%3E%09%09%0A%09%09%09%09%09%3Cdiv%20style%3D%22display%3A%20grid%22%3E%0A%09%09%09%09%09%09%3Cdiv%20class%3D%22etag-fail-content%22%3E%20%0A%09%09%09%09%09%09%09%3Cp%3EOps!%3C%2Fp%3E%20%0A%09%09%09%09%09%09%09%3Cp%3EFalha%20ao%20enviar!%3C%2Fp%3E%20%0A%09%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%09%09%3Cbutton%20type%3D%22button%22%20class%3D%22etag-button%20etag-button-fail%22%3ETentar%20novamente!%3C%2Fbutton%3E%0A%09%09%09%09%09%3C%2Fdiv%3E%0A%09%09%09%09%3C%2Fdiv%3E%20%0A%09%09%09%3C%2Fdiv%3E%0A%09%09%3C%2Fdiv%3E%0A%09%3C%2Fdiv%3E%0A%09%3Cdiv%20class%3D%22etag-assist-remind-overlay%22%3E%3C%2Fdiv%3E%0A%3C%2Fdiv%3E"); const DEFAULT_STYLE = decodeURIComponent(".etag-assist-remind-container%20%3A%3A-webkit-scrollbar%20%7B%0A%09width%3A%200px%3B%0A%7D%0A%0A.etag-assist-remind%20*%20%7B%0A%09margin%3A%200%3B%0A%09padding%3A%200%3B%0A%09border%3A%200%3B%0A%09font%3A%20inherit%3B%0A%09vertical-align%3A%20baseline%3B%0A%09box-sizing%3A%20border-box%3B%0A%09position%3A%20relative%3B%0A%09background%3A%20none%3B%0A%09color%3A%20var(--content-txt-color)%3B%0A%7D%0A%0A.etag-assist-remind%20%7B%0A%09--content-opacity%3A%200%3B%0A%09--color-default%3A%20%23fecc30%3B%0A%09--bg-color%3A%20%23ffffff%3B%0A%09--color-black%3A%20%23000000%3B%0A%09--shadow%3A%202px%203px%2011px%20%2300000087%3B%0A%09--component-transition%3A%200.4s%20linear%3B%0A%09--content-txt-color%3A%20rgb(49%2C%2049%2C%2049)%3B%0A%09--btn-close-tx-color%3A%20%23e7e7e7%3B%0A%09--btn-close-tx-color-hover%3A%20%23939393%3B%0A%09--btn-close-bg-color%3A%20%23202020%3B%0A%09--btn-close-bg-color-hover%3A%20%23050505%3B%0A%0A%09position%3A%20fixed%3B%0A%09top%3A%200%3B%0A%09right%3A%200%3B%0A%09height%3A%20100%25%3B%0A%09z-index%3A%202147483646%20!important%3B%0A%09transition%3A%200.9s%20cubic-bezier(0.165%2C%200.84%2C%200.44%2C%201)%3B%0A%09font-family%3A%20%22Montserrat%22%2C%20sans-serif%3B%0A%09pointer-events%3A%20none%3B%0A%7D%0A%0A.etag-assist-remind-hide%20%7B%0A%09display%3A%20none%3B%0A%7D%0A%0A.etag-assist-remind-container%20%7B%0A%09height%3A%20100%25%3B%0A%09right%3A%20-105%25%3B%0A%09transition%3A%20right%20var(--component-transition)%3B%0A%7D%0A%0A.etag-assist-remind%20a%20%7B%0A%09text-decoration%3A%20none%3B%0A%7D%0A%0A.etag-assist-remind.show%20%7B%0A%09pointer-events%3A%20auto%3B%0A%7D%0A%0A.etag-assist-remind.show%20%3E%20.etag-assist-remind-container%20%3E%20.etag-assist-remind-overlay%20%7B%0A%09--content-opacity%3A%201%3B%0A%09pointer-events%3A%20auto%3B%0A%7D%0A%0A.etag-assist-remind.show%20%3E%20.etag-assist-remind-container%20%7B%0A%09right%3A%200%3B%0A%7D%0A%0A.etag-assist-remind-container.show%20.etag-assist-remind-content%20%7B%0A%7D%0A%0A.etag-assist-remind-content-box%20%7B%0A%09height%3A%20100%25%3B%0A%09min-width%3A%20390px%3B%0A%09z-index%3A%202%3B%0A%09overflow%3A%20visible%3B%0A%09display%3A%20inline-flex%3B%0A%7D%0A%0A.etag-assist-remind-overlay%20%7B%0A%09position%3A%20fixed%3B%0A%09left%3A%200px%3B%0A%09top%3A%200px%3B%0A%09width%3A%20100%25%3B%0A%09height%3A%20100%25%3B%0A%09background%3A%20%23363636cc%3B%0A%09opacity%3A%20var(--content-opacity)%3B%0A%09z-index%3A%201%3B%0A%09transition%3A%201s%20cubic-bezier(0.165%2C%200.84%2C%200.44%2C%201)%3B%0A%09pointer-events%3A%20none%3B%0A%09backdrop-filter%3A%20blur(2px)%3B%0A%7D%0A%0A.etag-assist-remind-content%20%7B%0A%09background%3A%20var(--bg-color)%3B%0A%09height%3A%20100%25%3B%0A%09max-width%3A%20350px%3B%0A%09width%3A%20350px%3B%0A%09box-shadow%3A%20var(--shadow)%3B%0A%09overflow-y%3A%20auto%3B%0A%7D%0A%0A.etag-assist-remind-content%20img%20%7B%0A%09transform%3A%20scale(1)%3B%0A%7D%0A%0A.etag-assist-remind-content%20img%3Ahover%20%7B%0A%09transform%3A%20scale(1)%3B%0A%7D%0A%0A.etag-assist-remind-content-close%20%7B%0A%09--component-transition%3A%200.2s%20ease-out%3B%0A%09background-color%3A%20var(--btn-close-bg-color)%3B%0A%09height%3A%2040px%3B%0A%09width%3A%2040px%3B%0A%09border-radius%3A%206px%200px%200px%206px%3B%0A%09cursor%3A%20pointer%3B%0A%09transition%3A%20all%20var(--component-transition)%3B%0A%09-moz-transition%3A%20all%20var(--component-transition)%3B%0A%09-webkit-transition%3A%20all%20var(--component-transition)%3B%0A%09-o-transition%3A%20all%20var(--component-transition)%3B%0A%09-ms-transition%3A%20all%20var(--component-transition)%3B%0A%09box-shadow%3A%20var(--shadow)%3B%0A%7D%0A%0A.etag-assist-remind-content-close%3Ahover%20%7B%0A%09background-color%3A%20var(--btn-close-bg-color-hover)%3B%0A%7D%0A%0A.etag-assist-remind-content-close%3Ahover%3A%3Aafter%2C%0A.etag-assist-remind-content-close%3Ahover%3A%3Abefore%20%7B%0A%09background-color%3A%20var(--btn-close-tx-color-hover)%3B%0A%7D%0A%0A.etag-assist-remind-content-close%3A%3Aafter%2C%0A.etag-assist-remind-content-close%3A%3Abefore%20%7B%0A%09background-color%3A%20var(--btn-close-tx-color)%3B%0A%09position%3A%20absolute%3B%0A%09content%3A%20%22%22%3B%0A%09display%3A%20block%3B%0A%09width%3A%2020px%3B%0A%09height%3A%202px%3B%0A%09border-radius%3A%205px%3B%0A%09margin%3A%20auto%3B%0A%09top%3A%200%3B%0A%09bottom%3A%200%3B%0A%09left%3A%200%3B%0A%09right%3A%200%3B%0A%7D%0A%0A.etag-assist-remind-content-close%3A%3Aafter%20%7B%0A%09transform%3A%20rotate(-45deg)%3B%0A%7D%0A%0A.etag-assist-remind-content-close%3A%3Abefore%20%7B%0A%09transform%3A%20rotate(45deg)%3B%0A%7D%0A%0A.etag-assist-remind-main-header%20%7B%0A%09top%3A%200%3B%0A%09position%3A%20sticky%3B%0A%09z-index%3A%2010%3B%0A%09background%3A%20white%3B%0A%09text-align%3A%20center%3B%0A%7D%0A%0A.etag-assist-remind-main-header-logo%20%7B%0A%09max-width%3A%20100%25%3B%0A%09max-height%3A%20100%25%3B%0A%7D%0A.etag-assist-remind-main-header-logo%20img%20%7B%0A%09object-fit%3A%20contain%3B%0A%09max-width%3A%20100%25%3B%0A%09max-height%3A%20100%25%3B%0A%7D%0A%0A.etag-assist-remind-main-body-content%20%7B%0A%09text-align%3A%20center%3B%0A%09font-size%3A%2012px%3B%0A%09padding%3A%205px%200px%3B%0A%7D%0A%0A.etag-assist-remind-main-body%20%7B%0A%09padding%3A%200px%3B%0A%09text-align%3A%20center%3B%0A%7D%0A%0A.etag-assist-remind-main-body%20img%20%7B%0A%09max-width%3A%20100%25%3B%0A%09max-height%3A%20100%25%3B%0A%09object-fit%3A%20contain%3B%0A%7D%0A%20%0A.etag-button%20%7B%0A%20%20%20%20background-color%3A%20var(--color-default)%3B%0A%20%20%20%20color%3A%20%23ffffff%3B%0A%20%20%20%20display%3A%20block%3B%0A%20%20%20%20display%3A%20block%3B%0A%20%20%20%20font-weight%3A%20700%3B%0A%20%20%20%20border-radius%3A%204px%3B%0A%20%20%20%20line-height%3A%2014px%3B%0A%20%20%20%20margin%3A%208px%200px%3B%0A%20%20%20%20padding%3A%2015px%200%3B%0A%20%20%20%20text-align%3A%20center%3B%0A%20%20%20%20text-transform%3A%20uppercase%3B%0A%09font-size%3A%2014px%3B%0A%7D%0A%20%0A.etag-button%3Ahover%20%7B%0A%09cursor%3A%20pointer%3B%0A%09filter%3A%20brightness(80%25)%3B%0A%7D%0A%0A.etag-assist-remind-content-close%20%3E%20a%20%7B%0A%09display%3A%20block%3B%0A%09width%3A%2040px%3B%0A%09height%3A%2040px%3B%0A%09cursor%3A%20pointer%3B%0A%09opacity%3A%201%3B%0A%7D%0A%0A.etag-assist-remind-content-close%20%3E%20a%3Ahover%20%7B%0A%09opacity%3A%200.6%3B%0A%7D%0A%0A.etag-assist-remind-content-close%20%3E%20a%3Abefore%2C%0A.etag-assist-remind-content-close%20%3E%20a%3Aafter%20%7B%0A%09position%3A%20absolute%3B%0A%09left%3A%2017px%3B%0A%09top%3A%206px%3B%0A%09content%3A%20%22%20%22%3B%0A%09height%3A%2027px%3B%0A%09width%3A%206px%3B%0A%09background-color%3A%20%23fff%3B%0A%09border-radius%3A%204px%3B%0A%7D%0A%0A.etag-assist-remind-content-close%20%3E%20a%3Abefore%20%7B%0A%09transform%3A%20rotate(45deg)%3B%0A%7D%0A%0A.etag-assist-remind-content-close%20%3E%20a%3Aafter%20%7B%0A%09transform%3A%20rotate(-45deg)%3B%0A%7D%0A%20%0A.etag-assist-remind-form%20%7B%0A%09display%3Agrid%3B%0A%20%20%20%20margin-inline%3A%2040px%3B%0A%20%20%20%20padding-block%3A%2010px%3B%0A%20%20%20%20margin-bottom%3A%2080px%3B%0A%7D%0A%0A.etag-assist-remind-email-validate-field%20%7B%0A%20%20%20%20border%3A%201px%20solid%3B%0A%20%20%20%20padding%3A%2012px%2010px%3B%0A%20%20%20%20border-radius%3A%204px%3B%0A%09display%3A%20flex%3B%0A%09gap%3A%2010px%3B%0A%20%20%20%20background%3A%20white%3B%0A%7D%0A%0A.etag-assist-remind-email-validate-field%20input%20%7B%20%0A%20%20%20%20width%3A%20100%25%3B%0A%20%20%20%20outline%3A%20none%3B%0A%20%20%20%20font-size%3A%2014px%3B%20%0A%7D%0A%0A.etag-invalid-email%20%7B%20%0A%09display%3A%20none%3B%0A%20%20%20%20text-align%3A%20start%3B%0A%20%20%20%20color%3A%20%23d30000%3B%0A%20%20%20%20padding-top%3A%205px%3B%0A%09font-size%3A%2012px%3B%0A%7D%0A%0A%0A.etag-assist-remind-main-success%20%7B%0A%09padding%3A%2020px%3B%0A%09font-size%3A%2025px%3B%0A%09font-weight%3A%20500%3B%0A%09text-align%3A%20center%3B%0A%09justify-content%3A%20center%3B%0A%09align-items%3A%20center%3B%0A%09width%3A%20100%25%3B%0A%09height%3A%2080vh%3B%0A%09display%3A%20none%3B%0A%7D%0A%0A.etag-assist-remind-main-success%20.etag-label-email%20%7B%20%0A%09%09font-size%3A%2014px%3B%0A%09%09margin%3A%2010px%3B%20%20%0A%7D%0A%0A.etag-assist-remind-main-fail%20%7B%20%0A%09padding%3A%2020px%3B%0A%09font-size%3A%2025px%3B%0A%09font-weight%3A%20500%3B%0A%09text-align%3A%20center%3B%0A%09justify-content%3A%20center%3B%0A%09align-items%3A%20center%3B%0A%09width%3A%20100%25%3B%0A%09height%3A%2080vh%3B%0A%09display%3A%20none%3B%0A%7D%0A%0A%40media%20(max-width%3A%20390px)%20%7B%0A%09.etag-assist-remind-content-box%20%7B%0A%09%09min-width%3A%20340px%3B%0A%09%7D%0A%0A%09.etag-assist-remind-content%20%7B%0A%09%09max-width%3A%20300px%3B%0A%09%09width%3A%20300px%3B%0A%09%7D%0A%7D"); const tagAssistRemind = TagAssistRemind(); const campaigns = {}; function init() { debug("Initialize module"); data = data.map((tar) => ({ ...tar, content: decodeURIComponent(tar.content), contentSuccess: decodeURIComponent(tar.contentSuccess), contentFail: decodeURIComponent(tar.contentFail), customCss: decodeURIComponent(tar.customCss), customJs: decodeURIComponent(tar.customJs) })); for (const item of data) { const name = item["name"]; const delay = item.delay || 0; debug(`Initializing item ${name} in ${delay}ms`, item); setTimeout(() => { const apply = _.utils.applyCampaign(item, moduleName); debug(`#### Assist Remind ${name}`, "Apply:", apply); if (apply) campaigns[name] = tagAssistRemind.create(item); }, delay); } } function update() { debug("Update module"); for (const item of data) { const name = item["name"]; const apply = _.utils.applyCampaign(item, moduleName); const campaign = campaigns[name]; debug(`Updateting item ${name}`, item); debug(`#### Assist Remind ${name}`, "Apply:", apply); if (apply) !campaign && (campaigns[name] = tagAssistRemind.create(item)); else campaign && campaign.remove(); } } init(); return { name: moduleName, update: update, };},}, modulesData: JSON.parse("{\"core\":[{\"debug\":false,\"status\":\"ACTIVE\"}],\"tag-capture\":[{\"id\":179,\"name\":\"Email\",\"delay\":0,\"includeIfUrlRegex\":\"https://inscricoes.cruzeirodosulvirtual.com.br/s/ficha-de-inscricao?c__processo=*\",\"type\":\"LEAD\",\"systemCapture\":false,\"passiveCapture\":true,\"clientId\":56,\"createdAt\":\"2024-04-12T17:36:14.759Z\",\"updatedAt\":\"2024-04-12T17:36:14.759Z\",\"fields\":[{\"id\":471,\"name\":\"lead\",\"group\":\"\",\"selector\":\"lightning-input\",\"captureId\":179,\"htmlAttribute\":\"VALUE\",\"triggerEvent\":\"CHANGE\",\"createdAt\":\"2024-04-12T17:36:14.759Z\",\"updatedAt\":\"2024-04-12T17:36:14.759Z\"}]},{\"id\":180,\"name\":\"Conversão\",\"delay\":0,\"includeIfUrlRegex\":\".+.com.br\\\\/s\\\\/ficha-de-inscricao\\\\?c__processo=.+\",\"type\":\"CONVERSION\",\"systemCapture\":false,\"passiveCapture\":true,\"clientId\":56,\"createdAt\":\"2024-04-12T17:36:33.941Z\",\"updatedAt\":\"2024-04-12T17:36:33.941Z\",\"fields\":[{\"id\":472,\"name\":\"OrderNumber\",\"group\":\"\",\"selector\":\".resumo-card-row-text .uiOutputText\",\"captureId\":180,\"htmlAttribute\":\"VALUE\",\"triggerEvent\":\"CHANGE\",\"createdAt\":\"2024-04-12T17:36:33.941Z\",\"updatedAt\":\"2024-04-12T17:36:33.941Z\"}]}],\"tag-assist\":[],\"tag-wid\":[],\"tag-search\":[],\"tag-assist-remind\":[]}"), debugMode: true, allowedSites: [".*"], urls: { modules: "/dist/modules/", ...JSON.parse("{\"apicapture\":\"https://api.etagdigital.com\",\"captureService\":\"https://capture.etagdigital.com\",\"trackingService\":\"https://tracking.etagdigital.com\"}") }, }; const modulesData = _.config.modulesData; _.config.debugMode = modulesData.core[0].debug || false; _.config.modulesData = { ...modulesData, ...(modulesData["tag-wid"] && { "tag-wid": modulesData["tag-wid"]?.map((tw) => { const twd = tw; return { ...tw, content: decodeURI(twd.content), customCss: decodeURI(twd.customCss), customJs: decodeURI(twd.customJs), }; }) }), ...(modulesData["tag-assist"] && { "tag-assist": modulesData["tag-assist"]?.map((ta) => { const tad = ta; return { ...ta, contentPromoContent: decodeURI(tad.contentPromoContent), customCss: decodeURI(tad.customCss), customJs: decodeURI(tad.customJs), }; }) }), ...(modulesData["tag-assist-remind"] && { "tag-assist-remind": modulesData["tag-assist-remind"]?.map((tar) => { const tard = tar; return { ...tar, contentContent: decodeURI(tard.content), contentContentSuccess: decodeURI(tard.contentSuccess), contentContentFail: decodeURI(tard.contentFail), customCss: decodeURI(tard.customCss), customJs: decodeURI(tard.customJs), }; }) }), }; Object.entries(_.config.modules) .forEach((module) => { const [moduleName, moduleFunction] = module; _.modules[moduleName] = moduleFunction(modulesData[moduleName], _); }); window.etag = __ = { get debug() { return _.config.debugMode; }, set debug(value) { _.config.debugMode = value; if (value) __.utils = _.utils; else delete __.utils; }, modules: _.modules }; if (_.config.debugMode) __.utils = _.utils; }; __.modules || _.init(); }).call(this, window.etag);