1(function(w,d){'use strict'; 2 if(w.CustomerSearchAnalytics)return; 3 var key='404eats_search_scope',context=null,seen={},endpoint=(w.frontend_config&&w.frontend_config.base_url?w.frontend_config.base_url:'')+'/searchanalytics/capture'; 4 function uuid(){if(w.crypto&&w.crypto.randomUUID)return w.crypto.randomUUID();return'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(c){var r=Math.random()*16|0,v=c==='x'?r:(r&3|8);return v.toString(16);});} 5 function scope(){try{var v=sessionStorage.getItem(key);if(!v){v=uuid();sessionStorage.setItem(key,v);}return v;}catch(e){return uuid();}} 6 function send(type,data){data=data||{};var payload=Object.assign({event_type:type,event_uuid:uuid(),correlation_id:(context&&context.correlation_id)||scope(),search_id:(context&&context.search_id)||'',guest_scope:scope(),source_surface:'web',event_time:new Date().toISOString()},data);var headers={'Content-Type':'application/json'};var csrf=d.querySelector('meta[name="csrf-token"]');if(csrf)headers['X-CSRF-Token']=csrf.content;return fetch(endpoint,{method:'POST',credentials:'same-origin',keepalive:true,headers:headers,body:JSON.stringify(payload)}).catch(function(){return null;});} 7 function query(form){var input=form&&form.querySelector('[data-search-input],input[type="search"],input[name="q"],input[name="query"]');return input?input.value:'';} 8 function begin(q,type){context={correlation_id:scope(),search_id:uuid(),query:q||'',search_type:type||'keyword'};send(type==='ai'?'AI_SEARCH_USED':'SEARCH_SUBMITTED',context);return context;} 9 d.addEventListener('submit',function(e){var q=query(e.target);if(q)begin(q,'keyword');},true); 10 d.addEventListener('click',function(e){var el=e.target.closest('[data-result-id],[data-merchant-id],[data-item-id],a[href*="/restaurant/"],a[href*="/item/"]');if(!el)return;var merchant=el.getAttribute('data-merchant-id')||0,item=el.getAttribute('data-item-id')||0,type=item?'item':merchant?'restaurant':el.getAttribute('data-result-type')||'';if(type)send('RESULT_CLICK',{query:context&&context.query,result_type:type,result_id:item||merchant,merchant_id:merchant,item_id:item,position:el.getAttribute('data-position')||0,classification:el.getAttribute('data-classification')||'organic'});var add=e.target.closest('[data-add-cart],.add-to-cart,.add-cart');if(add)send('ADD_TO_CART',{query:context&&context.query,result_type:'item',item_id:add.getAttribute('data-item-id')||item,merchant_id:add.getAttribute('data-merchant-id')||merchant});},true); 11 d.addEventListener('click',function(e){var link=e.target.closest('a[href*="checkout"],button[data-checkout]');if(link)send('CHECKOUT_STARTED',{query:context&&context.query});},true); 12 function impressions(root){(root||d).querySelectorAll('[data-result-id]:not([data-search-impressed]),[data-merchant-id]:not([data-search-impressed]),[data-item-id]:not([data-search-impressed])').forEach(function(el,i){el.setAttribute('data-search-impressed','1');var merchant=el.getAttribute('data-merchant-id')||0,item=el.getAttribute('data-item-id')||0;send('RESULT_IMPRESSION',{query:context&&context.query,result_type:item?'item':'restaurant',result_id:item||merchant,merchant_id:merchant,item_id:item,position:el.getAttribute('data-position')||i+1,classification:el.getAttribute('data-classification')||'organic'});});} 13 if(w.MutationObserver)new MutationObserver(function(){impressions(d);}).observe(d.documentElement,{childList:true,subtree:true}); 14 w.addEventListener('customer-search-zero',function(e){send('ZERO_RESULT',Object.assign({query:context&&context.query},e.detail||{}));}); 15 w.addEventListener('customer-search-filter',function(e){send('FILTER_APPLIED',Object.assign({query:context&&context.query},e.detail||{}));}); 16 w.addEventListener('customer-search-sort',function(e){send('SORT_CHANGED',Object.assign({query:context&&context.query},e.detail||{}));}); 17 w.addEventListener('customer-ai-search-fallback',function(e){send('AI_SEARCH_FALLBACK',Object.assign({query:context&&context.query},e.detail||{}));}); 18 w.CustomerSearchAnalytics={begin:begin,capture:send,context:function(){return context;}};d.addEventListener('DOMContentLoaded',function(){impressions(d);}); 19})(window,document);
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.