PageSourceSearch

https://www.emamaco.com/cdn/shop/t/43/assets/emamaco-giftcard-link.js?v=134440697959970900621791595060

js emamaco.com collected 2026-10-10 02:33:25 UTC 7,824 bytes, 2 lines download raw bytes

1(function(){var PARAM="gcect",ATTR="emamaco_gift_card",API="https://api.convomesh.com/giftcard/emamaco/claim",RESEND_API="https://api.convomesh.com/giftcard/emamaco/resend",DISMISS_KEY="emamaco_gc_notice_seen";function money(cents){var n=Number(cents);if(!isFinite(n)||n<=0)return"";var d=n/100;return"$"+(d%1===0?String(d):d.toFixed(2))}function prettyDate(iso){var m=/^(\d{4})-(\d{2})-(\d{2})$/.exec(String(iso||""));if(!m)return"";var d=new Date(Number(m[1]),Number(m[2])-1,Number(m[3]));if(isNaN(d.getTime()))return"";try{return d.toLocaleDateString(void 0,{weekday:"long",day:"numeric",month:"long"})}catch(e){return m[3]+"/"+m[2]}}function scrubUrl(){try{var u=new URL(window.location.href);if(!u.searchParams.has(PARAM))return;u.searchParams.delete(PARAM),window.history.replaceState({},"",u.pathname+(u.search||"")+(u.hash||""))}catch(e){}}function alreadyStashed(code){return fetch("/cart.js",{headers:{Accept:"application/json"}}).then(function(r){return r.json()}).then(function(c){return!!(c&&c.attributes&&c.attributes[ATTR]===code)}).catch(function(){return!1})}function stash(code){var body={};return body[ATTR]=code,fetch("/cart/update.js",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({attributes:body})}).then(function(r){if(r.ok)try{window.dispatchEvent(new CustomEvent("emamaco:gift-card-on"))}catch(e){}return r.ok})}var STYLE=[".emgc-back{position:fixed;inset:0;z-index:2147483000;display:flex;align-items:center;","justify-content:center;padding:20px;background:rgba(17,24,39,.55);opacity:0;","transition:opacity .18s ease}",".emgc-back.emgc-in{opacity:1}",".emgc-card:focus{outline:none}",".emgc-card{position:relative;width:100%;max-width:380px;background:#fff;border-radius:14px;","padding:26px 24px 22px;box-shadow:0 18px 50px rgba(0,0,0,.28);text-align:center;","font-family:inherit;color:#1f2937;transform:translateY(8px) scale(.98);","transition:transform .18s ease}",".emgc-back.emgc-in .emgc-card{transform:none}",".emgc-x{position:absolute;top:8px;right:10px;width:34px;height:34px;border:0;","background:none;font-size:22px;line-height:1;color:#9ca3af;cursor:pointer;border-radius:8px}",".emgc-x:hover{color:#1f2937;background:#f3f4f6}",".emgc-amt{font-size:38px;font-weight:700;letter-spacing:-.02em;margin:2px 0 4px}",".emgc-h{font-size:17px;font-weight:600;margin:0 0 8px}",".emgc-p{font-size:14px;line-height:1.5;margin:0 0 6px;color:#4b5563}",".emgc-note{font-size:12px;line-height:1.5;margin:14px 0 0;color:#6b7280}",".emgc-btn{display:block;width:100%;margin:18px 0 0;padding:13px 18px;background:#1f2937;","color:#fff;border:0;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer;","font-family:inherit}",".emgc-btn:hover{background:#111827}",".emgc-btn2{display:block;width:100%;margin:8px 0 0;padding:12px 18px;background:#fff;","color:#1f2937;border:1px solid #d1d5db;border-radius:8px;font-size:14px;font-weight:600;","cursor:pointer;font-family:inherit}",".emgc-btn2:hover{background:#f9fafb}",".emgc-btn2[disabled]{opacity:.55;cursor:default}",".emgc-said{font-size:13px;line-height:1.5;margin:10px 0 0;color:#166534;font-weight:600}","@media (prefers-reduced-motion:reduce){.emgc-back,.emgc-card{transition:none}}"].join(""),open=!1;function notice(kind,data,token){if(open)return;try{if(sessionStorage.getItem(DISMISS_KEY))return}catch(e){}open=!0;try{sessionStorage.setItem(DISMISS_KEY,"1")}catch(e){}if(!document.getElementById("emgc-style")){var st=document.createElement("style");st.id="emgc-style",st.textContent=STYLE,document.head.appendChild(st)}var amount=money(data&&data.amountCents),when=prettyDate(data&&data.expiresOn),last4=data&&data.last4?String(data.last4):"",head,para,note;kind==="applied"?(head="Your gift card is on",para="It comes off automatically at checkout"+(last4?", and you will see it there as the card ending "+last4:"")+".",note=when?"Use it by "+when+". If anything looks wrong at checkout, your code is in your email from emamaco.":"If anything looks wrong at checkout, your code is in your email from emamaco."):(head="Your gift card is waiting",para="We could not attach it to this visit automatically.",note='Your code is in your email from emamaco, with the subject "emamaco gift card". Enter it at checkout under "Use emamaco gift card" - or have it sent again below.');var back=document.createElement("div");back.className="emgc-back",back.setAttribute("role","dialog"),back.setAttribute("aria-modal","true"),back.setAttribute("aria-label","Gift card");var card=document.createElement("div");card.className="emgc-card",card.setAttribute("tabindex","-1");var x=document.createElement("button");if(x.type="button",x.className="emgc-x",x.setAttribute("aria-label","Close"),x.innerHTML="&times;",kind==="applied"&&amount){var amt=document.createElement("div");amt.className="emgc-amt",amt.textContent=amount,card.appendChild(amt)}var h=document.createElement("p");h.className="emgc-h",h.textContent=head;var p=document.createElement("p");p.className="emgc-p",p.textContent=para;var n=document.createElement("p");n.className="emgc-note",n.textContent=note;var btn=document.createElement("button");if(btn.type="button",btn.className="emgc-btn",btn.textContent="Start shopping",card.appendChild(x),card.appendChild(h),card.appendChild(p),card.appendChild(n),token){var resend=document.createElement("button");resend.type="button",resend.className="emgc-btn2",resend.textContent="Email me my gift card";var said=document.createElement("p");said.className="emgc-said",said.style.display="none",resend.addEventListener("click",function(){resend.disabled=!0,resend.textContent="Sending...",fetch(RESEND_API,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ect:token})}).then(function(r){return r.ok?r.json():null}
1).then(function(out){out&&out.ok?(resend.style.display="none",said.textContent="Sent. Check your email in a minute, including junk.",said.style.display="block"):(resend.disabled=!1,resend.textContent="Try again")}).catch(function(){resend.disabled=!1,resend.textContent="Try again"})}),card.appendChild(resend),card.appendChild(said)}card.appendChild(btn),back.appendChild(card),document.body.appendChild(back),requestAnimationFrame(function(){back.classList.add("emgc-in")});var lastFocus=document.activeElement;function close(){back.classList.remove("emgc-in"),document.removeEventListener("keydown",onKey),setTimeout(function(){back.parentNode&&back.parentNode.removeChild(back),open=!1;try{lastFocus&&lastFocus.focus&&lastFocus.focus()}catch(e){}},200)}function onKey(e){(e.key==="Escape"||e.keyCode===27)&&close(),e.key==="Tab"&&(e.preventDefault(),(document.activeElement===btn?x:btn).focus())}x.addEventListener("click",close),btn.addEventListener("click",close),back.addEventListener("click",function(e){e.target===back&&close()}),document.addEventListener("keydown",onKey);try{card.focus()}catch(e){}}function run(){var token;try{token=new URL(window.location.href).searchParams.get(PARAM)}catch(e){return}token&&fetch(API,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ect:token})}).then(function(r){return r.ok?r.json():null}).then(function(d){return!d||!d.ok||!d.code?(scrubUrl(),notice("manual",null,token),null):alreadyStashed(d.code).then(function(have){return have?!0:stash(d.code)}).then(function(stashed){scrubUrl();try{window.dispatchEvent(new CustomEvent("emamaco:giftcard:ready",{detail:{last4:d.last4,amountCents:d.amountCents,expiresOn:d.expiresOn}}))}catch(e){}return notice(stashed?"applied":"manual",d,token),!0})}).catch(function(){scrubUrl(),notice("manual",null,token)})}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",run):run()})();
2//# sourceMappingURL=/cdn/shop/t/43/assets/emamaco-giftcard-link.js.map?v=134440697959970900621791595060

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.