Los Más Vendidos
Gracias por tu preferencia
+10,000 clientas satisfechas ★★★★★
1
/
de
4
Gracias por tu preferencia
* (envuelto en ) * * Requiere que el script de Clarity ya esté cargado en la página. */ (function () { "use strict"; /* ── Utilidades ─────────────────────────────────────────── */ // Esperar a que clarity() esté disponible function clar(method) { var args = Array.prototype.slice.call(arguments); if (typeof window.clarity === "function") { window.clarity.apply(null, args); } } // Evitar disparar el mismo evento más de una vez por sesión de página var fired = {}; function once(eventName, tagKey, tagValue) { if (fired[eventName]) return; fired[eventName] = true; clar("event", eventName); if (tagKey) clar("set", tagKey, tagValue || "true"); // Log para depuración (quitar en producción si quieres) console.log("[Clarity Track]", eventName, tagKey ? tagKey + "=" + tagValue : ""); } /* ── 1. CARRITO ABIERTO ─────────────────────────────────── */ // El drawer de Rebuy se muestra/oculta. Observamos cambios de estilo. function watchCartOpen() { var flyout = document.querySelector(".rebuy-cart__flyout"); if (!flyout) return; var observer = new MutationObserver(function () { var isVisible = flyout.offsetHeight > 0 && getComputedStyle(flyout).display !== "none" && getComputedStyle(flyout).visibility !== "hidden"; if (isVisible) { once("cart_opened"); // Priorizar la grabación de esta sesión clar("upgrade", "cart_opened"); } }); observer.observe(flyout, { attributes: true, attributeFilter: ["style", "class"], }); // También detectar si ya está abierto al cargar if (flyout.offsetHeight > 0) { once("cart_opened"); clar("upgrade", "cart_opened"); } } /* ── 2. SELECTOR "¿Cómo vas a usar tu pedido?" ──────────── */ function watchSelector() { // Delegación de eventos en el documento para los radios de Rebuy document.addEventListener("change", function (e) { if (e.target && e.target.name === "rebuy-uso") { var value = e.target.value; // "Personal" o "Profesional" once("selector_chosen", "selector_option", value); } }); } /* ── 3. CLIC EN "PROCEDER A PAGAR" ──────────────────────── */ function watchProcederAPagar() { // Usar fase de captura porque Rebuy puede detener la propagación document.addEventListener("click", function (e) { var btn = e.target.closest(".rebuy-cart__checkout-button"); if (!btn) return; // Verificar si el selector fue elegido var selected = document.querySelector('input[name="rebuy-uso"]:checked'); if (selected) { once("proceder_a_pagar_click", "proceder_con_selector", "si"); } else { // El usuario hizo clic SIN elegir opción → dead click clar("event", "proceder_sin_selector"); // Este sí puede repetirse clar("set", "proceder_con_selector", "no"); console.log("[Clarity Track] proceder_sin_selector (dead click)"); } }, true); // ← capture phase } /* ── 4. CHECKOUT ENVÍO MOSTRADO ─────────────────────────── */ // El panel #cpmx-panel se hace visible cuando se abre el checkout function watchCheckoutShipping() { var panel = document.getElementById("cpmx-panel"); if (!panel) return; var observer = new MutationObserver(function () { var isVisible = panel.offsetHeight > 0; var steps = panel.querySelector(".cpmx-steps"); if (isVisible && steps) { var text = steps.textContent || ""; if (text.indexOf("2. Envío") > -1 || text.indexOf("2. Env") > -1) { once("checkout_shipping_shown"); } if (text.indexOf("3. Pago") > -1) { once("payment_step_reached", "reached_payment", "true"); } } }); observer.observe(panel, { attributes: true, childList: true, subtree: true, attributeFilter: ["style", "class"], }); } /* ── 5. CLIC EN "CONTINUAR AL PAGO" ─────────────────────── */ function watchContinuarAlPago() { document.addEventListener("click", function (e) { var btn = e.target.closest(".cpmx-cta"); if (!btn) return; // Verificar si el formulario tiene campos vacíos var panel = document.getElementById("cpmx-panel"); var inputs = panel ? panel.querySelectorAll("input[type='text'], select") : []; var emptyCount = 0; inputs.forEach(function (inp) { if ( inp.offsetHeight > 0 && (!inp.value || inp.value === "--" || inp.value === "") ) { emptyCount++; } }); if (emptyCount > 0) { clar("event", "continuar_campos_vacios"); // Puede repetirse clar("set", "campos_vacios_al_continuar", String(emptyCount)); console.log( "[Clarity Track] continuar_campos_vacios:", emptyCount, "campos" ); } else { once("continuar_al_pago_click", "formulario_completo", "si"); } }, true); // ← capture phase } /* ── 6. VOLVER AL CARRITO (abandono del checkout) ────────── */ function watchVolverAlCarrito() { document.addEventListener("click", function (e) { var btn = e.target.closest(".cpmx-back"); if (btn) { clar("event", "volver_al_carrito"); // Puede repetirse clar("set", "abandono_checkout", "volver_al_carrito"); } }, true); // ← capture phase } /* ── 7. ERROR DE VALIDACIÓN VISIBLE ─────────────────────── */ function watchValidationErrors() { var errbox = document.querySelector(".cpmx-errbox"); if (!errbox) return; var observer = new MutationObserver(function () { var isHidden = errbox.classList.contains("cpmx-hide"); if (!isHidden && errbox.offsetHeight > 0) { clar("event", "checkout_validation_error"); console.log("[Clarity Track] checkout_validation_error visible"); } }); observer.observe(errbox, { attributes: true, attributeFilter: ["class"], }); } /* ── 8. CIERRE DEL CARRITO SIN CHECKOUT ─────────────────── */ function watchCartClose() { var closeBtn = document.querySelector(".rebuy-cart__flyout-close"); if (closeBtn) { closeBtn.addEventListener("click", function () { if (!fired["proceder_a_pagar_click"]) { clar("event", "cart_closed_without_checkout"); clar("set", "abandono_carrito", "cerro_sin_checkout"); } }); } } /* ── INICIALIZACIÓN ─────────────────────────────────────── */ function init() { watchCartOpen(); watchSelector(); watchProcederAPagar(); watchCheckoutShipping(); watchContinuarAlPago(); watchVolverAlCarrito(); watchValidationErrors(); watchCartClose(); // Observar si el Rebuy flyout se agrega al DOM después // (en caso de que no exista al cargar la página) var body = document.body; var domObserver = new MutationObserver(function (mutations) { for (var i = 0; i < mutations.length; i++) { var nodes = mutations[i].addedNodes; for (var j = 0; j < nodes.length; j++) { var node = nodes[j]; if (node.nodeType === 1) { if ( node.classList && (node.classList.contains("rebuy-cart__flyout") || node.id === "cpmx-panel") ) { watchCartOpen(); watchCheckoutShipping(); watchValidationErrors(); watchCartClose(); } } } } }); domObserver.observe(body, { childList: true, subtree: true }); } // Esperar a que el DOM esté listo if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", init); } else { init(); } })();