1(function(){"use strict";var DEFAULTS={cookieName:"roas_radar_session_id",trackingCookieName:"_hba_id",cartAttributeKey:"roas_radar_session_id",landingPathAttributeKey:"roas_radar_landing_path",sessionStorageKey:"roas_radar_session_id",trackingSessionStorageKey:"_hba_id",syncEndpoint:"/cart/update.js",checkoutSelectors:["form[action^='/cart'] [name='checkout']","button[name='checkout']","a[href^='/checkout']","input[name='checkout']"],cartFormSelectors:["form[action^='/cart']","form[action='/cart']"]},config=assign({},DEFAULTS,window.ROASRadarConfig||{}),syncInFlight=null,lastSyncedSessionId=null;function assign(target){for(var i=1;i<arguments.length;i+=1)for(var source=arguments[i]||{},keys=Object.keys(source),j=0;j<keys.length;j+=1)target[keys[j]]=source[keys[j]];return target}function readCookie(name){var escaped=name.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),match=document.cookie.match(new RegExp("(?:^|; )"+escaped+"=([^;]*)"));return match?decodeURIComponent(match[1]):null}function readStorage(key,storage){try{return storage.getItem(key)}catch(error){return null}}function writeStorage(key,value,storage){try{storage.setItem(key,value)}catch(error){return}}function sanitizeSessionId(value){if(!value||typeof value!="string")return null;var trimmed=value.trim();return trimmed?trimmed.slice(0,128):null}function resolveSessionId(){for(var candidates=[window.__ROAS_RADAR_TRACKING_SESSION_ID,window.__ROAS_RADAR_SESSION_ID,readCookie(config.trackingCookieName),readCookie(config.cookieName),readStorage(config.trackingSessionStorageKey,window.sessionStorage),readStorage(config.trackingSessionStorageKey,window.localStorage),readStorage(config.sessionStorageKey,window.sessionStorage),readStorage(config.sessionStorageKey,window.localStorage)],i=0;i<candidates.length;i+=1){var sessionId=sanitizeSessionId(candidates[i]);if(sessionId)return sessionId}return null}function persistSessionId(sessionId){sessionId&&(window.__ROAS_RADAR_SESSION_ID=sessionId,window.__ROAS_RADAR_TRACKING_SESSION_ID=sessionId,writeStorage(config.sessionStorageKey,sessionId,window.sessionStorage),writeStorage(config.sessionStorageKey,sessionId,window.localStorage),writeStorage(config.trackingSessionStorageKey,sessionId,window.sessionStorage),writeStorage(config.trackingSessionStorageKey,sessionId,window.localStorage))}function buildAttributeName(attributeKey){return"attributes["+attributeKey+"]"}function upsertHiddenInput(form,name,value){if(!(!form||!name)){var selector="input[type='hidden'][name=\""+cssEscape(name)+'"]',input=form.querySelector(selector);input||(input=document.createElement("input"),input.type="hidden",input.name=name,form.appendChild(input)),input.value=value}}function cssEscape(value){return window.CSS&&typeof window.CSS.escape=="function"?window.CSS.escape(value):String(value).replace(/["\\]/g,"\\$&")}function updateCartForms(sessionId){for(var forms=document.querySelectorAll(config.cartFormSelectors.join(",")),sessionFieldName=buildAttributeName(config.cartAttributeKey),landingPathFieldName=buildAttributeName(config.landingPathAttributeKey),landingPath=window.location.pathname+window.location.search,i=0;i<forms.length;i+=1)upsertHiddenInput(forms[i],sessionFieldName,sessionId),upsertHiddenInput(forms[i],landingPathFieldName,landingPath)}function buildPayload(sessionId){var attributes={};return attributes[config.cartAttributeKey]=sessionId,attributes[config.landingPathAttributeKey]=window.location.pathname+window.location.search,JSON.stringify({attributes:attributes})}function syncCartAttributes(sessionId){return sessionId?lastSyncedSessionId===sessionId?Promise.resolve(!0):syncInFlight||(syncInFlight=fetch(config.syncEndpoint,{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json",Accept:"application/json"},body:buildPayload(sessionId)}).then(function(response){if(!response.ok)throw new Error("ROAS Radar cart sync failed with status "+response.status);return lastSyncedSessionId=sessionId,document.dispatchEvent(new CustomEvent("roas-radar:session-synced",{detail:{sessionId:sessionId,cartAttributeKey:config.cartAttributeKey}})),!0}).catch(function(error){return console.warn(error),!1}).finally(function(){syncInFlight=null}),syncInFlight):Promise.resolve(!1)}function attachCheckoutListeners(){document.addEventListener("click",function(event){var target=event.target;if(!(!target||!target.closest)){var checkoutTarget=target.closest(config.checkoutSelectors.join(","));if(checkoutTarget){var sessionId=resolveSessionId();persistSessionId(sessionId),updateCartForms(sessionId||""),syncCartAttributes(sessionId)}}},{passive:!0}),document.addEventListener("submit",function(){var sessionId=resolveSessionId();persistSessionId(sessionId),updateCartForms(sessionId||""),syncCartAttributes(sessionId)},!0)}
1function init(){attachCheckoutListeners();var sessionId=resolveSessionId();sessionId&&(persistSessionId(sessionId),updateCartForms(sessionId),syncCartAttributes(sessionId))}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",init):init()})(); 2//# sourceMappingURL=/cdn/shop/t/11/assets/roas-radar-session-propagation.js.map?v=74848901796306400501776380617
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.