1(()=>{const TRADE_IN_EVALUATION_PROP="_tradeIn_evaluationId",TRADE_IN_EXPIRES_AT_PROP="_tradeIn_expiresAt",TRADE_IN_EXPIRED_PROP="_tradeIn_expired",TRADE_IN_TYPE_PROP="_tradeIn_type";if(window.__flipCheckoutSubmitServiceInitialized)return;window.__flipCheckoutSubmitServiceInitialized=!0;const ensureCheckoutEventName=()=>typeof window.PUB_SUB_EVENTS=="object"&&window.PUB_SUB_EVENTS?(window.PUB_SUB_EVENTS.flipCheckoutSubmit||(window.PUB_SUB_EVENTS.flipCheckoutSubmit="flip-checkout-submit"),window.PUB_SUB_EVENTS.flipCheckoutSubmit):"flip-checkout-submit",isCheckoutPath=value=>/checkouts?(?:\/|\?|$)/.test(value||""),resolveCheckoutUrl=rawUrl=>{if(!rawUrl)return"/checkout";const parser=document.createElement("a");parser.href=rawUrl;const normalizedPath=(parser.pathname||"")+(parser.search||"");return isCheckoutPath(normalizedPath)?(parser.pathname||"")+(parser.search||"")+(parser.hash||""):isCheckoutPath(rawUrl)?rawUrl:"/checkout"},getPublishFn=()=>typeof window.publish=="function"?window.publish:typeof publish=="function"?publish:null,hasTradeInCheckoutHandler=()=>!!(window.flipCheckoutSubmit&&window.flipCheckoutSubmit.hasTradeInCheckoutHandler===!0),publishCheckoutSubmit=checkoutUrl=>{const publishFn=getPublishFn();return!publishFn||!hasTradeInCheckoutHandler()?!1:(publishFn(ensureCheckoutEventName(),{checkoutUrl:resolveCheckoutUrl(checkoutUrl)}),!0)},asNonEmptyString=value=>typeof value!="string"?null:value.trim()||null,extractDatePart=value=>{const normalized=asNonEmptyString(value);if(!normalized)return null;const match=normalized.match(/^(\d{4}-\d{2}-\d{2})/);return match?match[1]:null},isTradeInExpired=properties=>{const evaluationId=asNonEmptyString(properties&&properties[TRADE_IN_EVALUATION_PROP]),expiresAt=asNonEmptyString(properties&&properties[TRADE_IN_EXPIRES_AT_PROP]);if(!evaluationId||evaluationId.toLowerCase()==="null"||!expiresAt)return!1;const currentTimestampMs=Date.now(),expiresAtTimestampMs=Date.parse(expiresAt);if(Number.isFinite(expiresAtTimestampMs)&&Number.isFinite(currentTimestampMs))return currentTimestampMs>=expiresAtTimestampMs;const expiresAtDate=extractDatePart(expiresAt);return expiresAtDate?new Date(currentTimestampMs).toISOString().slice(0,10)>=expiresAtDate:!1},normalizeTradeInType=value=>{const normalized=asNonEmptyString(value);return normalized==="FLIP"||normalized==="RADERA"?normalized:"FLIP"},handleJsonResponse=async response=>{if(!response.ok){let errorBody=null;try{errorBody=await response.json()}catch{errorBody={status:response.status,statusText:response.statusText}}throw errorBody}return response.json()},fetchCart=async()=>{const response=await fetch("/cart.js",{headers:{Accept:"application/json"}});return handleJsonResponse(response)},updateLineByKey=async(lineItemKey,payload)=>{const response=await fetch("/cart/change.js",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({id:lineItemKey,...payload})});return handleJsonResponse(response)},cleanupExpiredTradeInLines=async()=>{let cart=await fetchCart();const expiredLines=(Array.isArray(cart&&cart.items)?cart.items:[]).filter(line=>isTradeInExpired(line&&line.properties));for(const line of expiredLines){const currentProps={...line&&line.properties||{}},nextProps={...currentProps},expiresAt=asNonEmptyString(currentProps[TRADE_IN_EXPIRES_AT_PROP]);nextProps[TRADE_IN_EVALUATION_PROP]="null",nextProps[TRADE_IN_EXPIRES_AT_PROP]=expiresAt||"null",nextProps[TRADE_IN_EXPIRED_PROP]="true",nextProps[TRADE_IN_TYPE_PROP]=normalizeTradeInType(currentProps[TRADE_IN_TYPE_PROP]);try{cart=await updateLineByKey(line.key,{quantity:line.quantity,properties:nextProps})}catch(error){console.error("Failed to update expired trade-in properties:",line&&line.key,error)}}return cart},continueToCheckout=async checkoutUrl=>{const resolvedCheckoutUrl=resolveCheckoutUrl(checkoutUrl);if(publishCheckoutSubmit(resolvedCheckoutUrl))return;const serviceState=window.flipCheckoutSubmit=window.flipCheckoutSubmit||{};if(serviceState.inFlight!==!0){serviceState.inFlight=!0;try{await cleanupExpiredTradeInLines()}catch(error){console.error("Trade-In theme fallback cleanup failed before redirect:",error)}finally{serviceState.inFlight=!1,window.location.assign(resolvedCheckoutUrl)}}},isCheckoutSubmitter=submitter=>submitter instanceof HTMLElement&&submitter.matches("[name='checkout']"),bindCheckoutForm=form=>{form instanceof HTMLFormElement&&form.getAttribute("data-flip-checkout-submit-bound")!=="true"&&(form.setAttribute("data-flip-checkout-submit-bound","true"),form.addEventListener("submit",event=>{const submitEvent=event,submitter=submitEvent.submitter instanceof HTMLElement?submitEvent.submitter:document.activeElement;if(!isCheckoutSubmitter(submitter))return;const submitterAction=submitter instanceof HTMLElement?submitter.getAttribute("formaction")||submitter.getAttribute("data-checkout-url"):null,formAction=form.getAttribute("action")||form.action;event.preventDefault(),continueToCheckout(submitterAction||formAction)}))},bindKnownCheckoutForms=()=>{bindCheckoutForm(document.querySelector("#cart")),bindCheckoutForm(document.querySelector("#CartDrawer-Form")),bindCheckoutForm(document.querySelector("#CTOCartDrawer-Form")),bindCheckoutForm(document.querySelector("#cart-notification-form"))};window.flipCheckoutSubmit=window.flipCheckoutSubmit||{},window.flipCheckoutSubmit.publishCheckoutSubmit=publishCheckoutSubmit,
1window.flipCheckoutSubmit.continueToCheckout=continueToCheckout,window.flipCheckoutSubmit.bindKnownCheckoutForms=bindKnownCheckoutForms,document.readyState==="loading"?document.addEventListener("DOMContentLoaded",bindKnownCheckoutForms):bindKnownCheckoutForms()})(); 2//# sourceMappingURL=/cdn/shop/t/3/assets/trade-in-checkout-submit.js.map?_=1786000384357&v=38206013594628992631781695842
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.