PageSourceSearch

https://www.lornajane.com/cdn/shop/t/88/assets/givex-balance-check…?v=10160581994772462631790811522

js lornajane.com collected 2026-10-03 20:51:12 UTC 5,296 bytes, 1 lines download raw bytes

1import{f as A,c as G}from"./fetch.BphByVRy.min.js";import"./global-notice.C4ZfiLeN.min.js";import"./global-events.DtO11sQs.min.js";function I(s){if(s==null)return"";const t=typeof s=="string"?parseFloat(s):s;return Number.isNaN(t)?String(s):`$${t.toFixed(2)}`}function S(s){if(!s)return"";const t=typeof s=="string"?new Date(s):s;return Number.isNaN(t.getTime())?"":new Intl.DateTimeFormat("en-GB",{day:"numeric",month:"long",year:"numeric"}).format(t)}function c(s){const t=document.createElement("span");return t.textContent=s,t.innerHTML}function v(s,t){return Object.entries(t).reduce((i,[e,a])=>i.split(`[${e}]`).join(a),s)}function M(s){const t=s.match(/Bal=\$?([\d.]+)/i),i=s.match(/Expiry=([\d-]+)/i);return{amount:I(t?.[1]??""),expiryDate:i?.[1]??""}}const C="22071500",T=19;function k(s){const t=s.trim();if(!t)return"";if(t.startsWith(C))return t;const i=t.padStart(T-C.length,"0");return`${C}${i}`}class q extends HTMLElement{constructor(){super(...arguments),this.config=null,this.isSubmitting=!1,this.cardInput=null,this.pinInput=null,this.selectors={givexConfig:"script[data-givex-config]",givexForm:"[data-givex-form]",givexCard:"[data-givex-card]",givexPin:"[data-givex-pin]",givexResult:"[data-givex-result]",givexSubmit:"[data-givex-submit]"},this.classes={hidden:"hidden",disabled:"disabled"},this.dataAttribute={success:"data-success"}}connectedCallback(){const t=this.querySelector(this.selectors.givexConfig);if(!t?.textContent)return;let i;try{i=JSON.parse(t.textContent.trim())}catch{return}this.config=i,this.form=this.querySelector(this.selectors.givexForm),this.cardInput=this.querySelector(this.selectors.givexCard),this.pinInput=this.querySelector(this.selectors.givexPin);const e=this.querySelector(this.selectors.givexResult),a=this.querySelector(this.selectors.givexSubmit);if(!this.form||!this.cardInput||!e||!a)return;const y=()=>{e.classList.add(this.classes.hidden),e.removeAttribute(this.dataAttribute.success),e.textContent=""},f=()=>{const o=this.config;o&&(a.textContent=o.strings.submitLabel,a.classList.remove(this.classes.disabled))},L=()=>new Promise((o,r)=>{const{grecaptcha:u}=window;if(!u){r(new Error("captcha check failed"));return}u.ready(()=>{if(!this.config?.recaptchaSiteKey){r(new Error("Missing recaptchaSiteKey"));return}Promise.resolve(u.execute(this.config.recaptchaSiteKey,{action:"submit"})).then(o).catch(r)})});this.handleCardInput=()=>{y(),f()},this.handlePinInput=()=>{y(),f()},this.handleSubmit=async o=>{if(o.preventDefault(),this.isSubmitting)return;this.isSubmitting=!0;const r=this.config,u=this.cardInput?.value.trim()??"",_=k(u),N=this.pinInput?.value.trim()??"";if(r){if(!r.apiBaseUrl||!r.recaptchaSiteKey){e.textContent=r.strings.errorGeneric,e.classList.remove(this.classes.hidden);return}e.textContent="",e.removeAttribute(this.dataAttribute.success),e.classList.remove(this.classes.hidden),a.textContent=r.strings.processingLabel,a.classList.add(this.classes.disabled);try{const x=await L(),P=r.apiBaseUrl.replace(/\/$/,""),l=new URL(`${P}/card/balance`);l.searchParams.set("givex_cert",_),l.searchParams.set("givex_pin",N),l.searchParams.set("store_name",r.storeName),l.searchParams.set("captcha_token",x);const n=await A(l.toString(),G("GET","json"),{handleErrors:!1}),h=r.strings;if(!n){e.textContent=h.errorGeneric;return}if(!n.error){const m=(n.activating_currency_code??"").trim()||"AUD",p=I(n.certificate_balance),w=S(n.certificate_expiration_date),D=n.points_balance!=null?String(n.points_balance):"";let g="";n.certificate_balance!=null?g=v(h.successGiftCard,{amount:c(p),currencyCode:c(m),expiryDate:c(w)}):n.points_balance!=null&&Number(n.points_balance)>0?g=v(h.successLoyalty,{amount:c(p),points:c(D)}):g=h.errorGeneric,e.classList.remove(this.classes.hidden),e.setAttribute(this.dataAttribute.success,"true"),e.innerHTML=g;return}const d=n.error,b=typeof d=="object"?d?.message??"":String(d??""),E=b.toLowerCase();if(E.includes("cert expired")||E.includes("expired")){const m=M(b),p=v(h.errorCertExpired,{amount:c(m.amount),currencyCode:r.currencyCode,expiryDate:c(S(m.expiryDate))});e.classList.remove(this.classes.hidden),e.setAttribute(this.dataAttribute.success,"true"),e.innerHTML=p;return}e.textContent=this.mapErrorMessage(b||String(d),r)}catch(x){e.textContent=this.mapErrorMessage(x?.message??"",r)}finally{this.isSubmitting=!1,f(),e.classList.remove(this.classes.hidden)}}},this.cardInput.addEventListener("input",this.handleCardInput),this.pinInput?.addEventListener("input",this.handlePinInput),this.form.addEventListener("submit",this.handleSubmit)}disconnectedCallback(){this.cardInput&&this.handleCardInput&&this.cardInput.removeEventListener("input",this.handleCardInput),this.pinInput&&this.handlePinInput&&this.pinInput.removeEventListener("input",this.handlePinInput),this.form&&this.handleSubmit&&this.form.removeEventListener("submit",this.handleSubmit)}mapErrorMessage(t,i){switch((t||"").toLowerCase()){case"captcha check failed":return i.strings.errorCaptcha;case"cert not exist":return i.strings.errorCertNotExist;case"phone number is not unique":return i.strings.errorPhoneNotUnique;
1case"invalid security code":return i.strings.errorInvalidPin;default:return i.strings.errorGeneric}}}customElements.get("givex-balance-checker")||customElements.define("givex-balance-checker",q);

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.