1/* Wompi · "Chatea con nosotros" â Zendesk SunCo messenger */ 2(function () { 3 'use strict'; 4 5 var ZENDESK_KEY = '995e8436-141d-47e6-9608-07e7aa72c933'; // PROD 6 // var ZENDESK_KEY = 'e95b4158-24d5-4449-b02d-18de6f00bd59'; // TEST 7 var ZENDESK_SRC = 'https://static.zdassets.com/ekr/snippet.js?key=' + ZENDESK_KEY; 8 var SNIPPET_ID = 'ze-snippet'; 9 var LAUNCHER_ID = 'waiChatLauncher'; 10 var LAUNCHER_SELECTOR = '#' + LAUNCHER_ID + ', .wai-chat-launcher, [data-wai-chat-launcher]'; 11 12 var pendingOpen = false; 13 14 // Purga one-shot de las keys que dejó el bot WAI anterior. 15 function purgeLegacyStorage() { 16 try { 17 if (localStorage.getItem('wai_legacy_purged') === '1') return; 18 ['wai_terms_accepted', 'wai_user_identifier', 'wai_selected_vertical'] 19 .forEach(function (k) { localStorage.removeItem(k); }); 20 localStorage.setItem('wai_legacy_purged', '1'); 21 } catch (_) {} 22 } 23 purgeLegacyStorage(); 24 25 function injectZendeskSnippet() { 26 if (document.getElementById(SNIPPET_ID)) return; 27 var s = document.createElement('script'); 28 s.id = SNIPPET_ID; 29 s.src = ZENDESK_SRC; 30 s.async = true; 31 document.head.appendChild(s); 32 } 33 34 function callMessenger() { 35 if (typeof window.zE !== 'function') return false; 36 try { 37 var args = ['messenger'].concat(Array.prototype.slice.call(arguments)); 38 window.zE.apply(null, args); 39 return true; 40 } catch (err) { 41 console.warn('[zendesk-launcher] zE call failed:', err); 42 return false; 43 } 44 } 45 46 function hideNativeLauncher() { 47 return callMessenger('hide'); 48 } 49 50 function openMessenger() { 51 if (!callMessenger('show')) return false; 52 callMessenger('open'); 53 return true; 54 } 55 56 function whenReady(cb) { 57 if (typeof window.zE === 'function') { cb(); return; } 58 var tries = 0; 59 var maxTries = 100; // ~20s a 200ms 60 var t = setInterval(function () { 61 tries += 1; 62 if (typeof window.zE === 'function') { 63 clearInterval(t); 64 cb(); 65 } else if (tries >= maxTries) { 66 clearInterval(t); 67 console.warn('[zendesk-launcher] Zendesk no respondió a tiempo.'); 68 } 69 }, 200); 70 } 71 72 function init() { 73 injectZendeskSnippet(); 74 75 whenReady(function () { 76 hideNativeLauncher(); 77 // Re-ocultar el launcher nativo cada vez que se cierra el messenger. 78 callMessenger('on', 'close', function () { hideNativeLauncher(); }); 79 if (pendingOpen) { 80 pendingOpen = false; 81 openMessenger(); 82 } 83 }); 84 85 bindLauncher(); 86 } 87 88 function bindLauncher() { 89 // Delegación sobre document por si el launcher se inserta tarde. 90 document.addEventListener('click', function (evt) { 91 var target = evt.target; 92 if (!target) return; 93 var anchor = target.closest ? target.closest(LAUNCHER_SELECTOR) : null; 94 if (!anchor) return; 95 96 evt.preventDefault(); 97 98 // Cerrar el menú propio para que no tape el messenger. 99 var helpWidget = document.getElementById('bws-help-widget'); 100 if (helpWidget) helpWidget.classList.remove('bws-hw-active'); 101 102 if (!openMessenger()) pendingOpen = true; 103 }); 104 } 105 106 if (document.readyState === 'loading') { 107 document.addEventListener('DOMContentLoaded', init); 108 } else { 109 init(); 110 } 111})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.