@primer-io/primer-js 0.3.11 → 0.3.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
- import{a as fo,b as d,c as _}from"./chunks/chunk.DV3REKZU.js";var sr=class{constructor(t){(this.host=t).addController(this)}hostConnected(){}setCardNetworksLoading(){let t={detectedCardNetwork:null,selectableCardNetworks:[],isLoading:!0};this.updateCardNetworksState(t)}updateCardNetworksState(t){this.host.primerEventsController.dispatchCardNetworkChange(t),this.host.sdkContextController.setCardNetworks(t)}processCardNetworkChangeEvent(t){let{detectedCardNetworks:e,selectableCardNetworks:r}=t,o=e.preferred??e.items[0],n=r?.items??[];this.updateCardNetworksState({detectedCardNetwork:o,selectableCardNetworks:n,isLoading:!1})}};var Pt=class{constructor(t){(this.host=t).addController(this)}hostConnected(){}dispatchEvent(t,e){this.host.dispatchEvent(new CustomEvent(t,{detail:e,bubbles:!0,composed:!0}))}dispatchSdkState(t){this.dispatchEvent("primer:state-change",t)}dispatchPaymentMethods(t){this.dispatchEvent("primer:methods-update",t)}dispatchCheckoutInitialized(t){this.dispatchEvent("primer:ready",t)}dispatchCardNetworkChange(t){this.dispatchEvent("primer:card-network-change",t)}dispatchCardSubmit(t){this.dispatchEvent("primer:card-submit",{source:t})}dispatchFormSubmitSuccess(t){this.dispatchEvent("primer:card-success",{result:t})}dispatchFormSubmitErrors(t){this.dispatchEvent("primer:card-error",{errors:t})}handleExternalCardSubmit(t){this.dispatchCardSubmit(t.source)}};var Ze=class extends Event{constructor(t,e,r,o){super("context-request",{bubbles:!0,composed:!0}),this.context=t,this.contextTarget=e,this.callback=r,this.subscribe=o??!1}};var Tt=class{constructor(t,e,r,o){if(this.subscribe=!1,this.provided=!1,this.value=void 0,this.t=(n,a)=>{this.unsubscribe&&(this.unsubscribe!==a&&(this.provided=!1,this.unsubscribe()),this.subscribe||this.unsubscribe()),this.value=n,this.host.requestUpdate(),this.provided&&!this.subscribe||(this.provided=!0,this.callback&&this.callback(n,a)),this.unsubscribe=a},this.host=t,e.context!==void 0){let n=e;this.context=n.context,this.callback=n.callback,this.subscribe=n.subscribe??!1}else this.context=e,this.callback=r,this.subscribe=o??!1;this.host.addController(this)}hostConnected(){this.dispatchRequest()}hostDisconnected(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=void 0)}dispatchRequest(){this.host.dispatchEvent(new Ze(this.context,this.host,this.t,this.subscribe))}};var lr=class{get value(){return this.o}set value(t){this.setValue(t)}setValue(t,e=!1){let r=e||!Object.is(t,this.o);this.o=t,r&&this.updateObservers()}constructor(t){this.subscriptions=new Map,this.updateObservers=()=>{for(let[e,{disposer:r}]of this.subscriptions)e(this.o,r)},t!==void 0&&(this.value=t)}addCallback(t,e,r){if(!r)return void t(this.value);this.subscriptions.has(t)||this.subscriptions.set(t,{disposer:()=>{this.subscriptions.delete(t)},consumerHost:e});let{disposer:o}=this.subscriptions.get(t);t(this.value,o)}clearCallbacks(){this.subscriptions.clear()}};var pi=class extends Event{constructor(t,e){super("context-provider",{bubbles:!0,composed:!0}),this.context=t,this.contextTarget=e}},z=class extends lr{constructor(t,e,r){super(e.context!==void 0?e.initialValue:r),this.onContextRequest=o=>{if(o.context!==this.context)return;let n=o.contextTarget??o.composedPath()[0];n!==this.host&&(o.stopPropagation(),this.addCallback(o.callback,n,o.subscribe))},this.onProviderRequest=o=>{if(o.context!==this.context||(o.contextTarget??o.composedPath()[0])===this.host)return;let n=new Set;for(let[a,{consumerHost:l}]of this.subscriptions)n.has(a)||(n.add(a),l.dispatchEvent(new Ze(this.context,l,a,!0)));o.stopPropagation()},this.host=t,e.context!==void 0?this.context=e.context:this.context=e,this.attachListeners(),this.host.addController?.(this)}attachListeners(){this.host.addEventListener("context-request",this.onContextRequest),this.host.addEventListener("context-provider",this.onProviderRequest)}hostConnected(){this.host.dispatchEvent(new pi(this.context,this.host))}};function C({context:i,subscribe:t}){return(e,r)=>{typeof r=="object"?r.addInitializer(function(){new Tt(this,{context:i,callback:o=>{e.set.call(this,o)},subscribe:t})}):e.constructor.addInitializer(o=>{new Tt(o,{context:i,callback:n=>{o[r]=n},subscribe:t})})}}var Xe=Symbol("analytics-context");var wt=Symbol("events-context");var dr="cardNetworksContext";var ae="clientOptionsContext";var Qe="computedStylesContext";var B="headlessInstanceContext";var cr="klarnaCategoriesContext";var se="managerContext";var et="paymentMethodsContext";var F="sdkStateContext";var le="vaultManagerContext";var Te="vaultManagerCvvContext";var ms={LOCAL:"https://analytics.dev.data.primer.io/v1/sdk-logs",DEV:"https://analytics.dev.data.primer.io/v1/sdk-logs",STAGING:"https://analytics.staging.data.primer.io/v1/sdk-logs",SANDBOX:"https://analytics.sandbox.data.primer.io/v1/sdk-logs",PRODUCTION:"https://analytics.production.data.primer.io/v1/sdk-logs"};function yo(i,t){let r={message:i instanceof Error?i.message:typeof i=="string"?i:JSON.stringify(i)};i instanceof Error&&i.stack&&(r.stack=i.stack),t?.clientSessionId&&(r.clientSessionId=t.clientSessionId),t?.metadata&&Object.assign(r,t.metadata),t.status&&Object.assign(r,{status:t.status});let o={message:JSON.stringify(r),hostname:typeof window<"u"?window.location.hostname:"unknown",service:"web-sdk",ddsource:"lambda",ddtags:`env:${t?.environment},version:${t?.sdkVersion}`};us(o,t)}function us(i,{environment:t,clientSessionToken:e}){if(t==="LOCAL"){E.debug("\u{1F436}\u{1F436}\u{1F436} [Datadog Log] \u{1F436}\u{1F436}\u{1F436}",i);return}let r=ms[t||"LOCAL"];if(!r){E.warn("No logging endpoint configured for current environment");return}fetch(r,{method:"POST",headers:{"Content-Type":"application/json",...e&&{Authorization:`Bearer ${e}`}},body:JSON.stringify(i)}).catch(o=>{E.error("Failed to send log event:",o)})}var N=class N{static log(t,...e){N.enabled}static info(t,...e){N.enabled}static warn(t,...e){N.enabled}static error(t,...e){N.enabled&&e.forEach(r=>{r instanceof Error&&r.toJSON})}static errorWithDatadog(t,e){let{error:r,status:o="error"}=e||{};if(N.enabled){r instanceof Error&&r.toJSON;try{let n=r||t,a={environment:N.environment,sdkVersion:N.sdkVersion,clientSessionToken:N.clientSessionToken,clientSessionId:N.clientSessionId,status:o,metadata:{sdkOptions:N.sdkOptions,clientToken:N.clientToken}};yo(n,a)}catch{N.enabled}}}static debug(t,...e){N.enabled}static table(t,e){N.enabled}static time(t){N.enabled}static timeEnd(t){N.enabled}static setEnvironment(t){N.environment=t}static setSdkVersion(t){N.sdkVersion=t}static setClientSessionToken(t){N.clientSessionToken=t}static setClientSessionId(t){N.clientSessionId=t}static setSdkOptions(t){N.sdkOptions=t}static setClientToken(t){N.clientToken=t}};_(N,"enabled",!0),_(N,"environment"),_(N,"sdkVersion"),_(N,"clientSessionToken"),_(N,"clientSessionId"),_(N,"sdkOptions"),_(N,"clientToken"),_(N,"defaultFont","font-family: Consolas, monospace; font-size: 12px;"),_(N,"brandTag","[PRIMER]"),_(N,"brandStyle",`background: #24292e; color: #ffffff; padding: 2px 6px; border-radius: 3px; font-weight: bold; margin-right: 4px; ${N.defaultFont}`),_(N,"styles",{log:`color: #4CAF50; ${N.defaultFont}`,info:`color: #2196F3; ${N.defaultFont}`,warn:`color: #FF9800; ${N.defaultFont}`,error:`color: #F44336; ${N.defaultFont}`,debug:`color: #9C27B0; ${N.defaultFont}`});var E=N;function hs(i,t,e,r){let o=i,n=e;return{dispatch:a=>{let l=t(o,a,n);o=l,r(l)},getState:()=>Object.freeze({...o}),setCallbacks:a=>{n={...n,...a}}}}function $t(i){return(t,e,r)=>{let o=i[e.type];if(!o)throw new Error(`No handler for action type: ${e.type}`);return o(t,e,r)}}var ut=class{constructor(t,e,r,o,n=()=>{this.host.requestUpdate()}){this.host=t;this.stateHandler=n;this.host.addController(this),this._dispatcher=hs(e,r,o,a=>{this.stateHandler(a)})}get currentState(){return this._dispatcher.getState()}dispatch(t){this._dispatcher.dispatch(t)}setCallbacks(t){this._dispatcher.setCallbacks(t)}hostConnected(){}hostDisconnected(){}},pr=class{constructor(t){this.host=t;this._controllers=[];"addController"in this.host&&this.host.addController(this)}addController(t){this._controllers.push(t)}hostConnected(){this._controllers.forEach(t=>{t.hostConnected&&t.hostConnected()})}hostDisconnected(){this._controllers.forEach(t=>{t.hostDisconnected&&t.hostDisconnected()})}};var ur={isSuccessful:!1,isProcessing:!1,isLoading:!1,error:null,failure:null},fs={START_LOADING:i=>({...i,isLoading:!0}),START_PROCESSING:i=>({...i,failure:null,isProcessing:!0}),STOP_PROCESSING:i=>({...i,isProcessing:!1}),COMPLETE_PROCESSING:i=>({...i,isProcessing:!1,isSuccessful:!0}),SET_ERROR:(i,t)=>(E.error(t.payload.message),{...i,isProcessing:!1,error:t.payload}),SET_FAILURE:(i,t)=>({...i,isProcessing:!1,failure:t.payload}),COMPLETE_LOADING:i=>({...i,isLoading:!1}),RESET:()=>ur,RESET_ERROR:i=>({...i,error:null,failure:null})},ys=$t(fs),mr=class extends ut{constructor(t){super(t,ur,ys,null,e=>{t.sdkContextController.setSdkState(e),t.primerEventsController.dispatchSdkState(e)})}startLoading(){this.dispatch({type:"START_LOADING"})}startProcessing(){this.dispatch({type:"START_PROCESSING"})}stopProcessing(){this.dispatch({type:"STOP_PROCESSING"})}completeProcessing(){this.dispatch({type:"COMPLETE_PROCESSING"})}completeLoading(){this.dispatch({type:"COMPLETE_LOADING"})}setError(t){this.dispatch({type:"SET_ERROR",payload:t})}setFailure(t,e,r){this.dispatch({type:"SET_FAILURE",payload:{code:t,message:e,details:r}})}reset(){this.dispatch({type:"RESET"})}resetError(){this.dispatch({type:"RESET_ERROR"})}forceCompleteLoading(){this.currentState.isLoading&&(E.warn("Force completing loading state"),this.completeLoading())}};var hr=class{constructor(t){this.sdkStateProvider=null;this.paymentMethodsProvider=null;this.paymentManagerProvider=null;this.cardNetworksContext=null;this.vaultManagerCvvProvider=null;this.clientOptionsContext=null;this.headlessUtilsProvider=null;this.klarnaCategoriesProvider=null;this.computedStylesProvider=null;this.analyticsProvider=null;this.eventsProvider=null;(this.host=t).addController(this),this.sdkStateProvider=new z(t,{context:F,initialValue:ur}),this.paymentMethodsProvider=new z(t,{context:et,initialValue:null}),this.paymentManagerProvider=new z(t,{context:se,initialValue:new Map}),this.cardNetworksContext=new z(t,{context:dr,initialValue:null}),this.vaultManagerProvider=new z(t,{context:le,initialValue:null}),this.vaultManagerCvvProvider=new z(t,{context:Te,initialValue:null}),this.clientOptionsContext=new z(t,{context:ae,initialValue:null}),this.klarnaCategoriesProvider=new z(t,{context:cr,initialValue:{categories:[],isLoading:!0}}),this.headlessUtilsProvider=new z(t,{context:B,initialValue:null}),this.computedStylesProvider=new z(t,{context:Qe,initialValue:null}),this.analyticsProvider=new z(t,{context:Xe,initialValue:null}),this.eventsProvider=new z(t,{context:wt,initialValue:null})}hostConnected(){}setSdkState(t){this.sdkStateProvider?.setValue(t)}setPaymentMethods(t){this.paymentMethodsProvider?.setValue(t)}setPaymentManagers(t){this.paymentManagerProvider?.setValue(t)}setCardNetworks(t){this.cardNetworksContext?.setValue(t)}setVaultManager(t){this.vaultManagerProvider?.setValue(t)}setKlarnaCategories(t){this.klarnaCategoriesProvider?.setValue(t)}setClientOptions(t){this.clientOptionsContext?.setValue(t)}setHeadlessUtils(t){this.headlessUtilsProvider?.setValue(t)}setAnalyticsUtils(t){this.analyticsProvider?.setValue(t)}getAnalyticsUtils(){return this.analyticsProvider?.value}setComputedStyles(t){this.computedStylesProvider?.setValue(t)}setVaultManagerCvv(t){this.vaultManagerCvvProvider?.setValue(t)}setEventsController(t){this.eventsProvider?.setValue(t)}};var ht=class ht{constructor(t){(this.host=t).addController(this)}processCustomStyles(t){try{let e=JSON.parse(t);this.applyStyles(e)}catch(e){E.error("Error parsing customStyles property.",e instanceof Error?e:new Error(String(e)))}}isValidCssProperty(t){return/^[a-zA-Z][a-zA-Z0-9]*$/.test(t)}isValidCssValue(t){let r=/^[\w\s#.,%()\-+/!]+$/.test(t);return r||E.warn(`Rejected potentially unsafe CSS value: ${t}`),r}getCssVarName(t){let e=ht.cssVarCache.get(t);return e||(e=`--${t.replace(/([A-Z])/g,(r,o)=>`-${o.toLowerCase()}`)}`,ht.cssVarCache.set(t,e)),e}applyStyles(t){let e=[];for(let r of Object.keys(t)){let o=t[r];if(!o)continue;if(!this.isValidCssProperty(r)){E.warn(`Skipping invalid CSS property name: ${r}`);continue}if(!this.isValidCssValue(o))continue;let n=this.getCssVarName(r);e.push([n,o])}if(e.length>0)for(let[r,o]of e)this.host.style.setProperty(r,o)}removeStyle(t){let e=this.getCssVarName(t);this.host.style.removeProperty(e)}clearAllStyles(){for(let t of ht.cssVarCache.keys()){let e=ht.cssVarCache.get(t);e&&this.host.style.removeProperty(e)}}hostDisconnected(){}};ht.cssVarCache=new Map;var fr=ht;var yr=globalThis,vr=yr.ShadowRoot&&(yr.ShadyCSS===void 0||yr.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,vo=Symbol(),go=new WeakMap,gr=class{constructor(t,e,r){if(this._$cssResult$=!0,r!==vo)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o,e=this.t;if(vr&&t===void 0){let r=e!==void 0&&e.length===1;r&&(t=go.get(e)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),r&&go.set(e,t))}return t}toString(){return this.cssText}},bo=i=>new gr(typeof i=="string"?i:i+"",void 0,vo);var mi=(i,t)=>{if(vr)i.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let e of t){let r=document.createElement("style"),o=yr.litNonce;o!==void 0&&r.setAttribute("nonce",o),r.textContent=e.cssText,i.appendChild(r)}},br=vr?i=>i:i=>i instanceof CSSStyleSheet?(t=>{let e="";for(let r of t.cssRules)e+=r.cssText;return bo(e)})(i):i;var{is:gs,defineProperty:vs,getOwnPropertyDescriptor:bs,getOwnPropertyNames:Cs,getOwnPropertySymbols:Es,getPrototypeOf:As}=Object,tt=globalThis,Co=tt.trustedTypes,xs=Co?Co.emptyScript:"",Ss=tt.reactiveElementPolyfillSupport,Vt=(i,t)=>i,ui={toAttribute(i,t){switch(t){case Boolean:i=i?xs:null;break;case Object:case Array:i=i==null?i:JSON.stringify(i)}return i},fromAttribute(i,t){let e=i;switch(t){case Boolean:e=i!==null;break;case Number:e=i===null?null:Number(i);break;case Object:case Array:try{e=JSON.parse(i)}catch{e=null}}return e}},Cr=(i,t)=>!gs(i,t),Eo={attribute:!0,type:String,converter:ui,reflect:!1,hasChanged:Cr};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),tt.litPropertyMetadata??(tt.litPropertyMetadata=new WeakMap);var ft=class extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??(this.l=[])).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=Eo){if(e.state&&(e.attribute=!1),this._$Ei(),this.elementProperties.set(t,e),!e.noAccessor){let r=Symbol(),o=this.getPropertyDescriptor(t,r,e);o!==void 0&&vs(this.prototype,t,o)}}static getPropertyDescriptor(t,e,r){let{get:o,set:n}=bs(this.prototype,t)??{get(){return this[e]},set(a){this[e]=a}};return{get(){return o?.call(this)},set(a){let l=o?.call(this);n.call(this,a),this.requestUpdate(t,l,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??Eo}static _$Ei(){if(this.hasOwnProperty(Vt("elementProperties")))return;let t=As(this);t.finalize(),t.l!==void 0&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(Vt("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Vt("properties"))){let e=this.properties,r=[...Cs(e),...Es(e)];for(let o of r)this.createProperty(o,e[o])}let t=this[Symbol.metadata];if(t!==null){let e=litPropertyMetadata.get(t);if(e!==void 0)for(let[r,o]of e)this.elementProperties.set(r,o)}this._$Eh=new Map;for(let[e,r]of this.elementProperties){let o=this._$Eu(e,r);o!==void 0&&this._$Eh.set(o,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){let e=[];if(Array.isArray(t)){let r=new Set(t.flat(1/0).reverse());for(let o of r)e.unshift(br(o))}else t!==void 0&&e.push(br(t));return e}static _$Eu(t,e){let r=e.attribute;return r===!1?void 0:typeof r=="string"?r:typeof t=="string"?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(t=>t(this))}addController(t){(this._$EO??(this._$EO=new Set)).add(t),this.renderRoot!==void 0&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){let t=new Map,e=this.constructor.elementProperties;for(let r of e.keys())this.hasOwnProperty(r)&&(t.set(r,this[r]),delete this[r]);t.size>0&&(this._$Ep=t)}createRenderRoot(){let t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return mi(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),this._$EO?.forEach(t=>t.hostConnected?.())}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach(t=>t.hostDisconnected?.())}attributeChangedCallback(t,e,r){this._$AK(t,r)}_$EC(t,e){let r=this.constructor.elementProperties.get(t),o=this.constructor._$Eu(t,r);if(o!==void 0&&r.reflect===!0){let n=(r.converter?.toAttribute!==void 0?r.converter:ui).toAttribute(e,r.type);this._$Em=t,n==null?this.removeAttribute(o):this.setAttribute(o,n),this._$Em=null}}_$AK(t,e){let r=this.constructor,o=r._$Eh.get(t);if(o!==void 0&&this._$Em!==o){let n=r.getPropertyOptions(o),a=typeof n.converter=="function"?{fromAttribute:n.converter}:n.converter?.fromAttribute!==void 0?n.converter:ui;this._$Em=o,this[o]=a.fromAttribute(e,n.type),this._$Em=null}}requestUpdate(t,e,r){if(t!==void 0){if(r??(r=this.constructor.getPropertyOptions(t)),!(r.hasChanged??Cr)(this[t],e))return;this.P(t,e,r)}this.isUpdatePending===!1&&(this._$ES=this._$ET())}P(t,e,r){this._$AL.has(t)||this._$AL.set(t,e),r.reflect===!0&&this._$Em!==t&&(this._$Ej??(this._$Ej=new Set)).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(let[o,n]of this._$Ep)this[o]=n;this._$Ep=void 0}let r=this.constructor.elementProperties;if(r.size>0)for(let[o,n]of r)n.wrapped!==!0||this._$AL.has(o)||this[o]===void 0||this.P(o,this[o],n)}let t=!1,e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),this._$EO?.forEach(r=>r.hostUpdate?.()),this.update(e)):this._$EU()}catch(r){throw t=!1,this._$EU(),r}t&&this._$AE(e)}willUpdate(t){}_$AE(t){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&(this._$Ej=this._$Ej.forEach(e=>this._$EC(e,this[e]))),this._$EU()}updated(t){}firstUpdated(t){}};ft.elementStyles=[],ft.shadowRootOptions={mode:"open"},ft[Vt("elementProperties")]=new Map,ft[Vt("finalized")]=new Map,Ss?.({ReactiveElement:ft}),(tt.reactiveElementVersions??(tt.reactiveElementVersions=[])).push("2.0.4");var rt={INITIAL:0,PENDING:1,COMPLETE:2,ERROR:3},D=Symbol(),V=class{get taskComplete(){return this.t||(this.i===1?this.t=new Promise((t,e)=>{this.o=t,this.h=e}):this.i===3?this.t=Promise.reject(this.l):this.t=Promise.resolve(this.u)),this.t}constructor(t,e,r){this.p=0,this.i=0,(this._=t).addController(this);let o=typeof e=="object"?e:{task:e,args:r};this.v=o.task,this.j=o.args,this.m=o.argsEqual??Ao,this.k=o.onComplete,this.A=o.onError,this.autoRun=o.autoRun??!0,"initialValue"in o&&(this.u=o.initialValue,this.i=2,this.O=this.T?.())}hostUpdate(){this.autoRun===!0&&this.S()}hostUpdated(){this.autoRun==="afterUpdate"&&this.S()}T(){if(this.j===void 0)return;let t=this.j();if(!Array.isArray(t))throw Error("The args function must return an array");return t}async S(){let t=this.T(),e=this.O;this.O=t,t===e||t===void 0||e!==void 0&&this.m(e,t)||await this.run(t)}async run(t){let e,r;t??(t=this.T()),this.O=t,this.i===1?this.q?.abort():(this.t=void 0,this.o=void 0,this.h=void 0),this.i=1,this.autoRun==="afterUpdate"?queueMicrotask(()=>this._.requestUpdate()):this._.requestUpdate();let o=++this.p;this.q=new AbortController;let n=!1;try{e=await this.v(t,{signal:this.q.signal})}catch(a){n=!0,r=a}if(this.p===o){if(e===D)this.i=0;else{if(n===!1){try{this.k?.(e)}catch{}this.i=2,this.o?.(e)}else{try{this.A?.(r)}catch{}this.i=3,this.h?.(r)}this.u=e,this.l=r}this._.requestUpdate()}}abort(t){this.i===1&&this.q?.abort(t)}get value(){return this.u}get error(){return this.l}get status(){return this.i}render(t){switch(this.i){case 0:return t.initial?.();case 1:return t.pending?.();case 2:return t.complete?.(this.value);case 3:return t.error?.(this.error);default:throw Error("Unexpected status: "+this.i)}}},Ao=(i,t)=>i===t||i.length===t.length&&i.every((e,r)=>!Cr(e,t[r]));var _s={SET_LOADING:(i,t)=>({...i,isLoading:t.payload}),SET_UPDATING:(i,t)=>({...i,isUpdating:t.payload}),INITIALIZE_VAULT_MANAGER:(i,t,e)=>({...i,enabled:t.vaultEnabled,cvvRecapture:t.cvvRecapture,showEmptyState:t.showEmptyState,deleteVaultedPaymentMethod:e.deleteVaultedPaymentMethod,startVaultedPaymentFlow:e.startVaultedPaymentFlow,createCvvInput:e.createCvvInput}),UPDATE_PAYMENT_METHODS:(i,t)=>({...i,vaultedPaymentMethods:t.payload,isLoading:!1,isUpdating:!1}),SET_ERROR:i=>({...i,isLoading:!1,isUpdating:!1}),DISABLE:i=>({...i,enabled:!1}),RESET:()=>xo},Ps={INITIALIZE_CVV:(i,t,e)=>({...i,setCvvInput:e.setCvvInput,setSelectedVaultedPaymentMethod:e.setSelectedVaultedPaymentMethod}),SET_FORM_DIRTY:(i,t)=>({...i,formIsDirty:t.payload}),SET_CVV_INPUT:(i,t)=>({...i,cvvInput:t.payload}),SET_SELECTED_VAULTED_PAYMENT_METHOD:(i,t)=>({...i,selectedVaultedPaymentMethod:t.payload}),RESET_CVV:()=>So},Ts=$t(_s),ws=$t(Ps),xo={enabled:!1,isLoading:!1,isUpdating:!1,cvvRecapture:!1,showEmptyState:!0,vaultedPaymentMethods:[],createCvvInput:null,deleteVaultedPaymentMethod:()=>Promise.resolve(),startVaultedPaymentFlow:()=>Promise.resolve()},So={cvvInput:null,formIsDirty:!1,setCvvInput:()=>{},selectedVaultedPaymentMethod:null,setSelectedVaultedPaymentMethod:()=>{}},hi=class extends ut{constructor(t,e){super(t,xo,Ts,e,r=>{t.sdkContextController.setVaultManager(r)})}setLoading(t){this.dispatch({type:"SET_LOADING",payload:t})}setUpdating(t){this.dispatch({type:"SET_UPDATING",payload:t})}initializeVaultManager(t,e,r,o){this.dispatch({type:"INITIALIZE_VAULT_MANAGER",payload:t,vaultEnabled:e,cvvRecapture:r,showEmptyState:o})}updatePaymentMethods(t){this.dispatch({type:"UPDATE_PAYMENT_METHODS",payload:t})}setError(t){this.dispatch({type:"SET_ERROR",payload:t})}disable(){this.dispatch({type:"DISABLE"})}reset(){this.dispatch({type:"RESET"})}},fi=class extends ut{constructor(t,e){super(t,So,ws,e,r=>{t.sdkContextController.setVaultManagerCvv(r)})}initializeCvv(t){this.dispatch({type:"INITIALIZE_CVV",createCvvInput:t})}setFormDirty(t){this.dispatch({type:"SET_FORM_DIRTY",payload:t})}setCvvInputState(t){this.dispatch({type:"SET_CVV_INPUT",payload:t})}setSelectedPaymentMethod(t){this.dispatch({type:"SET_SELECTED_VAULTED_PAYMENT_METHOD",payload:t})}resetCvv(){this.dispatch({type:"RESET_CVV"})}},Ut=class extends pr{constructor(e){super(e);this._vaultManager=null;this._options=null;this.createVaultManagerFn=null;this.createCvvInput=e=>{if(!this._vaultManager)throw new Error("Vault manager not initialized");return this._vaultManager.createCvvInput(e)};this.deleteVaultedPaymentMethod=async e=>{if(!this._vaultManager)throw new Error("Vault manager not initialized");try{this.coreController.updatePaymentMethods(this.vaultManagerState.vaultedPaymentMethods),await this._vaultManager.deleteVaultedPaymentMethod(e),await this.fetchVaultedPaymentMethods()}catch(r){throw this.coreController.setError(r instanceof Error?r:new Error("Failed to delete payment method")),r}};this.setCvvInput=e=>{this.itemController.setCvvInputState(e)};this.startVaultedPaymentFlow=async()=>{if(!this._vaultManager)throw new Error("Vault manager not initialized");let e=this.vaultItemState.selectedVaultedPaymentMethod,r=this.vaultManagerState.cvvRecapture,o=this.vaultItemState.cvvInput;if(!e||r&&(!o||o.metadata.error)){this.itemController.setFormDirty(!0);return}this.host.sdkStateController.startProcessing();try{await this._vaultManager.startPaymentFlow(e.id,r?{cvv:o.valueToken}:void 0)}catch(n){E.errorWithDatadog("VaultManagerController: Error starting vaulted payment flow",{error:n}),this.coreController.setError(n instanceof Error?n:new Error("Failed to start vaulted payment flow")),this.host.sdkStateController.stopProcessing()}};this.setSelectedVaultedPaymentMethod=e=>{this.itemController.setSelectedPaymentMethod(e),this.itemController.setFormDirty(!1)};this.coreController=new hi(e,{deleteVaultedPaymentMethod:this.deleteVaultedPaymentMethod.bind(this),startVaultedPaymentFlow:this.startVaultedPaymentFlow.bind(this),createCvvInput:this.createCvvInput}),this.itemController=new fi(e,{setCvvInput:this.setCvvInput.bind(this),setSelectedVaultedPaymentMethod:this.setSelectedVaultedPaymentMethod.bind(this)}),this.addController(this.coreController),this.addController(this.itemController),new V(this.host,{task:async([r,o])=>{if(!r||!o?.vaultEnabled)return this.coreController.disable(),D;this.coreController.setLoading(!0);try{let n=r();this._vaultManager=n,this.coreController.initializeVaultManager(n,o.vaultEnabled,!!o.captureVaultedCardCvv,o.showEmptyState??!0),this.itemController.initializeCvv(n.createCvvInput),await this.fetchVaultedPaymentMethods(!0),E.log("VaultManagerController: Vault initialized successfully",{coreState:this.coreController.currentState,cvvState:this.itemController.currentState})}catch(n){E.errorWithDatadog("VaultManagerController: Failed to initialize vault",{error:n}),this.coreController.setError(n instanceof Error?n:new Error("Unknown error"))}return this._vaultManager},args:()=>[this.createVaultManagerFn,this.options]})}initializeVaultManager(e,r){this.createVaultManagerFn=e,this.options=r??null}get vaultManager(){return this._vaultManager}set vaultManager(e){this._vaultManager=e,this.host.requestUpdate()}get options(){return this._options}set options(e){this._options=e,this.host.requestUpdate()}get vaultManagerState(){return this.coreController.currentState}get vaultItemState(){return this.itemController.currentState}hostDisconnected(){super.hostDisconnected(),this.vaultManager=null,this.coreController.reset()}async fetchVaultedPaymentMethods(e){if(!this._vaultManager)throw new Error("Vault manager not initialized");try{e||this.coreController.setUpdating(!0);let r=await this._vaultManager.fetchVaultedPaymentMethods();return E.log("VaultManagerController: Fetched payment methods",r),this.coreController.updatePaymentMethods(r),r}catch(r){throw this.coreController.setError(r instanceof Error?r:new Error("Failed to fetch payment methods")),r}}};var _o=()=>Po.randomUUID?.()||Ms(),Ms=()=>("10000000-1000-4000-8000"+-1e11).replace(/[018]/g,i=>(i^Is()>>i/4).toString(16)),Is=()=>(Po.getRandomValues?.(new Uint8Array(1))[0]??Math.random()*16)&15,Po=typeof crypto<"u"?crypto:{};var ks={LOCAL:"",DEV:"https://analytics.dev.data.primer.io/v1/sdk-analytic-events",STAGING:"https://analytics.staging.data.primer.io/v1/sdk-analytic-events",SANDBOX:"https://analytics.sandbox.data.primer.io/v1/sdk-analytic-events",PRODUCTION:"https://analytics.production.data.primer.io/v1/sdk-analytic-events"},yi=class{constructor(){_(this,"sessionConfig",null)}initialize(t){this.sessionConfig=t}clear(){this.sessionConfig=null}getSessionConfig(){return this.sessionConfig}sendEvent(t){if(!this.sessionConfig){E.error("Analytics manager not initialized. Call initializeAnalytics() first.");return}let e={id:_o(),timestamp:Math.floor(Date.now()/1e3),sdkType:"WEB",eventName:t.eventName,checkoutSessionId:this.sessionConfig.checkoutSessionId,clientSessionId:this.sessionConfig.clientSessionId,primerAccountId:this.sessionConfig.primerAccountId,sdkVersion:this.sessionConfig.sdkVersion,userAgent:typeof navigator<"u"?navigator.userAgent:"",eventType:t.eventType,userLocale:t.userLocale,paymentMethod:t.paymentMethod,paymentId:t.paymentId,redirectDestinationUrl:t.redirectDestinationUrl,threedsProvider:t.threedsProvider,threedsResponse:t.threedsResponse};Ns(e,this.sessionConfig)}},gi=new yi;function To(i){gi.initialize(i)}function G(i){gi.sendEvent(i)}function wo(){gi.clear()}async function Ns(i,{environment:t,clientSessionToken:e}){if(t==="LOCAL"){E.debug(`Analytics event ${i.eventName}:`,i);return}let r=ks[t];return fetch(r,{method:"POST",headers:{"Content-Type":"application/json",...e&&{Authorization:`Bearer ${e}`}},body:JSON.stringify(i)}).catch(o=>{E.error("Failed to send analytics event:",o)})}var Yt="lit-localize-status";var Mo=i=>typeof i!="string"&&"strTag"in i,Er=(i,t,e)=>{let r=i[0];for(let o=1;o<i.length;o++)r+=t[e?e[o-1]:o-1],r+=i[o];return r};var Ht=i=>Mo(i)?Er(i.strings,i.values):i;var P=Ht,Io=!1;function vi(i){if(Io)throw new Error("lit-localize can only be configured once");P=i,Io=!0}var bi=class{constructor(t){this.__litLocalizeEventHandler=e=>{e.detail.status==="ready"&&this.host.requestUpdate()},this.host=t}hostConnected(){window.addEventListener(Yt,this.__litLocalizeEventHandler)}hostDisconnected(){window.removeEventListener(Yt,this.__litLocalizeEventHandler)}},Ls=i=>i.addController(new bi(i)),ko=Ls;var O=()=>(i,t)=>(i.addInitializer(ko),i);var Bt=class{constructor(){this.settled=!1,this.promise=new Promise((t,e)=>{this._resolve=t,this._reject=e})}resolve(t){this.settled=!0,this._resolve(t)}reject(t){this.settled=!0,this._reject(t)}};var Ve=[];for(let i=0;i<256;i++)Ve[i]=(i>>4&15).toString(16)+(i&15).toString(16);function No(i){let t=0,e=8997,r=0,o=33826,n=0,a=40164,l=0,s=52210;for(let c=0;c<i.length;c++)e^=i.charCodeAt(c),t=e*435,r=o*435,n=a*435,l=s*435,n+=e<<8,l+=o<<8,r+=t>>>16,e=t&65535,n+=r>>>16,o=r&65535,s=l+(n>>>16)&65535,a=n&65535;return Ve[s>>8]+Ve[s&255]+Ve[a>>8]+Ve[a&255]+Ve[o>>8]+Ve[o&255]+Ve[e>>8]+Ve[e&255]}var Os="",Rs="h",Ds="s";function Lo(i,t){return(t?Rs:Ds)+No(typeof i=="string"?i:i.join(Os))}var Oo=new WeakMap,Ro=new Map;function Do(i,t,e){if(i){let r=e?.id??$s(t),o=i[r];if(o){if(typeof o=="string")return o;if("strTag"in o)return Er(o.strings,t.values,o.values);{let n=Oo.get(o);return n===void 0&&(n=o.values,Oo.set(o,n)),{...o,values:n.map(a=>t.values[a])}}}}return Ht(t)}function $s(i){let t=typeof i=="string"?i:i.strings,e=Ro.get(t);return e===void 0&&(e=Lo(t,typeof i!="string"&&!("strTag"in i)),Ro.set(t,e)),e}function Ci(i){window.dispatchEvent(new CustomEvent(Yt,{detail:i}))}var xr="",Ei,$o,Sr,Ai,Vo,yt=new Bt;yt.resolve();var Ar=0,Uo=i=>(vi((t,e)=>Do(Vo,t,e)),xr=$o=i.sourceLocale,Sr=new Set(i.targetLocales),Sr.add(i.sourceLocale),Ai=i.loadLocale,{getLocale:Vs,setLocale:Us}),Vs=()=>xr,Us=i=>{if(i===(Ei??xr))return yt.promise;if(!Sr||!Ai)throw new Error("Internal error");if(!Sr.has(i))throw new Error("Invalid locale code");Ar++;let t=Ar;return Ei=i,yt.settled&&(yt=new Bt),Ci({status:"loading",loadingLocale:i}),(i===$o?Promise.resolve({templates:void 0}):Ai(i)).then(r=>{Ar===t&&(xr=i,Ei=void 0,Vo=r.templates,Ci({status:"ready",readyLocale:i}),yt.resolve())},r=>{Ar===t&&(Ci({status:"error",errorLocale:i,errorMessage:r.toString()}),yt.reject(r))}),yt.promise};var xi="en",Si=["ar","bg","ca","cs","da","de","el","en-GB","es","es-AR","es-MX","et-EE","fi-FI","fr","he","hr","hu","id","it","ja","ko","lt","lt-LT","lv","lv-LV","ms","nb","nl","nl_NL","pl","pt","pt-BR","ro","ru","sk","sl","sr-RS","sv","th","tr","uk-UA","vi","zf","zh-CN","zh-HK","zh-TW"],Yo="You must call `loadLocale` first to set up the localized template.",Ho,_r,Bo=i=>{let t=Uo({sourceLocale:xi,targetLocales:Si,loadLocale:i});Ho=t.getLocale,_r=t.setLocale};var _i=i=>{Bo(i)},Pi=i=>{if(!_r)throw new Error(Yo);return _r(i)};var Ft=new Set(Si);Ft.add(xi);var Ti=i=>{if(typeof i!="string")return!1;if(i==="en")return!0;let t=i.replace("_","-");if(Ft.has(t))return!0;let e=t.split("-")[0];return!!Ft.has(e)},wi=i=>{if(i==="en")return"en-GB";let t=i.replace("_","-");if(Ft.has(t))return t;let e=t.split("-")[0];return Ft.has(e)?e:"en-GB"};var Pr=globalThis,Tr=Pr.ShadowRoot&&(Pr.ShadyCSS===void 0||Pr.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Mi=Symbol(),Fo=new WeakMap,zt=class{constructor(t,e,r){if(this._$cssResult$=!0,r!==Mi)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o,e=this.t;if(Tr&&t===void 0){let r=e!==void 0&&e.length===1;r&&(t=Fo.get(e)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),r&&Fo.set(e,t))}return t}toString(){return this.cssText}},we=i=>new zt(typeof i=="string"?i:i+"",void 0,Mi),g=(i,...t)=>{let e=i.length===1?i[0]:t.reduce((r,o,n)=>r+(a=>{if(a._$cssResult$===!0)return a.cssText;if(typeof a=="number")return a;throw Error("Value passed to 'css' function must be a 'css' function result: "+a+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(o)+i[n+1],i[0]);return new zt(e,i,Mi)},zo=(i,t)=>{if(Tr)i.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let e of t){let r=document.createElement("style"),o=Pr.litNonce;o!==void 0&&r.setAttribute("nonce",o),r.textContent=e.cssText,i.appendChild(r)}},Ii=Tr?i=>i:i=>i instanceof CSSStyleSheet?(t=>{let e="";for(let r of t.cssRules)e+=r.cssText;return we(e)})(i):i;var{is:Ys,defineProperty:Hs,getOwnPropertyDescriptor:Bs,getOwnPropertyNames:Fs,getOwnPropertySymbols:zs,getPrototypeOf:js}=Object,it=globalThis,jo=it.trustedTypes,Ks=jo?jo.emptyScript:"",Gs=it.reactiveElementPolyfillSupport,jt=(i,t)=>i,Kt={toAttribute(i,t){switch(t){case Boolean:i=i?Ks:null;break;case Object:case Array:i=i==null?i:JSON.stringify(i)}return i},fromAttribute(i,t){let e=i;switch(t){case Boolean:e=i!==null;break;case Number:e=i===null?null:Number(i);break;case Object:case Array:try{e=JSON.parse(i)}catch{e=null}}return e}},wr=(i,t)=>!Ys(i,t),Ko={attribute:!0,type:String,converter:Kt,reflect:!1,useDefault:!1,hasChanged:wr};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),it.litPropertyMetadata??(it.litPropertyMetadata=new WeakMap);var Ue=class extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??(this.l=[])).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=Ko){if(e.state&&(e.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((e=Object.create(e)).wrapped=!0),this.elementProperties.set(t,e),!e.noAccessor){let r=Symbol(),o=this.getPropertyDescriptor(t,r,e);o!==void 0&&Hs(this.prototype,t,o)}}static getPropertyDescriptor(t,e,r){let{get:o,set:n}=Bs(this.prototype,t)??{get(){return this[e]},set(a){this[e]=a}};return{get:o,set(a){let l=o?.call(this);n?.call(this,a),this.requestUpdate(t,l,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??Ko}static _$Ei(){if(this.hasOwnProperty(jt("elementProperties")))return;let t=js(this);t.finalize(),t.l!==void 0&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(jt("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(jt("properties"))){let e=this.properties,r=[...Fs(e),...zs(e)];for(let o of r)this.createProperty(o,e[o])}let t=this[Symbol.metadata];if(t!==null){let e=litPropertyMetadata.get(t);if(e!==void 0)for(let[r,o]of e)this.elementProperties.set(r,o)}this._$Eh=new Map;for(let[e,r]of this.elementProperties){let o=this._$Eu(e,r);o!==void 0&&this._$Eh.set(o,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){let e=[];if(Array.isArray(t)){let r=new Set(t.flat(1/0).reverse());for(let o of r)e.unshift(Ii(o))}else t!==void 0&&e.push(Ii(t));return e}static _$Eu(t,e){let r=e.attribute;return r===!1?void 0:typeof r=="string"?r:typeof t=="string"?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(t=>t(this))}addController(t){(this._$EO??(this._$EO=new Set)).add(t),this.renderRoot!==void 0&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){let t=new Map,e=this.constructor.elementProperties;for(let r of e.keys())this.hasOwnProperty(r)&&(t.set(r,this[r]),delete this[r]);t.size>0&&(this._$Ep=t)}createRenderRoot(){let t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return zo(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),this._$EO?.forEach(t=>t.hostConnected?.())}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach(t=>t.hostDisconnected?.())}attributeChangedCallback(t,e,r){this._$AK(t,r)}_$ET(t,e){let r=this.constructor.elementProperties.get(t),o=this.constructor._$Eu(t,r);if(o!==void 0&&r.reflect===!0){let n=(r.converter?.toAttribute!==void 0?r.converter:Kt).toAttribute(e,r.type);this._$Em=t,n==null?this.removeAttribute(o):this.setAttribute(o,n),this._$Em=null}}_$AK(t,e){let r=this.constructor,o=r._$Eh.get(t);if(o!==void 0&&this._$Em!==o){let n=r.getPropertyOptions(o),a=typeof n.converter=="function"?{fromAttribute:n.converter}:n.converter?.fromAttribute!==void 0?n.converter:Kt;this._$Em=o,this[o]=a.fromAttribute(e,n.type)??this._$Ej?.get(o)??null,this._$Em=null}}requestUpdate(t,e,r){if(t!==void 0){let o=this.constructor,n=this[t];if(r??(r=o.getPropertyOptions(t)),!((r.hasChanged??wr)(n,e)||r.useDefault&&r.reflect&&n===this._$Ej?.get(t)&&!this.hasAttribute(o._$Eu(t,r))))return;this.C(t,e,r)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(t,e,{useDefault:r,reflect:o,wrapped:n},a){r&&!(this._$Ej??(this._$Ej=new Map)).has(t)&&(this._$Ej.set(t,a??e??this[t]),n!==!0||a!==void 0)||(this._$AL.has(t)||(this.hasUpdated||r||(e=void 0),this._$AL.set(t,e)),o===!0&&this._$Em!==t&&(this._$Eq??(this._$Eq=new Set)).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(let[o,n]of this._$Ep)this[o]=n;this._$Ep=void 0}let r=this.constructor.elementProperties;if(r.size>0)for(let[o,n]of r){let{wrapped:a}=n,l=this[o];a!==!0||this._$AL.has(o)||l===void 0||this.C(o,void 0,n,l)}}let t=!1,e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),this._$EO?.forEach(r=>r.hostUpdate?.()),this.update(e)):this._$EM()}catch(r){throw t=!1,this._$EM(),r}t&&this._$AE(e)}willUpdate(t){}_$AE(t){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&(this._$Eq=this._$Eq.forEach(e=>this._$ET(e,this[e]))),this._$EM()}updated(t){}firstUpdated(t){}};Ue.elementStyles=[],Ue.shadowRootOptions={mode:"open"},Ue[jt("elementProperties")]=new Map,Ue[jt("finalized")]=new Map,Gs?.({ReactiveElement:Ue}),(it.reactiveElementVersions??(it.reactiveElementVersions=[])).push("2.1.0");var Wt=globalThis,Mr=Wt.trustedTypes,Go=Mr?Mr.createPolicy("lit-html",{createHTML:i=>i}):void 0,Ni="$lit$",Ye=`lit$${Math.random().toFixed(9).slice(2)}$`,Li="?"+Ye,Ws=`<${Li}>`,bt=document,qt=()=>bt.createComment(""),Jt=i=>i===null||typeof i!="object"&&typeof i!="function",Oi=Array.isArray,Qo=i=>Oi(i)||typeof i?.[Symbol.iterator]=="function",ki=`[
2
- \f\r]`,Gt=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Wo=/-->/g,qo=/>/g,gt=RegExp(`>|${ki}(?:([^\\s"'>=/]+)(${ki}*=${ki}*(?:[^
3
- \f\r"'\`<>=]|("|')|))|$)`,"g"),Jo=/'/g,Zo=/"/g,en=/^(?:script|style|textarea|title)$/i,Ri=i=>(t,...e)=>({_$litType$:i,strings:t,values:e}),u=Ri(1),Me=Ri(2),Vm=Ri(3),Ee=Symbol.for("lit-noChange"),h=Symbol.for("lit-nothing"),Xo=new WeakMap,vt=bt.createTreeWalker(bt,129);function tn(i,t){if(!Oi(i)||!i.hasOwnProperty("raw"))throw Error("invalid template strings array");return Go!==void 0?Go.createHTML(t):t}var rn=(i,t)=>{let e=i.length-1,r=[],o,n=t===2?"<svg>":t===3?"<math>":"",a=Gt;for(let l=0;l<e;l++){let s=i[l],c,m,f=-1,y=0;for(;y<s.length&&(a.lastIndex=y,m=a.exec(s),m!==null);)y=a.lastIndex,a===Gt?m[1]==="!--"?a=Wo:m[1]!==void 0?a=qo:m[2]!==void 0?(en.test(m[2])&&(o=RegExp("</"+m[2],"g")),a=gt):m[3]!==void 0&&(a=gt):a===gt?m[0]===">"?(a=o??Gt,f=-1):m[1]===void 0?f=-2:(f=a.lastIndex-m[2].length,c=m[1],a=m[3]===void 0?gt:m[3]==='"'?Zo:Jo):a===Zo||a===Jo?a=gt:a===Wo||a===qo?a=Gt:(a=gt,o=void 0);let S=a===gt&&i[l+1].startsWith("/>")?" ":"";n+=a===Gt?s+Ws:f>=0?(r.push(c),s.slice(0,f)+Ni+s.slice(f)+Ye+S):s+Ye+(f===-2?l:S)}return[tn(i,n+(i[e]||"<?>")+(t===2?"</svg>":t===3?"</math>":"")),r]},Zt=class i{constructor({strings:t,_$litType$:e},r){let o;this.parts=[];let n=0,a=0,l=t.length-1,s=this.parts,[c,m]=rn(t,e);if(this.el=i.createElement(c,r),vt.currentNode=this.el.content,e===2||e===3){let f=this.el.content.firstChild;f.replaceWith(...f.childNodes)}for(;(o=vt.nextNode())!==null&&s.length<l;){if(o.nodeType===1){if(o.hasAttributes())for(let f of o.getAttributeNames())if(f.endsWith(Ni)){let y=m[a++],S=o.getAttribute(f).split(Ye),A=/([.?@])?(.*)/.exec(y);s.push({type:1,index:n,name:A[2],strings:S,ctor:A[1]==="."?kr:A[1]==="?"?Nr:A[1]==="@"?Lr:Et}),o.removeAttribute(f)}else f.startsWith(Ye)&&(s.push({type:6,index:n}),o.removeAttribute(f));if(en.test(o.tagName)){let f=o.textContent.split(Ye),y=f.length-1;if(y>0){o.textContent=Mr?Mr.emptyScript:"";for(let S=0;S<y;S++)o.append(f[S],qt()),vt.nextNode(),s.push({type:2,index:++n});o.append(f[y],qt())}}}else if(o.nodeType===8)if(o.data===Li)s.push({type:2,index:n});else{let f=-1;for(;(f=o.data.indexOf(Ye,f+1))!==-1;)s.push({type:7,index:n}),f+=Ye.length-1}n++}}static createElement(t,e){let r=bt.createElement("template");return r.innerHTML=t,r}};function Ct(i,t,e=i,r){if(t===Ee)return t;let o=r!==void 0?e._$Co?.[r]:e._$Cl,n=Jt(t)?void 0:t._$litDirective$;return o?.constructor!==n&&(o?._$AO?.(!1),n===void 0?o=void 0:(o=new n(i),o._$AT(i,e,r)),r!==void 0?(e._$Co??(e._$Co=[]))[r]=o:e._$Cl=o),o!==void 0&&(t=Ct(i,o._$AS(i,t.values),o,r)),t}var Ir=class{constructor(t,e){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){let{el:{content:e},parts:r}=this._$AD,o=(t?.creationScope??bt).importNode(e,!0);vt.currentNode=o;let n=vt.nextNode(),a=0,l=0,s=r[0];for(;s!==void 0;){if(a===s.index){let c;s.type===2?c=new Mt(n,n.nextSibling,this,t):s.type===1?c=new s.ctor(n,s.name,s.strings,this,t):s.type===6&&(c=new Or(n,this,t)),this._$AV.push(c),s=r[++l]}a!==s?.index&&(n=vt.nextNode(),a++)}return vt.currentNode=bt,o}p(t){let e=0;for(let r of this._$AV)r!==void 0&&(r.strings!==void 0?(r._$AI(t,r,e),e+=r.strings.length-2):r._$AI(t[e])),e++}},Mt=class i{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,e,r,o){this.type=2,this._$AH=h,this._$AN=void 0,this._$AA=t,this._$AB=e,this._$AM=r,this.options=o,this._$Cv=o?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode,e=this._$AM;return e!==void 0&&t?.nodeType===11&&(t=e.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,e=this){t=Ct(this,t,e),Jt(t)?t===h||t==null||t===""?(this._$AH!==h&&this._$AR(),this._$AH=h):t!==this._$AH&&t!==Ee&&this._(t):t._$litType$!==void 0?this.$(t):t.nodeType!==void 0?this.T(t):Qo(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==h&&Jt(this._$AH)?this._$AA.nextSibling.data=t:this.T(bt.createTextNode(t)),this._$AH=t}$(t){let{values:e,_$litType$:r}=t,o=typeof r=="number"?this._$AC(t):(r.el===void 0&&(r.el=Zt.createElement(tn(r.h,r.h[0]),this.options)),r);if(this._$AH?._$AD===o)this._$AH.p(e);else{let n=new Ir(o,this),a=n.u(this.options);n.p(e),this.T(a),this._$AH=n}}_$AC(t){let e=Xo.get(t.strings);return e===void 0&&Xo.set(t.strings,e=new Zt(t)),e}k(t){Oi(this._$AH)||(this._$AH=[],this._$AR());let e=this._$AH,r,o=0;for(let n of t)o===e.length?e.push(r=new i(this.O(qt()),this.O(qt()),this,this.options)):r=e[o],r._$AI(n),o++;o<e.length&&(this._$AR(r&&r._$AB.nextSibling,o),e.length=o)}_$AR(t=this._$AA.nextSibling,e){for(this._$AP?.(!1,!0,e);t&&t!==this._$AB;){let r=t.nextSibling;t.remove(),t=r}}setConnected(t){this._$AM===void 0&&(this._$Cv=t,this._$AP?.(t))}},Et=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,e,r,o,n){this.type=1,this._$AH=h,this._$AN=void 0,this.element=t,this.name=e,this._$AM=o,this.options=n,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=h}_$AI(t,e=this,r,o){let n=this.strings,a=!1;if(n===void 0)t=Ct(this,t,e,0),a=!Jt(t)||t!==this._$AH&&t!==Ee,a&&(this._$AH=t);else{let l=t,s,c;for(t=n[0],s=0;s<n.length-1;s++)c=Ct(this,l[r+s],e,s),c===Ee&&(c=this._$AH[s]),a||(a=!Jt(c)||c!==this._$AH[s]),c===h?t=h:t!==h&&(t+=(c??"")+n[s+1]),this._$AH[s]=c}a&&!o&&this.j(t)}j(t){t===h?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??"")}},kr=class extends Et{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===h?void 0:t}},Nr=class extends Et{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==h)}},Lr=class extends Et{constructor(t,e,r,o,n){super(t,e,r,o,n),this.type=5}_$AI(t,e=this){if((t=Ct(this,t,e,0)??h)===Ee)return;let r=this._$AH,o=t===h&&r!==h||t.capture!==r.capture||t.once!==r.once||t.passive!==r.passive,n=t!==h&&(r===h||o);o&&this.element.removeEventListener(this.name,this,r),n&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}},Or=class{constructor(t,e,r){this.element=t,this.type=6,this._$AN=void 0,this._$AM=e,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(t){Ct(this,t)}},on={M:Ni,P:Ye,A:Li,C:1,L:rn,R:Ir,D:Qo,V:Ct,I:Mt,H:Et,N:Nr,U:Lr,B:kr,F:Or},qs=Wt.litHtmlPolyfillSupport;qs?.(Zt,Mt),(Wt.litHtmlVersions??(Wt.litHtmlVersions=[])).push("3.3.0");var nn=(i,t,e)=>{let r=e?.renderBefore??t,o=r._$litPart$;if(o===void 0){let n=e?.renderBefore??null;r._$litPart$=o=new Mt(t.insertBefore(qt(),n),n,void 0,e??{})}return o._$AI(i),o};var Xt=globalThis,v=class extends Ue{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var e;let t=super.createRenderRoot();return(e=this.renderOptions).renderBefore??(e.renderBefore=t.firstChild),t}update(t){let e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=nn(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return Ee}};v._$litElement$=!0,v.finalized=!0,Xt.litElementHydrateSupport?.({LitElement:v});var Js=Xt.litElementPolyfillSupport;Js?.({LitElement:v});(Xt.litElementVersions??(Xt.litElementVersions=[])).push("4.2.0");var b=i=>(t,e)=>{e!==void 0?e.addInitializer(()=>{customElements.define(i,t)}):customElements.define(i,t)};var Zs={attribute:!0,type:String,converter:Kt,reflect:!1,hasChanged:wr},Xs=(i=Zs,t,e)=>{let{kind:r,metadata:o}=e,n=globalThis.litPropertyMetadata.get(o);if(n===void 0&&globalThis.litPropertyMetadata.set(o,n=new Map),r==="setter"&&((i=Object.create(i)).wrapped=!0),n.set(e.name,i),r==="accessor"){let{name:a}=e;return{set(l){let s=t.get.call(this);t.set.call(this,l),this.requestUpdate(a,s,i)},init(l){return l!==void 0&&this.C(a,void 0,i,l),l}}}if(r==="setter"){let{name:a}=e;return function(l){let s=this[a];t.call(this,l),this.requestUpdate(a,s,i)}}throw Error("Unsupported decorator location: "+r)};function p(i){return(t,e)=>typeof e=="object"?Xs(i,t,e):((r,o,n)=>{let a=o.hasOwnProperty(n);return o.constructor.createProperty(n,r),a?Object.getOwnPropertyDescriptor(o,n):void 0})(i,t,e)}function M(i){return p({...i,state:!0,attribute:!1})}var At=(i,t,e)=>(e.configurable=!0,e.enumerable=!0,Reflect.decorate&&typeof t!="object"&&Object.defineProperty(i,t,e),e);function ot(i,t){return(e,r,o)=>{let n=a=>a.renderRoot?.querySelector(i)??null;if(t){let{get:a,set:l}=typeof r=="object"?e:o??(()=>{let s=Symbol();return{get(){return this[s]},set(c){this[s]=c}}})();return At(e,r,{get(){let s=a.call(this);return s===void 0&&(s=n(this),(s!==null||this.hasUpdated)&&l.call(this,s)),s}})}return At(e,r,{get(){return n(this)}})}}function $(i,t,e){return i?t(i):e?.(i)}var w=g` * { box-sizing: border-box; } `,an=g` :host { display: block; isolation: isolate; position: relative; width: 100%; //Keep the CSS loader in the same position - check css-loader-inline.ts min-height: 64px; } `;var sn="https://sdk.primer.io/web/v2-latest/Primer.min.js",nt="20px";var Rr=class{constructor(t){this._methods=t}get(t){return this._methods.get(t)}toArray(){return Array.from(this._methods.values())}size(){return this._methods.size}};var Dr=class{constructor(t){this.paymentMethods=null;this.headlessInstance=t}setPaymentMethods(t){this.paymentMethods=t}async refreshSession(){if(!this.headlessInstance){E.errorWithDatadog("PrimerJS: Cannot refresh session: Headless instance not available");return}try{await this.headlessInstance.refreshClientSession()}catch(t){throw E.errorWithDatadog("PrimerJS: Error refreshing client session",{error:t}),t}}getPaymentMethods(){return this.paymentMethods?this.paymentMethods.toArray():(E.warn("PrimerJS: Payment methods not available"),[])}handlePaymentStart(){this.onPaymentStart&&this.onPaymentStart()}handleBeforePaymentCreate(t,e){if(this.onPaymentPrepare){let r={continuePaymentCreation:()=>{E.info("PrimerJS: Payment creation continuing"),e.continuePaymentCreation()},abortPaymentCreation:()=>{E.info("PrimerJS: Payment creation aborted"),e.abortPaymentCreation()}};this.onPaymentPrepare(t,r)}else E.info("PrimerJS: No payment prepare handler, continuing by default"),e.continuePaymentCreation()}handlePaymentComplete(t){this.onPaymentComplete&&this.onPaymentComplete({payment:t,status:"success"})}handlePaymentFailure(t,e){this.onPaymentComplete&&this.onPaymentComplete({payment:e||null,status:"error",error:t})}};var $r=typeof window<"u"&&typeof window.document<"u";function Qs(i){return document.querySelector(`script[src^="${i}"]`)}function el(i,t){let e=document.createElement("script");return e.setAttribute("src",i),e.setAttribute("async",""),e.setAttribute("crossorigin","anonymous"),t&&e.setAttribute("type","module"),e}function ln(i,t=!1){if(!$r)throw new Error("Cannot load script in server environment");let e=Qs(i)??el(i,t);return new Promise((r,o)=>{e.onload=()=>{r()},e.onerror=()=>{o(new Error(`Failed to load script: ${i}`))},e.parentNode||document.head.appendChild(e)})}var tl={"../../node_modules/card-validator/dist/card-number.js":function(i,t,e){Object.defineProperty(t,"__esModule",{value:!0}),t.cardNumber=void 0;var r=e("../../node_modules/card-validator/dist/luhn-10.js"),o=e("../../node_modules/credit-card-type/dist/index.js");function n(l,s,c){return{card:l,isPotentiallyValid:s,isValid:c}}function a(l,s){s===void 0&&(s={});var c,m,f;if(typeof l!="string"&&typeof l!="number")return n(null,!1,!1);var y=String(l).replace(/-|\s/g,"");if(!/^\d*$/.test(y))return n(null,!1,!1);var S=o(y);if(S.length===0)return n(null,!1,!1);if(S.length!==1)return n(null,!0,!1);var A=S[0];if(s.maxLength&&y.length>s.maxLength)return n(A,!1,!1);m=s.skipLuhnValidation===!0||A.type===o.types.UNIONPAY&&s.luhnValidateUnionPay!==!0?!0:r(y),f=Math.max.apply(null,A.lengths),s.maxLength&&(f=Math.min(s.maxLength,f));for(var T=0;T<A.lengths.length;T++)if(A.lengths[T]===y.length)return c=y.length<f||m,n(A,c,m);return n(A,y.length<f,!1)}t.cardNumber=a},"../../node_modules/card-validator/dist/cardholder-name.js":function(i,t){Object.defineProperty(t,"__esModule",{value:!0}),t.cardholderName=void 0;var e=/^[\d\s-]*$/,r=255;function o(a,l){return{isValid:a,isPotentiallyValid:l}}function n(a){return typeof a!="string"?o(!1,!1):a.length===0?o(!1,!0):a.length>r?o(!1,!1):e.test(a)?o(!1,!0):o(!0,!0)}t.cardholderName=n},"../../node_modules/card-validator/dist/cvv.js":function(i,t){Object.defineProperty(t,"__esModule",{value:!0}),t.cvv=void 0;var e=3;function r(l,s){for(var c=0;c<l.length;c++)if(s===l[c])return!0;return!1}function o(l){for(var s=e,c=0;c<l.length;c++)s=l[c]>s?l[c]:s;return s}function n(l,s){return{isValid:l,isPotentiallyValid:s}}function a(l,s){return s===void 0&&(s=e),s=s instanceof Array?s:[s],typeof l!="string"||!/^\d*$/.test(l)?n(!1,!1):r(s,l.length)?n(!0,!0):l.length<Math.min.apply(null,s)?n(!1,!0):l.length>o(s)?n(!1,!1):n(!0,!0)}t.cvv=a},"../../node_modules/card-validator/dist/expiration-date.js":function(i,t,e){var r=this&&this.__assign||function(){return r=Object.assign||function(c){for(var m,f=1,y=arguments.length;f<y;f++){m=arguments[f];for(var S in m)Object.prototype.hasOwnProperty.call(m,S)&&(c[S]=m[S])}return c},r.apply(this,arguments)};Object.defineProperty(t,"__esModule",{value:!0}),t.expirationDate=void 0;var o=e("../../node_modules/card-validator/dist/lib/parse-date.js"),n=e("../../node_modules/card-validator/dist/expiration-month.js"),a=e("../../node_modules/card-validator/dist/expiration-year.js");function l(c,m,f,y){return{isValid:c,isPotentiallyValid:m,month:f,year:y}}function s(c,m){var f;if(typeof c=="string")c=c.replace(/^(\d\d) (\d\d(\d\d)?)$/,"$1/$2"),f=(0,o.parseDate)(String(c));else{if(c===null||typeof c!="object")return l(!1,!1,null,null);var y=r({},c);f={month:String(y.month),year:String(y.year)}}var S=(0,n.expirationMonth)(f.month),A=(0,a.expirationYear)(f.year,m);if(S.isValid){if(A.isCurrentYear){var T=S.isValidForThisYear;return l(T,T,f.month,f.year)}if(A.isValid)return l(!0,!0,f.month,f.year)}return S.isPotentiallyValid&&A.isPotentiallyValid?l(!1,!0,null,null):l(!1,!1,null,null)}t.expirationDate=s},"../../node_modules/card-validator/dist/expiration-month.js":function(i,t){Object.defineProperty(t,"__esModule",{value:!0}),t.expirationMonth=void 0;function e(o,n,a){return{isValid:o,isPotentiallyValid:n,isValidForThisYear:a||!1}}function r(o){var n=new Date().getMonth()+1;if(typeof o!="string")return e(!1,!1);if(o.replace(/\s/g,"")===""||o==="0")return e(!1,!0);if(!/^\d*$/.test(o))return e(!1,!1);var a=parseInt(o,10);if(isNaN(Number(o)))return e(!1,!1);var l=a>0&&a<13;return e(l,l,l&&a>=n)}t.expirationMonth=r},"../../node_modules/card-validator/dist/expiration-year.js":function(i,t){Object.defineProperty(t,"__esModule",{value:!0}),t.expirationYear=void 0;var e=19;function r(n,a,l){return{isValid:n,isPotentiallyValid:a,isCurrentYear:l||!1}}function o(n,a){a===void 0&&(a=e);var l;if(typeof n!="string")return r(!1,!1);if(n.replace(/\s/g,"")==="")return r(!1,!0);if(!/^\d*$/.test(n))return r(!1,!1);var s=n.length;if(s<2)return r(!1,!0);var c=new Date().getFullYear();if(s===3){var m=n.slice(0,2),f=String(c).slice(0,2);return r(!1,m===f)}if(s>4)return r(!1,!1);var y=parseInt(n,10),S=Number(String(c).substr(2,2)),A=!1;if(s===2){if(String(c).substr(0,2)===n)return r(!1,!0);l=S===y,A=y>=S&&y<=S+a}else s===4&&(l=c===y,A=y>=c&&y<=c+a);return r(A,A,l)}t.expirationYear=o},"../../node_modules/card-validator/dist/index.js":function(i,t,e){var r=this&&this.__createBinding||(Object.create?function(T,k,x,I){I===void 0&&(I=x);var U=Object.getOwnPropertyDescriptor(k,x);(!U||("get"in U?!k.__esModule:U.writable||U.configurable))&&(U={enumerable:!0,get:function(){return k[x]}}),Object.defineProperty(T,I,U)}:function(T,k,x,I){I===void 0&&(I=x),T[I]=k[x]}),o=this&&this.__setModuleDefault||(Object.create?function(T,k){Object.defineProperty(T,"default",{enumerable:!0,value:k})}:function(T,k){T.default=k}),n=this&&this.__importStar||function(T){if(T&&T.__esModule)return T;var k={};if(T!=null)for(var x in T)x!=="default"&&Object.prototype.hasOwnProperty.call(T,x)&&r(k,T,x);return o(k,T),k},a=n(e("../../node_modules/credit-card-type/dist/index.js")),l=e("../../node_modules/card-validator/dist/cardholder-name.js"),s=e("../../node_modules/card-validator/dist/card-number.js"),c=e("../../node_modules/card-validator/dist/expiration-date.js"),m=e("../../node_modules/card-validator/dist/expiration-month.js"),f=e("../../node_modules/card-validator/dist/expiration-year.js"),y=e("../../node_modules/card-validator/dist/cvv.js"),S=e("../../node_modules/card-validator/dist/postal-code.js"),A={creditCardType:a,cardholderName:l.cardholderName,number:s.cardNumber,expirationDate:c.expirationDate,expirationMonth:m.expirationMonth,expirationYear:f.expirationYear,cvv:y.cvv,postalCode:S.postalCode};i.exports=A},"../../node_modules/card-validator/dist/lib/is-array.js":function(i,t){Object.defineProperty(t,"__esModule",{value:!0}),t.isArray=void 0,t.isArray=Array.isArray||function(e){return Object.prototype.toString.call(e)==="[object Array]"}},"../../node_modules/card-validator/dist/lib/parse-date.js":function(i,t,e){Object.defineProperty(t,"__esModule",{value:!0}),t.parseDate=void 0;var r=e("../../node_modules/card-validator/dist/expiration-year.js"),o=e("../../node_modules/card-validator/dist/lib/is-array.js");function n(l){var s=Number(l[0]),c;return s===0?2:s>1||s===1&&Number(l[1])>2?1:s===1?(c=l.substr(1),(0,r.expirationYear)(c).isPotentiallyValid?1:2):l.length===5?1:l.length>5?2:1}function a(l){var s;if(/^\d{4}-\d{1,2}$/.test(l)?s=l.split("-").reverse():/\//.test(l)?s=l.split(/\s*\/\s*/g):/\s/.test(l)&&(s=l.split(/ +/g)),(0,o.isArray)(s))return{month:s[0]||"",year:s.slice(1).join()};var c=n(l),m=l.substr(0,c);return{month:m,year:l.substr(m.length)}}t.parseDate=a},"../../node_modules/card-validator/dist/luhn-10.js":function(i){function t(e){for(var r=0,o=!1,n=e.length-1,a;n>=0;)a=parseInt(e.charAt(n),10),o&&(a*=2,a>9&&(a=a%10+1)),o=!o,r+=a,n--;return r%10===0}i.exports=t},"../../node_modules/card-validator/dist/postal-code.js":function(i,t){Object.defineProperty(t,"__esModule",{value:!0}),t.postalCode=void 0;var e=3,r=new RegExp(/^[a-z0-9]+$/i);function o(a,l){return{isValid:a,isPotentiallyValid:l}}function n(a,l){l===void 0&&(l={});var s=l.minLength||e;return typeof a!="string"?o(!1,!1):a.length<s||!r.test(a.trim().slice(0,s))?o(!1,!0):o(!0,!0)}t.postalCode=n},"../../node_modules/credit-card-type/dist/index.js":function(i,t,e){var r=this&&this.__assign||function(){return r=Object.assign||function(x){for(var I,U=1,Je=arguments.length;U<Je;U++){I=arguments[U];for(var Dt in I)Object.prototype.hasOwnProperty.call(I,Dt)&&(x[Dt]=I[Dt])}return x},r.apply(this,arguments)},o=e("../../node_modules/credit-card-type/dist/lib/card-types.js"),n=e("../../node_modules/credit-card-type/dist/lib/add-matching-cards-to-results.js"),a=e("../../node_modules/credit-card-type/dist/lib/is-valid-input-type.js"),l=e("../../node_modules/credit-card-type/dist/lib/find-best-match.js"),s=e("../../node_modules/credit-card-type/dist/lib/clone.js"),c={},m={VISA:"visa",MASTERCARD:"mastercard",AMERICAN_EXPRESS:"american-express",DINERS_CLUB:"diners-club",DISCOVER:"discover",JCB:"jcb",UNIONPAY:"unionpay",MAESTRO:"maestro",ELO:"elo",MIR:"mir",HIPER:"hiper",HIPERCARD:"hipercard"},f=[m.VISA,m.MASTERCARD,m.AMERICAN_EXPRESS,m.DINERS_CLUB,m.DISCOVER,m.JCB,m.UNIONPAY,m.MAESTRO,m.ELO,m.MIR,m.HIPER,m.HIPERCARD],y=(0,s.clone)(f);function S(x){return c[x]||o[x]}function A(){return y.map(function(x){return(0,s.clone)(S(x))})}function T(x,I){I===void 0&&(I=!1);var U=y.indexOf(x);if(!I&&U===-1)throw new Error('"'+x+'" is not a supported card type.');return U}function k(x){var I=[];if(!(0,a.isValidInputType)(x))return I;if(x.length===0)return A();y.forEach(function(Je){var Dt=S(Je);(0,n.addMatchingCardsToResults)(x,Dt,I)});var U=(0,l.findBestMatch)(I);return U?[U]:I}k.getTypeInfo=function(x){return(0,s.clone)(S(x))},k.removeCard=function(x){var I=T(x);y.splice(I,1)},k.addCard=function(x){var I=T(x.type,!0);c[x.type]=x,I===-1&&y.push(x.type)},k.updateCard=function(x,I){var U=c[x]||o[x];if(!U)throw new Error('"'.concat(x,"\" is not a recognized type. Use `addCard` instead.'"));if(I.type&&U.type!==I.type)throw new Error("Cannot overwrite type parameter.");var Je=(0,s.clone)(U);Je=r(r({},Je),I),c[Je.type]=Je},k.changeOrder=function(x,I){var U=T(x);y.splice(U,1),y.splice(I,0,x)},k.resetModifications=function(){y=(0,s.clone)(f),c={}},k.types=m,i.exports=k},"../../node_modules/credit-card-type/dist/lib/add-matching-cards-to-results.js":function(i,t,e){Object.defineProperty(t,"__esModule",{value:!0}),t.addMatchingCardsToResults=void 0;var r=e("../../node_modules/credit-card-type/dist/lib/clone.js"),o=e("../../node_modules/credit-card-type/dist/lib/matches.js");function n(a,l,s){var c,m;for(c=0;c<l.patterns.length;c++){var f=l.patterns[c];if((0,o.matches)(a,f)){var y=(0,r.clone)(l);m=Array.isArray(f)?String(f[0]).length:String(f).length,a.length>=m&&(y.matchStrength=m),s.push(y);break}}}t.addMatchingCardsToResults=n},"../../node_modules/credit-card-type/dist/lib/card-types.js":function(i){var t={visa:{niceType:"Visa",type:"visa",patterns:[4],gaps:[4,8,12],lengths:[16,18,19],code:{name:"CVV",size:3}},mastercard:{niceType:"Mastercard",type:"mastercard",patterns:[[51,55],[2221,2229],[223,229],[23,26],[270,271],2720],gaps:[4,8,12],lengths:[16],code:{name:"CVC",size:3}},"american-express":{niceType:"American Express",type:"american-express",patterns:[34,37],gaps:[4,10],lengths:[15],code:{name:"CID",size:4}},"diners-club":{niceType:"Diners Club",type:"diners-club",patterns:[[300,305],36,38,39],gaps:[4,10],lengths:[14,16,19],code:{name:"CVV",size:3}},discover:{niceType:"Discover",type:"discover",patterns:[6011,[644,649],65],gaps:[4,8,12],lengths:[16,19],code:{name:"CID",size:3}},jcb:{niceType:"JCB",type:"jcb",patterns:[2131,1800,[3528,3589]],gaps:[4,8,12],lengths:[16,17,18,19],code:{name:"CVV",size:3}},unionpay:{niceType:"UnionPay",type:"unionpay",patterns:[620,[62100,62182],[62184,62187],[62185,62197],[62200,62205],[622010,622999],622018,[62207,62209],[623,626],6270,6272,6276,[627700,627779],[627781,627799],[6282,6289],6291,6292,810,[8110,8131],[8132,8151],[8152,8163],[8164,8171]],gaps:[4,8,12],lengths:[14,15,16,17,18,19],code:{name:"CVN",size:3}},maestro:{niceType:"Maestro",type:"maestro",patterns:[493698,[5e5,504174],[504176,506698],[506779,508999],[56,59],63,67,6],gaps:[4,8,12],lengths:[12,13,14,15,16,17,18,19],code:{name:"CVC",size:3}},elo:{niceType:"Elo",type:"elo",patterns:[401178,401179,438935,457631,457632,431274,451416,457393,504175,[506699,506778],[509e3,509999],627780,636297,636368,[650031,650033],[650035,650051],[650405,650439],[650485,650538],[650541,650598],[650700,650718],[650720,650727],[650901,650978],[651652,651679],[655e3,655019],[655021,655058]],gaps:[4,8,12],lengths:[16],code:{name:"CVE",size:3}},mir:{niceType:"Mir",type:"mir",patterns:[[2200,2204]],gaps:[4,8,12],lengths:[16,17,18,19],code:{name:"CVP2",size:3}},hiper:{niceType:"Hiper",type:"hiper",patterns:[637095,63737423,63743358,637568,637599,637609,637612],gaps:[4,8,12],lengths:[16],code:{name:"CVC",size:3}},hipercard:{niceType:"Hipercard",type:"hipercard",patterns:[606282],gaps:[4,8,12],lengths:[16],code:{name:"CVC",size:3}}};i.exports=t},"../../node_modules/credit-card-type/dist/lib/clone.js":function(i,t){Object.defineProperty(t,"__esModule",{value:!0}),t.clone=void 0;function e(r){return r?JSON.parse(JSON.stringify(r)):null}t.clone=e},"../../node_modules/credit-card-type/dist/lib/find-best-match.js":function(i,t){Object.defineProperty(t,"__esModule",{value:!0}),t.findBestMatch=void 0;function e(o){var n=o.filter(function(a){return a.matchStrength}).length;return n>0&&n===o.length}function r(o){return e(o)?o.reduce(function(n,a){return!n||Number(n.matchStrength)<Number(a.matchStrength)?a:n}):null}t.findBestMatch=r},"../../node_modules/credit-card-type/dist/lib/is-valid-input-type.js":function(i,t){Object.defineProperty(t,"__esModule",{value:!0}),t.isValidInputType=void 0;function e(r){return typeof r=="string"||r instanceof String}t.isValidInputType=e},"../../node_modules/credit-card-type/dist/lib/matches.js":function(i,t){Object.defineProperty(t,"__esModule",{value:!0}),t.matches=void 0;function e(n,a,l){var s=String(a).length,c=n.substr(0,s),m=parseInt(c,10);return a=parseInt(String(a).substr(0,c.length),10),l=parseInt(String(l).substr(0,c.length),10),m>=a&&m<=l}function r(n,a){return a=String(a),a.substring(0,n.length)===n.substring(0,a.length)}function o(n,a){return Array.isArray(a)?e(n,a[0],a[1]):r(n,a)}t.matches=o}},dn={};function Zi(i){var t=dn[i];if(t!==void 0)return t.exports;var e=dn[i]={exports:{}};return tl[i].call(e.exports,e,e.exports,Zi),e.exports}var ge=()=>wn.randomUUID?.()||rl(),rl=()=>"10000000-1000-4000-8000-100000000000".replace(/[018]/g,i=>(i^il()>>i/4).toString(16)),il=()=>(wn.getRandomValues?.(new Uint8Array(1))[0]??16*Math.random())&15,wn=typeof crypto<"u"?crypto:{},ol={LOCAL:"https://analytics.dev.data.primer.io/v1/sdk-logs",DEV:"https://analytics.dev.data.primer.io/v1/sdk-logs",STAGING:"https://analytics.staging.data.primer.io/v1/sdk-logs",SANDBOX:"https://analytics.sandbox.data.primer.io/v1/sdk-logs",PRODUCTION:"https://analytics.production.data.primer.io/v1/sdk-logs"};function nl(i,t){let r={message:i instanceof Error?i.message:typeof i=="string"?i:JSON.stringify(i)};i instanceof Error&&i.stack&&(r.stack=i.stack),t?.clientSessionId&&(r.clientSessionId=t.clientSessionId),t?.metadata&&Object.assign(r,t.metadata),t.status&&Object.assign(r,{status:t.status});let o={message:JSON.stringify(r),hostname:typeof window<"u"?window.location.hostname:"unknown",service:"web-sdk",ddsource:"lambda",ddtags:`env:${t?.environment},version:${t?.sdkVersion}`};al(o,t)}function al(i,{environment:t,clientSessionToken:e}){if(t==="LOCAL")return void R.debug("\u{1F436}\u{1F436}\u{1F436} [Datadog Log] \u{1F436}\u{1F436}\u{1F436}",i);let r=ol[t||"LOCAL"];if(!r)return void R.warn("No logging endpoint configured for current environment");fetch(r,{method:"POST",headers:{"Content-Type":"application/json",...e&&{Authorization:`Bearer ${e}`}},body:JSON.stringify(i)}).catch(o=>{R.error("Failed to send log event:",o)})}var L=class L{static log(t,...e){L.enabled}static info(t,...e){L.enabled}static warn(t,...e){L.enabled}static error(t,...e){L.enabled&&e.forEach(r=>{r instanceof Error&&r.toJSON})}static errorWithDatadog(t,e){let{error:r,status:o="error"}=e||{};if(L.enabled){r instanceof Error&&r.toJSON;try{let n=r||t,a={environment:L.environment,sdkVersion:L.sdkVersion,clientSessionToken:L.clientSessionToken,clientSessionId:L.clientSessionId,status:o,metadata:{sdkOptions:L.sdkOptions,clientToken:L.clientToken}};nl(n,a)}catch{L.enabled}}}static debug(t,...e){L.enabled}static table(t,e){L.enabled}static time(t){L.enabled}static timeEnd(t){L.enabled}static setEnvironment(t){L.environment=t}static setSdkVersion(t){L.sdkVersion=t}static setClientSessionToken(t){L.clientSessionToken=t}static setClientSessionId(t){L.clientSessionId=t}static setSdkOptions(t){L.sdkOptions=t}static setClientToken(t){L.clientToken=t}};_(L,"enabled",!0),_(L,"environment"),_(L,"sdkVersion"),_(L,"clientSessionToken"),_(L,"clientSessionId"),_(L,"sdkOptions"),_(L,"clientToken"),_(L,"defaultFont","font-family: Consolas, monospace; font-size: 12px;"),_(L,"brandTag","[PRIMER]"),_(L,"brandStyle",`background: #24292e; color: #ffffff; padding: 2px 6px; border-radius: 3px; font-weight: bold; margin-right: 4px; ${L.defaultFont}`),_(L,"styles",{log:`color: #4CAF50; ${L.defaultFont}`,info:`color: #2196F3; ${L.defaultFont}`,warn:`color: #FF9800; ${L.defaultFont}`,error:`color: #F44336; ${L.defaultFont}`,debug:`color: #9C27B0; ${L.defaultFont}`});var R=L,sl={LOCAL:"",DEV:"https://analytics.dev.data.primer.io/v1/sdk-analytic-events",STAGING:"https://analytics.staging.data.primer.io/v1/sdk-analytic-events",SANDBOX:"https://analytics.sandbox.data.primer.io/v1/sdk-analytic-events",PRODUCTION:"https://analytics.production.data.primer.io/v1/sdk-analytic-events"},Ui=class{constructor(){_(this,"sessionConfig",null)}initialize(t){this.sessionConfig=t}clear(){this.sessionConfig=null}getSessionConfig(){return this.sessionConfig}sendEvent(t){if(!this.sessionConfig)return void R.error("Analytics manager not initialized. Call initializeAnalytics() first.");let e={id:ge(),timestamp:Math.floor(Date.now()/1e3),sdkType:"WEB",eventName:t.eventName,checkoutSessionId:this.sessionConfig.checkoutSessionId,clientSessionId:this.sessionConfig.clientSessionId,primerAccountId:this.sessionConfig.primerAccountId,sdkVersion:this.sessionConfig.sdkVersion,userAgent:typeof navigator<"u"?navigator.userAgent:"",eventType:t.eventType,userLocale:t.userLocale,paymentMethod:t.paymentMethod,paymentId:t.paymentId,redirectDestinationUrl:t.redirectDestinationUrl,threedsProvider:t.threedsProvider,threedsResponse:t.threedsResponse};dl(e,this.sessionConfig)}},Mn=new Ui;function ll(i){Mn.initialize(i)}function qr(i){Mn.sendEvent(i)}async function dl(i,{environment:t,clientSessionToken:e}){if(t==="LOCAL")return void R.debug(`Analytics event ${i.eventName}:`,i);let r=sl[t];return fetch(r,{method:"POST",headers:{"Content-Type":"application/json",...e&&{Authorization:`Bearer ${e}`}},body:JSON.stringify(i)}).catch(o=>{R.error("Failed to send analytics event:",o)})}var Di=function(i){return i.CARD="CARD",i.NATIVE="NATIVE",i.REDIRECT="REDIRECT",i.KLARNA="KLARNA",i.ACH="ACH",i}({}),cn=Zi("../../node_modules/credit-card-type/dist/index.js");function Xi(i){return i.replace(/[-_]/g," ").replace(/[^\s\w]/g,"").replace(/([A-Z][a-z]+|[0-9]+)/g," $1").replace(/([A-Z]{2,})/g," $1").trim().split(/\s+/g)}function cl(i){return Xi(i).filter(Boolean).map(t=>t[0].toUpperCase()+t.slice(1).toLowerCase()).join(" ")}function pn(i){return Xi(i).join("-").toLowerCase()}function mn(i){return Xi(i).join("_").toUpperCase()}var In=[["AMEX","american-express"],["CARTES_BANCAIRES"],["DANKORT"],["DINERS_CLUB","diners-club"],["DISCOVER","discover"],["ENROUTE"],["ELO","elo"],["EFTPOS"],["HIPER","hiper","hiper-pay"],["HIPERCARD","hipercard"],["INTERAC"],["JCB","jcb"],["MAESTRO","maestro"],["MASTERCARD","mastercard"],["MIR","mir","mir-pay"],["OTHER",void 0,"payment-card"],["UNIONPAY","unionpay"],["VISA","visa"]],un=new Map(In.map(i=>[i[0],i])),pl=new Map(In.filter(i=>i[1]).map(i=>[i[1],i]));function Qi(i){let{niceType:t,type:e}=(0,cn.getTypeInfo)(pn(i))||(0,cn.getTypeInfo)(un.get(mn(i))?.[1]||"")||{},[r,o,n]=pl.get(e)||un.get(mn(i))||[];return{asset:n||pn(o||i),backend:r,display:t||cl(i),library:o}}var q={WORLDPAY_IDEAL:"WORLDPAY_IDEAL",STRIPE_ACH:"STRIPE_ACH",STRIPE_IDEAL:"STRIPE_IDEAL",ADYEN_KLARNA:"ADYEN_KLARNA",ADYEN_BANCONTACT_CARD:"ADYEN_BANCONTACT_CARD",PAY_NL_KAARTDIRECT:"PAY_NL_KAARTDIRECT",ADYEN_EPS:"ADYEN_EPS",ADYEN_BANCONTACT_PAYCONIQ:"ADYEN_BANCONTACT_PAYCONIQ",OMISE_PROMPTPAY:"OMISE_PROMPTPAY",OMISE_TRUEMONEY:"OMISE_TRUEMONEY",ADYEN_MULTIBANCO:"ADYEN_MULTIBANCO",PACYPAY_WECHAT:"PACYPAY_WECHAT",PACYPAY_ALIPAY:"PACYPAY_ALIPAY",ADYEN_MBWAY:"ADYEN_MBWAY",XENDIT_DANA:"XENDIT_DANA",XENDIT_SHOPEEPAY:"XENDIT_SHOPEEPAY",ADYEN_PAYSHOP:"ADYEN_PAYSHOP",ADYEN_PAYTRAIL:"ADYEN_PAYTRAIL",CLEARPAY:"CLEARPAY",RAPYD_FAST:"RAPYD_FAST",RAPYD_PROMPTPAY:"RAPYD_PROMPTPAY",RAPYD_GCASH:"RAPYD_GCASH",RAPYD_POLI:"RAPYD_POLI",RAPYD_GRABPAY:"RAPYD_GRABPAY",PRIMER_PAYPAL:"PRIMER_PAYPAL",TWOC2P:"TWOC2P",NETS:"NETS",STRIPE_GIROPAY:"STRIPE_GIROPAY",MOLLIE_GIROPAY:"MOLLIE_GIROPAY",MOLLIE_EPS:"MOLLIE_EPS",PAY_NL_EPS:"PAY_NL_EPS",PAY_NL_P24:"PAY_NL_P24",MOLLIE_P24:"MOLLIE_P24",MOLLIE_SOFORT:"MOLLIE_SOFORT",COINBASE:"COINBASE",OPENNODE:"OPENNODE",MOLLIE_GIFT_CARD:"MOLLIE_GIFTCARD",XFERS_PAYNOW:"XFERS_PAYNOW",PAYMENT_CARD:"PAYMENT_CARD",APPLE_PAY:"APPLE_PAY",GOOGLE_PAY:"GOOGLE_PAY",PAYPAL:"PAYPAL",GO_CARDLESS:"GOCARDLESS",KLARNA:"KLARNA",PAY_NL_IDEAL:"PAY_NL_IDEAL",PAY_NL_SOFORT_BANKING:"PAY_NL_SOFORT_BANKING",PAY_NL_BANCONTACT:"PAY_NL_BANCONTACT",PAY_NL_PAYPAL:"PAY_NL_PAYPAL",PAY_NL_CREDIT_TRANSFER:"PAY_NL_CREDIT_TRANSFER",PAY_NL_DIRECT_DEBIT:"PAY_NL_DIRECT_DEBIT",PAY_NL_GIROPAY:"PAY_NL_GIROPAY",PAY_NL_PAYCONIQ:"PAY_NL_PAYCONIQ",PAY_NL_RIVERTY:"PAY_NL_RIVERTY",HOOLAH:"HOOLAH",ADYEN_BLIK:"ADYEN_BLIK",ADYEN_MOBILEPAY:"ADYEN_MOBILEPAY",ADYEN_VIPPS:"ADYEN_VIPPS",ADYEN_GIROPAY:"ADYEN_GIROPAY",ADYEN_SOFORT:"ADYEN_SOFORT",ADYEN_IDEAL:"ADYEN_IDEAL",ADYEN_TRUSTLY:"ADYEN_TRUSTLY",ADYEN_ALIPAY:"ADYEN_ALIPAY",ADYEN_TWINT:"ADYEN_TWINT",ADYEN_BANK_TRANSFER:"ADYEN_BANK_TRANSFER",MOLLIE_BANCONTACT:"MOLLIE_BANCONTACT",MOLLIE_IDEAL:"MOLLIE_IDEAL",BUCKAROO_GIROPAY:"BUCKAROO_GIROPAY",BUCKAROO_EPS:"BUCKAROO_EPS",BUCKAROO_SOFORT:"BUCKAROO_SOFORT",BUCKAROO_BANCONTACT:"BUCKAROO_BANCONTACT",BUCKAROO_IDEAL:"BUCKAROO_IDEAL",ATOME:"ATOME",DLOCAL_PIX:"DLOCAL_PIX",ALMA:"ALMA"},kn="3.7.7",ml=kn,Nt=typeof Buffer=="function",hn=typeof TextDecoder=="function"?new TextDecoder:void 0,fn=typeof TextEncoder=="function"?new TextEncoder:void 0,ul="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",Qt=Array.prototype.slice.call(ul),Vr=(i=>{let t={};return i.forEach((e,r)=>t[e]=r),t})(Qt),hl=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,W=String.fromCharCode.bind(String),yn=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):i=>new Uint8Array(Array.prototype.slice.call(i,0)),Nn=i=>i.replace(/=/g,"").replace(/[+\/]/g,t=>t=="+"?"-":"_"),Ln=i=>i.replace(/[^A-Za-z0-9\+\/]/g,""),On=i=>{let t,e,r,o,n="",a=i.length%3;for(let l=0;l<i.length;){if((e=i.charCodeAt(l++))>255||(r=i.charCodeAt(l++))>255||(o=i.charCodeAt(l++))>255)throw new TypeError("invalid character found");t=e<<16|r<<8|o,n+=Qt[t>>18&63]+Qt[t>>12&63]+Qt[t>>6&63]+Qt[63&t]}return a?n.slice(0,a-3)+"===".substring(a):n},eo=typeof btoa=="function"?i=>btoa(i):Nt?i=>Buffer.from(i,"binary").toString("base64"):On,Yi=Nt?i=>Buffer.from(i).toString("base64"):i=>{let e=[];for(let r=0,o=i.length;r<o;r+=4096)e.push(W.apply(null,i.subarray(r,r+4096)));return eo(e.join(""))},Hr=(i,t=!1)=>t?Nn(Yi(i)):Yi(i),fl=i=>{if(i.length<2){var t=i.charCodeAt(0);return t<128?i:t<2048?W(192|t>>>6)+W(128|63&t):W(224|t>>>12&15)+W(128|t>>>6&63)+W(128|63&t)}var t=65536+(i.charCodeAt(0)-55296)*1024+(i.charCodeAt(1)-56320);return W(240|t>>>18&7)+W(128|t>>>12&63)+W(128|t>>>6&63)+W(128|63&t)},yl=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,Rn=i=>i.replace(yl,fl),gn=Nt?i=>Buffer.from(i,"utf8").toString("base64"):fn?i=>Yi(fn.encode(i)):i=>eo(Rn(i)),It=(i,t=!1)=>t?Nn(gn(i)):gn(i),vn=i=>It(i,!0),gl=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,vl=i=>{switch(i.length){case 4:var t=(7&i.charCodeAt(0))<<18|(63&i.charCodeAt(1))<<12|(63&i.charCodeAt(2))<<6|63&i.charCodeAt(3),e=t-65536;return W((e>>>10)+55296)+W((1023&e)+56320);case 3:return W((15&i.charCodeAt(0))<<12|(63&i.charCodeAt(1))<<6|63&i.charCodeAt(2));default:return W((31&i.charCodeAt(0))<<6|63&i.charCodeAt(1))}},Dn=i=>i.replace(gl,vl),$n=i=>{if(i=i.replace(/\s+/g,""),!hl.test(i))throw new TypeError("malformed base64.");i+="==".slice(2-(3&i.length));let t,e="",r,o;for(let n=0;n<i.length;)t=Vr[i.charAt(n++)]<<18|Vr[i.charAt(n++)]<<12|(r=Vr[i.charAt(n++)])<<6|(o=Vr[i.charAt(n++)]),e+=r===64?W(t>>16&255):o===64?W(t>>16&255,t>>8&255):W(t>>16&255,t>>8&255,255&t);return e},to=typeof atob=="function"?i=>atob(Ln(i)):Nt?i=>Buffer.from(i,"base64").toString("binary"):$n,Vn=Nt?i=>yn(Buffer.from(i,"base64")):i=>yn(to(i).split("").map(t=>t.charCodeAt(0))),Un=i=>Vn(Yn(i)),bl=Nt?i=>Buffer.from(i,"base64").toString("utf8"):hn?i=>hn.decode(Vn(i)):i=>Dn(to(i)),Yn=i=>Ln(i.replace(/[-_]/g,t=>t=="-"?"+":"/")),Hi=i=>bl(Yn(i)),Cl=i=>{if(typeof i!="string")return!1;let t=i.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(t)||!/[^\s0-9a-zA-Z\-_]/.test(t)},Hn=i=>({value:i,enumerable:!1,writable:!0,configurable:!0}),Bn=function(){let i=(t,e)=>Object.defineProperty(String.prototype,t,Hn(e));i("fromBase64",function(){return Hi(this)}),i("toBase64",function(t){return It(this,t)}),i("toBase64URI",function(){return It(this,!0)}),i("toBase64URL",function(){return It(this,!0)}),i("toUint8Array",function(){return Un(this)})},Fn=function(){let i=(t,e)=>Object.defineProperty(Uint8Array.prototype,t,Hn(e));i("toBase64",function(t){return Hr(this,t)}),i("toBase64URI",function(){return Hr(this,!0)}),i("toBase64URL",function(){return Hr(this,!0)})},El=()=>{Bn(),Fn()},zn={version:kn,VERSION:ml,atob:to,atobPolyfill:$n,btoa:eo,btoaPolyfill:On,fromBase64:Hi,toBase64:It,encode:It,encodeURI:vn,encodeURL:vn,utob:Rn,btou:Dn,decode:Hi,isValid:Cl,fromUint8Array:Hr,toUint8Array:Un,extendString:Bn,extendUint8Array:Fn,extendBuiltins:El},Br={encode:Al,decode:zn.decode};function Al(i,t={}){let{urlSafe:e=!1}=t;return zn.encode(i,e)}function xl(i,t){return!(i.intent!==`${t}_REDIRECTION`||!("statusUrl"in i)||!("redirectUrl"in i)||!i.redirectUrl||!i.statusUrl)}function er(i){let t=Pl(i),e=1e3*t.exp;if(Date.now()>e)throw new Error(`${Sl}. Expiration date: ${new Date(e).toISOString()}`);return t}var jn="The provided `clientToken`",Sl=`${jn} has expired`,_l=`${jn} is malformed`;function Pl(i){try{let[t,e]=i.split("."),r=e||t;return JSON.parse(Br.decode(r))}catch{throw new Error(_l)}}var Fr=class{constructor(t,e){_(this,"context");_(this,"dialogProvider");this.context=t,this.dialogProvider=e}};function Kn(){return{javaEnabled:typeof window.navigator.javaEnabled=="function"?window.navigator.javaEnabled():!1,language:window.navigator.language,colorDepth:window.screen.colorDepth,screenHeight:window.screen.height,screenWidth:window.screen.width,timezoneOffset:new Date().getTimezoneOffset(),userAgent:window.navigator.userAgent}}function Jr(i){return i?new Promise(t=>{setTimeout(t,i)}):Promise.resolve()}var Bi=class extends Fr{async handleRequiredAction(t){let e=t.requiredAction?.clientToken;if(!e)throw new Error("No client token provided");let r=er(e);if(!("intent"in r)||r.intent!=="3DS_AUTHENTICATION")throw new Error("Invalid client token");let{error:o,data:n}=await this.context.pciApi.post3dsAuth(r.tokenId,{device:Kn()});if(o||!n||!n.authentication)throw o??new Error("Unable to authenticate");let a=n.authentication,l=n;a.responseCode==="METHOD"&&(l=await this.handleMethod(r.tokenId,a),a=l.authentication),a.responseCode==="CHALLENGE"&&(l=await this.handleChallenge(r.tokenId,a));let s=await this.context.pciApi.postResumePayment(t.id,l.resumeToken);if(s.error||!s.data)throw s.error??new Error("Unable to resume payment");return s.data}async handleMethod(t,e){let r="primer-3ds-method-box",o="primer-3ds-method-iframe",n="primer-3ds-method-form",a="threeDSMethodData",l=document.createElement("div");l.id=r,l.style.position="absolute",l.style.width="2px",l.style.height="2px",l.style.left="-10000px";let s=document.createElement("iframe");s.style.display="none",s.id=o,s.name=o,l.appendChild(s);let c=document.createElement("form"),m=document.createElement("input");m.type="hidden",m.id=a,m.name=a,m.value=Br.encode(JSON.stringify({threeDSServerTransID:e.transactionId,threeDSMethodNotificationURL:e.notificationUrl}),{urlSafe:!0}).replace(/=+$/g,""),c.appendChild(m),c.id=n,c.name=n,c.action=e.acsMethodUrl,c.target=o,c.method="post",l.appendChild(c),document.body.appendChild(l),c.submit();let{data:f,error:y}=await this.pollStatus(e.statusUrl,"METHOD",1e3).promise;return l.remove(),y||!f?this.continueAuth(t):f}pollStatus(t,e="METHOD",r=1e3,o=66e4){let n=!0;return{promise:new Promise(async a=>{let l=setTimeout(()=>{n=!1,a({error:new Error("Operation timed out"),data:null})},o);try{for(;n;){let s=await this.context.pciApi.get3dsResumeStatus(t);if(s.error){clearTimeout(l),a(s);return}if(await Jr(r),s.data&&s.data.authentication.responseCode!==e){clearTimeout(l),a(s);return}}}catch(s){clearTimeout(l),a({error:s,data:null})}}),abort:()=>{n=!1}}}async continueAuth(t){let{data:e,error:r}=await this.context.pciApi.post3dsContinue(t);return r||!e?{resumeToken:ge(),authentication:{responseCode:"SKIPPED",skippedReasonCode:"NEGOTIATION_ERROR",skippedReasonText:"Failed to negotiate with 3DS server"}}:e}async handleChallenge(t,e){let{container:r,formId:o}=this.createChallengeElements(e),n=()=>{let l=document.getElementById(o);l?l.submit():requestAnimationFrame(()=>{let s=document.getElementById(o);s&&s.submit()})},a=this.pollStatus(e.statusUrl,"CHALLENGE",2500,66e4);try{let l=this.dialogProvider.show({htmlContent:r.outerHTML,onContentReady:n});qr({eventName:"PAYMENT_THREEDS",threedsResponse:JSON.stringify(e)});let s=await Promise.race([a.promise,l.then(()=>null,c=>{throw a.abort(),c})]);return s&&s.data?(this.dialogProvider.close(),s.data):(this.dialogProvider.close(),this.continueAuth(t))}catch{return a.abort(),this.continueAuth(t)}}createChallengeElements(t){this.inject3DSChallengeCSS();let e=`3ds-challenge-iframe-${ge()}`,r=`3ds-challenge-form-${ge()}`,o=/^1/.test(t.protocolVersion),n=document.createElement("div");n.className="challenge-container";let a=document.createElement("form");if(a.id=r,a.className="challenge-form",a.action=t.acsChallengeUrl,a.target=e,a.method="post",o){let s=document.createElement("input");s.type="hidden",s.name="PaReq",s.id="PaReq",s.value=t.acsChallengeData||"",a.appendChild(s);let c=document.createElement("input");c.type="hidden",c.name="TermUrl",c.id="TermUrl",c.value=t.notificationUrl||"",a.appendChild(c)}else{let s=Br.encode(JSON.stringify({threeDSServerTransID:t.transactionId,acsTransID:t.acsTransactionId,messageVersion:t.protocolVersion,messageType:"CReq",challengeWindowSize:"05"}),{urlSafe:!0}),c=document.createElement("input");c.type="hidden",c.name="creq",c.id="creq",c.value=s,a.appendChild(c);let m=document.createElement("input");m.type="hidden",m.name="threeDSSessionData",m.id="threeDSSessionData",m.value="",a.appendChild(m)}let l=document.createElement("iframe");return l.id=e,l.name=e,l.className="challenge-iframe",l.setAttribute("frameborder","0"),l.title="3D Secure Challenge",n.appendChild(a),n.appendChild(l),{container:n,formId:r}}inject3DSChallengeCSS(){let t="primer-3ds-challenge-dialog-styles";if(document.getElementById(t))return;let e=`
1
+ import{a as Ao,b as d,c as T}from"./chunks/chunk.DV3REKZU.js";var hr=class{constructor(t){(this.host=t).addController(this)}hostConnected(){}setCardNetworksLoading(){let t={detectedCardNetwork:null,selectableCardNetworks:[],isLoading:!0};this.updateCardNetworksState(t)}updateCardNetworksState(t){this.host.primerEventsController.dispatchCardNetworkChange(t),this.host.sdkContextController.setCardNetworks(t)}processCardNetworkChangeEvent(t){let{detectedCardNetworks:e,selectableCardNetworks:r}=t,o=e.preferred??e.items[0],a=r?.items??[];this.updateCardNetworksState({detectedCardNetwork:o,selectableCardNetworks:a,isLoading:!1})}};var Mt=class{constructor(t){(this.host=t).addController(this)}hostConnected(){}dispatchEvent(t,e){this.host.dispatchEvent(new CustomEvent(t,{detail:e,bubbles:!0,composed:!0}))}dispatchSdkState(t){this.dispatchEvent("primer:state-change",t)}dispatchPaymentMethods(t){this.dispatchEvent("primer:methods-update",t)}dispatchCheckoutInitialized(t){this.dispatchEvent("primer:ready",t)}dispatchCardNetworkChange(t){this.dispatchEvent("primer:card-network-change",t)}dispatchCardSubmit(t){this.dispatchEvent("primer:card-submit",{source:t})}dispatchFormSubmitSuccess(t){this.dispatchEvent("primer:card-success",{result:t})}dispatchFormSubmitErrors(t){this.dispatchEvent("primer:card-error",{errors:t})}handleExternalCardSubmit(t){this.dispatchCardSubmit(t.source)}};var Qe=class extends Event{constructor(t,e,r,o){super("context-request",{bubbles:!0,composed:!0}),this.context=t,this.contextTarget=e,this.callback=r,this.subscribe=o??!1}};var kt=class{constructor(t,e,r,o){if(this.subscribe=!1,this.provided=!1,this.value=void 0,this.t=(a,n)=>{this.unsubscribe&&(this.unsubscribe!==n&&(this.provided=!1,this.unsubscribe()),this.subscribe||this.unsubscribe()),this.value=a,this.host.requestUpdate(),this.provided&&!this.subscribe||(this.provided=!0,this.callback&&this.callback(a,n)),this.unsubscribe=n},this.host=t,e.context!==void 0){let a=e;this.context=a.context,this.callback=a.callback,this.subscribe=a.subscribe??!1}else this.context=e,this.callback=r,this.subscribe=o??!1;this.host.addController(this)}hostConnected(){this.dispatchRequest()}hostDisconnected(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=void 0)}dispatchRequest(){this.host.dispatchEvent(new Qe(this.context,this.host,this.t,this.subscribe))}};var fr=class{get value(){return this.o}set value(t){this.setValue(t)}setValue(t,e=!1){let r=e||!Object.is(t,this.o);this.o=t,r&&this.updateObservers()}constructor(t){this.subscriptions=new Map,this.updateObservers=()=>{for(let[e,{disposer:r}]of this.subscriptions)e(this.o,r)},t!==void 0&&(this.value=t)}addCallback(t,e,r){if(!r)return void t(this.value);this.subscriptions.has(t)||this.subscriptions.set(t,{disposer:()=>{this.subscriptions.delete(t)},consumerHost:e});let{disposer:o}=this.subscriptions.get(t);t(this.value,o)}clearCallbacks(){this.subscriptions.clear()}};var vi=class extends Event{constructor(t,e){super("context-provider",{bubbles:!0,composed:!0}),this.context=t,this.contextTarget=e}},z=class extends fr{constructor(t,e,r){super(e.context!==void 0?e.initialValue:r),this.onContextRequest=o=>{if(o.context!==this.context)return;let a=o.contextTarget??o.composedPath()[0];a!==this.host&&(o.stopPropagation(),this.addCallback(o.callback,a,o.subscribe))},this.onProviderRequest=o=>{if(o.context!==this.context||(o.contextTarget??o.composedPath()[0])===this.host)return;let a=new Set;for(let[n,{consumerHost:l}]of this.subscriptions)a.has(n)||(a.add(n),l.dispatchEvent(new Qe(this.context,l,n,!0)));o.stopPropagation()},this.host=t,e.context!==void 0?this.context=e.context:this.context=e,this.attachListeners(),this.host.addController?.(this)}attachListeners(){this.host.addEventListener("context-request",this.onContextRequest),this.host.addEventListener("context-provider",this.onProviderRequest)}hostConnected(){this.host.dispatchEvent(new vi(this.context,this.host))}};function C({context:i,subscribe:t}){return(e,r)=>{typeof r=="object"?r.addInitializer(function(){new kt(this,{context:i,callback:o=>{e.set.call(this,o)},subscribe:t})}):e.constructor.addInitializer(o=>{new kt(o,{context:i,callback:a=>{o[r]=a},subscribe:t})})}}var et=Symbol("analytics-context");var It=Symbol("events-context");var yr="cardNetworksContext";var se="clientOptionsContext";var Nt="computedStylesContext";var B="headlessInstanceContext";var gr="klarnaCategoriesContext";var j="managerContext";var tt="paymentMethodsContext";var F="sdkStateContext";var le="vaultManagerContext";var Pe="vaultManagerCvvContext";var Ss={LOCAL:"https://analytics.dev.data.primer.io/v1/sdk-logs",DEV:"https://analytics.dev.data.primer.io/v1/sdk-logs",STAGING:"https://analytics.staging.data.primer.io/v1/sdk-logs",SANDBOX:"https://analytics.sandbox.data.primer.io/v1/sdk-logs",PRODUCTION:"https://analytics.production.data.primer.io/v1/sdk-logs"};function So(i,t){let r={message:i instanceof Error?i.message:typeof i=="string"?i:JSON.stringify(i)};i instanceof Error&&i.stack&&(r.stack=i.stack),t?.clientSessionId&&(r.clientSessionId=t.clientSessionId),t?.metadata&&Object.assign(r,t.metadata),t.status&&Object.assign(r,{status:t.status});let o={message:JSON.stringify(r),hostname:typeof window<"u"?window.location.hostname:"unknown",service:"web-sdk",ddsource:"lambda",ddtags:`env:${t?.environment},version:${t?.sdkVersion}`};_s(o,t)}function _s(i,{environment:t,clientSessionToken:e}){if(t==="LOCAL"){x.debug("\u{1F436}\u{1F436}\u{1F436} [Datadog Log] \u{1F436}\u{1F436}\u{1F436}",i);return}let r=Ss[t||"LOCAL"];if(!r){x.warn("No logging endpoint configured for current environment");return}fetch(r,{method:"POST",headers:{"Content-Type":"application/json",...e&&{Authorization:`Bearer ${e}`}},body:JSON.stringify(i)}).catch(o=>{x.error("Failed to send log event:",o)})}var L=class L{static log(t,...e){L.enabled}static info(t,...e){L.enabled}static warn(t,...e){L.enabled}static error(t,...e){L.enabled&&e.forEach(r=>{r instanceof Error&&r.toJSON})}static errorWithDatadog(t,e){let{error:r,status:o="error"}=e||{};if(L.enabled){r instanceof Error&&r.toJSON;try{let a=r||t,n={environment:L.environment,sdkVersion:L.sdkVersion,clientSessionToken:L.clientSessionToken,clientSessionId:L.clientSessionId,status:o,metadata:{sdkOptions:L.sdkOptions,clientToken:L.clientToken}};So(a,n)}catch{L.enabled}}}static debug(t,...e){L.enabled}static table(t,e){L.enabled}static time(t){L.enabled}static timeEnd(t){L.enabled}static setEnvironment(t){L.environment=t}static setSdkVersion(t){L.sdkVersion=t}static setClientSessionToken(t){L.clientSessionToken=t}static setClientSessionId(t){L.clientSessionId=t}static setSdkOptions(t){L.sdkOptions=t}static setClientToken(t){L.clientToken=t}};T(L,"enabled",!0),T(L,"environment"),T(L,"sdkVersion"),T(L,"clientSessionToken"),T(L,"clientSessionId"),T(L,"sdkOptions"),T(L,"clientToken"),T(L,"defaultFont","font-family: Consolas, monospace; font-size: 12px;"),T(L,"brandTag","[PRIMER]"),T(L,"brandStyle",`background: #24292e; color: #ffffff; padding: 2px 6px; border-radius: 3px; font-weight: bold; margin-right: 4px; ${L.defaultFont}`),T(L,"styles",{log:`color: #4CAF50; ${L.defaultFont}`,info:`color: #2196F3; ${L.defaultFont}`,warn:`color: #FF9800; ${L.defaultFont}`,error:`color: #F44336; ${L.defaultFont}`,debug:`color: #9C27B0; ${L.defaultFont}`});var x=L;function Ps(i,t,e,r){let o=i,a=e;return{dispatch:n=>{let l=t(o,n,a);o=l,r(l)},getState:()=>Object.freeze({...o}),setCallbacks:n=>{a={...a,...n}}}}function Ft(i){return(t,e,r)=>{let o=i[e.type];if(!o)throw new Error(`No handler for action type: ${e.type}`);return o(t,e,r)}}var ft=class{constructor(t,e,r,o,a=()=>{this.host.requestUpdate()}){this.host=t;this.stateHandler=a;this.host.addController(this),this._dispatcher=Ps(e,r,o,n=>{this.stateHandler(n)})}get currentState(){return this._dispatcher.getState()}dispatch(t){this._dispatcher.dispatch(t)}setCallbacks(t){this._dispatcher.setCallbacks(t)}hostConnected(){}hostDisconnected(){}},vr=class{constructor(t){this.host=t;this._controllers=[];"addController"in this.host&&this.host.addController(this)}addController(t){this._controllers.push(t)}hostConnected(){this._controllers.forEach(t=>{t.hostConnected&&t.hostConnected()})}hostDisconnected(){this._controllers.forEach(t=>{t.hostDisconnected&&t.hostDisconnected()})}};var Cr={isSuccessful:!1,isProcessing:!1,isLoading:!1,error:null,failure:null},Ts={START_LOADING:i=>({...i,isLoading:!0}),START_PROCESSING:i=>({...i,failure:null,isProcessing:!0}),STOP_PROCESSING:i=>({...i,isProcessing:!1}),COMPLETE_PROCESSING:i=>({...i,isProcessing:!1,isSuccessful:!0}),SET_ERROR:(i,t)=>(x.error(t.payload.message),{...i,isProcessing:!1,error:t.payload}),SET_FAILURE:(i,t)=>({...i,isProcessing:!1,failure:t.payload}),COMPLETE_LOADING:i=>({...i,isLoading:!1}),RESET:()=>Cr,RESET_ERROR:i=>({...i,error:null,failure:null})},ws=Ft(Ts),br=class extends ft{constructor(t){super(t,Cr,ws,null,e=>{t.sdkContextController.setSdkState(e),t.primerEventsController.dispatchSdkState(e)})}startLoading(){this.dispatch({type:"START_LOADING"})}startProcessing(){this.dispatch({type:"START_PROCESSING"})}stopProcessing(){this.dispatch({type:"STOP_PROCESSING"})}completeProcessing(){this.dispatch({type:"COMPLETE_PROCESSING"})}completeLoading(){this.dispatch({type:"COMPLETE_LOADING"})}setError(t){this.dispatch({type:"SET_ERROR",payload:t})}setFailure(t,e,r){this.dispatch({type:"SET_FAILURE",payload:{code:t,message:e,details:r}})}reset(){this.dispatch({type:"RESET"})}resetError(){this.dispatch({type:"RESET_ERROR"})}forceCompleteLoading(){this.currentState.isLoading&&(x.warn("Force completing loading state"),this.completeLoading())}};var Er=class{constructor(t){this.sdkStateProvider=null;this.paymentMethodsProvider=null;this.paymentManagerProvider=null;this.cardNetworksContext=null;this.vaultManagerCvvProvider=null;this.clientOptionsContext=null;this.headlessUtilsProvider=null;this.klarnaCategoriesProvider=null;this.computedStylesProvider=null;this.analyticsProvider=null;this.eventsProvider=null;(this.host=t).addController(this),this.sdkStateProvider=new z(t,{context:F,initialValue:Cr}),this.paymentMethodsProvider=new z(t,{context:tt,initialValue:null}),this.paymentManagerProvider=new z(t,{context:j,initialValue:new Map}),this.cardNetworksContext=new z(t,{context:yr,initialValue:null}),this.vaultManagerProvider=new z(t,{context:le,initialValue:null}),this.vaultManagerCvvProvider=new z(t,{context:Pe,initialValue:null}),this.clientOptionsContext=new z(t,{context:se,initialValue:null}),this.klarnaCategoriesProvider=new z(t,{context:gr,initialValue:{categories:[],isLoading:!0}}),this.headlessUtilsProvider=new z(t,{context:B,initialValue:null}),this.computedStylesProvider=new z(t,{context:Nt,initialValue:null}),this.analyticsProvider=new z(t,{context:et,initialValue:null}),this.eventsProvider=new z(t,{context:It,initialValue:null})}hostConnected(){}setSdkState(t){this.sdkStateProvider?.setValue(t)}setPaymentMethods(t){this.paymentMethodsProvider?.setValue(t)}setPaymentManagers(t){this.paymentManagerProvider?.setValue(t)}setCardNetworks(t){this.cardNetworksContext?.setValue(t)}setVaultManager(t){this.vaultManagerProvider?.setValue(t)}setKlarnaCategories(t){this.klarnaCategoriesProvider?.setValue(t)}setClientOptions(t){this.clientOptionsContext?.setValue(t)}setHeadlessUtils(t){this.headlessUtilsProvider?.setValue(t)}setAnalyticsUtils(t){this.analyticsProvider?.setValue(t)}getAnalyticsUtils(){return this.analyticsProvider?.value}setComputedStyles(t){this.computedStylesProvider?.setValue(t)}setVaultManagerCvv(t){this.vaultManagerCvvProvider?.setValue(t)}setEventsController(t){this.eventsProvider?.setValue(t)}};var yt=class yt{constructor(t){(this.host=t).addController(this)}processCustomStyles(t){try{let e=JSON.parse(t);this.applyStyles(e)}catch(e){x.error("Error parsing customStyles property.",e instanceof Error?e:new Error(String(e)))}}isValidCssProperty(t){return/^[a-zA-Z][a-zA-Z0-9]*$/.test(t)}isValidCssValue(t){let r=/^[\w\s#.,%()\-+/!]+$/.test(t);return r||x.warn(`Rejected potentially unsafe CSS value: ${t}`),r}getCssVarName(t){let e=yt.cssVarCache.get(t);return e||(e=`--${t.replace(/([A-Z])/g,(r,o)=>`-${o.toLowerCase()}`)}`,yt.cssVarCache.set(t,e)),e}applyStyles(t){let e=[];for(let r of Object.keys(t)){let o=t[r];if(!o)continue;if(!this.isValidCssProperty(r)){x.warn(`Skipping invalid CSS property name: ${r}`);continue}if(!this.isValidCssValue(o))continue;let a=this.getCssVarName(r);e.push([a,o])}if(e.length>0)for(let[r,o]of e)this.host.style.setProperty(r,o)}removeStyle(t){let e=this.getCssVarName(t);this.host.style.removeProperty(e)}clearAllStyles(){for(let t of yt.cssVarCache.keys()){let e=yt.cssVarCache.get(t);e&&this.host.style.removeProperty(e)}}hostDisconnected(){}};yt.cssVarCache=new Map;var xr=yt;var Ar=globalThis,_r=Ar.ShadowRoot&&(Ar.ShadyCSS===void 0||Ar.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Po=Symbol(),_o=new WeakMap,Sr=class{constructor(t,e,r){if(this._$cssResult$=!0,r!==Po)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o,e=this.t;if(_r&&t===void 0){let r=e!==void 0&&e.length===1;r&&(t=_o.get(e)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),r&&_o.set(e,t))}return t}toString(){return this.cssText}},To=i=>new Sr(typeof i=="string"?i:i+"",void 0,Po);var bi=(i,t)=>{if(_r)i.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let e of t){let r=document.createElement("style"),o=Ar.litNonce;o!==void 0&&r.setAttribute("nonce",o),r.textContent=e.cssText,i.appendChild(r)}},Pr=_r?i=>i:i=>i instanceof CSSStyleSheet?(t=>{let e="";for(let r of t.cssRules)e+=r.cssText;return To(e)})(i):i;var{is:Ms,defineProperty:ks,getOwnPropertyDescriptor:Is,getOwnPropertyNames:Ns,getOwnPropertySymbols:Ls,getPrototypeOf:Os}=Object,rt=globalThis,wo=rt.trustedTypes,Rs=wo?wo.emptyScript:"",Ds=rt.reactiveElementPolyfillSupport,zt=(i,t)=>i,Ci={toAttribute(i,t){switch(t){case Boolean:i=i?Rs:null;break;case Object:case Array:i=i==null?i:JSON.stringify(i)}return i},fromAttribute(i,t){let e=i;switch(t){case Boolean:e=i!==null;break;case Number:e=i===null?null:Number(i);break;case Object:case Array:try{e=JSON.parse(i)}catch{e=null}}return e}},Tr=(i,t)=>!Ms(i,t),Mo={attribute:!0,type:String,converter:Ci,reflect:!1,hasChanged:Tr};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),rt.litPropertyMetadata??(rt.litPropertyMetadata=new WeakMap);var gt=class extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??(this.l=[])).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=Mo){if(e.state&&(e.attribute=!1),this._$Ei(),this.elementProperties.set(t,e),!e.noAccessor){let r=Symbol(),o=this.getPropertyDescriptor(t,r,e);o!==void 0&&ks(this.prototype,t,o)}}static getPropertyDescriptor(t,e,r){let{get:o,set:a}=Is(this.prototype,t)??{get(){return this[e]},set(n){this[e]=n}};return{get(){return o?.call(this)},set(n){let l=o?.call(this);a.call(this,n),this.requestUpdate(t,l,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??Mo}static _$Ei(){if(this.hasOwnProperty(zt("elementProperties")))return;let t=Os(this);t.finalize(),t.l!==void 0&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(zt("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(zt("properties"))){let e=this.properties,r=[...Ns(e),...Ls(e)];for(let o of r)this.createProperty(o,e[o])}let t=this[Symbol.metadata];if(t!==null){let e=litPropertyMetadata.get(t);if(e!==void 0)for(let[r,o]of e)this.elementProperties.set(r,o)}this._$Eh=new Map;for(let[e,r]of this.elementProperties){let o=this._$Eu(e,r);o!==void 0&&this._$Eh.set(o,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){let e=[];if(Array.isArray(t)){let r=new Set(t.flat(1/0).reverse());for(let o of r)e.unshift(Pr(o))}else t!==void 0&&e.push(Pr(t));return e}static _$Eu(t,e){let r=e.attribute;return r===!1?void 0:typeof r=="string"?r:typeof t=="string"?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(t=>t(this))}addController(t){(this._$EO??(this._$EO=new Set)).add(t),this.renderRoot!==void 0&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){let t=new Map,e=this.constructor.elementProperties;for(let r of e.keys())this.hasOwnProperty(r)&&(t.set(r,this[r]),delete this[r]);t.size>0&&(this._$Ep=t)}createRenderRoot(){let t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return bi(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),this._$EO?.forEach(t=>t.hostConnected?.())}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach(t=>t.hostDisconnected?.())}attributeChangedCallback(t,e,r){this._$AK(t,r)}_$EC(t,e){let r=this.constructor.elementProperties.get(t),o=this.constructor._$Eu(t,r);if(o!==void 0&&r.reflect===!0){let a=(r.converter?.toAttribute!==void 0?r.converter:Ci).toAttribute(e,r.type);this._$Em=t,a==null?this.removeAttribute(o):this.setAttribute(o,a),this._$Em=null}}_$AK(t,e){let r=this.constructor,o=r._$Eh.get(t);if(o!==void 0&&this._$Em!==o){let a=r.getPropertyOptions(o),n=typeof a.converter=="function"?{fromAttribute:a.converter}:a.converter?.fromAttribute!==void 0?a.converter:Ci;this._$Em=o,this[o]=n.fromAttribute(e,a.type),this._$Em=null}}requestUpdate(t,e,r){if(t!==void 0){if(r??(r=this.constructor.getPropertyOptions(t)),!(r.hasChanged??Tr)(this[t],e))return;this.P(t,e,r)}this.isUpdatePending===!1&&(this._$ES=this._$ET())}P(t,e,r){this._$AL.has(t)||this._$AL.set(t,e),r.reflect===!0&&this._$Em!==t&&(this._$Ej??(this._$Ej=new Set)).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(let[o,a]of this._$Ep)this[o]=a;this._$Ep=void 0}let r=this.constructor.elementProperties;if(r.size>0)for(let[o,a]of r)a.wrapped!==!0||this._$AL.has(o)||this[o]===void 0||this.P(o,this[o],a)}let t=!1,e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),this._$EO?.forEach(r=>r.hostUpdate?.()),this.update(e)):this._$EU()}catch(r){throw t=!1,this._$EU(),r}t&&this._$AE(e)}willUpdate(t){}_$AE(t){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&(this._$Ej=this._$Ej.forEach(e=>this._$EC(e,this[e]))),this._$EU()}updated(t){}firstUpdated(t){}};gt.elementStyles=[],gt.shadowRootOptions={mode:"open"},gt[zt("elementProperties")]=new Map,gt[zt("finalized")]=new Map,Ds?.({ReactiveElement:gt}),(rt.reactiveElementVersions??(rt.reactiveElementVersions=[])).push("2.0.4");var it={INITIAL:0,PENDING:1,COMPLETE:2,ERROR:3},N=Symbol(),D=class{get taskComplete(){return this.t||(this.i===1?this.t=new Promise((t,e)=>{this.o=t,this.h=e}):this.i===3?this.t=Promise.reject(this.l):this.t=Promise.resolve(this.u)),this.t}constructor(t,e,r){this.p=0,this.i=0,(this._=t).addController(this);let o=typeof e=="object"?e:{task:e,args:r};this.v=o.task,this.j=o.args,this.m=o.argsEqual??ko,this.k=o.onComplete,this.A=o.onError,this.autoRun=o.autoRun??!0,"initialValue"in o&&(this.u=o.initialValue,this.i=2,this.O=this.T?.())}hostUpdate(){this.autoRun===!0&&this.S()}hostUpdated(){this.autoRun==="afterUpdate"&&this.S()}T(){if(this.j===void 0)return;let t=this.j();if(!Array.isArray(t))throw Error("The args function must return an array");return t}async S(){let t=this.T(),e=this.O;this.O=t,t===e||t===void 0||e!==void 0&&this.m(e,t)||await this.run(t)}async run(t){let e,r;t??(t=this.T()),this.O=t,this.i===1?this.q?.abort():(this.t=void 0,this.o=void 0,this.h=void 0),this.i=1,this.autoRun==="afterUpdate"?queueMicrotask(()=>this._.requestUpdate()):this._.requestUpdate();let o=++this.p;this.q=new AbortController;let a=!1;try{e=await this.v(t,{signal:this.q.signal})}catch(n){a=!0,r=n}if(this.p===o){if(e===N)this.i=0;else{if(a===!1){try{this.k?.(e)}catch{}this.i=2,this.o?.(e)}else{try{this.A?.(r)}catch{}this.i=3,this.h?.(r)}this.u=e,this.l=r}this._.requestUpdate()}}abort(t){this.i===1&&this.q?.abort(t)}get value(){return this.u}get error(){return this.l}get status(){return this.i}render(t){switch(this.i){case 0:return t.initial?.();case 1:return t.pending?.();case 2:return t.complete?.(this.value);case 3:return t.error?.(this.error);default:throw Error("Unexpected status: "+this.i)}}},ko=(i,t)=>i===t||i.length===t.length&&i.every((e,r)=>!Tr(e,t[r]));var $s={SET_LOADING:(i,t)=>({...i,isLoading:t.payload}),SET_UPDATING:(i,t)=>({...i,isUpdating:t.payload}),INITIALIZE_VAULT_MANAGER:(i,t,e)=>({...i,enabled:t.vaultEnabled,cvvRecapture:t.cvvRecapture,showEmptyState:t.showEmptyState,deleteVaultedPaymentMethod:e.deleteVaultedPaymentMethod,startVaultedPaymentFlow:e.startVaultedPaymentFlow,createCvvInput:e.createCvvInput}),UPDATE_PAYMENT_METHODS:(i,t)=>({...i,vaultedPaymentMethods:t.payload,isLoading:!1,isUpdating:!1}),SET_ERROR:i=>({...i,isLoading:!1,isUpdating:!1}),DISABLE:i=>({...i,enabled:!1}),RESET:()=>Io},Vs={INITIALIZE_CVV:(i,t,e)=>({...i,setCvvInput:e.setCvvInput,setSelectedVaultedPaymentMethod:e.setSelectedVaultedPaymentMethod}),SET_FORM_DIRTY:(i,t)=>({...i,formIsDirty:t.payload}),SET_CVV_INPUT:(i,t)=>({...i,cvvInput:t.payload}),SET_SELECTED_VAULTED_PAYMENT_METHOD:(i,t)=>({...i,selectedVaultedPaymentMethod:t.payload}),RESET_CVV:()=>No},Us=Ft($s),Ys=Ft(Vs),Io={enabled:!1,isLoading:!1,isUpdating:!1,cvvRecapture:!1,showEmptyState:!0,vaultedPaymentMethods:[],createCvvInput:null,deleteVaultedPaymentMethod:()=>Promise.resolve(),startVaultedPaymentFlow:()=>Promise.resolve()},No={cvvInput:null,formIsDirty:!1,setCvvInput:()=>{},selectedVaultedPaymentMethod:null,setSelectedVaultedPaymentMethod:()=>{}},Ei=class extends ft{constructor(t,e){super(t,Io,Us,e,r=>{t.sdkContextController.setVaultManager(r)})}setLoading(t){this.dispatch({type:"SET_LOADING",payload:t})}setUpdating(t){this.dispatch({type:"SET_UPDATING",payload:t})}initializeVaultManager(t,e,r,o){this.dispatch({type:"INITIALIZE_VAULT_MANAGER",payload:t,vaultEnabled:e,cvvRecapture:r,showEmptyState:o})}updatePaymentMethods(t){this.dispatch({type:"UPDATE_PAYMENT_METHODS",payload:t})}setError(t){this.dispatch({type:"SET_ERROR",payload:t})}disable(){this.dispatch({type:"DISABLE"})}reset(){this.dispatch({type:"RESET"})}},xi=class extends ft{constructor(t,e){super(t,No,Ys,e,r=>{t.sdkContextController.setVaultManagerCvv(r)})}initializeCvv(t){this.dispatch({type:"INITIALIZE_CVV",createCvvInput:t})}setFormDirty(t){this.dispatch({type:"SET_FORM_DIRTY",payload:t})}setCvvInputState(t){this.dispatch({type:"SET_CVV_INPUT",payload:t})}setSelectedPaymentMethod(t){this.dispatch({type:"SET_SELECTED_VAULTED_PAYMENT_METHOD",payload:t})}resetCvv(){this.dispatch({type:"RESET_CVV"})}},jt=class extends vr{constructor(e){super(e);this._vaultManager=null;this._options=null;this.createVaultManagerFn=null;this.createCvvInput=e=>{if(!this._vaultManager)throw new Error("Vault manager not initialized");return this._vaultManager.createCvvInput(e)};this.deleteVaultedPaymentMethod=async e=>{if(!this._vaultManager)throw new Error("Vault manager not initialized");try{this.coreController.updatePaymentMethods(this.vaultManagerState.vaultedPaymentMethods),await this._vaultManager.deleteVaultedPaymentMethod(e),await this.fetchVaultedPaymentMethods()}catch(r){throw this.coreController.setError(r instanceof Error?r:new Error("Failed to delete payment method")),r}};this.setCvvInput=e=>{this.itemController.setCvvInputState(e)};this.startVaultedPaymentFlow=async()=>{if(!this._vaultManager)throw new Error("Vault manager not initialized");let e=this.vaultItemState.selectedVaultedPaymentMethod,r=this.vaultManagerState.cvvRecapture,o=this.vaultItemState.cvvInput;if(!e||r&&(!o||o.metadata.error)){this.itemController.setFormDirty(!0);return}this.host.sdkStateController.startProcessing();try{await this._vaultManager.startPaymentFlow(e.id,r?{cvv:o.valueToken}:void 0)}catch(a){x.errorWithDatadog("VaultManagerController: Error starting vaulted payment flow",{error:a}),this.coreController.setError(a instanceof Error?a:new Error("Failed to start vaulted payment flow")),this.host.sdkStateController.stopProcessing()}};this.setSelectedVaultedPaymentMethod=e=>{this.itemController.setSelectedPaymentMethod(e),this.itemController.setFormDirty(!1)};this.coreController=new Ei(e,{deleteVaultedPaymentMethod:this.deleteVaultedPaymentMethod.bind(this),startVaultedPaymentFlow:this.startVaultedPaymentFlow.bind(this),createCvvInput:this.createCvvInput}),this.itemController=new xi(e,{setCvvInput:this.setCvvInput.bind(this),setSelectedVaultedPaymentMethod:this.setSelectedVaultedPaymentMethod.bind(this)}),this.addController(this.coreController),this.addController(this.itemController),new D(this.host,{task:async([r,o])=>{if(!r||!o?.vaultEnabled)return this.coreController.disable(),N;this.coreController.setLoading(!0);try{let a=r();this._vaultManager=a,this.coreController.initializeVaultManager(a,o.vaultEnabled,!!o.captureVaultedCardCvv,o.showEmptyState??!0),this.itemController.initializeCvv(a.createCvvInput),await this.fetchVaultedPaymentMethods(!0),x.log("VaultManagerController: Vault initialized successfully",{coreState:this.coreController.currentState,cvvState:this.itemController.currentState})}catch(a){x.errorWithDatadog("VaultManagerController: Failed to initialize vault",{error:a}),this.coreController.setError(a instanceof Error?a:new Error("Unknown error"))}return this._vaultManager},args:()=>[this.createVaultManagerFn,this.options]})}initializeVaultManager(e,r){this.createVaultManagerFn=e,this.options=r??null}get vaultManager(){return this._vaultManager}set vaultManager(e){this._vaultManager=e,this.host.requestUpdate()}get options(){return this._options}set options(e){this._options=e,this.host.requestUpdate()}get vaultManagerState(){return this.coreController.currentState}get vaultItemState(){return this.itemController.currentState}hostDisconnected(){super.hostDisconnected(),this.vaultManager=null,this.coreController.reset()}async fetchVaultedPaymentMethods(e){if(!this._vaultManager)throw new Error("Vault manager not initialized");try{e||this.coreController.setUpdating(!0);let r=await this._vaultManager.fetchVaultedPaymentMethods();return x.log("VaultManagerController: Fetched payment methods",r),this.coreController.updatePaymentMethods(r),r}catch(r){throw this.coreController.setError(r instanceof Error?r:new Error("Failed to fetch payment methods")),r}}};var Lo=()=>Oo.randomUUID?.()||Hs(),Hs=()=>("10000000-1000-4000-8000"+-1e11).replace(/[018]/g,i=>(i^Bs()>>i/4).toString(16)),Bs=()=>(Oo.getRandomValues?.(new Uint8Array(1))[0]??Math.random()*16)&15,Oo=typeof crypto<"u"?crypto:{};var Fs={LOCAL:"",DEV:"https://analytics.dev.data.primer.io/v1/sdk-analytic-events",STAGING:"https://analytics.staging.data.primer.io/v1/sdk-analytic-events",SANDBOX:"https://analytics.sandbox.data.primer.io/v1/sdk-analytic-events",PRODUCTION:"https://analytics.production.data.primer.io/v1/sdk-analytic-events"},Ai=class{constructor(){T(this,"sessionConfig",null)}initialize(t){this.sessionConfig=t}clear(){this.sessionConfig=null}getSessionConfig(){return this.sessionConfig}sendEvent(t){if(!this.sessionConfig){x.error("Analytics manager not initialized. Call initializeAnalytics() first.");return}let e={id:Lo(),timestamp:Math.floor(Date.now()/1e3),sdkType:"WEB",eventName:t.eventName,checkoutSessionId:this.sessionConfig.checkoutSessionId,clientSessionId:this.sessionConfig.clientSessionId,primerAccountId:this.sessionConfig.primerAccountId,sdkVersion:this.sessionConfig.sdkVersion,userAgent:typeof navigator<"u"?navigator.userAgent:"",eventType:t.eventType,userLocale:t.userLocale,paymentMethod:t.paymentMethod,paymentId:t.paymentId,redirectDestinationUrl:t.redirectDestinationUrl,threedsProvider:t.threedsProvider,threedsResponse:t.threedsResponse};zs(e,this.sessionConfig)}},Si=new Ai;function Ro(i){Si.initialize(i)}function W(i){Si.sendEvent(i)}function Do(){Si.clear()}async function zs(i,{environment:t,clientSessionToken:e}){if(t==="LOCAL"){x.debug(`Analytics event ${i.eventName}:`,i);return}let r=Fs[t];return fetch(r,{method:"POST",headers:{"Content-Type":"application/json",...e&&{Authorization:`Bearer ${e}`}},body:JSON.stringify(i)}).catch(o=>{x.error("Failed to send analytics event:",o)})}var Kt="lit-localize-status";var $o=i=>typeof i!="string"&&"strTag"in i,wr=(i,t,e)=>{let r=i[0];for(let o=1;o<i.length;o++)r+=t[e?e[o-1]:o-1],r+=i[o];return r};var Gt=i=>$o(i)?wr(i.strings,i.values):i;var _=Gt,Vo=!1;function _i(i){if(Vo)throw new Error("lit-localize can only be configured once");_=i,Vo=!0}var Pi=class{constructor(t){this.__litLocalizeEventHandler=e=>{e.detail.status==="ready"&&this.host.requestUpdate()},this.host=t}hostConnected(){window.addEventListener(Kt,this.__litLocalizeEventHandler)}hostDisconnected(){window.removeEventListener(Kt,this.__litLocalizeEventHandler)}},js=i=>i.addController(new Pi(i)),Uo=js;var R=()=>(i,t)=>(i.addInitializer(Uo),i);var Wt=class{constructor(){this.settled=!1,this.promise=new Promise((t,e)=>{this._resolve=t,this._reject=e})}resolve(t){this.settled=!0,this._resolve(t)}reject(t){this.settled=!0,this._reject(t)}};var Ye=[];for(let i=0;i<256;i++)Ye[i]=(i>>4&15).toString(16)+(i&15).toString(16);function Yo(i){let t=0,e=8997,r=0,o=33826,a=0,n=40164,l=0,s=52210;for(let c=0;c<i.length;c++)e^=i.charCodeAt(c),t=e*435,r=o*435,a=n*435,l=s*435,a+=e<<8,l+=o<<8,r+=t>>>16,e=t&65535,a+=r>>>16,o=r&65535,s=l+(a>>>16)&65535,n=a&65535;return Ye[s>>8]+Ye[s&255]+Ye[n>>8]+Ye[n&255]+Ye[o>>8]+Ye[o&255]+Ye[e>>8]+Ye[e&255]}var Ks="",Gs="h",Ws="s";function Ho(i,t){return(t?Gs:Ws)+Yo(typeof i=="string"?i:i.join(Ks))}var Bo=new WeakMap,Fo=new Map;function zo(i,t,e){if(i){let r=e?.id??qs(t),o=i[r];if(o){if(typeof o=="string")return o;if("strTag"in o)return wr(o.strings,t.values,o.values);{let a=Bo.get(o);return a===void 0&&(a=o.values,Bo.set(o,a)),{...o,values:a.map(n=>t.values[n])}}}}return Gt(t)}function qs(i){let t=typeof i=="string"?i:i.strings,e=Fo.get(t);return e===void 0&&(e=Ho(t,typeof i!="string"&&!("strTag"in i)),Fo.set(t,e)),e}function Ti(i){window.dispatchEvent(new CustomEvent(Kt,{detail:i}))}var kr="",wi,jo,Ir,Mi,Ko,vt=new Wt;vt.resolve();var Mr=0,Go=i=>(_i((t,e)=>zo(Ko,t,e)),kr=jo=i.sourceLocale,Ir=new Set(i.targetLocales),Ir.add(i.sourceLocale),Mi=i.loadLocale,{getLocale:Js,setLocale:Zs}),Js=()=>kr,Zs=i=>{if(i===(wi??kr))return vt.promise;if(!Ir||!Mi)throw new Error("Internal error");if(!Ir.has(i))throw new Error("Invalid locale code");Mr++;let t=Mr;return wi=i,vt.settled&&(vt=new Wt),Ti({status:"loading",loadingLocale:i}),(i===jo?Promise.resolve({templates:void 0}):Mi(i)).then(r=>{Mr===t&&(kr=i,wi=void 0,Ko=r.templates,Ti({status:"ready",readyLocale:i}),vt.resolve())},r=>{Mr===t&&(Ti({status:"error",errorLocale:i,errorMessage:r.toString()}),vt.reject(r))}),vt.promise};var ki="en",Ii=["ar","bg","ca","cs","da","de","el","en-GB","es","es-AR","es-MX","et-EE","fi-FI","fr","he","hr","hu","id","it","ja","ko","lt","lt-LT","lv","lv-LV","ms","nb","nl","nl_NL","pl","pt","pt-BR","ro","ru","sk","sl","sr-RS","sv","th","tr","uk-UA","vi","zf","zh-CN","zh-HK","zh-TW"],Wo="You must call `loadLocale` first to set up the localized template.",qo,Nr,Jo=i=>{let t=Go({sourceLocale:ki,targetLocales:Ii,loadLocale:i});qo=t.getLocale,Nr=t.setLocale};var Ni=i=>{Jo(i)},Li=i=>{if(!Nr)throw new Error(Wo);return Nr(i)};var qt=new Set(Ii);qt.add(ki);var Oi=i=>{if(typeof i!="string")return!1;if(i==="en")return!0;let t=i.replace("_","-");if(qt.has(t))return!0;let e=t.split("-")[0];return!!qt.has(e)},Ri=i=>{if(i==="en")return"en-GB";let t=i.replace("_","-");if(qt.has(t))return t;let e=t.split("-")[0];return qt.has(e)?e:"en-GB"};var Lr=globalThis,Or=Lr.ShadowRoot&&(Lr.ShadyCSS===void 0||Lr.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Di=Symbol(),Zo=new WeakMap,Jt=class{constructor(t,e,r){if(this._$cssResult$=!0,r!==Di)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o,e=this.t;if(Or&&t===void 0){let r=e!==void 0&&e.length===1;r&&(t=Zo.get(e)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),r&&Zo.set(e,t))}return t}toString(){return this.cssText}},Te=i=>new Jt(typeof i=="string"?i:i+"",void 0,Di),g=(i,...t)=>{let e=i.length===1?i[0]:t.reduce((r,o,a)=>r+(n=>{if(n._$cssResult$===!0)return n.cssText;if(typeof n=="number")return n;throw Error("Value passed to 'css' function must be a 'css' function result: "+n+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(o)+i[a+1],i[0]);return new Jt(e,i,Di)},Xo=(i,t)=>{if(Or)i.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let e of t){let r=document.createElement("style"),o=Lr.litNonce;o!==void 0&&r.setAttribute("nonce",o),r.textContent=e.cssText,i.appendChild(r)}},$i=Or?i=>i:i=>i instanceof CSSStyleSheet?(t=>{let e="";for(let r of t.cssRules)e+=r.cssText;return Te(e)})(i):i;var{is:Xs,defineProperty:Qs,getOwnPropertyDescriptor:el,getOwnPropertyNames:tl,getOwnPropertySymbols:rl,getPrototypeOf:il}=Object,ot=globalThis,Qo=ot.trustedTypes,ol=Qo?Qo.emptyScript:"",al=ot.reactiveElementPolyfillSupport,Zt=(i,t)=>i,Xt={toAttribute(i,t){switch(t){case Boolean:i=i?ol:null;break;case Object:case Array:i=i==null?i:JSON.stringify(i)}return i},fromAttribute(i,t){let e=i;switch(t){case Boolean:e=i!==null;break;case Number:e=i===null?null:Number(i);break;case Object:case Array:try{e=JSON.parse(i)}catch{e=null}}return e}},Rr=(i,t)=>!Xs(i,t),ea={attribute:!0,type:String,converter:Xt,reflect:!1,useDefault:!1,hasChanged:Rr};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),ot.litPropertyMetadata??(ot.litPropertyMetadata=new WeakMap);var He=class extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??(this.l=[])).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=ea){if(e.state&&(e.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((e=Object.create(e)).wrapped=!0),this.elementProperties.set(t,e),!e.noAccessor){let r=Symbol(),o=this.getPropertyDescriptor(t,r,e);o!==void 0&&Qs(this.prototype,t,o)}}static getPropertyDescriptor(t,e,r){let{get:o,set:a}=el(this.prototype,t)??{get(){return this[e]},set(n){this[e]=n}};return{get:o,set(n){let l=o?.call(this);a?.call(this,n),this.requestUpdate(t,l,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??ea}static _$Ei(){if(this.hasOwnProperty(Zt("elementProperties")))return;let t=il(this);t.finalize(),t.l!==void 0&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(Zt("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Zt("properties"))){let e=this.properties,r=[...tl(e),...rl(e)];for(let o of r)this.createProperty(o,e[o])}let t=this[Symbol.metadata];if(t!==null){let e=litPropertyMetadata.get(t);if(e!==void 0)for(let[r,o]of e)this.elementProperties.set(r,o)}this._$Eh=new Map;for(let[e,r]of this.elementProperties){let o=this._$Eu(e,r);o!==void 0&&this._$Eh.set(o,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){let e=[];if(Array.isArray(t)){let r=new Set(t.flat(1/0).reverse());for(let o of r)e.unshift($i(o))}else t!==void 0&&e.push($i(t));return e}static _$Eu(t,e){let r=e.attribute;return r===!1?void 0:typeof r=="string"?r:typeof t=="string"?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(t=>t(this))}addController(t){(this._$EO??(this._$EO=new Set)).add(t),this.renderRoot!==void 0&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){let t=new Map,e=this.constructor.elementProperties;for(let r of e.keys())this.hasOwnProperty(r)&&(t.set(r,this[r]),delete this[r]);t.size>0&&(this._$Ep=t)}createRenderRoot(){let t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Xo(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),this._$EO?.forEach(t=>t.hostConnected?.())}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach(t=>t.hostDisconnected?.())}attributeChangedCallback(t,e,r){this._$AK(t,r)}_$ET(t,e){let r=this.constructor.elementProperties.get(t),o=this.constructor._$Eu(t,r);if(o!==void 0&&r.reflect===!0){let a=(r.converter?.toAttribute!==void 0?r.converter:Xt).toAttribute(e,r.type);this._$Em=t,a==null?this.removeAttribute(o):this.setAttribute(o,a),this._$Em=null}}_$AK(t,e){let r=this.constructor,o=r._$Eh.get(t);if(o!==void 0&&this._$Em!==o){let a=r.getPropertyOptions(o),n=typeof a.converter=="function"?{fromAttribute:a.converter}:a.converter?.fromAttribute!==void 0?a.converter:Xt;this._$Em=o,this[o]=n.fromAttribute(e,a.type)??this._$Ej?.get(o)??null,this._$Em=null}}requestUpdate(t,e,r){if(t!==void 0){let o=this.constructor,a=this[t];if(r??(r=o.getPropertyOptions(t)),!((r.hasChanged??Rr)(a,e)||r.useDefault&&r.reflect&&a===this._$Ej?.get(t)&&!this.hasAttribute(o._$Eu(t,r))))return;this.C(t,e,r)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(t,e,{useDefault:r,reflect:o,wrapped:a},n){r&&!(this._$Ej??(this._$Ej=new Map)).has(t)&&(this._$Ej.set(t,n??e??this[t]),a!==!0||n!==void 0)||(this._$AL.has(t)||(this.hasUpdated||r||(e=void 0),this._$AL.set(t,e)),o===!0&&this._$Em!==t&&(this._$Eq??(this._$Eq=new Set)).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(let[o,a]of this._$Ep)this[o]=a;this._$Ep=void 0}let r=this.constructor.elementProperties;if(r.size>0)for(let[o,a]of r){let{wrapped:n}=a,l=this[o];n!==!0||this._$AL.has(o)||l===void 0||this.C(o,void 0,a,l)}}let t=!1,e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),this._$EO?.forEach(r=>r.hostUpdate?.()),this.update(e)):this._$EM()}catch(r){throw t=!1,this._$EM(),r}t&&this._$AE(e)}willUpdate(t){}_$AE(t){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&(this._$Eq=this._$Eq.forEach(e=>this._$ET(e,this[e]))),this._$EM()}updated(t){}firstUpdated(t){}};He.elementStyles=[],He.shadowRootOptions={mode:"open"},He[Zt("elementProperties")]=new Map,He[Zt("finalized")]=new Map,al?.({ReactiveElement:He}),(ot.reactiveElementVersions??(ot.reactiveElementVersions=[])).push("2.1.0");var er=globalThis,Dr=er.trustedTypes,ta=Dr?Dr.createPolicy("lit-html",{createHTML:i=>i}):void 0,Ui="$lit$",Be=`lit$${Math.random().toFixed(9).slice(2)}$`,Yi="?"+Be,nl=`<${Yi}>`,Et=document,tr=()=>Et.createComment(""),rr=i=>i===null||typeof i!="object"&&typeof i!="function",Hi=Array.isArray,sa=i=>Hi(i)||typeof i?.[Symbol.iterator]=="function",Vi=`[
2
+ \f\r]`,Qt=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,ra=/-->/g,ia=/>/g,bt=RegExp(`>|${Vi}(?:([^\\s"'>=/]+)(${Vi}*=${Vi}*(?:[^
3
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),oa=/'/g,aa=/"/g,la=/^(?:script|style|textarea|title)$/i,Bi=i=>(t,...e)=>({_$litType$:i,strings:t,values:e}),u=Bi(1),we=Bi(2),Jm=Bi(3),Ee=Symbol.for("lit-noChange"),f=Symbol.for("lit-nothing"),na=new WeakMap,Ct=Et.createTreeWalker(Et,129);function da(i,t){if(!Hi(i)||!i.hasOwnProperty("raw"))throw Error("invalid template strings array");return ta!==void 0?ta.createHTML(t):t}var ca=(i,t)=>{let e=i.length-1,r=[],o,a=t===2?"<svg>":t===3?"<math>":"",n=Qt;for(let l=0;l<e;l++){let s=i[l],c,m,y=-1,h=0;for(;h<s.length&&(n.lastIndex=h,m=n.exec(s),m!==null);)h=n.lastIndex,n===Qt?m[1]==="!--"?n=ra:m[1]!==void 0?n=ia:m[2]!==void 0?(la.test(m[2])&&(o=RegExp("</"+m[2],"g")),n=bt):m[3]!==void 0&&(n=bt):n===bt?m[0]===">"?(n=o??Qt,y=-1):m[1]===void 0?y=-2:(y=n.lastIndex-m[2].length,c=m[1],n=m[3]===void 0?bt:m[3]==='"'?aa:oa):n===aa||n===oa?n=bt:n===ra||n===ia?n=Qt:(n=bt,o=void 0);let E=n===bt&&i[l+1].startsWith("/>")?" ":"";a+=n===Qt?s+nl:y>=0?(r.push(c),s.slice(0,y)+Ui+s.slice(y)+Be+E):s+Be+(y===-2?l:E)}return[da(i,a+(i[e]||"<?>")+(t===2?"</svg>":t===3?"</math>":"")),r]},ir=class i{constructor({strings:t,_$litType$:e},r){let o;this.parts=[];let a=0,n=0,l=t.length-1,s=this.parts,[c,m]=ca(t,e);if(this.el=i.createElement(c,r),Ct.currentNode=this.el.content,e===2||e===3){let y=this.el.content.firstChild;y.replaceWith(...y.childNodes)}for(;(o=Ct.nextNode())!==null&&s.length<l;){if(o.nodeType===1){if(o.hasAttributes())for(let y of o.getAttributeNames())if(y.endsWith(Ui)){let h=m[n++],E=o.getAttribute(y).split(Be),A=/([.?@])?(.*)/.exec(h);s.push({type:1,index:a,name:A[2],strings:E,ctor:A[1]==="."?Vr:A[1]==="?"?Ur:A[1]==="@"?Yr:At}),o.removeAttribute(y)}else y.startsWith(Be)&&(s.push({type:6,index:a}),o.removeAttribute(y));if(la.test(o.tagName)){let y=o.textContent.split(Be),h=y.length-1;if(h>0){o.textContent=Dr?Dr.emptyScript:"";for(let E=0;E<h;E++)o.append(y[E],tr()),Ct.nextNode(),s.push({type:2,index:++a});o.append(y[h],tr())}}}else if(o.nodeType===8)if(o.data===Yi)s.push({type:2,index:a});else{let y=-1;for(;(y=o.data.indexOf(Be,y+1))!==-1;)s.push({type:7,index:a}),y+=Be.length-1}a++}}static createElement(t,e){let r=Et.createElement("template");return r.innerHTML=t,r}};function xt(i,t,e=i,r){if(t===Ee)return t;let o=r!==void 0?e._$Co?.[r]:e._$Cl,a=rr(t)?void 0:t._$litDirective$;return o?.constructor!==a&&(o?._$AO?.(!1),a===void 0?o=void 0:(o=new a(i),o._$AT(i,e,r)),r!==void 0?(e._$Co??(e._$Co=[]))[r]=o:e._$Cl=o),o!==void 0&&(t=xt(i,o._$AS(i,t.values),o,r)),t}var $r=class{constructor(t,e){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){let{el:{content:e},parts:r}=this._$AD,o=(t?.creationScope??Et).importNode(e,!0);Ct.currentNode=o;let a=Ct.nextNode(),n=0,l=0,s=r[0];for(;s!==void 0;){if(n===s.index){let c;s.type===2?c=new Lt(a,a.nextSibling,this,t):s.type===1?c=new s.ctor(a,s.name,s.strings,this,t):s.type===6&&(c=new Hr(a,this,t)),this._$AV.push(c),s=r[++l]}n!==s?.index&&(a=Ct.nextNode(),n++)}return Ct.currentNode=Et,o}p(t){let e=0;for(let r of this._$AV)r!==void 0&&(r.strings!==void 0?(r._$AI(t,r,e),e+=r.strings.length-2):r._$AI(t[e])),e++}},Lt=class i{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,e,r,o){this.type=2,this._$AH=f,this._$AN=void 0,this._$AA=t,this._$AB=e,this._$AM=r,this.options=o,this._$Cv=o?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode,e=this._$AM;return e!==void 0&&t?.nodeType===11&&(t=e.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,e=this){t=xt(this,t,e),rr(t)?t===f||t==null||t===""?(this._$AH!==f&&this._$AR(),this._$AH=f):t!==this._$AH&&t!==Ee&&this._(t):t._$litType$!==void 0?this.$(t):t.nodeType!==void 0?this.T(t):sa(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==f&&rr(this._$AH)?this._$AA.nextSibling.data=t:this.T(Et.createTextNode(t)),this._$AH=t}$(t){let{values:e,_$litType$:r}=t,o=typeof r=="number"?this._$AC(t):(r.el===void 0&&(r.el=ir.createElement(da(r.h,r.h[0]),this.options)),r);if(this._$AH?._$AD===o)this._$AH.p(e);else{let a=new $r(o,this),n=a.u(this.options);a.p(e),this.T(n),this._$AH=a}}_$AC(t){let e=na.get(t.strings);return e===void 0&&na.set(t.strings,e=new ir(t)),e}k(t){Hi(this._$AH)||(this._$AH=[],this._$AR());let e=this._$AH,r,o=0;for(let a of t)o===e.length?e.push(r=new i(this.O(tr()),this.O(tr()),this,this.options)):r=e[o],r._$AI(a),o++;o<e.length&&(this._$AR(r&&r._$AB.nextSibling,o),e.length=o)}_$AR(t=this._$AA.nextSibling,e){for(this._$AP?.(!1,!0,e);t&&t!==this._$AB;){let r=t.nextSibling;t.remove(),t=r}}setConnected(t){this._$AM===void 0&&(this._$Cv=t,this._$AP?.(t))}},At=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,e,r,o,a){this.type=1,this._$AH=f,this._$AN=void 0,this.element=t,this.name=e,this._$AM=o,this.options=a,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=f}_$AI(t,e=this,r,o){let a=this.strings,n=!1;if(a===void 0)t=xt(this,t,e,0),n=!rr(t)||t!==this._$AH&&t!==Ee,n&&(this._$AH=t);else{let l=t,s,c;for(t=a[0],s=0;s<a.length-1;s++)c=xt(this,l[r+s],e,s),c===Ee&&(c=this._$AH[s]),n||(n=!rr(c)||c!==this._$AH[s]),c===f?t=f:t!==f&&(t+=(c??"")+a[s+1]),this._$AH[s]=c}n&&!o&&this.j(t)}j(t){t===f?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??"")}},Vr=class extends At{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===f?void 0:t}},Ur=class extends At{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==f)}},Yr=class extends At{constructor(t,e,r,o,a){super(t,e,r,o,a),this.type=5}_$AI(t,e=this){if((t=xt(this,t,e,0)??f)===Ee)return;let r=this._$AH,o=t===f&&r!==f||t.capture!==r.capture||t.once!==r.once||t.passive!==r.passive,a=t!==f&&(r===f||o);o&&this.element.removeEventListener(this.name,this,r),a&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}},Hr=class{constructor(t,e,r){this.element=t,this.type=6,this._$AN=void 0,this._$AM=e,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(t){xt(this,t)}},pa={M:Ui,P:Be,A:Yi,C:1,L:ca,R:$r,D:sa,V:xt,I:Lt,H:At,N:Ur,U:Yr,B:Vr,F:Hr},sl=er.litHtmlPolyfillSupport;sl?.(ir,Lt),(er.litHtmlVersions??(er.litHtmlVersions=[])).push("3.3.0");var ma=(i,t,e)=>{let r=e?.renderBefore??t,o=r._$litPart$;if(o===void 0){let a=e?.renderBefore??null;r._$litPart$=o=new Lt(t.insertBefore(tr(),a),a,void 0,e??{})}return o._$AI(i),o};var or=globalThis,v=class extends He{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var e;let t=super.createRenderRoot();return(e=this.renderOptions).renderBefore??(e.renderBefore=t.firstChild),t}update(t){let e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=ma(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return Ee}};v._$litElement$=!0,v.finalized=!0,or.litElementHydrateSupport?.({LitElement:v});var ll=or.litElementPolyfillSupport;ll?.({LitElement:v});(or.litElementVersions??(or.litElementVersions=[])).push("4.2.0");var b=i=>(t,e)=>{e!==void 0?e.addInitializer(()=>{customElements.define(i,t)}):customElements.define(i,t)};var dl={attribute:!0,type:String,converter:Xt,reflect:!1,hasChanged:Rr},cl=(i=dl,t,e)=>{let{kind:r,metadata:o}=e,a=globalThis.litPropertyMetadata.get(o);if(a===void 0&&globalThis.litPropertyMetadata.set(o,a=new Map),r==="setter"&&((i=Object.create(i)).wrapped=!0),a.set(e.name,i),r==="accessor"){let{name:n}=e;return{set(l){let s=t.get.call(this);t.set.call(this,l),this.requestUpdate(n,s,i)},init(l){return l!==void 0&&this.C(n,void 0,i,l),l}}}if(r==="setter"){let{name:n}=e;return function(l){let s=this[n];t.call(this,l),this.requestUpdate(n,s,i)}}throw Error("Unsupported decorator location: "+r)};function p(i){return(t,e)=>typeof e=="object"?cl(i,t,e):((r,o,a)=>{let n=o.hasOwnProperty(a);return o.constructor.createProperty(a,r),n?Object.getOwnPropertyDescriptor(o,a):void 0})(i,t,e)}function M(i){return p({...i,state:!0,attribute:!1})}var St=(i,t,e)=>(e.configurable=!0,e.enumerable=!0,Reflect.decorate&&typeof t!="object"&&Object.defineProperty(i,t,e),e);function at(i,t){return(e,r,o)=>{let a=n=>n.renderRoot?.querySelector(i)??null;if(t){let{get:n,set:l}=typeof r=="object"?e:o??(()=>{let s=Symbol();return{get(){return this[s]},set(c){this[s]=c}}})();return St(e,r,{get(){let s=n.call(this);return s===void 0&&(s=a(this),(s!==null||this.hasUpdated)&&l.call(this,s)),s}})}return St(e,r,{get(){return a(this)}})}}function V(i,t,e){return i?t(i):e?.(i)}var P=g` * { box-sizing: border-box; } `,ua=g` :host { display: block; isolation: isolate; position: relative; width: 100%; //Keep the CSS loader in the same position - check css-loader-inline.ts min-height: 64px; } `;var ha="https://sdk.primer.io/web/v2-latest/Primer.min.js",nt="20px";var Br=class{constructor(t){this._methods=t}get(t){return this._methods.get(t)}toArray(){return Array.from(this._methods.values())}size(){return this._methods.size}};var Fr=class{constructor(t){this.paymentMethods=null;this.headlessInstance=t}setPaymentMethods(t){this.paymentMethods=t}async refreshSession(){if(!this.headlessInstance){x.errorWithDatadog("PrimerJS: Cannot refresh session: Headless instance not available");return}try{await this.headlessInstance.refreshClientSession()}catch(t){throw x.errorWithDatadog("PrimerJS: Error refreshing client session",{error:t}),t}}getPaymentMethods(){return this.paymentMethods?this.paymentMethods.toArray():(x.warn("PrimerJS: Payment methods not available"),[])}handlePaymentStart(){this.onPaymentStart&&this.onPaymentStart()}handleBeforePaymentCreate(t,e){if(this.onPaymentPrepare){let r={continuePaymentCreation:()=>{x.info("PrimerJS: Payment creation continuing"),e.continuePaymentCreation()},abortPaymentCreation:()=>{x.info("PrimerJS: Payment creation aborted"),e.abortPaymentCreation()}};this.onPaymentPrepare(t,r)}else x.info("PrimerJS: No payment prepare handler, continuing by default"),e.continuePaymentCreation()}handlePaymentComplete(t){this.onPaymentComplete&&this.onPaymentComplete({payment:t,status:"success"})}handlePaymentFailure(t,e){this.onPaymentComplete&&this.onPaymentComplete({payment:e||null,status:"error",error:t})}};var zr=typeof window<"u"&&typeof window.document<"u";function pl(i){return document.querySelector(`script[src^="${i}"]`)}function ml(i,t){let e=document.createElement("script");return e.setAttribute("src",i),e.setAttribute("async",""),e.setAttribute("crossorigin","anonymous"),t&&e.setAttribute("type","module"),e}function fa(i,t=!1){if(!zr)throw new Error("Cannot load script in server environment");let e=pl(i)??ml(i,t);return new Promise((r,o)=>{e.onload=()=>{r()},e.onerror=()=>{o(new Error(`Failed to load script: ${i}`))},e.parentNode||document.head.appendChild(e)})}var ul={"../../node_modules/card-validator/dist/card-number.js":function(i,t,e){Object.defineProperty(t,"__esModule",{value:!0}),t.cardNumber=void 0;var r=e("../../node_modules/card-validator/dist/luhn-10.js"),o=e("../../node_modules/credit-card-type/dist/index.js");function a(l,s,c){return{card:l,isPotentiallyValid:s,isValid:c}}function n(l,s){s===void 0&&(s={});var c,m,y;if(typeof l!="string"&&typeof l!="number")return a(null,!1,!1);var h=String(l).replace(/-|\s/g,"");if(!/^\d*$/.test(h))return a(null,!1,!1);var E=o(h);if(E.length===0)return a(null,!1,!1);if(E.length!==1)return a(null,!0,!1);var A=E[0];if(s.maxLength&&h.length>s.maxLength)return a(A,!1,!1);m=s.skipLuhnValidation===!0||A.type===o.types.UNIONPAY&&s.luhnValidateUnionPay!==!0?!0:r(h),y=Math.max.apply(null,A.lengths),s.maxLength&&(y=Math.min(s.maxLength,y));for(var w=0;w<A.lengths.length;w++)if(A.lengths[w]===h.length)return c=h.length<y||m,a(A,c,m);return a(A,h.length<y,!1)}t.cardNumber=n},"../../node_modules/card-validator/dist/cardholder-name.js":function(i,t){Object.defineProperty(t,"__esModule",{value:!0}),t.cardholderName=void 0;var e=/^[\d\s-]*$/,r=255;function o(n,l){return{isValid:n,isPotentiallyValid:l}}function a(n){return typeof n!="string"?o(!1,!1):n.length===0?o(!1,!0):n.length>r?o(!1,!1):e.test(n)?o(!1,!0):o(!0,!0)}t.cardholderName=a},"../../node_modules/card-validator/dist/cvv.js":function(i,t){Object.defineProperty(t,"__esModule",{value:!0}),t.cvv=void 0;var e=3;function r(l,s){for(var c=0;c<l.length;c++)if(s===l[c])return!0;return!1}function o(l){for(var s=e,c=0;c<l.length;c++)s=l[c]>s?l[c]:s;return s}function a(l,s){return{isValid:l,isPotentiallyValid:s}}function n(l,s){return s===void 0&&(s=e),s=s instanceof Array?s:[s],typeof l!="string"||!/^\d*$/.test(l)?a(!1,!1):r(s,l.length)?a(!0,!0):l.length<Math.min.apply(null,s)?a(!1,!0):l.length>o(s)?a(!1,!1):a(!0,!0)}t.cvv=n},"../../node_modules/card-validator/dist/expiration-date.js":function(i,t,e){var r=this&&this.__assign||function(){return r=Object.assign||function(c){for(var m,y=1,h=arguments.length;y<h;y++){m=arguments[y];for(var E in m)Object.prototype.hasOwnProperty.call(m,E)&&(c[E]=m[E])}return c},r.apply(this,arguments)};Object.defineProperty(t,"__esModule",{value:!0}),t.expirationDate=void 0;var o=e("../../node_modules/card-validator/dist/lib/parse-date.js"),a=e("../../node_modules/card-validator/dist/expiration-month.js"),n=e("../../node_modules/card-validator/dist/expiration-year.js");function l(c,m,y,h){return{isValid:c,isPotentiallyValid:m,month:y,year:h}}function s(c,m){var y;if(typeof c=="string")c=c.replace(/^(\d\d) (\d\d(\d\d)?)$/,"$1/$2"),y=(0,o.parseDate)(String(c));else{if(c===null||typeof c!="object")return l(!1,!1,null,null);var h=r({},c);y={month:String(h.month),year:String(h.year)}}var E=(0,a.expirationMonth)(y.month),A=(0,n.expirationYear)(y.year,m);if(E.isValid){if(A.isCurrentYear){var w=E.isValidForThisYear;return l(w,w,y.month,y.year)}if(A.isValid)return l(!0,!0,y.month,y.year)}return E.isPotentiallyValid&&A.isPotentiallyValid?l(!1,!0,null,null):l(!1,!1,null,null)}t.expirationDate=s},"../../node_modules/card-validator/dist/expiration-month.js":function(i,t){Object.defineProperty(t,"__esModule",{value:!0}),t.expirationMonth=void 0;function e(o,a,n){return{isValid:o,isPotentiallyValid:a,isValidForThisYear:n||!1}}function r(o){var a=new Date().getMonth()+1;if(typeof o!="string")return e(!1,!1);if(o.replace(/\s/g,"")===""||o==="0")return e(!1,!0);if(!/^\d*$/.test(o))return e(!1,!1);var n=parseInt(o,10);if(isNaN(Number(o)))return e(!1,!1);var l=n>0&&n<13;return e(l,l,l&&n>=a)}t.expirationMonth=r},"../../node_modules/card-validator/dist/expiration-year.js":function(i,t){Object.defineProperty(t,"__esModule",{value:!0}),t.expirationYear=void 0;var e=19;function r(a,n,l){return{isValid:a,isPotentiallyValid:n,isCurrentYear:l||!1}}function o(a,n){n===void 0&&(n=e);var l;if(typeof a!="string")return r(!1,!1);if(a.replace(/\s/g,"")==="")return r(!1,!0);if(!/^\d*$/.test(a))return r(!1,!1);var s=a.length;if(s<2)return r(!1,!0);var c=new Date().getFullYear();if(s===3){var m=a.slice(0,2),y=String(c).slice(0,2);return r(!1,m===y)}if(s>4)return r(!1,!1);var h=parseInt(a,10),E=Number(String(c).substr(2,2)),A=!1;if(s===2){if(String(c).substr(0,2)===a)return r(!1,!0);l=E===h,A=h>=E&&h<=E+n}else s===4&&(l=c===h,A=h>=c&&h<=c+n);return r(A,A,l)}t.expirationYear=o},"../../node_modules/card-validator/dist/index.js":function(i,t,e){var r=this&&this.__createBinding||(Object.create?function(w,I,S,k){k===void 0&&(k=S);var U=Object.getOwnPropertyDescriptor(I,S);(!U||("get"in U?!I.__esModule:U.writable||U.configurable))&&(U={enumerable:!0,get:function(){return I[S]}}),Object.defineProperty(w,k,U)}:function(w,I,S,k){k===void 0&&(k=S),w[k]=I[S]}),o=this&&this.__setModuleDefault||(Object.create?function(w,I){Object.defineProperty(w,"default",{enumerable:!0,value:I})}:function(w,I){w.default=I}),a=this&&this.__importStar||function(w){if(w&&w.__esModule)return w;var I={};if(w!=null)for(var S in w)S!=="default"&&Object.prototype.hasOwnProperty.call(w,S)&&r(I,w,S);return o(I,w),I},n=a(e("../../node_modules/credit-card-type/dist/index.js")),l=e("../../node_modules/card-validator/dist/cardholder-name.js"),s=e("../../node_modules/card-validator/dist/card-number.js"),c=e("../../node_modules/card-validator/dist/expiration-date.js"),m=e("../../node_modules/card-validator/dist/expiration-month.js"),y=e("../../node_modules/card-validator/dist/expiration-year.js"),h=e("../../node_modules/card-validator/dist/cvv.js"),E=e("../../node_modules/card-validator/dist/postal-code.js"),A={creditCardType:n,cardholderName:l.cardholderName,number:s.cardNumber,expirationDate:c.expirationDate,expirationMonth:m.expirationMonth,expirationYear:y.expirationYear,cvv:h.cvv,postalCode:E.postalCode};i.exports=A},"../../node_modules/card-validator/dist/lib/is-array.js":function(i,t){Object.defineProperty(t,"__esModule",{value:!0}),t.isArray=void 0,t.isArray=Array.isArray||function(e){return Object.prototype.toString.call(e)==="[object Array]"}},"../../node_modules/card-validator/dist/lib/parse-date.js":function(i,t,e){Object.defineProperty(t,"__esModule",{value:!0}),t.parseDate=void 0;var r=e("../../node_modules/card-validator/dist/expiration-year.js"),o=e("../../node_modules/card-validator/dist/lib/is-array.js");function a(l){var s=Number(l[0]),c;return s===0?2:s>1||s===1&&Number(l[1])>2?1:s===1?(c=l.substr(1),(0,r.expirationYear)(c).isPotentiallyValid?1:2):l.length===5?1:l.length>5?2:1}function n(l){var s;if(/^\d{4}-\d{1,2}$/.test(l)?s=l.split("-").reverse():/\//.test(l)?s=l.split(/\s*\/\s*/g):/\s/.test(l)&&(s=l.split(/ +/g)),(0,o.isArray)(s))return{month:s[0]||"",year:s.slice(1).join()};var c=a(l),m=l.substr(0,c);return{month:m,year:l.substr(m.length)}}t.parseDate=n},"../../node_modules/card-validator/dist/luhn-10.js":function(i){function t(e){for(var r=0,o=!1,a=e.length-1,n;a>=0;)n=parseInt(e.charAt(a),10),o&&(n*=2,n>9&&(n=n%10+1)),o=!o,r+=n,a--;return r%10===0}i.exports=t},"../../node_modules/card-validator/dist/postal-code.js":function(i,t){Object.defineProperty(t,"__esModule",{value:!0}),t.postalCode=void 0;var e=3,r=new RegExp(/^[a-z0-9]+$/i);function o(n,l){return{isValid:n,isPotentiallyValid:l}}function a(n,l){l===void 0&&(l={});var s=l.minLength||e;return typeof n!="string"?o(!1,!1):n.length<s||!r.test(n.trim().slice(0,s))?o(!1,!0):o(!0,!0)}t.postalCode=a},"../../node_modules/credit-card-type/dist/index.js":function(i,t,e){var r=this&&this.__assign||function(){return r=Object.assign||function(S){for(var k,U=1,Xe=arguments.length;U<Xe;U++){k=arguments[U];for(var Bt in k)Object.prototype.hasOwnProperty.call(k,Bt)&&(S[Bt]=k[Bt])}return S},r.apply(this,arguments)},o=e("../../node_modules/credit-card-type/dist/lib/card-types.js"),a=e("../../node_modules/credit-card-type/dist/lib/add-matching-cards-to-results.js"),n=e("../../node_modules/credit-card-type/dist/lib/is-valid-input-type.js"),l=e("../../node_modules/credit-card-type/dist/lib/find-best-match.js"),s=e("../../node_modules/credit-card-type/dist/lib/clone.js"),c={},m={VISA:"visa",MASTERCARD:"mastercard",AMERICAN_EXPRESS:"american-express",DINERS_CLUB:"diners-club",DISCOVER:"discover",JCB:"jcb",UNIONPAY:"unionpay",MAESTRO:"maestro",ELO:"elo",MIR:"mir",HIPER:"hiper",HIPERCARD:"hipercard"},y=[m.VISA,m.MASTERCARD,m.AMERICAN_EXPRESS,m.DINERS_CLUB,m.DISCOVER,m.JCB,m.UNIONPAY,m.MAESTRO,m.ELO,m.MIR,m.HIPER,m.HIPERCARD],h=(0,s.clone)(y);function E(S){return c[S]||o[S]}function A(){return h.map(function(S){return(0,s.clone)(E(S))})}function w(S,k){k===void 0&&(k=!1);var U=h.indexOf(S);if(!k&&U===-1)throw new Error('"'+S+'" is not a supported card type.');return U}function I(S){var k=[];if(!(0,n.isValidInputType)(S))return k;if(S.length===0)return A();h.forEach(function(Xe){var Bt=E(Xe);(0,a.addMatchingCardsToResults)(S,Bt,k)});var U=(0,l.findBestMatch)(k);return U?[U]:k}I.getTypeInfo=function(S){return(0,s.clone)(E(S))},I.removeCard=function(S){var k=w(S);h.splice(k,1)},I.addCard=function(S){var k=w(S.type,!0);c[S.type]=S,k===-1&&h.push(S.type)},I.updateCard=function(S,k){var U=c[S]||o[S];if(!U)throw new Error('"'.concat(S,"\" is not a recognized type. Use `addCard` instead.'"));if(k.type&&U.type!==k.type)throw new Error("Cannot overwrite type parameter.");var Xe=(0,s.clone)(U);Xe=r(r({},Xe),k),c[Xe.type]=Xe},I.changeOrder=function(S,k){var U=w(S);h.splice(U,1),h.splice(k,0,S)},I.resetModifications=function(){h=(0,s.clone)(y),c={}},I.types=m,i.exports=I},"../../node_modules/credit-card-type/dist/lib/add-matching-cards-to-results.js":function(i,t,e){Object.defineProperty(t,"__esModule",{value:!0}),t.addMatchingCardsToResults=void 0;var r=e("../../node_modules/credit-card-type/dist/lib/clone.js"),o=e("../../node_modules/credit-card-type/dist/lib/matches.js");function a(n,l,s){var c,m;for(c=0;c<l.patterns.length;c++){var y=l.patterns[c];if((0,o.matches)(n,y)){var h=(0,r.clone)(l);m=Array.isArray(y)?String(y[0]).length:String(y).length,n.length>=m&&(h.matchStrength=m),s.push(h);break}}}t.addMatchingCardsToResults=a},"../../node_modules/credit-card-type/dist/lib/card-types.js":function(i){var t={visa:{niceType:"Visa",type:"visa",patterns:[4],gaps:[4,8,12],lengths:[16,18,19],code:{name:"CVV",size:3}},mastercard:{niceType:"Mastercard",type:"mastercard",patterns:[[51,55],[2221,2229],[223,229],[23,26],[270,271],2720],gaps:[4,8,12],lengths:[16],code:{name:"CVC",size:3}},"american-express":{niceType:"American Express",type:"american-express",patterns:[34,37],gaps:[4,10],lengths:[15],code:{name:"CID",size:4}},"diners-club":{niceType:"Diners Club",type:"diners-club",patterns:[[300,305],36,38,39],gaps:[4,10],lengths:[14,16,19],code:{name:"CVV",size:3}},discover:{niceType:"Discover",type:"discover",patterns:[6011,[644,649],65],gaps:[4,8,12],lengths:[16,19],code:{name:"CID",size:3}},jcb:{niceType:"JCB",type:"jcb",patterns:[2131,1800,[3528,3589]],gaps:[4,8,12],lengths:[16,17,18,19],code:{name:"CVV",size:3}},unionpay:{niceType:"UnionPay",type:"unionpay",patterns:[620,[62100,62182],[62184,62187],[62185,62197],[62200,62205],[622010,622999],622018,[62207,62209],[623,626],6270,6272,6276,[627700,627779],[627781,627799],[6282,6289],6291,6292,810,[8110,8131],[8132,8151],[8152,8163],[8164,8171]],gaps:[4,8,12],lengths:[14,15,16,17,18,19],code:{name:"CVN",size:3}},maestro:{niceType:"Maestro",type:"maestro",patterns:[493698,[5e5,504174],[504176,506698],[506779,508999],[56,59],63,67,6],gaps:[4,8,12],lengths:[12,13,14,15,16,17,18,19],code:{name:"CVC",size:3}},elo:{niceType:"Elo",type:"elo",patterns:[401178,401179,438935,457631,457632,431274,451416,457393,504175,[506699,506778],[509e3,509999],627780,636297,636368,[650031,650033],[650035,650051],[650405,650439],[650485,650538],[650541,650598],[650700,650718],[650720,650727],[650901,650978],[651652,651679],[655e3,655019],[655021,655058]],gaps:[4,8,12],lengths:[16],code:{name:"CVE",size:3}},mir:{niceType:"Mir",type:"mir",patterns:[[2200,2204]],gaps:[4,8,12],lengths:[16,17,18,19],code:{name:"CVP2",size:3}},hiper:{niceType:"Hiper",type:"hiper",patterns:[637095,63737423,63743358,637568,637599,637609,637612],gaps:[4,8,12],lengths:[16],code:{name:"CVC",size:3}},hipercard:{niceType:"Hipercard",type:"hipercard",patterns:[606282],gaps:[4,8,12],lengths:[16],code:{name:"CVC",size:3}}};i.exports=t},"../../node_modules/credit-card-type/dist/lib/clone.js":function(i,t){Object.defineProperty(t,"__esModule",{value:!0}),t.clone=void 0;function e(r){return r?JSON.parse(JSON.stringify(r)):null}t.clone=e},"../../node_modules/credit-card-type/dist/lib/find-best-match.js":function(i,t){Object.defineProperty(t,"__esModule",{value:!0}),t.findBestMatch=void 0;function e(o){var a=o.filter(function(n){return n.matchStrength}).length;return a>0&&a===o.length}function r(o){return e(o)?o.reduce(function(a,n){return!a||Number(a.matchStrength)<Number(n.matchStrength)?n:a}):null}t.findBestMatch=r},"../../node_modules/credit-card-type/dist/lib/is-valid-input-type.js":function(i,t){Object.defineProperty(t,"__esModule",{value:!0}),t.isValidInputType=void 0;function e(r){return typeof r=="string"||r instanceof String}t.isValidInputType=e},"../../node_modules/credit-card-type/dist/lib/matches.js":function(i,t){Object.defineProperty(t,"__esModule",{value:!0}),t.matches=void 0;function e(a,n,l){var s=String(n).length,c=a.substr(0,s),m=parseInt(c,10);return n=parseInt(String(n).substr(0,c.length),10),l=parseInt(String(l).substr(0,c.length),10),m>=n&&m<=l}function r(a,n){return n=String(n),n.substring(0,a.length)===a.substring(0,n.length)}function o(a,n){return Array.isArray(n)?e(a,n[0],n[1]):r(a,n)}t.matches=o}},ya={};function ao(i){var t=ya[i];if(t!==void 0)return t.exports;var e=ya[i]={exports:{}};return ul[i].call(e.exports,e,e.exports,ao),e.exports}var ge=()=>Da.randomUUID?.()||hl(),hl=()=>"10000000-1000-4000-8000-100000000000".replace(/[018]/g,i=>(i^fl()>>i/4).toString(16)),fl=()=>(Da.getRandomValues?.(new Uint8Array(1))[0]??16*Math.random())&15,Da=typeof crypto<"u"?crypto:{},yl={LOCAL:"https://analytics.dev.data.primer.io/v1/sdk-logs",DEV:"https://analytics.dev.data.primer.io/v1/sdk-logs",STAGING:"https://analytics.staging.data.primer.io/v1/sdk-logs",SANDBOX:"https://analytics.sandbox.data.primer.io/v1/sdk-logs",PRODUCTION:"https://analytics.production.data.primer.io/v1/sdk-logs"};function gl(i,t){let r={message:i instanceof Error?i.message:typeof i=="string"?i:JSON.stringify(i)};i instanceof Error&&i.stack&&(r.stack=i.stack),t?.clientSessionId&&(r.clientSessionId=t.clientSessionId),t?.metadata&&Object.assign(r,t.metadata),t.status&&Object.assign(r,{status:t.status});let o={message:JSON.stringify(r),hostname:typeof window<"u"?window.location.hostname:"unknown",service:"web-sdk",ddsource:"lambda",ddtags:`env:${t?.environment},version:${t?.sdkVersion}`};vl(o,t)}function vl(i,{environment:t,clientSessionToken:e}){if(t==="LOCAL")return void $.debug("\u{1F436}\u{1F436}\u{1F436} [Datadog Log] \u{1F436}\u{1F436}\u{1F436}",i);let r=yl[t||"LOCAL"];if(!r)return void $.warn("No logging endpoint configured for current environment");fetch(r,{method:"POST",headers:{"Content-Type":"application/json",...e&&{Authorization:`Bearer ${e}`}},body:JSON.stringify(i)}).catch(o=>{$.error("Failed to send log event:",o)})}var O=class O{static log(t,...e){O.enabled}static info(t,...e){O.enabled}static warn(t,...e){O.enabled}static error(t,...e){O.enabled&&e.forEach(r=>{r instanceof Error&&r.toJSON})}static errorWithDatadog(t,e){let{error:r,status:o="error"}=e||{};if(O.enabled){r instanceof Error&&r.toJSON;try{let a=r||t,n={environment:O.environment,sdkVersion:O.sdkVersion,clientSessionToken:O.clientSessionToken,clientSessionId:O.clientSessionId,status:o,metadata:{sdkOptions:O.sdkOptions,clientToken:O.clientToken}};gl(a,n)}catch{O.enabled}}}static debug(t,...e){O.enabled}static table(t,e){O.enabled}static time(t){O.enabled}static timeEnd(t){O.enabled}static setEnvironment(t){O.environment=t}static setSdkVersion(t){O.sdkVersion=t}static setClientSessionToken(t){O.clientSessionToken=t}static setClientSessionId(t){O.clientSessionId=t}static setSdkOptions(t){O.sdkOptions=t}static setClientToken(t){O.clientToken=t}};T(O,"enabled",!0),T(O,"environment"),T(O,"sdkVersion"),T(O,"clientSessionToken"),T(O,"clientSessionId"),T(O,"sdkOptions"),T(O,"clientToken"),T(O,"defaultFont","font-family: Consolas, monospace; font-size: 12px;"),T(O,"brandTag","[PRIMER]"),T(O,"brandStyle",`background: #24292e; color: #ffffff; padding: 2px 6px; border-radius: 3px; font-weight: bold; margin-right: 4px; ${O.defaultFont}`),T(O,"styles",{log:`color: #4CAF50; ${O.defaultFont}`,info:`color: #2196F3; ${O.defaultFont}`,warn:`color: #FF9800; ${O.defaultFont}`,error:`color: #F44336; ${O.defaultFont}`,debug:`color: #9C27B0; ${O.defaultFont}`});var $=O,bl={LOCAL:"",DEV:"https://analytics.dev.data.primer.io/v1/sdk-analytic-events",STAGING:"https://analytics.staging.data.primer.io/v1/sdk-analytic-events",SANDBOX:"https://analytics.sandbox.data.primer.io/v1/sdk-analytic-events",PRODUCTION:"https://analytics.production.data.primer.io/v1/sdk-analytic-events"},Ki=class{constructor(){T(this,"sessionConfig",null)}initialize(t){this.sessionConfig=t}clear(){this.sessionConfig=null}getSessionConfig(){return this.sessionConfig}sendEvent(t){if(!this.sessionConfig)return void $.error("Analytics manager not initialized. Call initializeAnalytics() first.");let e={id:ge(),timestamp:Math.floor(Date.now()/1e3),sdkType:"WEB",eventName:t.eventName,checkoutSessionId:this.sessionConfig.checkoutSessionId,clientSessionId:this.sessionConfig.clientSessionId,primerAccountId:this.sessionConfig.primerAccountId,sdkVersion:this.sessionConfig.sdkVersion,userAgent:typeof navigator<"u"?navigator.userAgent:"",eventType:t.eventType,userLocale:t.userLocale,paymentMethod:t.paymentMethod,paymentId:t.paymentId,redirectDestinationUrl:t.redirectDestinationUrl,threedsProvider:t.threedsProvider,threedsResponse:t.threedsResponse};El(e,this.sessionConfig)}},$a=new Ki;function Cl(i){$a.initialize(i)}function ti(i){$a.sendEvent(i)}async function El(i,{environment:t,clientSessionToken:e}){if(t==="LOCAL")return void $.debug(`Analytics event ${i.eventName}:`,i);let r=bl[t];return fetch(r,{method:"POST",headers:{"Content-Type":"application/json",...e&&{Authorization:`Bearer ${e}`}},body:JSON.stringify(i)}).catch(o=>{$.error("Failed to send analytics event:",o)})}var Fi=function(i){return i.CARD="CARD",i.NATIVE="NATIVE",i.REDIRECT="REDIRECT",i.KLARNA="KLARNA",i.ACH="ACH",i}({}),ga=ao("../../node_modules/credit-card-type/dist/index.js");function no(i){return i.replace(/[-_]/g," ").replace(/[^\s\w]/g,"").replace(/([A-Z][a-z]+|[0-9]+)/g," $1").replace(/([A-Z]{2,})/g," $1").trim().split(/\s+/g)}function xl(i){return no(i).filter(Boolean).map(t=>t[0].toUpperCase()+t.slice(1).toLowerCase()).join(" ")}function va(i){return no(i).join("-").toLowerCase()}function ba(i){return no(i).join("_").toUpperCase()}var Va=[["AMEX","american-express"],["CARTES_BANCAIRES"],["DANKORT"],["DINERS_CLUB","diners-club"],["DISCOVER","discover"],["ENROUTE"],["ELO","elo"],["EFTPOS"],["HIPER","hiper","hiper-pay"],["HIPERCARD","hipercard"],["INTERAC"],["JCB","jcb"],["MAESTRO","maestro"],["MASTERCARD","mastercard"],["MIR","mir","mir-pay"],["OTHER",void 0,"payment-card"],["UNIONPAY","unionpay"],["VISA","visa"]],Ca=new Map(Va.map(i=>[i[0],i])),Al=new Map(Va.filter(i=>i[1]).map(i=>[i[1],i]));function so(i){let{niceType:t,type:e}=(0,ga.getTypeInfo)(va(i))||(0,ga.getTypeInfo)(Ca.get(ba(i))?.[1]||"")||{},[r,o,a]=Al.get(e)||Ca.get(ba(i))||[];return{asset:a||va(o||i),backend:r,display:t||xl(i),library:o}}var J={WORLDPAY_IDEAL:"WORLDPAY_IDEAL",STRIPE_ACH:"STRIPE_ACH",STRIPE_IDEAL:"STRIPE_IDEAL",ADYEN_KLARNA:"ADYEN_KLARNA",ADYEN_BANCONTACT_CARD:"ADYEN_BANCONTACT_CARD",PAY_NL_KAARTDIRECT:"PAY_NL_KAARTDIRECT",ADYEN_EPS:"ADYEN_EPS",ADYEN_BANCONTACT_PAYCONIQ:"ADYEN_BANCONTACT_PAYCONIQ",OMISE_PROMPTPAY:"OMISE_PROMPTPAY",OMISE_TRUEMONEY:"OMISE_TRUEMONEY",ADYEN_MULTIBANCO:"ADYEN_MULTIBANCO",PACYPAY_WECHAT:"PACYPAY_WECHAT",PACYPAY_ALIPAY:"PACYPAY_ALIPAY",ADYEN_MBWAY:"ADYEN_MBWAY",XENDIT_DANA:"XENDIT_DANA",XENDIT_SHOPEEPAY:"XENDIT_SHOPEEPAY",ADYEN_PAYSHOP:"ADYEN_PAYSHOP",ADYEN_PAYTRAIL:"ADYEN_PAYTRAIL",CLEARPAY:"CLEARPAY",RAPYD_FAST:"RAPYD_FAST",RAPYD_PROMPTPAY:"RAPYD_PROMPTPAY",RAPYD_GCASH:"RAPYD_GCASH",RAPYD_POLI:"RAPYD_POLI",RAPYD_GRABPAY:"RAPYD_GRABPAY",PRIMER_PAYPAL:"PRIMER_PAYPAL",TWOC2P:"TWOC2P",NETS:"NETS",STRIPE_GIROPAY:"STRIPE_GIROPAY",MOLLIE_GIROPAY:"MOLLIE_GIROPAY",MOLLIE_EPS:"MOLLIE_EPS",PAY_NL_EPS:"PAY_NL_EPS",PAY_NL_P24:"PAY_NL_P24",MOLLIE_P24:"MOLLIE_P24",MOLLIE_SOFORT:"MOLLIE_SOFORT",COINBASE:"COINBASE",OPENNODE:"OPENNODE",MOLLIE_GIFT_CARD:"MOLLIE_GIFTCARD",XFERS_PAYNOW:"XFERS_PAYNOW",PAYMENT_CARD:"PAYMENT_CARD",APPLE_PAY:"APPLE_PAY",GOOGLE_PAY:"GOOGLE_PAY",PAYPAL:"PAYPAL",GO_CARDLESS:"GOCARDLESS",KLARNA:"KLARNA",PAY_NL_IDEAL:"PAY_NL_IDEAL",PAY_NL_SOFORT_BANKING:"PAY_NL_SOFORT_BANKING",PAY_NL_BANCONTACT:"PAY_NL_BANCONTACT",PAY_NL_PAYPAL:"PAY_NL_PAYPAL",PAY_NL_CREDIT_TRANSFER:"PAY_NL_CREDIT_TRANSFER",PAY_NL_DIRECT_DEBIT:"PAY_NL_DIRECT_DEBIT",PAY_NL_GIROPAY:"PAY_NL_GIROPAY",PAY_NL_PAYCONIQ:"PAY_NL_PAYCONIQ",PAY_NL_RIVERTY:"PAY_NL_RIVERTY",HOOLAH:"HOOLAH",ADYEN_BLIK:"ADYEN_BLIK",ADYEN_MOBILEPAY:"ADYEN_MOBILEPAY",ADYEN_VIPPS:"ADYEN_VIPPS",ADYEN_GIROPAY:"ADYEN_GIROPAY",ADYEN_SOFORT:"ADYEN_SOFORT",ADYEN_IDEAL:"ADYEN_IDEAL",ADYEN_TRUSTLY:"ADYEN_TRUSTLY",ADYEN_ALIPAY:"ADYEN_ALIPAY",ADYEN_TWINT:"ADYEN_TWINT",ADYEN_BANK_TRANSFER:"ADYEN_BANK_TRANSFER",MOLLIE_BANCONTACT:"MOLLIE_BANCONTACT",MOLLIE_IDEAL:"MOLLIE_IDEAL",BUCKAROO_GIROPAY:"BUCKAROO_GIROPAY",BUCKAROO_EPS:"BUCKAROO_EPS",BUCKAROO_SOFORT:"BUCKAROO_SOFORT",BUCKAROO_BANCONTACT:"BUCKAROO_BANCONTACT",BUCKAROO_IDEAL:"BUCKAROO_IDEAL",ATOME:"ATOME",DLOCAL_PIX:"DLOCAL_PIX",ALMA:"ALMA"},Ua="3.7.7",Sl=Ua,Dt=typeof Buffer=="function",Ea=typeof TextDecoder=="function"?new TextDecoder:void 0,xa=typeof TextEncoder=="function"?new TextEncoder:void 0,_l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",ar=Array.prototype.slice.call(_l),jr=(i=>{let t={};return i.forEach((e,r)=>t[e]=r),t})(ar),Pl=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,q=String.fromCharCode.bind(String),Aa=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):i=>new Uint8Array(Array.prototype.slice.call(i,0)),Ya=i=>i.replace(/=/g,"").replace(/[+\/]/g,t=>t=="+"?"-":"_"),Ha=i=>i.replace(/[^A-Za-z0-9\+\/]/g,""),Ba=i=>{let t,e,r,o,a="",n=i.length%3;for(let l=0;l<i.length;){if((e=i.charCodeAt(l++))>255||(r=i.charCodeAt(l++))>255||(o=i.charCodeAt(l++))>255)throw new TypeError("invalid character found");t=e<<16|r<<8|o,a+=ar[t>>18&63]+ar[t>>12&63]+ar[t>>6&63]+ar[63&t]}return n?a.slice(0,n-3)+"===".substring(n):a},lo=typeof btoa=="function"?i=>btoa(i):Dt?i=>Buffer.from(i,"binary").toString("base64"):Ba,Gi=Dt?i=>Buffer.from(i).toString("base64"):i=>{let e=[];for(let r=0,o=i.length;r<o;r+=4096)e.push(q.apply(null,i.subarray(r,r+4096)));return lo(e.join(""))},Gr=(i,t=!1)=>t?Ya(Gi(i)):Gi(i),Tl=i=>{if(i.length<2){var t=i.charCodeAt(0);return t<128?i:t<2048?q(192|t>>>6)+q(128|63&t):q(224|t>>>12&15)+q(128|t>>>6&63)+q(128|63&t)}var t=65536+(i.charCodeAt(0)-55296)*1024+(i.charCodeAt(1)-56320);return q(240|t>>>18&7)+q(128|t>>>12&63)+q(128|t>>>6&63)+q(128|63&t)},wl=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,Fa=i=>i.replace(wl,Tl),Sa=Dt?i=>Buffer.from(i,"utf8").toString("base64"):xa?i=>Gi(xa.encode(i)):i=>lo(Fa(i)),Ot=(i,t=!1)=>t?Ya(Sa(i)):Sa(i),_a=i=>Ot(i,!0),Ml=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,kl=i=>{switch(i.length){case 4:var t=(7&i.charCodeAt(0))<<18|(63&i.charCodeAt(1))<<12|(63&i.charCodeAt(2))<<6|63&i.charCodeAt(3),e=t-65536;return q((e>>>10)+55296)+q((1023&e)+56320);case 3:return q((15&i.charCodeAt(0))<<12|(63&i.charCodeAt(1))<<6|63&i.charCodeAt(2));default:return q((31&i.charCodeAt(0))<<6|63&i.charCodeAt(1))}},za=i=>i.replace(Ml,kl),ja=i=>{if(i=i.replace(/\s+/g,""),!Pl.test(i))throw new TypeError("malformed base64.");i+="==".slice(2-(3&i.length));let t,e="",r,o;for(let a=0;a<i.length;)t=jr[i.charAt(a++)]<<18|jr[i.charAt(a++)]<<12|(r=jr[i.charAt(a++)])<<6|(o=jr[i.charAt(a++)]),e+=r===64?q(t>>16&255):o===64?q(t>>16&255,t>>8&255):q(t>>16&255,t>>8&255,255&t);return e},co=typeof atob=="function"?i=>atob(Ha(i)):Dt?i=>Buffer.from(i,"base64").toString("binary"):ja,Ka=Dt?i=>Aa(Buffer.from(i,"base64")):i=>Aa(co(i).split("").map(t=>t.charCodeAt(0))),Ga=i=>Ka(Wa(i)),Il=Dt?i=>Buffer.from(i,"base64").toString("utf8"):Ea?i=>Ea.decode(Ka(i)):i=>za(co(i)),Wa=i=>Ha(i.replace(/[-_]/g,t=>t=="-"?"+":"/")),Wi=i=>Il(Wa(i)),Nl=i=>{if(typeof i!="string")return!1;let t=i.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(t)||!/[^\s0-9a-zA-Z\-_]/.test(t)},qa=i=>({value:i,enumerable:!1,writable:!0,configurable:!0}),Ja=function(){let i=(t,e)=>Object.defineProperty(String.prototype,t,qa(e));i("fromBase64",function(){return Wi(this)}),i("toBase64",function(t){return Ot(this,t)}),i("toBase64URI",function(){return Ot(this,!0)}),i("toBase64URL",function(){return Ot(this,!0)}),i("toUint8Array",function(){return Ga(this)})},Za=function(){let i=(t,e)=>Object.defineProperty(Uint8Array.prototype,t,qa(e));i("toBase64",function(t){return Gr(this,t)}),i("toBase64URI",function(){return Gr(this,!0)}),i("toBase64URL",function(){return Gr(this,!0)})},Ll=()=>{Ja(),Za()},Xa={version:Ua,VERSION:Sl,atob:co,atobPolyfill:ja,btoa:lo,btoaPolyfill:Ba,fromBase64:Wi,toBase64:Ot,encode:Ot,encodeURI:_a,encodeURL:_a,utob:Fa,btou:za,decode:Wi,isValid:Nl,fromUint8Array:Gr,toUint8Array:Ga,extendString:Ja,extendUint8Array:Za,extendBuiltins:Ll},Wr={encode:Ol,decode:Xa.decode};function Ol(i,t={}){let{urlSafe:e=!1}=t;return Xa.encode(i,e)}function Rl(i,t){return!(i.intent!==`${t}_REDIRECTION`||!("statusUrl"in i)||!("redirectUrl"in i)||!i.redirectUrl||!i.statusUrl)}function sr(i){let t=Vl(i),e=1e3*t.exp;if(Date.now()>e)throw new Error(`${Dl}. Expiration date: ${new Date(e).toISOString()}`);return t}var Qa="The provided `clientToken`",Dl=`${Qa} has expired`,$l=`${Qa} is malformed`;function Vl(i){try{let[t,e]=i.split("."),r=e||t;return JSON.parse(Wr.decode(r))}catch{throw new Error($l)}}var qr=class{constructor(t,e){T(this,"context");T(this,"dialogProvider");this.context=t,this.dialogProvider=e}};function en(){return{javaEnabled:typeof window.navigator.javaEnabled=="function"?window.navigator.javaEnabled():!1,language:window.navigator.language,colorDepth:window.screen.colorDepth,screenHeight:window.screen.height,screenWidth:window.screen.width,timezoneOffset:new Date().getTimezoneOffset(),userAgent:window.navigator.userAgent}}function ri(i){return i?new Promise(t=>{setTimeout(t,i)}):Promise.resolve()}var qi=class extends qr{async handleRequiredAction(t){let e=t.requiredAction?.clientToken;if(!e)throw new Error("No client token provided");let r=sr(e);if(!("intent"in r)||r.intent!=="3DS_AUTHENTICATION")throw new Error("Invalid client token");let{error:o,data:a}=await this.context.pciApi.post3dsAuth(r.tokenId,{device:en()});if(o||!a||!a.authentication)throw o??new Error("Unable to authenticate");let n=a.authentication,l=a;n.responseCode==="METHOD"&&(l=await this.handleMethod(r.tokenId,n),n=l.authentication),n.responseCode==="CHALLENGE"&&(l=await this.handleChallenge(r.tokenId,n));let s=await this.context.pciApi.postResumePayment(t.id,l.resumeToken);if(s.error||!s.data)throw s.error??new Error("Unable to resume payment");return s.data}async handleMethod(t,e){let r="primer-3ds-method-box",o="primer-3ds-method-iframe",a="primer-3ds-method-form",n="threeDSMethodData",l=document.createElement("div");l.id=r,l.style.position="absolute",l.style.width="2px",l.style.height="2px",l.style.left="-10000px";let s=document.createElement("iframe");s.style.display="none",s.id=o,s.name=o,l.appendChild(s);let c=document.createElement("form"),m=document.createElement("input");m.type="hidden",m.id=n,m.name=n,m.value=Wr.encode(JSON.stringify({threeDSServerTransID:e.transactionId,threeDSMethodNotificationURL:e.notificationUrl}),{urlSafe:!0}).replace(/=+$/g,""),c.appendChild(m),c.id=a,c.name=a,c.action=e.acsMethodUrl,c.target=o,c.method="post",l.appendChild(c),document.body.appendChild(l),c.submit();let{data:y,error:h}=await this.pollStatus(e.statusUrl,"METHOD",1e3).promise;return l.remove(),h||!y?this.continueAuth(t):y}pollStatus(t,e="METHOD",r=1e3,o=66e4){let a=!0;return{promise:new Promise(async n=>{let l=setTimeout(()=>{a=!1,n({error:new Error("Operation timed out"),data:null})},o);try{for(;a;){let s=await this.context.pciApi.get3dsResumeStatus(t);if(s.error){clearTimeout(l),n(s);return}if(await ri(r),s.data&&s.data.authentication.responseCode!==e){clearTimeout(l),n(s);return}}}catch(s){clearTimeout(l),n({error:s,data:null})}}),abort:()=>{a=!1}}}async continueAuth(t){let{data:e,error:r}=await this.context.pciApi.post3dsContinue(t);return r||!e?{resumeToken:ge(),authentication:{responseCode:"SKIPPED",skippedReasonCode:"NEGOTIATION_ERROR",skippedReasonText:"Failed to negotiate with 3DS server"}}:e}async handleChallenge(t,e){let{container:r,formId:o}=this.createChallengeElements(e),a=()=>{let l=document.getElementById(o);l?l.submit():requestAnimationFrame(()=>{let s=document.getElementById(o);s&&s.submit()})},n=this.pollStatus(e.statusUrl,"CHALLENGE",2500,66e4);try{let l=this.dialogProvider.show({htmlContent:r.outerHTML,onContentReady:a});ti({eventName:"PAYMENT_THREEDS",threedsResponse:JSON.stringify(e)});let s=await Promise.race([n.promise,l.then(()=>null,c=>{throw n.abort(),c})]);return s&&s.data?(this.dialogProvider.close(),s.data):(this.dialogProvider.close(),this.continueAuth(t))}catch{return n.abort(),this.continueAuth(t)}}createChallengeElements(t){this.inject3DSChallengeCSS();let e=`3ds-challenge-iframe-${ge()}`,r=`3ds-challenge-form-${ge()}`,o=/^1/.test(t.protocolVersion),a=document.createElement("div");a.className="challenge-container";let n=document.createElement("form");if(n.id=r,n.className="challenge-form",n.action=t.acsChallengeUrl,n.target=e,n.method="post",o){let s=document.createElement("input");s.type="hidden",s.name="PaReq",s.id="PaReq",s.value=t.acsChallengeData||"",n.appendChild(s);let c=document.createElement("input");c.type="hidden",c.name="TermUrl",c.id="TermUrl",c.value=t.notificationUrl||"",n.appendChild(c)}else{let s=Wr.encode(JSON.stringify({threeDSServerTransID:t.transactionId,acsTransID:t.acsTransactionId,messageVersion:t.protocolVersion,messageType:"CReq",challengeWindowSize:"05"}),{urlSafe:!0}),c=document.createElement("input");c.type="hidden",c.name="creq",c.id="creq",c.value=s,n.appendChild(c);let m=document.createElement("input");m.type="hidden",m.name="threeDSSessionData",m.id="threeDSSessionData",m.value="",n.appendChild(m)}let l=document.createElement("iframe");return l.id=e,l.name=e,l.className="challenge-iframe",l.setAttribute("frameborder","0"),l.title="3D Secure Challenge",a.appendChild(n),a.appendChild(l),{container:a,formId:r}}inject3DSChallengeCSS(){let t="primer-3ds-challenge-dialog-styles";if(document.getElementById(t))return;let e=`
4
4
  primer-dialog[size="large"] .challenge-container {
5
5
  margin-top: 24px;
6
6
  width: 100%;
@@ -19,7 +19,7 @@ import{a as fo,b as d,c as _}from"./chunks/chunk.DV3REKZU.js";var sr=class{const
19
19
  background-color: #ffffff;
20
20
  flex: 1;
21
21
  }
22
- `,r=document.createElement("style");r.id=t,r.textContent=e,document.head.appendChild(r)}},Fi=class extends Fr{async handleRequiredAction(t){let e=t.requiredAction?.clientToken;if(!e)throw new Error("No client token provided");let r=er(e);if(!("intent"in r)||r.intent!=="PROCESSOR_3DS")throw new Error("Invalid client token");let{statusUrl:o,redirectUrl:n}=r;if(!o||!n)throw new Error("Missing statusUrl or redirectUrl in client token");let a=await this.handleProcessor3DS(o,n);if(!a)throw new Error("Failed to get resume token from processor 3DS flow");let l=await this.context.pciApi.postResumePayment(t.id,a);if(l.error||!l.data)throw l.error??new Error("Unable to resume payment");return l.data}async handleProcessor3DS(t,e){let{container:r,setIframeSrc:o}=this.createIframeContainer(e),n=this.pollStatus(t);try{let a=this.dialogProvider.show({htmlContent:r.outerHTML,onContentReady:o}),l=await Promise.race([n.promise,a.then(()=>null,s=>{throw n.abort(),s})]);if(qr({eventName:"PAYMENT_THREEDS",threedsResponse:JSON.stringify(l?.data)}),l&&l.data&&l.data.id)return this.dialogProvider.close(),l.data.id;throw this.dialogProvider.close(),new Error("Processor 3DS flow was cancelled or failed")}catch(a){throw n.abort(),this.dialogProvider.close(),a}}createIframeContainer(t){this.injectProcessor3DSCSS();let e=document.createElement("div");e.className="processor-3ds-container";let r=`processor-3ds-iframe-${ge()}`,o=document.createElement("iframe");return o.id=r,o.className="processor-3ds-iframe",o.setAttribute("frameborder","0"),o.setAttribute("allow","payment"),o.setAttribute("sandbox","allow-forms allow-scripts allow-same-origin allow-top-navigation"),o.title="Processor 3DS Authentication",e.appendChild(o),{container:e,setIframeSrc:()=>{let a=document.getElementById(r);a&&t&&(a.src=t)}}}pollStatus(t,e=100,r=72e5){let o=!0;return{promise:new Promise(async n=>{let a=setTimeout(()=>{o=!1,n({id:ge(),status:408,error:new Error("Processor 3DS operation timed out"),data:void 0,headers:{}})},r);try{for(;o;){let l=await this.context.pciApi.getResumeStatus(t);if(l.error){clearTimeout(a),n(l);return}if(l.data&&l.data.id){let s=l.data;if(s.status&&s.status!=="PENDING"){clearTimeout(a),n(l);return}}await Jr(e)}}catch(l){clearTimeout(a),n({id:ge(),status:500,error:l instanceof Error?l:new Error("Unknown error"),data:void 0,headers:{}})}}),abort:()=>{o=!1}}}injectProcessor3DSCSS(){let t="primer-processor-3ds-dialog-styles";if(document.getElementById(t))return;let e=`
22
+ `,r=document.createElement("style");r.id=t,r.textContent=e,document.head.appendChild(r)}},Ji=class extends qr{async handleRequiredAction(t){let e=t.requiredAction?.clientToken;if(!e)throw new Error("No client token provided");let r=sr(e);if(!("intent"in r)||r.intent!=="PROCESSOR_3DS")throw new Error("Invalid client token");let{statusUrl:o,redirectUrl:a}=r;if(!o||!a)throw new Error("Missing statusUrl or redirectUrl in client token");let n=await this.handleProcessor3DS(o,a);if(!n)throw new Error("Failed to get resume token from processor 3DS flow");let l=await this.context.pciApi.postResumePayment(t.id,n);if(l.error||!l.data)throw l.error??new Error("Unable to resume payment");return l.data}async handleProcessor3DS(t,e){let{container:r,setIframeSrc:o}=this.createIframeContainer(e),a=this.pollStatus(t);try{let n=this.dialogProvider.show({htmlContent:r.outerHTML,onContentReady:o}),l=await Promise.race([a.promise,n.then(()=>null,s=>{throw a.abort(),s})]);if(ti({eventName:"PAYMENT_THREEDS",threedsResponse:JSON.stringify(l?.data)}),l&&l.data&&l.data.id)return this.dialogProvider.close(),l.data.id;throw this.dialogProvider.close(),new Error("Processor 3DS flow was cancelled or failed")}catch(n){throw a.abort(),this.dialogProvider.close(),n}}createIframeContainer(t){this.injectProcessor3DSCSS();let e=document.createElement("div");e.className="processor-3ds-container";let r=`processor-3ds-iframe-${ge()}`,o=document.createElement("iframe");return o.id=r,o.className="processor-3ds-iframe",o.setAttribute("frameborder","0"),o.setAttribute("allow","payment"),o.setAttribute("sandbox","allow-forms allow-scripts allow-same-origin allow-top-navigation"),o.title="Processor 3DS Authentication",e.appendChild(o),{container:e,setIframeSrc:()=>{let n=document.getElementById(r);n&&t&&(n.src=t)}}}pollStatus(t,e=100,r=72e5){let o=!0;return{promise:new Promise(async a=>{let n=setTimeout(()=>{o=!1,a({id:ge(),status:408,error:new Error("Processor 3DS operation timed out"),data:void 0,headers:{}})},r);try{for(;o;){let l=await this.context.pciApi.getResumeStatus(t);if(l.error){clearTimeout(n),a(l);return}if(l.data&&l.data.id){let s=l.data;if(s.status&&s.status!=="PENDING"){clearTimeout(n),a(l);return}}await ri(e)}}catch(l){clearTimeout(n),a({id:ge(),status:500,error:l instanceof Error?l:new Error("Unknown error"),data:void 0,headers:{}})}}),abort:()=>{o=!1}}}injectProcessor3DSCSS(){let t="primer-processor-3ds-dialog-styles";if(document.getElementById(t))return;let e=`
23
23
  primer-dialog[size="large"] .processor-3ds-container {
24
24
  margin-top: 24px;
25
25
  width: 100%;
@@ -38,10 +38,10 @@ import{a as fo,b as d,c as _}from"./chunks/chunk.DV3REKZU.js";var sr=class{const
38
38
  background-color: #ffffff;
39
39
  flex: 1;
40
40
  }
41
- `,r=document.createElement("style");r.id=t,r.textContent=e,document.head.appendChild(r)}},Tl={CONTAINER_NOT_FOUND:"CONTAINER_NOT_FOUND"},zr={MISSING_PARAMETER:"MISSING_PARAMETER",INVALID_PARAMETER:"INVALID_PARAMETER",INVALID_USAGE:"INVALID_USAGE"},ye={UNAUTHORIZED:"UNAUTHORIZED",FORBIDDEN:"FORBIDDEN",NOT_FOUND:"NOT_FOUND",CONFLICT:"CONFLICT",REQUEST_TIMEOUT:"REQUEST_TIMEOUT",VALIDATION_ERROR:"REQUEST_VALIDATION_ERROR",SERVER_ERROR:"SERVER_ERROR",BAD_REQUEST:"BAD_REQUEST",REQUEST_ERROR:"REQUEST_ERROR",UNEXPECTED:"UNEXPECTED"},re={PAYMENT_CREATION_ABORTED:"PAYMENT_CREATION_ABORTED",PAYMENT_FAILED:"PAYMENT_FAILED",RESUME_FAILED:"RESUME_FAILED",TOKENIZATION_ERROR:"TOKENIZATION_ERROR"},bn={MISSING_CLIENT_TOKEN:"MISSING_CLIENT_TOKEN",INVALID_CLIENT_TOKEN:"INVALID_CLIENT_TOKEN"},Ur={VAULT_ERROR:"VAULT_ERROR",TOKENIZATION_ERROR:"TOKENIZATION_ERROR"},ro=function(i){return i.REQUEST_ERROR="RequestError",i.TOKENIZATION_ERROR="TokenizationError",i.CLIENT_ERROR="ClientError",i.REQUEST_VALIDATION_ERROR="RequestValidationError",i.CONFIGURATION_ERROR="ConfigurationError",i.PCI_ERROR="PciError",i}({}),tr=class extends Error{constructor(e,r,o,n){super(r);_(this,"code");_(this,"error");this.name=e,this.code=o,this.error=n}toJSON(){return{name:this.name,message:this.message,code:this.code,stack:this.stack}}},rr=class extends tr{constructor({message:e,error:r,response:o,code:n=ye.REQUEST_ERROR}){let a=r??new Error(e);super(ro.REQUEST_ERROR,e,n,a);_(this,"response");this.response=o}toJSON(){return{name:this.name,message:this.message,response:this.response,code:this.code,stack:this.stack}}},at=class extends tr{constructor({message:e,error:r,code:o=ye.UNEXPECTED,suggestion:n,paymentMethod:a}){let l=r??new Error(e);super(ro.TOKENIZATION_ERROR,e,o,l);_(this,"suggestion");_(this,"paymentMethod");this.suggestion=n,this.paymentMethod=a}toJSON(){return{name:this.name,message:this.message,code:this.code,paymentMethod:this.paymentMethod,suggestion:this.suggestion,stack:this.stack}}},H=class extends tr{constructor({message:e,error:r,code:o=ye.UNEXPECTED,suggestion:n,paymentMethod:a}){let l=r??new Error(e);super(ro.CLIENT_ERROR,e,o,l);_(this,"suggestion");_(this,"paymentMethod");this.suggestion=n,this.paymentMethod=a}toJSON(){return{name:this.name,message:this.message,code:this.code,paymentMethod:this.paymentMethod,suggestion:this.suggestion,stack:this.stack}}},xt=class{constructor(t,e){_(this,"config");_(this,"context");this.config=Object.freeze(t),this.context=e}async tokenizeVaulted(t){let{error:e,data:r}=await this.context.pciApi.postPaymentInstrumentsExchange(t);if(e||!r)throw e??new H({code:re.TOKENIZATION_ERROR,message:"Unable to tokenize vaulted payment method",paymentMethod:this.config.type});return r}async setup(){return!0}async start(){}async render(t){R.warn(`Render not implemented for ${this.config.type}`)}async handleRequiredAction(t,e){return t.requiredAction?.name==="3DS_AUTHENTICATION"?new Bi(this.context,e).handleRequiredAction(t):t.requiredAction?.name==="PROCESSOR_3DS"?new Fi(this.context,e).handleRequiredAction(t):t}async createPayment(t){let{error:e,data:r}=await this.context.pciApi.postCreatePayment(t);if(e||!r)throw e??new H({code:re.PAYMENT_FAILED,message:"Unable to create payment"});return r.requiredAction?.clientToken&&this.context.updateClientToken(r.requiredAction.clientToken),r}async resumePayment(t,e){let{error:r,data:o}=await this.context.pciApi.postResumePayment(t,e);if(r||!o)throw r??new H({code:re.RESUME_FAILED,message:"Unable to resume payment"});return o}};function wl(i){return i&&i.includes("_")?i.split("_").join("-"):i}var Ml=JSON.parse('{"USD":{"b":2},"CAD":{"b":2},"EUR":{"b":2},"AED":{"b":2},"AFN":{"b":0},"ALL":{"b":0},"AMD":{"b":0},"ARS":{"b":2},"AUD":{"b":2},"AZN":{"b":2},"BAM":{"b":2},"BDT":{"b":2},"BGN":{"b":2},"BHD":{"b":3},"BIF":{"b":0},"BND":{"b":2},"BOB":{"b":2},"BRL":{"b":2},"BWP":{"b":2},"BYN":{"b":2},"BZD":{"b":2},"CDF":{"b":2},"CHF":{"b":2},"CLP":{"b":0},"CNY":{"b":2},"COP":{"b":2},"CRC":{"b":2},"CVE":{"b":2},"CZK":{"b":2},"DJF":{"b":0},"DKK":{"b":2},"DOP":{"b":2},"DZD":{"b":2},"EEK":{"b":2},"EGP":{"b":2},"ERN":{"b":2},"ETB":{"b":2},"GBP":{"b":2},"GEL":{"b":2},"GHS":{"b":2},"GNF":{"b":0},"GTQ":{"b":2},"HKD":{"b":2},"HNL":{"b":2},"HRK":{"b":2},"HUF":{"b":2},"IDR":{"b":2},"ILS":{"b":2},"INR":{"b":2},"IQD":{"b":0},"IRR":{"b":0},"ISK":{"b":0},"JMD":{"b":2},"JOD":{"b":3},"JPY":{"b":0},"KES":{"b":2},"KHR":{"b":2},"KMF":{"b":0},"KRW":{"b":0},"KWD":{"b":3},"KZT":{"b":2},"LBP":{"b":0},"LKR":{"b":2},"LTL":{"b":2},"LVL":{"b":2},"LYD":{"b":3},"MAD":{"b":2},"MDL":{"b":2},"MGA":{"b":0},"MKD":{"b":2},"MMK":{"b":0},"MOP":{"b":2},"MUR":{"b":0},"MXN":{"b":2},"MYR":{"b":2},"MZN":{"b":2},"NAD":{"b":2},"NGN":{"b":2},"NIO":{"b":2},"NOK":{"b":2},"NPR":{"b":2},"NZD":{"b":2},"OMR":{"b":3},"PAB":{"b":2},"PEN":{"b":2},"PHP":{"b":2},"PKR":{"b":0},"PLN":{"b":2},"PYG":{"b":0},"QAR":{"b":2},"RON":{"b":2},"RSD":{"b":2},"RUB":{"b":2},"RWF":{"b":0},"SAR":{"b":2},"SDG":{"b":2},"SEK":{"b":2},"SGD":{"b":2},"SOS":{"b":0},"SYP":{"b":0},"THB":{"b":2},"TND":{"b":3},"TOP":{"b":2},"TRY":{"b":2},"TTD":{"b":2},"TWD":{"b":2},"TZS":{"b":0},"UAH":{"b":2},"UGX":{"b":0},"UYU":{"b":2},"UZS":{"b":0},"VEF":{"b":2},"VND":{"b":0},"XAF":{"b":0},"XOF":{"b":0},"YER":{"b":0},"ZAR":{"b":2},"ZMK":{"b":0},"ZWL":{"b":0}}'),Il=2,kl=Ml;function Nl(i){if(!i)return null;let t=kl[i];return t?{decimalDigits:t.b}:null}function Gn(i,t,e){let r=wl(i),o=Nl(e)?.decimalDigits??Il;function n(a){return new Intl.NumberFormat(r,{style:"currency",currency:e,currencyDisplay:a}).format(t/10**o)}try{return n("narrowSymbol")}catch{return n("symbol")}}function zi(i,t){return Gn("en",i,t).replace(/[^0-9.]/g,"").replace(/(\..*)\./g,"$1")}var Cn=5,jr=class extends xt{constructor(){super(...arguments);_(this,"applePaySession",null);_(this,"callbacks",{onStart:()=>{},onError:()=>{},onSuccess:()=>{}})}setCallbacks(e){this.callbacks=e}async tokenize(){throw new Error("ApplePay does not support direct tokenization")}async setup(){try{if(!ApplePaySession)return R.warn("Apple Pay is not available in this browser context"),!1;if(!ApplePaySession.supportsVersion(Cn))return R.warn("Apple Pay version not supported by this device"),!1;if(!ApplePaySession.canMakePayments())return R.warn("This device cannot make Apple Pay payments"),!1;let e=window.location.hostname;if(!(this.config.options.merchantDomains||[]).includes(e))return R.warn(`Apple Pay has not been configured for domain "${e}"`),!1}catch(e){return R.errorWithDatadog("Failed to initialize Apple Pay",{error:e}),!1}return!0}async render(e){let r=document.createElement("button");r.setAttribute("style","display: inline-block;width: 100%;cursor: pointer;height: 40px;-webkit-appearance: -apple-pay-button;-apple-pay-button-type: plain;-apple-pay-button-style: black"),r.setAttribute("type","button"),r.classList.add("primer-apple-pay-button"),r.addEventListener("click",this.handleButtonClick.bind(this)),e.appendChild(r)}async handleButtonClick(){try{this.callbacks.onStart(),this.applePaySession=new ApplePaySession(Cn,this.createPaymentRequest()),this.applePaySession.onvalidatemerchant=this.handleValidateMerchant.bind(this),this.applePaySession.onpaymentauthorized=this.handlePaymentAuthorized.bind(this),this.applePaySession.onpaymentmethodselected=this.handlePaymentMethodSelected.bind(this),this.applePaySession.oncancel=this.handleCancel.bind(this),this.applePaySession.begin()}catch(e){R.errorWithDatadog("Error initiating Apple Pay session",{error:e})}}async handleValidateMerchant({validationURL:e}){if(this.applePaySession)try{let{data:r,error:o}=await this.context.coreApi.createApplePaySession({validationUrl:e,paymentMethodConfigId:this.config.id,merchantDomain:window.location.hostname});if(o||!r||!this.applePaySession)throw o??new Error("Failed to validate merchant");this.applePaySession.completeMerchantValidation(r)}catch(r){R.warn("Apple Pay merchant validation failed:",r),this.abort()}}async handlePaymentMethodSelected(){if(this.applePaySession)try{let{merchantAmount:e,totalOrderAmount:r,currencyCode:o}=this.context.configuration.clientSession.order;this.applePaySession.completePaymentMethodSelection({newTotal:{label:this.config.options.merchantName,amount:zi(e??r,o),type:"final"}})}catch(e){R.errorWithDatadog("Error handling payment method selection",{error:e}),this.abort()}}async handlePaymentAuthorized({payment:e}){if(this.applePaySession)try{let r={paymentMethodConfigId:this.config.id,token:e.token},o=await this.context.pciApi.postPaymentInstruments(r),n=await this.createPayment(o.data.token),a=await this.handleRequiredAction(n,this.context.dialogProvider);a.status==="SUCCESS"?(this.applePaySession.completePayment(ApplePaySession.STATUS_SUCCESS),this.callbacks.onSuccess(a)):(this.applePaySession.completePayment(ApplePaySession.STATUS_FAILURE),this.callbacks.onError()),this.applePaySession=null}catch(r){R.errorWithDatadog("Error handling payment authorization",{error:r}),this.applePaySession&&(this.applePaySession.completePayment(ApplePaySession.STATUS_FAILURE),this.applePaySession=null),this.callbacks.onError()}}handleCancel(){this.applePaySession=null,this.callbacks.onError()}abort(){this.applePaySession?.abort(),this.applePaySession=null,this.callbacks.onError()}createPaymentRequest(){let{countryCode:e,currencyCode:r,merchantAmount:o,totalOrderAmount:n}=this.context.configuration.clientSession.order;if(!e||!r)throw new Error("Country code and currency code are required");let a=["visa","masterCard","amex"],l=zi(o??n,r);return{countryCode:e,currencyCode:r,merchantCapabilities:["supports3DS"],supportedNetworks:a,total:{amount:l,label:this.config.options.merchantName,type:"pending"}}}},Wn="https://sdk.primer.io/web/hosted-pages/v0.0.10",En=!1,Ll=`${Wn}/api-controller.html`,Ol=`${Wn}/hosted-input.html`,Rl="https://goat-assets.production.core.primer.io";function qn(i,t){return btoa(JSON.stringify({checkoutSessionId:i,name:t}))}Zi("../../node_modules/card-validator/dist/index.js");var te={cardNumber:"cardNumber",cardSecurityCode:"cardSecurityCode",cardExpiryDate:"cardExpiryDate",cardholderName:"cardholderName"};Object.values(te);function Dl(i){return{cardNumber:Yr(i,te.cardNumber),cardSecurityCode:Yr(i,te.cardSecurityCode),cardExpiryDate:Yr(i,te.cardExpiryDate),cardholderName:Yr(i,te.cardholderName)}}function Yr(i,t){let e=document.createElement("iframe"),r=qn(i,t);return e.src=`${Ol}#${r}`,e.setAttribute("tabindex","0"),e.setAttribute("frameBorder","0"),e.style.border="none",e.style.boxSizing="border-box",e.style.height="20px",e.style.width="100%",e.style.colorScheme="auto",e}var Kr=class extends xt{constructor(e,r){super(e,r);_(this,"iframes");this.iframes=Dl(r.checkoutSessionId)}async tokenize(){let{error:e,data:r}=await this.context.pciApi.postPaymentInstruments("pci-card-form-data");if(e||!r)throw e??new at({code:re.TOKENIZATION_ERROR,message:"Unable to tokenize payment method",paymentMethod:q.PAYMENT_CARD});return r}};function $l(i,t={}){return new Promise((e,r)=>{if(document.querySelector(`script[src="${i}"]`))return void e();let o=document.createElement("script");o.src=i,Object.entries(t).forEach(([n,a])=>{o.setAttribute(n,a)}),o.onload=()=>{e()},o.onerror=()=>{r(new Error(`Failed to load script: ${i}`))},document.head.appendChild(o)})}var An=2,xn=0,Gr=class extends xt{constructor(){super(...arguments);_(this,"client");_(this,"callbacks",{onStart:()=>{},onError:()=>{},onSuccess:()=>{}});_(this,"allowedPaymentMethod",{type:"CARD",parameters:{allowedAuthMethods:["PAN_ONLY"],allowedCardNetworks:["AMEX","DISCOVER","INTERAC","JCB","MASTERCARD","VISA"]}})}setCallbacks(e){this.callbacks=e}async tokenize(){throw new at({code:re.TOKENIZATION_ERROR,message:"Google Pay does not support direct tokenization",paymentMethod:q.GOOGLE_PAY})}async setup(){try{await $l("https://pay.google.com/gp/p/js/pay.js")}catch{return!1}if(!window.google||!window.google.payments)return R.error("Google Pay is not available in this browser context"),!1;if(this.client=new google.payments.api.PaymentsClient({environment:"TEST"}),!this.client.isReadyToPay(this.buildIsReadyToPayRequest()))return!1;let{countryCode:e,currencyCode:r}=this.context.configuration.clientSession.order;if(!e)throw new H({code:zr.MISSING_PARAMETER,message:"Cannot initialize Google Pay: missing country code",paymentMethod:q.GOOGLE_PAY});if(!r)throw new H({code:zr.MISSING_PARAMETER,message:"Cannot initialize Google Pay: missing currency code",paymentMethod:q.GOOGLE_PAY});return!0}async render(e){let r=this.client.createButton({buttonType:"buy",buttonColor:"black",buttonSizeMode:"fill",buttonRootNode:e instanceof ShadowRoot?e:void 0,onClick:this.handleButtonClick.bind(this)});e.appendChild(r)}async handleButtonClick(){this.callbacks.onStart();try{let e=this.buildPaymentDataRequest(),r=await this.client.loadPaymentData(e),{data:o,error:n}=await this.context.pciApi.postPaymentInstruments({flow:"GATEWAY",network:r.paymentMethodData.info?.cardNetwork??"OTHER",merchant_id:this.config.options.merchantId,encrypted_payload:Br.encode(r.paymentMethodData.tokenizationData.token)});if(n||!o)throw n??new at({code:re.TOKENIZATION_ERROR,message:"Failed to tokenize payment data",paymentMethod:q.GOOGLE_PAY});let a=await this.createPayment(o.token);a.status==="SUCCESS"?this.callbacks.onSuccess(a):this.callbacks.onError()}catch(e){throw this.callbacks.onError(),R.errorWithDatadog("Google Pay error",{error:e}),e}}async handlePaymentDataChanged(e){return{}}buildIsReadyToPayRequest(){return{apiVersion:An,apiVersionMinor:xn,allowedPaymentMethods:[this.allowedPaymentMethod]}}buildPaymentDataRequest(){let{countryCode:e,currencyCode:r,merchantAmount:o,totalOrderAmount:n}=this.context.configuration.clientSession.order;return{apiVersion:An,apiVersionMinor:xn,transactionInfo:{countryCode:e,currencyCode:r,displayItems:[],totalPriceStatus:"FINAL",totalPrice:zi(o??n,r),totalPriceLabel:"Total"},merchantInfo:{merchantId:this.config.options.merchantId,merchantName:this.config.options.merchantName},allowedPaymentMethods:[{...this.allowedPaymentMethod,tokenizationSpecification:{type:"PAYMENT_GATEWAY",parameters:{gateway:"primer",gatewayMerchantId:this.config.options.merchantId}}}]}}};function Vl(i,t){var e={};for(var r in i)Object.prototype.hasOwnProperty.call(i,r)&&t.indexOf(r)<0&&(e[r]=i[r]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var o=0,r=Object.getOwnPropertySymbols(i);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(i,r[o])&&(e[r[o]]=i[r[o]]);return e}function Ul(i,t){var e=document.querySelector('script[src="'.concat(i,'"]'));if(e===null)return null;var r=Jn(i,t),o=e.cloneNode();if(delete o.dataset.uidAuto,Object.keys(o.dataset).length!==Object.keys(r.dataset).length)return null;var n=!0;return Object.keys(o.dataset).forEach(function(a){o.dataset[a]!==r.dataset[a]&&(n=!1)}),n?e:null}function Yl(i){var t=i.url,e=i.attributes,r=i.onSuccess,o=i.onError,n=Jn(t,e);n.onerror=o,n.onload=r,document.head.insertBefore(n,document.head.firstElementChild)}function Hl(i){var t=i.sdkBaseUrl,e=i.environment,r=Vl(i,["sdkBaseUrl","environment"]),o=t||zl(e),n=r,a=Object.keys(n).filter(function(c){return n[c]!==void 0&&n[c]!==null&&n[c]!==""}).reduce(function(c,m){var f=n[m].toString();return m=Bl(m),m.substring(0,4)==="data"||m==="crossorigin"?c.attributes[m]=f:c.queryParams[m]=f,c},{queryParams:{},attributes:{}}),l=a.queryParams,s=a.attributes;return l["merchant-id"]&&l["merchant-id"].indexOf(",")!==-1&&(s["data-merchant-id"]=l["merchant-id"],l["merchant-id"]="*"),{url:"".concat(o,"?").concat(Fl(l)),attributes:s}}function Bl(i){var t=function(e,r){return(r?"-":"")+e.toLowerCase()};return i.replace(/[A-Z]+(?![a-z])|[A-Z]/g,t)}function Fl(i){var t="";return Object.keys(i).forEach(function(e){t.length!==0&&(t+="&"),t+=e+"="+i[e]}),t}function zl(i){return i==="sandbox"?"https://www.sandbox.paypal.com/sdk/js":"https://www.paypal.com/sdk/js"}function Jn(i,t){t===void 0&&(t={});var e=document.createElement("script");return e.src=i,Object.keys(t).forEach(function(r){e.setAttribute(r,t[r]),r==="data-csp-nonce"&&e.setAttribute("nonce",t["data-csp-nonce"])}),e}function jl(i,t){if(t===void 0&&(t=Promise),Zn(i,t),typeof document>"u")return t.resolve(null);var e=Hl(i),r=e.url,o=e.attributes,n=o["data-namespace"]||"paypal",a=Sn(n);return o["data-js-sdk-library"]||(o["data-js-sdk-library"]="paypal-js"),Ul(r,o)&&a?t.resolve(a):Kl({url:r,attributes:o},t).then(function(){var l=Sn(n);if(l)return l;throw new Error("The window.".concat(n," global variable is not available."))})}function Kl(i,t){t===void 0&&(t=Promise),Zn(i,t);var e=i.url,r=i.attributes;if(typeof e!="string"||e.length===0)throw new Error("Invalid url.");if(r!==void 0&&typeof r!="object")throw new Error("Expected attributes to be an object.");return new t(function(o,n){if(typeof document>"u")return o();Yl({url:e,attributes:r,onSuccess:function(){return o()},onError:function(){var a=new Error('The script "'.concat(e,'" failed to load. Check the HTTP status code and response body in DevTools to learn more.'));return n(a)}})})}function Sn(i){return window[i]}function Zn(i,t){if(typeof i!="object"||i===null)throw new Error("Expected an options object.");var e=i.environment;if(e&&e!=="production"&&e!=="sandbox")throw new Error('The `environment` option must be either "production" or "sandbox".');if(t!==void 0&&typeof t!="function")throw new Error("Expected PromisePonyfill to be a function.")}var Wr=class extends xt{constructor(){super(...arguments);_(this,"paypalInstance");_(this,"dataNamespace",ge());_(this,"callbacks",{onStart:()=>{},onError:()=>{},onSuccess:()=>{}})}setCallbacks(e){this.callbacks=e}async tokenize(){throw new at({message:"PayPal does not support direct tokenization",code:re.TOKENIZATION_ERROR,paymentMethod:q.PAYPAL})}async setup(){let{clientId:e,intent:r}=this.config.options;if(!e||!r)return!1;try{let o=await jl({dataNamespace:this.dataNamespace,clientId:e,currency:this.context.configuration.clientSession.order.currencyCode,components:["buttons","funding-eligibility"],disableFunding:["bancontact","card","credit"],intent:r??"authorize"});return o?(this.paypalInstance=o,!0):!1}catch{return!1}}async render(e){if(!this.paypalInstance.Buttons)return;let r=this.paypalInstance.Buttons({style:{color:"gold",shape:"rect",label:"paypal",tagline:!1},createOrder:this.handleCreateOrder.bind(this),onInit:this.handleInit.bind(this),onClick:this.handleClick.bind(this),onApprove:this.handleApprove.bind(this),onCancel:this.handleCancel.bind(this),onError:this.handleError.bind(this)});if(!r.isEligible())throw new H({message:"PayPal Buttons are not eligible for rendering",code:zr.INVALID_USAGE,paymentMethod:q.PAYPAL});await r.render(e)}handleInit(e,r){}handleClick(e,r){return qr({eventName:"PAYMENT_METHOD_SELECTION",paymentMethod:"PAYPAL"}),r.resolve()}async handleCreateOrder(){this.callbacks.onStart(),await this.context.clientSessionApi.selectPaymentMethod(this.config.type);let{data:e,error:r}=await this.context.coreApi.createPaypalOrder(this.buildCreateOrderRequestBody());if(r||!e)throw r??new H({message:"Unable to create PayPal order",code:re.PAYMENT_FAILED,paymentMethod:q.PAYPAL});return e.orderId}async handleApprove(e,r){let o=null;try{o=await r?.order?.get()??null}catch{}let{error:n,data:a}=await this.context.pciApi.postPaymentInstruments({external_payer_info:{email:o?.payment_source?.paypal?.email_address,external_payer_id:e.payerID??void 0},paypal_order_id:e.orderID,paypal_status:o?.status});if(n||!a)throw n??new at({message:"Unable to create payment instrument",code:re.TOKENIZATION_ERROR,paymentMethod:q.PAYPAL});let l=await this.createPayment(a.token);this.callbacks.onSuccess(l)}handleCancel(){this.context.clientSessionApi.unselectPaymentMethod()}handleError(e){R.errorWithDatadog("PayPal error:",e)}buildCreateOrderRequestBody(){let{order:{currencyCode:e,merchantAmount:r,totalOrderAmount:o,shipping:n,lineItems:a=[],fees:l=[]}}=this.context.configuration.clientSession;if(!e)throw new H({message:"Currency code is not provided",code:zr.MISSING_PARAMETER,paymentMethod:q.PAYPAL});let s={amount:r??o,currencyCode:e,paymentMethodConfigId:this.config.id,amountBreakdown:{}},c=!a.some(({description:m})=>!m);if(c&&(s.items=a.map(({description:m,taxAmount:f,amount:y,quantity:S})=>{let A=f?Math.floor(f/S):0;return{name:m,unit_amount:{value:y,currency_code:e},quantity:S.toString(),tax:{value:A,currency_code:e}}})),c&&a.length){let m=a.reduce((A,{amount:T,quantity:k})=>A+T*k,0),f=l?.reduce?.((A,{amount:T})=>A+(T??0),0),y=a?.reduce((A,{discountAmount:T})=>A+(T??0),0),S=a?.reduce((A,{taxAmount:T,quantity:k})=>A+(T??0*k),0);s.amountBreakdown={item_total:{value:m,currency_code:e},tax_total:{value:S,currency_code:e},handling:{value:f??0,currency_code:e},shipping:{value:n?.amount??0,currency_code:e},discount:{value:y,currency_code:e}}}return s}};async function Gl(i,t,e){try{qr({eventName:"PAYMENT_PROCESSING_STARTED",paymentMethod:i.config.type}),e||await i.start();let r=e?await i.tokenizeVaulted(e.id):await i.tokenize(),o=await i.createPayment(r.token);return await i.handleRequiredAction(o,t)}catch(r){throw r}}var ji=(i,t,e)=>{let r=e;if(t?.status==="FAILED"&&(r=new H({code:re.PAYMENT_FAILED,message:`The payment "${t.id}" was created but failed to be processed. Check the payment id ${t.id} using the Payments API or search for the payment on your Dashboard for further explanations.`})),t?.checkoutOutcome==="CHECKOUT_FAILURE"&&(r=new H({code:re.PAYMENT_FAILED,message:`The payment "${t.id}" was created but failed to be processed. Check the payment id ${t.id} using the Payments API or search for the payment on your Dashboard for further explanations.`})),t?.status==="PENDING"&&!t.requiredAction?.clientToken&&(r=new H({code:re.PAYMENT_FAILED,message:`The payment "${t.id}" ended up in a "PENDING" state without any required action. The SDK does not know how to handle this state. Check the payment id ${t.id} using the Payments API or search for the payment on your Dashboard for further explanations.`})),t?.status==="SUCCESS"&&t.checkoutOutcome!=="CHECKOUT_FAILURE"||t?.status==="PENDING"&&t.showSuccessCheckoutOnPendingPayment||t?.checkoutOutcome==="CHECKOUT_COMPLETE")return void i.onCheckoutComplete?.({payment:t});i.onCheckoutFail?.(r||new H({code:re.PAYMENT_FAILED,message:`The payment${t?.id?` "${t.id}"`:""} is in an inconsistent state without any required action. The SDK does not know how to handle this state. Please contact Primer.`}),{payment:t??void 0})},Wl=async(i,t)=>{if(!i.onBeforePaymentCreate)return!0;let e=setTimeout(()=>{R.warn("onBeforePaymentCreate did not resolve within 10 seconds. Primer SDK will remain in a loading state until `continuePaymentCreation` or `abortPaymentCreation` is called.")},1e4);return new Promise(r=>{i.onBeforePaymentCreate({paymentMethodType:t},{continuePaymentCreation:()=>{clearTimeout(e),R.log(`Continuing payment creation for ${t}`),r(!0)},abortPaymentCreation:()=>{clearTimeout(e),R.log(`Aborting payment creation for ${t}`),r(!1)}})})};async function io(i,t,e){if(!await Wl(i,t.config.type))return void i.onCheckoutFail?.(new H({message:"Payment creation aborted",code:re.PAYMENT_CREATION_ABORTED,paymentMethod:t.config.type}),{});i.onPaymentCreationStart?.();let o,n;try{n=await Gl(t,t.context.dialogProvider,e)}catch(a){o=a}finally{ji(i,n,o)}}var _n=Symbol("PROXY_MARKER");function Xn({namespace:i,onMessage:t,sendMessage:e}){function r(o,n){return new Proxy(o,{get(a,l,s){if(a[_n])return Reflect.get(a,l,s);let c=()=>{};return c[_n]=!0,r(c,[...n,l])},apply(a,l,s){return new Promise(async(c,m)=>{try{let f=[],y=s.map(k=>{if(typeof k!="function")return k;{let x=ge();return f.push(x),t(I=>{I.namespace===i&&I.sender===Vi.PROVIDER&&I.type===$i.CALLBACK&&I.id===x&&k(...I.data)}),x}}),S=ge(),A=t(k=>{k.namespace===i&&k.sender===Vi.PROVIDER&&k.type===$i.APPLY&&k.id===S&&(k.error?m(new Error(k.error)):c(k.data),A?.())}),T={type:$i.APPLY,sender:Vi.INJECTOR,id:S,path:n,args:y,callbackIds:f,timeStamp:Date.now(),namespace:i};e(T)}catch(f){m(f)}})}})}return r({},[])}var $i={APPLY:"apply",CALLBACK:"callback"},Vi={PROVIDER:"provider",INJECTOR:"injector"};function ql(i,t,e,r={}){let o=[],n="LOCAL",a={[te.cardNumber]:void 0,[te.cardExpiryDate]:void 0,[te.cardSecurityCode]:void 0,[te.cardholderName]:void 0},l=!1;t.subscribeToTeardown(()=>{l=!0});let s={createHostedInputs:()=>{let c=m=>{let f=new Map;return{getOptions:()=>{},setOptions:y=>{a[m]?.setOptions(y)},render:(y,S)=>{let A=e.iframes[m];if(!A)return R.errorWithDatadog(`No iframe found for ${m}`),Promise.resolve();let T;return T=typeof y=="string"?document.getElementById(y):y,T?(T.appendChild(A),new Promise(k=>{A.onload=()=>{if(l){R.warn(`Teardown was already called, aborting render for ${m}`),A.remove(),k();return}a[m]=Xn({namespace:`${t.checkoutSessionId}-${m}`,onMessage:x=>{let I=U=>x(U.data);return window.addEventListener("message",I),()=>window.removeEventListener("message",I)},sendMessage:x=>{A.contentWindow.postMessage(x,"*")}}),a[m].setOptions({...S,orderedAllowedCardNetworks:t.configuration.clientSession.paymentMethod.orderedAllowedCardNetworks,cardholderName:i.cardholderName??i.card?.cardholderName}),a[m].setOnBlur(()=>{try{f.get("blur")?.()}catch(x){R.errorWithDatadog(`Blur listener error for ${m}`,{error:x})}}),a[m].setOnFocus(()=>{try{f.get("focus")?.()}catch(x){R.errorWithDatadog(`Focus listener error for ${m}`,{error:x})}}),a[m].setOnInput(x=>{let I={...x,errorCode:x.error,active:x.focused};try{f.get("input")?.(I),f.get("change")?.(I)}catch(U){R.errorWithDatadog(`Input listener error for ${m}`,{error:U})}}),m===te.cardNumber&&(a[m].setBinDataApiConfig(t.configuration.binDataUrl,t.decodedClientToken.accessToken),a[m].setOnCardNetworksChange((x,I)=>{(I!==n||Jl(o,x))&&(o=x,n=I,r.onCardNetworksChange?.(Zl({networks:o,source:n},t.configuration.clientSession.paymentMethod.orderedAllowedCardNetworks)))}))},k()})):(R.error(`Container not found for ${m}:`,y),Promise.resolve())},addEventListener:(y,S)=>{f.set(y,S)},focus:()=>{let y=e.iframes[m];if(y&&y.contentWindow)try{a[m]?.focus()}catch(S){R.errorWithDatadog(`Focus send error for ${m}`,{error:S})}else R.warn(`Focus failed for ${m} - iframe not available`)},blur:()=>{let y=e.iframes[m];if(y&&y.contentWindow)try{a[m]?.blur()}catch(S){R.errorWithDatadog(`Blur send error for ${m}`,{error:S})}},setDisabled:y=>{a[m]?.setDisabled(y)},setCardholderName:y=>{a[m]?.setCardholderName(y)}}};return{cardNumberInput:c(te.cardNumber),cardholderNameInput:c(te.cardholderName),expiryInput:c(te.cardExpiryDate),cvvInput:c(te.cardSecurityCode)}},removeHostedInputs:()=>{l=!0,e.iframes.cardNumber.remove(),e.iframes.cardSecurityCode.remove(),e.iframes.cardExpiryDate.remove(),e.iframes.cardholderName.remove()},submit:async c=>{if((await s.validate()).valid)return await t.apiController.setPreferredNetwork(c?.cardNetwork),io(i,e)},validate:async()=>{let c=(await Promise.all(Object.entries(a).map(([f,y])=>y?.getFieldState().then(S=>[f,S]).catch(()=>{})))).filter(f=>f!==void 0),m=[];for(let[f,y]of c)!y.valid&&y.error&&m.push({field:f,name:f,error:y.error,message:y.error});return{valid:m.length===0,validationErrors:m}},reset:()=>{Object.values(a).forEach(c=>{c?.reset()}),t.apiController.setPreferredNetwork(void 0)},setCardholderName:c=>{try{a[te.cardholderName]?.setCardholderName(c)}catch(m){R.errorWithDatadog("SetCardholderName error",{error:m})}}};return s}function Jl(i,t){if(i.length!==t.length)return!0;let e=t.map(({network:r})=>r);return!i.every(({network:r})=>e.includes(r))}function Zl({networks:i,source:t},e){let r=e,o=new Set(r.map(s=>Qi(s).backend)),n=i.map(s=>({...s,allowed:o.has(s.network)})).sort((s,c)=>s.allowed?r.indexOf(s.network)-r.indexOf(c.network):1),a=n.filter(s=>s.allowed),l=t==="REMOTE"&&a.length>1;return{detectedCardNetworks:{items:n,preferred:a[0]},...l&&{selectableCardNetworks:{items:a,preferred:a[0]}},source:t}}function Xl(i,t,e){return{createButton:()=>({render:async r=>{e.setCallbacks({onStart:()=>{i.onBeforePaymentCreate?.({paymentMethodType:e.config.type},{continuePaymentCreation:()=>{i.onPaymentCreationStart?.()},abortPaymentCreation:()=>{}})},onSuccess(n){ji(i,n)},onError(){ji(i)}});let o=typeof r=="string"?document.getElementById(r):r;if(!o)throw new H({code:Tl.CONTAINER_NOT_FOUND,message:`Container with id "${r}" not found in the DOM.`});await e.render(o)}})}}function Ql(i,t,e){return{start:()=>io(i,e)}}function ed(i,t){return{"Content-Type":"application/json","primer-client-token":i,"primer-sdk-client":"WEB","primer-sdk-version":"0.0.0-local","primer-sdk-checkout-session-id":t,"x-api-version":"2.4"}}function Pn(i,t,e="POST",r=""){let o=i.error,n=new Error(o?.description||o?.message||"Unexpected error"),a=td(t),l=rd({summary:"Request failed for",method:e,path:r,details:JSON.stringify(i,null,2),code:a});return new rr({message:l,code:a,error:n,response:i})}var td=i=>i>=500?ye.SERVER_ERROR:{400:ye.BAD_REQUEST,401:ye.UNAUTHORIZED,403:ye.FORBIDDEN,404:ye.NOT_FOUND,408:ye.REQUEST_TIMEOUT,409:ye.CONFLICT,422:ye.VALIDATION_ERROR}[i]??ye.REQUEST_ERROR,rd=({summary:i,method:t,path:e,code:r,details:o})=>`${i} ${t} ${e} with code ${r}"
41
+ `,r=document.createElement("style");r.id=t,r.textContent=e,document.head.appendChild(r)}},Ul={CONTAINER_NOT_FOUND:"CONTAINER_NOT_FOUND"},Jr={MISSING_PARAMETER:"MISSING_PARAMETER",INVALID_PARAMETER:"INVALID_PARAMETER",INVALID_USAGE:"INVALID_USAGE"},ye={UNAUTHORIZED:"UNAUTHORIZED",FORBIDDEN:"FORBIDDEN",NOT_FOUND:"NOT_FOUND",CONFLICT:"CONFLICT",REQUEST_TIMEOUT:"REQUEST_TIMEOUT",VALIDATION_ERROR:"REQUEST_VALIDATION_ERROR",SERVER_ERROR:"SERVER_ERROR",BAD_REQUEST:"BAD_REQUEST",REQUEST_ERROR:"REQUEST_ERROR",UNEXPECTED:"UNEXPECTED"},ie={PAYMENT_CREATION_ABORTED:"PAYMENT_CREATION_ABORTED",PAYMENT_FAILED:"PAYMENT_FAILED",RESUME_FAILED:"RESUME_FAILED",TOKENIZATION_ERROR:"TOKENIZATION_ERROR"},Pa={MISSING_CLIENT_TOKEN:"MISSING_CLIENT_TOKEN",INVALID_CLIENT_TOKEN:"INVALID_CLIENT_TOKEN"},Kr={VAULT_ERROR:"VAULT_ERROR",TOKENIZATION_ERROR:"TOKENIZATION_ERROR"},po=function(i){return i.REQUEST_ERROR="RequestError",i.TOKENIZATION_ERROR="TokenizationError",i.CLIENT_ERROR="ClientError",i.REQUEST_VALIDATION_ERROR="RequestValidationError",i.CONFIGURATION_ERROR="ConfigurationError",i.PCI_ERROR="PciError",i}({}),lr=class extends Error{constructor(e,r,o,a){super(r);T(this,"code");T(this,"error");this.name=e,this.code=o,this.error=a}toJSON(){return{name:this.name,message:this.message,code:this.code,stack:this.stack}}},dr=class extends lr{constructor({message:e,error:r,response:o,code:a=ye.REQUEST_ERROR}){let n=r??new Error(e);super(po.REQUEST_ERROR,e,a,n);T(this,"response");this.response=o}toJSON(){return{name:this.name,message:this.message,response:this.response,code:this.code,stack:this.stack}}},st=class extends lr{constructor({message:e,error:r,code:o=ye.UNEXPECTED,suggestion:a,paymentMethod:n}){let l=r??new Error(e);super(po.TOKENIZATION_ERROR,e,o,l);T(this,"suggestion");T(this,"paymentMethod");this.suggestion=a,this.paymentMethod=n}toJSON(){return{name:this.name,message:this.message,code:this.code,paymentMethod:this.paymentMethod,suggestion:this.suggestion,stack:this.stack}}},H=class extends lr{constructor({message:e,error:r,code:o=ye.UNEXPECTED,suggestion:a,paymentMethod:n}){let l=r??new Error(e);super(po.CLIENT_ERROR,e,o,l);T(this,"suggestion");T(this,"paymentMethod");this.suggestion=a,this.paymentMethod=n}toJSON(){return{name:this.name,message:this.message,code:this.code,paymentMethod:this.paymentMethod,suggestion:this.suggestion,stack:this.stack}}},_t=class{constructor(t,e){T(this,"config");T(this,"context");this.config=Object.freeze(t),this.context=e}async tokenizeVaulted(t){let{error:e,data:r}=await this.context.pciApi.postPaymentInstrumentsExchange(t);if(e||!r)throw e??new H({code:ie.TOKENIZATION_ERROR,message:"Unable to tokenize vaulted payment method",paymentMethod:this.config.type});return r}async setup(){return!0}async start(){}async render(t){$.warn(`Render not implemented for ${this.config.type}`)}async handleRequiredAction(t,e){return t.requiredAction?.name==="3DS_AUTHENTICATION"?new qi(this.context,e).handleRequiredAction(t):t.requiredAction?.name==="PROCESSOR_3DS"?new Ji(this.context,e).handleRequiredAction(t):t}async createPayment(t){let{error:e,data:r}=await this.context.pciApi.postCreatePayment(t);if(e||!r)throw e??new H({code:ie.PAYMENT_FAILED,message:"Unable to create payment"});return r.requiredAction?.clientToken&&this.context.updateClientToken(r.requiredAction.clientToken),r}async resumePayment(t,e){let{error:r,data:o}=await this.context.pciApi.postResumePayment(t,e);if(r||!o)throw r??new H({code:ie.RESUME_FAILED,message:"Unable to resume payment"});return o}};function Yl(i){return i&&i.includes("_")?i.split("_").join("-"):i}var Hl=JSON.parse('{"USD":{"b":2},"CAD":{"b":2},"EUR":{"b":2},"AED":{"b":2},"AFN":{"b":0},"ALL":{"b":0},"AMD":{"b":0},"ARS":{"b":2},"AUD":{"b":2},"AZN":{"b":2},"BAM":{"b":2},"BDT":{"b":2},"BGN":{"b":2},"BHD":{"b":3},"BIF":{"b":0},"BND":{"b":2},"BOB":{"b":2},"BRL":{"b":2},"BWP":{"b":2},"BYN":{"b":2},"BZD":{"b":2},"CDF":{"b":2},"CHF":{"b":2},"CLP":{"b":0},"CNY":{"b":2},"COP":{"b":2},"CRC":{"b":2},"CVE":{"b":2},"CZK":{"b":2},"DJF":{"b":0},"DKK":{"b":2},"DOP":{"b":2},"DZD":{"b":2},"EEK":{"b":2},"EGP":{"b":2},"ERN":{"b":2},"ETB":{"b":2},"GBP":{"b":2},"GEL":{"b":2},"GHS":{"b":2},"GNF":{"b":0},"GTQ":{"b":2},"HKD":{"b":2},"HNL":{"b":2},"HRK":{"b":2},"HUF":{"b":2},"IDR":{"b":2},"ILS":{"b":2},"INR":{"b":2},"IQD":{"b":0},"IRR":{"b":0},"ISK":{"b":0},"JMD":{"b":2},"JOD":{"b":3},"JPY":{"b":0},"KES":{"b":2},"KHR":{"b":2},"KMF":{"b":0},"KRW":{"b":0},"KWD":{"b":3},"KZT":{"b":2},"LBP":{"b":0},"LKR":{"b":2},"LTL":{"b":2},"LVL":{"b":2},"LYD":{"b":3},"MAD":{"b":2},"MDL":{"b":2},"MGA":{"b":0},"MKD":{"b":2},"MMK":{"b":0},"MOP":{"b":2},"MUR":{"b":0},"MXN":{"b":2},"MYR":{"b":2},"MZN":{"b":2},"NAD":{"b":2},"NGN":{"b":2},"NIO":{"b":2},"NOK":{"b":2},"NPR":{"b":2},"NZD":{"b":2},"OMR":{"b":3},"PAB":{"b":2},"PEN":{"b":2},"PHP":{"b":2},"PKR":{"b":0},"PLN":{"b":2},"PYG":{"b":0},"QAR":{"b":2},"RON":{"b":2},"RSD":{"b":2},"RUB":{"b":2},"RWF":{"b":0},"SAR":{"b":2},"SDG":{"b":2},"SEK":{"b":2},"SGD":{"b":2},"SOS":{"b":0},"SYP":{"b":0},"THB":{"b":2},"TND":{"b":3},"TOP":{"b":2},"TRY":{"b":2},"TTD":{"b":2},"TWD":{"b":2},"TZS":{"b":0},"UAH":{"b":2},"UGX":{"b":0},"UYU":{"b":2},"UZS":{"b":0},"VEF":{"b":2},"VND":{"b":0},"XAF":{"b":0},"XOF":{"b":0},"YER":{"b":0},"ZAR":{"b":2},"ZMK":{"b":0},"ZWL":{"b":0}}'),Bl=2,Fl=Hl;function zl(i){if(!i)return null;let t=Fl[i];return t?{decimalDigits:t.b}:null}function tn(i,t,e){let r=Yl(i),o=zl(e)?.decimalDigits??Bl;function a(n){return new Intl.NumberFormat(r,{style:"currency",currency:e,currencyDisplay:n}).format(t/10**o)}try{return a("narrowSymbol")}catch{return a("symbol")}}function Zi(i,t){return tn("en",i,t).replace(/[^0-9.]/g,"").replace(/(\..*)\./g,"$1")}var Ta=5,Zr=class extends _t{constructor(){super(...arguments);T(this,"applePaySession",null);T(this,"callbacks",{onStart:()=>{},onError:()=>{},onSuccess:()=>{}})}setCallbacks(e){this.callbacks=e}async tokenize(){throw new Error("ApplePay does not support direct tokenization")}async setup(){try{if(!ApplePaySession)return $.warn("Apple Pay is not available in this browser context"),!1;if(!ApplePaySession.supportsVersion(Ta))return $.warn("Apple Pay version not supported by this device"),!1;if(!ApplePaySession.canMakePayments())return $.warn("This device cannot make Apple Pay payments"),!1;let e=window.location.hostname;if(!(this.config.options.merchantDomains||[]).includes(e))return $.warn(`Apple Pay has not been configured for domain "${e}"`),!1}catch(e){return $.errorWithDatadog("Failed to initialize Apple Pay",{error:e}),!1}return!0}async render(e){let r=document.createElement("button");r.setAttribute("style","display: inline-block;width: 100%;cursor: pointer;height: 40px;-webkit-appearance: -apple-pay-button;-apple-pay-button-type: plain;-apple-pay-button-style: black"),r.setAttribute("type","button"),r.classList.add("primer-apple-pay-button"),r.addEventListener("click",this.handleButtonClick.bind(this)),e.appendChild(r)}async handleButtonClick(){try{this.callbacks.onStart(),this.applePaySession=new ApplePaySession(Ta,this.createPaymentRequest()),this.applePaySession.onvalidatemerchant=this.handleValidateMerchant.bind(this),this.applePaySession.onpaymentauthorized=this.handlePaymentAuthorized.bind(this),this.applePaySession.onpaymentmethodselected=this.handlePaymentMethodSelected.bind(this),this.applePaySession.oncancel=this.handleCancel.bind(this),this.applePaySession.begin()}catch(e){$.errorWithDatadog("Error initiating Apple Pay session",{error:e})}}async handleValidateMerchant({validationURL:e}){if(this.applePaySession)try{let{data:r,error:o}=await this.context.coreApi.createApplePaySession({validationUrl:e,paymentMethodConfigId:this.config.id,merchantDomain:window.location.hostname});if(o||!r||!this.applePaySession)throw o??new Error("Failed to validate merchant");this.applePaySession.completeMerchantValidation(r)}catch(r){$.warn("Apple Pay merchant validation failed:",r),this.abort()}}async handlePaymentMethodSelected(){if(this.applePaySession)try{let{merchantAmount:e,totalOrderAmount:r,currencyCode:o}=this.context.configuration.clientSession.order;this.applePaySession.completePaymentMethodSelection({newTotal:{label:this.config.options.merchantName,amount:Zi(e??r,o),type:"final"}})}catch(e){$.errorWithDatadog("Error handling payment method selection",{error:e}),this.abort()}}async handlePaymentAuthorized({payment:e}){if(this.applePaySession)try{let r={paymentMethodConfigId:this.config.id,token:e.token},o=await this.context.pciApi.postPaymentInstruments(r),a=await this.createPayment(o.data.token),n=await this.handleRequiredAction(a,this.context.dialogProvider);n.status==="SUCCESS"?(this.applePaySession.completePayment(ApplePaySession.STATUS_SUCCESS),this.callbacks.onSuccess(n)):(this.applePaySession.completePayment(ApplePaySession.STATUS_FAILURE),this.callbacks.onError()),this.applePaySession=null}catch(r){$.errorWithDatadog("Error handling payment authorization",{error:r}),this.applePaySession&&(this.applePaySession.completePayment(ApplePaySession.STATUS_FAILURE),this.applePaySession=null),this.callbacks.onError()}}handleCancel(){this.applePaySession=null,this.callbacks.onError()}abort(){this.applePaySession?.abort(),this.applePaySession=null,this.callbacks.onError()}createPaymentRequest(){let{countryCode:e,currencyCode:r,merchantAmount:o,totalOrderAmount:a}=this.context.configuration.clientSession.order;if(!e||!r)throw new Error("Country code and currency code are required");let n=["visa","masterCard","amex"],l=Zi(o??a,r);return{countryCode:e,currencyCode:r,merchantCapabilities:["supports3DS"],supportedNetworks:n,total:{amount:l,label:this.config.options.merchantName,type:"pending"}}}},rn="https://sdk.primer.io/web/hosted-pages/v0.0.11",wa=!1,jl=`${rn}/api-controller.html`,Kl=`${rn}/hosted-input.html`,Gl="https://goat-assets.production.core.primer.io";function on(i,t){return btoa(JSON.stringify({checkoutSessionId:i,name:t}))}ao("../../node_modules/card-validator/dist/index.js");var re={cardNumber:"cardNumber",cardSecurityCode:"cardSecurityCode",cardExpiryDate:"cardExpiryDate",cardholderName:"cardholderName"},Ma="cardSecurityCodeRecapture";Object.values(re);function Wl(i){return{cardNumber:nr(i,re.cardNumber),cardSecurityCode:nr(i,re.cardSecurityCode),cardExpiryDate:nr(i,re.cardExpiryDate),cardholderName:nr(i,re.cardholderName)}}function nr(i,t){let e=document.createElement("iframe"),r=on(i,t);return e.src=`${Kl}#${r}`,e.setAttribute("tabindex","0"),e.setAttribute("frameBorder","0"),e.style.border="none",e.style.boxSizing="border-box",e.style.height="20px",e.style.width="100%",e.style.colorScheme="auto",e}var Xr=class extends _t{constructor(e,r){super(e,r);T(this,"iframes");this.iframes=Wl(r.checkoutSessionId)}async tokenize(){let{error:e,data:r}=await this.context.pciApi.postPaymentInstruments("pci-card-form-data");if(e||!r)throw e??new st({code:ie.TOKENIZATION_ERROR,message:"Unable to tokenize payment method",paymentMethod:J.PAYMENT_CARD});return r}};function ql(i,t={}){return new Promise((e,r)=>{if(document.querySelector(`script[src="${i}"]`))return void e();let o=document.createElement("script");o.src=i,Object.entries(t).forEach(([a,n])=>{o.setAttribute(a,n)}),o.onload=()=>{e()},o.onerror=()=>{r(new Error(`Failed to load script: ${i}`))},document.head.appendChild(o)})}var ka=2,Ia=0,Qr=class extends _t{constructor(){super(...arguments);T(this,"client");T(this,"callbacks",{onStart:()=>{},onError:()=>{},onSuccess:()=>{}});T(this,"allowedPaymentMethod",{type:"CARD",parameters:{allowedAuthMethods:["PAN_ONLY"],allowedCardNetworks:["AMEX","DISCOVER","INTERAC","JCB","MASTERCARD","VISA"]}})}setCallbacks(e){this.callbacks=e}async tokenize(){throw new st({code:ie.TOKENIZATION_ERROR,message:"Google Pay does not support direct tokenization",paymentMethod:J.GOOGLE_PAY})}async setup(){try{await ql("https://pay.google.com/gp/p/js/pay.js")}catch{return!1}if(!window.google||!window.google.payments)return $.error("Google Pay is not available in this browser context"),!1;if(this.client=new google.payments.api.PaymentsClient({environment:"TEST"}),!this.client.isReadyToPay(this.buildIsReadyToPayRequest()))return!1;let{countryCode:e,currencyCode:r}=this.context.configuration.clientSession.order;if(!e)throw new H({code:Jr.MISSING_PARAMETER,message:"Cannot initialize Google Pay: missing country code",paymentMethod:J.GOOGLE_PAY});if(!r)throw new H({code:Jr.MISSING_PARAMETER,message:"Cannot initialize Google Pay: missing currency code",paymentMethod:J.GOOGLE_PAY});return!0}async render(e){let r=this.client.createButton({buttonType:"buy",buttonColor:"black",buttonSizeMode:"fill",buttonRootNode:e instanceof ShadowRoot?e:void 0,onClick:this.handleButtonClick.bind(this)});e.appendChild(r)}async handleButtonClick(){this.callbacks.onStart();try{let e=this.buildPaymentDataRequest(),r=await this.client.loadPaymentData(e),{data:o,error:a}=await this.context.pciApi.postPaymentInstruments({flow:"GATEWAY",network:r.paymentMethodData.info?.cardNetwork??"OTHER",merchant_id:this.config.options.merchantId,encrypted_payload:Wr.encode(r.paymentMethodData.tokenizationData.token)});if(a||!o)throw a??new st({code:ie.TOKENIZATION_ERROR,message:"Failed to tokenize payment data",paymentMethod:J.GOOGLE_PAY});let n=await this.createPayment(o.token);n.status==="SUCCESS"?this.callbacks.onSuccess(n):this.callbacks.onError()}catch(e){throw this.callbacks.onError(),$.errorWithDatadog("Google Pay error",{error:e}),e}}async handlePaymentDataChanged(e){return{}}buildIsReadyToPayRequest(){return{apiVersion:ka,apiVersionMinor:Ia,allowedPaymentMethods:[this.allowedPaymentMethod]}}buildPaymentDataRequest(){let{countryCode:e,currencyCode:r,merchantAmount:o,totalOrderAmount:a}=this.context.configuration.clientSession.order;return{apiVersion:ka,apiVersionMinor:Ia,transactionInfo:{countryCode:e,currencyCode:r,displayItems:[],totalPriceStatus:"FINAL",totalPrice:Zi(o??a,r),totalPriceLabel:"Total"},merchantInfo:{merchantId:this.config.options.merchantId,merchantName:this.config.options.merchantName},allowedPaymentMethods:[{...this.allowedPaymentMethod,tokenizationSpecification:{type:"PAYMENT_GATEWAY",parameters:{gateway:"primer",gatewayMerchantId:this.config.options.merchantId}}}]}}};function Jl(i,t){var e={};for(var r in i)Object.prototype.hasOwnProperty.call(i,r)&&t.indexOf(r)<0&&(e[r]=i[r]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var o=0,r=Object.getOwnPropertySymbols(i);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(i,r[o])&&(e[r[o]]=i[r[o]]);return e}function Zl(i,t){var e=document.querySelector('script[src="'.concat(i,'"]'));if(e===null)return null;var r=an(i,t),o=e.cloneNode();if(delete o.dataset.uidAuto,Object.keys(o.dataset).length!==Object.keys(r.dataset).length)return null;var a=!0;return Object.keys(o.dataset).forEach(function(n){o.dataset[n]!==r.dataset[n]&&(a=!1)}),a?e:null}function Xl(i){var t=i.url,e=i.attributes,r=i.onSuccess,o=i.onError,a=an(t,e);a.onerror=o,a.onload=r,document.head.insertBefore(a,document.head.firstElementChild)}function Ql(i){var t=i.sdkBaseUrl,e=i.environment,r=Jl(i,["sdkBaseUrl","environment"]),o=t||rd(e),a=r,n=Object.keys(a).filter(function(c){return a[c]!==void 0&&a[c]!==null&&a[c]!==""}).reduce(function(c,m){var y=a[m].toString();return m=ed(m),m.substring(0,4)==="data"||m==="crossorigin"?c.attributes[m]=y:c.queryParams[m]=y,c},{queryParams:{},attributes:{}}),l=n.queryParams,s=n.attributes;return l["merchant-id"]&&l["merchant-id"].indexOf(",")!==-1&&(s["data-merchant-id"]=l["merchant-id"],l["merchant-id"]="*"),{url:"".concat(o,"?").concat(td(l)),attributes:s}}function ed(i){var t=function(e,r){return(r?"-":"")+e.toLowerCase()};return i.replace(/[A-Z]+(?![a-z])|[A-Z]/g,t)}function td(i){var t="";return Object.keys(i).forEach(function(e){t.length!==0&&(t+="&"),t+=e+"="+i[e]}),t}function rd(i){return i==="sandbox"?"https://www.sandbox.paypal.com/sdk/js":"https://www.paypal.com/sdk/js"}function an(i,t){t===void 0&&(t={});var e=document.createElement("script");return e.src=i,Object.keys(t).forEach(function(r){e.setAttribute(r,t[r]),r==="data-csp-nonce"&&e.setAttribute("nonce",t["data-csp-nonce"])}),e}function id(i,t){if(t===void 0&&(t=Promise),nn(i,t),typeof document>"u")return t.resolve(null);var e=Ql(i),r=e.url,o=e.attributes,a=o["data-namespace"]||"paypal",n=Na(a);return o["data-js-sdk-library"]||(o["data-js-sdk-library"]="paypal-js"),Zl(r,o)&&n?t.resolve(n):od({url:r,attributes:o},t).then(function(){var l=Na(a);if(l)return l;throw new Error("The window.".concat(a," global variable is not available."))})}function od(i,t){t===void 0&&(t=Promise),nn(i,t);var e=i.url,r=i.attributes;if(typeof e!="string"||e.length===0)throw new Error("Invalid url.");if(r!==void 0&&typeof r!="object")throw new Error("Expected attributes to be an object.");return new t(function(o,a){if(typeof document>"u")return o();Xl({url:e,attributes:r,onSuccess:function(){return o()},onError:function(){var n=new Error('The script "'.concat(e,'" failed to load. Check the HTTP status code and response body in DevTools to learn more.'));return a(n)}})})}function Na(i){return window[i]}function nn(i,t){if(typeof i!="object"||i===null)throw new Error("Expected an options object.");var e=i.environment;if(e&&e!=="production"&&e!=="sandbox")throw new Error('The `environment` option must be either "production" or "sandbox".');if(t!==void 0&&typeof t!="function")throw new Error("Expected PromisePonyfill to be a function.")}var ei=class extends _t{constructor(){super(...arguments);T(this,"paypalInstance");T(this,"dataNamespace",ge());T(this,"callbacks",{onStart:()=>{},onError:()=>{},onSuccess:()=>{}})}setCallbacks(e){this.callbacks=e}async tokenize(){throw new st({message:"PayPal does not support direct tokenization",code:ie.TOKENIZATION_ERROR,paymentMethod:J.PAYPAL})}async setup(){let{clientId:e,intent:r}=this.config.options;if(!e||!r)return!1;try{let o=await id({dataNamespace:this.dataNamespace,clientId:e,currency:this.context.configuration.clientSession.order.currencyCode,components:["buttons","funding-eligibility"],disableFunding:["bancontact","card","credit"],intent:r??"authorize"});return o?(this.paypalInstance=o,!0):!1}catch{return!1}}async render(e){if(!this.paypalInstance.Buttons)return;let r=this.paypalInstance.Buttons({style:{color:"gold",shape:"rect",label:"paypal",tagline:!1},createOrder:this.handleCreateOrder.bind(this),onInit:this.handleInit.bind(this),onClick:this.handleClick.bind(this),onApprove:this.handleApprove.bind(this),onCancel:this.handleCancel.bind(this),onError:this.handleError.bind(this)});if(!r.isEligible())throw new H({message:"PayPal Buttons are not eligible for rendering",code:Jr.INVALID_USAGE,paymentMethod:J.PAYPAL});await r.render(e)}handleInit(e,r){}handleClick(e,r){return ti({eventName:"PAYMENT_METHOD_SELECTION",paymentMethod:"PAYPAL"}),r.resolve()}async handleCreateOrder(){this.callbacks.onStart(),await this.context.clientSessionApi.selectPaymentMethod(this.config.type);let{data:e,error:r}=await this.context.coreApi.createPaypalOrder(this.buildCreateOrderRequestBody());if(r||!e)throw r??new H({message:"Unable to create PayPal order",code:ie.PAYMENT_FAILED,paymentMethod:J.PAYPAL});return e.orderId}async handleApprove(e,r){let o=null;try{o=await r?.order?.get()??null}catch{}let{error:a,data:n}=await this.context.pciApi.postPaymentInstruments({external_payer_info:{email:o?.payment_source?.paypal?.email_address,external_payer_id:e.payerID??void 0},paypal_order_id:e.orderID,paypal_status:o?.status});if(a||!n)throw a??new st({message:"Unable to create payment instrument",code:ie.TOKENIZATION_ERROR,paymentMethod:J.PAYPAL});let l=await this.createPayment(n.token);this.callbacks.onSuccess(l)}handleCancel(){this.context.clientSessionApi.unselectPaymentMethod()}handleError(e){$.errorWithDatadog("PayPal error:",e)}buildCreateOrderRequestBody(){let{order:{currencyCode:e,merchantAmount:r,totalOrderAmount:o,shipping:a,lineItems:n=[],fees:l=[]}}=this.context.configuration.clientSession;if(!e)throw new H({message:"Currency code is not provided",code:Jr.MISSING_PARAMETER,paymentMethod:J.PAYPAL});let s={amount:r??o,currencyCode:e,paymentMethodConfigId:this.config.id,amountBreakdown:{}},c=!n.some(({description:m})=>!m);if(c&&(s.items=n.map(({description:m,taxAmount:y,amount:h,quantity:E})=>{let A=y?Math.floor(y/E):0;return{name:m,unit_amount:{value:h,currency_code:e},quantity:E.toString(),tax:{value:A,currency_code:e}}})),c&&n.length){let m=n.reduce((A,{amount:w,quantity:I})=>A+w*I,0),y=l?.reduce?.((A,{amount:w})=>A+(w??0),0),h=n?.reduce((A,{discountAmount:w})=>A+(w??0),0),E=n?.reduce((A,{taxAmount:w,quantity:I})=>A+(w??0*I),0);s.amountBreakdown={item_total:{value:m,currency_code:e},tax_total:{value:E,currency_code:e},handling:{value:y??0,currency_code:e},shipping:{value:a?.amount??0,currency_code:e},discount:{value:h,currency_code:e}}}return s}};async function ad(i,t,e){try{ti({eventName:"PAYMENT_PROCESSING_STARTED",paymentMethod:i.config.type}),e||await i.start();let r=e?await i.tokenizeVaulted(e.id):await i.tokenize(),o=await i.createPayment(r.token);return await i.handleRequiredAction(o,t)}catch(r){throw r}}var Xi=(i,t,e)=>{let r=e;if(t?.status==="FAILED"&&(r=new H({code:ie.PAYMENT_FAILED,message:`The payment "${t.id}" was created but failed to be processed. Check the payment id ${t.id} using the Payments API or search for the payment on your Dashboard for further explanations.`})),t?.checkoutOutcome==="CHECKOUT_FAILURE"&&(r=new H({code:ie.PAYMENT_FAILED,message:`The payment "${t.id}" was created but failed to be processed. Check the payment id ${t.id} using the Payments API or search for the payment on your Dashboard for further explanations.`})),t?.status==="PENDING"&&!t.requiredAction?.clientToken&&(r=new H({code:ie.PAYMENT_FAILED,message:`The payment "${t.id}" ended up in a "PENDING" state without any required action. The SDK does not know how to handle this state. Check the payment id ${t.id} using the Payments API or search for the payment on your Dashboard for further explanations.`})),t?.status==="SUCCESS"&&t.checkoutOutcome!=="CHECKOUT_FAILURE"||t?.status==="PENDING"&&t.showSuccessCheckoutOnPendingPayment||t?.checkoutOutcome==="CHECKOUT_COMPLETE")return void i.onCheckoutComplete?.({payment:t});i.onCheckoutFail?.(r||new H({code:ie.PAYMENT_FAILED,message:`The payment${t?.id?` "${t.id}"`:""} is in an inconsistent state without any required action. The SDK does not know how to handle this state. Please contact Primer.`}),{payment:t??void 0})},nd=async(i,t)=>{if(!i.onBeforePaymentCreate)return!0;let e=setTimeout(()=>{$.warn("onBeforePaymentCreate did not resolve within 10 seconds. Primer SDK will remain in a loading state until `continuePaymentCreation` or `abortPaymentCreation` is called.")},1e4);return new Promise(r=>{i.onBeforePaymentCreate({paymentMethodType:t},{continuePaymentCreation:()=>{clearTimeout(e),$.log(`Continuing payment creation for ${t}`),r(!0)},abortPaymentCreation:()=>{clearTimeout(e),$.log(`Aborting payment creation for ${t}`),r(!1)}})})};async function mo(i,t,e){if(!await nd(i,t.config.type))return void i.onCheckoutFail?.(new H({message:"Payment creation aborted",code:ie.PAYMENT_CREATION_ABORTED,paymentMethod:t.config.type}),{});i.onPaymentCreationStart?.();let o,a;try{a=await ad(t,t.context.dialogProvider,e)}catch(n){o=n}finally{Xi(i,a,o)}}var La=Symbol("PROXY_MARKER");function uo({namespace:i,onMessage:t,sendMessage:e}){function r(o,a){return new Proxy(o,{get(n,l,s){if(l==="then")return null;if(n[La])return Reflect.get(n,l,s);let c=()=>{};return c[La]=!0,r(c,[...a,l])},apply(n,l,s){return new Promise(async(c,m)=>{try{let y=[],h=s.map(I=>{if(typeof I!="function")return I;{let S=ge();return y.push(S),t(k=>{k.namespace===i&&k.sender===ji.PROVIDER&&k.type===zi.CALLBACK&&k.id===S&&I(...k.data)}),S}}),E=ge(),A=t(I=>{I.namespace===i&&I.sender===ji.PROVIDER&&I.type===zi.APPLY&&I.id===E&&(I.error?m(new Error(I.error)):c(I.data),A?.())}),w={type:zi.APPLY,sender:ji.INJECTOR,id:E,path:a,args:h,callbackIds:y,timeStamp:Date.now(),namespace:i};e(w)}catch(y){m(y)}})}})}return r({},[])}var zi={APPLY:"apply",CALLBACK:"callback"},ji={PROVIDER:"provider",INJECTOR:"injector"};function Qi(i,t){let e=t?.input?.base?.height;e&&(i.style.height=typeof e=="number"?`${e}px`:e)}function sd(i,t,e,r={}){let o=[],a="LOCAL",n={[re.cardNumber]:void 0,[re.cardExpiryDate]:void 0,[re.cardSecurityCode]:void 0,[re.cardholderName]:void 0},l=!1;t.subscribeToTeardown(()=>{l=!0});let s={createHostedInputs:()=>{let c=m=>{let y=new Map;return{getOptions:()=>{},setOptions:h=>{Qi(e.iframes[m],h.style),n[m]?.setOptions(h)},render:(h,E)=>{let A=e.iframes[m];if(!A)return $.errorWithDatadog(`No iframe found for ${m}`),Promise.resolve();let w;return w=typeof h=="string"?document.getElementById(h):h,w?(Qi(A,E.style),w.appendChild(A),new Promise(I=>{A.onload=()=>{if(l){$.warn(`Teardown was already called, aborting render for ${m}`),A.remove(),I();return}n[m]=uo({namespace:`${t.checkoutSessionId}-${m}`,onMessage:S=>{let k=U=>S(U.data);return window.addEventListener("message",k),()=>window.removeEventListener("message",k)},sendMessage:S=>{A.contentWindow.postMessage(S,"*")}}),n[m].setOptions({...E,orderedAllowedCardNetworks:t.configuration.clientSession.paymentMethod.orderedAllowedCardNetworks,cardholderName:i.cardholderName??i.card?.cardholderName}),n[m].setOnBlur(()=>{try{y.get("blur")?.()}catch(S){$.errorWithDatadog(`Blur listener error for ${m}`,{error:S})}}),n[m].setOnFocus(()=>{try{y.get("focus")?.()}catch(S){$.errorWithDatadog(`Focus listener error for ${m}`,{error:S})}}),n[m].setOnInput(S=>{let k={...S,errorCode:S.error,active:S.focused};try{y.get("input")?.(k),y.get("change")?.(k)}catch(U){$.errorWithDatadog(`Input listener error for ${m}`,{error:U})}}),m===re.cardNumber&&(n[m].setBinDataApiConfig(t.configuration.binDataUrl,t.decodedClientToken.accessToken),n[m].setOnCardNetworksChange((S,k)=>{(k!==a||ld(o,S))&&(o=S,a=k,r.onCardNetworksChange?.(dd({networks:o,source:a},t.configuration.clientSession.paymentMethod.orderedAllowedCardNetworks)))}))},I()})):($.error(`Container not found for ${m}:`,h),Promise.resolve())},addEventListener:(h,E)=>{y.set(h,E)},focus:()=>{let h=e.iframes[m];if(h&&h.contentWindow)try{n[m]?.focus()}catch(E){$.errorWithDatadog(`Focus send error for ${m}`,{error:E})}else $.warn(`Focus failed for ${m} - iframe not available`)},blur:()=>{let h=e.iframes[m];if(h&&h.contentWindow)try{n[m]?.blur()}catch(E){$.errorWithDatadog(`Blur send error for ${m}`,{error:E})}},setDisabled:h=>{n[m]?.setDisabled(h)},setCardholderName:h=>{n[m]?.setCardholderName(h)}}};return{cardNumberInput:c(re.cardNumber),cardholderNameInput:c(re.cardholderName),expiryInput:c(re.cardExpiryDate),cvvInput:c(re.cardSecurityCode)}},removeHostedInputs:()=>{l=!0,e.iframes.cardNumber.remove(),e.iframes.cardSecurityCode.remove(),e.iframes.cardExpiryDate.remove(),e.iframes.cardholderName.remove()},submit:async c=>{if((await s.validate()).valid)return await t.apiController.setPreferredNetwork(c?.cardNetwork),mo(i,e)},validate:async()=>{let c=(await Promise.all(Object.entries(n).map(([y,h])=>h?.getFieldState().then(E=>[y,E]).catch(()=>{})))).filter(y=>y!==void 0),m=[];for(let[y,h]of c)!h.valid&&h.error&&m.push({field:y,name:y,error:h.error,message:h.error});return{valid:m.length===0,validationErrors:m}},reset:()=>{Object.values(n).forEach(c=>{c?.reset()}),t.apiController.setPreferredNetwork(void 0)},setCardholderName:c=>{try{n[re.cardholderName]?.setCardholderName(c)}catch(m){$.errorWithDatadog("SetCardholderName error",{error:m})}}};return s}function ld(i,t){if(i.length!==t.length)return!0;let e=t.map(({network:r})=>r);return!i.every(({network:r})=>e.includes(r))}function dd({networks:i,source:t},e){let r=e,o=new Set(r.map(s=>so(s).backend)),a=i.map(s=>({...s,allowed:o.has(s.network)})).sort((s,c)=>s.allowed?r.indexOf(s.network)-r.indexOf(c.network):1),n=a.filter(s=>s.allowed),l=t==="REMOTE"&&n.length>1;return{detectedCardNetworks:{items:a,preferred:n[0]},...l&&{selectableCardNetworks:{items:n,preferred:n[0]}},source:t}}function cd(i,t,e){return{createButton:()=>({render:async r=>{e.setCallbacks({onStart:()=>{i.onBeforePaymentCreate?.({paymentMethodType:e.config.type},{continuePaymentCreation:()=>{i.onPaymentCreationStart?.()},abortPaymentCreation:()=>{}})},onSuccess(a){Xi(i,a)},onError(){Xi(i)}});let o=typeof r=="string"?document.getElementById(r):r;if(!o)throw new H({code:Ul.CONTAINER_NOT_FOUND,message:`Container with id "${r}" not found in the DOM.`});await e.render(o)}})}}function pd(i,t,e){return{start:()=>mo(i,e)}}function md(i,t){return{"Content-Type":"application/json","primer-client-token":i,"primer-sdk-client":"WEB","primer-sdk-version":"0.0.0-local","primer-sdk-checkout-session-id":t,"x-api-version":"2.4"}}function Oa(i,t,e="POST",r=""){let o=i.error,a=new Error(o?.description||o?.message||"Unexpected error"),n=ud(t),l=hd({summary:"Request failed for",method:e,path:r,details:JSON.stringify(i,null,2),code:n});return new dr({message:l,code:n,error:a,response:i})}var ud=i=>i>=500?ye.SERVER_ERROR:{400:ye.BAD_REQUEST,401:ye.UNAUTHORIZED,403:ye.FORBIDDEN,404:ye.NOT_FOUND,408:ye.REQUEST_TIMEOUT,409:ye.CONFLICT,422:ye.VALIDATION_ERROR}[i]??ye.REQUEST_ERROR,hd=({summary:i,method:t,path:e,code:r,details:o})=>`${i} ${t} ${e} with code ${r}"
42
42
 
43
43
  Details:
44
- ${o}`;function id(i,t,e){if(e?.status&&e.status>=400&&e.status<500)return!1;if(e?.status&&e.status>=500)return!0;if(i instanceof Error){let r=i.message.toLowerCase();return r.includes("network")||r.includes("timeout")||r.includes("connection")}return!1}function od(i){let n=1e3*Math.pow(1.1,i),a=.1*n*(Math.random()-.5);return n=Math.max(0,n+a),Math.min(n,3e4)}var nd={attempts:3,retryCondition:id,delayCalculator:od,totalTimeout:3e5};async function ad(i,t,e){let r={...nd,...t.retry},o=[],n=Date.now();for(let s=0;s<=r.attempts;s++)try{let c=await i();if(!c.error)return{...c,retryHistory:o.length>0?o:void 0};if(s===r.attempts||!r.retryCondition(c.error,s,c))return{...c,retryHistory:o};let m=r.delayCalculator(s);if(o.push({attempt:s+1,delay:m,error:c.error,timestamp:Date.now()}),Date.now()-n+m>r.totalTimeout){let f=Pn({...c,error:new Error("Retry total timeout exceeded")},408,t.method,e||"");return{...c,error:{...f,name:f.name,message:f.message,stack:f.stack,__sdkErrorType:f.name,__needsReconstruction:!0},retryHistory:o}}await Jr(m)}catch(c){o.push({attempt:s+1,delay:0,error:c,timestamp:Date.now()})}let a=o[o.length-1]?.error,l;if(a){let s=Pn({id:t.id,error:a},500,t.method,e||"");l={...s,name:s.name,message:s.message,stack:s.stack,__sdkErrorType:s.name,__needsReconstruction:!0}}return{id:t.id,error:l,retryHistory:o}}var kt=class{constructor(t,e="",r={},o){_(this,"fetch");_(this,"baseUrl");_(this,"defaultHeaders");_(this,"checkoutSessionId");this.fetch=t,this.baseUrl=e,this.defaultHeaders=Object.freeze({...r}),this.checkoutSessionId=o}setDefaultHeader(t,e){this.defaultHeaders={...this.defaultHeaders,[t]:e}}async executeFetch(t,e){let r={...e,headers:{...this.defaultHeaders,...e?.headers},checkoutSessionId:this.checkoutSessionId,id:ge()};return e?.retry?ad(()=>this.fetch(t,{...r,retry:void 0}),r,t):this.fetch(t,r)}async get(t,e){return this.executeFetch(t,{...e,method:"GET"})}async post(t,e,r){return this.executeFetch(t,{...r,method:"POST",body:JSON.stringify(e)})}async delete(t,e){return this.executeFetch(t,{...e,method:"DELETE"})}},Ki=class extends kt{constructor(){super(...arguments);_(this,"configurationSubscribers",new Set);_(this,"_configuration")}async getConfiguration(){let e=await this.get(this.baseUrl);return e.data&&(this._configuration=e.data),e}subscribe(e){return this.configurationSubscribers.add(e),()=>{this.configurationSubscribers.delete(e)}}get configuration(){return this._configuration}set configuration(e){this._configuration=e,this.configurationSubscribers.forEach(r=>r(this._configuration))}},Gi=class extends kt{async getPaymentInstruments(){return this.get(`${this.baseUrl}/payment-instruments`)}async postPaymentInstruments(t){return this.post(`${this.baseUrl}/payment-instruments`,t==="pci-card-form-data"?t:{paymentInstrument:t})}async postPaymentInstrumentsExchange(t){return this.post(`${this.baseUrl}/payment-instruments/${t}/exchange`,{})}async postCreatePayment(t){return this.post(`${this.baseUrl}/payments`,{paymentMethodToken:t})}async postResumePayment(t,e){return this.post(`${this.baseUrl}/payments/${t}/resume`,{resumeToken:e})}async post3dsAuth(t,e){return this.post(`${this.baseUrl}/3ds/${t}/auth`,e,{retry:{attempts:15}})}async post3dsContinue(t){return this.post(`${this.baseUrl}/3ds/${t}/continue`,{platform:"WEB",status:"FAILURE"})}async get3dsResumeStatus(t){return this.get(t)}async deletePaymentInstrument(t){return this.delete(`${this.baseUrl}/payment-instruments/${t}/vault`)}async postClientSessionActions(t){return this.post(`${this.baseUrl}/client-session/actions`,{actions:t})}async getResumeStatus(t){return this.get(t)}};async function sd(i){return new Promise((t,e)=>{let r=qn(i,"api"),o=`${Ll}#${r}`,n=document.querySelector(`iframe[src="${o}"]`)??document.createElement("iframe");n.parentElement?t(n):(n.style.display="none",n.onload=()=>t(n),n.onerror=a=>{e(new Error(`Failed to initialize Primer SDK: ${a}`))},n.src=o,document.body.appendChild(n))})}var Wi=class extends kt{constructor(){super(...arguments);_(this,"onClientSessionUpdate")}setOnClientSessionUpdate(e){this.onClientSessionUpdate=e}async postClientSessionActions(e){if(e.length===0)return Promise.resolve({data:void 0,headers:{},status:200,id:"",requestId:"",type:"http-response"});let r=await this.post(`${this.baseUrl}/client-session/actions`,{actions:e}),{data:o}=r;return o&&this.onClientSessionUpdate?.(o),r}async selectPaymentMethod(e,r={}){return this.postClientSessionActions([{type:"SELECT_PAYMENT_METHOD",params:{...r,paymentMethodType:e}}])}async unselectPaymentMethod(){return this.postClientSessionActions([{type:"UNSELECT_PAYMENT_METHOD"}])}async selectCardNetwork(e){return this.selectPaymentMethod(q.PAYMENT_CARD,{binData:this.buildCardBinData(e)})}async setBillingAddress(e){let r=this.removeEmptyStringFromObject(e);return this.postClientSessionActions([{type:"SET_BILLING_ADDRESS",params:{billingAddress:r}}])}async setShippingAddress(e,r,o){let n=[];return e&&Object.keys(e).some(l=>!!e[l])&&n.push({type:"SET_SHIPPING_ADDRESS",params:{shippingAddress:e}}),r&&n.push({type:"SET_MOBILE_NUMBER",params:{mobileNumber:r}}),o&&n.push({type:"SET_EMAIL_ADDRESS",params:{emailAddress:o}}),this.postClientSessionActions(n)}async selectShippingMethod(e){return this.postClientSessionActions([{type:"SELECT_SHIPPING_METHOD",params:{shippingMethodId:e}}])}async setCustomerDetails({emailAddress:e,firstName:r,lastName:o}){let n=[];return e&&n.push({type:"SET_EMAIL_ADDRESS",params:{emailAddress:e}}),r&&n.push({type:"SET_CUSTOMER_FIRST_NAME",params:{firstName:r}}),o&&n.push({type:"SET_CUSTOMER_LAST_NAME",params:{lastName:o}}),this.postClientSessionActions(n)}buildCardBinData(e){let{backend:r}=Qi(e);return{network:r,issuer_name:null,product_code:r,product_name:r,product_usage_type:"UNKNOWN",account_number_type:"UNKNOWN",issuer_country_code:null,account_funding_type:"UNKNOWN",issuer_currency_code:null,regional_restriction:"UNKNOWN",prepaid_reloadable_indicator:"NOT_APPLICABLE"}}removeEmptyStringFromObject(e){let r={...e};for(let o in r)r[o]===""?delete r[o]:typeof r[o]=="object"&&r[o]!==null&&!Array.isArray(r[o])&&(r[o]=this.removeEmptyStringFromObject(r[o]));return r}},qi=class extends kt{async createPaypalOrder(t){return this.post(`${this.baseUrl}/paypal/orders/create`,t)}async createApplePaySession(t){return this.post(`${this.baseUrl}/apple-pay/sessions`,t)}};async function ld(i,{locale:t,dialogProvider:e}){let r=ge(),o=er(i),n=await sd(r),a=Xn({namespace:`api-controller-${r}`,onMessage:A=>{let T=k=>A(k.data);return window.addEventListener("message",T),()=>window.removeEventListener("message",T)},sendMessage:A=>{n.contentWindow.postMessage(A,"*")}}),l=ed(o.accessToken,r),s=new Ki(a.fetch,o.configurationUrl,l,r),{error:c}=await s.getConfiguration();if(c||!s.configuration)throw new Error(`Failed to fetch configuration: ${c}`);let m=new Gi(a.fetch,s.configuration.pciUrl,l,r),f=new qi(a.fetch,s.configuration.coreUrl,l,r),y=new Wi(a.fetch,s.configuration.pciUrl,l,r);y.setOnClientSessionUpdate(A=>{s.configuration=A});let S=new Set;return{get configuration(){return s.configuration},onClientConfigurationUpdate(A){return s.subscribe(A)},checkoutSessionId:r,apiController:a,configurationApi:s,pciApi:m,coreApi:f,clientSessionApi:y,dialogProvider:e,decodedClientToken:o,locale:t||navigator.language||navigator.languages[0]||"en",updateClientToken(A){try{let T=er(A);s.setDefaultHeader("primer-client-token",T.accessToken),m.setDefaultHeader("primer-client-token",T.accessToken),f.setDefaultHeader("primer-client-token",T.accessToken),y.setDefaultHeader("primer-client-token",T.accessToken)}catch{}},async refreshClientConfiguration(){let{data:A,error:T}=await s.getConfiguration();return T||!A?(R.warn("Failed to refresh client configuration:",T),!1):(s.configuration=A,!0)},subscribeToTeardown(A){return S.add(A),()=>{S.delete(A)}},teardown(){n.remove(),S.forEach(A=>A())}}}var dd=100;function cd({height:i,name:t,url:e="",width:r}){let o=new Set,n=window.open(e,t,md({height:i,width:r}));if(!n)return;function a(){n?.close(),l()}function l(){o.forEach(s=>s()),o.clear(),window.removeEventListener("beforeunload",a)}return window.addEventListener("beforeunload",a),pd(n).then(l),{close:a,focus(){n.focus()},get isOpen(){return n?.closed===!1},onClose(s){return o.add(s),()=>{o.delete(s)}},setContent(s){n.document.write(s)},setUrl(s){n.location.replace(s)}}}var pd=i=>new Promise(t=>{let e=setInterval(()=>{i.closed&&(clearInterval(e),t())},dd)});function md(i){let t=ud({parent:{left:window.screenLeft,top:window.screenTop,height:window.outerHeight,width:window.outerWidth},popup:i});return hd(t)}var ud=({parent:i,popup:t})=>({left:i.left+(i.width-t.width)/2,top:i.top+(i.height-t.height)/2,height:t.height,width:t.width}),hd=i=>Object.entries(i).map(t=>t.join("=")).join(","),Ji=class extends xt{constructor(){super(...arguments);_(this,"popup")}async start(){this.openPopup()}async tokenize(){let{error:e,data:r}=await this.context.pciApi.postPaymentInstruments({type:"OFF_SESSION_PAYMENT",paymentMethodType:this.config.type,paymentMethodConfigId:this.config.id,sessionInfo:{locale:"en",platform:"WEB",browserInfo:Kn()}});if(e||!r)throw e??new at({message:"Unable to tokenize payment method",code:re.TOKENIZATION_ERROR});return r}async handleRequiredAction(e){let r=e.requiredAction?.clientToken;if(!r)throw new rr({message:"No client token provided",code:bn.MISSING_CLIENT_TOKEN,response:{id:e.id,data:e}});let o=er(r);if(!xl(o,this.config.type))throw new rr({message:"Invalid client token",code:bn.INVALID_CLIENT_TOKEN,response:{id:e.id,data:e}});this.popup?.setUrl(o.redirectUrl);let n=new Promise(m=>{this.popup?.onClose(()=>m({id:""}))}),{promise:a,abort:l}=this.pollStatus(o.statusUrl),s=await Promise.race([n,a]);if(l(),this.popup?.close(),"error"in s)throw s.error;let c=s.id;if(!c){let m=await this.context.pciApi.getResumeStatus(o.statusUrl);if(m.error||!m.data?.id)throw m.error??new Error("Unable to get resume token");c=m.data.id}return await this.resumePayment(e.id,c)}pollStatus(e){let r=!0;return{promise:new Promise(async o=>{for(;r;){let{data:n,error:a}=await this.context.pciApi.getResumeStatus(e);if(a)return void o({error:a});if(await Jr(1e3),n?.status==="COMPLETE")return void o({id:n.id})}}),abort:()=>{r=!1}}}openPopup(){let{name:e,displayMetadata:{button:r,overlay:o,popup:n}}=this.config;this.popup=cd({name:e,height:n?.height??500,width:n?.width??1e3});let a=o?.logo.colored||r?.iconUrl.colored||o?.logo.light||r?.iconUrl.light||o?.logo.dark||r?.iconUrl.dark;this.popup?.setContent(fd({name:e,logoSrc:a,logoAlt:e,message:`Loading ${e}...`}))}},fd=({name:i,logoSrc:t,logoAlt:e,message:r})=>`<html>
44
+ ${o}`;function fd(i,t,e){if(e?.status&&e.status>=400&&e.status<500)return!1;if(e?.status&&e.status>=500)return!0;if(i instanceof Error){let r=i.message.toLowerCase();return r.includes("network")||r.includes("timeout")||r.includes("connection")}return!1}function yd(i){let a=1e3*Math.pow(1.1,i),n=.1*a*(Math.random()-.5);return a=Math.max(0,a+n),Math.min(a,3e4)}var gd={attempts:3,retryCondition:fd,delayCalculator:yd,totalTimeout:3e5};async function vd(i,t,e){let r={...gd,...t.retry},o=[],a=Date.now();for(let s=0;s<=r.attempts;s++)try{let c=await i();if(!c.error)return{...c,retryHistory:o.length>0?o:void 0};if(s===r.attempts||!r.retryCondition(c.error,s,c))return{...c,retryHistory:o};let m=r.delayCalculator(s);if(o.push({attempt:s+1,delay:m,error:c.error,timestamp:Date.now()}),Date.now()-a+m>r.totalTimeout){let y=Oa({...c,error:new Error("Retry total timeout exceeded")},408,t.method,e||"");return{...c,error:{...y,name:y.name,message:y.message,stack:y.stack,__sdkErrorType:y.name,__needsReconstruction:!0},retryHistory:o}}await ri(m)}catch(c){o.push({attempt:s+1,delay:0,error:c,timestamp:Date.now()})}let n=o[o.length-1]?.error,l;if(n){let s=Oa({id:t.id,error:n},500,t.method,e||"");l={...s,name:s.name,message:s.message,stack:s.stack,__sdkErrorType:s.name,__needsReconstruction:!0}}return{id:t.id,error:l,retryHistory:o}}var Rt=class{constructor(t,e="",r={}){T(this,"fetch");T(this,"baseUrl");T(this,"defaultHeaders");this.fetch=t,this.baseUrl=e,this.defaultHeaders=Object.freeze({...r})}setDefaultHeader(t,e){this.defaultHeaders={...this.defaultHeaders,[t]:e}}async executeFetch(t,e){let r={...e,headers:{...this.defaultHeaders,...e?.headers},id:ge()};return e?.retry?vd(()=>this.fetch(t,{...r,retry:void 0}),r,t):this.fetch(t,r)}async get(t,e){return this.executeFetch(t,{...e,method:"GET"})}async post(t,e,r){return this.executeFetch(t,{...r,method:"POST",body:JSON.stringify(e)})}async delete(t,e){return this.executeFetch(t,{...e,method:"DELETE"})}},eo=class extends Rt{constructor(){super(...arguments);T(this,"configurationSubscribers",new Set);T(this,"_configuration")}async getConfiguration(){let e=await this.get(this.baseUrl);return e.data&&(this._configuration=e.data),e}subscribe(e){return this.configurationSubscribers.add(e),()=>{this.configurationSubscribers.delete(e)}}get configuration(){return this._configuration}set configuration(e){this._configuration=e,this.configurationSubscribers.forEach(r=>r(this._configuration))}},to=class extends Rt{async getPaymentInstruments(){return this.get(`${this.baseUrl}/payment-instruments`)}async postPaymentInstruments(t){return this.post(`${this.baseUrl}/payment-instruments`,t==="pci-card-form-data"?t:{paymentInstrument:t})}async postPaymentInstrumentsExchange(t){return this.post(`${this.baseUrl}/payment-instruments/${t}/exchange`,"payment-instrument-exchange")}async postCreatePayment(t){return this.post(`${this.baseUrl}/payments`,{paymentMethodToken:t})}async postResumePayment(t,e){return this.post(`${this.baseUrl}/payments/${t}/resume`,{resumeToken:e})}async post3dsAuth(t,e){return this.post(`${this.baseUrl}/3ds/${t}/auth`,e,{retry:{attempts:15}})}async post3dsContinue(t){return this.post(`${this.baseUrl}/3ds/${t}/continue`,{platform:"WEB",status:"FAILURE"})}async get3dsResumeStatus(t){return this.get(t)}async deletePaymentInstrument(t){return this.delete(`${this.baseUrl}/payment-instruments/${t}/vault`)}async postClientSessionActions(t){return this.post(`${this.baseUrl}/client-session/actions`,{actions:t})}async getResumeStatus(t){return this.get(t)}};async function bd(i){return new Promise((t,e)=>{let r=on(i,"api"),o=`${jl}#${r}`,a=document.querySelector(`iframe[src="${o}"]`)??document.createElement("iframe");a.parentElement?t(a):(a.style.display="none",a.onload=()=>t(a),a.onerror=n=>{e(new Error(`Failed to initialize Primer SDK: ${n}`))},a.src=o,document.body.appendChild(a))})}var ro=class extends Rt{constructor(){super(...arguments);T(this,"onClientSessionUpdate")}setOnClientSessionUpdate(e){this.onClientSessionUpdate=e}async postClientSessionActions(e){if(e.length===0)return Promise.resolve({data:void 0,headers:{},status:200,id:"",requestId:"",type:"http-response"});let r=await this.post(`${this.baseUrl}/client-session/actions`,{actions:e}),{data:o}=r;return o&&this.onClientSessionUpdate?.(o),r}async selectPaymentMethod(e,r={}){return this.postClientSessionActions([{type:"SELECT_PAYMENT_METHOD",params:{...r,paymentMethodType:e}}])}async unselectPaymentMethod(){return this.postClientSessionActions([{type:"UNSELECT_PAYMENT_METHOD"}])}async selectCardNetwork(e){return this.selectPaymentMethod(J.PAYMENT_CARD,{binData:this.buildCardBinData(e)})}async setBillingAddress(e){let r=this.removeEmptyStringFromObject(e);return this.postClientSessionActions([{type:"SET_BILLING_ADDRESS",params:{billingAddress:r}}])}async setShippingAddress(e,r,o){let a=[];return e&&Object.keys(e).some(l=>!!e[l])&&a.push({type:"SET_SHIPPING_ADDRESS",params:{shippingAddress:e}}),r&&a.push({type:"SET_MOBILE_NUMBER",params:{mobileNumber:r}}),o&&a.push({type:"SET_EMAIL_ADDRESS",params:{emailAddress:o}}),this.postClientSessionActions(a)}async selectShippingMethod(e){return this.postClientSessionActions([{type:"SELECT_SHIPPING_METHOD",params:{shippingMethodId:e}}])}async setCustomerDetails({emailAddress:e,firstName:r,lastName:o}){let a=[];return e&&a.push({type:"SET_EMAIL_ADDRESS",params:{emailAddress:e}}),r&&a.push({type:"SET_CUSTOMER_FIRST_NAME",params:{firstName:r}}),o&&a.push({type:"SET_CUSTOMER_LAST_NAME",params:{lastName:o}}),this.postClientSessionActions(a)}buildCardBinData(e){let{backend:r}=so(e);return{network:r,issuer_name:null,product_code:r,product_name:r,product_usage_type:"UNKNOWN",account_number_type:"UNKNOWN",issuer_country_code:null,account_funding_type:"UNKNOWN",issuer_currency_code:null,regional_restriction:"UNKNOWN",prepaid_reloadable_indicator:"NOT_APPLICABLE"}}removeEmptyStringFromObject(e){let r={...e};for(let o in r)r[o]===""?delete r[o]:typeof r[o]=="object"&&r[o]!==null&&!Array.isArray(r[o])&&(r[o]=this.removeEmptyStringFromObject(r[o]));return r}},io=class extends Rt{async createPaypalOrder(t){return this.post(`${this.baseUrl}/paypal/orders/create`,t)}async createApplePaySession(t){return this.post(`${this.baseUrl}/apple-pay/sessions`,t)}};async function Cd(i,{locale:t,dialogProvider:e}){let r=ge(),o=sr(i),a=await bd(r),n=uo({namespace:`api-controller-${r}`,onMessage:A=>{let w=I=>A(I.data);return window.addEventListener("message",w),()=>window.removeEventListener("message",w)},sendMessage:A=>{a.contentWindow.postMessage(A,"*")}}),l=md(o.accessToken,r),s=new eo(n.fetch,o.configurationUrl,l),{error:c}=await s.getConfiguration();if(c||!s.configuration)throw new Error(`Failed to fetch configuration: ${c}`);let m=new to(n.fetch,s.configuration.pciUrl,l),y=new io(n.fetch,s.configuration.coreUrl,l),h=new ro(n.fetch,s.configuration.pciUrl,l);h.setOnClientSessionUpdate(A=>{s.configuration=A});let E=new Set;return{get configuration(){return s.configuration},onClientConfigurationUpdate(A){return s.subscribe(A)},checkoutSessionId:r,apiController:n,configurationApi:s,pciApi:m,coreApi:y,clientSessionApi:h,dialogProvider:e,decodedClientToken:o,locale:t||navigator.language||navigator.languages[0]||"en",updateClientToken(A){try{let w=sr(A);s.setDefaultHeader("primer-client-token",w.accessToken),m.setDefaultHeader("primer-client-token",w.accessToken),y.setDefaultHeader("primer-client-token",w.accessToken),h.setDefaultHeader("primer-client-token",w.accessToken)}catch{}},async refreshClientConfiguration(){let{data:A,error:w}=await s.getConfiguration();return w||!A?($.warn("Failed to refresh client configuration:",w),!1):(s.configuration=A,!0)},subscribeToTeardown(A){return E.add(A),()=>{E.delete(A)}},teardown(){a.remove(),E.forEach(A=>A())}}}var Ed=100;function xd({height:i,name:t,url:e="",width:r}){let o=new Set,a=window.open(e,t,Sd({height:i,width:r}));if(!a)return;function n(){a?.close(),l()}function l(){o.forEach(s=>s()),o.clear(),window.removeEventListener("beforeunload",n)}return window.addEventListener("beforeunload",n),Ad(a).then(l),{close:n,focus(){a.focus()},get isOpen(){return a?.closed===!1},onClose(s){return o.add(s),()=>{o.delete(s)}},setContent(s){a.document.write(s)},setUrl(s){a.location.replace(s)}}}var Ad=i=>new Promise(t=>{let e=setInterval(()=>{i.closed&&(clearInterval(e),t())},Ed)});function Sd(i){let t=_d({parent:{left:window.screenLeft,top:window.screenTop,height:window.outerHeight,width:window.outerWidth},popup:i});return Pd(t)}var _d=({parent:i,popup:t})=>({left:i.left+(i.width-t.width)/2,top:i.top+(i.height-t.height)/2,height:t.height,width:t.width}),Pd=i=>Object.entries(i).map(t=>t.join("=")).join(","),oo=class extends _t{constructor(){super(...arguments);T(this,"popup")}async start(){this.openPopup()}async tokenize(){let{error:e,data:r}=await this.context.pciApi.postPaymentInstruments({type:"OFF_SESSION_PAYMENT",paymentMethodType:this.config.type,paymentMethodConfigId:this.config.id,sessionInfo:{locale:"en",platform:"WEB",browserInfo:en()}});if(e||!r)throw e??new st({message:"Unable to tokenize payment method",code:ie.TOKENIZATION_ERROR});return r}async handleRequiredAction(e){let r=e.requiredAction?.clientToken;if(!r)throw new dr({message:"No client token provided",code:Pa.MISSING_CLIENT_TOKEN,response:{id:e.id,data:e}});let o=sr(r);if(!Rl(o,this.config.type))throw new dr({message:"Invalid client token",code:Pa.INVALID_CLIENT_TOKEN,response:{id:e.id,data:e}});this.popup?.setUrl(o.redirectUrl);let a=new Promise(m=>{this.popup?.onClose(()=>m({id:""}))}),{promise:n,abort:l}=this.pollStatus(o.statusUrl),s=await Promise.race([a,n]);if(l(),this.popup?.close(),"error"in s)throw s.error;let c=s.id;if(!c){let m=await this.context.pciApi.getResumeStatus(o.statusUrl);if(m.error||!m.data?.id)throw m.error??new Error("Unable to get resume token");c=m.data.id}return await this.resumePayment(e.id,c)}pollStatus(e){let r=!0;return{promise:new Promise(async o=>{for(;r;){let{data:a,error:n}=await this.context.pciApi.getResumeStatus(e);if(n)return void o({error:n});if(await ri(1e3),a?.status==="COMPLETE")return void o({id:a.id})}}),abort:()=>{r=!1}}}openPopup(){let{name:e,displayMetadata:{button:r,overlay:o,popup:a}}=this.config;this.popup=xd({name:e,height:a?.height??500,width:a?.width??1e3});let n=o?.logo.colored||r?.iconUrl.colored||o?.logo.light||r?.iconUrl.light||o?.logo.dark||r?.iconUrl.dark;this.popup?.setContent(Td({name:e,logoSrc:n,logoAlt:e,message:`Loading ${e}...`}))}},Td=({name:i,logoSrc:t,logoAlt:e,message:r})=>`<html>
45
45
  <head>
46
46
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
47
47
  <style>
@@ -150,7 +150,7 @@ ${o}`;function id(i,t,e){if(e?.status&&e.status>=400&&e.status<500)return!1;if(e
150
150
  </div>
151
151
  </body>
152
152
  </html>
153
- `;async function yd(i,t){let e=i.configuration.paymentMethods.map(o=>{if(!t.includes(o.type))return null;if(o.implementationType==="WEB_REDIRECT")return new Ji(o,i);if(o.type===q.PAYMENT_CARD)return new Kr(o,i);if(o.type===q.PAYPAL)return new Wr(o,i);if(o.type===q.APPLE_PAY)return new jr(o,i);if(o.type===q.GOOGLE_PAY)return new Gr(o,i)}).map(async o=>{if(!o)return null;try{return await o.setup()?o:null}catch(n){return R.warn(`Failed to initialize payment method ${o.config.type}:`,n),null}});return(await Promise.all(e)).filter(o=>!!o)}function gd(i,t,e){if(!t.configuration.clientSession.customer?.customerId)throw new H({message:"You must provide a `customerId` in the client session to use the Vault Manager."});let r=[];return{async fetchVaultedPaymentMethods(){let{data:o,error:n}=await t.pciApi.getPaymentInstruments();if(n)throw n;if(!o)throw new H({code:Ur.VAULT_ERROR,message:"Missing vaulted payment methods data"});return r=o.data,r},async deleteVaultedPaymentMethod(o){if(!r.find(l=>l.id===o))throw new H({code:Ur.VAULT_ERROR,message:"deleteVaultedPaymentMethod: the id provided doesn't match any vaulted payment method"});let{error:a}=await t.pciApi.deletePaymentInstrument(o);if(a)throw a;r=r.filter(l=>l.id!==o)},async startPaymentFlow(o){let n=r.find(l=>l.id===o);if(!n)throw new H({code:Ur.VAULT_ERROR,message:"startPaymentFlow: the id provided doesn't match any vaulted payment method"});let a=e.find(l=>l.config.type===n.paymentMethodType);if(!a)throw new H({code:Ur.TOKENIZATION_ERROR,message:`Payment instrument type ${n.paymentInstrumentType} is not recognized or not supported.`});await io(i,a,n)},async createCvvInput(o){return{}}}}async function Qn(i,t){let e=await ld(i,{locale:t.locale,dialogProvider:t.dialogProvider}),r=await yd(e,t.enabledPaymentMethods??[q.PAYMENT_CARD]);t.onClientSessionUpdate?.(e.configuration.clientSession),e.onClientConfigurationUpdate(n=>{t.onClientSessionUpdate?.(n.clientSession)});let o={environment:En?"LOCAL":e.decodedClientToken.env,primerAccountId:e.configuration.primerAccountId,checkoutSessionId:e.checkoutSessionId,clientSessionId:e.configuration.clientSession?.clientSessionId,clientSessionToken:i,sdkVersion:t.sdkVersion};return e.getAnalyticsUtils=()=>o,ll({environment:En?"LOCAL":e.decodedClientToken.env,primerAccountId:o.primerAccountId||"",checkoutSessionId:o.checkoutSessionId,clientSessionId:o.clientSessionId||"",clientSessionToken:o.clientSessionToken,sdkVersion:o.sdkVersion||""}),t.onAvailablePaymentMethodsLoad?.(r.map(n=>({type:n.config.type,managerType:n.config.type===q.PAYMENT_CARD?Di.CARD:n.config.implementationType==="NATIVE_SDK"?Di.NATIVE:Di.REDIRECT}))),{start:()=>Promise.resolve(),createPaymentMethodManager:async(n,a)=>{let l=r.find(({config:s})=>s.type===n);return l?l instanceof Kr?ql(t,e,l,a):l instanceof Wr||l instanceof jr||l instanceof Gr?Xl(t,e,l):Ql(t,e,l):(R.warn(`Payment method ${n} not found`),null)},getSDKUtilities:()=>({getCardNetworkAsset:Tn,getUIOrderAmount:()=>{let{merchantAmount:n,totalOrderAmount:a,currencyCode:l}=e.configuration.clientSession.order;return Gn(e.locale,n??a,l)},getCDNAssets:async n=>{let a=r.find(({config:c})=>c.type===n);if(!a)return;let{backgroundColor:l,iconUrl:s}=a.config.displayMetadata?.button||{};return{assets:{icon:s?.colored||""},colors:{background:l?.colored||"",main:l?.colored||""},description:a.config.name||null,is_primer_app:!1,name:a.config.name,website:null,goatCdnUrl:""}},getPaymentMethodConfiguration:n=>r.find(({config:a})=>a.type===n)?.config}),getAnalyticsUtils:()=>o,createVaultManager(){return gd(t,e,r)},getAssetsManager:()=>({getCardNetworkAsset:Tn,getPaymentMethodAsset:async n=>{let a=r.find(({config:m})=>m.type===n);if(!a)return null;let{backgroundColor:l,iconUrl:s,text:c}=a.config.displayMetadata?.button||{};return{backgroundColor:l,iconUrl:s,paymentMethodName:c,buttonText:c,displayName:a.config.name}}}),refreshClientSession:e.refreshClientConfiguration,teardown:()=>e.teardown()}}var Tn=i=>{let{asset:t,display:e}=Qi(i);return{cardUrl:`${Rl}/brand/card/${t}.svg`,displayName:e}};var Ie={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},Ae=i=>(...t)=>({_$litDirective$:i,values:t}),st=class{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,r){this._$Ct=t,this._$AM=e,this._$Ci=r}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}};var ir=class extends st{constructor(t){if(super(t),this.it=h,t.type!==Ie.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(t){if(t===h||t==null)return this._t=void 0,this.it=t;if(t===Ee)return t;if(typeof t!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(t===this.it)return this._t;this.it=t;let e=[t];return e.raw=e,this._t={_$litType$:this.constructor.resultType,strings:e,values:[]}}};ir.directiveName="unsafeHTML",ir.resultType=1;var ea=Ae(ir);var ta=Symbol.for("primer-sdk-core-dialog-access");function ra(i){return{token:ta,content:i}}function oo(i){return i!==void 0&&i.token===ta&&typeof i.content=="string"}var ia=g` :host { display: block; } .content-container { width: 100%; height: 100%; display: flex; flex-direction: column; background-color: var(--primer-color-background-outlined-default); } .error { display: flex; align-items: center; justify-content: center; padding: var(--primer-space-large); color: var(--primer-color-text-danger); font-family: var(--primer-typography-body-medium-font); font-size: var(--primer-typography-body-medium-size); } `;var ie=class extends v{constructor(){super(...arguments);this.size="large";this.showCloseButton=!1;this.open=!1}openDialog(){this.open=!0}closeDialog(){let e=document.querySelector("primer-dialog");if(e){e.startExitAnimation();let r=()=>{this.open=!1,this.removeEventListener("primer-dialog-close",r)};this.addEventListener("primer-dialog-close",r)}else this.open=!1}renderContent(){return u`<div class="content-container"><slot></slot>${this.renderSecureHtmlContent()}</div>`}renderSecureHtmlContent(){return this.secureHtmlContent?oo(this.secureHtmlContent)?u`${ea(this.secureHtmlContent.content)}`:(E.warn("PortalDialogComponent: Invalid access token provided for htmlContent. Content will not be rendered."),h):h}renderDialog(){return this.open?u`<primer-portal><primer-dialog .open=${this.open} size=${this.size} .showCloseButton=${!1} @primer-dialog-close="${()=>this.closeDialog()}" >${this.renderContent()}</primer-dialog></primer-portal>`:h}connectedCallback(){super.connectedCallback(),this.open||this.openDialog()}updated(e){if(super.updated(e),e.has("secureHtmlContent")){let r=this.secureHtmlContent;r&&!oo(r)&&(E.errorWithDatadog("PortalDialogComponent: Invalid access token provided for htmlContent. Content will not be rendered."),this.secureHtmlContent=void 0)}e.has("open")&&this.open&&this.onOpen&&this.onOpen(),e.has("open")&&this.open&&this.onContentRendered&&this.updateComplete.then(()=>{requestAnimationFrame(()=>{this.onContentRendered?.()})})}render(){return u`${this.renderDialog()}`}};ie.styles=[w,ia],d([p({type:String})],ie.prototype,"size",2),d([p({type:Boolean})],ie.prototype,"showCloseButton",2),d([p({type:Object})],ie.prototype,"onOpen",2),d([p({type:Object})],ie.prototype,"onContentRendered",2),d([p({type:Object,converter:{fromAttribute:()=>{},toAttribute:()=>null}})],ie.prototype,"secureHtmlContent",2),d([M()],ie.prototype,"open",2),ie=d([b("primer-portal-dialog"),O()],ie);var Zr=class{constructor(){this.currentDialog=null;this.currentResolver=null}async show(t){return new Promise(e=>{let r=ra(t.htmlContent),o=new ie;o.secureHtmlContent=r,o.size="large",o.showCloseButton=!1,o.onContentRendered=t.onContentReady;let n=()=>{this.currentDialog=null,this.currentResolver=null,e({success:!1})};o.addEventListener("primer-dialog-close",n),this.currentDialog=o,this.currentResolver=e,document.body.appendChild(o)})}close(){this.currentDialog&&this.currentResolver&&(this.currentDialog.closeDialog(),this.currentResolver({success:!0}),this.currentDialog.remove(),this.currentDialog=null,this.currentResolver=null)}};var Xr="0.3.11",Qr=class{constructor(t){this.createPaymentMethodManager=null;this._paymentsList=[];this.currentSdkInstance=null;this.primerJS=null;this.loadingTimeout=null;this.isDisconnected=!1;(this.host=t).addController(this),this.isDisconnected=!1,this.sdkInstanceTask=new V(t,{args:()=>[this.host.clientToken,this.host.options],task:this.initializeHeadless()}),new V(t,{args:()=>[this.sdkInstanceTask.value,this.paymentsList],task:this.initializeLitContext()})}set paymentsList(t){this._paymentsList=t,this.host.requestUpdate()}get paymentsList(){return this._paymentsList}hostConnected(){this.isDisconnected=!1,this.host.sdkStateController.startLoading(),this.setupLoadingTimeout()}hostDisconnected(){if(this.isDisconnected=!0,this.host.sdkContextController.getAnalyticsUtils()){let e=this.host.sdkStateController.currentState;(e.isProcessing||e.isLoading||this.currentSdkInstance)&&G({eventName:"PAYMENT_FLOW_EXITED"})}this.cleanupResources()}normalizeOptionsForLegacySdk(t){if(t.sdkCore)return t;let e={...t};if(e.card?.cardholderName){let r={...e.card.cardholderName};r.visible===!1&&(r.required=!1),e.card={...e.card,cardholderName:r}}return e}setupLoadingTimeout(){this.clearLoadingTimeout(),this.loadingTimeout=setTimeout(()=>{this.host.sdkStateController.currentState.isLoading&&(E.warn("Loading timeout reached, resetting SDK state"),G({eventName:"PAYMENT_FLOW_EXITED",eventType:"timeout"}),this.cleanupResources(),this.host.sdkStateController.completeLoading())},1e4)}clearLoadingTimeout(){this.loadingTimeout!==null&&(clearTimeout(this.loadingTimeout),this.loadingTimeout=null)}cleanupResources(){if(this.clearLoadingTimeout(),this.currentSdkInstance)try{this.paymentsList=[],this.createPaymentMethodManager=null,this.host.sdkStateController.reset(),this.currentSdkInstance.teardown?.(),E.info("SDK instance cleaned up")}catch(t){E.errorWithDatadog("Error cleaning up SDK instance",{error:t})}wo(),E.setEnvironment(void 0),E.setSdkVersion(void 0),E.setClientToken(void 0),E.setSdkOptions(void 0),E.setClientSessionId(void 0),this.currentSdkInstance=null,this.primerJS=null}async _loadV2Sdk(t=sn){let e=window;if(e.Primer&&typeof e.Primer.preloadPrimer=="function"){E.info("SDK already loaded, skipping load script"),await e.Primer.preloadPrimer();return}await ln(t),await e.Primer.preloadPrimer()}initializeHeadless(){return async([t,e])=>{if(this.isDisconnected)return E.warn("Component disconnected, aborting SDK initialization"),D;if(!t||!e)return D;this.cleanupResources();let r;try{let o;if(e.sdkCore){let s=new Zr;o={createHeadless:(m,f)=>Qn(m,{...f,dialogProvider:s,sdkVersion:Xr})}}else await this._loadV2Sdk(),o=window.Primer;this.primerJS=new Dr(null);let n=this.normalizeOptionsForLegacySdk(e);E.setClientToken(t),E.setSdkOptions(n);let a=await o.createHeadless(t,{...n,onAvailablePaymentMethodsLoad:s=>{this.isDisconnected||(E.info("Configuration payment methods:",s),this.paymentsList=s)},onCheckoutComplete:({payment:s})=>{this.isDisconnected||(E.info("Payment completed:",s),this.host.sdkStateController.completeProcessing(),G({eventName:"PAYMENT_SUCCESS",paymentId:s?.id}),this.primerJS&&this.primerJS.handlePaymentComplete(s))},onCheckoutFail:(s,c)=>{if(this.isDisconnected)return;let m=s;m.response?.status&&m.response.status>=500?E.errorWithDatadog("Payment failed with server error",{error:s}):E.error("Payment failed:",s),this.host.sdkStateController.setFailure(s.code||"UNKNOWN_ERROR",s.message||"Unknown error occurred",{error:s}),G({eventName:"PAYMENT_FAILURE",paymentId:c.payment?.id}),this.primerJS&&this.primerJS.handlePaymentFailure(s,c.payment)},onBeforePaymentCreate:(s,c)=>{if(this.isDisconnected)return;this.host.sdkStateController.currentState.failure!==null&&G({eventName:"PAYMENT_REATTEMPTED",paymentMethod:s.paymentMethodType}),this.host.sdkStateController.startProcessing(),this.primerJS?this.primerJS.handleBeforePaymentCreate(s,c):c?.continuePaymentCreation()},onPaymentMethodAction:(s,c)=>{this.isDisconnected||s==="PAYMENT_METHOD_UNSELECTED"&&this.host.sdkStateController.stopProcessing()},onPaymentCreationStart:()=>{this.isDisconnected||(this.host.sdkStateController.resetError(),this.primerJS&&this.primerJS.handlePaymentStart())}});if(this.createPaymentMethodManager=a.createPaymentMethodManager.bind(a),this.currentSdkInstance=a,this.primerJS&&Object.defineProperty(this.primerJS,"headlessInstance",{value:a,writable:!1}),await a.start(),this.isDisconnected)return this.cleanupResources(),D;this.host.sdkContextController.setClientOptions(e),this.primerJS&&this.host.primerEventsController.dispatchCheckoutInitialized(this.primerJS);let l=a.getSDKUtilities();return r=a.getAnalyticsUtils?.(),r&&(this.host.sdkContextController.setAnalyticsUtils({...r,sdkVersion:Xr}),E.setEnvironment(r.environment),E.setSdkVersion(Xr),E.setClientSessionToken(r.clientSessionToken),E.setClientSessionId(r.clientSessionId),To({environment:r.environment,checkoutSessionId:r.checkoutSessionId,clientSessionId:r.clientSessionId||"",primerAccountId:r.primerAccountId||"",sdkVersion:Xr,clientSessionToken:r.clientSessionToken}),G({eventName:"SDK_INIT_START"})),this.host.sdkContextController.setHeadlessUtils(l),this.host.vaultManagerController.initializeVaultManager(a.createVaultManager.bind(a),{vaultEnabled:e.vault?.enabled,captureVaultedCardCvv:!!l.getPaymentMethodConfiguration("PAYMENT_CARD")?.options?.captureVaultedCardCvv,showEmptyState:e.vault?.showEmptyState}),a}catch(o){throw o instanceof Error&&(E.errorWithDatadog("SDK initialization error",{error:o,status:"error"}),this.host.sdkStateController.setError(o)),this.cleanupResources(),o}}}initializeLitContext(){return async([t,e])=>{if(this.isDisconnected)return D;if(!t||!e.length)return D;let r=new Map,o=new Map;try{for(let a of e){if(this.isDisconnected)break;let l=await this.initializePaymentMethodManager(a)();a&&l&&(r.set(a.type,a),o.set(a.type,l))}if(this.isDisconnected)return D;let n=new Rr(r);return this.host.sdkContextController.setPaymentManagers(o),this.host.sdkContextController.setPaymentMethods(n),this.primerJS&&this.primerJS.setPaymentMethods(n),this.host.primerEventsController.dispatchPaymentMethods(n),E.info("Initialized payment methods:",n.toArray()),r}catch(n){if(n instanceof Error)throw this.host.sdkStateController.setError(n),n;return null}finally{this.clearLoadingTimeout(),this.isDisconnected||(this.host.sdkStateController.completeLoading(),G({eventName:"SDK_INIT_END"}))}}}initializePaymentMethodManager(t){let{type:e,managerType:r}=t;return async()=>{if(this.isDisconnected||!this.createPaymentMethodManager)return null;if(r==="KLARNA"){let o=await this.createPaymentMethodManager("KLARNA",{onPaymentMethodCategoriesChange:n=>{this.isDisconnected||this.host.sdkContextController.setKlarnaCategories({categories:n,isLoading:!1})}});return o?{type:e,manager:o}:null}try{if(r==="CARD"){let n=await this.createPaymentMethodManager(e,{onCardNetworksChange:a=>{this.isDisconnected||this.host.cardNetworkController.processCardNetworkChangeEvent(a)},onCardNetworksLoading:()=>{this.isDisconnected||this.host.cardNetworkController.setCardNetworksLoading()}});return n?{type:e,manager:n}:null}let o=await this.createPaymentMethodManager(e);return o?{type:e,manager:o}:null}catch(o){return E.errorWithDatadog(`Failed to initialize manager for ${e}`,{error:o}),null}}}};var ei=class{constructor(t){this.host=t,t.addController(this)}_error(t){let{error:e}=t.detail;this.host.sdkStateController.setFailure("UNKNOWN_ERROR",e.message)}_mandateConfirmed(){this.host.sdkStateController.completeProcessing()}_mandateDeclined(){this.host.sdkStateController.setFailure("UNKNOWN_ERROR","Mandate declined")}hostConnected(){this.host.addEventListener("primer-ach-error",this._error.bind(this)),this.host.addEventListener("primer-ach-mandate-confirmed",this._mandateConfirmed.bind(this)),this.host.addEventListener("primer-ach-mandate-declined",this._mandateDeclined.bind(this))}hostDisconnected(){this.host.removeEventListener("primer-ach-error",this._error.bind(this)),this.host.removeEventListener("primer-ach-mandate-confirmed",this._mandateConfirmed.bind(this)),this.host.removeEventListener("primer-ach-mandate-declined",this._mandateDeclined.bind(this))}};var vd=fo({"../../localization/lit-localize/locales/ar.ts":()=>import("./chunks/ar.KRXB3WQO.js"),"../../localization/lit-localize/locales/bg.ts":()=>import("./chunks/bg.6SKJRXIR.js"),"../../localization/lit-localize/locales/ca.ts":()=>import("./chunks/ca.SANDLFEK.js"),"../../localization/lit-localize/locales/cs.ts":()=>import("./chunks/cs.FC4I5M3C.js"),"../../localization/lit-localize/locales/da.ts":()=>import("./chunks/da.YI32NZ7B.js"),"../../localization/lit-localize/locales/de.ts":()=>import("./chunks/de.7M7UFQB7.js"),"../../localization/lit-localize/locales/el.ts":()=>import("./chunks/el.XSGTYDZR.js"),"../../localization/lit-localize/locales/en-GB.ts":()=>import("./chunks/en-GB.VO4GDE3X.js"),"../../localization/lit-localize/locales/en.ts":()=>import("./chunks/en.MNFLVOE3.js"),"../../localization/lit-localize/locales/es-AR.ts":()=>import("./chunks/es-AR.TBWVUZEF.js"),"../../localization/lit-localize/locales/es-MX.ts":()=>import("./chunks/es-MX.6EMWUABR.js"),"../../localization/lit-localize/locales/es.ts":()=>import("./chunks/es.XZLDFHYI.js"),"../../localization/lit-localize/locales/et-EE.ts":()=>import("./chunks/et-EE.JBSFMKZ2.js"),"../../localization/lit-localize/locales/fi-FI.ts":()=>import("./chunks/fi-FI.I75VK2ID.js"),"../../localization/lit-localize/locales/fr.ts":()=>import("./chunks/fr.JBNP6RXT.js"),"../../localization/lit-localize/locales/he.ts":()=>import("./chunks/he.PW253QAL.js"),"../../localization/lit-localize/locales/hr.ts":()=>import("./chunks/hr.LM4RITYJ.js"),"../../localization/lit-localize/locales/hu.ts":()=>import("./chunks/hu.JGCKQA6J.js"),"../../localization/lit-localize/locales/id.ts":()=>import("./chunks/id.VBXULDDY.js"),"../../localization/lit-localize/locales/it.ts":()=>import("./chunks/it.7Q6BFLDK.js"),"../../localization/lit-localize/locales/ja.ts":()=>import("./chunks/ja.QOC76SSC.js"),"../../localization/lit-localize/locales/ko.ts":()=>import("./chunks/ko.BANZIFNH.js"),"../../localization/lit-localize/locales/lt-LT.ts":()=>import("./chunks/lt-LT.Q2SRJOKH.js"),"../../localization/lit-localize/locales/lt.ts":()=>import("./chunks/lt.XMNFEN5T.js"),"../../localization/lit-localize/locales/lv-LV.ts":()=>import("./chunks/lv-LV.3AJDTMU5.js"),"../../localization/lit-localize/locales/lv.ts":()=>import("./chunks/lv.TFPDXNEV.js"),"../../localization/lit-localize/locales/ms.ts":()=>import("./chunks/ms.FPTX4NM4.js"),"../../localization/lit-localize/locales/nb.ts":()=>import("./chunks/nb.CAFSKRQ2.js"),"../../localization/lit-localize/locales/nl.ts":()=>import("./chunks/nl.7BPSDYTC.js"),"../../localization/lit-localize/locales/nl_NL.ts":()=>import("./chunks/nl_NL.6ZVCFPVW.js"),"../../localization/lit-localize/locales/pl.ts":()=>import("./chunks/pl.RF34QM23.js"),"../../localization/lit-localize/locales/pt-BR.ts":()=>import("./chunks/pt-BR.AKDHLRUA.js"),"../../localization/lit-localize/locales/pt.ts":()=>import("./chunks/pt.VBALOWHZ.js"),"../../localization/lit-localize/locales/ro.ts":()=>import("./chunks/ro.WN7VCF27.js"),"../../localization/lit-localize/locales/ru.ts":()=>import("./chunks/ru.ICXGVGRR.js"),"../../localization/lit-localize/locales/sk.ts":()=>import("./chunks/sk.SIP5JIOX.js"),"../../localization/lit-localize/locales/sl.ts":()=>import("./chunks/sl.R77UEKCA.js"),"../../localization/lit-localize/locales/sr-RS.ts":()=>import("./chunks/sr-RS.6M2YSTDX.js"),"../../localization/lit-localize/locales/sv.ts":()=>import("./chunks/sv.33ZY4CDS.js"),"../../localization/lit-localize/locales/th.ts":()=>import("./chunks/th.M27YUIZC.js"),"../../localization/lit-localize/locales/tr.ts":()=>import("./chunks/tr.Q2SIY6NA.js"),"../../localization/lit-localize/locales/uk-UA.ts":()=>import("./chunks/uk-UA.EJZOGSJR.js"),"../../localization/lit-localize/locales/vi.ts":()=>import("./chunks/vi.3RROGLXM.js"),"../../localization/lit-localize/locales/zf.ts":()=>import("./chunks/zf.GGWFQ3Y7.js"),"../../localization/lit-localize/locales/zh-CN.ts":()=>import("./chunks/zh-CN.MQHNRMN4.js"),"../../localization/lit-localize/locales/zh-HK.ts":()=>import("./chunks/zh-HK.WNR7XUSX.js"),"../../localization/lit-localize/locales/zh-TW.ts":()=>import("./chunks/zh-TW.GNCY2PNY.js")});_i(i=>vd(`../../localization/lit-localize/locales/${i}.ts`));var bd={LOADER_DISABLED:"loader-disabled",CUSTOM_STYLES:"custom-styles",CLIENT_TOKEN:"client-token",JS_INIT:"js-initialized"},ue=class extends v{constructor(){super();this.customStyles="";this.clientToken="";this.options={};this.disableLoader=!1;this._jsInitialized=!1;this.previousLoadingState=!0;this.hasAssignedContent=!1;this._loadingTimeoutId=null;this._eventListenerController=null;this.locale="en-GB";this.onSlotChange=e=>{let o=e.target.assignedNodes({flatten:!0});this.hasAssignedContent=o.length>0,this.requestUpdate()};this.sdkContextController=new hr(this),this.sdkStateController=new mr(this),this.primerEventsController=new Pt(this),this.styleProcessingController=new fr(this),this.vaultManagerController=new Ut(this),this.cardNetworkController=new sr(this),this.achPaymentEventsController=new ei(this),new Qr(this)}set jsInitialized(e){this.requestUpdate(),this._jsInitialized=e}get jsInitialized(){return this._jsInitialized}connectedCallback(){super.connectedCallback(),this.sdkContextController.setEventsController(this.primerEventsController),this._eventListenerController=new AbortController,document.addEventListener("primer:card-submit",this.handleExternalCardSubmit.bind(this),{signal:this._eventListenerController.signal})}attributeChangedCallback(e,r,o){e===bd.CUSTOM_STYLES?this.styleProcessingController.processCustomStyles(o):super.attributeChangedCallback(e,r,o)}disconnectedCallback(){this._loadingTimeoutId&&(window.clearTimeout(this._loadingTimeoutId),this._loadingTimeoutId=null),this.sdkStateController?.currentState.isLoading&&this.sdkStateController.forceCompleteLoading(),this._eventListenerController&&(this._eventListenerController.abort(),this._eventListenerController=null),super.disconnectedCallback()}willUpdate(e){e.has("options")&&(this.options?.locale&&(Ti(this.options?.locale)?this.locale=wi(this.options?.locale):E.warn("\u{1F30E}\u2757 Unsupported locale provided:",this.options?.locale,"- Falling back to default locale `en-GB`")),Pi(this.locale||"en-GB"))}updated(){let e=getComputedStyle(this);this.sdkContextController.setComputedStyles(e),this.checkLoadingStateChange()}handleExternalCardSubmit(e){this._eventListenerController?.signal.aborted||e.target!==this&&this.primerEventsController.dispatchEvent("primer:card-submit",e.detail)}checkLoadingStateChange(){let e=this.sdkStateController?.currentState.isLoading||!1;this.previousLoadingState&&!e&&(this.jsInitialized=!0,G({eventName:"CHECKOUT_FLOW_STARTED"})),this.previousLoadingState=e,e&&!this._loadingTimeoutId?this._loadingTimeoutId=window.setTimeout(()=>{this.sdkStateController?.currentState.isLoading&&(E.warn("Loading timeout in component, forcing completion"),this.sdkStateController.forceCompleteLoading(),this.jsInitialized=!0),this._loadingTimeoutId=null},1e4):!e&&this._loadingTimeoutId&&(window.clearTimeout(this._loadingTimeoutId),this._loadingTimeoutId=null)}render(){let e=this.sdkStateController.currentState,r=e.isLoading,o=e.error,n=!r&&!o;return u` ${$(r,()=>h)} ${$(o,()=>u`<primer-checkout-error></primer-checkout-error>`)} ${$(n,()=>u`<slot name="main" @slotchange=${this.onSlotChange}></slot>${$(this.hasAssignedContent,()=>h,()=>u`<primer-main></primer-main>`)} `,()=>h)} `}addEventListener(e,r,o){super.addEventListener(e,r,o)}removeEventListener(e,r,o){super.removeEventListener(e,r,o)}};ue.styles=[w,an],d([p({type:String,attribute:"custom-styles"})],ue.prototype,"customStyles",2),d([p({type:String,attribute:"client-token"})],ue.prototype,"clientToken",2),d([p({type:Object})],ue.prototype,"options",2),d([p({type:Boolean,attribute:"loader-disabled"})],ue.prototype,"disableLoader",2),d([p({type:Boolean,reflect:!0,attribute:"js-initialized"})],ue.prototype,"_jsInitialized",2),d([ot("slot")],ue.prototype,"defaultSlot",2),d([M()],ue.prototype,"previousLoadingState",2),ue=d([O(),b("primer-checkout")],ue);function Cd(i){return document.querySelector(`#${i}`)}function Ed(i,t){let e=document.createElement("style");return e.textContent=i,e.id=t,e}function or(i,t,e=!0){if(!$r||Cd(t))return;let o=Ed(i,t);e&&document.head.firstChild?document.head.insertBefore(o,document.head.firstChild):document.head.appendChild(o)}var oa=`
153
+ `;async function wd(i,t){let e=i.configuration.paymentMethods.map(o=>{if(!t.includes(o.type))return null;if(o.implementationType==="WEB_REDIRECT")return new oo(o,i);if(o.type===J.PAYMENT_CARD)return new Xr(o,i);if(o.type===J.PAYPAL)return new ei(o,i);if(o.type===J.APPLE_PAY)return new Zr(o,i);if(o.type===J.GOOGLE_PAY)return new Qr(o,i)}).map(async o=>{if(!o)return null;try{return await o.setup()?o:null}catch(a){return $.warn(`Failed to initialize payment method ${o.config.type}:`,a),null}});return(await Promise.all(e)).filter(o=>!!o)}function Md(i,t,e){if(!t.configuration.clientSession.customer?.customerId)throw new H({message:"You must provide a `customerId` in the client session to use the Vault Manager."});let r=[];return{async fetchVaultedPaymentMethods(){let{data:o,error:a}=await t.pciApi.getPaymentInstruments();if(a)throw a;if(!o)throw new H({code:Kr.VAULT_ERROR,message:"Missing vaulted payment methods data"});return r=o.data,r},async deleteVaultedPaymentMethod(o){if(!r.find(l=>l.id===o))throw new H({code:Kr.VAULT_ERROR,message:"deleteVaultedPaymentMethod: the id provided doesn't match any vaulted payment method"});let{error:n}=await t.pciApi.deletePaymentInstrument(o);if(n)throw n;r=r.filter(l=>l.id!==o)},async startPaymentFlow(o){let a=r.find(l=>l.id===o);if(!a)throw new H({code:Kr.VAULT_ERROR,message:"startPaymentFlow: the id provided doesn't match any vaulted payment method"});let n=e.find(l=>l.config.type===a.paymentMethodType);if(!n)throw new H({code:Kr.TOKENIZATION_ERROR,message:`Payment instrument type ${a.paymentInstrumentType} is not recognized or not supported.`});await mo(i,n,a)},async createCvvInput(o){let a={blur:new Set,change:new Set,focus:new Set},n,l=nr(t.checkoutSessionId,Ma);await new Promise(h=>{l.onload=()=>{h()},(typeof o.container=="string"?document.querySelector(o.container):o.container)?.appendChild(l)}),Qi(l,o.style);let s=uo({namespace:`${t.checkoutSessionId}-${Ma}`,onMessage:h=>{let E=A=>h(A.data);return window.addEventListener("message",E),()=>window.removeEventListener("message",E)},sendMessage:h=>{l.contentWindow.postMessage(h,"*")}});function c(h,E){h!=="metadata"&&a[h].add(E)}s.setOnFocus(()=>{a.focus.forEach(h=>h())}),s.setOnBlur(()=>{a.blur.forEach(h=>h())}),s.setOnInput(h=>{n=h,a.change.forEach(E=>E())}),s.setCardNetwork(o.cardNetwork??""),s.setOptions({placeholder:o.placeholder??"123",ariaLabel:o.ariaLabel??"CVV",style:o.style});function m(){l.parentNode&&l.remove()}let y=t.subscribeToTeardown(m);return{frame:l,remove:()=>{y(),m()},get metadata(){return{error:n?.error??"cvvRequired",errorCode:n?.error??"cvvRequired",valid:n?.valid??!1,active:n?.focused??!1,dirty:n?.dirty??!1,touched:n?.touched??!1,submitted:!0}},addEventListener:c,addListener:c,removeListener(h,E){h!=="metadata"&&a[h].delete(E)},blur(){s.blur()},focus(){s.focus()},validate(){s.getFieldState().then(h=>{n=h,a.change.forEach(E=>E(n))})}}}}}async function sn(i,t){let e=await Cd(i,{locale:t.locale,dialogProvider:t.dialogProvider}),r=await wd(e,t.enabledPaymentMethods??[J.PAYMENT_CARD]);t.onClientSessionUpdate?.(e.configuration.clientSession),e.onClientConfigurationUpdate(a=>{t.onClientSessionUpdate?.(a.clientSession)});let o={environment:wa?"LOCAL":e.decodedClientToken.env,primerAccountId:e.configuration.primerAccountId,checkoutSessionId:e.checkoutSessionId,clientSessionId:e.configuration.clientSession?.clientSessionId,clientSessionToken:i,sdkVersion:t.sdkVersion};return Cl({environment:wa?"LOCAL":e.decodedClientToken.env,primerAccountId:o.primerAccountId||"",checkoutSessionId:o.checkoutSessionId,clientSessionId:o.clientSessionId||"",clientSessionToken:o.clientSessionToken,sdkVersion:o.sdkVersion||""}),t.onAvailablePaymentMethodsLoad?.(r.map(a=>({type:a.config.type,managerType:a.config.type===J.PAYMENT_CARD?Fi.CARD:a.config.implementationType==="NATIVE_SDK"?Fi.NATIVE:Fi.REDIRECT}))),{start:()=>Promise.resolve(),createPaymentMethodManager:async(a,n)=>{let l=r.find(({config:s})=>s.type===a);return l?l instanceof Xr?sd(t,e,l,n):l instanceof ei||l instanceof Zr||l instanceof Qr?cd(t,e,l):pd(t,e,l):($.warn(`Payment method ${a} not found`),null)},getSDKUtilities:()=>({getCardNetworkAsset:Ra,getUIOrderAmount:()=>{let{merchantAmount:a,totalOrderAmount:n,currencyCode:l}=e.configuration.clientSession.order;return tn(e.locale,a??n,l)},getCDNAssets:async a=>{let n=r.find(({config:c})=>c.type===a);if(!n)return;let{backgroundColor:l,iconUrl:s}=n.config.displayMetadata?.button||{};return{assets:{icon:s?.colored||""},colors:{background:l?.colored||"",main:l?.colored||""},description:n.config.name||null,is_primer_app:!1,name:n.config.name,website:null,goatCdnUrl:""}},getPaymentMethodConfiguration:a=>r.find(({config:n})=>n.type===a)?.config}),getAnalyticsUtils:()=>o,createVaultManager(){return Md(t,e,r)},getAssetsManager:()=>({getCardNetworkAsset:Ra,getPaymentMethodAsset:async a=>{let n=r.find(({config:m})=>m.type===a);if(!n)return null;let{backgroundColor:l,iconUrl:s,text:c}=n.config.displayMetadata?.button||{};return{backgroundColor:l,iconUrl:s,paymentMethodName:c,buttonText:c,displayName:n.config.name}}}),refreshClientSession:e.refreshClientConfiguration,teardown:()=>e.teardown()}}var Ra=i=>{let{asset:t,display:e}=so(i);return{cardUrl:`${Gl}/brand/card/${t}.svg`,displayName:e}};var Me={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},xe=i=>(...t)=>({_$litDirective$:i,values:t}),lt=class{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,r){this._$Ct=t,this._$AM=e,this._$Ci=r}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}};var cr=class extends lt{constructor(t){if(super(t),this.it=f,t.type!==Me.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(t){if(t===f||t==null)return this._t=void 0,this.it=t;if(t===Ee)return t;if(typeof t!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(t===this.it)return this._t;this.it=t;let e=[t];return e.raw=e,this._t={_$litType$:this.constructor.resultType,strings:e,values:[]}}};cr.directiveName="unsafeHTML",cr.resultType=1;var ln=xe(cr);var dn=Symbol.for("primer-sdk-core-dialog-access");function cn(i){return{token:dn,content:i}}function ho(i){return i!==void 0&&i.token===dn&&typeof i.content=="string"}var pn=g` :host { display: block; } .content-container { width: 100%; height: 100%; display: flex; flex-direction: column; background-color: var(--primer-color-background-outlined-default); } .error { display: flex; align-items: center; justify-content: center; padding: var(--primer-space-large); color: var(--primer-color-text-danger); font-family: var(--primer-typography-body-medium-font); font-size: var(--primer-typography-body-medium-size); } `;var oe=class extends v{constructor(){super(...arguments);this.size="large";this.showCloseButton=!1;this.open=!1}openDialog(){this.open=!0}closeDialog(){let e=document.querySelector("primer-dialog");if(e){e.startExitAnimation();let r=()=>{this.open=!1,this.removeEventListener("primer-dialog-close",r)};this.addEventListener("primer-dialog-close",r)}else this.open=!1}renderContent(){return u`<div class="content-container"><slot></slot>${this.renderSecureHtmlContent()}</div>`}renderSecureHtmlContent(){return this.secureHtmlContent?ho(this.secureHtmlContent)?u`${ln(this.secureHtmlContent.content)}`:(x.warn("PortalDialogComponent: Invalid access token provided for htmlContent. Content will not be rendered."),f):f}renderDialog(){return this.open?u`<primer-portal><primer-dialog .open=${this.open} size=${this.size} .showCloseButton=${!1} @primer-dialog-close="${()=>this.closeDialog()}" >${this.renderContent()}</primer-dialog></primer-portal>`:f}connectedCallback(){super.connectedCallback(),this.open||this.openDialog()}updated(e){if(super.updated(e),e.has("secureHtmlContent")){let r=this.secureHtmlContent;r&&!ho(r)&&(x.errorWithDatadog("PortalDialogComponent: Invalid access token provided for htmlContent. Content will not be rendered."),this.secureHtmlContent=void 0)}e.has("open")&&this.open&&this.onOpen&&this.onOpen(),e.has("open")&&this.open&&this.onContentRendered&&this.updateComplete.then(()=>{requestAnimationFrame(()=>{this.onContentRendered?.()})})}render(){return u`${this.renderDialog()}`}};oe.styles=[P,pn],d([p({type:String})],oe.prototype,"size",2),d([p({type:Boolean})],oe.prototype,"showCloseButton",2),d([p({type:Object})],oe.prototype,"onOpen",2),d([p({type:Object})],oe.prototype,"onContentRendered",2),d([p({type:Object,converter:{fromAttribute:()=>{},toAttribute:()=>null}})],oe.prototype,"secureHtmlContent",2),d([M()],oe.prototype,"open",2),oe=d([b("primer-portal-dialog"),R()],oe);var ii=class{constructor(){this.currentDialog=null;this.currentResolver=null}async show(t){return new Promise(e=>{let r=cn(t.htmlContent),o=new oe;o.secureHtmlContent=r,o.size="large",o.showCloseButton=!1,o.onContentRendered=t.onContentReady;let a=()=>{this.currentDialog=null,this.currentResolver=null,e({success:!1})};o.addEventListener("primer-dialog-close",a),this.currentDialog=o,this.currentResolver=e,document.body.appendChild(o)})}close(){this.currentDialog&&this.currentResolver&&(this.currentDialog.closeDialog(),this.currentResolver({success:!0}),this.currentDialog.remove(),this.currentDialog=null,this.currentResolver=null)}};var oi="0.3.12",ai=class{constructor(t){this.createPaymentMethodManager=null;this._paymentsList=[];this.currentSdkInstance=null;this.primerJS=null;this.loadingTimeout=null;this.isDisconnected=!1;(this.host=t).addController(this),this.isDisconnected=!1,this.sdkInstanceTask=new D(t,{args:()=>[this.host.clientToken,this.host.options],task:this.initializeHeadless()}),new D(t,{args:()=>[this.sdkInstanceTask.value,this.paymentsList],task:this.initializeLitContext()})}set paymentsList(t){this._paymentsList=t,this.host.requestUpdate()}get paymentsList(){return this._paymentsList}hostConnected(){this.isDisconnected=!1,this.host.sdkStateController.startLoading(),this.setupLoadingTimeout()}hostDisconnected(){if(this.isDisconnected=!0,this.host.sdkContextController.getAnalyticsUtils()){let e=this.host.sdkStateController.currentState;(e.isProcessing||e.isLoading||this.currentSdkInstance)&&W({eventName:"PAYMENT_FLOW_EXITED"})}this.cleanupResources()}normalizeOptionsForLegacySdk(t){if(t.sdkCore)return t;let e={...t};if(e.card?.cardholderName){let r={...e.card.cardholderName};r.visible===!1&&(r.required=!1),e.card={...e.card,cardholderName:r}}return e}setupLoadingTimeout(){this.clearLoadingTimeout(),this.loadingTimeout=setTimeout(()=>{this.host.sdkStateController.currentState.isLoading&&(x.warn("Loading timeout reached, resetting SDK state"),W({eventName:"PAYMENT_FLOW_EXITED",eventType:"timeout"}),this.cleanupResources(),this.host.sdkStateController.completeLoading())},1e4)}clearLoadingTimeout(){this.loadingTimeout!==null&&(clearTimeout(this.loadingTimeout),this.loadingTimeout=null)}cleanupResources(){if(this.clearLoadingTimeout(),this.currentSdkInstance)try{this.paymentsList=[],this.createPaymentMethodManager=null,this.host.sdkStateController.reset(),this.currentSdkInstance.teardown?.(),x.info("SDK instance cleaned up")}catch(t){x.errorWithDatadog("Error cleaning up SDK instance",{error:t})}Do(),x.setEnvironment(void 0),x.setSdkVersion(void 0),x.setClientToken(void 0),x.setSdkOptions(void 0),x.setClientSessionId(void 0),this.currentSdkInstance=null,this.primerJS=null}async _loadV2Sdk(t=ha){let e=window;if(e.Primer&&typeof e.Primer.preloadPrimer=="function"){x.info("SDK already loaded, skipping load script"),await e.Primer.preloadPrimer();return}await fa(t),await e.Primer.preloadPrimer()}initializeHeadless(){return async([t,e])=>{if(this.isDisconnected)return x.warn("Component disconnected, aborting SDK initialization"),N;if(!t||!e)return N;this.cleanupResources();let r;try{let o;if(e.sdkCore){let s=new ii;o={createHeadless:(m,y)=>sn(m,{...y,dialogProvider:s,sdkVersion:oi})}}else await this._loadV2Sdk(),o=window.Primer;this.primerJS=new Fr(null);let a=this.normalizeOptionsForLegacySdk(e);x.setClientToken(t),x.setSdkOptions(a);let n=await o.createHeadless(t,{...a,onAvailablePaymentMethodsLoad:s=>{this.isDisconnected||(x.info("Configuration payment methods:",s),this.paymentsList=s)},onCheckoutComplete:({payment:s})=>{this.isDisconnected||(x.info("Payment completed:",s),this.host.sdkStateController.completeProcessing(),W({eventName:"PAYMENT_SUCCESS",paymentId:s?.id}),this.primerJS&&this.primerJS.handlePaymentComplete(s))},onCheckoutFail:(s,c)=>{if(this.isDisconnected)return;let m=s;m.response?.status&&m.response.status>=500?x.errorWithDatadog("Payment failed with server error",{error:s}):x.error("Payment failed:",s),this.host.sdkStateController.setFailure(s.code||"UNKNOWN_ERROR",s.message||"Unknown error occurred",{error:s}),W({eventName:"PAYMENT_FAILURE",paymentId:c.payment?.id}),this.primerJS&&this.primerJS.handlePaymentFailure(s,c.payment)},onBeforePaymentCreate:(s,c)=>{if(this.isDisconnected)return;this.host.sdkStateController.currentState.failure!==null&&W({eventName:"PAYMENT_REATTEMPTED",paymentMethod:s.paymentMethodType}),this.host.sdkStateController.startProcessing(),this.primerJS?this.primerJS.handleBeforePaymentCreate(s,c):c?.continuePaymentCreation()},onPaymentMethodAction:(s,c)=>{this.isDisconnected||s==="PAYMENT_METHOD_UNSELECTED"&&this.host.sdkStateController.stopProcessing()},onPaymentCreationStart:()=>{this.isDisconnected||(this.host.sdkStateController.resetError(),this.primerJS&&this.primerJS.handlePaymentStart())}});if(this.createPaymentMethodManager=n.createPaymentMethodManager.bind(n),this.currentSdkInstance=n,this.primerJS&&Object.defineProperty(this.primerJS,"headlessInstance",{value:n,writable:!1}),await n.start(),this.isDisconnected)return this.cleanupResources(),N;this.host.sdkContextController.setClientOptions(e),this.primerJS&&this.host.primerEventsController.dispatchCheckoutInitialized(this.primerJS);let l=n.getSDKUtilities();return r=n.getAnalyticsUtils?.(),r&&(this.host.sdkContextController.setAnalyticsUtils({...r,sdkVersion:oi}),x.setEnvironment(r.environment),x.setSdkVersion(oi),x.setClientSessionToken(r.clientSessionToken),x.setClientSessionId(r.clientSessionId),Ro({environment:r.environment,checkoutSessionId:r.checkoutSessionId,clientSessionId:r.clientSessionId||"",primerAccountId:r.primerAccountId||"",sdkVersion:oi,clientSessionToken:r.clientSessionToken}),W({eventName:"SDK_INIT_START"})),this.host.sdkContextController.setHeadlessUtils(l),this.host.vaultManagerController.initializeVaultManager(n.createVaultManager.bind(n),{vaultEnabled:e.vault?.enabled,captureVaultedCardCvv:!!l.getPaymentMethodConfiguration("PAYMENT_CARD")?.options?.captureVaultedCardCvv,showEmptyState:e.vault?.showEmptyState}),n}catch(o){throw o instanceof Error&&(x.errorWithDatadog("SDK initialization error",{error:o,status:"error"}),this.host.sdkStateController.setError(o)),this.cleanupResources(),o}}}initializeLitContext(){return async([t,e])=>{if(this.isDisconnected)return N;if(!t||!e.length)return N;let r=new Map,o=new Map;try{for(let n of e){if(this.isDisconnected)break;let l=await this.initializePaymentMethodManager(n)();n&&l&&(r.set(n.type,n),o.set(n.type,l))}if(this.isDisconnected)return N;let a=new Br(r);return this.host.sdkContextController.setPaymentManagers(o),this.host.sdkContextController.setPaymentMethods(a),this.primerJS&&this.primerJS.setPaymentMethods(a),this.host.primerEventsController.dispatchPaymentMethods(a),x.info("Initialized payment methods:",a.toArray()),r}catch(a){if(a instanceof Error)throw this.host.sdkStateController.setError(a),a;return null}finally{this.clearLoadingTimeout(),this.isDisconnected||(this.host.sdkStateController.completeLoading(),W({eventName:"SDK_INIT_END"}))}}}initializePaymentMethodManager(t){let{type:e,managerType:r}=t;return async()=>{if(this.isDisconnected||!this.createPaymentMethodManager)return null;if(r==="KLARNA"){let o=await this.createPaymentMethodManager("KLARNA",{onPaymentMethodCategoriesChange:a=>{this.isDisconnected||this.host.sdkContextController.setKlarnaCategories({categories:a,isLoading:!1})}});return o?{type:e,manager:o}:null}try{if(r==="CARD"){let a=await this.createPaymentMethodManager(e,{onCardNetworksChange:n=>{this.isDisconnected||this.host.cardNetworkController.processCardNetworkChangeEvent(n)},onCardNetworksLoading:()=>{this.isDisconnected||this.host.cardNetworkController.setCardNetworksLoading()}});return a?{type:e,manager:a}:null}let o=await this.createPaymentMethodManager(e);return o?{type:e,manager:o}:null}catch(o){return x.errorWithDatadog(`Failed to initialize manager for ${e}`,{error:o}),null}}}};var ni=class{constructor(t){this.host=t,t.addController(this)}_error(t){let{error:e}=t.detail;this.host.sdkStateController.setFailure("UNKNOWN_ERROR",e.message)}_mandateConfirmed(){this.host.sdkStateController.completeProcessing()}_mandateDeclined(){this.host.sdkStateController.setFailure("UNKNOWN_ERROR","Mandate declined")}hostConnected(){this.host.addEventListener("primer-ach-error",this._error.bind(this)),this.host.addEventListener("primer-ach-mandate-confirmed",this._mandateConfirmed.bind(this)),this.host.addEventListener("primer-ach-mandate-declined",this._mandateDeclined.bind(this))}hostDisconnected(){this.host.removeEventListener("primer-ach-error",this._error.bind(this)),this.host.removeEventListener("primer-ach-mandate-confirmed",this._mandateConfirmed.bind(this)),this.host.removeEventListener("primer-ach-mandate-declined",this._mandateDeclined.bind(this))}};var kd=Ao({"../../localization/lit-localize/locales/ar.ts":()=>import("./chunks/ar.KRXB3WQO.js"),"../../localization/lit-localize/locales/bg.ts":()=>import("./chunks/bg.6SKJRXIR.js"),"../../localization/lit-localize/locales/ca.ts":()=>import("./chunks/ca.SANDLFEK.js"),"../../localization/lit-localize/locales/cs.ts":()=>import("./chunks/cs.FC4I5M3C.js"),"../../localization/lit-localize/locales/da.ts":()=>import("./chunks/da.YI32NZ7B.js"),"../../localization/lit-localize/locales/de.ts":()=>import("./chunks/de.7M7UFQB7.js"),"../../localization/lit-localize/locales/el.ts":()=>import("./chunks/el.XSGTYDZR.js"),"../../localization/lit-localize/locales/en-GB.ts":()=>import("./chunks/en-GB.VO4GDE3X.js"),"../../localization/lit-localize/locales/en.ts":()=>import("./chunks/en.MNFLVOE3.js"),"../../localization/lit-localize/locales/es-AR.ts":()=>import("./chunks/es-AR.TBWVUZEF.js"),"../../localization/lit-localize/locales/es-MX.ts":()=>import("./chunks/es-MX.6EMWUABR.js"),"../../localization/lit-localize/locales/es.ts":()=>import("./chunks/es.XZLDFHYI.js"),"../../localization/lit-localize/locales/et-EE.ts":()=>import("./chunks/et-EE.JBSFMKZ2.js"),"../../localization/lit-localize/locales/fi-FI.ts":()=>import("./chunks/fi-FI.I75VK2ID.js"),"../../localization/lit-localize/locales/fr.ts":()=>import("./chunks/fr.JBNP6RXT.js"),"../../localization/lit-localize/locales/he.ts":()=>import("./chunks/he.PW253QAL.js"),"../../localization/lit-localize/locales/hr.ts":()=>import("./chunks/hr.LM4RITYJ.js"),"../../localization/lit-localize/locales/hu.ts":()=>import("./chunks/hu.JGCKQA6J.js"),"../../localization/lit-localize/locales/id.ts":()=>import("./chunks/id.VBXULDDY.js"),"../../localization/lit-localize/locales/it.ts":()=>import("./chunks/it.7Q6BFLDK.js"),"../../localization/lit-localize/locales/ja.ts":()=>import("./chunks/ja.QOC76SSC.js"),"../../localization/lit-localize/locales/ko.ts":()=>import("./chunks/ko.BANZIFNH.js"),"../../localization/lit-localize/locales/lt-LT.ts":()=>import("./chunks/lt-LT.Q2SRJOKH.js"),"../../localization/lit-localize/locales/lt.ts":()=>import("./chunks/lt.XMNFEN5T.js"),"../../localization/lit-localize/locales/lv-LV.ts":()=>import("./chunks/lv-LV.3AJDTMU5.js"),"../../localization/lit-localize/locales/lv.ts":()=>import("./chunks/lv.TFPDXNEV.js"),"../../localization/lit-localize/locales/ms.ts":()=>import("./chunks/ms.FPTX4NM4.js"),"../../localization/lit-localize/locales/nb.ts":()=>import("./chunks/nb.CAFSKRQ2.js"),"../../localization/lit-localize/locales/nl.ts":()=>import("./chunks/nl.7BPSDYTC.js"),"../../localization/lit-localize/locales/nl_NL.ts":()=>import("./chunks/nl_NL.6ZVCFPVW.js"),"../../localization/lit-localize/locales/pl.ts":()=>import("./chunks/pl.RF34QM23.js"),"../../localization/lit-localize/locales/pt-BR.ts":()=>import("./chunks/pt-BR.AKDHLRUA.js"),"../../localization/lit-localize/locales/pt.ts":()=>import("./chunks/pt.VBALOWHZ.js"),"../../localization/lit-localize/locales/ro.ts":()=>import("./chunks/ro.WN7VCF27.js"),"../../localization/lit-localize/locales/ru.ts":()=>import("./chunks/ru.ICXGVGRR.js"),"../../localization/lit-localize/locales/sk.ts":()=>import("./chunks/sk.SIP5JIOX.js"),"../../localization/lit-localize/locales/sl.ts":()=>import("./chunks/sl.R77UEKCA.js"),"../../localization/lit-localize/locales/sr-RS.ts":()=>import("./chunks/sr-RS.6M2YSTDX.js"),"../../localization/lit-localize/locales/sv.ts":()=>import("./chunks/sv.33ZY4CDS.js"),"../../localization/lit-localize/locales/th.ts":()=>import("./chunks/th.M27YUIZC.js"),"../../localization/lit-localize/locales/tr.ts":()=>import("./chunks/tr.Q2SIY6NA.js"),"../../localization/lit-localize/locales/uk-UA.ts":()=>import("./chunks/uk-UA.EJZOGSJR.js"),"../../localization/lit-localize/locales/vi.ts":()=>import("./chunks/vi.3RROGLXM.js"),"../../localization/lit-localize/locales/zf.ts":()=>import("./chunks/zf.GGWFQ3Y7.js"),"../../localization/lit-localize/locales/zh-CN.ts":()=>import("./chunks/zh-CN.MQHNRMN4.js"),"../../localization/lit-localize/locales/zh-HK.ts":()=>import("./chunks/zh-HK.WNR7XUSX.js"),"../../localization/lit-localize/locales/zh-TW.ts":()=>import("./chunks/zh-TW.GNCY2PNY.js")});Ni(i=>kd(`../../localization/lit-localize/locales/${i}.ts`));var Id={LOADER_DISABLED:"loader-disabled",CUSTOM_STYLES:"custom-styles",CLIENT_TOKEN:"client-token",JS_INIT:"js-initialized"},ue=class extends v{constructor(){super();this.customStyles="";this.clientToken="";this.options={};this.disableLoader=!1;this._jsInitialized=!1;this.previousLoadingState=!0;this.hasAssignedContent=!1;this._loadingTimeoutId=null;this._eventListenerController=null;this.locale="en-GB";this.onSlotChange=e=>{let o=e.target.assignedNodes({flatten:!0});this.hasAssignedContent=o.length>0,this.requestUpdate()};this.sdkContextController=new Er(this),this.sdkStateController=new br(this),this.primerEventsController=new Mt(this),this.styleProcessingController=new xr(this),this.vaultManagerController=new jt(this),this.cardNetworkController=new hr(this),this.achPaymentEventsController=new ni(this),new ai(this)}set jsInitialized(e){this.requestUpdate(),this._jsInitialized=e}get jsInitialized(){return this._jsInitialized}connectedCallback(){super.connectedCallback(),this.sdkContextController.setEventsController(this.primerEventsController),this._eventListenerController=new AbortController,document.addEventListener("primer:card-submit",this.handleExternalCardSubmit.bind(this),{signal:this._eventListenerController.signal})}attributeChangedCallback(e,r,o){e===Id.CUSTOM_STYLES?this.styleProcessingController.processCustomStyles(o):super.attributeChangedCallback(e,r,o)}disconnectedCallback(){this._loadingTimeoutId&&(window.clearTimeout(this._loadingTimeoutId),this._loadingTimeoutId=null),this.sdkStateController?.currentState.isLoading&&this.sdkStateController.forceCompleteLoading(),this._eventListenerController&&(this._eventListenerController.abort(),this._eventListenerController=null),super.disconnectedCallback()}willUpdate(e){e.has("options")&&(this.options?.locale&&(Oi(this.options?.locale)?this.locale=Ri(this.options?.locale):x.warn("\u{1F30E}\u2757 Unsupported locale provided:",this.options?.locale,"- Falling back to default locale `en-GB`")),Li(this.locale||"en-GB"))}updated(){let e=getComputedStyle(this);this.sdkContextController.setComputedStyles(e),this.checkLoadingStateChange()}handleExternalCardSubmit(e){this._eventListenerController?.signal.aborted||e.target!==this&&this.primerEventsController.dispatchEvent("primer:card-submit",e.detail)}checkLoadingStateChange(){let e=this.sdkStateController?.currentState.isLoading||!1;this.previousLoadingState&&!e&&(this.jsInitialized=!0,W({eventName:"CHECKOUT_FLOW_STARTED"})),this.previousLoadingState=e,e&&!this._loadingTimeoutId?this._loadingTimeoutId=window.setTimeout(()=>{this.sdkStateController?.currentState.isLoading&&(x.warn("Loading timeout in component, forcing completion"),this.sdkStateController.forceCompleteLoading(),this.jsInitialized=!0),this._loadingTimeoutId=null},1e4):!e&&this._loadingTimeoutId&&(window.clearTimeout(this._loadingTimeoutId),this._loadingTimeoutId=null)}render(){let e=this.sdkStateController.currentState,r=e.isLoading,o=e.error,a=!r&&!o;return u` ${V(r,()=>f)} ${V(o,()=>u`<primer-checkout-error></primer-checkout-error>`)} ${V(a,()=>u`<slot name="main" @slotchange=${this.onSlotChange}></slot>${V(this.hasAssignedContent,()=>f,()=>u`<primer-main></primer-main>`)} `,()=>f)} `}addEventListener(e,r,o){super.addEventListener(e,r,o)}removeEventListener(e,r,o){super.removeEventListener(e,r,o)}};ue.styles=[P,ua],d([p({type:String,attribute:"custom-styles"})],ue.prototype,"customStyles",2),d([p({type:String,attribute:"client-token"})],ue.prototype,"clientToken",2),d([p({type:Object})],ue.prototype,"options",2),d([p({type:Boolean,attribute:"loader-disabled"})],ue.prototype,"disableLoader",2),d([p({type:Boolean,reflect:!0,attribute:"js-initialized"})],ue.prototype,"_jsInitialized",2),d([at("slot")],ue.prototype,"defaultSlot",2),d([M()],ue.prototype,"previousLoadingState",2),ue=d([R(),b("primer-checkout")],ue);function Nd(i){return document.querySelector(`#${i}`)}function Ld(i,t){let e=document.createElement("style");return e.textContent=i,e.id=t,e}function pr(i,t,e=!0){if(!zr||Nd(t))return;let o=Ld(i,t);e&&document.head.firstChild?document.head.insertBefore(o,document.head.firstChild):document.head.appendChild(o)}var mn=`
154
154
  @keyframes primer-css-spinner-rotate {
155
155
  0% {
156
156
  transform: rotate(0deg);
@@ -186,7 +186,19 @@ primer-checkout:not([js-initialized]):not([loader-disabled])::after {
186
186
  animation: primer-css-spinner-rotate 1.2s linear infinite;
187
187
  z-index: 9999;
188
188
  }
189
- `;var na=':root,primer-checkout{--primer-color-background-transparent-default:rgba(255,255,255,0);--primer-color-border-transparent-default:rgba(255,255,255,0);--primer-color-gray-100:#f5f5f5;--primer-color-gray-200:#eeeeee;--primer-color-gray-300:#e0e0e0;--primer-color-gray-400:#bdbdbd;--primer-color-gray-500:#9e9e9e;--primer-color-gray-600:#757575;--primer-color-gray-900:#212121;--primer-color-gray-000:#ffffff;--primer-color-brand:#2f98ff;--primer-color-red-100:#ffecec;--primer-color-red-500:#ff7279;--primer-color-red-900:#b4324b;--primer-color-blue-500:#399dff;--primer-color-blue-900:#2270f4;--primer-radius-base:4px;--primer-typography-brand:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;--primer-typography-title-xlarge-letter-spacing:-0.6px;--primer-typography-title-xlarge-weight:550;--primer-typography-title-xlarge-size:24px;--primer-typography-title-xlarge-line-height:32px;--primer-typography-title-large-letter-spacing:-0.2px;--primer-typography-title-large-weight:550;--primer-typography-title-large-size:16px;--primer-typography-title-large-line-height:20px;--primer-typography-body-large-letter-spacing:-0.2px;--primer-typography-body-large-weight:400;--primer-typography-body-large-size:16px;--primer-typography-body-large-line-height:20px;--primer-typography-body-medium-letter-spacing:0px;--primer-typography-body-medium-weight:400;--primer-typography-body-medium-size:14px;--primer-typography-body-medium-line-height:20px;--primer-typography-body-small-letter-spacing:0px;--primer-typography-body-small-weight:400;--primer-typography-body-small-size:12px;--primer-typography-body-small-line-height:16px;--primer-space-base:4px;--primer-size-base:4px;--primer-animation-duration:200ms;--primer-animation-easing:cubic-bezier(0.44,0,0.4,1);--primer-color-background-outlined-default:var(--primer-color-gray-000);--primer-color-background-outlined-disabled:var(--primer-color-gray-100);--primer-color-background-transparent-hover:var(--primer-color-gray-100);--primer-color-background-transparent-active:var(--primer-color-gray-200);--primer-color-background-transparent-loading:var(--primer-color-gray-100);--primer-color-background-transparent-focus:var(--primer-color-background-transparent-default);--primer-color-background-transparent-disabled:var(--primer-color-gray-100);--primer-color-background-transparent-selected:var(--primer-color-gray-100);--primer-color-text-primary:var(--primer-color-gray-900);--primer-color-text-placeholder:var(--primer-color-gray-500);--primer-color-text-disabled:var(--primer-color-gray-400);--primer-color-text-negative:var(--primer-color-red-900);--primer-color-text-link:var(--primer-color-blue-900);--primer-color-text-secondary:var(--primer-color-gray-600);--primer-color-border-outlined-default:var(--primer-color-gray-300);--primer-color-border-outlined-hover:var(--primer-color-gray-400);--primer-color-border-outlined-active:var(--primer-color-gray-500);--primer-color-border-outlined-disabled:var(--primer-color-gray-200);--primer-color-border-outlined-loading:var(--primer-color-gray-200);--primer-color-border-outlined-selected:var(--primer-color-brand);--primer-color-border-outlined-error:var(--primer-color-red-500);--primer-color-border-transparent-hover:var(--primer-color-border-transparent-default);--primer-color-border-transparent-active:var(--primer-color-border-transparent-default);--primer-color-border-transparent-disabled:var(--primer-color-border-transparent-default);--primer-color-border-transparent-selected:var(--primer-color-border-transparent-default);--primer-color-icon-primary:var(--primer-color-gray-900);--primer-color-icon-disabled:var(--primer-color-gray-400);--primer-color-icon-negative:var(--primer-color-red-500);--primer-color-focus:var(--primer-color-brand);--primer-color-loader:var(--primer-color-brand);--primer-radius-medium:8px;--primer-radius-small:4px;--primer-radius-large:12px;--primer-radius-xsmall:2px;--primer-typography-title-xlarge-font:var(--primer-typography-brand);--primer-typography-title-large-font:var(--primer-typography-brand);--primer-typography-body-large-font:var(--primer-typography-brand);--primer-typography-body-medium-font:var(--primer-typography-brand);--primer-typography-body-small-font:var(--primer-typography-brand);--primer-space-xxsmall:2px;--primer-space-xsmall:4px;--primer-space-small:8px;--primer-space-medium:12px;--primer-space-large:16px;--primer-space-xlarge:20px;--primer-size-small:16px;--primer-size-medium:20px;--primer-size-large:24px;--primer-size-xlarge:32px;--primer-size-xxlarge:40px;--primer-size-xxxlarge:56px;--primer-color-background-outlined-focus:var(--primer-color-background-outlined-default);--primer-color-background-outlined-loading:var(--primer-color-background-outlined-disabled);--primer-color-background-outlined-active:var(--primer-color-background-outlined-default);--primer-color-background-outlined-hover:var(--primer-color-background-outlined-default);--primer-color-background-outlined-selected:var(--primer-color-background-outlined-default);--primer-color-background-outlined-error:var(--primer-color-background-outlined-default);--primer-color-border-outlined-focus:var(--primer-color-focus);--primer-color-border-transparent-focus:var(--primer-color-focus);--primer-color-border-transparent-loading:var(--primer-color-border-transparent-disabled)}',aa=":root,primer-checkout.primer-dark-theme{--primer-color-gray-100:#292929;--primer-color-gray-200:#424242;--primer-color-gray-300:#575757;--primer-color-gray-400:#858585;--primer-color-gray-500:#767577;--primer-color-gray-600:#c7c7c7;--primer-color-gray-900:#efefef;--primer-color-gray-000:#171619;--primer-color-brand:#2f98ff;--primer-color-red-100:#321c20;--primer-color-red-500:#e46d70;--primer-color-red-900:#f6bfbf;--primer-color-blue-500:#3f93e4;--primer-color-blue-900:#4aaeff}";var Ad="primer-light-theme-css",xd="primer-dark-theme-css";function no(){or(na,Ad,!0)}function ao(){or(aa,xd,!0)}function sa(){no(),ao()}function la(){or(oa,"primer-css-loader-styles",!1)}function da(){sa()}function Sd(){no()}function _d(){ao()}var ca=g` :host { display: inline-flex; align-items: center; justify-content: center; } .spinner-container { display: flex; align-items: center; justify-content: center; width: var(--spinner-size, var(--primer-size-medium)); height: var(--spinner-size, var(--primer-size-medium)); } .spinner-container:not(.compact) { margin: var(--primer-space-small) 0; } .spinner-container.compact { margin: 0; } .spinner { animation: spinner-rotate 1.2s linear infinite; width: 100%; height: 100%; color: var(--spinner-color, var(--primer-color-loader)); } .path { fill: currentColor; transform-origin: center; transition: fill var(--primer-animation-duration, 200ms) var(--primer-animation-easing, ease); } @keyframes spinner-rotate { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } `;var so={small:16,medium:24,large:32},ke=class extends v{constructor(){super(...arguments);this.color="var(--primer-color-loader)";this.size="medium";this.compact=!1}getSize(){if(this.size in so)return so[this.size];let e=parseInt(this.size,10);return isNaN(e)?so.medium:e}render(){let e=this.getSize(),r=20,o=`0 0 ${r} ${r}`;return this.style.setProperty("--spinner-color",this.color),this.style.setProperty("--spinner-size",`${e}px`),u`<div class="spinner-container ${this.compact?"compact":""}"><svg class="spinner" width="${e}" height="${e}" viewBox="${o}" fill="none" xmlns="http://www.w3.org/2000/svg" role="status" aria-label="Loading" ><path d="M4.27827 10.002C4.27827 6.84166 6.84019 4.27973 10.0005 4.27973C10.7676 4.27973 11.3894 3.6579 11.3894 2.89084C11.3894 2.12378 10.7676 1.50195 10.0005 1.50195C5.30607 1.50195 1.50049 5.30753 1.50049 10.002C1.50049 14.6964 5.30607 18.502 10.0005 18.502C14.6949 18.502 18.5005 14.6964 18.5005 10.002C18.5005 9.23489 17.8787 8.61306 17.1116 8.61306C16.3445 8.61306 15.7227 9.23489 15.7227 10.002C15.7227 13.1622 13.1608 15.7242 10.0005 15.7242C6.84019 15.7242 4.27827 13.1622 4.27827 10.002Z" fill="currentColor" class="path" /></svg></div>`}};ke.styles=[ca],d([p({type:String})],ke.prototype,"color",2),d([p({type:String})],ke.prototype,"size",2),d([p({type:Boolean})],ke.prototype,"compact",2),ke=d([b("primer-spinner")],ke);var Z=Ae(class extends st{constructor(i){if(super(i),i.type!==Ie.ATTRIBUTE||i.name!=="class"||i.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(i){return" "+Object.keys(i).filter(t=>i[t]).join(" ")+" "}update(i,[t]){if(this.st===void 0){this.st=new Set,i.strings!==void 0&&(this.nt=new Set(i.strings.join(" ").split(/\s/).filter(r=>r!=="")));for(let r in t)t[r]&&!this.nt?.has(r)&&this.st.add(r);return this.render(t)}let e=i.element.classList;for(let r of this.st)r in t||(e.remove(r),this.st.delete(r));for(let r in t){let o=!!t[r];o===this.st.has(r)||this.nt?.has(r)||(o?(e.add(r),this.st.add(r)):(e.remove(r),this.st.delete(r)))}return Ee}});var pa=g` * { box-sizing: border-box; } :host { display: block; width: 100%; } .input-slot.focus-within { outline: 2px solid var(--primer-color-border-outlined-focus); outline-offset: -2px; } :host([has-error]) .input-slot.focus-within { outline: 2px solid var(--primer-color-border-outlined-error); background-color: var(--primer-color-background-outlined-error); } :host([has-error]) .input-slot { border-color: var(--primer-color-border-outlined-error); background-color: var(--primer-color-background-outlined-error); } .input-wrapper { display: flex; flex-direction: column; gap: var(--primer-space-xsmall); } .input-slot { padding: var(--primer-space-medium) var(--primer-space-medium); border: 1px solid var(--primer-color-border-outlined-default); border-radius: var(--primer-radius-small); background-color: var(--primer-color-background-outlined-default); height: calc( var(--primer-typography-body-large-line-height) + var(--primer-space-medium) + var(--primer-space-medium) + 2px ); display: flex; cursor: text; /* Indicate text input interactivity */ /* 2px is the border width */ } .input-slot ::slotted(*) { width: 100%; } .input-slot:hover { border-color: var(--primer-color-border-outlined-hover); background-color: var(--primer-color-background-outlined-hover); } .input-slot:active { border-color: var(--primer-color-border-outlined-active); background-color: var(--primer-color-background-outlined-active); } .input-slot:disabled { background-color: var(--primer-color-background-outlined-disabled); border-color: var(--primer-color-border-outlined-disabled); cursor: not-allowed; } `;var Ne=class extends v{constructor(){super(...arguments);this.focusWithin=!1;this.hasError=!1;this.handleWrapperClick=e=>{if(e.target!==e.currentTarget)return;let r=this.findSlottedPrimerInput();r?r.focus():this.dispatchEvent(new CustomEvent("wrapper-click",{bubbles:!0,composed:!0}))}}findSlottedPrimerInput(){if(!this.inputSlot)return null;let e=this.inputSlot.assignedElements({flatten:!0}),r=e.find(o=>o.tagName.toLowerCase()==="primer-input");if(r)return r;for(let o of e){let n=o.querySelector("primer-input");if(n)return n}return null}render(){let e={"input-slot":!0,"focus-within":this.focusWithin};return u`<div class="input-wrapper"><slot name="label"></slot><div class="${Z(e)}" @click="${this.handleWrapperClick}"><slot name="input"></slot></div><slot name="error"></slot></div>`}};Ne.styles=[pa],d([p({type:Boolean})],Ne.prototype,"focusWithin",2),d([p({type:Boolean,reflect:!0,attribute:"has-error"})],Ne.prototype,"hasError",2),d([ot('slot[name="input"]')],Ne.prototype,"inputSlot",2),Ne=d([b("primer-input-wrapper")],Ne);var ma=g` :host { display: inline-block; font-weight: var(--primer-typography-body-small-weight); font-size: var(--primer-typography-body-small-size); letter-spacing: var(--primer-typography-body-small-letter-spacing); line-height: var(--primer-typography-body-small-line-height); color: var(--primer-color-text-primary); font-family: var(--primer-typography-body-small-font); } :host([disabled]) { color: var(--primer-color-text-disabled); } `;var He=class extends v{constructor(){super(...arguments);this.for="";this.disabled=!1}render(){return u`<label for=${this.for}><slot></slot></label>`}};He.styles=[ma],d([p({type:String,reflect:!0})],He.prototype,"for",2),d([p({type:Boolean,reflect:!0})],He.prototype,"disabled",2),He=d([b("primer-input-label")],He);var ua=g` :host { display: contents; } button { align-items: center; border-radius: var(--primer-radius-medium); border: none; cursor: pointer; display: flex; font-family: var(--primer-typography-title-large-font); font-size: var(--primer-typography-title-large-size); font-weight: var(--primer-typography-title-large-weight); gap: var(--primer-space-small); justify-content: center; letter-spacing: var(--primer-typography-title-large-letter-spacing); line-height: var(--primer-typography-title-large-line-height); outline: none; padding: var(--primer-space-medium) var(--primer-space-medium); position: relative; } .button-content { display: flex; height: 100%; width: 100%; align-items: center; gap: var(--primer-space-small); justify-content: center; transition: opacity var(--primer-animation-duration) var(--primer-animation-easing); } .button-content-base { width: 100%; height: 100%; gap: var(--primer-space-small); transition: opacity var(--primer-animation-duration) var(--primer-animation-easing); } /* Reduce opacity of text during loading for better focus on the spinner */ .button-content.loading { opacity: 0.65; } :host([selectable]) button { justify-content: space-between; } /* Primary variant */ :host([variant='primary']) button { background-color: var(--primer-color-brand); /* This is correct (color-background for color) because Button is kind of a special component */ color: var(--primer-color-background-outlined-default); } :host([variant='primary']:not([disabled]):not([loading])) button:hover { filter: brightness(105%); } :host([variant='primary']:not([disabled]):not([loading])) button:active { filter: brightness(98%); } :host([variant='primary']) button:focus-visible { outline: 2px solid var(--primer-color-brand); outline-offset: 2px; } /* Disabled state for primary button */ :host([variant='primary'][disabled]:not([loading])) button, :host([variant='primary']:not([loading])) button:disabled { color: var(--primer-color-text-disabled); background-color: var(--primer-color-background-outlined-disabled); cursor: not-allowed; } /* Loading state for primary button - OVERRIDES disabled styles with higher specificity */ :host([variant='primary'][loading]) button { background-color: var(--primer-color-brand); opacity: 0.8; color: var(--primer-color-background-outlined-default); cursor: wait; } /* Secondary variant */ :host([variant='secondary']) button { background-color: var(--primer-color-background-outlined-default); color: var(--primer-color-text-primary); border: 1px solid var(--primer-color-border-outlined-default); } :host([variant='secondary']:not([disabled]):not([loading])) button:hover { background-color: var(--primer-color-background-outlined-hover); } :host([variant='secondary']:not([disabled]):not([loading])) button:active { background-color: var(--primer-color-background-outlined-active); } :host([variant='secondary']) button:focus-visible { outline: 2px solid var(--primer-color-border-outlined-focus); outline-offset: 2px; } /* Disabled state for secondary button */ :host([variant='secondary'][disabled]:not([loading])) button, :host([variant='secondary']:not([loading])) button:disabled { background-color: var(--primer-color-background-outlined-disabled); border-color: var(--primer-color-border-outlined-disabled); color: var(--primer-color-text-disabled); cursor: not-allowed; } /* Loading state for secondary button - OVERRIDES disabled styles */ :host([variant='secondary'][loading]) button { background-color: var(--primer-color-gray-100); border-color: var(--primer-color-gray-300); color: var(--primer-color-gray-600); cursor: wait; } /* Tertiary variant */ :host([variant='tertiary']) button { background-color: var(--primer-color-background-transparent-default); border: 1px solid var(--primer-color-border-transparent-default); color: var(--primer-color-text-primary); border-radius: var(--primer-radius-small); padding: var(--primer-space-xxsmall) var(--primer-space-xxsmall); } :host([variant='tertiary']:not([disabled]):not([loading])) button:hover { border-radius: var(--primer-radius-small); background-color: var(--primer-color-background-transparent-hover); border: 1px solid var(--primer-color-border-transparent-hover); color: var(--primer-color-text-primary); } :host([variant='tertiary']:not([disabled]):not([loading])) button:active { background-color: var(--primer-color-background-transparent-active); border-color: var(--primer-color-border-transparent-active); border-radius: var(--primer-radius-small); color: var(--primer-color-text-primary); } :host([variant='tertiary']) button:focus-visible { border-radius: var(--primer-radius-small); background-color: var(--primer-color-background-transparent-focus); outline: 2px solid var(--primer-color-border-transparent-focus); outline-offset: 2px; } /* Disabled state for tertiary button */ :host([variant='tertiary'][disabled]:not([loading])) button, :host([variant='tertiary']:not([loading])) button:disabled { background-color: var(--primer-color-border-transparent-disabled); color: var(--primer-color-text-disabled); cursor: not-allowed; } /* Loading state for tertiary button - OVERRIDES disabled styles */ :host([variant='tertiary'][loading]) button { background-color: var(--primer-color-gray-100); color: var(--primer-color-gray-600); cursor: wait; } /* Checked state styling */ :host([selectionState='checked']) button { border: 2px solid var(--primer-color-brand); background-color: var(--primer-color-gray-100); } /* Loading state - center spinner with content */ :host([loading]) primer-spinner { margin-right: var(--primer-space-xsmall); } /* Special case for tertiary variant loading state spinner size */ :host([variant='tertiary'][loading]) primer-spinner { transform: scale(0.85); } `;var de=class extends v{constructor(){super(...arguments);this.variant="primary";this.disabled=!1;this.loading=!1;this.buttonType="button";this.selectionState="default";this.selectable=!1;this.flex=!0;this.handleClick=()=>{!this.selectable||this.disabled||this.loading||(this.selectionState=this.selectionState==="default"?"checked":"default",this.dispatchEvent(new CustomEvent("selection-change",{bubbles:!0,composed:!0,detail:{state:this.selectionState}})))}}renderCheckmark(){return!this.selectable||this.selectionState!=="checked"||this.loading?h:u`<primer-icon name="checkmark" size="sm" color="var(--primer-color-brand)" ></primer-icon>`}renderSpinner(){if(!this.loading)return h;let e;return this.variant==="primary"?e="var(--primer-color-background-outlined-default)":(this.variant==="secondary"||this.variant==="tertiary")&&(e="var(--primer-color-gray-900)"),u`<primer-spinner size="small" color="${e}" compact ></primer-spinner>`}render(){return u`<button type=${this.buttonType} ?disabled=${this.disabled||this.loading} @click=${this.handleClick} part="button" aria-checked=${this.selectionState==="checked"} aria-busy=${this.loading} >${this.renderSpinner()} ${this.flex?u`<span class="button-content ${this.loading?"loading":""}"><slot></slot></span>`:u`<span class="button-content-base ${this.loading?"loading":""}" ><slot></slot></span>`} ${this.renderCheckmark()}</button>`}};de.styles=[w,ua],d([p({type:String,reflect:!0})],de.prototype,"variant",2),d([p({type:Boolean,reflect:!0})],de.prototype,"disabled",2),d([p({type:Boolean,reflect:!0})],de.prototype,"loading",2),d([p({type:String,attribute:"type"})],de.prototype,"buttonType",2),d([p({type:String,reflect:!0})],de.prototype,"selectionState",2),d([p({type:Boolean,reflect:!0})],de.prototype,"selectable",2),d([p({type:Boolean,reflect:!0})],de.prototype,"flex",2),de=d([b("primer-button")],de);var ha=g` :host { display: contents; } :host(:not([active])) { display: none; } .error { color: var(--primer-color-text-negative); font-size: var(--primer-typography-body-small-size); line-height: var(--primer-typography-body-small-line-height); display: block; font-family: var(--primer-typography-body-small-font); } `;var Be=class extends v{constructor(){super(...arguments);this.for="";this.active=!0}render(){return u`<span class="error" role="alert" aria-live="polite" id="${this.for||""}" ><slot></slot></span>`}};Be.styles=[ha],d([p({type:String,reflect:!0})],Be.prototype,"for",2),d([p({type:Boolean,reflect:!0})],Be.prototype,"active",2),Be=d([b("primer-input-error")],Be);var fa={trash:Me`<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.8333 2.99992H11.5V2.49992C11.5 2.05789 11.3244 1.63397 11.0118 1.32141C10.6993 1.00885 10.2754 0.833252 9.83333 0.833252H6.16667C5.72464 0.833252 5.30072 1.00885 4.98816 1.32141C4.67559 1.63397 4.5 2.05789 4.5 2.49992V2.99992H2.16667C1.98986 2.99992 1.82029 3.07015 1.69526 3.19518C1.57024 3.32021 1.5 3.48978 1.5 3.66659C1.5 3.8434 1.57024 4.01297 1.69526 4.138C1.82029 4.26302 1.98986 4.33326 2.16667 4.33326H2.83333V12.4999C2.83333 12.942 3.00893 13.3659 3.32149 13.6784C3.63405 13.991 4.05797 14.1666 4.5 14.1666H11.5C11.942 14.1666 12.3659 13.991 12.6785 13.6784C12.9911 13.3659 13.1667 12.942 13.1667 12.4999V4.33326H13.8333C14.0101 4.33326 14.1797 4.26302 14.3047 4.138C14.4298 4.01297 14.5 3.8434 14.5 3.66659C14.5 3.48978 14.4298 3.32021 14.3047 3.19518C14.1797 3.07015 14.0101 2.99992 13.8333 2.99992ZM5.83333 2.49992C5.83333 2.32311 5.90357 2.15354 6.0286 2.02851C6.15362 1.90349 6.32319 1.83325 6.5 1.83325H9.5C9.67681 1.83325 9.84638 1.90349 9.9714 2.02851C10.0964 2.15354 10.1667 2.32311 10.1667 2.49992V2.99992H5.83333V2.49992ZM11.8333 12.4999C11.8333 12.6767 11.7631 12.8463 11.6381 12.9713C11.513 13.0964 11.3435 13.1666 11.1667 13.1666H4.83333C4.65652 13.1666 4.48695 13.0964 4.36193 12.9713C4.2369 12.8463 4.16667 12.6767 4.16667 12.4999V4.33326H11.8333V12.4999Z" fill="currentColor"/><path d="M6.5 10.9999C6.67681 10.9999 6.84638 10.9297 6.9714 10.8047C7.09643 10.6796 7.16667 10.5101 7.16667 10.3333V7.33325C7.16667 7.15644 7.09643 6.98687 6.9714 6.86184C6.84638 6.73682 6.67681 6.66658 6.5 6.66658C6.32319 6.66658 6.15362 6.73682 6.0286 6.86184C5.90357 6.98687 5.83333 7.15644 5.83333 7.33325V10.3333C5.83333 10.5101 5.90357 10.6796 6.0286 10.8047C6.15362 10.9297 6.32319 10.9999 6.5 10.9999Z" fill="currentColor"/><path d="M9.5 10.9999C9.67681 10.9999 9.84638 10.9297 9.9714 10.8047C10.0964 10.6796 10.1667 10.5101 10.1667 10.3333V7.33325C10.1667 7.15644 10.0964 6.98687 9.9714 6.86184C9.84638 6.73682 9.67681 6.66658 9.5 6.66658C9.32319 6.66658 9.15362 6.73682 9.0286 6.86184C8.90357 6.98687 8.83333 7.15644 8.83333 7.33325V10.3333C8.83333 10.5101 8.90357 10.6796 9.0286 10.8047C9.15362 10.9297 9.32319 10.9999 9.5 10.9999Z" fill="currentColor"/></svg>`,"successful-check":Me`<svg viewBox="0 0 56 56" fill="none" xmlns="http://www.w3.org/2000/svg" ><g id="icon/check-circle-large"><path id="vector" fill-rule="evenodd" clip-rule="evenodd" d="M20.1762 29.5746L24.8429 34.2413C25.295 34.7007 26.0387 34.7007 26.4908 34.2413L35.8241 24.9079C36.2835 24.4559 36.2835 23.7121 35.8241 23.26C35.372 22.8007 34.6283 22.8007 34.1762 23.26L25.6668 31.7694L21.8241 27.9267C21.372 27.4673 20.6283 27.4673 20.1762 27.9267C19.7168 28.3788 19.7168 29.1225 20.1762 29.5746ZM28.0002 47.4173C38.3106 47.4173 46.6668 39.0611 46.6668 28.7507C46.6668 18.4402 38.3106 10.084 28.0002 10.084C17.6897 10.084 9.3335 18.4402 9.3335 28.7507C9.3335 39.0611 17.6897 47.4173 28.0002 47.4173Z" /></g></svg>`,"failure-icon":Me`<svg viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" ><path fill-rule="evenodd" clip-rule="evenodd" d="M20.0008 23.3333C20.4614 23.3333 20.7873 22.9606 20.7873 22.5V15C20.7873 14.5394 20.4146 14.1666 20.0008 14.1666C19.587 14.1666 19.1675 14.5416 19.1675 15V22.5C19.1675 22.9583 19.5425 23.3333 20.0008 23.3333ZM32.9331 27.3594L22.5269 9.75935C22.0008 8.86821 21.0529 8.33488 20.0008 8.33331C18.9487 8.33331 18.006 8.8656 17.4748 9.75831L7.06331 27.3625C6.53987 28.2463 6.53206 29.3073 7.04134 30.201C7.568 31.1198 8.51904 31.6666 9.58935 31.6666H30.4175C31.4857 31.6666 32.4357 31.1182 32.9597 30.1995C33.4696 29.3073 33.4591 28.2448 32.9331 27.3594ZM18.7977 26.6666C18.7977 25.976 19.3107 25.4166 20.0008 25.4166C20.6935 25.4166 21.2508 25.9739 21.2039 26.6666C21.2039 27.3568 20.6909 27.9166 20.0008 27.9166C19.3576 27.9166 18.7977 27.3568 18.7977 26.6666Z" /></svg>`,"payment-card":Me`<svg width="28" height="21" viewBox="0 0 28 21" fill="none" xmlns="http://www.w3.org/2000/svg"><rect y="0.748047" width="28" height="20" rx="2" fill="#E0E0E0"/><rect y="6.74805" width="28" height="4" fill="#212121"/><rect x="19" y="13.748" width="6" height="4" rx="0.933333" fill="white"/></svg>`,"chevron-down":Me`<svg width="8" height="6" viewBox="0 0 8 6" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4.41978 4.90118C4.32079 5.02361 4.16188 5.08353 4.00037 5.08353C3.83887 5.08353 3.67996 5.02361 3.55753 4.90118L0.63995 1.9836C0.395733 1.73939 0.395733 1.34382 0.63995 1.09947C0.884167 0.855124 1.27973 0.855254 1.52408 1.09947L4.00037 3.57524L6.47589 1.09973C6.72011 0.855515 7.11567 0.855515 7.36002 1.09973C7.60437 1.34395 7.60424 1.73952 7.36002 1.98386L4.41978 4.90118Z" fill="#212121"/></svg>`,checkmark:Me`<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M15.6326 6.12193C15.8983 6.3668 15.8983 6.76276 15.6326 6.98418L8.75546 13.8613C8.53404 14.127 8.13808 14.127 7.89321 13.8613L4.35119 10.3186C4.10706 10.0971 4.10706 9.70118 4.35119 9.45631C4.59531 9.21404 4.99126 9.21404 5.23535 9.45631L8.33606 12.5588L14.7704 6.12193C15.0152 5.87863 15.4112 5.87863 15.6326 6.12193Z" /></svg>`,close:Me`<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none"><path d="M14.7551 13.734C15.0479 14.0269 15.0479 14.502 14.7551 14.7949C14.4622 15.0879 13.987 15.0878 13.6941 14.7949L10.0005 11.0738L6.28054 14.7937C5.98767 15.0866 5.51249 15.0866 5.21959 14.7937C4.92668 14.5008 4.92671 14.0256 5.21959 13.7327L8.94075 10.0141L5.21856 6.26604C4.92568 5.97316 4.92568 5.49798 5.21856 5.20508C5.51143 4.91217 5.98661 4.91221 6.27951 5.20508L10.0005 8.95438L13.7204 5.23446C14.0132 4.94159 14.4884 4.94159 14.7813 5.23446C15.0742 5.52734 15.0742 6.00252 14.7813 6.29542L11.0602 10.0141L14.7551 13.734Z" fill="#212121" /></svg>`,edit:Me`<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10.9355 3.19972C11.7814 2.35335 13.1541 2.35335 13.9999 3.19972L14.3642 3.56456C15.21 4.41103 15.21 5.78338 14.3642 6.62925L8.42804 12.5684C8.16615 12.8272 7.84406 13.0169 7.48886 13.1192L4.47866 13.9802C4.2258 14.0524 3.95489 13.9802 3.76825 13.7694C3.58463 13.6099 3.51239 13.339 3.58463 13.0861L4.44555 10.0759C4.5479 9.72072 4.73754 9.39863 4.99642 9.13674L10.9355 3.19972ZM12.9524 4.22139C12.6965 3.93933 12.239 3.93933 11.956 4.22139L11.08 5.09705L12.4677 6.48476L13.3437 5.5817C13.6267 5.32583 13.6267 4.86828 13.3437 4.58622L12.9524 4.22139ZM5.83626 10.4733L5.33055 12.2342L7.09151 11.7285C7.21192 11.6954 7.31728 11.6322 7.40458 11.5449L11.4473 7.50521L10.0596 6.11751L6.01988 10.1602C5.93259 10.2475 5.86937 10.3529 5.83626 10.4733Z" fill="#212121"/><path d="M3.5 16.7126C3.5 16.3138 3.82335 15.9904 4.22222 15.9904H15.7778C16.1767 15.9904 16.5 16.3138 16.5 16.7126C16.5 17.1115 16.1767 17.4349 15.7778 17.4349H4.22222C3.82335 17.4349 3.5 17.1115 3.5 16.7126Z" fill="#212121"/></svg>`,lock:Me`<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M7.91621 7.08223V8.33262H12.0842V7.08223C12.0842 5.93082 11.1516 4.99824 10.0002 4.99824C8.84879 4.99824 7.91621 5.93082 7.91621 7.08223ZM6.24902 8.33262V7.08223C6.24902 5.01127 7.92924 3.33105 10.0002 3.33105C12.0712 3.33105 13.7514 5.01127 13.7514 7.08223V8.33262H14.1682C15.0877 8.33262 15.8354 9.08025 15.8354 9.9998V15.0014C15.8354 15.9209 15.0877 16.6686 14.1682 16.6686H5.83223C4.91267 16.6686 4.16504 15.9209 4.16504 15.0014V9.9998C4.16504 9.08025 4.91267 8.33262 5.83223 8.33262H6.24902Z" fill="#212121" fill-opacity="0.62"/></svg>`};var ya=g` :host { display: inline-block; line-height: 0; /* so you don’t get extra space around the icon */ } /* Styling svgs rendered by passing *name* attribute - from our library file */ :host([size='sm']) svg { width: 20px; height: 20px; } :host([size='md']) svg { width: 42px; height: 42px; } :host([size='lg']) svg { width: 56px; height: 56px; } svg { /* --internal used for abstracting away the icon component */ fill: var(--internal-icon-color, currentColor); } /* For slotted icons */ :host([size='sm']) ::slotted(svg) { width: 20px; height: 20px; } :host([size='lg']) ::slotted(svg) { width: 56px; height: 56px; } ::slotted(svg) { /* --internal used for abstracting away the icon component */ fill: var(--internal-icon-color, currentColor); } `;var Le=class extends v{constructor(){super(...arguments);this.color="var(--primer-color-icon-primary)";this.size="lg"}render(){let e=this.name?fa[this.name]:null;return u`<div style="--internal-icon-color: ${this.color}">${e||u`<slot></slot>`}</div>`}};Le.styles=[ya],d([p({type:String,reflect:!0})],Le.prototype,"color",2),d([p({type:String,reflect:!0})],Le.prototype,"size",2),d([p({reflect:!0})],Le.prototype,"name",2),Le=d([b("primer-icon")],Le);var ga=g` :host { display: flex; flex-direction: column; align-items: center; gap: var(--primer-space-xsmall); } p { margin: 0; color: var(--primer-color-text-primary); text-align: center; font-size: var(--primer-typography-body-large-size); font-family: var(--primer-typography-body-large-font); font-weight: var(--primer-typography-body-large-weight); line-height: var(--primer-typography-body-large-line-height); letter-spacing: var(--primer-typography-body-large-letter-spacing); } p.secondary { color: var(--primer-color-text-secondary); text-align: center; font-family: var(--primer-typography-body-medium-font, Inter); font-size: var(--primer-typography-body-medium-size); font-weight: var(--primer-typography-body-medium-weight); line-height: var(--primer-typography-body-medium-line-height); letter-spacing: var(--primer-typography-body-medium-letter-spacing); } `;var Fe=class extends v{constructor(){super(...arguments);this.type="complete"}render(){return this.type==="complete"?u`<primer-icon size="lg" name="successful-check" color="var(--primer-color-icon-positive)" ></primer-icon><p>Checkout complete!</p><p class="secondary"> You'll be redirected to the order confirmation page soon. </p>`:u`<primer-icon size="lg" name="failure-icon" color="var(--primer-color-icon-negative)" ></primer-icon><p>Payment failed</p>${this.description?u`<p class="secondary">${this.description}</p>`:u`<p class="secondary">Something went wrong.</p>`} `}};Fe.styles=[ga],d([p({type:String,reflect:!0})],Fe.prototype,"type",2),d([p({type:String,reflect:!0})],Fe.prototype,"description",2),Fe=d([b("primer-checkout-state")],Fe);var va=g` :host { display: contents; } input { width: 100%; padding: 0; border: none; height: var(--primer-typography-body-large-line-height); font-size: var(--primer-typography-body-large-size); font-family: var(--primer-typography-body-large-font); color: var(--primer-color-text-primary); background-color: transparent; outline: none; } input::placeholder { color: var(--primer-color-text-placeholder); font-size: var(--primer-typography-body-large-size); font-family: var(--primer-typography-body-large-font); } :host([disabled]) input { color: var(--primer-color-text-disabled); cursor: not-allowed; } :host([disabled]) input::placeholder { color: var(--primer-color-text-disabled); } `;var Pd=["text","password","email","number","tel","url","search","date","time","datetime-local","month","week","color"];function Td(i){return Pd.includes(i)}var Y=class extends v{constructor(){super(...arguments);this.value="";this.placeholder="";this.disabled=!1;this.name="";this.type="text";this.required=!1;this.readonly=!1;this.pattern="";this.min="";this.max="";this.step="";this.autocomplete="";this._id="";this.hasFocus=!1;this.hasError=!1;this.handleInput=e=>{e.stopPropagation();let r=e.target;this.value=r.value;let o=new CustomEvent("input",{detail:this.value,bubbles:!0,composed:!0});this.dispatchEvent(o)};this.handleChange=e=>{e.stopPropagation();let r=e.target;this.value=r.value;let o=new CustomEvent("change",{detail:this.value,bubbles:!0,composed:!0});this.dispatchEvent(o)};this.handleFocus=()=>{this.hasFocus=!0,this.dispatchEvent(new FocusEvent("focus",{bubbles:!0,composed:!0}))};this.handleBlur=()=>{this.hasFocus=!1,this.dispatchEvent(new FocusEvent("blur",{bubbles:!0,composed:!0}))};this.handleInvalid=e=>{e.stopPropagation(),this.hasError=!0,this.dispatchEvent(new Event("invalid",{bubbles:!0,composed:!0}))}}get id(){return this._id}set id(e){this._id=e,this.setAttribute("id",e)}focus(e){this.inputElement?.focus(e)}blur(){this.inputElement?.blur()}select(){this.inputElement?.select()}setSelectionRange(e,r,o){this.inputElement?.setSelectionRange(e,r,o)}get validity(){return this.inputElement?.validity||{}}get validationMessage(){return this.inputElement?.validationMessage||""}checkValidity(){return this.inputElement?.checkValidity()||!1}reportValidity(){return this.inputElement?.reportValidity()||!1}render(){let e={input:!0,"input--focused":this.hasFocus,"input--disabled":this.disabled,"input--error":this.hasError,"input--readonly":this.readonly},r=Object.entries(e).filter(([,o])=>o).map(([o])=>o).join(" ");return u`<input part="input" class=${r} .value=${this.value} .type=${this.type} ?disabled=${this.disabled} ?required=${this.required} ?readonly=${this.readonly} placeholder=${this.placeholder} pattern=${this.pattern} minlength=${this.minlength??""} maxlength=${this.maxlength??""} min=${this.min} max=${this.max} step=${this.step} autocomplete=${this.autocomplete} name=${this.name} id=${this.id} @input=${this.handleInput} @change=${this.handleChange} @focus=${this.handleFocus} @blur=${this.handleBlur} @invalid=${this.handleInvalid} />`}addEventListener(e,r,o){super.addEventListener(e,r,o)}removeEventListener(e,r,o){super.removeEventListener(e,r,o)}};Y.styles=[va],d([ot("input")],Y.prototype,"inputElement",2),d([p({type:String,reflect:!0})],Y.prototype,"value",2),d([p({type:String,reflect:!0})],Y.prototype,"placeholder",2),d([p({type:Boolean,reflect:!0})],Y.prototype,"disabled",2),d([p({type:String,reflect:!0})],Y.prototype,"name",2),d([p({type:String,reflect:!0,converter:{fromAttribute:e=>!e||!Td(e)?(e&&e!=="text"&&E.warn(`Invalid input type: ${e}. Defaulting to 'text'.`),"text"):e}})],Y.prototype,"type",2),d([p({type:Boolean,reflect:!0})],Y.prototype,"required",2),d([p({type:Boolean,reflect:!0})],Y.prototype,"readonly",2),d([p({type:String,reflect:!0})],Y.prototype,"pattern",2),d([p({type:Number,reflect:!0})],Y.prototype,"minlength",2),d([p({type:Number,reflect:!0})],Y.prototype,"maxlength",2),d([p({type:String,reflect:!0})],Y.prototype,"min",2),d([p({type:String,reflect:!0})],Y.prototype,"max",2),d([p({type:String,reflect:!0})],Y.prototype,"step",2),d([p({type:String,reflect:!0})],Y.prototype,"autocomplete",2),d([M()],Y.prototype,"hasFocus",2),d([M()],Y.prototype,"hasError",2),Y=d([b("primer-input")],Y);var ba=g` :host { display: block; } .collapsable { width: 100%; } /* Make the button display with full width */ primer-button::part(button) { width: 100%; } .collapsable-wrapper { display: grid; grid-template-rows: 0fr; transition: grid-template-rows var(--primer-animation-duration) var(--primer-animation-easing); overflow: hidden; border-top: none; margin-top: -1px; } .collapsable-wrapper.expanded { grid-template-rows: 1fr; } .collapsable-content { min-height: 0; overflow: hidden; padding: var(--primer-space-medium, 12px) 0; } .icon-container { display: flex; align-items: center; justify-content: center; transition: transform var(--primer-animation-duration) var(--primer-animation-easing); font-size: 0.75em; } .icon-container.expanded { transform: rotate(180deg); } /* Disable animation for users who prefer reduced motion */ @media (prefers-reduced-motion: reduce) { .collapsable-wrapper, .icon-container { transition: none; } } `;var ce=class extends v{constructor(){super(...arguments);this.header="";this.expanded=!1;this.expandText="Expand";this.collapseText="Collapse";this.ariaLabel="";this.buttonVariant="primary";this.isExpanded=!1;this.toggleExpanded=()=>{this.isExpanded=!this.isExpanded,this.dispatchExpandedChangedEvent(this.isExpanded)}}connectedCallback(){super.connectedCallback(),this.isExpanded=this.expanded}dispatchExpandedChangedEvent(e){this.dispatchEvent(new CustomEvent("expanded-changed",{bubbles:!0,composed:!0,detail:{expanded:e}}))}expand(){this.isExpanded||(this.isExpanded=!0,this.dispatchExpandedChangedEvent(!0))}collapse(){this.isExpanded&&(this.isExpanded=!1,this.dispatchExpandedChangedEvent(!1))}render(){let e=this.isExpanded?this.collapseText:this.expandText,r=this.ariaLabel||this.header||e,o=this.header||e;return u`<div class="collapsable"><primer-button variant=${this.buttonVariant} buttonType="button" @click=${this.toggleExpanded} aria-expanded=${this.isExpanded} aria-controls="collapsable-content" aria-label=${r} ><span>${o}</span></primer-button><div class="collapsable-wrapper ${this.isExpanded?"expanded":""}" id="collapsable-content" role="region" aria-labelledby="collapsable-header" ><div class="collapsable-content"><slot></slot></div></div></div>`}};ce.styles=[ba],d([p({type:String})],ce.prototype,"header",2),d([p({type:Boolean})],ce.prototype,"expanded",2),d([p({type:String})],ce.prototype,"expandText",2),d([p({type:String})],ce.prototype,"collapseText",2),d([p({type:String})],ce.prototype,"ariaLabel",2),d([p({type:String})],ce.prototype,"buttonVariant",2),d([M()],ce.prototype,"isExpanded",2),ce=d([b("primer-collapsable")],ce);var Ca=g` :host { display: block; width: 100%; box-sizing: border-box; } .error-message { display: flex; align-items: flex-start; padding: var(--primer-space-medium); background-color: var(--primer-color-red-100); border-radius: var(--primer-radius-medium); border: 1px solid var(--primer-color-border-outlined-error); margin-top: var(--primer-space-small); box-sizing: border-box; width: 100%; /* Add animation properties */ opacity: 1; transform: translateY(0); transition: opacity var(--primer-animation-duration) var(--primer-animation-easing), transform var(--primer-animation-duration) var(--primer-animation-easing); } .error-message.hidden { opacity: 0; transform: translateY(-var(--primer-space-medium)); pointer-events: none; } .error-icon { flex-shrink: 0; margin-right: var(--primer-space-medium); color: var(--primer-color-icon-negative); } .error-content { flex: 1; font-family: var(--primer-typography-body-medium-font); font-size: var(--primer-typography-body-medium-size); font-weight: var(--primer-typography-body-medium-weight); line-height: var(--primer-typography-body-medium-line-height); letter-spacing: var(--primer-typography-body-medium-letter-spacing); color: var(--primer-color-text-negative); } /* Respect user's preference for reduced motion */ @media (prefers-reduced-motion: reduce) { .error-message { transition: opacity var(--primer-animation-duration) var(--primer-animation-easing); transform: none; } .error-message.hidden { transform: none; } } `;var Oe=class extends v{constructor(){super();this.message="";this.visible=!1;this._role="alert";this.showMessage=!1;this.role="alert"}get role(){return this._role}set role(e){this._role=e,this.setAttribute("role",e)}updated(e){e.has("visible")&&this.handleVisibilityChange()}handleVisibilityChange(){this.visible?(this.showMessage=!0,this.setAttribute("aria-hidden","false")):setTimeout(()=>{this.showMessage=!1,this.setAttribute("aria-hidden","true")},200)}render(){if(!this.showMessage&&!this.visible)return h;let e={"error-message":!0,hidden:!this.visible};return u`<div part="error-message" class=${Z(e)} aria-live="assertive" aria-atomic="true" ><div part="error-icon" class="error-icon"><primer-icon name="failure-icon" size="sm" color="var(--primer-color-icon-negative)" ></primer-icon></div><div part="error-content" class="error-content">${this.message}</div></div>`}};Oe.styles=[Ca],d([p({type:String})],Oe.prototype,"message",2),d([p({type:Boolean,reflect:!0})],Oe.prototype,"visible",2),d([M()],Oe.prototype,"showMessage",2),Oe=d([b("primer-error-message")],Oe);var Ea=g` :host { display: none; } `;var lt=class extends v{constructor(){super(...arguments);this._id=`d${Math.random().toString(36).substring(7)}`;this._handleSlotChange=e=>{let o=e.target.assignedNodes();if(!o.length)return;let n=this.getContainer();o.forEach(a=>n.appendChild(a))}}get id(){return this._id}getContainer(){let e=document.querySelector(`#${this._id}`);return e||(e=document.createElement("div"),e.id=this._id,document.body.appendChild(e),this._setupEventListeners(e)),e}_setupEventListeners(e){["primer-ach-error","primer-ach-bank-details-collected","primer-ach-mandate-confirmed","primer-ach-mandate-declined","primer-dialog-close"].forEach(r=>{e.addEventListener(r,o=>{o.stopPropagation(),this.dispatchEvent(new CustomEvent(r,{bubbles:!0,composed:!0,detail:o.detail}))})})}disconnectedCallback(){super.disconnectedCallback(),this.getContainer().remove()}render(){return u`<slot @slotchange=${this._handleSlotChange}></slot>`}};lt.styles=[Ea],d([M()],lt.prototype,"_id",2),lt=d([b("primer-portal")],lt);var Aa=g` :host { display: contents; } .backdrop { position: fixed; top: 0; left: 0; background-color: rgba(0, 0, 0, 0.2); z-index: 1000; display: flex; justify-content: center; align-items: center; width: 100vw; height: 100vh; /* Animation properties */ transition: all 500ms cubic-bezier(0.4, 0, 0.2, 1); opacity: 0; } .backdrop--entering { opacity: 0; } .backdrop--entered { opacity: 1; } .backdrop--exiting { opacity: 0; } .dialog { background-color: white; padding: var(--primer-space-medium); border-radius: var(--primer-radius-medium); max-width: 600px; box-shadow: 1px 1px 5px 3px rgba(0, 0, 0, 0.05); /* Animation properties */ transition: all 500ms cubic-bezier(0.4, 0, 0.2, 1); opacity: 0; transform: translateY(100vh); } .dialog--entering { opacity: 0; transform: translateY(100vh); } .dialog--entered { opacity: 1; transform: translateY(0); } .dialog--exiting { opacity: 0; transform: translateY(100vh); } .dialog.large { width: 500px; height: 640px; padding: 0; overflow: hidden; display: flex; flex-direction: column; } @media (max-width: 500px) { .dialog.large { width: calc(100vw - var(--primer-space-large, 32px)); height: calc(100vh - var(--primer-space-large, 32px)); max-width: none; max-height: none; } } .header { display: flex; justify-content: flex-end; flex-shrink: 0; } .content { flex: 1; overflow: auto; min-height: 0; } `;var xe=class extends v{constructor(){super(...arguments);this.size="flex";this.showCloseButton=!0;this._animationState="entering";this._isVisible=!1;this._handleCloseClick=()=>{this._startExitAnimation()}}startExitAnimation(){this._startExitAnimation()}connectedCallback(){super.connectedCallback(),document.body.style.overflow="hidden",this._startEnterAnimation()}disconnectedCallback(){super.disconnectedCallback(),document.body.style.overflow="",this._animationTimeout&&clearTimeout(this._animationTimeout)}_startEnterAnimation(){this._animationState="entering",this._isVisible=!0,requestAnimationFrame(()=>{this._animationTimeout=window.setTimeout(()=>{this._animationState="entered"},500)})}_startExitAnimation(){this._animationTimeout&&clearTimeout(this._animationTimeout),this._animationState="exiting",this._animationTimeout=window.setTimeout(()=>{this._animationState="exited",this._isVisible=!1,this.dispatchEvent(new CustomEvent("primer-dialog-close",{bubbles:!0,composed:!0}))},500)}render(){return this._isVisible?u`<div class=${Z({backdrop:!0,"backdrop--entering":this._animationState==="entering","backdrop--entered":this._animationState==="entered","backdrop--exiting":this._animationState==="exiting"})} @click=${e=>{e.preventDefault()}} ><div class=${Z({dialog:!0,[this.size]:!0,"dialog--entering":this._animationState==="entering","dialog--entered":this._animationState==="entered","dialog--exiting":this._animationState==="exiting"})} ><div class="header">${this.showCloseButton?u`<primer-button variant="tertiary" @click=${this._handleCloseClick} ><primer-icon name="close"></primer-icon></primer-button>`:""}</div><div class="content"><slot></slot></div></div></div>`:u``}};xe.styles=[Aa],d([p({type:String})],xe.prototype,"size",2),d([p({type:Boolean})],xe.prototype,"showCloseButton",2),d([M()],xe.prototype,"_animationState",2),d([M()],xe.prototype,"_isVisible",2),xe=d([b("primer-dialog")],xe);var xa=g` :host { display: contents; } .klarna-container { display: flex; flex-direction: column; width: 100%; transition: all var(--primer-animation-duration) var(--primer-animation-easing); } .klarna-container.expanded { border-radius: var(--primer-radius-medium); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); background-color: var(--primer-color-background-outlined-default); border: 1px solid var(--primer-color-border-outlined-default); padding: var(--primer-space-large); } .klarna-button-header { padding: 0; display: flex; align-items: center; justify-content: space-between; width: 100%; gap: var(--primer-space-small); } .klarna-accordion-icon { position: absolute; right: var(--primer-space-medium); font-size: var(--primer-typography-body-small-size); font-weight: var(--primer-typography-title-large-weight); color: var(--primer-color-text-secondary); transition: all var(--primer-animation-duration) var(--primer-animation-easing); display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; margin-left: var(--primer-space-small); } .klarna-accordion-icon.expanded { transform: rotate(180deg); } .klarna-expanded-content { width: 100%; display: grid; grid-template-rows: 0fr; transition: grid-template-rows var(--primer-animation-duration) var(--primer-animation-easing); } .klarna-expanded-content.visible { margin-top: var(--primer-space-large); border-top: 1px solid var(--primer-color-border-outlined-default); grid-template-rows: 1fr; } .klarna-accordion-content { overflow: hidden; } @keyframes fadeIn { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } .category-selection { display: flex; flex-wrap: wrap; gap: var(--primer-space-small); margin: var(--primer-space-large) 0; } .category-button { padding: var(--primer-space-medium) var(--primer-space-large); border-radius: var(--primer-radius-base); background-color: var(--primer-color-background-outlined-loading); border: 1px solid var(--primer-color-border-outlined-default); font-size: var(--primer-typography-body-medium-size); cursor: pointer; transition: all var(--primer-animation-duration) var(--primer-animation-easing); flex: 1; min-width: 100px; text-align: center; } .category-button.selected { background-color: var(--primer-color-background-outlined-default); border-color: var(--primer-color-brand); color: var(--primer-color-brand); font-weight: var(--primer-typography-title-large-weight); } .category-button:hover:not(.selected):not(:disabled) { background-color: var(--primer-color-background-outlined-hover); } .category-button:disabled { background-color: var(--primer-color-background-outlined-disabled); border-color: var(--primer-color-border-outlined-disabled); color: var(--primer-color-text-disabled); cursor: not-allowed; } .klarna-category-container { min-height: 74px; width: 100%; border-radius: var(--primer-radius-small); border: 1px solid var(--primer-color-border-outlined-default); background-color: var(--primer-color-background-outlined-default); padding: var(--primer-space-medium); margin-bottom: var(--primer-space-large); transition: height var(--primer-animation-duration) var(--primer-animation-easing); overflow: hidden; } .klarna-button::part(button) { display: flex; flex: 1; gap: var(--primer-space-small); height: calc( ${we(nt)} + calc(2 * var(--primer-space-medium)) ); width: 100%; } .klarna-button primer-icon { margin-right: var(--primer-space-medium); } .klarna-button:hover { background-color: var(--primer-color-background-outlined-hover); border-color: var(--primer-color-border-outlined-hover); } .klarna-pay-button { padding: var(--primer-space-medium) var(--primer-space-large); display: flex; align-items: center; justify-content: center; border-radius: var(--primer-radius-small); background-color: var(--primer-color-brand); color: var(--primer-color-background-outlined-default); border: none; font-size: var(--primer-typography-body-medium-size); font-weight: var(--primer-typography-body-medium-weight); width: 100%; cursor: pointer; transition: all var(--primer-animation-duration) var(--primer-animation-easing); } .klarna-pay-button:hover:not(.disabled) { filter: brightness(105%); } .klarna-pay-button.loading { opacity: 0.7; pointer-events: none; } .klarna-pay-button.disabled { background-color: var(--primer-color-background-outlined-disabled); border-color: var(--primer-color-border-outlined-disabled); color: var(--primer-color-text-disabled); cursor: not-allowed; } .loading { text-align: center; font-size: var(--primer-typography-body-medium-size); color: var(--primer-color-text-secondary); padding: var(--primer-space-medium); } .error { color: var(--primer-color-text-negative); font-size: var(--primer-typography-body-medium-size); padding: var(--primer-space-medium); text-align: center; border: 1px solid var(--primer-color-border-outlined-error); background-color: var(--primer-color-background-outlined-default); border-radius: var(--primer-radius-small); } /* Overall disabled state for entire Klarna component */ :host([disabled]) { cursor: not-allowed; } :host([disabled]) .klarna-button { pointer-events: none; cursor: not-allowed; } :host([disabled]) .category-button { pointer-events: none; cursor: not-allowed; } :host([disabled]) .klarna-pay-button { pointer-events: none; cursor: not-allowed; } /* Ensure disabled state is visible on container when expanded */ :host([disabled]) .klarna-container.expanded { background-color: var(--primer-color-background-outlined-disabled); border-color: var(--primer-color-border-outlined-disabled); opacity: 0.7; } `;var X=class extends v{constructor(){super(...arguments);this.paymentManagers=new Map;this.sdkState=null;this.headlessUtils=null;this.klarnaCategories=null;this.disabled=!1;this.selectedCategory=null;this.isExpanded=!1;this.headerAriaLabel=P("pay_with",{id:"pay_with"});this._paymentMethodManagerTask=new V(this,{task:async([e,r])=>{if(!e||!r)return D;let o=await r.getCDNAssets("KLARNA");return{manager:e.manager,klarnaIcon:o?.assets?.icon?`${o.goatCdnUrl}/${o.assets.icon}`:""}},args:()=>[this.paymentManagers.get("KLARNA"),this.headlessUtils]});this.toggleExpand=()=>{this.disabled||(this.isExpanded=!this.isExpanded,this.isExpanded||(this.selectedCategory=null))}}async startKlarnaPayment(){if(!(!this._paymentMethodManagerTask.value||!this.selectedCategory))try{await this._paymentMethodManagerTask.value.manager.start({paymentMethodCategoryId:this.selectedCategory})}catch(e){E.errorWithDatadog("Failed to start Klarna payment",{error:e})}}async renderSelectedCategory(){if(!(!this._paymentMethodManagerTask.value||!this.selectedCategory||!this.klarnaContainer))try{this.klarnaContainer.innerHTML="",await this._paymentMethodManagerTask.value.manager.renderCategory({containerId:this.klarnaContainer,paymentMethodCategoryId:this.selectedCategory,onHeightChange:e=>{e>0&&(this.klarnaContainer.style.height=`${e}px`)}})}catch(e){E.errorWithDatadog("Failed to render Klarna category",{error:e})}}selectCategory(e){this.disabled||(this.selectedCategory=e,this.renderSelectedCategory())}updated(e){e.has("selectedCategory")&&this.selectedCategory&&this.renderSelectedCategory()}renderCategorySelection(){let e=this.klarnaCategories?.categories||[];return this.klarnaCategories?.isLoading||!1?u`<div class="loading"><primer-spinner size="small"></primer-spinner></div>`:u`<div class="category-selection">${e.map(o=>u`<button class=${Z({"category-button":!0,selected:o.id===this.selectedCategory})} @click=${()=>{this.selectCategory(o.id)}} ?disabled=${this.disabled} >${o.name}</button>`)}</div>`}renderExpandedContent(){return u` ${this.renderCategorySelection()} ${this.selectedCategory?u`<div id="klarna-category-container" class="klarna-category-container" ></div>`:h}<button class=${Z({"klarna-pay-button":!0,loading:!!this.sdkState?.isProcessing,disabled:!this.selectedCategory||this.disabled})} ?disabled=${!this.selectedCategory||this.sdkState?.isProcessing||this.disabled} @click=${()=>this.startKlarnaPayment()} >${P("confirm",{id:"confirm"})}</button>`}render(){return this._paymentMethodManagerTask.render({error:e=>{let r=e instanceof Error?e.message:"Unknown error in Klarna";return u`<div class="error"> Error loading Klarna: ${r}</div>`},complete:({manager:e,klarnaIcon:r})=>e?u`<div class="klarna-container ${this.isExpanded?"expanded":""}"><div class="klarna-button-header"><primer-button buttonType="button" variant="secondary" class="klarna-button" @click=${this.toggleExpand} aria-expanded=${this.isExpanded} aria-controls="collapsable-content" aria-label=${this.headerAriaLabel} ?disabled=${this.disabled} ><img src=${r} alt="Klarna logo" /><span>${P("pay_with",{id:"pay_with"})} Klarna</span><span class="klarna-accordion-icon ${this.isExpanded?"expanded":""}" > ▼ </span></primer-button></div><div class="klarna-expanded-content ${this.isExpanded?"visible":""}" ><div class="klarna-accordion-content">${this.renderExpandedContent()}</div></div></div>`:h})}};X.styles=[w,xa],d([C({context:se,subscribe:!0}),p()],X.prototype,"paymentManagers",2),d([C({context:F,subscribe:!0}),p()],X.prototype,"sdkState",2),d([C({context:B,subscribe:!0}),p({type:Object})],X.prototype,"headlessUtils",2),d([C({context:cr,subscribe:!0}),p()],X.prototype,"klarnaCategories",2),d([p({type:Boolean,attribute:"disabled"})],X.prototype,"disabled",2),d([M()],X.prototype,"selectedCategory",2),d([M()],X.prototype,"isExpanded",2),d([M()],X.prototype,"headerAriaLabel",2),d([ot("#klarna-category-container")],X.prototype,"klarnaContainer",2),X=d([b("primer-klarna"),O()],X);var Sa=g` :host { display: contents; } `;var Se=class extends v{constructor(){super(...arguments);this.type=void 0;this.disabled=!1;this.paymentMethods=null;this.analyticsUtils=null;this.handleClick=()=>{this.paymentMethods?.get(this.type)?.managerType!=="CARD"&&this.sendPaymentMethodSelectionEvent()}}sendPaymentMethodSelectionEvent(){this.type&&G({eventName:"PAYMENT_METHOD_SELECTION",paymentMethod:this.type})}render(){if(!this.type)return h;let e=this.paymentMethods?.get(this.type);if(!e)return h;let r;switch(e?.managerType){case"CARD":r=u`<primer-card-form ?disabled=${this.disabled} ></primer-card-form>`;break;case"NATIVE":r=u`<primer-native-payment .paymentMethod=${e} ?disabled=${this.disabled} ></primer-native-payment>`;break;case"REDIRECT":r=u`<primer-redirect-payment .paymentMethod=${e} ?disabled=${this.disabled} ></primer-redirect-payment>`;break;case"KLARNA":r=u`<primer-klarna ?disabled=${this.disabled} ></primer-klarna>`;break;case"ACH":r=u`<primer-dynamic-payment .paymentMethod=${e} ></primer-dynamic-payment>`;break;default:return h}return u`<div @click=${this.handleClick}>${r}</div>`}};Se.styles=[Sa],d([p({type:String})],Se.prototype,"type",2),d([p({type:Boolean,attribute:"disabled"})],Se.prototype,"disabled",2),d([C({context:et,subscribe:!0}),p()],Se.prototype,"paymentMethods",2),d([C({context:Xe,subscribe:!0}),p({attribute:!1})],Se.prototype,"analyticsUtils",2),Se=d([b("primer-payment-method")],Se);var _a=g` :host { display: block; width: 100%; } .payment-methods-container { display: flex; flex-direction: column; gap: var(--primer-space-small); } :host([disabled]) .payment-methods-container { opacity: 0.5; pointer-events: none; } `;var ve=class extends v{constructor(){super(...arguments);this.disabled=!1;this.paymentMethods=null;this.clientOptions=null}getFilteredMethods(){if(!this.paymentMethods)return[];let e=this.paymentMethods.toArray();if(this.include){let r=this.include.split(",").map(o=>o.trim());e=e.filter(o=>r.includes(o.type))}if(this.exclude){let r=this.exclude.split(",").map(o=>o.trim());e=e.filter(o=>!r.includes(o.type))}return e}render(){let e=this.getFilteredMethods();return e.length===0?h:u`<div class="payment-methods-container">${e.map(r=>u`<primer-payment-method type="${r.type}" ?disabled="${this.disabled||this.clientOptions?.disabledPayments===!0}" ></primer-payment-method>`)}</div>`}};ve.styles=[w,_a],d([p({type:String})],ve.prototype,"include",2),d([p({type:String})],ve.prototype,"exclude",2),d([p({type:Boolean,attribute:"disabled"})],ve.prototype,"disabled",2),d([C({context:et,subscribe:!0}),p()],ve.prototype,"paymentMethods",2),d([C({context:ae,subscribe:!0}),p()],ve.prototype,"clientOptions",2),ve=d([b("primer-payment-method-container")],ve);var Pa=g` :host { display: flex; flex-direction: column; gap: var(--primer-space-medium); width: 100%; } h2 { margin: 0; padding: 0; border-radius: var(--primer-radius-medium); font-weight: var(--primer-typography-title-xlarge-weight); font-size: var(--primer-typography-title-xlarge-size); letter-spacing: var(--primer-typography-title-xlarge-letter-spacing); line-height: var(--primer-typography-title-xlarge-line-height); font-family: var(--primer-typography-title-xlarge-font); } p { margin: 0; padding: 0; border-radius: var(--primer-radius-medium); font-weight: var(--primer-typography-body-medium-weight); font-size: var(--primer-typography-body-medium-size); letter-spacing: var(--primer-typography-body-medium-letter-spacing); line-height: var(--primer-typography-body-medium-line-height); font-family: var(--primer-typography-body-medium-font); } form { display: flex; flex-direction: column; gap: var(--primer-space-medium); width: 100%; } .form-row { display: flex; gap: var(--primer-space-small); width: 100%; } .form-row primer-input-wrapper { flex: 1; } .error-message { color: var(--primer-color-text-negative); background-color: var(--primer-color-red-100); padding: var(--primer-space-small); border-radius: var(--primer-radius-small); font-weight: var(--primer-typography-body-medium-weight); font-size: var(--primer-typography-body-medium-size); letter-spacing: var(--primer-typography-body-medium-letter-spacing); line-height: var(--primer-typography-body-medium-line-height); font-family: var(--primer-typography-body-medium-font); } .loading-container { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--primer-space-medium); padding: var(--primer-space-large); } .button-group { display: flex; gap: var(--primer-space-small); margin-top: var(--primer-space-medium); } /* Apply responsive styles for small screens */ @media (max-width: 600px) { .form-row { flex-direction: column; gap: var(--primer-space-medium); } .button-group { flex-direction: column; } } `;function Ta(){return{firstName:{value:"",error:"",pristine:!0,touched:!1,dirty:!1,valid:!1},lastName:{value:"",error:"",pristine:!0,touched:!1,dirty:!1,valid:!1},emailAddress:{value:"",error:"",pristine:!0,touched:!1,dirty:!1,valid:!1}}}var ti=class{constructor(t,e){this.formState=Ta();this.host=t,this.validate=e,t.addController(this)}get hasError(){return{firstName:this.formState.firstName.dirty&&this.formState.firstName.touched&&!!this.formState.firstName.error,lastName:this.formState.lastName.dirty&&this.formState.lastName.touched&&!!this.formState.lastName.error,emailAddress:this.formState.emailAddress.dirty&&this.formState.emailAddress.touched&&!!this.formState.emailAddress.error}}get formData(){return{firstName:this.formState.firstName.value,lastName:this.formState.lastName.value,emailAddress:this.formState.emailAddress.value}}async setFieldValue(t,e){let r=this.formState[t];r.value=e,r.dirty=!0,r.error="",r.valid=!0;let o=await this.validate(this.formData);this.setValidation(o)}setValidation(t,e=!1){e&&(this.formState.firstName.touched=!0,this.formState.lastName.touched=!0,this.formState.emailAddress.touched=!0,this.formState.firstName.dirty=!0,this.formState.lastName.dirty=!0,this.formState.emailAddress.dirty=!0),t.validationErrors.forEach(r=>{this.isValidFieldName(r.field)&&(this.formState[r.field].error=r.message,this.formState[r.field].valid=r.message==="")}),this.host.dispatchEvent(new CustomEvent("primer-ach-validation",{bubbles:!0,composed:!0,detail:{validation:t}})),this.host.requestUpdate()}setFieldTouched(t){this.formState[t].touched||(this.formState[t].touched=!0,this.host.requestUpdate())}resetForm(){this.formState=Ta(),this.host.requestUpdate()}isValidFieldName(t){return!!t&&["firstName","lastName","emailAddress"].includes(t)}hostConnected(){}hostDisconnected(){}};var he=class extends v{constructor(){super(...arguments);this.formController=new ti(this,e=>this._paymentMethodManagerTask.value.setAndValidate(e));this.paymentManagers=new Map;this.sdkState=void 0;this.clientOptions=void 0;this.screen="form";this.isSubmitting=!1;this._paymentMethodManagerTask=new V(this,{task:([e])=>e!=="STRIPE_ACH"?D:this.paymentManagers.get(e)?.manager,args:()=>[this.paymentMethod?.type]})}_handleInput(e,r){let o=e.target;this.formController.setFieldValue(r,o.value)}_handleBlur(e){this.formController.setFieldTouched(e)}_handleError(e){this.dispatchEvent(new CustomEvent("primer-ach-error",{bubbles:!0,composed:!0,detail:{error:e instanceof Error?e:new Error(typeof e=="string"?e:"Unknown error occurred")}}))}async _handleSubmitButtonClick(e){if(!this.isSubmitting){this.isSubmitting=!0;try{let r=await e.start(this.formController.formData);if(!r||r.valid)return await this._handleCollectBankAccountDetails(e);r&&this.formController.setValidation(r,!0)}catch(r){this._handleError(r)}finally{this.isSubmitting=!1}}}async _handleCollectBankAccountDetails(e){try{await e.collectBankAccountDetails(),this.screen="mandate",this.dispatchEvent(new CustomEvent("primer-ach-bank-details-collected",{bubbles:!0,composed:!0}))}catch(r){this._handleError(r)}}async _handleConfirmMandate(){if(this._paymentMethodManagerTask.value){this.isSubmitting=!0;try{await this._paymentMethodManagerTask.value.confirmMandate(),this.dispatchEvent(new CustomEvent("primer-ach-mandate-confirmed",{bubbles:!0,composed:!0}))}catch(e){this._handleError(e)}finally{this.isSubmitting=!1}}}async _handleDeclineMandate(){if(this._paymentMethodManagerTask.value){this.isSubmitting=!0;try{await this._paymentMethodManagerTask.value.declineMandate(),this.dispatchEvent(new CustomEvent("primer-ach-mandate-declined",{bubbles:!0,composed:!0}))}catch(e){this._handleError(e)}finally{this.isSubmitting=!1}}}renderForm(e){return u`<h2>${P("payWithAch",{id:"payWithAch"})}</h2><p>${P("stripe_ach_user_details_collection_subtitle_label",{id:"stripe_ach_user_details_collection_subtitle_label"})}</p><form @submit=${r=>r.preventDefault()}><div class="form-row"><primer-input-wrapper .hasError=${this.formController.hasError.firstName} ><primer-input-label slot="label">${P("stripe_ach_user_details_collection_first_name_label",{id:"stripe_ach_user_details_collection_first_name_label"})}</primer-input-label><primer-input slot="input" .value=${this.formController.formState.firstName.value} @input=${r=>this._handleInput(r,"firstName")} @blur=${()=>this._handleBlur("firstName")} ?disabled=${this.isSubmitting} ></primer-input><primer-input-error slot="error">${this.formController.hasError.firstName?this.formController.formState.firstName.error:h}</primer-input-error></primer-input-wrapper><primer-input-wrapper .hasError=${this.formController.hasError.lastName} ><primer-input-label slot="label">${P("stripe_ach_user_details_collection_last_name_label",{id:"stripe_ach_user_details_collection_last_name_label"})}</primer-input-label><primer-input slot="input" .value=${this.formController.formState.lastName.value} @input=${r=>this._handleInput(r,"lastName")} @blur=${()=>this._handleBlur("lastName")} ?disabled=${this.isSubmitting} ></primer-input><primer-input-error slot="error">${this.formController.hasError.lastName?this.formController.formState.lastName.error:h}</primer-input-error></primer-input-wrapper></div><primer-input-wrapper .hasError=${this.formController.hasError.emailAddress} ><primer-input-label slot="label">${P("stripe_ach_user_details_collection_email_address_label",{id:"stripe_ach_user_details_collection_email_address_label"})}</primer-input-label><primer-input slot="input" type="email" .value=${this.formController.formState.emailAddress.value} @input=${r=>this._handleInput(r,"emailAddress")} @blur=${()=>this._handleBlur("emailAddress")} ?disabled=${this.isSubmitting} ></primer-input><primer-input-error slot="error">${this.formController.hasError.emailAddress?this.formController.formState.emailAddress.error:h}</primer-input-error></primer-input-wrapper><p>${P("stripe_ach_user_details_collection_data_usage_label",{id:"stripe_ach_user_details_collection_data_usage_label"})}</p><primer-button buttonType="submit" variant="primary" @click=${()=>this._handleSubmitButtonClick(e)} ?disabled=${this.isSubmitting} ?loading=${this.isSubmitting} >${P("stripe_ach_user_details_collection_continue_button",{id:"stripe_ach_user_details_collection_continue_button"})}</primer-button></form>`}renderMandate(){return u`<h2>${P("payWithAch",{id:"payWithAch"})}</h2><p>${this.clientOptions?.stripe?.mandateData.fullMandateText??P("stripe_ach_mandate_template_web",{id:"stripe_ach_mandate_template_web"}).replace(/\{merchantName\}/g,this.clientOptions?.stripe?.mandateData.merchantName??"Merchant")}</p><div class="button-group"><primer-button variant="primary" @click=${this._handleConfirmMandate.bind(this)} ?disabled=${this.isSubmitting} ?loading=${this.isSubmitting} >${P("stripe_ach_mandate_accept_button",{id:"stripe_ach_mandate_accept_button"})}</primer-button><primer-button variant="tertiary" @click=${this._handleDeclineMandate.bind(this)} ?disabled=${this.isSubmitting} >${P("stripe_ach_mandate_cancel_payment_button",{id:"stripe_ach_mandate_cancel_payment_button"})}</primer-button></div>`}render(){return this._paymentMethodManagerTask.render({complete:e=>e?this.screen==="form"?this.renderForm(e):this.renderMandate():h})}};he.styles=[w,Pa],d([p({type:Object})],he.prototype,"paymentMethod",2),d([C({context:se,subscribe:!0}),p({attribute:!1})],he.prototype,"paymentManagers",2),d([C({context:F,subscribe:!0}),p({attribute:!1})],he.prototype,"sdkState",2),d([C({context:ae,subscribe:!0}),p({attribute:!1})],he.prototype,"clientOptions",2),d([M()],he.prototype,"screen",2),d([M()],he.prototype,"isSubmitting",2),he=d([b("primer-ach-payment"),O()],he);var wa=g` :host { height: calc( ${we(nt)} + calc(2 * var(--primer-space-medium)) ); display: flex; /* Default value for the background color CSS variable */ --dynamic-payment-button-bg-color: var( --primer-color-background-outlined-default ); } primer-button { width: 100%; height: 100%; } primer-button::part(button) { background-color: var(--dynamic-payment-button-bg-color); border: 1px solid var(--primer-color-border-outlined-default); color: var(--primer-color-text-primary); flex: 1; padding: 1px; } .image-container { display: flex; justify-content: center; height: 100%; } /* Target the img specifically inside our component */ img { height: 100%; } `;function nr(i){return i.toLowerCase().replace(/[^a-zA-Z0-9]+(.)/g,(t,e)=>e.toUpperCase())}var be=class extends v{constructor(){super(...arguments);this.paymentManagers=new Map;this.sdkState=null;this.headlessUtils=null;this.open=!1;this._paymentMethodManagerTask=new V(this,{task:([e,r])=>!e||!r?D:r.get(e)?.manager,args:()=>[this.paymentMethod?.type,this.paymentManagers]});this._getAssetsTask=new V(this,{task:([e,r])=>{if(!e||!r)return D;let o=r.getPaymentMethodConfiguration(e);return o?{backgroundColor:o.displayMetadata.button.backgroundColor.colored,name:o.name,displayName:this._legacyGetButtonLabel(o.displayMetadata.button.text),iconUrl:o.displayMetadata.button.iconUrl.colored||o.displayMetadata.button.iconUrl.light||o.displayMetadata.button.iconUrl.dark}:D},args:()=>[this.paymentMethod?.type,this.headlessUtils]});this._setupTasks=new V(this,{task:([e,r])=>!e||!r?D:{paymentMethodManager:e,assetsConfig:r},args:()=>[this._paymentMethodManagerTask.value,this._getAssetsTask.value]})}_legacyGetButtonLabel(e){if(!e)return;let r=e?nr(e):"";return r==="payWith"&&(r="pay_with"),P(r,{id:r})}start(){this._paymentMethodManagerTask.value&&(this.open=!0)}renderDialog(){return this.open?u`<primer-portal><primer-dialog @primer-dialog-close="${()=>this.open=!1}"><primer-ach-payment .paymentMethod=${this.paymentMethod} @primer-ach-error=${()=>this.open=!1} @primer-ach-mandate-confirmed=${()=>this.open=!1} @primer-ach-mandate-declined=${()=>this.open=!1} ></primer-ach-payment></primer-dialog></primer-portal>`:h}render(){return this._setupTasks.render({error:()=>h,complete:({assetsConfig:e})=>(this.style.setProperty("--dynamic-payment-button-bg-color",e.backgroundColor),u`<primer-button @click="${()=>this.start()}" class=${Z({loading:!!this.sdkState?.isProcessing,reverse:!0})} title="${P("pay_with",{id:"pay_with"})} ${e.name}" ><span class="image-container"><img src="${e.iconUrl}" alt="${e.name}" /></span>${e.displayName}</primer-button>${this.renderDialog()} `)})}};be.styles=[w,wa],d([p({type:Object})],be.prototype,"paymentMethod",2),d([C({context:se,subscribe:!0})],be.prototype,"paymentManagers",2),d([C({context:F,subscribe:!0})],be.prototype,"sdkState",2),d([C({context:B,subscribe:!0})],be.prototype,"headlessUtils",2),d([M()],be.prototype,"open",2),be=d([b("primer-dynamic-payment"),O()],be);var Ma=g` :host { height: calc( ${we(nt)} + calc(2 * var(--primer-space-medium)) ); display: flex; /* Default value for the background color CSS variable */ --redirect-payment-button-bg-color: var( --primer-color-background-outlined-default ); } primer-button { width: 100%; height: 100%; } primer-button::part(button) { background-color: var(--redirect-payment-button-bg-color); border: 1px solid var(--primer-color-border-outlined-default); color: var(--primer-color-text-primary); flex: 1; padding: var(--primer-space-small); display: flex; align-items: center; justify-content: center; gap: var(--primer-space-small); } /* Default layout: icon on the left (START) */ primer-button { display: flex; flex-direction: row; } /* When icon position is END */ primer-button.icon-end { flex-direction: row-reverse; } .image-container { display: flex; justify-content: center; align-items: center; min-width: 100px; height: 100%; } .button-text { font-family: var(--primer-typography-font-family); font-size: var(--primer-typography-title-small-font-size); font-weight: var(--primer-typography-title-small-font-weight); line-height: var(--primer-typography-title-small-line-height); letter-spacing: var(--primer-typography-title-small-letter-spacing); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* Target the img specifically inside our component */ img { max-width: 100px; width: 100%; height: auto; object-fit: cover; max-height: 100%; } /* For image container sizing */ .image-container { flex-shrink: 0; flex-grow: 1; } /* Disabled state styling - subtle visual feedback */ :host([disabled]) { opacity: 0.6; cursor: not-allowed; } :host([disabled]) primer-button::part(button) { pointer-events: none; cursor: not-allowed; } :host([disabled]) img { filter: grayscale(100%); } `;var Ce=class extends v{constructor(){super(...arguments);this.disabled=!1;this.paymentManagers=new Map;this.sdkState=null;this.headlessUtils=null;this._paymentMethodManagerTask=new V(this,{task:([e,r])=>!e||!r?D:r.get(e)?.manager,args:()=>[this.paymentMethod?.type,this.paymentManagers]});this._getAssetsTask=new V(this,{task:([e,r])=>{if(!e||!r)return D;let o=r.getPaymentMethodConfiguration(e);if(!o)return D;let n=o.displayMetadata.button.backgroundColor.colored??o.displayMetadata.button.backgroundColor.light,a=o.displayMetadata.button.iconPositionRelativeToText||"START";return{backgroundColor:n,name:o.name,displayName:this._legacyGetButtonLabel(o.displayMetadata.button.text),iconUrl:o.displayMetadata.button.iconUrl.colored??o.displayMetadata.button.iconUrl.light,iconPosition:a}},args:()=>[this.paymentMethod?.type,this.headlessUtils]});this._setupTasks=new V(this,{task:([e,r])=>!e||!r?D:{paymentMethodManager:e,assetsConfig:r},args:()=>[this._paymentMethodManagerTask.value,this._getAssetsTask.value]})}_legacyGetButtonLabel(e){if(!e)return;let r=e?nr(e):"";return r==="payWith"&&(r="pay_with"),P(r,{id:r})}startRedirectPayment(){this.disabled||this._paymentMethodManagerTask.value&&this._paymentMethodManagerTask.value.start()}render(){return this._setupTasks.render({error:()=>h,complete:({assetsConfig:e})=>{this.style.setProperty("--redirect-payment-button-bg-color",e.backgroundColor);let r={loading:!!this.sdkState?.isProcessing,"icon-end":e.iconPosition==="END","image-only":!e.displayName},o=e.displayName?u`<span class="image-container"><img src="${e.iconUrl}" alt="${e.name}" /></span><span class="button-text">${e.displayName}</span>`:u`<span class="image-container"><img src="${e.iconUrl}" alt="${e.name}" /></span>`;return u`<primer-button @click="${()=>this.startRedirectPayment()}" class=${Z(r)} title="${P("pay_with",{id:"pay_with"})} ${e.name}" ?disabled=${this.disabled} >${o}</primer-button>`}})}};Ce.styles=[w,Ma],d([p({type:Object})],Ce.prototype,"paymentMethod",2),d([p({type:Boolean,attribute:"disabled"})],Ce.prototype,"disabled",2),d([C({context:se,subscribe:!0})],Ce.prototype,"paymentManagers",2),d([C({context:F,subscribe:!0})],Ce.prototype,"sdkState",2),d([C({context:B,subscribe:!0})],Ce.prototype,"headlessUtils",2),Ce=d([b("primer-redirect-payment"),O()],Ce);var St={WORLDPAY_IDEAL:"WORLDPAY_IDEAL",AUTOMATED_CLEARING_HOUSE:"AUTOMATED_CLEARING_HOUSE",ADYEN_KLARNA:"ADYEN_KLARNA",ADYEN_BANCONTACT_CARD:"ADYEN_BANCONTACT_CARD",PAY_NL_KAARTDIRECT:"PAY_NL_KAARTDIRECT",ADYEN_EPS:"ADYEN_EPS",ADYEN_BANCONTACT_PAYCONIQ:"ADYEN_BANCONTACT_PAYCONIQ",OMISE_PROMPTPAY:"OMISE_PROMPTPAY",OMISE_TRUEMONEY:"OMISE_TRUEMONEY",ADYEN_MULTIBANCO:"ADYEN_MULTIBANCO",PACYPAY_WECHAT:"PACYPAY_WECHAT",PACYPAY_ALIPAY:"PACYPAY_ALIPAY",ADYEN_MBWAY:"ADYEN_MBWAY",XENDIT_DANA:"XENDIT_DANA",XENDIT_SHOPEEPAY:"XENDIT_SHOPEEPAY",ADYEN_PAYSHOP:"ADYEN_PAYSHOP",ADYEN_PAYTRAIL:"ADYEN_PAYTRAIL",CLEARPAY:"CLEARPAY",RAPYD_FAST:"RAPYD_FAST",RAPYD_PROMPTPAY:"RAPYD_PROMPTPAY",RAPYD_GCASH:"RAPYD_GCASH",RAPYD_POLI:"RAPYD_POLI",RAPYD_GRABPAY:"RAPYD_GRABPAY",PRIMER_PAYPAL:"PRIMER_PAYPAL",TWOC2P:"TWOC2P",NETS:"NETS",STRIPE_ACH:"STRIPE_ACH",STRIPE_GIROPAY:"STRIPE_GIROPAY",MOLLIE_GIROPAY:"MOLLIE_GIROPAY",MOLLIE_EPS:"MOLLIE_EPS",PAY_NL_EPS:"PAY_NL_EPS",PAY_NL_P24:"PAY_NL_P24",MOLLIE_P24:"MOLLIE_P24",MOLLIE_SOFORT:"MOLLIE_SOFORT",COINBASE:"COINBASE",OPENNODE:"OPENNODE",MOLLIE_GIFT_CARD:"MOLLIE_GIFTCARD",XFERS_PAYNOW:"XFERS_PAYNOW",CARD:"PAYMENT_CARD",APPLE_PAY:"APPLE_PAY",GOOGLE_PAY:"GOOGLE_PAY",PAYPAL:"PAYPAL_ORDER",PAYPAL_VAULTED:"PAYPAL_BILLING_AGREEMENT",GO_CARDLESS:"GOCARDLESS",PAY_NL_IDEAL:"PAY_NL_IDEAL",PAY_NL_SOFORT_BANKING:"PAY_NL_SOFORT_BANKING",PAY_NL_BANCONTACT:"PAY_NL_BANCONTACT",PAY_NL_PAYPAL:"PAY_NL_PAYPAL",PAY_NL_CREDIT_TRANSFER:"PAY_NL_CREDIT_TRANSFER",PAY_NL_DIRECT_DEBIT:"PAY_NL_DIRECT_DEBIT",PAY_NL_GIROPAY:"PAY_NL_GIROPAY",PAY_NL_PAYCONIQ:"PAY_NL_PAYCONIQ",PAY_NL_RIVERTY:"PAY_NL_RIVERTY",HOOLAH:"HOOLAH",ADYEN_BLIK:"ADYEN_BLIK",ADYEN_VIPPS:"ADYEN_VIPPS",ADYEN_GIROPAY:"ADYEN_GIROPAY",ADYEN_SOFORT:"ADYEN_SOFORT",ADYEN_IDEAL:"ADYEN_IDEAL",ADYEN_TRUSTLY:"ADYEN_TRUSTLY",ADYEN_ALIPAY:"ADYEN_ALIPAY",ADYEN_TWINT:"ADYEN_TWINT",ADYEN_MOBILEPAY:"ADYEN_MOBILEPAY",MOLLIE_BANCONTACT:"MOLLIE_BANCONTACT",MOLLIE_IDEAL:"MOLLIE_IDEAL",BUCKAROO_GIROPAY:"BUCKAROO_GIROPAY",BUCKAROO_EPS:"BUCKAROO_EPS",BUCKAROO_SOFORT:"BUCKAROO_SOFORT",BUCKAROO_BANCONTACT:"BUCKAROO_BANCONTACT",BUCKAROO_IDEAL:"BUCKAROO_IDEAL",ATOME:"ATOME",KLARNA_CUSTOMER_TOKEN:"KLARNA_CUSTOMER_TOKEN",DLOCAL_PIX:"DLOCAL_PIX",ALMA:"ALMA"};function Ia(i){return i.paymentInstrumentType===St.CARD}async function ri(i,t,e){if(!i||!t||!e)return{icon:"",shouldShowCVV:!1,type:"other",description:""};let r="";if(Ia(i))r=t.getCardNetworkAsset(i.paymentInstrumentData.network).cardUrl;else{let a=await t.getCDNAssets(i.paymentMethodType);a&&(r=a.assets?.icon?`${a.goatCdnUrl}/${a.assets.icon}`:"")}let o=e.cvvRecapture,n=lo(i);return{icon:r,shouldShowCVV:o,...n}}function ka(i){return i.charAt(0).toUpperCase()+i.slice(1).toLowerCase()}function wd(i){return i?i===i.toUpperCase()?ka(i):i:""}function Na(i,t){return[i,t].filter(Boolean).join(" ")}function Md(i,t){return!i||!t?"":`Expires ${i}/${t.slice(-2)}`}function La(i){return i?`\u2022\u2022\u2022\u2022 ${i}`:""}function Id(i){let t=i.paymentInstrumentData,e=t.cardholderName,r=t.last4Digits,o=Md(t.expirationMonth,t.expirationYear),n=wd(t.network),a=`${i.paymentInstrumentData.cardholderName?i.paymentInstrumentData.cardholderName:""}${(r?` ${n} ${La(r)}`:n)||" Card"}`;return{type:"card",cardholderName:e,last4:r,expiresDate:o,network:n,description:a}}function kd(i){let t=i.paymentInstrumentData,e=t.externalPayerInfo?.email||"",r=t.externalPayerInfo?.firstName||"",o=t.externalPayerInfo?.lastName||"",n=i.userDescription||e||"PayPal Account";return{type:"other",fullName:Na(r,o),email:e,paymentMethodType:"PayPal",description:n}}function Nd(i){let t=i.paymentInstrumentData,e=t.sessionData?.billingAddress?.email||"",r=t.sessionData?.billingAddress?.firstName||"",o=t.sessionData?.billingAddress?.lastName||"",n=i.userDescription||(e?`Klarna - ${e}`:"Klarna Account");return{type:"other",fullName:Na(r,o),email:e,paymentMethodType:"Klarna",description:n}}function Ld(i){let t=i.paymentInstrumentData,e=t.accountNumberLastFourDigits||"",r=t.bankName||"",o=t.accountType||"",n=i.userDescription;return n||(r&&e?n=`${r} ${La(e)}`:r?n=r:n="Bank Account"),{type:"other",fullName:"",bankName:r,last4:e,accountType:o,paymentMethodType:"ACH",description:n}}function Od(i){let t=i.paymentInstrumentType,e=ka(t.replace(/_/g," "));return{type:"other",description:i.userDescription||e}}var Rd={[St.CARD]:Id,[St.PAYPAL_VAULTED]:kd,[St.KLARNA_CUSTOMER_TOKEN]:Nd,[St.AUTOMATED_CLEARING_HOUSE]:Ld};function lo(i){try{let t=Rd[i.paymentInstrumentType];return t?t(i):Od(i)}catch(t){return E.errorWithDatadog(`FormatUtils: Error formatting payment method ${i.id}`,{error:t}),{type:"other",description:i.userDescription||i.id||"Payment Method"}}}var Oa=g` :host { display: block; width: 100%; position: relative; } .vault-manager { display: flex; flex-direction: column; position: relative; } .vault-manager-content { display: flex; flex-direction: column; width: 100%; position: relative; } /* Content container using CSS Grid for height animation */ .content-container { display: grid; grid-template-rows: 1fr; transition: grid-template-rows var(--primer-animation-duration) var(--primer-animation-easing); width: 100%; position: relative; } /* Required to make grid animation work - ensures content can expand/collapse properly */ .content-container > * { min-height: 0; overflow: hidden; } /* Submit button container */ .submit-button-container { display: grid; grid-template-rows: 1fr; transition: grid-template-rows var(--primer-animation-duration) var(--primer-animation-easing); overflow: hidden; margin-top: var(--primer-space-small); width: 100%; } /* Ensure the submit button has full width */ .submit-button { width: 100%; } /* Make sure pay button inside the submit component is full width */ primer-vault-payment-submit::part(button), ::slotted(primer-button) { width: 100%; } /* Payment methods list */ .payment-methods-list { display: flex; flex-direction: column; gap: var(--primer-space-small); width: 100%; position: relative; } /* Delete confirmation container */ .delete-confirmation-container { width: 100%; position: relative; display: flex; flex-direction: column; gap: var(--primer-space-small); } /* Loading overlay styles */ .loading-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; background-color: rgba(255, 255, 255, 0.7); z-index: 10; border-radius: var(--primer-radius-medium); backdrop-filter: blur(2px); opacity: 0; /* Start invisible */ } /* Add styles for when updating is active */ .is-updating { pointer-events: none; /* Prevent interaction when updating */ } /* * Component-specific styles to ensure smooth animations * These components need display:block to work with the grid layout */ primer-vault-payment-method-item, primer-vault-empty-state, primer-vault-delete-confirmation { display: block; width: 100%; } /* Disable animations for reduced motion preference */ @media (prefers-reduced-motion: reduce) { .content-container, .submit-button-container, primer-vault-payment-method-item, primer-vault-payment-submit, primer-vault-empty-state, primer-vault-delete-confirmation { transition: none; } } primer-button::part(button) { align-items: center; width: 100%; justify-content: flex-start; display: flex; text-align: left; padding: var(--primer-space-medium); } `;var{I:aC}=on;var Ra=i=>i.strings===void 0;var ar=(i,t)=>{let e=i._$AN;if(e===void 0)return!1;for(let r of e)r._$AO?.(t,!1),ar(r,t);return!0},ii=i=>{let t,e;do{if((t=i._$AM)===void 0)break;e=t._$AN,e.delete(i),i=t}while(e?.size===0)},Da=i=>{for(let t;t=i._$AM;i=t){let e=t._$AN;if(e===void 0)t._$AN=e=new Set;else if(e.has(i))break;e.add(i),Vd(t)}};function Dd(i){this._$AN!==void 0?(ii(this),this._$AM=i,Da(this)):this._$AM=i}function $d(i,t=!1,e=0){let r=this._$AH,o=this._$AN;if(o!==void 0&&o.size!==0)if(t)if(Array.isArray(r))for(let n=e;n<r.length;n++)ar(r[n],!1),ii(r[n]);else r!=null&&(ar(r,!1),ii(r));else ar(this,i)}var Vd=i=>{i.type==Ie.CHILD&&(i._$AP??(i._$AP=$d),i._$AQ??(i._$AQ=Dd))},dt=class extends st{constructor(){super(...arguments),this._$AN=void 0}_$AT(t,e,r){super._$AT(t,e,r),Da(this),this.isConnected=t._$AU}_$AO(t,e=!0){t!==this.isConnected&&(this.isConnected=t,t?this.reconnected?.():this.disconnected?.()),e&&(ar(this,t),ii(this))}setValue(t){if(Ra(this._$Ct))this._$Ct._$AI(t,this);else{let e=[...this._$Ct._$AH];e[this._$Ci]=t,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}};var oi=new WeakMap,Lt=class{constructor(t,e){this.startPaused=!1,this.disabled=!1,this.clients=new Set,this.pendingComplete=!1,this.host=t,this.defaultOptions=e.defaultOptions||{},this.startPaused=!!e.startPaused,this.disabled=!!e.disabled,this.onComplete=e.onComplete,oi.set(this.host,this)}async add(t){this.clients.add(t),this.startPaused&&t.webAnimation?.pause(),this.pendingComplete=!0,await t.finished,this.pendingComplete&&!this.isAnimating&&(this.pendingComplete=!1,this.onComplete?.())}remove(t){this.clients.delete(t)}pause(){this.clients.forEach(t=>t.webAnimation?.pause())}play(){this.clients.forEach(t=>t.webAnimation?.play())}cancel(){this.clients.forEach(t=>t.webAnimation?.cancel()),this.clients.clear()}finish(){this.clients.forEach(t=>t.webAnimation?.finish()),this.clients.clear()}togglePlay(){this.isPlaying?this.pause():this.play()}get isAnimating(){return this.clients.size>0}get isPlaying(){return Array.from(this.clients).some(t=>t.webAnimation?.playState==="running")}async finished(){await Promise.all(Array.from(this.clients).map(t=>t.finished))}};var $a=0,co=new Map,Va=new WeakSet,po=()=>new Promise(i=>requestAnimationFrame(i));var Ua=(i,t)=>{let e=i-t;return e===0?void 0:e},Ya=(i,t)=>{let e=i/t;return e===1?void 0:e},ni={left:(i,t)=>{let e=Ua(i,t);return{value:e,transform:e==null||isNaN(e)?void 0:`translateX(${e}px)`}},top:(i,t)=>{let e=Ua(i,t);return{value:e,transform:e==null||isNaN(e)?void 0:`translateY(${e}px)`}},width:(i,t)=>{let e;t===0&&(t=1,e={width:"1px"});let r=Ya(i,t);return{value:r,overrideFrom:e,transform:r==null||isNaN(r)?void 0:`scaleX(${r})`}},height:(i,t)=>{let e;t===0&&(t=1,e={height:"1px"});let r=Ya(i,t);return{value:r,overrideFrom:e,transform:r==null||isNaN(r)?void 0:`scaleY(${r})`}}},Ba={duration:333,easing:"ease-in-out"},Fa=["left","top","width","height","opacity","color","background"],Ha=new WeakMap,ai=class extends dt{constructor(t){if(super(t),this.t=!1,this.i=null,this.o=null,this.h=!0,this.shouldLog=!1,t.type===Ie.CHILD)throw Error("The `animate` directive must be used in attribute position.");this.createFinished()}createFinished(){this.resolveFinished?.(),this.finished=new Promise(t=>{this.l=t})}async resolveFinished(){this.l?.(),this.l=void 0}render(t){return h}getController(){return oi.get(this.u)}isDisabled(){return this.options.disabled||this.getController()?.disabled}update(t,[e]){let r=this.u===void 0;return r&&(this.u=t.options?.host,this.u.addController(this),this.u.updateComplete.then(o=>this.t=!0),this.element=t.element,Ha.set(this.element,this)),this.optionsOrCallback=e,(r||typeof e!="function")&&this.p(e),this.render(e)}p(t){t=t??{};let e=this.getController();e!==void 0&&((t={...e.defaultOptions,...t}).keyframeOptions={...e.defaultOptions.keyframeOptions,...t.keyframeOptions}),t.properties??(t.properties=Fa),this.options=t}m(){let t={},e=this.element.getBoundingClientRect(),r=getComputedStyle(this.element);return this.options.properties.forEach(o=>{let n=e[o]??(ni[o]?void 0:r[o]),a=Number(n);t[o]=isNaN(a)?n+"":a}),t}v(){let t,e=!0;return this.options.guard&&(t=this.options.guard(),e=((r,o)=>{if(Array.isArray(r)){if(Array.isArray(o)&&o.length===r.length&&r.every((n,a)=>n===o[a]))return!1}else if(o===r)return!1;return!0})(t,this._)),this.h=this.t&&!this.isDisabled()&&!this.isAnimating()&&e&&this.element.isConnected,this.h&&(this._=Array.isArray(t)?Array.from(t):t),this.h}hostUpdate(){typeof this.optionsOrCallback=="function"&&this.p(this.optionsOrCallback()),this.v()&&(this.A=this.m(),this.i=this.i??this.element.parentNode,this.o=this.element.nextSibling)}async hostUpdated(){if(!this.h||!this.element.isConnected||this.options.skipInitial&&!this.isHostRendered)return;let t;this.prepare(),await po;let e=this.O(),r=this.j(this.options.keyframeOptions,e),o=this.m();if(this.A!==void 0){let{from:n,to:a}=this.N(this.A,o,e);this.log("measured",[this.A,o,n,a]),t=this.calculateKeyframes(n,a)}else{let n=co.get(this.options.inId);if(n){co.delete(this.options.inId);let{from:a,to:l}=this.N(n,o,e);t=this.calculateKeyframes(a,l),t=this.options.in?[{...this.options.in[0],...t[0]},...this.options.in.slice(1),t[1]]:t,$a++,t.forEach(s=>s.zIndex=$a)}else this.options.in&&(t=[...this.options.in,{}])}this.animate(t,r)}resetStyles(){this.P!==void 0&&(this.element.setAttribute("style",this.P??""),this.P=void 0)}commitStyles(){this.P=this.element.getAttribute("style"),this.webAnimation?.commitStyles(),this.webAnimation?.cancel()}reconnected(){}async disconnected(){if(!this.h||(this.options.id!==void 0&&co.set(this.options.id,this.A),this.options.out===void 0))return;if(this.prepare(),await po(),this.i?.isConnected){let e=this.o&&this.o.parentNode===this.i?this.o:null;if(this.i.insertBefore(this.element,e),this.options.stabilizeOut){let r=this.m();this.log("stabilizing out");let o=this.A.left-r.left,n=this.A.top-r.top;getComputedStyle(this.element).position!=="static"||o===0&&n===0||(this.element.style.position="relative"),o!==0&&(this.element.style.left=o+"px"),n!==0&&(this.element.style.top=n+"px")}}let t=this.j(this.options.keyframeOptions);await this.animate(this.options.out,t),this.element.remove()}prepare(){this.createFinished()}start(){this.options.onStart?.(this)}didFinish(t){t&&this.options.onComplete?.(this),this.A=void 0,this.animatingProperties=void 0,this.frames=void 0,this.resolveFinished()}O(){let t=[];for(let e=this.element.parentNode;e;e=e?.parentNode){let r=Ha.get(e);r&&!r.isDisabled()&&r&&t.push(r)}return t}get isHostRendered(){let t=Va.has(this.u);return t||this.u.updateComplete.then(()=>{Va.add(this.u)}),t}j(t,e=this.O()){let r={...Ba};return e.forEach(o=>Object.assign(r,o.options.keyframeOptions)),Object.assign(r,t),r}N(t,e,r){t={...t},e={...e};let o=r.map(l=>l.animatingProperties).filter(l=>l!==void 0),n=1,a=1;return o.length>0&&(o.forEach(l=>{l.width&&(n/=l.width),l.height&&(a/=l.height)}),t.left!==void 0&&e.left!==void 0&&(t.left=n*t.left,e.left=n*e.left),t.top!==void 0&&e.top!==void 0&&(t.top=a*t.top,e.top=a*e.top)),{from:t,to:e}}calculateKeyframes(t,e,r=!1){let o={},n={},a=!1,l={};for(let s in e){let c=t[s],m=e[s];if(s in ni){let f=ni[s];if(c===void 0||m===void 0)continue;let y=f(c,m);y.transform!==void 0&&(l[s]=y.value,a=!0,o.transform=`${o.transform??""} ${y.transform}`,y.overrideFrom!==void 0&&Object.assign(o,y.overrideFrom))}else c!==m&&c!==void 0&&m!==void 0&&(a=!0,o[s]=c,n[s]=m)}return o.transformOrigin=n.transformOrigin=r?"center center":"top left",this.animatingProperties=l,a?[o,n]:void 0}async animate(t,e=this.options.keyframeOptions){this.start(),this.frames=t;let r=!1;if(!this.isAnimating()&&!this.isDisabled()&&(this.options.onFrames&&(this.frames=t=this.options.onFrames(this),this.log("modified frames",t)),t!==void 0)){this.log("animate",[t,e]),r=!0,this.webAnimation=this.element.animate(t,e);let o=this.getController();o?.add(this);try{await this.webAnimation.finished}catch{}o?.remove(this)}return this.didFinish(r),r}isAnimating(){return this.webAnimation?.playState==="running"||this.webAnimation?.pending}log(t,e){this.shouldLog&&this.isDisabled()}},ct=Ae(ai);var Ud=["top","right","bottom","left"],si=class extends dt{constructor(t){if(super(t),t.type!==Ie.ELEMENT)throw Error("The `position` directive must be used in attribute position.")}render(t,e){return h}update(t,[e,r]){return this.u===void 0&&(this.u=t.options?.host,this.u.addController(this)),this.S=t.element,this.C=e,this.F=r??["left","top","width","height"],this.render(e,r)}hostUpdated(){this.$()}$(){let t=typeof this.C=="function"?this.C():this.C?.value,e=t.offsetParent;if(t===void 0||!e)return;let r=t.getBoundingClientRect(),o=e.getBoundingClientRect();this.F?.forEach(n=>{let a=Ud.includes(n)?r[n]-o[n]:r[n];this.S.style[n]=a+"px"})}},Yd=Ae(si);var Q=class extends v{constructor(){super();this.vaultManagerContext=null;this.vaultItemContext=null;this.headlessUtils=null;this.isEditMode=!1;this.deletePaymentMethodId=null;this.isDeleting=!1;this.errorMessage="";this.animationDuration=300;this.deleteAssetConfig=null;this.handleToggleEditMode=e=>{this.isEditMode=e.detail,this.deletePaymentMethodId=null,this.isEditMode&&this.vaultItemContext&&this.vaultItemContext.setSelectedVaultedPaymentMethod(null)};this.handleDeletePaymentMethod=async e=>{if(this.deletePaymentMethodId=e.detail,this.deletePaymentMethodId&&this.vaultManagerContext&&this.headlessUtils){let r=this.vaultManagerContext.vaultedPaymentMethods.find(o=>o.id===this.deletePaymentMethodId);r&&(this.deleteAssetConfig=await ri(r,this.headlessUtils,this.vaultManagerContext))}};this.handleCancelDelete=()=>{this.deletePaymentMethodId=null,this.deleteAssetConfig=null};this.handleConfirmDelete=async()=>{if(!this.vaultManagerContext?.deleteVaultedPaymentMethod||!this.deletePaymentMethodId){this.errorMessage=P("something_went_wrong_error",{id:"something_went_wrong_error"});return}try{this.isDeleting=!0,await this.vaultManagerContext.deleteVaultedPaymentMethod(this.deletePaymentMethodId),this.deletePaymentMethodId=null,this.deleteAssetConfig=null}catch(e){this.errorMessage=e instanceof Error?e.message:P("something_went_wrong_error",{id:"something_went_wrong_error"})}finally{this.isDeleting=!1}};this.handlePaymentError=e=>{let r=e.detail?.error;this.errorMessage=r instanceof Error?r.message:P("payment_processing_error",{id:"payment_processing_error"})};this.handleCloseError=()=>{this.errorMessage=""};new Lt(this,{defaultOptions:{keyframeOptions:{duration:Number(getComputedStyle(document.documentElement).getPropertyValue("--primer-animation-duration").trim().replace("ms","")),easing:getComputedStyle(document.documentElement).getPropertyValue("--primer-animation-easing").trim()}}})}getAnimationConfig(){return{keyframeOptions:{duration:this.animationDuration,easing:getComputedStyle(document.documentElement).getPropertyValue("--primer-animation-easing").trim(),fill:"both"}}}getPaymentMethodName(e){if(!this.vaultManagerContext)return"";let r=this.vaultManagerContext.vaultedPaymentMethods.find(o=>o.id===e);if(!r)return"";try{return lo(r).description||""}catch{return""}}renderLoadingOverlay(){return u`<div class="loading-overlay" ${ct({...this.getAnimationConfig(),properties:["opacity"],in:[{opacity:0},{opacity:1}],out:[{opacity:1},{opacity:0}]})} ><primer-spinner size="medium" color="var(--primer-color-loader)" ></primer-spinner></div>`}renderDeleteConfirmation(){if(!this.deletePaymentMethodId||!this.deleteAssetConfig)return h;let e=this.getPaymentMethodName(this.deletePaymentMethodId);return u`<div class="delete-confirmation-container"><primer-button disabled variant="secondary"><primer-payment-method-content .assetConfig=${this.deleteAssetConfig} ></primer-payment-method-content></primer-button><primer-vault-delete-confirmation .isDeleting=${this.isDeleting} .paymentMethodId=${this.deletePaymentMethodId} .paymentMethodName=${e} @confirm-delete=${this.handleConfirmDelete} @cancel-delete=${this.handleCancelDelete} ${ct({...this.getAnimationConfig(),properties:["opacity"],in:[{opacity:0},{opacity:1}],out:[{opacity:1},{opacity:0}]})} ></primer-vault-delete-confirmation></div>`}renderPaymentMethodItem(e){return this.deletePaymentMethodId===e.id?h:u`<primer-vault-payment-method-item .paymentMethod=${e} .isEditMode=${this.isEditMode} @delete-payment-method=${this.handleDeletePaymentMethod} ${ct({...this.getAnimationConfig(),properties:["opacity"],in:[{opacity:0},{opacity:1}],out:[{opacity:1},{opacity:0}]})} ></primer-vault-payment-method-item>`}renderPaymentMethodList(){let e=this.vaultManagerContext?.vaultedPaymentMethods||[],r=!this.isEditMode&&e.length>0&&!this.deletePaymentMethodId;return u`<div class="payment-methods-list">${e.map(o=>this.renderPaymentMethodItem(o))} ${$(r,()=>u`<div class="submit-button-container"><primer-vault-payment-submit class="submit-button" @primer-vault-payment-error=${this.handlePaymentError} ${ct({...this.getAnimationConfig(),properties:["opacity"],in:[{opacity:0},{opacity:1}],out:[{opacity:1},{opacity:0}]})} ></primer-vault-payment-submit></div>`,()=>h)}</div>`}render(){if(!this.vaultManagerContext?.enabled)return h;let e=this.vaultManagerContext.vaultedPaymentMethods.length>0,r=this.vaultManagerContext.isLoading,o=this.vaultManagerContext.isUpdating;return u` ${$(!this.vaultManagerContext?.showEmptyState&&!e,()=>h,()=>u`<slot name="vault-empty-state"><div class="vault-manager ${o?"is-updating":""}"><primer-vault-manager-header .isEditMode=${this.isEditMode} .hasPaymentMethods=${e} @toggle-edit-mode=${this.handleToggleEditMode} ></primer-vault-manager-header>${$(this.errorMessage,()=>u`<primer-vault-error-message .errorMessage=${this.errorMessage} @close-error=${this.handleCloseError} ${ct({...this.getAnimationConfig(),properties:["opacity"],in:[{opacity:0},{opacity:1}],out:[{opacity:1},{opacity:0}]})} ></primer-vault-error-message>`,()=>h)}<div class="vault-manager-content">${$(!r&&!e,()=>u`<div class="content-container"><primer-vault-empty-state ${ct({...this.getAnimationConfig(),properties:["opacity"],in:[{opacity:0},{opacity:1}],out:[{opacity:1},{opacity:0}]})} ></primer-vault-empty-state></div>`,()=>h)} ${$(!r&&e,()=>u`<div class="content-container">${$(this.deletePaymentMethodId,()=>this.renderDeleteConfirmation(),()=>this.renderPaymentMethodList())}</div>`,()=>h)}</div>${$(o,()=>this.renderLoadingOverlay(),()=>h)}</div></slot>`)} `}};Q.styles=[w,Oa],d([C({context:le,subscribe:!0}),p({type:Object,attribute:!1})],Q.prototype,"vaultManagerContext",2),d([C({context:Te,subscribe:!0}),p({type:Object,attribute:!1})],Q.prototype,"vaultItemContext",2),d([C({context:B,subscribe:!0}),p({type:Object,attribute:!1})],Q.prototype,"headlessUtils",2),d([M()],Q.prototype,"isEditMode",2),d([M()],Q.prototype,"deletePaymentMethodId",2),d([M()],Q.prototype,"isDeleting",2),d([M()],Q.prototype,"errorMessage",2),d([p({type:Number})],Q.prototype,"animationDuration",2),d([M()],Q.prototype,"deleteAssetConfig",2),Q=d([b("primer-vault-manager"),O()],Q);var za=g` :host { display: flex; width: 100%; flex-direction: column; } .payment-method-wrapper { display: flex; flex-direction: column; width: 100%; } .payment-method-container { display: flex; width: 100%; align-items: center; gap: var(--primer-space-small); } /* Target the button part from primer-button with 'with-cvv' class using ::part selector */ primer-button::part(button) { align-items: center; width: 100%; justify-content: flex-start; display: flex; text-align: left; padding: var(--primer-space-medium); } /* render checkmark icon on baseline (on the top) */ primer-button.with-cvv::part(button) { align-items: baseline; } /* Card icons */ .payment-method-icon { height: var(--primer-space-xlarge); object-fit: contain; flex-shrink: 0; transition: transform var(--primer-animation-duration) var(--primer-animation-easing); } .payment-method-icon-generic { display: flex; align-items: center; justify-content: center; color: var(--primer-color-gray-500); height: var(--primer-space-xlarge); flex-shrink: 0; } .payment-method-details { flex: 1; display: flex; gap: var(--primer-space-xsmall); align-items: flex-start; transition: transform var(--primer-animation-duration) var(--primer-animation-easing); margin-left: var(--primer-space-small); } .payment-method-card { flex: 1; width: 100%; display: flex; flex-direction: column; gap: var(--primer-space-xsmall); transition: transform var(--primer-animation-duration) var(--primer-animation-easing); } .payment-method-description { font-weight: var(--primer-typography-title-large-weight); color: var(--primer-color-text-primary); transition: color var(--primer-animation-duration) var(--primer-animation-easing); } .payment-method-secondary-description { font-size: var(--primer-typography-body-small-size); color: var(--primer-color-text-secondary); transition: color var(--primer-animation-duration) var(--primer-animation-easing); } .payment-method-row { display: grid; grid-template-columns: 200px 100px; justify-content: space-between; align-items: center; } .cell-2 { grid-column: 2; display: flex; justify-content: flex-end; align-items: center; } .mt-2 { margin-top: var(--primer-space-medium); } .payment-method-header { font-weight: var(--primer-typography-body-large-weight); font-size: var(--primer-typography-body-large-size); line-height: var(--primer-typography-body-large-line-height); color: var(--primer-color-text-primary); letter-spacing: var(--primer-typography-body-large-letter-spacing); } .payment-method-subtitle { color: var(--primer-color-text-secondary); font-size: var(--primer-typography-body-small-size); line-height: var(--primer-typography-body-small-line-height); font-weight: var(--primer-typography-body-small-weight); letter-spacing: var(--primer-typography-body-small-letter-spacing); } .payment-method-button { flex: 1; } .flex { display: flex; align-items: flex-end; gap: var(--primer-space-xsmall); } .flex-center { display: flex; align-items: center; justify-content: center; gap: var(--primer-space-small); } /* Delete button - for edit mode */ .delete-button { display: flex; align-items: center; justify-content: center; } .delete-button:active { transform: scale(0.95); } `;var pe=class extends v{constructor(){super(...arguments);this.vaultManagerContext=null;this.vaultItemContext=null;this.headlessUtils=null;this.paymentMethod=null;this.isEditMode=!1;this._getAssetsTask=new V(this,{task:async([e,r,o])=>await ri(e,r,o),args:()=>[this.paymentMethod,this.headlessUtils,this.vaultManagerContext]});this.handleClick=()=>{this.isEditMode||!this.vaultManagerContext||!this.paymentMethod||(this.isSelected()?this.vaultItemContext?.setSelectedVaultedPaymentMethod(null):this.vaultItemContext?.setSelectedVaultedPaymentMethod(this.paymentMethod))};this.handleDeleteClick=e=>{e.stopPropagation(),this.dispatchEvent(new CustomEvent("delete-payment-method",{detail:this.paymentMethod?.id,bubbles:!0,composed:!0}))}}isSelected(){if(!this.vaultManagerContext||!this.paymentMethod)return!1;let e=this.vaultItemContext?.selectedVaultedPaymentMethod;return!!e&&e.id===this.paymentMethod.id}render(){return this._getAssetsTask.render({error:()=>h,complete:e=>{let r=this.isSelected()?"checked":"default",o=!1,n=e?.description;return u`<div class="payment-method-wrapper"><div class="payment-method-container"><primer-button variant="secondary" class="payment-method-button ${e.shouldShowCVV?"with-cvv":""}" selectable ?disabled=${this.isEditMode} selectionState=${r} .flex=${o} @click=${this.handleClick} ><primer-payment-method-content .assetConfig=${e} ></primer-payment-method-content>${$(e.shouldShowCVV&&this.isSelected()&&!this.isEditMode,()=>u`<div class="payment-method-row mt-2"><span class="flex-center"><primer-icon name="lock" size="sm"></primer-icon><span class="payment-method-subtitle"> Input the card CVV for a secure payment</span ></span><span class="cell-2"><primer-vault-cvv-input .paymentMethod="${this.paymentMethod}" ><span slot="label"></span></primer-vault-cvv-input></span></div>`,()=>h)}</primer-button>${this.isEditMode?u`<primer-button variant="tertiary" class="delete-button" @click=${this.handleDeleteClick} aria-label=${`${P("delete",{id:"delete"})} ${n}`} ><primer-icon name="close" size="sm"></primer-icon></primer-button>`:h}</div></div>`}})}};pe.styles=[w,za],d([C({context:le,subscribe:!0}),p({type:Object,attribute:!1,hasChanged(e,r){return e?.cvvRecapture!==r?.cvvRecapture}})],pe.prototype,"vaultManagerContext",2),d([C({context:Te,subscribe:!0}),p({type:Object,attribute:!1,hasChanged(e,r){return e?.selectedVaultedPaymentMethod?.id!==r?.selectedVaultedPaymentMethod?.id}})],pe.prototype,"vaultItemContext",2),d([C({context:B,subscribe:!0}),p({type:Object})],pe.prototype,"headlessUtils",2),d([p({type:Object,attribute:!1})],pe.prototype,"paymentMethod",2),d([p({type:Boolean,reflect:!0})],pe.prototype,"isEditMode",2),pe=d([b("primer-vault-payment-method-item"),O()],pe);var ja=g` :host { display: block; width: 100%; } .vault-manager-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--primer-space-medium); } .vault-manager-header h3 { font-size: var(--primer-typography-title-large-size); font-weight: var(--primer-typography-title-large-weight); font-family: var(--primer-typography-title-large-font); color: var(--primer-color-text-primary); margin: 0; } .edit-button { display: flex; align-items: center; justify-content: center; } `;var _e=class extends v{constructor(){super(...arguments);this.isEditMode=!1;this.hasPaymentMethods=!1;this.toggleEditMode=()=>{this.dispatchEvent(new CustomEvent("toggle-edit-mode",{detail:!this.isEditMode,bubbles:!0,composed:!0}))}}render(){return u`<div class="vault-manager-header"><h3>${P("previouslyUsed",{id:"previouslyUsed"})}</h3>${this.hasPaymentMethods?u`<primer-button variant="tertiary" class="edit-button ${this.isEditMode?"active":""}" @click=${this.toggleEditMode} aria-label=${this.isEditMode?P("confirm",{id:"confirm"}):P("editPaymentMethods",{id:"editPaymentMethods"})} >${this.isEditMode?u`<primer-icon name="checkmark" size="sm"></primer-icon>`:u`<primer-icon name="edit" size="sm"></primer-icon>`}</primer-button>`:h}</div>`}};_e.styles=[w,ja],d([p({type:Boolean})],_e.prototype,"isEditMode",2),d([p({type:Boolean})],_e.prototype,"hasPaymentMethods",2),_e=d([b("primer-vault-manager-header"),O()],_e);var Ka=g` :host { display: block; width: 100%; } .delete-confirmation-text { color: var(--primer-color-text-secondary); font-size: var(--primer-typography-body-small-size); font-weight: var(--primer-typography-body-small-weight); line-height: var(--primer-typography-body-small-line-height); letter-spacing: var(--primer-typography-body-small-letter-spacing); } .delete-confirmation { margin-top: var(--primer-space-medium); background-color: var(--primer-color-gray-000); } .delete-message { margin-bottom: var(--primer-space-medium); } .delete-text { margin: 0; color: var(--primer-color-text-secondary); font-size: var(--primer-typography-body-medium-size); } .delete-actions { display: grid; grid-template-columns: 1fr 1fr; gap: var(--primer-space-small); } .delete-confirm { background-color: var(--primer-color-red-500); color: var(--primer-color-gray-000); border: none; padding: var(--primer-space-small) var(--primer-space-medium); border-radius: var(--primer-radius-small); font-weight: var(--primer-typography-body-medium-weight); cursor: pointer; transition: background-color var(--primer-animation-duration) var(--primer-animation-easing); } .delete-confirm:hover:not(:disabled) { background-color: var(--primer-color-red-900); } .delete-confirm:disabled { opacity: 0.7; cursor: not-allowed; } .delete-cancel { background-color: transparent; border: 1px solid var(--primer-color-border-outlined-default); padding: var(--primer-space-small) var(--primer-space-medium); border-radius: var(--primer-radius-small); color: var(--primer-color-text-primary); font-weight: var(--primer-typography-body-medium-weight); cursor: pointer; transition: background-color var(--primer-animation-duration) var(--primer-animation-easing); } .delete-cancel:hover:not(:disabled) { background-color: var(--primer-color-gray-100); } .delete-cancel:disabled { opacity: 0.7; cursor: not-allowed; } `;var fe=class extends v{constructor(){super(...arguments);this.isDeleting=!1;this.paymentMethodId="";this.paymentMethodName="";this.vaultManager=null;this.handleConfirmClick=()=>{this.dispatchEvent(new CustomEvent("confirm-delete",{bubbles:!0,composed:!0}))};this.handleCancelClick=()=>{this.dispatchEvent(new CustomEvent("cancel-delete",{bubbles:!0,composed:!0}))}}render(){return u`<div class="delete-confirmation"><p class="delete-confirmation-text"> Are you sure you want to delete this payment method? </p><div class="delete-actions"><primer-button variant="secondary" @click=${this.handleCancelClick} ?disabled=${this.isDeleting} >${P("cancel",{id:"cancel"})}</primer-button><primer-button @click=${this.handleConfirmClick} ?disabled=${this.isDeleting} >${this.isDeleting?P("deleting",{id:"deleting"}):P("confirmVaultedPaymentMethodDeletion",{id:"confirmVaultedPaymentMethodDeletion"})}</primer-button></div></div>`}};fe.styles=[w,Ka],d([p({type:Boolean})],fe.prototype,"isDeleting",2),d([p({type:String})],fe.prototype,"paymentMethodId",2),d([p({type:String})],fe.prototype,"paymentMethodName",2),d([C({context:le,subscribe:!0})],fe.prototype,"vaultManager",2),fe=d([b("primer-vault-delete-confirmation"),O()],fe);var Ga=g` :host { display: block; width: 100%; } .empty-state { padding: var(--primer-space-xlarge) 0; text-align: center; color: var(--primer-color-text-secondary); } .empty-state p { margin: 0; } `;var ze=class extends v{render(){return u`<div class="empty-state"><p>${P("savedPaymentMethodsEmpty",{id:"savedPaymentMethodsEmpty"})}</p></div>`}};ze.styles=[w,Ga],ze=d([b("primer-vault-empty-state"),O()],ze);var Wa=g` :host { display: block; width: 100%; } .error-message { display: flex; background-color: var(--primer-color-red-100); padding: var(--primer-space-medium); border-radius: var(--primer-radius-small); margin-bottom: var(--primer-space-medium); justify-content: space-between; align-items: center; border: 1px solid var(--primer-color-red-500); } .error-content { display: flex; align-items: center; gap: var(--primer-space-small); } .error-message p { margin: 0; color: var(--primer-color-text-negative); font-size: var(--primer-typography-body-medium-size); } .error-message button { background: transparent; border: none; color: var(--primer-color-text-negative); cursor: pointer; padding: var(--primer-space-xsmall); display: flex; align-items: center; justify-content: center; border-radius: var(--primer-radius-small); transition: background-color var(--primer-animation-duration) var(--primer-animation-easing); } .error-message button:hover { background-color: rgba(0, 0, 0, 0.05); } `;var Re=class extends v{constructor(){super(...arguments);this.errorMessage="";this.handleDismiss=()=>{this.dispatchEvent(new CustomEvent("close-error",{bubbles:!0,composed:!0}))}}render(){return u`<div class="error-message"><div class="error-content"><primer-icon name="warning" size="sm" color="var(--primer-color-red-500)" ></primer-icon><p>${this.errorMessage}</p></div><button @click=${this.handleDismiss} aria-label=${P("closeErrorMessage",{id:"closeErrorMessage"})} ><primer-icon name="close" size="sm"></primer-icon></button></div>`}};Re.styles=[w,Wa],d([p({type:String})],Re.prototype,"errorMessage",2),Re=d([b("primer-vault-error-message"),O()],Re);var qa=g` :host { display: contents; } `;var J=class extends v{constructor(){super(...arguments);this._userAssignedProps=new Set;this._internalButtonText="";this.headlessInstance=null;this.sdkState=null;this.vaultItemContext=null;this.vaultManager=null;this.clientOptions=null;this.variant="primary";this.disabled=!1;this.handleClick=async e=>{if(e.preventDefault(),!this.isButtonDisabled)try{await this.vaultManager?.startVaultedPaymentFlow()}catch(r){let o=new CustomEvent("primer-vault-payment-error",{bubbles:!0,composed:!0,detail:{error:r}});this.dispatchEvent(o)}}}get buttonText(){return this._userAssignedProps.has("buttonText")?this._internalButtonText:P("pay",{id:"pay"})}set buttonText(e){let r=this.buttonText;e!==""?(this._userAssignedProps.add("buttonText"),this._internalButtonText=e):(this._userAssignedProps.delete("buttonText"),this._internalButtonText=""),this.requestUpdate("buttonText",r)}get isButtonDisabled(){return!!(this.disabled||!this.vaultItemContext?.selectedVaultedPaymentMethod||this.vaultManager?.isLoading)}render(){let e=this.clientOptions?.submitButton?.amountVisible?this.headlessInstance?.getUIOrderAmount():null,r=e?` ${e}`:h;return u`<primer-button buttonType="submit" variant=${this.variant} @click=${this.handleClick} .disabled=${this.isButtonDisabled} .loading=${this.sdkState?.isProcessing} data-submit >${this.buttonText}${r}</primer-button>`}};J.styles=[w,qa],d([p({type:String})],J.prototype,"buttonText",1),d([C({context:B,subscribe:!0}),p({type:Object})],J.prototype,"headlessInstance",2),d([C({context:F,subscribe:!0}),p()],J.prototype,"sdkState",2),d([C({context:Te,subscribe:!0}),p({type:Object,attribute:!1,hasChanged(e,r){return e?.selectedVaultedPaymentMethod?.id!==r?.selectedVaultedPaymentMethod?.id}})],J.prototype,"vaultItemContext",2),d([C({context:le,subscribe:!0}),p({type:Object,attribute:!1})],J.prototype,"vaultManager",2),d([C({context:ae,subscribe:!0}),p({type:Object,attribute:!1,hasChanged(e,r){return e?.submitButton?.amountVisible!==r?.submitButton?.amountVisible}})],J.prototype,"clientOptions",2),d([p({type:String})],J.prototype,"variant",2),d([p({type:Boolean})],J.prototype,"disabled",2),J=d([b("primer-vault-payment-submit"),O()],J);function li(i){return i?{paddingHorizontal:0,placeholder:{color:i.getPropertyValue("--primer-color-text-placeholder").trim(),fontSize:i.getPropertyValue("--primer-typography-body-large-size").trim(),fontFamily:i.getPropertyValue("--primer-typography-body-large-font").trim()},height:i.getPropertyValue("--primer-typography-body-large-line-height").trim(),fontSize:i.getPropertyValue("--primer-typography-body-large-size").trim(),fontFamily:i.getPropertyValue("--primer-typography-body-large-font").trim(),color:i.getPropertyValue("--primer-color-text-primary").trim()}:null}var Ja=g` :host { display: block; margin-top: var(--primer-space-medium); } .cvv-input-container { margin-bottom: var(--primer-space-medium); } `;var j=class extends v{constructor(){super();this.vaultManagerFormContext=null;this.vaultManagerCvvContext=null;this.computedStyles=null;this.paymentMethod=null;this.cvvError=null;this.cvvInputIsDirty=!1;this.cvvInputIsBlurred=!1;this.cvvInput=null;this.isFocused=!1;this._setupCVVIframe=new V(this,{task:([e,r])=>!e||!r||e.paymentMethodType!=="PAYMENT_CARD"||!e.paymentInstrumentData?.network||r.createCvvInput===null?D:{network:e.paymentInstrumentData.network,createCvvInput:r.createCvvInput},args:()=>[this.paymentMethod,this.vaultManagerFormContext]});this.cvvContainerId=`cvv-container-${Math.random().toString(36).substring(2,9)}`,new V(this,{task:async([e])=>{if(!e)return D;await this.updateComplete;let r=this.renderRoot.querySelector(`#${this.cvvContainerId}`);if(!r)return;let o=li(this.computedStyles),n=o?{input:{base:o}}:void 0,a={cardNetwork:e.network,container:r,name:"cvv",placeholder:"123",style:n};this.cvvInput=await e.createCvvInput?.(a)??null,this.cvvInput&&(this.cvvInput.focus(),this.cvvError=this.cvvInput.metadata.error||null,this.vaultManagerCvvContext?.setCvvInput(this.cvvInput),this.cvvInput.addListener("change",()=>{this.onCvvInputChange()}),this.cvvInput.addListener("blur",()=>{this.onBlur()}),this.cvvInput.addListener("focus",()=>{this.onFocus()}))},args:()=>[this._setupCVVIframe.value]})}disconnectedCallback(){super.disconnectedCallback(),this.cvvInput&&(this.cvvInput.remove(),this.cvvInput=null,this.cvvError=null,this.vaultManagerCvvContext?.setCvvInput(null))}onCvvInputChange(){!this.cvvInput||!this.vaultManagerCvvContext||(this.cvvInputIsDirty=!0,this.cvvError=this.cvvInput.metadata.error||null)}onBlur(){this.cvvInput&&(this.cvvInputIsBlurred=!0,this.cvvError=this.cvvInput.metadata.error||null,this.isFocused=!1)}onFocus(){this.isFocused=!0}render(){return this._setupCVVIframe.render({error:()=>h,complete:()=>u`<div class="cvv-input-container"><primer-input-wrapper .focusWithin=${this.isFocused} .hasError=${!!this.cvvError&&(this.vaultManagerCvvContext?.formIsDirty||this.cvvInputIsDirty&&this.cvvInputIsBlurred)} ><slot name="label" slot="label"><primer-input-label>CVV</primer-input-label></slot><div slot="input" id="${this.cvvContainerId}"></div>${$(this.cvvError&&(this.vaultManagerCvvContext?.formIsDirty||this.cvvInputIsDirty&&this.cvvInputIsBlurred),()=>u`<primer-input-error slot="error">${this.cvvError}</primer-input-error>`)}</primer-input-wrapper></div>`})}};j.styles=[w,Ja],d([C({context:le,subscribe:!0}),p({type:Object,attribute:!1,hasChanged(e,r){return e?.createCvvInput!==r?.createCvvInput}})],j.prototype,"vaultManagerFormContext",2),d([C({context:Te,subscribe:!0}),p({type:Object,attribute:!1})],j.prototype,"vaultManagerCvvContext",2),d([C({context:Qe,subscribe:!0}),p()],j.prototype,"computedStyles",2),d([p({type:Object})],j.prototype,"paymentMethod",2),d([M()],j.prototype,"cvvError",2),d([M()],j.prototype,"cvvInputIsDirty",2),d([M()],j.prototype,"cvvInputIsBlurred",2),d([M()],j.prototype,"cvvInput",2),d([M()],j.prototype,"isFocused",2),j=d([b("primer-vault-cvv-input"),O()],j);var Za=g` :host { display: flex; width: 100%; align-items: center; } /* Card icons */ .payment-method-icon { height: var(--primer-space-xlarge); object-fit: contain; flex-shrink: 0; transition: transform var(--primer-animation-duration) var(--primer-animation-easing); } .payment-method-icon-generic { display: flex; align-items: center; justify-content: center; color: var(--primer-color-gray-500); height: var(--primer-space-xlarge); flex-shrink: 0; } .payment-method-details { flex: 1; display: flex; flex-direction: column; gap: var(--primer-space-xsmall); align-items: flex-start; transition: transform var(--primer-animation-duration) var(--primer-animation-easing); margin-left: var(--primer-space-small); } .payment-method-card { flex: 1; width: 100%; display: flex; flex-direction: column; gap: var(--primer-space-xsmall); transition: transform var(--primer-animation-duration) var(--primer-animation-easing); } .payment-method-description { font-weight: var(--primer-typography-title-large-weight); color: var(--primer-color-text-primary); transition: color var(--primer-animation-duration) var(--primer-animation-easing); } .payment-method-secondary-description { font-size: var(--primer-typography-body-small-size); color: var(--primer-color-text-secondary); transition: color var(--primer-animation-duration) var(--primer-animation-easing); } .payment-method-row { display: grid; grid-template-columns: 200px 100px; justify-content: space-between; align-items: center; } .cell-2 { grid-column: 2; display: flex; justify-content: flex-end; align-items: center; } .payment-method-header { font-weight: var(--primer-typography-body-large-weight); font-size: var(--primer-typography-body-large-size); line-height: var(--primer-typography-body-large-line-height); color: var(--primer-color-text-primary); letter-spacing: var(--primer-typography-body-large-letter-spacing); } .payment-method-subtitle { color: var(--primer-color-text-secondary); font-size: var(--primer-typography-body-small-size); line-height: var(--primer-typography-body-small-line-height); font-weight: var(--primer-typography-body-small-weight); letter-spacing: var(--primer-typography-body-small-letter-spacing); } .flex { display: flex; align-items: flex-end; gap: var(--primer-space-xsmall); } .payment-method-card-other { width: 100%; display: grid; grid-template-columns: 1fr auto; gap: var(--primer-space-medium); align-items: center; justify-content: space-between; } .payment-method-right-column-text { font-size: var(--primer-typography-body-medium-size); font-weight: var(--primer-typography-body-medium-weight); line-height: var(--primer-typography-body-medium-line-height); letter-spacing: var(--primer-typography-body-medium-letter-spacing); } `;var De=class extends v{constructor(){super(...arguments);this.assetConfig=null}render(){if(!this.assetConfig)return h;let e=this.assetConfig.description,r=this.assetConfig.icon,o=$(this.assetConfig.icon,()=>u`<img class="payment-method-icon" src=${r} alt=${e} />`,()=>u`<div class="payment-method-icon payment-method-icon-generic"><primer-icon name="payment-card" size="sm"></primer-icon></div>`);return this.assetConfig.type==="other"&&this.assetConfig.paymentMethodType!=="ACH"?u`<div class="payment-method-card-other"><div class="left-column"><div class="payment-method-header">${this.assetConfig.fullName}</div><div class="flex">${o}<span class="payment-method-subtitle" >${this.assetConfig.paymentMethodType}</span ></div></div><div class="payment-method-right-column-text">${this.assetConfig.email||`\u2022\u2022\u2022\u2022 ${this.assetConfig.last4}`}</div></div>`:this.assetConfig.type==="other"&&this.assetConfig.paymentMethodType==="ACH"?u`<span class="payment-method-card"><div class="payment-method-row"><span class="payment-method-header" >${this.assetConfig.fullName}</span ><span class="payment-method-header cell-2" >•••• ${this.assetConfig.last4}</span ></div><div class="payment-method-row"><span class="flex">${o}<span class="payment-method-subtitle" >${this.assetConfig.bankName}</span ></span><span class="payment-method-subtitle cell-2" >${this.assetConfig.accountType}</span ></div></span>`:this.assetConfig.type==="card"?u`<span class="payment-method-card"><div class="payment-method-row"><span class="payment-method-header" >${this.assetConfig.cardholderName}</span ><span class="payment-method-header cell-2" >•••• ${this.assetConfig.last4}</span ></div><div class="payment-method-row"><span class="flex">${o}<span class="payment-method-subtitle" >${this.assetConfig.network}</span ></span><span class="payment-method-subtitle cell-2" >${this.assetConfig.expiresDate}</span ></div></span>`:h}};De.styles=[w,Za],d([p({type:Object,attribute:!1})],De.prototype,"assetConfig",2),De=d([b("primer-payment-method-content")],De);var Ot="card-form-context";function Xa(i,t){if(i.style.cssText="width: 100%; flex:1; padding: 0; border: none; height: var(--primer-typography-body-large-line-height); font-size: var(--primer-typography-body-large-size); font-family: var(--primer-typography-body-large-font); color: var(--primer-color-text-primary); background-color: transparent; outline: none;",i.setAttribute("data-custom-input",""),!t.shadowRoot?.querySelector("style[data-custom-input-style]")){let e=document.createElement("style");e.setAttribute("data-custom-input-style",""),e.textContent=`
189
+ `;var un=':root,primer-checkout{--primer-color-background-transparent-default:rgba(255,255,255,0);--primer-color-border-transparent-default:rgba(255,255,255,0);--primer-color-gray-100:#f5f5f5;--primer-color-gray-200:#eeeeee;--primer-color-gray-300:#e0e0e0;--primer-color-gray-400:#bdbdbd;--primer-color-gray-500:#9e9e9e;--primer-color-gray-600:#757575;--primer-color-gray-900:#212121;--primer-color-gray-000:#ffffff;--primer-color-brand:#2f98ff;--primer-color-red-100:#ffecec;--primer-color-red-500:#ff7279;--primer-color-red-900:#b4324b;--primer-color-blue-500:#399dff;--primer-color-blue-900:#2270f4;--primer-radius-base:4px;--primer-typography-brand:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;--primer-typography-title-xlarge-letter-spacing:-0.6px;--primer-typography-title-xlarge-weight:550;--primer-typography-title-xlarge-size:24px;--primer-typography-title-xlarge-line-height:32px;--primer-typography-title-large-letter-spacing:-0.2px;--primer-typography-title-large-weight:550;--primer-typography-title-large-size:16px;--primer-typography-title-large-line-height:20px;--primer-typography-body-large-letter-spacing:-0.2px;--primer-typography-body-large-weight:400;--primer-typography-body-large-size:16px;--primer-typography-body-large-line-height:20px;--primer-typography-body-medium-letter-spacing:0px;--primer-typography-body-medium-weight:400;--primer-typography-body-medium-size:14px;--primer-typography-body-medium-line-height:20px;--primer-typography-body-small-letter-spacing:0px;--primer-typography-body-small-weight:400;--primer-typography-body-small-size:12px;--primer-typography-body-small-line-height:16px;--primer-space-base:4px;--primer-size-base:4px;--primer-animation-duration:200ms;--primer-animation-easing:cubic-bezier(0.44,0,0.4,1);--primer-color-background-outlined-default:var(--primer-color-gray-000);--primer-color-background-outlined-disabled:var(--primer-color-gray-100);--primer-color-background-transparent-hover:var(--primer-color-gray-100);--primer-color-background-transparent-active:var(--primer-color-gray-200);--primer-color-background-transparent-loading:var(--primer-color-gray-100);--primer-color-background-transparent-focus:var(--primer-color-background-transparent-default);--primer-color-background-transparent-disabled:var(--primer-color-gray-100);--primer-color-background-transparent-selected:var(--primer-color-gray-100);--primer-color-text-primary:var(--primer-color-gray-900);--primer-color-text-placeholder:var(--primer-color-gray-500);--primer-color-text-disabled:var(--primer-color-gray-400);--primer-color-text-negative:var(--primer-color-red-900);--primer-color-text-link:var(--primer-color-blue-900);--primer-color-text-secondary:var(--primer-color-gray-600);--primer-color-border-outlined-default:var(--primer-color-gray-300);--primer-color-border-outlined-hover:var(--primer-color-gray-400);--primer-color-border-outlined-active:var(--primer-color-gray-500);--primer-color-border-outlined-disabled:var(--primer-color-gray-200);--primer-color-border-outlined-loading:var(--primer-color-gray-200);--primer-color-border-outlined-selected:var(--primer-color-brand);--primer-color-border-outlined-error:var(--primer-color-red-500);--primer-color-border-transparent-hover:var(--primer-color-border-transparent-default);--primer-color-border-transparent-active:var(--primer-color-border-transparent-default);--primer-color-border-transparent-disabled:var(--primer-color-border-transparent-default);--primer-color-border-transparent-selected:var(--primer-color-border-transparent-default);--primer-color-icon-primary:var(--primer-color-gray-900);--primer-color-icon-disabled:var(--primer-color-gray-400);--primer-color-icon-negative:var(--primer-color-red-500);--primer-color-focus:var(--primer-color-brand);--primer-color-loader:var(--primer-color-brand);--primer-radius-medium:8px;--primer-radius-small:4px;--primer-radius-large:12px;--primer-radius-xsmall:2px;--primer-typography-title-xlarge-font:var(--primer-typography-brand);--primer-typography-title-large-font:var(--primer-typography-brand);--primer-typography-body-large-font:var(--primer-typography-brand);--primer-typography-body-medium-font:var(--primer-typography-brand);--primer-typography-body-small-font:var(--primer-typography-brand);--primer-space-xxsmall:2px;--primer-space-xsmall:4px;--primer-space-small:8px;--primer-space-medium:12px;--primer-space-large:16px;--primer-space-xlarge:20px;--primer-size-small:16px;--primer-size-medium:20px;--primer-size-large:24px;--primer-size-xlarge:32px;--primer-size-xxlarge:40px;--primer-size-xxxlarge:56px;--primer-color-background-outlined-focus:var(--primer-color-background-outlined-default);--primer-color-background-outlined-loading:var(--primer-color-background-outlined-disabled);--primer-color-background-outlined-active:var(--primer-color-background-outlined-default);--primer-color-background-outlined-hover:var(--primer-color-background-outlined-default);--primer-color-background-outlined-selected:var(--primer-color-background-outlined-default);--primer-color-background-outlined-error:var(--primer-color-background-outlined-default);--primer-color-border-outlined-focus:var(--primer-color-focus);--primer-color-border-transparent-focus:var(--primer-color-focus);--primer-color-border-transparent-loading:var(--primer-color-border-transparent-disabled)}',hn=":root,primer-checkout.primer-dark-theme{--primer-color-gray-100:#292929;--primer-color-gray-200:#424242;--primer-color-gray-300:#575757;--primer-color-gray-400:#858585;--primer-color-gray-500:#767577;--primer-color-gray-600:#c7c7c7;--primer-color-gray-900:#efefef;--primer-color-gray-000:#171619;--primer-color-brand:#2f98ff;--primer-color-red-100:#321c20;--primer-color-red-500:#e46d70;--primer-color-red-900:#f6bfbf;--primer-color-blue-500:#3f93e4;--primer-color-blue-900:#4aaeff}";var Od="primer-light-theme-css",Rd="primer-dark-theme-css";function fo(){pr(un,Od,!0)}function yo(){pr(hn,Rd,!0)}function fn(){fo(),yo()}function yn(){pr(mn,"primer-css-loader-styles",!1)}function gn(){fn()}function Dd(){fo()}function $d(){yo()}var vn=g` :host { display: inline-flex; align-items: center; justify-content: center; } .spinner-container { display: flex; align-items: center; justify-content: center; width: var(--spinner-size, var(--primer-size-medium)); height: var(--spinner-size, var(--primer-size-medium)); } .spinner-container:not(.compact) { margin: var(--primer-space-small) 0; } .spinner-container.compact { margin: 0; } .spinner { animation: spinner-rotate 1.2s linear infinite; width: 100%; height: 100%; color: var(--spinner-color, var(--primer-color-loader)); } .path { fill: currentColor; transform-origin: center; transition: fill var(--primer-animation-duration, 200ms) var(--primer-animation-easing, ease); } @keyframes spinner-rotate { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } `;var go={small:16,medium:24,large:32},ke=class extends v{constructor(){super(...arguments);this.color="var(--primer-color-loader)";this.size="medium";this.compact=!1}getSize(){if(this.size in go)return go[this.size];let e=parseInt(this.size,10);return isNaN(e)?go.medium:e}render(){let e=this.getSize(),r=20,o=`0 0 ${r} ${r}`;return this.style.setProperty("--spinner-color",this.color),this.style.setProperty("--spinner-size",`${e}px`),u`<div class="spinner-container ${this.compact?"compact":""}"><svg class="spinner" width="${e}" height="${e}" viewBox="${o}" fill="none" xmlns="http://www.w3.org/2000/svg" role="status" aria-label="Loading" ><path d="M4.27827 10.002C4.27827 6.84166 6.84019 4.27973 10.0005 4.27973C10.7676 4.27973 11.3894 3.6579 11.3894 2.89084C11.3894 2.12378 10.7676 1.50195 10.0005 1.50195C5.30607 1.50195 1.50049 5.30753 1.50049 10.002C1.50049 14.6964 5.30607 18.502 10.0005 18.502C14.6949 18.502 18.5005 14.6964 18.5005 10.002C18.5005 9.23489 17.8787 8.61306 17.1116 8.61306C16.3445 8.61306 15.7227 9.23489 15.7227 10.002C15.7227 13.1622 13.1608 15.7242 10.0005 15.7242C6.84019 15.7242 4.27827 13.1622 4.27827 10.002Z" fill="currentColor" class="path" /></svg></div>`}};ke.styles=[vn],d([p({type:String})],ke.prototype,"color",2),d([p({type:String})],ke.prototype,"size",2),d([p({type:Boolean})],ke.prototype,"compact",2),ke=d([b("primer-spinner")],ke);var X=xe(class extends lt{constructor(i){if(super(i),i.type!==Me.ATTRIBUTE||i.name!=="class"||i.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(i){return" "+Object.keys(i).filter(t=>i[t]).join(" ")+" "}update(i,[t]){if(this.st===void 0){this.st=new Set,i.strings!==void 0&&(this.nt=new Set(i.strings.join(" ").split(/\s/).filter(r=>r!=="")));for(let r in t)t[r]&&!this.nt?.has(r)&&this.st.add(r);return this.render(t)}let e=i.element.classList;for(let r of this.st)r in t||(e.remove(r),this.st.delete(r));for(let r in t){let o=!!t[r];o===this.st.has(r)||this.nt?.has(r)||(o?(e.add(r),this.st.add(r)):(e.remove(r),this.st.delete(r)))}return Ee}});var bn=g` * { box-sizing: border-box; } :host { display: block; width: 100%; } .input-slot.focus-within { outline: 2px solid var(--primer-color-border-outlined-focus); outline-offset: -2px; } :host([has-error]) .input-slot.focus-within { outline: 2px solid var(--primer-color-border-outlined-error); background-color: var(--primer-color-background-outlined-error); } :host([has-error]) .input-slot { border-color: var(--primer-color-border-outlined-error); background-color: var(--primer-color-background-outlined-error); } .input-wrapper { display: flex; flex-direction: column; gap: var(--primer-space-xsmall); } .input-slot { padding: var(--primer-space-medium) var(--primer-space-medium); border: 1px solid var(--primer-color-border-outlined-default); border-radius: var(--primer-radius-small); background-color: var(--primer-color-background-outlined-default); height: calc( var(--primer-typography-body-large-line-height) + var(--primer-space-medium) + var(--primer-space-medium) + 2px ); display: flex; cursor: text; /* Indicate text input interactivity */ /* 2px is the border width */ } .input-slot ::slotted(*) { width: 100%; } .input-slot:hover { border-color: var(--primer-color-border-outlined-hover); background-color: var(--primer-color-background-outlined-hover); } .input-slot:active { border-color: var(--primer-color-border-outlined-active); background-color: var(--primer-color-background-outlined-active); } .input-slot:disabled { background-color: var(--primer-color-background-outlined-disabled); border-color: var(--primer-color-border-outlined-disabled); cursor: not-allowed; } `;var Ie=class extends v{constructor(){super(...arguments);this.focusWithin=!1;this.hasError=!1;this.handleWrapperClick=e=>{if(e.target!==e.currentTarget)return;let r=this.findSlottedPrimerInput();r?r.focus():this.dispatchEvent(new CustomEvent("wrapper-click",{bubbles:!0,composed:!0}))}}findSlottedPrimerInput(){if(!this.inputSlot)return null;let e=this.inputSlot.assignedElements({flatten:!0}),r=e.find(o=>o.tagName.toLowerCase()==="primer-input");if(r)return r;for(let o of e){let a=o.querySelector("primer-input");if(a)return a}return null}render(){let e={"input-slot":!0,"focus-within":this.focusWithin};return u`<div class="input-wrapper"><slot name="label"></slot><div class="${X(e)}" @click="${this.handleWrapperClick}"><slot name="input"></slot></div><slot name="error"></slot></div>`}};Ie.styles=[bn],d([p({type:Boolean})],Ie.prototype,"focusWithin",2),d([p({type:Boolean,reflect:!0,attribute:"has-error"})],Ie.prototype,"hasError",2),d([at('slot[name="input"]')],Ie.prototype,"inputSlot",2),Ie=d([b("primer-input-wrapper")],Ie);var Cn=g` :host { display: inline-block; font-weight: var(--primer-typography-body-small-weight); font-size: var(--primer-typography-body-small-size); letter-spacing: var(--primer-typography-body-small-letter-spacing); line-height: var(--primer-typography-body-small-line-height); color: var(--primer-color-text-primary); font-family: var(--primer-typography-body-small-font); } :host([disabled]) { color: var(--primer-color-text-disabled); } `;var Fe=class extends v{constructor(){super(...arguments);this.for="";this.disabled=!1}render(){return u`<label for=${this.for}><slot></slot></label>`}};Fe.styles=[Cn],d([p({type:String,reflect:!0})],Fe.prototype,"for",2),d([p({type:Boolean,reflect:!0})],Fe.prototype,"disabled",2),Fe=d([b("primer-input-label")],Fe);var En=g` :host { display: contents; } button { align-items: center; border-radius: var(--primer-radius-medium); border: none; cursor: pointer; display: flex; font-family: var(--primer-typography-title-large-font); font-size: var(--primer-typography-title-large-size); font-weight: var(--primer-typography-title-large-weight); gap: var(--primer-space-small); justify-content: center; letter-spacing: var(--primer-typography-title-large-letter-spacing); line-height: var(--primer-typography-title-large-line-height); outline: none; padding: var(--primer-space-medium) var(--primer-space-medium); position: relative; } .button-content { display: flex; height: 100%; width: 100%; align-items: center; gap: var(--primer-space-small); justify-content: center; transition: opacity var(--primer-animation-duration) var(--primer-animation-easing); } .button-content-base { width: 100%; height: 100%; gap: var(--primer-space-small); transition: opacity var(--primer-animation-duration) var(--primer-animation-easing); } /* Reduce opacity of text during loading for better focus on the spinner */ .button-content.loading { opacity: 0.65; } :host([selectable]) button { justify-content: space-between; } /* Primary variant */ :host([variant='primary']) button { background-color: var(--primer-color-brand); /* This is correct (color-background for color) because Button is kind of a special component */ color: var(--primer-color-background-outlined-default); } :host([variant='primary']:not([disabled]):not([loading])) button:hover { filter: brightness(105%); } :host([variant='primary']:not([disabled]):not([loading])) button:active { filter: brightness(98%); } :host([variant='primary']) button:focus-visible { outline: 2px solid var(--primer-color-brand); outline-offset: 2px; } /* Disabled state for primary button */ :host([variant='primary'][disabled]:not([loading])) button, :host([variant='primary']:not([loading])) button:disabled { color: var(--primer-color-text-disabled); background-color: var(--primer-color-background-outlined-disabled); cursor: not-allowed; } /* Loading state for primary button - OVERRIDES disabled styles with higher specificity */ :host([variant='primary'][loading]) button { background-color: var(--primer-color-brand); opacity: 0.8; color: var(--primer-color-background-outlined-default); cursor: wait; } /* Secondary variant */ :host([variant='secondary']) button { background-color: var(--primer-color-background-outlined-default); color: var(--primer-color-text-primary); border: 1px solid var(--primer-color-border-outlined-default); } :host([variant='secondary']:not([disabled]):not([loading])) button:hover { background-color: var(--primer-color-background-outlined-hover); } :host([variant='secondary']:not([disabled]):not([loading])) button:active { background-color: var(--primer-color-background-outlined-active); } :host([variant='secondary']) button:focus-visible { outline: 2px solid var(--primer-color-border-outlined-focus); outline-offset: 2px; } /* Disabled state for secondary button */ :host([variant='secondary'][disabled]:not([loading])) button, :host([variant='secondary']:not([loading])) button:disabled { background-color: var(--primer-color-background-outlined-disabled); border-color: var(--primer-color-border-outlined-disabled); color: var(--primer-color-text-disabled); cursor: not-allowed; } /* Loading state for secondary button - OVERRIDES disabled styles */ :host([variant='secondary'][loading]) button { background-color: var(--primer-color-gray-100); border-color: var(--primer-color-gray-300); color: var(--primer-color-gray-600); cursor: wait; } /* Tertiary variant */ :host([variant='tertiary']) button { background-color: var(--primer-color-background-transparent-default); border: 1px solid var(--primer-color-border-transparent-default); color: var(--primer-color-text-primary); border-radius: var(--primer-radius-small); padding: var(--primer-space-xxsmall) var(--primer-space-xxsmall); } :host([variant='tertiary']:not([disabled]):not([loading])) button:hover { border-radius: var(--primer-radius-small); background-color: var(--primer-color-background-transparent-hover); border: 1px solid var(--primer-color-border-transparent-hover); color: var(--primer-color-text-primary); } :host([variant='tertiary']:not([disabled]):not([loading])) button:active { background-color: var(--primer-color-background-transparent-active); border-color: var(--primer-color-border-transparent-active); border-radius: var(--primer-radius-small); color: var(--primer-color-text-primary); } :host([variant='tertiary']) button:focus-visible { border-radius: var(--primer-radius-small); background-color: var(--primer-color-background-transparent-focus); outline: 2px solid var(--primer-color-border-transparent-focus); outline-offset: 2px; } /* Disabled state for tertiary button */ :host([variant='tertiary'][disabled]:not([loading])) button, :host([variant='tertiary']:not([loading])) button:disabled { background-color: var(--primer-color-border-transparent-disabled); color: var(--primer-color-text-disabled); cursor: not-allowed; } /* Loading state for tertiary button - OVERRIDES disabled styles */ :host([variant='tertiary'][loading]) button { background-color: var(--primer-color-gray-100); color: var(--primer-color-gray-600); cursor: wait; } /* Checked state styling */ :host([selectionState='checked']) button { border: 2px solid var(--primer-color-brand); background-color: var(--primer-color-gray-100); } /* Loading state - center spinner with content */ :host([loading]) primer-spinner { margin-right: var(--primer-space-xsmall); } /* Special case for tertiary variant loading state spinner size */ :host([variant='tertiary'][loading]) primer-spinner { transform: scale(0.85); } `;var de=class extends v{constructor(){super(...arguments);this.variant="primary";this.disabled=!1;this.loading=!1;this.buttonType="button";this.selectionState="default";this.selectable=!1;this.flex=!0;this.handleClick=()=>{!this.selectable||this.disabled||this.loading||(this.selectionState=this.selectionState==="default"?"checked":"default",this.dispatchEvent(new CustomEvent("selection-change",{bubbles:!0,composed:!0,detail:{state:this.selectionState}})))}}renderCheckmark(){return!this.selectable||this.selectionState!=="checked"||this.loading?f:u`<primer-icon name="checkmark" size="sm" color="var(--primer-color-brand)" ></primer-icon>`}renderSpinner(){if(!this.loading)return f;let e;return this.variant==="primary"?e="var(--primer-color-background-outlined-default)":(this.variant==="secondary"||this.variant==="tertiary")&&(e="var(--primer-color-gray-900)"),u`<primer-spinner size="small" color="${e}" compact ></primer-spinner>`}render(){return u`<button type=${this.buttonType} ?disabled=${this.disabled||this.loading} @click=${this.handleClick} part="button" aria-checked=${this.selectionState==="checked"} aria-busy=${this.loading} >${this.renderSpinner()} ${this.flex?u`<span class="button-content ${this.loading?"loading":""}"><slot></slot></span>`:u`<span class="button-content-base ${this.loading?"loading":""}" ><slot></slot></span>`} ${this.renderCheckmark()}</button>`}};de.styles=[P,En],d([p({type:String,reflect:!0})],de.prototype,"variant",2),d([p({type:Boolean,reflect:!0})],de.prototype,"disabled",2),d([p({type:Boolean,reflect:!0})],de.prototype,"loading",2),d([p({type:String,attribute:"type"})],de.prototype,"buttonType",2),d([p({type:String,reflect:!0})],de.prototype,"selectionState",2),d([p({type:Boolean,reflect:!0})],de.prototype,"selectable",2),d([p({type:Boolean,reflect:!0})],de.prototype,"flex",2),de=d([b("primer-button")],de);var xn=g` :host { display: contents; } :host(:not([active])) { display: none; } .error { color: var(--primer-color-text-negative); font-size: var(--primer-typography-body-small-size); line-height: var(--primer-typography-body-small-line-height); display: block; font-family: var(--primer-typography-body-small-font); } `;var ze=class extends v{constructor(){super(...arguments);this.for="";this.active=!0}render(){return u`<span class="error" role="alert" aria-live="polite" id="${this.for||""}" ><slot></slot></span>`}};ze.styles=[xn],d([p({type:String,reflect:!0})],ze.prototype,"for",2),d([p({type:Boolean,reflect:!0})],ze.prototype,"active",2),ze=d([b("primer-input-error")],ze);var An={trash:we`<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.8333 2.99992H11.5V2.49992C11.5 2.05789 11.3244 1.63397 11.0118 1.32141C10.6993 1.00885 10.2754 0.833252 9.83333 0.833252H6.16667C5.72464 0.833252 5.30072 1.00885 4.98816 1.32141C4.67559 1.63397 4.5 2.05789 4.5 2.49992V2.99992H2.16667C1.98986 2.99992 1.82029 3.07015 1.69526 3.19518C1.57024 3.32021 1.5 3.48978 1.5 3.66659C1.5 3.8434 1.57024 4.01297 1.69526 4.138C1.82029 4.26302 1.98986 4.33326 2.16667 4.33326H2.83333V12.4999C2.83333 12.942 3.00893 13.3659 3.32149 13.6784C3.63405 13.991 4.05797 14.1666 4.5 14.1666H11.5C11.942 14.1666 12.3659 13.991 12.6785 13.6784C12.9911 13.3659 13.1667 12.942 13.1667 12.4999V4.33326H13.8333C14.0101 4.33326 14.1797 4.26302 14.3047 4.138C14.4298 4.01297 14.5 3.8434 14.5 3.66659C14.5 3.48978 14.4298 3.32021 14.3047 3.19518C14.1797 3.07015 14.0101 2.99992 13.8333 2.99992ZM5.83333 2.49992C5.83333 2.32311 5.90357 2.15354 6.0286 2.02851C6.15362 1.90349 6.32319 1.83325 6.5 1.83325H9.5C9.67681 1.83325 9.84638 1.90349 9.9714 2.02851C10.0964 2.15354 10.1667 2.32311 10.1667 2.49992V2.99992H5.83333V2.49992ZM11.8333 12.4999C11.8333 12.6767 11.7631 12.8463 11.6381 12.9713C11.513 13.0964 11.3435 13.1666 11.1667 13.1666H4.83333C4.65652 13.1666 4.48695 13.0964 4.36193 12.9713C4.2369 12.8463 4.16667 12.6767 4.16667 12.4999V4.33326H11.8333V12.4999Z" fill="currentColor"/><path d="M6.5 10.9999C6.67681 10.9999 6.84638 10.9297 6.9714 10.8047C7.09643 10.6796 7.16667 10.5101 7.16667 10.3333V7.33325C7.16667 7.15644 7.09643 6.98687 6.9714 6.86184C6.84638 6.73682 6.67681 6.66658 6.5 6.66658C6.32319 6.66658 6.15362 6.73682 6.0286 6.86184C5.90357 6.98687 5.83333 7.15644 5.83333 7.33325V10.3333C5.83333 10.5101 5.90357 10.6796 6.0286 10.8047C6.15362 10.9297 6.32319 10.9999 6.5 10.9999Z" fill="currentColor"/><path d="M9.5 10.9999C9.67681 10.9999 9.84638 10.9297 9.9714 10.8047C10.0964 10.6796 10.1667 10.5101 10.1667 10.3333V7.33325C10.1667 7.15644 10.0964 6.98687 9.9714 6.86184C9.84638 6.73682 9.67681 6.66658 9.5 6.66658C9.32319 6.66658 9.15362 6.73682 9.0286 6.86184C8.90357 6.98687 8.83333 7.15644 8.83333 7.33325V10.3333C8.83333 10.5101 8.90357 10.6796 9.0286 10.8047C9.15362 10.9297 9.32319 10.9999 9.5 10.9999Z" fill="currentColor"/></svg>`,"successful-check":we`<svg viewBox="0 0 56 56" fill="none" xmlns="http://www.w3.org/2000/svg" ><g id="icon/check-circle-large"><path id="vector" fill-rule="evenodd" clip-rule="evenodd" d="M20.1762 29.5746L24.8429 34.2413C25.295 34.7007 26.0387 34.7007 26.4908 34.2413L35.8241 24.9079C36.2835 24.4559 36.2835 23.7121 35.8241 23.26C35.372 22.8007 34.6283 22.8007 34.1762 23.26L25.6668 31.7694L21.8241 27.9267C21.372 27.4673 20.6283 27.4673 20.1762 27.9267C19.7168 28.3788 19.7168 29.1225 20.1762 29.5746ZM28.0002 47.4173C38.3106 47.4173 46.6668 39.0611 46.6668 28.7507C46.6668 18.4402 38.3106 10.084 28.0002 10.084C17.6897 10.084 9.3335 18.4402 9.3335 28.7507C9.3335 39.0611 17.6897 47.4173 28.0002 47.4173Z" /></g></svg>`,"failure-icon":we`<svg viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" ><path fill-rule="evenodd" clip-rule="evenodd" d="M20.0008 23.3333C20.4614 23.3333 20.7873 22.9606 20.7873 22.5V15C20.7873 14.5394 20.4146 14.1666 20.0008 14.1666C19.587 14.1666 19.1675 14.5416 19.1675 15V22.5C19.1675 22.9583 19.5425 23.3333 20.0008 23.3333ZM32.9331 27.3594L22.5269 9.75935C22.0008 8.86821 21.0529 8.33488 20.0008 8.33331C18.9487 8.33331 18.006 8.8656 17.4748 9.75831L7.06331 27.3625C6.53987 28.2463 6.53206 29.3073 7.04134 30.201C7.568 31.1198 8.51904 31.6666 9.58935 31.6666H30.4175C31.4857 31.6666 32.4357 31.1182 32.9597 30.1995C33.4696 29.3073 33.4591 28.2448 32.9331 27.3594ZM18.7977 26.6666C18.7977 25.976 19.3107 25.4166 20.0008 25.4166C20.6935 25.4166 21.2508 25.9739 21.2039 26.6666C21.2039 27.3568 20.6909 27.9166 20.0008 27.9166C19.3576 27.9166 18.7977 27.3568 18.7977 26.6666Z" /></svg>`,"payment-card":we`<svg width="28" height="21" viewBox="0 0 28 21" fill="none" xmlns="http://www.w3.org/2000/svg"><rect y="0.748047" width="28" height="20" rx="2" fill="#E0E0E0"/><rect y="6.74805" width="28" height="4" fill="#212121"/><rect x="19" y="13.748" width="6" height="4" rx="0.933333" fill="white"/></svg>`,"chevron-down":we`<svg width="8" height="6" viewBox="0 0 8 6" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4.41978 4.90118C4.32079 5.02361 4.16188 5.08353 4.00037 5.08353C3.83887 5.08353 3.67996 5.02361 3.55753 4.90118L0.63995 1.9836C0.395733 1.73939 0.395733 1.34382 0.63995 1.09947C0.884167 0.855124 1.27973 0.855254 1.52408 1.09947L4.00037 3.57524L6.47589 1.09973C6.72011 0.855515 7.11567 0.855515 7.36002 1.09973C7.60437 1.34395 7.60424 1.73952 7.36002 1.98386L4.41978 4.90118Z" fill="#212121"/></svg>`,checkmark:we`<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M15.6326 6.12193C15.8983 6.3668 15.8983 6.76276 15.6326 6.98418L8.75546 13.8613C8.53404 14.127 8.13808 14.127 7.89321 13.8613L4.35119 10.3186C4.10706 10.0971 4.10706 9.70118 4.35119 9.45631C4.59531 9.21404 4.99126 9.21404 5.23535 9.45631L8.33606 12.5588L14.7704 6.12193C15.0152 5.87863 15.4112 5.87863 15.6326 6.12193Z" /></svg>`,close:we`<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none"><path d="M14.7551 13.734C15.0479 14.0269 15.0479 14.502 14.7551 14.7949C14.4622 15.0879 13.987 15.0878 13.6941 14.7949L10.0005 11.0738L6.28054 14.7937C5.98767 15.0866 5.51249 15.0866 5.21959 14.7937C4.92668 14.5008 4.92671 14.0256 5.21959 13.7327L8.94075 10.0141L5.21856 6.26604C4.92568 5.97316 4.92568 5.49798 5.21856 5.20508C5.51143 4.91217 5.98661 4.91221 6.27951 5.20508L10.0005 8.95438L13.7204 5.23446C14.0132 4.94159 14.4884 4.94159 14.7813 5.23446C15.0742 5.52734 15.0742 6.00252 14.7813 6.29542L11.0602 10.0141L14.7551 13.734Z" fill="#212121" /></svg>`,edit:we`<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10.9355 3.19972C11.7814 2.35335 13.1541 2.35335 13.9999 3.19972L14.3642 3.56456C15.21 4.41103 15.21 5.78338 14.3642 6.62925L8.42804 12.5684C8.16615 12.8272 7.84406 13.0169 7.48886 13.1192L4.47866 13.9802C4.2258 14.0524 3.95489 13.9802 3.76825 13.7694C3.58463 13.6099 3.51239 13.339 3.58463 13.0861L4.44555 10.0759C4.5479 9.72072 4.73754 9.39863 4.99642 9.13674L10.9355 3.19972ZM12.9524 4.22139C12.6965 3.93933 12.239 3.93933 11.956 4.22139L11.08 5.09705L12.4677 6.48476L13.3437 5.5817C13.6267 5.32583 13.6267 4.86828 13.3437 4.58622L12.9524 4.22139ZM5.83626 10.4733L5.33055 12.2342L7.09151 11.7285C7.21192 11.6954 7.31728 11.6322 7.40458 11.5449L11.4473 7.50521L10.0596 6.11751L6.01988 10.1602C5.93259 10.2475 5.86937 10.3529 5.83626 10.4733Z" fill="#212121"/><path d="M3.5 16.7126C3.5 16.3138 3.82335 15.9904 4.22222 15.9904H15.7778C16.1767 15.9904 16.5 16.3138 16.5 16.7126C16.5 17.1115 16.1767 17.4349 15.7778 17.4349H4.22222C3.82335 17.4349 3.5 17.1115 3.5 16.7126Z" fill="#212121"/></svg>`,lock:we`<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M7.91621 7.08223V8.33262H12.0842V7.08223C12.0842 5.93082 11.1516 4.99824 10.0002 4.99824C8.84879 4.99824 7.91621 5.93082 7.91621 7.08223ZM6.24902 8.33262V7.08223C6.24902 5.01127 7.92924 3.33105 10.0002 3.33105C12.0712 3.33105 13.7514 5.01127 13.7514 7.08223V8.33262H14.1682C15.0877 8.33262 15.8354 9.08025 15.8354 9.9998V15.0014C15.8354 15.9209 15.0877 16.6686 14.1682 16.6686H5.83223C4.91267 16.6686 4.16504 15.9209 4.16504 15.0014V9.9998C4.16504 9.08025 4.91267 8.33262 5.83223 8.33262H6.24902Z" fill="#212121" fill-opacity="0.62"/></svg>`};var Sn=g` :host { display: inline-block; line-height: 0; /* so you don’t get extra space around the icon */ } /* Styling svgs rendered by passing *name* attribute - from our library file */ :host([size='sm']) svg { width: 20px; height: 20px; } :host([size='md']) svg { width: 42px; height: 42px; } :host([size='lg']) svg { width: 56px; height: 56px; } svg { /* --internal used for abstracting away the icon component */ fill: var(--internal-icon-color, currentColor); } /* For slotted icons */ :host([size='sm']) ::slotted(svg) { width: 20px; height: 20px; } :host([size='lg']) ::slotted(svg) { width: 56px; height: 56px; } ::slotted(svg) { /* --internal used for abstracting away the icon component */ fill: var(--internal-icon-color, currentColor); } `;var Ne=class extends v{constructor(){super(...arguments);this.color="var(--primer-color-icon-primary)";this.size="lg"}render(){let e=this.name?An[this.name]:null;return u`<div style="--internal-icon-color: ${this.color}">${e||u`<slot></slot>`}</div>`}};Ne.styles=[Sn],d([p({type:String,reflect:!0})],Ne.prototype,"color",2),d([p({type:String,reflect:!0})],Ne.prototype,"size",2),d([p({reflect:!0})],Ne.prototype,"name",2),Ne=d([b("primer-icon")],Ne);var _n=g` :host { display: flex; flex-direction: column; align-items: center; gap: var(--primer-space-xsmall); } p { margin: 0; color: var(--primer-color-text-primary); text-align: center; font-size: var(--primer-typography-body-large-size); font-family: var(--primer-typography-body-large-font); font-weight: var(--primer-typography-body-large-weight); line-height: var(--primer-typography-body-large-line-height); letter-spacing: var(--primer-typography-body-large-letter-spacing); } p.secondary { color: var(--primer-color-text-secondary); text-align: center; font-family: var(--primer-typography-body-medium-font, Inter); font-size: var(--primer-typography-body-medium-size); font-weight: var(--primer-typography-body-medium-weight); line-height: var(--primer-typography-body-medium-line-height); letter-spacing: var(--primer-typography-body-medium-letter-spacing); } `;var je=class extends v{constructor(){super(...arguments);this.type="complete"}render(){return this.type==="complete"?u`<primer-icon size="lg" name="successful-check" color="var(--primer-color-icon-positive)" ></primer-icon><p>Checkout complete!</p><p class="secondary"> You'll be redirected to the order confirmation page soon. </p>`:u`<primer-icon size="lg" name="failure-icon" color="var(--primer-color-icon-negative)" ></primer-icon><p>Payment failed</p>${this.description?u`<p class="secondary">${this.description}</p>`:u`<p class="secondary">Something went wrong.</p>`} `}};je.styles=[_n],d([p({type:String,reflect:!0})],je.prototype,"type",2),d([p({type:String,reflect:!0})],je.prototype,"description",2),je=d([b("primer-checkout-state")],je);var Pn=g` :host { display: contents; } input { width: 100%; padding: 0; border: none; height: var(--primer-typography-body-large-line-height); font-size: var(--primer-typography-body-large-size); font-family: var(--primer-typography-body-large-font); color: var(--primer-color-text-primary); background-color: transparent; outline: none; } input::placeholder { color: var(--primer-color-text-placeholder); font-size: var(--primer-typography-body-large-size); font-family: var(--primer-typography-body-large-font); } :host([disabled]) input { color: var(--primer-color-text-disabled); cursor: not-allowed; } :host([disabled]) input::placeholder { color: var(--primer-color-text-disabled); } `;var Vd=["text","password","email","number","tel","url","search","date","time","datetime-local","month","week","color"];function Ud(i){return Vd.includes(i)}var Y=class extends v{constructor(){super(...arguments);this.value="";this.placeholder="";this.disabled=!1;this.name="";this.type="text";this.required=!1;this.readonly=!1;this.pattern="";this.min="";this.max="";this.step="";this.autocomplete="";this._id="";this.hasFocus=!1;this.hasError=!1;this.handleInput=e=>{e.stopPropagation();let r=e.target;this.value=r.value;let o=new CustomEvent("input",{detail:this.value,bubbles:!0,composed:!0});this.dispatchEvent(o)};this.handleChange=e=>{e.stopPropagation();let r=e.target;this.value=r.value;let o=new CustomEvent("change",{detail:this.value,bubbles:!0,composed:!0});this.dispatchEvent(o)};this.handleFocus=()=>{this.hasFocus=!0,this.dispatchEvent(new FocusEvent("focus",{bubbles:!0,composed:!0}))};this.handleBlur=()=>{this.hasFocus=!1,this.dispatchEvent(new FocusEvent("blur",{bubbles:!0,composed:!0}))};this.handleInvalid=e=>{e.stopPropagation(),this.hasError=!0,this.dispatchEvent(new Event("invalid",{bubbles:!0,composed:!0}))}}get id(){return this._id}set id(e){this._id=e,this.setAttribute("id",e)}focus(e){this.inputElement?.focus(e)}blur(){this.inputElement?.blur()}select(){this.inputElement?.select()}setSelectionRange(e,r,o){this.inputElement?.setSelectionRange(e,r,o)}get validity(){return this.inputElement?.validity||{}}get validationMessage(){return this.inputElement?.validationMessage||""}checkValidity(){return this.inputElement?.checkValidity()||!1}reportValidity(){return this.inputElement?.reportValidity()||!1}render(){let e={input:!0,"input--focused":this.hasFocus,"input--disabled":this.disabled,"input--error":this.hasError,"input--readonly":this.readonly},r=Object.entries(e).filter(([,o])=>o).map(([o])=>o).join(" ");return u`<input part="input" class=${r} .value=${this.value} .type=${this.type} ?disabled=${this.disabled} ?required=${this.required} ?readonly=${this.readonly} placeholder=${this.placeholder} pattern=${this.pattern} minlength=${this.minlength??""} maxlength=${this.maxlength??""} min=${this.min} max=${this.max} step=${this.step} autocomplete=${this.autocomplete} name=${this.name} id=${this.id} @input=${this.handleInput} @change=${this.handleChange} @focus=${this.handleFocus} @blur=${this.handleBlur} @invalid=${this.handleInvalid} />`}addEventListener(e,r,o){super.addEventListener(e,r,o)}removeEventListener(e,r,o){super.removeEventListener(e,r,o)}};Y.styles=[Pn],d([at("input")],Y.prototype,"inputElement",2),d([p({type:String,reflect:!0})],Y.prototype,"value",2),d([p({type:String,reflect:!0})],Y.prototype,"placeholder",2),d([p({type:Boolean,reflect:!0})],Y.prototype,"disabled",2),d([p({type:String,reflect:!0})],Y.prototype,"name",2),d([p({type:String,reflect:!0,converter:{fromAttribute:e=>!e||!Ud(e)?(e&&e!=="text"&&x.warn(`Invalid input type: ${e}. Defaulting to 'text'.`),"text"):e}})],Y.prototype,"type",2),d([p({type:Boolean,reflect:!0})],Y.prototype,"required",2),d([p({type:Boolean,reflect:!0})],Y.prototype,"readonly",2),d([p({type:String,reflect:!0})],Y.prototype,"pattern",2),d([p({type:Number,reflect:!0})],Y.prototype,"minlength",2),d([p({type:Number,reflect:!0})],Y.prototype,"maxlength",2),d([p({type:String,reflect:!0})],Y.prototype,"min",2),d([p({type:String,reflect:!0})],Y.prototype,"max",2),d([p({type:String,reflect:!0})],Y.prototype,"step",2),d([p({type:String,reflect:!0})],Y.prototype,"autocomplete",2),d([M()],Y.prototype,"hasFocus",2),d([M()],Y.prototype,"hasError",2),Y=d([b("primer-input")],Y);var Tn=g` :host { display: block; } .collapsable { width: 100%; } /* Make the button display with full width */ primer-button::part(button) { width: 100%; } .collapsable-wrapper { display: grid; grid-template-rows: 0fr; transition: grid-template-rows var(--primer-animation-duration) var(--primer-animation-easing); overflow: hidden; border-top: none; margin-top: -1px; } .collapsable-wrapper.expanded { grid-template-rows: 1fr; } .collapsable-content { min-height: 0; overflow: hidden; padding: var(--primer-space-medium, 12px) 0; } .icon-container { display: flex; align-items: center; justify-content: center; transition: transform var(--primer-animation-duration) var(--primer-animation-easing); font-size: 0.75em; } .icon-container.expanded { transform: rotate(180deg); } /* Disable animation for users who prefer reduced motion */ @media (prefers-reduced-motion: reduce) { .collapsable-wrapper, .icon-container { transition: none; } } `;var ce=class extends v{constructor(){super(...arguments);this.header="";this.expanded=!1;this.expandText="Expand";this.collapseText="Collapse";this.ariaLabel="";this.buttonVariant="primary";this.isExpanded=!1;this.toggleExpanded=()=>{this.isExpanded=!this.isExpanded,this.dispatchExpandedChangedEvent(this.isExpanded)}}connectedCallback(){super.connectedCallback(),this.isExpanded=this.expanded}dispatchExpandedChangedEvent(e){this.dispatchEvent(new CustomEvent("expanded-changed",{bubbles:!0,composed:!0,detail:{expanded:e}}))}expand(){this.isExpanded||(this.isExpanded=!0,this.dispatchExpandedChangedEvent(!0))}collapse(){this.isExpanded&&(this.isExpanded=!1,this.dispatchExpandedChangedEvent(!1))}render(){let e=this.isExpanded?this.collapseText:this.expandText,r=this.ariaLabel||this.header||e,o=this.header||e;return u`<div class="collapsable"><primer-button variant=${this.buttonVariant} buttonType="button" @click=${this.toggleExpanded} aria-expanded=${this.isExpanded} aria-controls="collapsable-content" aria-label=${r} ><span>${o}</span></primer-button><div class="collapsable-wrapper ${this.isExpanded?"expanded":""}" id="collapsable-content" role="region" aria-labelledby="collapsable-header" ><div class="collapsable-content"><slot></slot></div></div></div>`}};ce.styles=[Tn],d([p({type:String})],ce.prototype,"header",2),d([p({type:Boolean})],ce.prototype,"expanded",2),d([p({type:String})],ce.prototype,"expandText",2),d([p({type:String})],ce.prototype,"collapseText",2),d([p({type:String})],ce.prototype,"ariaLabel",2),d([p({type:String})],ce.prototype,"buttonVariant",2),d([M()],ce.prototype,"isExpanded",2),ce=d([b("primer-collapsable")],ce);var wn=g` :host { display: block; width: 100%; box-sizing: border-box; } .error-message { display: flex; align-items: flex-start; padding: var(--primer-space-medium); background-color: var(--primer-color-red-100); border-radius: var(--primer-radius-medium); border: 1px solid var(--primer-color-border-outlined-error); margin-top: var(--primer-space-small); box-sizing: border-box; width: 100%; /* Add animation properties */ opacity: 1; transform: translateY(0); transition: opacity var(--primer-animation-duration) var(--primer-animation-easing), transform var(--primer-animation-duration) var(--primer-animation-easing); } .error-message.hidden { opacity: 0; transform: translateY(-var(--primer-space-medium)); pointer-events: none; } .error-icon { flex-shrink: 0; margin-right: var(--primer-space-medium); color: var(--primer-color-icon-negative); } .error-content { flex: 1; font-family: var(--primer-typography-body-medium-font); font-size: var(--primer-typography-body-medium-size); font-weight: var(--primer-typography-body-medium-weight); line-height: var(--primer-typography-body-medium-line-height); letter-spacing: var(--primer-typography-body-medium-letter-spacing); color: var(--primer-color-text-negative); } /* Respect user's preference for reduced motion */ @media (prefers-reduced-motion: reduce) { .error-message { transition: opacity var(--primer-animation-duration) var(--primer-animation-easing); transform: none; } .error-message.hidden { transform: none; } } `;var Le=class extends v{constructor(){super();this.message="";this.visible=!1;this._role="alert";this.showMessage=!1;this.role="alert"}get role(){return this._role}set role(e){this._role=e,this.setAttribute("role",e)}updated(e){e.has("visible")&&this.handleVisibilityChange()}handleVisibilityChange(){this.visible?(this.showMessage=!0,this.setAttribute("aria-hidden","false")):setTimeout(()=>{this.showMessage=!1,this.setAttribute("aria-hidden","true")},200)}render(){if(!this.showMessage&&!this.visible)return f;let e={"error-message":!0,hidden:!this.visible};return u`<div part="error-message" class=${X(e)} aria-live="assertive" aria-atomic="true" ><div part="error-icon" class="error-icon"><primer-icon name="failure-icon" size="sm" color="var(--primer-color-icon-negative)" ></primer-icon></div><div part="error-content" class="error-content">${this.message}</div></div>`}};Le.styles=[wn],d([p({type:String})],Le.prototype,"message",2),d([p({type:Boolean,reflect:!0})],Le.prototype,"visible",2),d([M()],Le.prototype,"showMessage",2),Le=d([b("primer-error-message")],Le);var Mn=g` :host { display: none; } `;var dt=class extends v{constructor(){super(...arguments);this._id=`d${Math.random().toString(36).substring(7)}`;this._handleSlotChange=e=>{let o=e.target.assignedNodes();if(!o.length)return;let a=this.getContainer();o.forEach(n=>a.appendChild(n))}}get id(){return this._id}getContainer(){let e=document.querySelector(`#${this._id}`);return e||(e=document.createElement("div"),e.id=this._id,document.body.appendChild(e),this._setupEventListeners(e)),e}_setupEventListeners(e){["primer-ach-error","primer-ach-bank-details-collected","primer-ach-mandate-confirmed","primer-ach-mandate-declined","primer-dialog-close"].forEach(r=>{e.addEventListener(r,o=>{o.stopPropagation(),this.dispatchEvent(new CustomEvent(r,{bubbles:!0,composed:!0,detail:o.detail}))})})}disconnectedCallback(){super.disconnectedCallback(),this.getContainer().remove()}render(){return u`<slot @slotchange=${this._handleSlotChange}></slot>`}};dt.styles=[Mn],d([M()],dt.prototype,"_id",2),dt=d([b("primer-portal")],dt);var kn=g` :host { display: contents; } .backdrop { position: fixed; top: 0; left: 0; background-color: rgba(0, 0, 0, 0.2); z-index: 1000; display: flex; justify-content: center; align-items: center; width: 100vw; height: 100vh; /* Animation properties */ transition: all 500ms cubic-bezier(0.4, 0, 0.2, 1); opacity: 0; } .backdrop--entering { opacity: 0; } .backdrop--entered { opacity: 1; } .backdrop--exiting { opacity: 0; } .dialog { background-color: white; padding: var(--primer-space-medium); border-radius: var(--primer-radius-medium); max-width: 600px; box-shadow: 1px 1px 5px 3px rgba(0, 0, 0, 0.05); /* Animation properties */ transition: all 500ms cubic-bezier(0.4, 0, 0.2, 1); opacity: 0; transform: translateY(100vh); } .dialog--entering { opacity: 0; transform: translateY(100vh); } .dialog--entered { opacity: 1; transform: translateY(0); } .dialog--exiting { opacity: 0; transform: translateY(100vh); } .dialog.large { width: 500px; height: 640px; padding: 0; overflow: hidden; display: flex; flex-direction: column; } @media (max-width: 500px) { .dialog.large { width: calc(100vw - var(--primer-space-large, 32px)); height: calc(100vh - var(--primer-space-large, 32px)); max-width: none; max-height: none; } } .header { display: flex; justify-content: flex-end; flex-shrink: 0; } .content { flex: 1; overflow: auto; min-height: 0; } `;var Ae=class extends v{constructor(){super(...arguments);this.size="flex";this.showCloseButton=!0;this._animationState="entering";this._isVisible=!1;this._handleCloseClick=()=>{this._startExitAnimation()}}startExitAnimation(){this._startExitAnimation()}connectedCallback(){super.connectedCallback(),document.body.style.overflow="hidden",this._startEnterAnimation()}disconnectedCallback(){super.disconnectedCallback(),document.body.style.overflow="",this._animationTimeout&&clearTimeout(this._animationTimeout)}_startEnterAnimation(){this._animationState="entering",this._isVisible=!0,requestAnimationFrame(()=>{this._animationTimeout=window.setTimeout(()=>{this._animationState="entered"},500)})}_startExitAnimation(){this._animationTimeout&&clearTimeout(this._animationTimeout),this._animationState="exiting",this._animationTimeout=window.setTimeout(()=>{this._animationState="exited",this._isVisible=!1,this.dispatchEvent(new CustomEvent("primer-dialog-close",{bubbles:!0,composed:!0}))},500)}render(){return this._isVisible?u`<div class=${X({backdrop:!0,"backdrop--entering":this._animationState==="entering","backdrop--entered":this._animationState==="entered","backdrop--exiting":this._animationState==="exiting"})} @click=${e=>{e.preventDefault()}} ><div class=${X({dialog:!0,[this.size]:!0,"dialog--entering":this._animationState==="entering","dialog--entered":this._animationState==="entered","dialog--exiting":this._animationState==="exiting"})} ><div class="header">${this.showCloseButton?u`<primer-button variant="tertiary" @click=${this._handleCloseClick} ><primer-icon name="close"></primer-icon></primer-button>`:""}</div><div class="content"><slot></slot></div></div></div>`:u``}};Ae.styles=[kn],d([p({type:String})],Ae.prototype,"size",2),d([p({type:Boolean})],Ae.prototype,"showCloseButton",2),d([M()],Ae.prototype,"_animationState",2),d([M()],Ae.prototype,"_isVisible",2),Ae=d([b("primer-dialog")],Ae);var In=g` :host { display: contents; } .klarna-container { display: flex; flex-direction: column; width: 100%; transition: all var(--primer-animation-duration) var(--primer-animation-easing); } .klarna-container.expanded { border-radius: var(--primer-radius-medium); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); background-color: var(--primer-color-background-outlined-default); border: 1px solid var(--primer-color-border-outlined-default); padding: var(--primer-space-large); } .klarna-button-header { padding: 0; display: flex; align-items: center; justify-content: space-between; width: 100%; gap: var(--primer-space-small); } .klarna-accordion-icon { position: absolute; right: var(--primer-space-medium); font-size: var(--primer-typography-body-small-size); font-weight: var(--primer-typography-title-large-weight); color: var(--primer-color-text-secondary); transition: all var(--primer-animation-duration) var(--primer-animation-easing); display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; margin-left: var(--primer-space-small); } .klarna-accordion-icon.expanded { transform: rotate(180deg); } .klarna-expanded-content { width: 100%; display: grid; grid-template-rows: 0fr; transition: grid-template-rows var(--primer-animation-duration) var(--primer-animation-easing); } .klarna-expanded-content.visible { margin-top: var(--primer-space-large); border-top: 1px solid var(--primer-color-border-outlined-default); grid-template-rows: 1fr; } .klarna-accordion-content { overflow: hidden; } @keyframes fadeIn { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } .category-selection { display: flex; flex-wrap: wrap; gap: var(--primer-space-small); margin: var(--primer-space-large) 0; } .category-button { padding: var(--primer-space-medium) var(--primer-space-large); border-radius: var(--primer-radius-base); background-color: var(--primer-color-background-outlined-loading); border: 1px solid var(--primer-color-border-outlined-default); font-size: var(--primer-typography-body-medium-size); cursor: pointer; transition: all var(--primer-animation-duration) var(--primer-animation-easing); flex: 1; min-width: 100px; text-align: center; } .category-button.selected { background-color: var(--primer-color-background-outlined-default); border-color: var(--primer-color-brand); color: var(--primer-color-brand); font-weight: var(--primer-typography-title-large-weight); } .category-button:hover:not(.selected):not(:disabled) { background-color: var(--primer-color-background-outlined-hover); } .category-button:disabled { background-color: var(--primer-color-background-outlined-disabled); border-color: var(--primer-color-border-outlined-disabled); color: var(--primer-color-text-disabled); cursor: not-allowed; } .klarna-category-container { min-height: 74px; width: 100%; border-radius: var(--primer-radius-small); border: 1px solid var(--primer-color-border-outlined-default); background-color: var(--primer-color-background-outlined-default); padding: var(--primer-space-medium); margin-bottom: var(--primer-space-large); transition: height var(--primer-animation-duration) var(--primer-animation-easing); overflow: hidden; } .klarna-button::part(button) { display: flex; flex: 1; gap: var(--primer-space-small); height: calc( ${Te(nt)} + calc(2 * var(--primer-space-medium)) ); width: 100%; } .klarna-button primer-icon { margin-right: var(--primer-space-medium); } .klarna-button:hover { background-color: var(--primer-color-background-outlined-hover); border-color: var(--primer-color-border-outlined-hover); } .klarna-pay-button { padding: var(--primer-space-medium) var(--primer-space-large); display: flex; align-items: center; justify-content: center; border-radius: var(--primer-radius-small); background-color: var(--primer-color-brand); color: var(--primer-color-background-outlined-default); border: none; font-size: var(--primer-typography-body-medium-size); font-weight: var(--primer-typography-body-medium-weight); width: 100%; cursor: pointer; transition: all var(--primer-animation-duration) var(--primer-animation-easing); } .klarna-pay-button:hover:not(.disabled) { filter: brightness(105%); } .klarna-pay-button.loading { opacity: 0.7; pointer-events: none; } .klarna-pay-button.disabled { background-color: var(--primer-color-background-outlined-disabled); border-color: var(--primer-color-border-outlined-disabled); color: var(--primer-color-text-disabled); cursor: not-allowed; } .loading { text-align: center; font-size: var(--primer-typography-body-medium-size); color: var(--primer-color-text-secondary); padding: var(--primer-space-medium); } .error { color: var(--primer-color-text-negative); font-size: var(--primer-typography-body-medium-size); padding: var(--primer-space-medium); text-align: center; border: 1px solid var(--primer-color-border-outlined-error); background-color: var(--primer-color-background-outlined-default); border-radius: var(--primer-radius-small); } /* Overall disabled state for entire Klarna component */ :host([disabled]) { cursor: not-allowed; } :host([disabled]) .klarna-button { pointer-events: none; cursor: not-allowed; } :host([disabled]) .category-button { pointer-events: none; cursor: not-allowed; } :host([disabled]) .klarna-pay-button { pointer-events: none; cursor: not-allowed; } /* Ensure disabled state is visible on container when expanded */ :host([disabled]) .klarna-container.expanded { background-color: var(--primer-color-background-outlined-disabled); border-color: var(--primer-color-border-outlined-disabled); opacity: 0.7; } `;var Q=class extends v{constructor(){super(...arguments);this.paymentManagers=new Map;this.sdkState=null;this.headlessUtils=null;this.klarnaCategories=null;this.disabled=!1;this.selectedCategory=null;this.isExpanded=!1;this.headerAriaLabel=_("pay_with",{id:"pay_with"});this._paymentMethodManagerTask=new D(this,{task:async([e,r])=>{if(!e||!r)return N;let o=await r.getCDNAssets("KLARNA");return{manager:e.manager,klarnaIcon:o?.assets?.icon?`${o.goatCdnUrl}/${o.assets.icon}`:""}},args:()=>[this.paymentManagers.get("KLARNA"),this.headlessUtils]});this.toggleExpand=()=>{this.disabled||(this.isExpanded=!this.isExpanded,this.isExpanded||(this.selectedCategory=null))}}async startKlarnaPayment(){if(!(!this._paymentMethodManagerTask.value||!this.selectedCategory))try{await this._paymentMethodManagerTask.value.manager.start({paymentMethodCategoryId:this.selectedCategory})}catch(e){x.errorWithDatadog("Failed to start Klarna payment",{error:e})}}async renderSelectedCategory(){if(!(!this._paymentMethodManagerTask.value||!this.selectedCategory||!this.klarnaContainer))try{this.klarnaContainer.innerHTML="",await this._paymentMethodManagerTask.value.manager.renderCategory({containerId:this.klarnaContainer,paymentMethodCategoryId:this.selectedCategory,onHeightChange:e=>{e>0&&(this.klarnaContainer.style.height=`${e}px`)}})}catch(e){x.errorWithDatadog("Failed to render Klarna category",{error:e})}}selectCategory(e){this.disabled||(this.selectedCategory=e,this.renderSelectedCategory())}updated(e){e.has("selectedCategory")&&this.selectedCategory&&this.renderSelectedCategory()}renderCategorySelection(){let e=this.klarnaCategories?.categories||[];return this.klarnaCategories?.isLoading||!1?u`<div class="loading"><primer-spinner size="small"></primer-spinner></div>`:u`<div class="category-selection">${e.map(o=>u`<button class=${X({"category-button":!0,selected:o.id===this.selectedCategory})} @click=${()=>{this.selectCategory(o.id)}} ?disabled=${this.disabled} >${o.name}</button>`)}</div>`}renderExpandedContent(){return u` ${this.renderCategorySelection()} ${this.selectedCategory?u`<div id="klarna-category-container" class="klarna-category-container" ></div>`:f}<button class=${X({"klarna-pay-button":!0,loading:!!this.sdkState?.isProcessing,disabled:!this.selectedCategory||this.disabled})} ?disabled=${!this.selectedCategory||this.sdkState?.isProcessing||this.disabled} @click=${()=>this.startKlarnaPayment()} >${_("confirm",{id:"confirm"})}</button>`}render(){return this._paymentMethodManagerTask.render({error:e=>{let r=e instanceof Error?e.message:"Unknown error in Klarna";return u`<div class="error"> Error loading Klarna: ${r}</div>`},complete:({manager:e,klarnaIcon:r})=>e?u`<div class="klarna-container ${this.isExpanded?"expanded":""}"><div class="klarna-button-header"><primer-button buttonType="button" variant="secondary" class="klarna-button" @click=${this.toggleExpand} aria-expanded=${this.isExpanded} aria-controls="collapsable-content" aria-label=${this.headerAriaLabel} ?disabled=${this.disabled} ><img src=${r} alt="Klarna logo" /><span>${_("pay_with",{id:"pay_with"})} Klarna</span><span class="klarna-accordion-icon ${this.isExpanded?"expanded":""}" > ▼ </span></primer-button></div><div class="klarna-expanded-content ${this.isExpanded?"visible":""}" ><div class="klarna-accordion-content">${this.renderExpandedContent()}</div></div></div>`:f})}};Q.styles=[P,In],d([C({context:j,subscribe:!0}),p()],Q.prototype,"paymentManagers",2),d([C({context:F,subscribe:!0}),p()],Q.prototype,"sdkState",2),d([C({context:B,subscribe:!0}),p({type:Object})],Q.prototype,"headlessUtils",2),d([C({context:gr,subscribe:!0}),p()],Q.prototype,"klarnaCategories",2),d([p({type:Boolean,attribute:"disabled"})],Q.prototype,"disabled",2),d([M()],Q.prototype,"selectedCategory",2),d([M()],Q.prototype,"isExpanded",2),d([M()],Q.prototype,"headerAriaLabel",2),d([at("#klarna-category-container")],Q.prototype,"klarnaContainer",2),Q=d([b("primer-klarna"),R()],Q);var Nn=g` :host { display: contents; } `;var $t=g` :host { height: calc( ${Te(nt)} + calc(2 * var(--primer-space-medium)) ); width: 100%; display: flex; } .native-button-container { width: 100%; height: 100%; flex: 1; position: relative; } /* Disabled state styling - handled via JavaScript overlay for iframe compatibility */ :host([disabled]) { cursor: not-allowed; } `;var Ln=g` ${$t} /* Google Pay renders to shadow root, no additional container styles needed */ :host { /* Ensure full width for Google Pay button */ width: 100%; } `;function On(){let i=document.createElement("div");return i.className="disabled-overlay",i.style.cssText=`
190
+ position: absolute;
191
+ top: 0;
192
+ left: 0;
193
+ right: 0;
194
+ bottom: 0;
195
+ background-color: rgba(255, 255, 255, 0.4);
196
+ border-radius: var(--primer-radius-medium);
197
+ cursor: not-allowed;
198
+ z-index: 1000;
199
+ pointer-events: all;
200
+ backdrop-filter: grayscale(100%);
201
+ `,i}function Vt(i,t){let e=t.value;if(!e)return;let r=e.querySelector(".disabled-overlay");if(r&&r.remove(),i){let o=On();e.appendChild(o)}}function si(i,t,e=5){let r=null;if(r=t.querySelector(".gpay-card-info-container-fill"),r||(r=document.querySelector(".gpay-card-info-container-fill")),!r){e>0&&setTimeout(()=>si(i,t,e-1),100);return}let o=r.querySelector(".disabled-overlay");if(o&&o.remove(),i){let a=On();r.style.position="relative",r.appendChild(a)}}var Oe=class extends v{constructor(){super();this.paymentManagers=new Map;this.disabled=!1;this.loadManagerTask=new D(this,{args:()=>[this.paymentMethod?.type],task:([e])=>{if(!e)return N;let r=this.paymentManagers.get(e)?.manager;if(!r)throw new Error(`No manager found for payment method type ${e}`);return r}}),this.renderButtonTask=new D(this,{args:()=>[this.loadManagerTask.value],task:async([e])=>{if(!e)return N;await this.updateComplete;let r=e.createButton();return await r.render(this.shadowRoot?.getRootNode(),{style:{shadowRoot:!0}}),this.disabled&&await r.setDisabled(this.disabled),this.disabled&&this.shadowRoot&&(await this.updateComplete,si(this.disabled,this.shadowRoot)),r}})}attributeChangedCallback(e,r,o){if(super.attributeChangedCallback(e,r,o),e==="disabled"&&r!==o){let a=o!==null,n=this.renderButtonTask.value;n&&n.setDisabled(a)}}updated(e){e.has("disabled")&&this.shadowRoot&&si(this.disabled,this.shadowRoot)}render(){return f}};Oe.styles=[P,Ln],d([p({type:Object})],Oe.prototype,"paymentMethod",2),d([C({context:j,subscribe:!0}),p()],Oe.prototype,"paymentManagers",2),d([p({type:Boolean,attribute:"disabled"})],Oe.prototype,"disabled",2),Oe=d([b("primer-google-pay")],Oe);var{I:Yv}=pa;var Rn=i=>i.strings===void 0;var mr=(i,t)=>{let e=i._$AN;if(e===void 0)return!1;for(let r of e)r._$AO?.(t,!1),mr(r,t);return!0},li=i=>{let t,e;do{if((t=i._$AM)===void 0)break;e=t._$AN,e.delete(i),i=t}while(e?.size===0)},Dn=i=>{for(let t;t=i._$AM;i=t){let e=t._$AN;if(e===void 0)t._$AN=e=new Set;else if(e.has(i))break;e.add(i),Bd(t)}};function Yd(i){this._$AN!==void 0?(li(this),this._$AM=i,Dn(this)):this._$AM=i}function Hd(i,t=!1,e=0){let r=this._$AH,o=this._$AN;if(o!==void 0&&o.size!==0)if(t)if(Array.isArray(r))for(let a=e;a<r.length;a++)mr(r[a],!1),li(r[a]);else r!=null&&(mr(r,!1),li(r));else mr(this,i)}var Bd=i=>{i.type==Me.CHILD&&(i._$AP??(i._$AP=Hd),i._$AQ??(i._$AQ=Yd))},ct=class extends lt{constructor(){super(...arguments),this._$AN=void 0}_$AT(t,e,r){super._$AT(t,e,r),Dn(this),this.isConnected=t._$AU}_$AO(t,e=!0){t!==this.isConnected&&(this.isConnected=t,t?this.reconnected?.():this.disconnected?.()),e&&(mr(this,t),li(this))}setValue(t){if(Rn(this._$Ct))this._$Ct._$AI(t,this);else{let e=[...this._$Ct._$AH];e[this._$Ci]=t,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}};var Pt=()=>new bo,bo=class{},vo=new WeakMap,pt=xe(class extends ct{render(i){return f}update(i,[t]){let e=t!==this.G;return e&&this.G!==void 0&&this.rt(void 0),(e||this.lt!==this.ct)&&(this.G=t,this.ht=i.options?.host,this.rt(this.ct=i.element)),f}rt(i){if(this.isConnected||(i=void 0),typeof this.G=="function"){let t=this.ht??globalThis,e=vo.get(t);e===void 0&&(e=new WeakMap,vo.set(t,e)),e.get(this.G)!==void 0&&this.G.call(this.ht,void 0),e.set(this.G,i),i!==void 0&&this.G.call(this.ht,i)}else this.G.value=i}get lt(){return typeof this.G=="function"?vo.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});var $n=g` ${$t} `;function di(i){return typeof window>"u"||!i.isConnected?0:parseFloat(getComputedStyle(i).height)}function Vn(i){return Math.max(25,Math.min(55,i))}var Re=class extends v{constructor(){super();this.paymentManagers=new Map;this.disabled=!1;this.buttonContainerRef=Pt();this.loadManagerTask=new D(this,{args:()=>[this.paymentMethod?.type],task:([e])=>{if(!e)return N;let r=this.paymentManagers.get(e)?.manager;if(!r)throw new Error(`No manager found for payment method type ${e}`);return r}}),this.renderButtonTask=new D(this,{args:()=>[this.loadManagerTask.value],task:async([e])=>{if(!e)return N;await this.updateComplete;let r=this.buttonContainerRef.value;if(!r)throw new Error("Button container not found");let o=e.createButton(),a=di(r);return await o.render(r,{style:{buttonHeight:a}}),this.disabled&&await o.setDisabled(this.disabled),this.disabled&&(await this.updateComplete,Vt(this.disabled,this.buttonContainerRef)),o}})}attributeChangedCallback(e,r,o){if(super.attributeChangedCallback(e,r,o),e==="disabled"&&r!==o){let a=o!==null,n=this.renderButtonTask.value;n&&n.setDisabled(a)}}updated(e){e.has("disabled")&&Vt(this.disabled,this.buttonContainerRef)}render(){return u`<div class="native-button-container" ${pt(this.buttonContainerRef)} ></div>`}};Re.styles=[P,$n],d([p({type:Object})],Re.prototype,"paymentMethod",2),d([C({context:j,subscribe:!0}),p()],Re.prototype,"paymentManagers",2),d([p({type:Boolean,attribute:"disabled"})],Re.prototype,"disabled",2),Re=d([b("primer-apple-pay")],Re);var Un=g` ${$t}/* PayPal uses standard button container, height constraints handled in component */ `;var De=class extends v{constructor(){super();this.paymentManagers=new Map;this.disabled=!1;this.buttonContainerRef=Pt();this.loadManagerTask=new D(this,{args:()=>[this.paymentMethod?.type],task:([e])=>{if(!e)return N;let r=this.paymentManagers.get(e)?.manager;if(!r)throw new Error(`No manager found for payment method type ${e}`);return r}}),this.renderButtonTask=new D(this,{args:()=>[this.loadManagerTask.value],task:async([e])=>{if(!e)return N;await this.updateComplete;let r=this.buttonContainerRef.value;if(!r)throw new Error("Button container not found");let o=e.createButton(),a=di(r),n=Vn(a),l=55;return a>l&&x.warn(`PayPal button height (${a}px) exceeds maximum allowed height of ${l}px. Button will be capped at ${l}px. This is a PayPal SDK limitation.`),await o.render(r,{style:{buttonHeight:n}}),this.disabled&&await o.setDisabled(this.disabled),this.disabled&&(await this.updateComplete,Vt(this.disabled,this.buttonContainerRef)),o}})}attributeChangedCallback(e,r,o){if(super.attributeChangedCallback(e,r,o),e==="disabled"&&r!==o){let a=o!==null,n=this.renderButtonTask.value;n&&n.setDisabled(a)}}updated(e){e.has("disabled")&&Vt(this.disabled,this.buttonContainerRef)}render(){return u`<div class="native-button-container" ${pt(this.buttonContainerRef)} ></div>`}};De.styles=[P,Un],d([p({type:Object})],De.prototype,"paymentMethod",2),d([C({context:j,subscribe:!0}),p()],De.prototype,"paymentManagers",2),d([p({type:Boolean,attribute:"disabled"})],De.prototype,"disabled",2),De=d([b("primer-paypal")],De);var Se=class extends v{constructor(){super(...arguments);this.type=void 0;this.disabled=!1;this.paymentMethods=null;this.analyticsUtils=null;this.handleClick=()=>{this.paymentMethods?.get(this.type)?.managerType!=="CARD"&&this.sendPaymentMethodSelectionEvent()}}sendPaymentMethodSelectionEvent(){this.type&&W({eventName:"PAYMENT_METHOD_SELECTION",paymentMethod:this.type})}render(){if(!this.type)return f;let e=this.paymentMethods?.get(this.type);if(!e)return f;let r;switch(e?.managerType){case"CARD":r=u`<primer-card-form ?disabled=${this.disabled} ></primer-card-form>`;break;case"NATIVE":e.type==="GOOGLE_PAY"?r=u`<primer-google-pay .paymentMethod=${e} ?disabled=${this.disabled} ></primer-google-pay>`:e.type==="APPLE_PAY"?r=u`<primer-apple-pay .paymentMethod=${e} ?disabled=${this.disabled} ></primer-apple-pay>`:e.type==="PAYPAL"&&(r=u`<primer-paypal .paymentMethod=${e} ?disabled=${this.disabled} ></primer-paypal>`);break;case"REDIRECT":r=u`<primer-redirect-payment .paymentMethod=${e} ?disabled=${this.disabled} ></primer-redirect-payment>`;break;case"KLARNA":r=u`<primer-klarna ?disabled=${this.disabled} ></primer-klarna>`;break;case"ACH":r=u`<primer-dynamic-payment .paymentMethod=${e} ></primer-dynamic-payment>`;break;default:return f}return u`<div @click=${this.handleClick}>${r}</div>`}};Se.styles=[Nn],d([p({type:String})],Se.prototype,"type",2),d([p({type:Boolean,attribute:"disabled"})],Se.prototype,"disabled",2),d([C({context:tt,subscribe:!0}),p()],Se.prototype,"paymentMethods",2),d([C({context:et,subscribe:!0}),p({attribute:!1})],Se.prototype,"analyticsUtils",2),Se=d([b("primer-payment-method")],Se);var Yn=g` :host { display: block; width: 100%; } .payment-methods-container { display: flex; flex-direction: column; gap: var(--primer-space-small); } :host([disabled]) .payment-methods-container { opacity: 0.5; pointer-events: none; } `;var ve=class extends v{constructor(){super(...arguments);this.disabled=!1;this.paymentMethods=null;this.clientOptions=null}getFilteredMethods(){if(!this.paymentMethods)return[];let e=this.paymentMethods.toArray();if(this.include){let r=this.include.split(",").map(o=>o.trim());e=e.filter(o=>r.includes(o.type))}if(this.exclude){let r=this.exclude.split(",").map(o=>o.trim());e=e.filter(o=>!r.includes(o.type))}return e}render(){let e=this.getFilteredMethods();return e.length===0?f:u`<div class="payment-methods-container">${e.map(r=>u`<primer-payment-method type="${r.type}" ?disabled="${this.disabled||this.clientOptions?.disabledPayments===!0}" ></primer-payment-method>`)}</div>`}};ve.styles=[P,Yn],d([p({type:String})],ve.prototype,"include",2),d([p({type:String})],ve.prototype,"exclude",2),d([p({type:Boolean,attribute:"disabled"})],ve.prototype,"disabled",2),d([C({context:tt,subscribe:!0}),p()],ve.prototype,"paymentMethods",2),d([C({context:se,subscribe:!0}),p()],ve.prototype,"clientOptions",2),ve=d([b("primer-payment-method-container")],ve);var Hn=g` :host { display: flex; flex-direction: column; gap: var(--primer-space-medium); width: 100%; } h2 { margin: 0; padding: 0; border-radius: var(--primer-radius-medium); font-weight: var(--primer-typography-title-xlarge-weight); font-size: var(--primer-typography-title-xlarge-size); letter-spacing: var(--primer-typography-title-xlarge-letter-spacing); line-height: var(--primer-typography-title-xlarge-line-height); font-family: var(--primer-typography-title-xlarge-font); } p { margin: 0; padding: 0; border-radius: var(--primer-radius-medium); font-weight: var(--primer-typography-body-medium-weight); font-size: var(--primer-typography-body-medium-size); letter-spacing: var(--primer-typography-body-medium-letter-spacing); line-height: var(--primer-typography-body-medium-line-height); font-family: var(--primer-typography-body-medium-font); } form { display: flex; flex-direction: column; gap: var(--primer-space-medium); width: 100%; } .form-row { display: flex; gap: var(--primer-space-small); width: 100%; } .form-row primer-input-wrapper { flex: 1; } .error-message { color: var(--primer-color-text-negative); background-color: var(--primer-color-red-100); padding: var(--primer-space-small); border-radius: var(--primer-radius-small); font-weight: var(--primer-typography-body-medium-weight); font-size: var(--primer-typography-body-medium-size); letter-spacing: var(--primer-typography-body-medium-letter-spacing); line-height: var(--primer-typography-body-medium-line-height); font-family: var(--primer-typography-body-medium-font); } .loading-container { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--primer-space-medium); padding: var(--primer-space-large); } .button-group { display: flex; gap: var(--primer-space-small); margin-top: var(--primer-space-medium); } /* Apply responsive styles for small screens */ @media (max-width: 600px) { .form-row { flex-direction: column; gap: var(--primer-space-medium); } .button-group { flex-direction: column; } } `;function Bn(){return{firstName:{value:"",error:"",pristine:!0,touched:!1,dirty:!1,valid:!1},lastName:{value:"",error:"",pristine:!0,touched:!1,dirty:!1,valid:!1},emailAddress:{value:"",error:"",pristine:!0,touched:!1,dirty:!1,valid:!1}}}var ci=class{constructor(t,e){this.formState=Bn();this.host=t,this.validate=e,t.addController(this)}get hasError(){return{firstName:this.formState.firstName.dirty&&this.formState.firstName.touched&&!!this.formState.firstName.error,lastName:this.formState.lastName.dirty&&this.formState.lastName.touched&&!!this.formState.lastName.error,emailAddress:this.formState.emailAddress.dirty&&this.formState.emailAddress.touched&&!!this.formState.emailAddress.error}}get formData(){return{firstName:this.formState.firstName.value,lastName:this.formState.lastName.value,emailAddress:this.formState.emailAddress.value}}async setFieldValue(t,e){let r=this.formState[t];r.value=e,r.dirty=!0,r.error="",r.valid=!0;let o=await this.validate(this.formData);this.setValidation(o)}setValidation(t,e=!1){e&&(this.formState.firstName.touched=!0,this.formState.lastName.touched=!0,this.formState.emailAddress.touched=!0,this.formState.firstName.dirty=!0,this.formState.lastName.dirty=!0,this.formState.emailAddress.dirty=!0),t.validationErrors.forEach(r=>{this.isValidFieldName(r.field)&&(this.formState[r.field].error=r.message,this.formState[r.field].valid=r.message==="")}),this.host.dispatchEvent(new CustomEvent("primer-ach-validation",{bubbles:!0,composed:!0,detail:{validation:t}})),this.host.requestUpdate()}setFieldTouched(t){this.formState[t].touched||(this.formState[t].touched=!0,this.host.requestUpdate())}resetForm(){this.formState=Bn(),this.host.requestUpdate()}isValidFieldName(t){return!!t&&["firstName","lastName","emailAddress"].includes(t)}hostConnected(){}hostDisconnected(){}};var he=class extends v{constructor(){super(...arguments);this.formController=new ci(this,e=>this._paymentMethodManagerTask.value.setAndValidate(e));this.paymentManagers=new Map;this.sdkState=void 0;this.clientOptions=void 0;this.screen="form";this.isSubmitting=!1;this._paymentMethodManagerTask=new D(this,{task:([e])=>e!=="STRIPE_ACH"?N:this.paymentManagers.get(e)?.manager,args:()=>[this.paymentMethod?.type]})}_handleInput(e,r){let o=e.target;this.formController.setFieldValue(r,o.value)}_handleBlur(e){this.formController.setFieldTouched(e)}_handleError(e){this.dispatchEvent(new CustomEvent("primer-ach-error",{bubbles:!0,composed:!0,detail:{error:e instanceof Error?e:new Error(typeof e=="string"?e:"Unknown error occurred")}}))}async _handleSubmitButtonClick(e){if(!this.isSubmitting){this.isSubmitting=!0;try{let r=await e.start(this.formController.formData);if(!r||r.valid)return await this._handleCollectBankAccountDetails(e);r&&this.formController.setValidation(r,!0)}catch(r){this._handleError(r)}finally{this.isSubmitting=!1}}}async _handleCollectBankAccountDetails(e){try{await e.collectBankAccountDetails(),this.screen="mandate",this.dispatchEvent(new CustomEvent("primer-ach-bank-details-collected",{bubbles:!0,composed:!0}))}catch(r){this._handleError(r)}}async _handleConfirmMandate(){if(this._paymentMethodManagerTask.value){this.isSubmitting=!0;try{await this._paymentMethodManagerTask.value.confirmMandate(),this.dispatchEvent(new CustomEvent("primer-ach-mandate-confirmed",{bubbles:!0,composed:!0}))}catch(e){this._handleError(e)}finally{this.isSubmitting=!1}}}async _handleDeclineMandate(){if(this._paymentMethodManagerTask.value){this.isSubmitting=!0;try{await this._paymentMethodManagerTask.value.declineMandate(),this.dispatchEvent(new CustomEvent("primer-ach-mandate-declined",{bubbles:!0,composed:!0}))}catch(e){this._handleError(e)}finally{this.isSubmitting=!1}}}renderForm(e){return u`<h2>${_("payWithAch",{id:"payWithAch"})}</h2><p>${_("stripe_ach_user_details_collection_subtitle_label",{id:"stripe_ach_user_details_collection_subtitle_label"})}</p><form @submit=${r=>r.preventDefault()}><div class="form-row"><primer-input-wrapper .hasError=${this.formController.hasError.firstName} ><primer-input-label slot="label">${_("stripe_ach_user_details_collection_first_name_label",{id:"stripe_ach_user_details_collection_first_name_label"})}</primer-input-label><primer-input slot="input" .value=${this.formController.formState.firstName.value} @input=${r=>this._handleInput(r,"firstName")} @blur=${()=>this._handleBlur("firstName")} ?disabled=${this.isSubmitting} ></primer-input><primer-input-error slot="error">${this.formController.hasError.firstName?this.formController.formState.firstName.error:f}</primer-input-error></primer-input-wrapper><primer-input-wrapper .hasError=${this.formController.hasError.lastName} ><primer-input-label slot="label">${_("stripe_ach_user_details_collection_last_name_label",{id:"stripe_ach_user_details_collection_last_name_label"})}</primer-input-label><primer-input slot="input" .value=${this.formController.formState.lastName.value} @input=${r=>this._handleInput(r,"lastName")} @blur=${()=>this._handleBlur("lastName")} ?disabled=${this.isSubmitting} ></primer-input><primer-input-error slot="error">${this.formController.hasError.lastName?this.formController.formState.lastName.error:f}</primer-input-error></primer-input-wrapper></div><primer-input-wrapper .hasError=${this.formController.hasError.emailAddress} ><primer-input-label slot="label">${_("stripe_ach_user_details_collection_email_address_label",{id:"stripe_ach_user_details_collection_email_address_label"})}</primer-input-label><primer-input slot="input" type="email" .value=${this.formController.formState.emailAddress.value} @input=${r=>this._handleInput(r,"emailAddress")} @blur=${()=>this._handleBlur("emailAddress")} ?disabled=${this.isSubmitting} ></primer-input><primer-input-error slot="error">${this.formController.hasError.emailAddress?this.formController.formState.emailAddress.error:f}</primer-input-error></primer-input-wrapper><p>${_("stripe_ach_user_details_collection_data_usage_label",{id:"stripe_ach_user_details_collection_data_usage_label"})}</p><primer-button buttonType="submit" variant="primary" @click=${()=>this._handleSubmitButtonClick(e)} ?disabled=${this.isSubmitting} ?loading=${this.isSubmitting} >${_("stripe_ach_user_details_collection_continue_button",{id:"stripe_ach_user_details_collection_continue_button"})}</primer-button></form>`}renderMandate(){return u`<h2>${_("payWithAch",{id:"payWithAch"})}</h2><p>${this.clientOptions?.stripe?.mandateData.fullMandateText??_("stripe_ach_mandate_template_web",{id:"stripe_ach_mandate_template_web"}).replace(/\{merchantName\}/g,this.clientOptions?.stripe?.mandateData.merchantName??"Merchant")}</p><div class="button-group"><primer-button variant="primary" @click=${this._handleConfirmMandate.bind(this)} ?disabled=${this.isSubmitting} ?loading=${this.isSubmitting} >${_("stripe_ach_mandate_accept_button",{id:"stripe_ach_mandate_accept_button"})}</primer-button><primer-button variant="tertiary" @click=${this._handleDeclineMandate.bind(this)} ?disabled=${this.isSubmitting} >${_("stripe_ach_mandate_cancel_payment_button",{id:"stripe_ach_mandate_cancel_payment_button"})}</primer-button></div>`}render(){return this._paymentMethodManagerTask.render({complete:e=>e?this.screen==="form"?this.renderForm(e):this.renderMandate():f})}};he.styles=[P,Hn],d([p({type:Object})],he.prototype,"paymentMethod",2),d([C({context:j,subscribe:!0}),p({attribute:!1})],he.prototype,"paymentManagers",2),d([C({context:F,subscribe:!0}),p({attribute:!1})],he.prototype,"sdkState",2),d([C({context:se,subscribe:!0}),p({attribute:!1})],he.prototype,"clientOptions",2),d([M()],he.prototype,"screen",2),d([M()],he.prototype,"isSubmitting",2),he=d([b("primer-ach-payment"),R()],he);var Fn=g` :host { height: calc( ${Te(nt)} + calc(2 * var(--primer-space-medium)) ); display: flex; /* Default value for the background color CSS variable */ --dynamic-payment-button-bg-color: var( --primer-color-background-outlined-default ); } primer-button { width: 100%; height: 100%; } primer-button::part(button) { background-color: var(--dynamic-payment-button-bg-color); border: 1px solid var(--primer-color-border-outlined-default); color: var(--primer-color-text-primary); flex: 1; padding: 1px; } .image-container { display: flex; justify-content: center; height: 100%; } /* Target the img specifically inside our component */ img { height: 100%; } `;function ur(i){return i.toLowerCase().replace(/[^a-zA-Z0-9]+(.)/g,(t,e)=>e.toUpperCase())}var be=class extends v{constructor(){super(...arguments);this.paymentManagers=new Map;this.sdkState=null;this.headlessUtils=null;this.open=!1;this._paymentMethodManagerTask=new D(this,{task:([e,r])=>!e||!r?N:r.get(e)?.manager,args:()=>[this.paymentMethod?.type,this.paymentManagers]});this._getAssetsTask=new D(this,{task:([e,r])=>{if(!e||!r)return N;let o=r.getPaymentMethodConfiguration(e);return o?{backgroundColor:o.displayMetadata.button.backgroundColor.colored,name:o.name,displayName:this._legacyGetButtonLabel(o.displayMetadata.button.text),iconUrl:o.displayMetadata.button.iconUrl.colored||o.displayMetadata.button.iconUrl.light||o.displayMetadata.button.iconUrl.dark}:N},args:()=>[this.paymentMethod?.type,this.headlessUtils]});this._setupTasks=new D(this,{task:([e,r])=>!e||!r?N:{paymentMethodManager:e,assetsConfig:r},args:()=>[this._paymentMethodManagerTask.value,this._getAssetsTask.value]})}_legacyGetButtonLabel(e){if(!e)return;let r=e?ur(e):"";return r==="payWith"&&(r="pay_with"),_(r,{id:r})}start(){this._paymentMethodManagerTask.value&&(this.open=!0)}renderDialog(){return this.open?u`<primer-portal><primer-dialog @primer-dialog-close="${()=>this.open=!1}"><primer-ach-payment .paymentMethod=${this.paymentMethod} @primer-ach-error=${()=>this.open=!1} @primer-ach-mandate-confirmed=${()=>this.open=!1} @primer-ach-mandate-declined=${()=>this.open=!1} ></primer-ach-payment></primer-dialog></primer-portal>`:f}render(){return this._setupTasks.render({error:()=>f,complete:({assetsConfig:e})=>(this.style.setProperty("--dynamic-payment-button-bg-color",e.backgroundColor),u`<primer-button @click="${()=>this.start()}" class=${X({loading:!!this.sdkState?.isProcessing,reverse:!0})} title="${_("pay_with",{id:"pay_with"})} ${e.name}" ><span class="image-container"><img src="${e.iconUrl}" alt="${e.name}" /></span>${e.displayName}</primer-button>${this.renderDialog()} `)})}};be.styles=[P,Fn],d([p({type:Object})],be.prototype,"paymentMethod",2),d([C({context:j,subscribe:!0})],be.prototype,"paymentManagers",2),d([C({context:F,subscribe:!0})],be.prototype,"sdkState",2),d([C({context:B,subscribe:!0})],be.prototype,"headlessUtils",2),d([M()],be.prototype,"open",2),be=d([b("primer-dynamic-payment"),R()],be);var zn=g` :host { height: calc( ${Te(nt)} + calc(2 * var(--primer-space-medium)) ); display: flex; /* Default value for the background color CSS variable */ --redirect-payment-button-bg-color: var( --primer-color-background-outlined-default ); } primer-button { width: 100%; height: 100%; } primer-button::part(button) { background-color: var(--redirect-payment-button-bg-color); border: 1px solid var(--primer-color-border-outlined-default); color: var(--primer-color-text-primary); flex: 1; padding: var(--primer-space-small); display: flex; align-items: center; justify-content: center; gap: var(--primer-space-small); } /* Default layout: icon on the left (START) */ primer-button { display: flex; flex-direction: row; } /* When icon position is END */ primer-button.icon-end { flex-direction: row-reverse; } .image-container { display: flex; justify-content: center; align-items: center; min-width: 100px; height: 100%; } .button-text { font-family: var(--primer-typography-font-family); font-size: var(--primer-typography-title-small-font-size); font-weight: var(--primer-typography-title-small-font-weight); line-height: var(--primer-typography-title-small-line-height); letter-spacing: var(--primer-typography-title-small-letter-spacing); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* Target the img specifically inside our component */ img { max-width: 100px; width: 100%; height: auto; object-fit: cover; max-height: 100%; } /* For image container sizing */ .image-container { flex-shrink: 0; flex-grow: 1; } /* Disabled state styling - subtle visual feedback */ :host([disabled]) { opacity: 0.6; cursor: not-allowed; } :host([disabled]) primer-button::part(button) { pointer-events: none; cursor: not-allowed; } :host([disabled]) img { filter: grayscale(100%); } `;var Ce=class extends v{constructor(){super(...arguments);this.disabled=!1;this.paymentManagers=new Map;this.sdkState=null;this.headlessUtils=null;this._paymentMethodManagerTask=new D(this,{task:([e,r])=>!e||!r?N:r.get(e)?.manager,args:()=>[this.paymentMethod?.type,this.paymentManagers]});this._getAssetsTask=new D(this,{task:([e,r])=>{if(!e||!r)return N;let o=r.getPaymentMethodConfiguration(e);if(!o)return N;let a=o.displayMetadata.button.backgroundColor.colored??o.displayMetadata.button.backgroundColor.light,n=o.displayMetadata.button.iconPositionRelativeToText||"START";return{backgroundColor:a,name:o.name,displayName:this._legacyGetButtonLabel(o.displayMetadata.button.text),iconUrl:o.displayMetadata.button.iconUrl.colored??o.displayMetadata.button.iconUrl.light,iconPosition:n}},args:()=>[this.paymentMethod?.type,this.headlessUtils]});this._setupTasks=new D(this,{task:([e,r])=>!e||!r?N:{paymentMethodManager:e,assetsConfig:r},args:()=>[this._paymentMethodManagerTask.value,this._getAssetsTask.value]})}_legacyGetButtonLabel(e){if(!e)return;let r=e?ur(e):"";return r==="payWith"&&(r="pay_with"),_(r,{id:r})}startRedirectPayment(){this.disabled||this._paymentMethodManagerTask.value&&this._paymentMethodManagerTask.value.start()}render(){return this._setupTasks.render({error:()=>f,complete:({assetsConfig:e})=>{this.style.setProperty("--redirect-payment-button-bg-color",e.backgroundColor);let r={loading:!!this.sdkState?.isProcessing,"icon-end":e.iconPosition==="END","image-only":!e.displayName},o=e.displayName?u`<span class="image-container"><img src="${e.iconUrl}" alt="${e.name}" /></span><span class="button-text">${e.displayName}</span>`:u`<span class="image-container"><img src="${e.iconUrl}" alt="${e.name}" /></span>`;return u`<primer-button @click="${()=>this.startRedirectPayment()}" class=${X(r)} title="${_("pay_with",{id:"pay_with"})} ${e.name}" ?disabled=${this.disabled} >${o}</primer-button>`}})}};Ce.styles=[P,zn],d([p({type:Object})],Ce.prototype,"paymentMethod",2),d([p({type:Boolean,attribute:"disabled"})],Ce.prototype,"disabled",2),d([C({context:j,subscribe:!0})],Ce.prototype,"paymentManagers",2),d([C({context:F,subscribe:!0})],Ce.prototype,"sdkState",2),d([C({context:B,subscribe:!0})],Ce.prototype,"headlessUtils",2),Ce=d([b("primer-redirect-payment"),R()],Ce);var Tt={WORLDPAY_IDEAL:"WORLDPAY_IDEAL",AUTOMATED_CLEARING_HOUSE:"AUTOMATED_CLEARING_HOUSE",ADYEN_KLARNA:"ADYEN_KLARNA",ADYEN_BANCONTACT_CARD:"ADYEN_BANCONTACT_CARD",PAY_NL_KAARTDIRECT:"PAY_NL_KAARTDIRECT",ADYEN_EPS:"ADYEN_EPS",ADYEN_BANCONTACT_PAYCONIQ:"ADYEN_BANCONTACT_PAYCONIQ",OMISE_PROMPTPAY:"OMISE_PROMPTPAY",OMISE_TRUEMONEY:"OMISE_TRUEMONEY",ADYEN_MULTIBANCO:"ADYEN_MULTIBANCO",PACYPAY_WECHAT:"PACYPAY_WECHAT",PACYPAY_ALIPAY:"PACYPAY_ALIPAY",ADYEN_MBWAY:"ADYEN_MBWAY",XENDIT_DANA:"XENDIT_DANA",XENDIT_SHOPEEPAY:"XENDIT_SHOPEEPAY",ADYEN_PAYSHOP:"ADYEN_PAYSHOP",ADYEN_PAYTRAIL:"ADYEN_PAYTRAIL",CLEARPAY:"CLEARPAY",RAPYD_FAST:"RAPYD_FAST",RAPYD_PROMPTPAY:"RAPYD_PROMPTPAY",RAPYD_GCASH:"RAPYD_GCASH",RAPYD_POLI:"RAPYD_POLI",RAPYD_GRABPAY:"RAPYD_GRABPAY",PRIMER_PAYPAL:"PRIMER_PAYPAL",TWOC2P:"TWOC2P",NETS:"NETS",STRIPE_ACH:"STRIPE_ACH",STRIPE_GIROPAY:"STRIPE_GIROPAY",MOLLIE_GIROPAY:"MOLLIE_GIROPAY",MOLLIE_EPS:"MOLLIE_EPS",PAY_NL_EPS:"PAY_NL_EPS",PAY_NL_P24:"PAY_NL_P24",MOLLIE_P24:"MOLLIE_P24",MOLLIE_SOFORT:"MOLLIE_SOFORT",COINBASE:"COINBASE",OPENNODE:"OPENNODE",MOLLIE_GIFT_CARD:"MOLLIE_GIFTCARD",XFERS_PAYNOW:"XFERS_PAYNOW",CARD:"PAYMENT_CARD",APPLE_PAY:"APPLE_PAY",GOOGLE_PAY:"GOOGLE_PAY",PAYPAL:"PAYPAL_ORDER",PAYPAL_VAULTED:"PAYPAL_BILLING_AGREEMENT",GO_CARDLESS:"GOCARDLESS",PAY_NL_IDEAL:"PAY_NL_IDEAL",PAY_NL_SOFORT_BANKING:"PAY_NL_SOFORT_BANKING",PAY_NL_BANCONTACT:"PAY_NL_BANCONTACT",PAY_NL_PAYPAL:"PAY_NL_PAYPAL",PAY_NL_CREDIT_TRANSFER:"PAY_NL_CREDIT_TRANSFER",PAY_NL_DIRECT_DEBIT:"PAY_NL_DIRECT_DEBIT",PAY_NL_GIROPAY:"PAY_NL_GIROPAY",PAY_NL_PAYCONIQ:"PAY_NL_PAYCONIQ",PAY_NL_RIVERTY:"PAY_NL_RIVERTY",HOOLAH:"HOOLAH",ADYEN_BLIK:"ADYEN_BLIK",ADYEN_VIPPS:"ADYEN_VIPPS",ADYEN_GIROPAY:"ADYEN_GIROPAY",ADYEN_SOFORT:"ADYEN_SOFORT",ADYEN_IDEAL:"ADYEN_IDEAL",ADYEN_TRUSTLY:"ADYEN_TRUSTLY",ADYEN_ALIPAY:"ADYEN_ALIPAY",ADYEN_TWINT:"ADYEN_TWINT",ADYEN_MOBILEPAY:"ADYEN_MOBILEPAY",MOLLIE_BANCONTACT:"MOLLIE_BANCONTACT",MOLLIE_IDEAL:"MOLLIE_IDEAL",BUCKAROO_GIROPAY:"BUCKAROO_GIROPAY",BUCKAROO_EPS:"BUCKAROO_EPS",BUCKAROO_SOFORT:"BUCKAROO_SOFORT",BUCKAROO_BANCONTACT:"BUCKAROO_BANCONTACT",BUCKAROO_IDEAL:"BUCKAROO_IDEAL",ATOME:"ATOME",KLARNA_CUSTOMER_TOKEN:"KLARNA_CUSTOMER_TOKEN",DLOCAL_PIX:"DLOCAL_PIX",ALMA:"ALMA"};function jn(i){return i.paymentInstrumentType===Tt.CARD}async function pi(i,t,e){if(!i||!t||!e)return{icon:"",shouldShowCVV:!1,type:"other",description:""};let r="";if(jn(i))r=t.getCardNetworkAsset(i.paymentInstrumentData.network).cardUrl;else{let n=await t.getCDNAssets(i.paymentMethodType);n&&(r=n.assets?.icon?`${n.goatCdnUrl}/${n.assets.icon}`:"")}let o=e.cvvRecapture,a=Co(i);return{icon:r,shouldShowCVV:o,...a}}function Kn(i){return i.charAt(0).toUpperCase()+i.slice(1).toLowerCase()}function Fd(i){return i?i===i.toUpperCase()?Kn(i):i:""}function Gn(i,t){return[i,t].filter(Boolean).join(" ")}function zd(i,t){return!i||!t?"":`Expires ${i}/${t.slice(-2)}`}function Wn(i){return i?`\u2022\u2022\u2022\u2022 ${i}`:""}function jd(i){let t=i.paymentInstrumentData,e=t.cardholderName,r=t.last4Digits,o=zd(t.expirationMonth,t.expirationYear),a=Fd(t.network),n=`${i.paymentInstrumentData.cardholderName?i.paymentInstrumentData.cardholderName:""}${(r?` ${a} ${Wn(r)}`:a)||" Card"}`;return{type:"card",cardholderName:e,last4:r,expiresDate:o,network:a,description:n}}function Kd(i){let t=i.paymentInstrumentData,e=t.externalPayerInfo?.email||"",r=t.externalPayerInfo?.firstName||"",o=t.externalPayerInfo?.lastName||"",a=i.userDescription||e||"PayPal Account";return{type:"other",fullName:Gn(r,o),email:e,paymentMethodType:"PayPal",description:a}}function Gd(i){let t=i.paymentInstrumentData,e=t.sessionData?.billingAddress?.email||"",r=t.sessionData?.billingAddress?.firstName||"",o=t.sessionData?.billingAddress?.lastName||"",a=i.userDescription||(e?`Klarna - ${e}`:"Klarna Account");return{type:"other",fullName:Gn(r,o),email:e,paymentMethodType:"Klarna",description:a}}function Wd(i){let t=i.paymentInstrumentData,e=t.accountNumberLastFourDigits||"",r=t.bankName||"",o=t.accountType||"",a=i.userDescription;return a||(r&&e?a=`${r} ${Wn(e)}`:r?a=r:a="Bank Account"),{type:"other",fullName:"",bankName:r,last4:e,accountType:o,paymentMethodType:"ACH",description:a}}function qd(i){let t=i.paymentInstrumentType,e=Kn(t.replace(/_/g," "));return{type:"other",description:i.userDescription||e}}var Jd={[Tt.CARD]:jd,[Tt.PAYPAL_VAULTED]:Kd,[Tt.KLARNA_CUSTOMER_TOKEN]:Gd,[Tt.AUTOMATED_CLEARING_HOUSE]:Wd};function Co(i){try{let t=Jd[i.paymentInstrumentType];return t?t(i):qd(i)}catch(t){return x.errorWithDatadog(`FormatUtils: Error formatting payment method ${i.id}`,{error:t}),{type:"other",description:i.userDescription||i.id||"Payment Method"}}}var qn=g` :host { display: block; width: 100%; position: relative; } .vault-manager { display: flex; flex-direction: column; position: relative; } .vault-manager-content { display: flex; flex-direction: column; width: 100%; position: relative; } /* Content container using CSS Grid for height animation */ .content-container { display: grid; grid-template-rows: 1fr; transition: grid-template-rows var(--primer-animation-duration) var(--primer-animation-easing); width: 100%; position: relative; } /* Required to make grid animation work - ensures content can expand/collapse properly */ .content-container > * { min-height: 0; overflow: hidden; } /* Submit button container */ .submit-button-container { display: grid; grid-template-rows: 1fr; transition: grid-template-rows var(--primer-animation-duration) var(--primer-animation-easing); overflow: hidden; margin-top: var(--primer-space-small); width: 100%; } /* Ensure the submit button has full width */ .submit-button { width: 100%; } /* Make sure pay button inside the submit component is full width */ primer-vault-payment-submit::part(button), ::slotted(primer-button) { width: 100%; } /* Payment methods list */ .payment-methods-list { display: flex; flex-direction: column; gap: var(--primer-space-small); width: 100%; position: relative; } /* Delete confirmation container */ .delete-confirmation-container { width: 100%; position: relative; display: flex; flex-direction: column; gap: var(--primer-space-small); } /* Loading overlay styles */ .loading-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; background-color: rgba(255, 255, 255, 0.7); z-index: 10; border-radius: var(--primer-radius-medium); backdrop-filter: blur(2px); opacity: 0; /* Start invisible */ } /* Add styles for when updating is active */ .is-updating { pointer-events: none; /* Prevent interaction when updating */ } /* * Component-specific styles to ensure smooth animations * These components need display:block to work with the grid layout */ primer-vault-payment-method-item, primer-vault-empty-state, primer-vault-delete-confirmation { display: block; width: 100%; } /* Disable animations for reduced motion preference */ @media (prefers-reduced-motion: reduce) { .content-container, .submit-button-container, primer-vault-payment-method-item, primer-vault-payment-submit, primer-vault-empty-state, primer-vault-delete-confirmation { transition: none; } } primer-button::part(button) { align-items: center; width: 100%; justify-content: flex-start; display: flex; text-align: left; padding: var(--primer-space-medium); } `;var mi=new WeakMap,Ut=class{constructor(t,e){this.startPaused=!1,this.disabled=!1,this.clients=new Set,this.pendingComplete=!1,this.host=t,this.defaultOptions=e.defaultOptions||{},this.startPaused=!!e.startPaused,this.disabled=!!e.disabled,this.onComplete=e.onComplete,mi.set(this.host,this)}async add(t){this.clients.add(t),this.startPaused&&t.webAnimation?.pause(),this.pendingComplete=!0,await t.finished,this.pendingComplete&&!this.isAnimating&&(this.pendingComplete=!1,this.onComplete?.())}remove(t){this.clients.delete(t)}pause(){this.clients.forEach(t=>t.webAnimation?.pause())}play(){this.clients.forEach(t=>t.webAnimation?.play())}cancel(){this.clients.forEach(t=>t.webAnimation?.cancel()),this.clients.clear()}finish(){this.clients.forEach(t=>t.webAnimation?.finish()),this.clients.clear()}togglePlay(){this.isPlaying?this.pause():this.play()}get isAnimating(){return this.clients.size>0}get isPlaying(){return Array.from(this.clients).some(t=>t.webAnimation?.playState==="running")}async finished(){await Promise.all(Array.from(this.clients).map(t=>t.finished))}};var Jn=0,Eo=new Map,Zn=new WeakSet,xo=()=>new Promise(i=>requestAnimationFrame(i));var Xn=(i,t)=>{let e=i-t;return e===0?void 0:e},Qn=(i,t)=>{let e=i/t;return e===1?void 0:e},ui={left:(i,t)=>{let e=Xn(i,t);return{value:e,transform:e==null||isNaN(e)?void 0:`translateX(${e}px)`}},top:(i,t)=>{let e=Xn(i,t);return{value:e,transform:e==null||isNaN(e)?void 0:`translateY(${e}px)`}},width:(i,t)=>{let e;t===0&&(t=1,e={width:"1px"});let r=Qn(i,t);return{value:r,overrideFrom:e,transform:r==null||isNaN(r)?void 0:`scaleX(${r})`}},height:(i,t)=>{let e;t===0&&(t=1,e={height:"1px"});let r=Qn(i,t);return{value:r,overrideFrom:e,transform:r==null||isNaN(r)?void 0:`scaleY(${r})`}}},ts={duration:333,easing:"ease-in-out"},rs=["left","top","width","height","opacity","color","background"],es=new WeakMap,hi=class extends ct{constructor(t){if(super(t),this.t=!1,this.i=null,this.o=null,this.h=!0,this.shouldLog=!1,t.type===Me.CHILD)throw Error("The `animate` directive must be used in attribute position.");this.createFinished()}createFinished(){this.resolveFinished?.(),this.finished=new Promise(t=>{this.l=t})}async resolveFinished(){this.l?.(),this.l=void 0}render(t){return f}getController(){return mi.get(this.u)}isDisabled(){return this.options.disabled||this.getController()?.disabled}update(t,[e]){let r=this.u===void 0;return r&&(this.u=t.options?.host,this.u.addController(this),this.u.updateComplete.then(o=>this.t=!0),this.element=t.element,es.set(this.element,this)),this.optionsOrCallback=e,(r||typeof e!="function")&&this.p(e),this.render(e)}p(t){t=t??{};let e=this.getController();e!==void 0&&((t={...e.defaultOptions,...t}).keyframeOptions={...e.defaultOptions.keyframeOptions,...t.keyframeOptions}),t.properties??(t.properties=rs),this.options=t}m(){let t={},e=this.element.getBoundingClientRect(),r=getComputedStyle(this.element);return this.options.properties.forEach(o=>{let a=e[o]??(ui[o]?void 0:r[o]),n=Number(a);t[o]=isNaN(n)?a+"":n}),t}v(){let t,e=!0;return this.options.guard&&(t=this.options.guard(),e=((r,o)=>{if(Array.isArray(r)){if(Array.isArray(o)&&o.length===r.length&&r.every((a,n)=>a===o[n]))return!1}else if(o===r)return!1;return!0})(t,this._)),this.h=this.t&&!this.isDisabled()&&!this.isAnimating()&&e&&this.element.isConnected,this.h&&(this._=Array.isArray(t)?Array.from(t):t),this.h}hostUpdate(){typeof this.optionsOrCallback=="function"&&this.p(this.optionsOrCallback()),this.v()&&(this.A=this.m(),this.i=this.i??this.element.parentNode,this.o=this.element.nextSibling)}async hostUpdated(){if(!this.h||!this.element.isConnected||this.options.skipInitial&&!this.isHostRendered)return;let t;this.prepare(),await xo;let e=this.O(),r=this.j(this.options.keyframeOptions,e),o=this.m();if(this.A!==void 0){let{from:a,to:n}=this.N(this.A,o,e);this.log("measured",[this.A,o,a,n]),t=this.calculateKeyframes(a,n)}else{let a=Eo.get(this.options.inId);if(a){Eo.delete(this.options.inId);let{from:n,to:l}=this.N(a,o,e);t=this.calculateKeyframes(n,l),t=this.options.in?[{...this.options.in[0],...t[0]},...this.options.in.slice(1),t[1]]:t,Jn++,t.forEach(s=>s.zIndex=Jn)}else this.options.in&&(t=[...this.options.in,{}])}this.animate(t,r)}resetStyles(){this.P!==void 0&&(this.element.setAttribute("style",this.P??""),this.P=void 0)}commitStyles(){this.P=this.element.getAttribute("style"),this.webAnimation?.commitStyles(),this.webAnimation?.cancel()}reconnected(){}async disconnected(){if(!this.h||(this.options.id!==void 0&&Eo.set(this.options.id,this.A),this.options.out===void 0))return;if(this.prepare(),await xo(),this.i?.isConnected){let e=this.o&&this.o.parentNode===this.i?this.o:null;if(this.i.insertBefore(this.element,e),this.options.stabilizeOut){let r=this.m();this.log("stabilizing out");let o=this.A.left-r.left,a=this.A.top-r.top;getComputedStyle(this.element).position!=="static"||o===0&&a===0||(this.element.style.position="relative"),o!==0&&(this.element.style.left=o+"px"),a!==0&&(this.element.style.top=a+"px")}}let t=this.j(this.options.keyframeOptions);await this.animate(this.options.out,t),this.element.remove()}prepare(){this.createFinished()}start(){this.options.onStart?.(this)}didFinish(t){t&&this.options.onComplete?.(this),this.A=void 0,this.animatingProperties=void 0,this.frames=void 0,this.resolveFinished()}O(){let t=[];for(let e=this.element.parentNode;e;e=e?.parentNode){let r=es.get(e);r&&!r.isDisabled()&&r&&t.push(r)}return t}get isHostRendered(){let t=Zn.has(this.u);return t||this.u.updateComplete.then(()=>{Zn.add(this.u)}),t}j(t,e=this.O()){let r={...ts};return e.forEach(o=>Object.assign(r,o.options.keyframeOptions)),Object.assign(r,t),r}N(t,e,r){t={...t},e={...e};let o=r.map(l=>l.animatingProperties).filter(l=>l!==void 0),a=1,n=1;return o.length>0&&(o.forEach(l=>{l.width&&(a/=l.width),l.height&&(n/=l.height)}),t.left!==void 0&&e.left!==void 0&&(t.left=a*t.left,e.left=a*e.left),t.top!==void 0&&e.top!==void 0&&(t.top=n*t.top,e.top=n*e.top)),{from:t,to:e}}calculateKeyframes(t,e,r=!1){let o={},a={},n=!1,l={};for(let s in e){let c=t[s],m=e[s];if(s in ui){let y=ui[s];if(c===void 0||m===void 0)continue;let h=y(c,m);h.transform!==void 0&&(l[s]=h.value,n=!0,o.transform=`${o.transform??""} ${h.transform}`,h.overrideFrom!==void 0&&Object.assign(o,h.overrideFrom))}else c!==m&&c!==void 0&&m!==void 0&&(n=!0,o[s]=c,a[s]=m)}return o.transformOrigin=a.transformOrigin=r?"center center":"top left",this.animatingProperties=l,n?[o,a]:void 0}async animate(t,e=this.options.keyframeOptions){this.start(),this.frames=t;let r=!1;if(!this.isAnimating()&&!this.isDisabled()&&(this.options.onFrames&&(this.frames=t=this.options.onFrames(this),this.log("modified frames",t)),t!==void 0)){this.log("animate",[t,e]),r=!0,this.webAnimation=this.element.animate(t,e);let o=this.getController();o?.add(this);try{await this.webAnimation.finished}catch{}o?.remove(this)}return this.didFinish(r),r}isAnimating(){return this.webAnimation?.playState==="running"||this.webAnimation?.pending}log(t,e){this.shouldLog&&this.isDisabled()}},mt=xe(hi);var Zd=["top","right","bottom","left"],fi=class extends ct{constructor(t){if(super(t),t.type!==Me.ELEMENT)throw Error("The `position` directive must be used in attribute position.")}render(t,e){return f}update(t,[e,r]){return this.u===void 0&&(this.u=t.options?.host,this.u.addController(this)),this.S=t.element,this.C=e,this.F=r??["left","top","width","height"],this.render(e,r)}hostUpdated(){this.$()}$(){let t=typeof this.C=="function"?this.C():this.C?.value,e=t.offsetParent;if(t===void 0||!e)return;let r=t.getBoundingClientRect(),o=e.getBoundingClientRect();this.F?.forEach(a=>{let n=Zd.includes(a)?r[a]-o[a]:r[a];this.S.style[a]=n+"px"})}},Xd=xe(fi);var ee=class extends v{constructor(){super();this.vaultManagerContext=null;this.vaultItemContext=null;this.headlessUtils=null;this.isEditMode=!1;this.deletePaymentMethodId=null;this.isDeleting=!1;this.errorMessage="";this.animationDuration=300;this.deleteAssetConfig=null;this.handleToggleEditMode=e=>{this.isEditMode=e.detail,this.deletePaymentMethodId=null,this.isEditMode&&this.vaultItemContext&&this.vaultItemContext.setSelectedVaultedPaymentMethod(null)};this.handleDeletePaymentMethod=async e=>{if(this.deletePaymentMethodId=e.detail,this.deletePaymentMethodId&&this.vaultManagerContext&&this.headlessUtils){let r=this.vaultManagerContext.vaultedPaymentMethods.find(o=>o.id===this.deletePaymentMethodId);r&&(this.deleteAssetConfig=await pi(r,this.headlessUtils,this.vaultManagerContext))}};this.handleCancelDelete=()=>{this.deletePaymentMethodId=null,this.deleteAssetConfig=null};this.handleConfirmDelete=async()=>{if(!this.vaultManagerContext?.deleteVaultedPaymentMethod||!this.deletePaymentMethodId){this.errorMessage=_("something_went_wrong_error",{id:"something_went_wrong_error"});return}try{this.isDeleting=!0,await this.vaultManagerContext.deleteVaultedPaymentMethod(this.deletePaymentMethodId),this.deletePaymentMethodId=null,this.deleteAssetConfig=null}catch(e){this.errorMessage=e instanceof Error?e.message:_("something_went_wrong_error",{id:"something_went_wrong_error"})}finally{this.isDeleting=!1}};this.handlePaymentError=e=>{let r=e.detail?.error;this.errorMessage=r instanceof Error?r.message:_("payment_processing_error",{id:"payment_processing_error"})};this.handleCloseError=()=>{this.errorMessage=""};new Ut(this,{defaultOptions:{keyframeOptions:{duration:Number(getComputedStyle(document.documentElement).getPropertyValue("--primer-animation-duration").trim().replace("ms","")),easing:getComputedStyle(document.documentElement).getPropertyValue("--primer-animation-easing").trim()}}})}getAnimationConfig(){return{keyframeOptions:{duration:this.animationDuration,easing:getComputedStyle(document.documentElement).getPropertyValue("--primer-animation-easing").trim(),fill:"both"}}}getPaymentMethodName(e){if(!this.vaultManagerContext)return"";let r=this.vaultManagerContext.vaultedPaymentMethods.find(o=>o.id===e);if(!r)return"";try{return Co(r).description||""}catch{return""}}renderLoadingOverlay(){return u`<div class="loading-overlay" ${mt({...this.getAnimationConfig(),properties:["opacity"],in:[{opacity:0},{opacity:1}],out:[{opacity:1},{opacity:0}]})} ><primer-spinner size="medium" color="var(--primer-color-loader)" ></primer-spinner></div>`}renderDeleteConfirmation(){if(!this.deletePaymentMethodId||!this.deleteAssetConfig)return f;let e=this.getPaymentMethodName(this.deletePaymentMethodId);return u`<div class="delete-confirmation-container"><primer-button disabled variant="secondary"><primer-payment-method-content .assetConfig=${this.deleteAssetConfig} ></primer-payment-method-content></primer-button><primer-vault-delete-confirmation .isDeleting=${this.isDeleting} .paymentMethodId=${this.deletePaymentMethodId} .paymentMethodName=${e} @confirm-delete=${this.handleConfirmDelete} @cancel-delete=${this.handleCancelDelete} ${mt({...this.getAnimationConfig(),properties:["opacity"],in:[{opacity:0},{opacity:1}],out:[{opacity:1},{opacity:0}]})} ></primer-vault-delete-confirmation></div>`}renderPaymentMethodItem(e){return this.deletePaymentMethodId===e.id?f:u`<primer-vault-payment-method-item .paymentMethod=${e} .isEditMode=${this.isEditMode} @delete-payment-method=${this.handleDeletePaymentMethod} ${mt({...this.getAnimationConfig(),properties:["opacity"],in:[{opacity:0},{opacity:1}],out:[{opacity:1},{opacity:0}]})} ></primer-vault-payment-method-item>`}renderPaymentMethodList(){let e=this.vaultManagerContext?.vaultedPaymentMethods||[],r=!this.isEditMode&&e.length>0&&!this.deletePaymentMethodId;return u`<div class="payment-methods-list">${e.map(o=>this.renderPaymentMethodItem(o))} ${V(r,()=>u`<div class="submit-button-container"><primer-vault-payment-submit class="submit-button" @primer-vault-payment-error=${this.handlePaymentError} ${mt({...this.getAnimationConfig(),properties:["opacity"],in:[{opacity:0},{opacity:1}],out:[{opacity:1},{opacity:0}]})} ></primer-vault-payment-submit></div>`,()=>f)}</div>`}render(){if(!this.vaultManagerContext?.enabled)return f;let e=this.vaultManagerContext.vaultedPaymentMethods.length>0,r=this.vaultManagerContext.isLoading,o=this.vaultManagerContext.isUpdating;return u` ${V(!this.vaultManagerContext?.showEmptyState&&!e,()=>f,()=>u`<slot name="vault-empty-state"><div class="vault-manager ${o?"is-updating":""}"><primer-vault-manager-header .isEditMode=${this.isEditMode} .hasPaymentMethods=${e} @toggle-edit-mode=${this.handleToggleEditMode} ></primer-vault-manager-header>${V(this.errorMessage,()=>u`<primer-vault-error-message .errorMessage=${this.errorMessage} @close-error=${this.handleCloseError} ${mt({...this.getAnimationConfig(),properties:["opacity"],in:[{opacity:0},{opacity:1}],out:[{opacity:1},{opacity:0}]})} ></primer-vault-error-message>`,()=>f)}<div class="vault-manager-content">${V(!r&&!e,()=>u`<div class="content-container"><primer-vault-empty-state ${mt({...this.getAnimationConfig(),properties:["opacity"],in:[{opacity:0},{opacity:1}],out:[{opacity:1},{opacity:0}]})} ></primer-vault-empty-state></div>`,()=>f)} ${V(!r&&e,()=>u`<div class="content-container">${V(this.deletePaymentMethodId,()=>this.renderDeleteConfirmation(),()=>this.renderPaymentMethodList())}</div>`,()=>f)}</div>${V(o,()=>this.renderLoadingOverlay(),()=>f)}</div></slot>`)} `}};ee.styles=[P,qn],d([C({context:le,subscribe:!0}),p({type:Object,attribute:!1})],ee.prototype,"vaultManagerContext",2),d([C({context:Pe,subscribe:!0}),p({type:Object,attribute:!1})],ee.prototype,"vaultItemContext",2),d([C({context:B,subscribe:!0}),p({type:Object,attribute:!1})],ee.prototype,"headlessUtils",2),d([M()],ee.prototype,"isEditMode",2),d([M()],ee.prototype,"deletePaymentMethodId",2),d([M()],ee.prototype,"isDeleting",2),d([M()],ee.prototype,"errorMessage",2),d([p({type:Number})],ee.prototype,"animationDuration",2),d([M()],ee.prototype,"deleteAssetConfig",2),ee=d([b("primer-vault-manager"),R()],ee);var is=g` :host { display: flex; width: 100%; flex-direction: column; } .payment-method-wrapper { display: flex; flex-direction: column; width: 100%; } .payment-method-container { display: flex; width: 100%; align-items: center; gap: var(--primer-space-small); } /* Target the button part from primer-button with 'with-cvv' class using ::part selector */ primer-button::part(button) { align-items: center; width: 100%; justify-content: flex-start; display: flex; text-align: left; padding: var(--primer-space-medium); } /* render checkmark icon on baseline (on the top) */ primer-button.with-cvv::part(button) { align-items: baseline; } /* Card icons */ .payment-method-icon { height: var(--primer-space-xlarge); object-fit: contain; flex-shrink: 0; transition: transform var(--primer-animation-duration) var(--primer-animation-easing); } .payment-method-icon-generic { display: flex; align-items: center; justify-content: center; color: var(--primer-color-gray-500); height: var(--primer-space-xlarge); flex-shrink: 0; } .payment-method-details { flex: 1; display: flex; gap: var(--primer-space-xsmall); align-items: flex-start; transition: transform var(--primer-animation-duration) var(--primer-animation-easing); margin-left: var(--primer-space-small); } .payment-method-card { flex: 1; width: 100%; display: flex; flex-direction: column; gap: var(--primer-space-xsmall); transition: transform var(--primer-animation-duration) var(--primer-animation-easing); } .payment-method-description { font-weight: var(--primer-typography-title-large-weight); color: var(--primer-color-text-primary); transition: color var(--primer-animation-duration) var(--primer-animation-easing); } .payment-method-secondary-description { font-size: var(--primer-typography-body-small-size); color: var(--primer-color-text-secondary); transition: color var(--primer-animation-duration) var(--primer-animation-easing); } .payment-method-row { display: grid; grid-template-columns: 200px 100px; justify-content: space-between; align-items: center; } .cell-2 { grid-column: 2; display: flex; justify-content: flex-end; align-items: center; } .mt-2 { margin-top: var(--primer-space-medium); } .payment-method-header { font-weight: var(--primer-typography-body-large-weight); font-size: var(--primer-typography-body-large-size); line-height: var(--primer-typography-body-large-line-height); color: var(--primer-color-text-primary); letter-spacing: var(--primer-typography-body-large-letter-spacing); } .payment-method-subtitle { color: var(--primer-color-text-secondary); font-size: var(--primer-typography-body-small-size); line-height: var(--primer-typography-body-small-line-height); font-weight: var(--primer-typography-body-small-weight); letter-spacing: var(--primer-typography-body-small-letter-spacing); } .payment-method-button { flex: 1; } .flex { display: flex; align-items: flex-end; gap: var(--primer-space-xsmall); } .flex-center { display: flex; align-items: center; justify-content: center; gap: var(--primer-space-small); } /* Delete button - for edit mode */ .delete-button { display: flex; align-items: center; justify-content: center; } .delete-button:active { transform: scale(0.95); } `;var pe=class extends v{constructor(){super(...arguments);this.vaultManagerContext=null;this.vaultItemContext=null;this.headlessUtils=null;this.paymentMethod=null;this.isEditMode=!1;this._getAssetsTask=new D(this,{task:async([e,r,o])=>await pi(e,r,o),args:()=>[this.paymentMethod,this.headlessUtils,this.vaultManagerContext]});this.handleClick=()=>{this.isEditMode||!this.vaultManagerContext||!this.paymentMethod||(this.isSelected()?this.vaultItemContext?.setSelectedVaultedPaymentMethod(null):this.vaultItemContext?.setSelectedVaultedPaymentMethod(this.paymentMethod))};this.handleDeleteClick=e=>{e.stopPropagation(),this.dispatchEvent(new CustomEvent("delete-payment-method",{detail:this.paymentMethod?.id,bubbles:!0,composed:!0}))}}isSelected(){if(!this.vaultManagerContext||!this.paymentMethod)return!1;let e=this.vaultItemContext?.selectedVaultedPaymentMethod;return!!e&&e.id===this.paymentMethod.id}render(){return this._getAssetsTask.render({error:()=>f,complete:e=>{let r=this.isSelected()?"checked":"default",o=!1,a=e?.description;return u`<div class="payment-method-wrapper"><div class="payment-method-container"><primer-button variant="secondary" class="payment-method-button ${e.shouldShowCVV?"with-cvv":""}" selectable ?disabled=${this.isEditMode} selectionState=${r} .flex=${o} @click=${this.handleClick} ><primer-payment-method-content .assetConfig=${e} ></primer-payment-method-content>${V(e.shouldShowCVV&&this.isSelected()&&!this.isEditMode,()=>u`<div class="payment-method-row mt-2"><span class="flex-center"><primer-icon name="lock" size="sm"></primer-icon><span class="payment-method-subtitle"> Input the card CVV for a secure payment</span ></span><span class="cell-2"><primer-vault-cvv-input .paymentMethod="${this.paymentMethod}" ><span slot="label"></span></primer-vault-cvv-input></span></div>`,()=>f)}</primer-button>${this.isEditMode?u`<primer-button variant="tertiary" class="delete-button" @click=${this.handleDeleteClick} aria-label=${`${_("delete",{id:"delete"})} ${a}`} ><primer-icon name="close" size="sm"></primer-icon></primer-button>`:f}</div></div>`}})}};pe.styles=[P,is],d([C({context:le,subscribe:!0}),p({type:Object,attribute:!1,hasChanged(e,r){return e?.cvvRecapture!==r?.cvvRecapture}})],pe.prototype,"vaultManagerContext",2),d([C({context:Pe,subscribe:!0}),p({type:Object,attribute:!1,hasChanged(e,r){return e?.selectedVaultedPaymentMethod?.id!==r?.selectedVaultedPaymentMethod?.id}})],pe.prototype,"vaultItemContext",2),d([C({context:B,subscribe:!0}),p({type:Object})],pe.prototype,"headlessUtils",2),d([p({type:Object,attribute:!1})],pe.prototype,"paymentMethod",2),d([p({type:Boolean,reflect:!0})],pe.prototype,"isEditMode",2),pe=d([b("primer-vault-payment-method-item"),R()],pe);var os=g` :host { display: block; width: 100%; } .vault-manager-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--primer-space-medium); } .vault-manager-header h3 { font-size: var(--primer-typography-title-large-size); font-weight: var(--primer-typography-title-large-weight); font-family: var(--primer-typography-title-large-font); color: var(--primer-color-text-primary); margin: 0; } .edit-button { display: flex; align-items: center; justify-content: center; } `;var _e=class extends v{constructor(){super(...arguments);this.isEditMode=!1;this.hasPaymentMethods=!1;this.toggleEditMode=()=>{this.dispatchEvent(new CustomEvent("toggle-edit-mode",{detail:!this.isEditMode,bubbles:!0,composed:!0}))}}render(){return u`<div class="vault-manager-header"><h3>${_("previouslyUsed",{id:"previouslyUsed"})}</h3>${this.hasPaymentMethods?u`<primer-button variant="tertiary" class="edit-button ${this.isEditMode?"active":""}" @click=${this.toggleEditMode} aria-label=${this.isEditMode?_("confirm",{id:"confirm"}):_("editPaymentMethods",{id:"editPaymentMethods"})} >${this.isEditMode?u`<primer-icon name="checkmark" size="sm"></primer-icon>`:u`<primer-icon name="edit" size="sm"></primer-icon>`}</primer-button>`:f}</div>`}};_e.styles=[P,os],d([p({type:Boolean})],_e.prototype,"isEditMode",2),d([p({type:Boolean})],_e.prototype,"hasPaymentMethods",2),_e=d([b("primer-vault-manager-header"),R()],_e);var as=g` :host { display: block; width: 100%; } .delete-confirmation-text { color: var(--primer-color-text-secondary); font-size: var(--primer-typography-body-small-size); font-weight: var(--primer-typography-body-small-weight); line-height: var(--primer-typography-body-small-line-height); letter-spacing: var(--primer-typography-body-small-letter-spacing); } .delete-confirmation { margin-top: var(--primer-space-medium); background-color: var(--primer-color-gray-000); } .delete-message { margin-bottom: var(--primer-space-medium); } .delete-text { margin: 0; color: var(--primer-color-text-secondary); font-size: var(--primer-typography-body-medium-size); } .delete-actions { display: grid; grid-template-columns: 1fr 1fr; gap: var(--primer-space-small); } .delete-confirm { background-color: var(--primer-color-red-500); color: var(--primer-color-gray-000); border: none; padding: var(--primer-space-small) var(--primer-space-medium); border-radius: var(--primer-radius-small); font-weight: var(--primer-typography-body-medium-weight); cursor: pointer; transition: background-color var(--primer-animation-duration) var(--primer-animation-easing); } .delete-confirm:hover:not(:disabled) { background-color: var(--primer-color-red-900); } .delete-confirm:disabled { opacity: 0.7; cursor: not-allowed; } .delete-cancel { background-color: transparent; border: 1px solid var(--primer-color-border-outlined-default); padding: var(--primer-space-small) var(--primer-space-medium); border-radius: var(--primer-radius-small); color: var(--primer-color-text-primary); font-weight: var(--primer-typography-body-medium-weight); cursor: pointer; transition: background-color var(--primer-animation-duration) var(--primer-animation-easing); } .delete-cancel:hover:not(:disabled) { background-color: var(--primer-color-gray-100); } .delete-cancel:disabled { opacity: 0.7; cursor: not-allowed; } `;var fe=class extends v{constructor(){super(...arguments);this.isDeleting=!1;this.paymentMethodId="";this.paymentMethodName="";this.vaultManager=null;this.handleConfirmClick=()=>{this.dispatchEvent(new CustomEvent("confirm-delete",{bubbles:!0,composed:!0}))};this.handleCancelClick=()=>{this.dispatchEvent(new CustomEvent("cancel-delete",{bubbles:!0,composed:!0}))}}render(){return u`<div class="delete-confirmation"><p class="delete-confirmation-text"> Are you sure you want to delete this payment method? </p><div class="delete-actions"><primer-button variant="secondary" @click=${this.handleCancelClick} ?disabled=${this.isDeleting} >${_("cancel",{id:"cancel"})}</primer-button><primer-button @click=${this.handleConfirmClick} ?disabled=${this.isDeleting} >${this.isDeleting?_("deleting",{id:"deleting"}):_("confirmVaultedPaymentMethodDeletion",{id:"confirmVaultedPaymentMethodDeletion"})}</primer-button></div></div>`}};fe.styles=[P,as],d([p({type:Boolean})],fe.prototype,"isDeleting",2),d([p({type:String})],fe.prototype,"paymentMethodId",2),d([p({type:String})],fe.prototype,"paymentMethodName",2),d([C({context:le,subscribe:!0})],fe.prototype,"vaultManager",2),fe=d([b("primer-vault-delete-confirmation"),R()],fe);var ns=g` :host { display: block; width: 100%; } .empty-state { padding: var(--primer-space-xlarge) 0; text-align: center; color: var(--primer-color-text-secondary); } .empty-state p { margin: 0; } `;var Ke=class extends v{render(){return u`<div class="empty-state"><p>${_("savedPaymentMethodsEmpty",{id:"savedPaymentMethodsEmpty"})}</p></div>`}};Ke.styles=[P,ns],Ke=d([b("primer-vault-empty-state"),R()],Ke);var ss=g` :host { display: block; width: 100%; } .error-message { display: flex; background-color: var(--primer-color-red-100); padding: var(--primer-space-medium); border-radius: var(--primer-radius-small); margin-bottom: var(--primer-space-medium); justify-content: space-between; align-items: center; border: 1px solid var(--primer-color-red-500); } .error-content { display: flex; align-items: center; gap: var(--primer-space-small); } .error-message p { margin: 0; color: var(--primer-color-text-negative); font-size: var(--primer-typography-body-medium-size); } .error-message button { background: transparent; border: none; color: var(--primer-color-text-negative); cursor: pointer; padding: var(--primer-space-xsmall); display: flex; align-items: center; justify-content: center; border-radius: var(--primer-radius-small); transition: background-color var(--primer-animation-duration) var(--primer-animation-easing); } .error-message button:hover { background-color: rgba(0, 0, 0, 0.05); } `;var $e=class extends v{constructor(){super(...arguments);this.errorMessage="";this.handleDismiss=()=>{this.dispatchEvent(new CustomEvent("close-error",{bubbles:!0,composed:!0}))}}render(){return u`<div class="error-message"><div class="error-content"><primer-icon name="warning" size="sm" color="var(--primer-color-red-500)" ></primer-icon><p>${this.errorMessage}</p></div><button @click=${this.handleDismiss} aria-label=${_("closeErrorMessage",{id:"closeErrorMessage"})} ><primer-icon name="close" size="sm"></primer-icon></button></div>`}};$e.styles=[P,ss],d([p({type:String})],$e.prototype,"errorMessage",2),$e=d([b("primer-vault-error-message"),R()],$e);var ls=g` :host { display: contents; } `;var Z=class extends v{constructor(){super(...arguments);this._userAssignedProps=new Set;this._internalButtonText="";this.headlessInstance=null;this.sdkState=null;this.vaultItemContext=null;this.vaultManager=null;this.clientOptions=null;this.variant="primary";this.disabled=!1;this.handleClick=async e=>{if(e.preventDefault(),!this.isButtonDisabled)try{await this.vaultManager?.startVaultedPaymentFlow()}catch(r){let o=new CustomEvent("primer-vault-payment-error",{bubbles:!0,composed:!0,detail:{error:r}});this.dispatchEvent(o)}}}get buttonText(){return this._userAssignedProps.has("buttonText")?this._internalButtonText:_("pay",{id:"pay"})}set buttonText(e){let r=this.buttonText;e!==""?(this._userAssignedProps.add("buttonText"),this._internalButtonText=e):(this._userAssignedProps.delete("buttonText"),this._internalButtonText=""),this.requestUpdate("buttonText",r)}get isButtonDisabled(){return!!(this.disabled||!this.vaultItemContext?.selectedVaultedPaymentMethod||this.vaultManager?.isLoading)}render(){let e=this.clientOptions?.submitButton?.amountVisible?this.headlessInstance?.getUIOrderAmount():null,r=e?` ${e}`:f;return u`<primer-button buttonType="submit" variant=${this.variant} @click=${this.handleClick} .disabled=${this.isButtonDisabled} .loading=${this.sdkState?.isProcessing} data-submit >${this.buttonText}${r}</primer-button>`}};Z.styles=[P,ls],d([p({type:String})],Z.prototype,"buttonText",1),d([C({context:B,subscribe:!0}),p({type:Object})],Z.prototype,"headlessInstance",2),d([C({context:F,subscribe:!0}),p()],Z.prototype,"sdkState",2),d([C({context:Pe,subscribe:!0}),p({type:Object,attribute:!1,hasChanged(e,r){return e?.selectedVaultedPaymentMethod?.id!==r?.selectedVaultedPaymentMethod?.id}})],Z.prototype,"vaultItemContext",2),d([C({context:le,subscribe:!0}),p({type:Object,attribute:!1})],Z.prototype,"vaultManager",2),d([C({context:se,subscribe:!0}),p({type:Object,attribute:!1,hasChanged(e,r){return e?.submitButton?.amountVisible!==r?.submitButton?.amountVisible}})],Z.prototype,"clientOptions",2),d([p({type:String})],Z.prototype,"variant",2),d([p({type:Boolean})],Z.prototype,"disabled",2),Z=d([b("primer-vault-payment-submit"),R()],Z);function yi(i){return i?{paddingHorizontal:0,placeholder:{color:i.getPropertyValue("--primer-color-text-placeholder").trim(),fontSize:i.getPropertyValue("--primer-typography-body-large-size").trim(),fontFamily:i.getPropertyValue("--primer-typography-body-large-font").trim()},height:i.getPropertyValue("--primer-typography-body-large-line-height").trim(),fontSize:i.getPropertyValue("--primer-typography-body-large-size").trim(),fontFamily:i.getPropertyValue("--primer-typography-body-large-font").trim(),color:i.getPropertyValue("--primer-color-text-primary").trim()}:null}var ds=g` :host { display: block; margin-top: var(--primer-space-medium); } .cvv-input-container { margin-bottom: var(--primer-space-medium); } `;var K=class extends v{constructor(){super();this.vaultManagerFormContext=null;this.vaultManagerCvvContext=null;this.computedStyles=null;this.paymentMethod=null;this.cvvError=null;this.cvvInputIsDirty=!1;this.cvvInputIsBlurred=!1;this.cvvInput=null;this.isFocused=!1;this._setupCVVIframe=new D(this,{task:([e,r])=>!e||!r||e.paymentMethodType!=="PAYMENT_CARD"||!e.paymentInstrumentData?.network||r.createCvvInput===null?N:{network:e.paymentInstrumentData.network,createCvvInput:r.createCvvInput},args:()=>[this.paymentMethod,this.vaultManagerFormContext]});this.cvvContainerId=`cvv-container-${Math.random().toString(36).substring(2,9)}`,new D(this,{task:async([e])=>{if(!e)return N;await this.updateComplete;let r=this.renderRoot.querySelector(`#${this.cvvContainerId}`);if(!r)return;let o=yi(this.computedStyles),a=o?{input:{base:o}}:void 0,n={cardNetwork:e.network,container:r,name:"cvv",placeholder:"123",style:a};this.cvvInput=await e.createCvvInput?.(n)??null,this.cvvInput&&(this.cvvInput.focus(),this.cvvError=this.cvvInput.metadata.errorCode||null,this.vaultManagerCvvContext?.setCvvInput(this.cvvInput),this.cvvInput.addListener("change",()=>{this.onCvvInputChange()}),this.cvvInput.addListener("blur",()=>{this.onBlur()}),this.cvvInput.addListener("focus",()=>{this.onFocus()}))},args:()=>[this._setupCVVIframe.value]})}disconnectedCallback(){super.disconnectedCallback(),this.cvvInput&&(this.cvvInput.remove(),this.cvvInput=null,this.cvvError=null,this.vaultManagerCvvContext?.setCvvInput(null))}onCvvInputChange(){!this.cvvInput||!this.vaultManagerCvvContext||(this.cvvInputIsDirty=!0,this.cvvError=this.cvvInput.metadata.errorCode||null)}onBlur(){this.cvvInput&&(this.cvvInputIsBlurred=!0,this.cvvError=this.cvvInput.metadata.errorCode||null,this.isFocused=!1)}onFocus(){this.isFocused=!0}render(){return this._setupCVVIframe.render({error:()=>f,complete:()=>u`<div class="cvv-input-container"><primer-input-wrapper .focusWithin=${this.isFocused} .hasError=${!!this.cvvError&&(this.vaultManagerCvvContext?.formIsDirty||this.cvvInputIsDirty&&this.cvvInputIsBlurred)} ><slot name="label" slot="label"><primer-input-label>CVV</primer-input-label></slot><div slot="input" id="${this.cvvContainerId}"></div>${V(this.cvvError&&(this.vaultManagerCvvContext?.formIsDirty||this.cvvInputIsDirty&&this.cvvInputIsBlurred),()=>u`<primer-input-error slot="error">${_(this.cvvError,{id:this.cvvError})}</primer-input-error>`)}</primer-input-wrapper></div>`})}};K.styles=[P,ds],d([C({context:le,subscribe:!0}),p({type:Object,attribute:!1,hasChanged(e,r){return e?.createCvvInput!==r?.createCvvInput}})],K.prototype,"vaultManagerFormContext",2),d([C({context:Pe,subscribe:!0}),p({type:Object,attribute:!1})],K.prototype,"vaultManagerCvvContext",2),d([C({context:Nt,subscribe:!0}),p()],K.prototype,"computedStyles",2),d([p({type:Object})],K.prototype,"paymentMethod",2),d([M()],K.prototype,"cvvError",2),d([M()],K.prototype,"cvvInputIsDirty",2),d([M()],K.prototype,"cvvInputIsBlurred",2),d([M()],K.prototype,"cvvInput",2),d([M()],K.prototype,"isFocused",2),K=d([b("primer-vault-cvv-input"),R()],K);var cs=g` :host { display: flex; width: 100%; align-items: center; } /* Card icons */ .payment-method-icon { height: var(--primer-space-xlarge); object-fit: contain; flex-shrink: 0; transition: transform var(--primer-animation-duration) var(--primer-animation-easing); } .payment-method-icon-generic { display: flex; align-items: center; justify-content: center; color: var(--primer-color-gray-500); height: var(--primer-space-xlarge); flex-shrink: 0; } .payment-method-details { flex: 1; display: flex; flex-direction: column; gap: var(--primer-space-xsmall); align-items: flex-start; transition: transform var(--primer-animation-duration) var(--primer-animation-easing); margin-left: var(--primer-space-small); } .payment-method-card { flex: 1; width: 100%; display: flex; flex-direction: column; gap: var(--primer-space-xsmall); transition: transform var(--primer-animation-duration) var(--primer-animation-easing); } .payment-method-description { font-weight: var(--primer-typography-title-large-weight); color: var(--primer-color-text-primary); transition: color var(--primer-animation-duration) var(--primer-animation-easing); } .payment-method-secondary-description { font-size: var(--primer-typography-body-small-size); color: var(--primer-color-text-secondary); transition: color var(--primer-animation-duration) var(--primer-animation-easing); } .payment-method-row { display: grid; grid-template-columns: 200px 100px; justify-content: space-between; align-items: center; } .cell-2 { grid-column: 2; display: flex; justify-content: flex-end; align-items: center; } .payment-method-header { font-weight: var(--primer-typography-body-large-weight); font-size: var(--primer-typography-body-large-size); line-height: var(--primer-typography-body-large-line-height); color: var(--primer-color-text-primary); letter-spacing: var(--primer-typography-body-large-letter-spacing); } .payment-method-subtitle { color: var(--primer-color-text-secondary); font-size: var(--primer-typography-body-small-size); line-height: var(--primer-typography-body-small-line-height); font-weight: var(--primer-typography-body-small-weight); letter-spacing: var(--primer-typography-body-small-letter-spacing); } .flex { display: flex; align-items: flex-end; gap: var(--primer-space-xsmall); } .payment-method-card-other { width: 100%; display: grid; grid-template-columns: 1fr auto; gap: var(--primer-space-medium); align-items: center; justify-content: space-between; } .payment-method-right-column-text { font-size: var(--primer-typography-body-medium-size); font-weight: var(--primer-typography-body-medium-weight); line-height: var(--primer-typography-body-medium-line-height); letter-spacing: var(--primer-typography-body-medium-letter-spacing); } `;var Ve=class extends v{constructor(){super(...arguments);this.assetConfig=null}render(){if(!this.assetConfig)return f;let e=this.assetConfig.description,r=this.assetConfig.icon,o=V(this.assetConfig.icon,()=>u`<img class="payment-method-icon" src=${r} alt=${e} />`,()=>u`<div class="payment-method-icon payment-method-icon-generic"><primer-icon name="payment-card" size="sm"></primer-icon></div>`);return this.assetConfig.type==="other"&&this.assetConfig.paymentMethodType!=="ACH"?u`<div class="payment-method-card-other"><div class="left-column"><div class="payment-method-header">${this.assetConfig.fullName}</div><div class="flex">${o}<span class="payment-method-subtitle" >${this.assetConfig.paymentMethodType}</span ></div></div><div class="payment-method-right-column-text">${this.assetConfig.email||`\u2022\u2022\u2022\u2022 ${this.assetConfig.last4}`}</div></div>`:this.assetConfig.type==="other"&&this.assetConfig.paymentMethodType==="ACH"?u`<span class="payment-method-card"><div class="payment-method-row"><span class="payment-method-header" >${this.assetConfig.fullName}</span ><span class="payment-method-header cell-2" >•••• ${this.assetConfig.last4}</span ></div><div class="payment-method-row"><span class="flex">${o}<span class="payment-method-subtitle" >${this.assetConfig.bankName}</span ></span><span class="payment-method-subtitle cell-2" >${this.assetConfig.accountType}</span ></div></span>`:this.assetConfig.type==="card"?u`<span class="payment-method-card"><div class="payment-method-row"><span class="payment-method-header" >${this.assetConfig.cardholderName}</span ><span class="payment-method-header cell-2" >•••• ${this.assetConfig.last4}</span ></div><div class="payment-method-row"><span class="flex">${o}<span class="payment-method-subtitle" >${this.assetConfig.network}</span ></span><span class="payment-method-subtitle cell-2" >${this.assetConfig.expiresDate}</span ></div></span>`:f}};Ve.styles=[P,cs],d([p({type:Object,attribute:!1})],Ve.prototype,"assetConfig",2),Ve=d([b("primer-payment-method-content")],Ve);var Yt="card-form-context";function ps(i,t){if(i.style.cssText="width: 100%; flex:1; padding: 0; border: none; height: var(--primer-typography-body-large-line-height); font-size: var(--primer-typography-body-large-size); font-family: var(--primer-typography-body-large-font); color: var(--primer-color-text-primary); background-color: transparent; outline: none;",i.setAttribute("data-custom-input",""),!t.shadowRoot?.querySelector("style[data-custom-input-style]")){let e=document.createElement("style");e.setAttribute("data-custom-input-style",""),e.textContent=`
190
202
  input[data-custom-input]::placeholder {
191
203
  color: var(--primer-color-text-placeholder);
192
204
  font-size: var(--primer-typography-body-large-size);
@@ -195,28 +207,4 @@ primer-checkout:not([js-initialized]):not([loader-disabled])::after {
195
207
  input[data-custom-input]:focus {
196
208
  outline: none;
197
209
  }
198
- `,t.shadowRoot?t.shadowRoot.appendChild(e):t.appendChild(e)}}function Qa(i,t){return i.active!==t.active||i.dirty!==t.dirty||i.error!==t.error||i.errorCode!==t.errorCode||i.submitted!==t.submitted||i.touched!==t.touched||i.valid!==t.valid}var di=class{constructor(t,e){this._meta={active:!1,dirty:!1,error:null,errorCode:null,submitted:!1,touched:!1,valid:!1};this._hostedInput=null;this._standardInput=null;this.host=t,this.config=e,this.host.addController(this),this.setupTask=new V(this.host,{args:()=>[this.getHostedInput()],task:this.setupHostedInput.bind(this)}),this.host.addEventListener("wrapper-click",()=>{this.focusInput()})}focusInput(){this._hostedInput?this._hostedInput.focus():this._standardInput&&this._standardInput.focus()}notifyUserInteraction(){let t=this.host.cardFormContext;t?.onUserInteraction&&t.onUserInteraction()}getHostedInput(){let{type:t}=this.config,e=this.host.cardFormContext;return e?{cardNumber:e.cardNumberInput,cvv:e.cvvInput,expire:e.expiryInput,cardholderName:e.cardholderNameInput??"cardholderName"}[t]:void 0}async setupHostedInput([t]){if(!t)return D;await this.host.updateComplete;let e=this.getTargetContainer();return e?t==="cardholderName"?this.setupStandardInput(e):this.setupHostedIframeInput(t,e):D}getTargetContainer(){return this.host.renderRoot.querySelector(this.config.containerSelector)}setupStandardInput(t){let e=document.createElement("input");return e.type="text",e.placeholder=this.host.placeholder,Xa(e,this.host),(this.host.ariaLabel||this.host.label)&&e.setAttribute("aria-label",this.host.ariaLabel??this.host.label),this.setupInputEventListeners(e),t.innerHTML="",t.appendChild(e),this._standardInput=e,!0}setupInputEventListeners(t){t.addEventListener("input",e=>{let r=e.target,n=!!r.value.trim();this.notifyUserInteraction(),this._meta={...this._meta,dirty:n},this.config.onInput?.(r.value),this.host.requestUpdate()}),t.addEventListener("focus",()=>{this.notifyUserInteraction(),this._meta.active=!0,this.host.requestUpdate()}),t.addEventListener("blur",()=>{this._meta.active=!1,this._meta.touched=!1,this.host.requestUpdate()})}async setupHostedIframeInput(t,e){await new Promise(n=>requestAnimationFrame(()=>n())),this._hostedInput=t;let r=li(this.host.computedStyles),o=r?{style:{input:{base:r}}}:void 0;return t.addEventListener("focus",()=>{this.notifyUserInteraction(),this._meta.active=!0,this.host.requestUpdate()}),t.addEventListener("blur",()=>{this._meta.active=!1,this.host.requestUpdate()}),t.addEventListener("change",n=>{let a=n;this.notifyUserInteraction(),Qa(this._meta,a)&&(this._meta={...this._meta,...a},this.host.requestUpdate())}),await t.render(e,{placeholder:this.host.placeholder,ariaLabel:this.host.ariaLabel,...o}),!0}get meta(){return this._meta}updateMetaFromValidation(t){this._meta={...this._meta,valid:!!t.valid,error:t.error||null,errorCode:t.errorCode||null},this.host.requestUpdate()}setSubmitted(t){this._meta={...this._meta,submitted:t,...t&&{touched:!0}},this.host.requestUpdate()}hostConnected(){this.registerWithContext()}hostDisconnected(){this.unregisterFromContext(),this._hostedInput=null,this._standardInput=null}registerWithContext(){let t=this.host.cardFormContext;t?.registerInputController&&t.registerInputController(this.config.type,this)}unregisterFromContext(){let t=this.host.cardFormContext;t?.unregisterInputController&&t.unregisterInputController(this.config.type)}};var es=g` :host { display: contents; } form { display: flex; flex-direction: column; gap: var(--primer-space-medium); width: 100%; } .card-form { display: flex; flex-direction: column; gap: var(--primer-space-medium); margin-bottom: var(--primer-space-medium); } .card-form-row { display: flex; gap: var(--primer-space-small); } `;var ts={cardholderName:"cardholderName",cardNumber:"cardNumber",cardExpiryDate:"expire",expiryDate:"expire",cardSecurityCode:"cvv",cvv:"cvv"},ee=class extends v{constructor(){super(...arguments);this.hideLabels=!1;this.disabled=!1;this.hasAssignedContent=!1;this.selectedCardNetwork=null;this.paymentMethodSelectionSent=!1;this.paymentManagers=new Map;this.clientOptions=null;this.headlessUtils=null;this.analyticsUtils=null;this.contextEventsController=null;this.cardFormProvider=new z(this,{context:Ot,initialValue:null});this.eventsController=new Pt(this);this._contextCardSubmitListener=null;this._isHandlingContextEvent=!1;this.inputControllers=new Map;this.setupCardFormTask=new V(this,{task:([e])=>{if(!e?.manager)return D;let{manager:r}=e,o=r.createHostedInputs(),{cardNumberInput:n,expiryInput:a,cvvInput:l}=o;return this.cardFormProvider.setValue({cardholderNameInput:o.cardholderNameInput,cardNumberInput:n,expiryInput:a,cvvInput:l,setCardholderName:s=>{r.setCardholderName(s),this.shouldRequireCardholderName&&r.validate?.().then(c=>{let f=c?.validationErrors?.find(S=>S.name===ts.cardholderName),y=this.inputControllers.get("cardholderName");y&&y.updateMetaFromValidation({valid:!1,error:f?.message||f?.error||null,errorCode:f?.message||f?.error||null})})},setCardNetwork:s=>{this.selectedCardNetwork=s},validate:()=>r.validate(),submit:s=>r.submit(s),hideLabels:this.hideLabels,disabled:this.disabled,setSubmissionState:s=>{this.inputControllers.forEach(c=>{c.setSubmitted(s)})},propagateValidationErrors:s=>{s&&s.forEach(c=>{let m=c.field||c.name,f=c.message||c.error,y=ts[m];if(y){let S=this.inputControllers.get(y);if(S){let A={valid:!1,error:f,errorCode:f};S.updateMetaFromValidation(A)}}})},registerInputController:(s,c)=>{this.inputControllers.set(s,c)},unregisterInputController:s=>{this.inputControllers.delete(s)},onUserInteraction:()=>{this.sendPaymentMethodSelectionEvent(),this.checkAndSendPaymentDetailsEnteredEvent()}}),!0},args:()=>[this.paymentManagers.get("PAYMENT_CARD")]});this.paymentDetailsEnteredSent=!1;this.handleSlotButtonClick=e=>{let o=e.target.closest("button, primer-button");if(!o)return;let n=o;this.isSubmitButton(n)&&(e.preventDefault(),this.submitCardPayment())};this.handleDirectSubmit=e=>{e.stopPropagation(),this.submitCardPayment()};this.handleContextCardSubmit=e=>{if(!this._isHandlingContextEvent){this._isHandlingContextEvent=!0;try{e.target!==this&&(e.stopPropagation(),this.submitCardPayment())}finally{this._isHandlingContextEvent=!1}}};this.onSlotChange=e=>{let o=e.target.assignedNodes({flatten:!0});this.hasAssignedContent=o.length>0};this.handleFormSubmit=e=>{e.preventDefault(),e.stopPropagation(),this.submitCardPayment()}}updated(e){if(super.updated(e),(e.has("hideLabels")||e.has("disabled"))&&this.cardFormProvider.value&&this.cardFormProvider.setValue({...this.cardFormProvider.value,hideLabels:this.hideLabels,disabled:this.disabled}),e.has("contextEventsController")){let r=e.get("contextEventsController");r?.host&&this._contextCardSubmitListener&&r.host.removeEventListener("primer:card-submit",this._contextCardSubmitListener),this.setupContextEventListeners()}}get shouldShowCardholderName(){let e=this.clientOptions?.card?.cardholderName;return typeof e?.visible=="boolean"?e.visible:!0}get shouldRequireCardholderName(){if(!this.shouldShowCardholderName)return!1;let e=this.clientOptions?.card?.cardholderName;return typeof e?.required=="boolean"?e.required:!0}sendPaymentMethodSelectionEvent(){this.paymentMethodSelectionSent||(this.paymentMethodSelectionSent=!0,G({eventName:"PAYMENT_METHOD_SELECTION",paymentMethod:"PAYMENT_CARD"}))}checkAndSendPaymentDetailsEnteredEvent(){if(this.paymentDetailsEnteredSent)return;let e=this.inputControllers.get("cardNumber"),r=this.inputControllers.get("expire"),o=this.inputControllers.get("cvv"),n=e?.meta?.dirty===!0,a=r?.meta?.dirty===!0,l=o?.meta?.dirty===!0,s=!0;this.shouldRequireCardholderName&&(s=this.inputControllers.get("cardholderName")?.meta?.dirty===!0),n&&a&&l&&s&&(this.sendPaymentDetailsEnteredEvent(),this.paymentDetailsEnteredSent=!0)}sendPaymentDetailsEnteredEvent(){G({eventName:"PAYMENT_DETAILS_ENTERED",paymentMethod:"PAYMENT_CARD"})}connectedCallback(){super.connectedCallback(),this.addEventListener("click",this.handleSlotButtonClick),this.addEventListener("primer:card-submit",this.handleDirectSubmit),this._contextCardSubmitListener=e=>{this.handleContextCardSubmit(e)},this.setupContextEventListeners()}disconnectedCallback(){this.removeEventListener("click",this.handleSlotButtonClick),this.removeEventListener("primer:card-submit",this.handleDirectSubmit),this.cleanupContextEventListeners(),super.disconnectedCallback()}setupContextEventListeners(){this.contextEventsController?.host&&this._contextCardSubmitListener&&this.contextEventsController.host.addEventListener("primer:card-submit",this._contextCardSubmitListener)}cleanupContextEventListeners(){this.contextEventsController?.host&&this._contextCardSubmitListener&&this.contextEventsController.host.removeEventListener("primer:card-submit",this._contextCardSubmitListener)}isSubmitButton(e){let r=e.tagName.toLowerCase(),o=r==="button",n=r==="primer-button";return o&&(e.getAttribute("type")==="submit"||e.hasAttribute("data-submit"))||n&&(e.getAttribute("type")==="submit"||e.hasAttribute("data-submit"))}async submitCardPayment(){let e=this.cardFormProvider.value;if(!e||this.disabled)return;e.setSubmissionState?.(!0);let r=await e.validate?.();if(r?.valid){let o=this.selectedCardNetwork?{cardNetwork:this.selectedCardNetwork}:void 0;await e.submit?.(o);let n={success:!0};this.eventsController.dispatchFormSubmitSuccess(n)}else{let o=r?.validationErrors;e.propagateValidationErrors?.(o||[]),this.cardFormProvider.setValue({...e,errors:o}),this.eventsController.dispatchFormSubmitErrors(o)}}render(){return this.setupCardFormTask.status===rt.ERROR||this.setupCardFormTask.status===rt.INITIAL?h:u`<form @submit=${this.handleFormSubmit}><slot name="card-form-content" @slotchange=${this.onSlotChange}></slot>${this.setupCardFormTask.render({complete:()=>$(this.hasAssignedContent,()=>h,()=>u`<div class="card-form"><primer-input-card-number></primer-input-card-number><div class="card-form-row"><primer-input-card-expiry></primer-input-card-expiry><primer-input-cvv></primer-input-cvv></div>${$(this.shouldShowCardholderName,()=>u`<primer-input-card-holder-name></primer-input-card-holder-name>`,()=>h)}</div><primer-card-form-submit></primer-card-form-submit>`)})}</form>`}};ee.styles=[w,es],d([p({type:Boolean,attribute:"hide-labels",reflect:!0})],ee.prototype,"hideLabels",2),d([p({type:Boolean,attribute:"disabled"})],ee.prototype,"disabled",2),d([M()],ee.prototype,"hasAssignedContent",2),d([M()],ee.prototype,"selectedCardNetwork",2),d([C({context:se,subscribe:!0}),p({type:Object})],ee.prototype,"paymentManagers",2),d([C({context:ae}),p({attribute:!1})],ee.prototype,"clientOptions",2),d([C({context:B}),p({attribute:!1})],ee.prototype,"headlessUtils",2),d([C({context:Xe,subscribe:!0}),p({attribute:!1})],ee.prototype,"analyticsUtils",2),d([C({context:wt,subscribe:!0}),p({attribute:!1})],ee.prototype,"contextEventsController",2),ee=d([b("primer-card-form"),O()],ee);var oe=class extends v{constructor(){super();this._cardFormContext=null;this.computedStyles=null;this._userAssignedProps=new Set;this._internalLabel="";this._internalPlaceholder="";this._internalAriaLabel="";this.handleWrapperClick=()=>{this.hostedInputController.focusInput()};this.hostedInputController={}}get cardFormContext(){return this._cardFormContext}set cardFormContext(e){let r=this._cardFormContext;this._cardFormContext=e,!r&&e&&this.updateComplete.then(()=>{this.hostedInputController?.registerWithContext?.()}),this.requestUpdate("cardFormContext",r)}getTranslatedValue(e){return e?typeof e=="string"?e:P(e.id,{id:e.id}):""}get label(){return this._userAssignedProps.has("label")?this._internalLabel:this.getTranslatedValue(this.config.translations.label)}set label(e){let r=this.label;e!==""?(this._userAssignedProps.add("label"),this._internalLabel=e):(this._userAssignedProps.delete("label"),this._internalLabel=""),this.requestUpdate("label",r)}get placeholder(){return this._userAssignedProps.has("placeholder")?this._internalPlaceholder:this.getTranslatedValue(this.config.translations.placeholder)}set placeholder(e){let r=this.placeholder;this._userAssignedProps.add("placeholder"),this._internalPlaceholder=e,this.requestUpdate("placeholder",r)}get ariaLabel(){return this._userAssignedProps.has("ariaLabel")?this._internalAriaLabel:this.getTranslatedValue(this.config.translations.ariaLabel)||this.getTranslatedValue(this.config.translations.label)}set ariaLabel(e){let r=this.ariaLabel;e!==""?(this._userAssignedProps.add("ariaLabel"),this._internalAriaLabel=e):(this._userAssignedProps.delete("ariaLabel"),this._internalAriaLabel=""),this.requestUpdate("ariaLabel",r)}childUpdated(){Object.defineProperty(this,"hostedInputController",{value:new di(this,{type:this.config.inputType,containerSelector:this.config.containerSelector,onInput:this.config.onInput}),writable:!1,configurable:!1})}getError(){let e=this.hostedInputController.meta;return e.submitted||e.dirty&&e.touched?e.errorCode:null}renderInput(){if(this.hostedInputController.setupTask.status===rt.ERROR)return h;let e=this.getError();return u`<primer-input-wrapper .focusWithin="${this.hostedInputController.meta.active}" .hasError=${!!e} @wrapper-click="${this.handleWrapperClick}" >${$(!this.cardFormContext?.hideLabels,()=>u`<primer-input-label slot="label" >${this.label}</primer-input-label >`,()=>h)}<div slot="input" class="card-input-slot" id="${this.config.containerSelector.substring(1)}" aria-label="${this.ariaLabel}" ></div>${$(e,()=>u`<primer-input-error slot="error">${P(e,{id:e})}</primer-input-error>`,()=>h)}</primer-input-wrapper>`}};d([C({context:Ot,subscribe:!0})],oe.prototype,"cardFormContext",1),d([C({context:Qe,subscribe:!0}),p()],oe.prototype,"computedStyles",2),d([p({type:String})],oe.prototype,"label",1),d([p({type:String})],oe.prototype,"placeholder",1),d([p({type:String,attribute:"aria-label"})],oe.prototype,"ariaLabel",1);var rs=g` :host { display: contents; } .card-number-container { display: flex; align-items: center; width: 100%; position: relative; gap: var(--primer-space-small); } #cardNumber { flex: 1; display: flex; width: 100%; } .network-selector-container { display: flex; align-items: center; z-index: 2; } `;var pt=g` .card-input-slot { display: flex; } `;var je=class extends oe{constructor(){super();this.config={inputType:"cardNumber",containerSelector:"#cardNumber",errorName:"cardNumber-card",translations:{label:{id:"cardNumber",defaultMessage:"Card Number"},placeholder:"4111 1111 1111 1111",ariaLabel:{id:"cardNumber",defaultMessage:"Card Number"}}};this.handleNetworkSelected=e=>{let{network:r}=e.detail;this.cardFormContext&&this.cardFormContext.setCardNetwork(r)};this.childUpdated()}renderInput(){if(this.hostedInputController.setupTask.status===rt.ERROR)return h;let e=this.getError();return u`<primer-input-wrapper .focusWithin="${this.hostedInputController.meta.active}" .hasError=${!!e} >${$(!this.cardFormContext?.hideLabels,()=>u`<primer-input-label slot="label" >${this.label}</primer-input-label >`,()=>h)}<div slot="input" class="card-number-container" aria-label="${this.ariaLabel}" ><div id="${this.config.containerSelector.substring(1)}"></div><div class="network-selector-container"><primer-card-network-selector @network-selected=${this.handleNetworkSelected} ></primer-card-network-selector></div></div>${$(e,r=>u`<primer-input-error slot="error">${P(r,{id:r})}</primer-input-error>`,()=>h)}</primer-input-wrapper>`}render(){return this.renderInput()}};je.styles=[w,pt,rs],je=d([b("primer-input-card-number"),O()],je);var is=g` :host { display: contents; } `;var Ke=class extends oe{constructor(){super();this.config={inputType:"cvv",containerSelector:"#cvv",errorName:"cvv-card",translations:{label:"CVV",placeholder:"123"}};this.childUpdated()}render(){return this.renderInput()}};Ke.styles=[w,pt,is],Ke=d([b("primer-input-cvv"),O()],Ke);var os=g` :host { display: contents; } `;var Ge=class extends oe{constructor(){super();this.config={inputType:"expire",containerSelector:"#expiry",errorName:"expiryDate-card",translations:{label:{id:"cardExpiry",defaultMessage:"Expiry Date"},placeholder:{id:"cardExpiryPlaceholder",defaultMessage:"MM/YY"},ariaLabel:{id:"cardExpiry",defaultMessage:"Expiry Date"}}};this.childUpdated()}render(){return this.renderInput()}};Ge.styles=[w,pt,os],Ge=d([b("primer-input-card-expiry"),O()],Ge);var ns=g` :host { display: contents; } `;var We=class extends oe{constructor(){super();this.config={inputType:"cardholderName",containerSelector:"#cardFormName",errorName:"cardholderName",translations:{label:{id:"cardholderNameLabel",defaultMessage:"Cardholder Name"},placeholder:{id:"cardholderNamePlaceholder",defaultMessage:"Name on card"},ariaLabel:{id:"cardholderNameLabel",defaultMessage:"Cardholder Name"}},onInput:e=>this.handleInput(e)};this.childUpdated()}handleInput(e){this.cardFormContext?.setCardholderName?.(e)}render(){return this.renderInput()}};We.styles=[w,pt,ns],We=d([b("primer-input-card-holder-name"),O()],We);var as=g` :host { display: contents; } `;var K=class extends v{constructor(){super(...arguments);this._userAssignedProps=new Set;this._internalButtonText="";this.headlessInstance=null;this.clientOptions=null;this.sdkState=null;this.cardFormContext=null;this.analyticsUtils=null;this.contextEventsController=null;this.variant="primary";this.disabled=!1;this.handleClick=e=>{if(e.preventDefault(),this.disabled)return;G({eventName:"PAYMENT_SUBMITTED",paymentMethod:"PAYMENT_CARD"});let r=new CustomEvent("primer:card-submit",{bubbles:!0,composed:!0,detail:{source:"primer-card-form-submit"}});this.dispatchEvent(r)}}get buttonText(){return this._userAssignedProps.has("buttonText")?this._internalButtonText:P("pay",{id:"pay"})}set buttonText(e){let r=this.buttonText;e!==""?(this._userAssignedProps.add("buttonText"),this._internalButtonText=e):(this._userAssignedProps.delete("buttonText"),this._internalButtonText=""),this.requestUpdate("buttonText",r)}get submitButtonConfig(){return this.clientOptions?.submitButton??null}get shouldShowBuiltInButton(){return this.submitButtonConfig?.useBuiltInButton??!0}render(){if(!this.shouldShowBuiltInButton)return h;let e=this.submitButtonConfig?.amountVisible?this.headlessInstance?.getUIOrderAmount():null,r=e?` ${e}`:h,o=this.disabled||this.cardFormContext?.disabled||!1;return u`<primer-button type="submit" variant=${this.variant} ?disabled=${o} @click=${this.handleClick} .loading=${!!this.sdkState?.isProcessing} data-submit >${this.buttonText}${r}</primer-button>`}};K.styles=[w,as],d([p({type:String})],K.prototype,"buttonText",1),d([C({context:B,subscribe:!0}),p({type:Object})],K.prototype,"headlessInstance",2),d([C({context:ae,subscribe:!0}),p({type:Object})],K.prototype,"clientOptions",2),d([C({context:F,subscribe:!0}),p()],K.prototype,"sdkState",2),d([C({context:Ot,subscribe:!0}),p()],K.prototype,"cardFormContext",2),d([C({context:Xe,subscribe:!0}),p({attribute:!1})],K.prototype,"analyticsUtils",2),d([C({context:wt,subscribe:!0}),p({attribute:!1})],K.prototype,"contextEventsController",2),d([p({type:String})],K.prototype,"variant",2),d([p({type:Boolean})],K.prototype,"disabled",2),K=d([b("primer-card-form-submit"),O()],K);var ho=()=>new uo,uo=class{},mo=new WeakMap,ci=Ae(class extends dt{render(i){return h}update(i,[t]){let e=t!==this.G;return e&&this.G!==void 0&&this.rt(void 0),(e||this.lt!==this.ct)&&(this.G=t,this.ht=i.options?.host,this.rt(this.ct=i.element)),h}rt(i){if(this.isConnected||(i=void 0),typeof this.G=="function"){let t=this.ht??globalThis,e=mo.get(t);e===void 0&&(e=new WeakMap,mo.set(t,e)),e.get(this.G)!==void 0&&this.G.call(this.ht,void 0),e.set(this.G,i),i!==void 0&&this.G.call(this.ht,i)}else this.G.value=i}get lt(){return typeof this.G=="function"?mo.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});var ss=g` :host { display: flex; align-items: center; position: relative; } .network-selector { display: flex; align-items: center; cursor: pointer; background: none; padding: unset; border: none; transition: opacity var(--primer-animation-duration) var(--primer-animation-easing); outline: none; gap: var(--primer-space-xsmall); } .network-selector:hover { opacity: 0.8; } .network-selector:focus-visible { outline: 2px solid var(--primer-color-focus); border-radius: var(--primer-radius-xsmall); } .network-icon { width: var(--primer-size-large); height: var( --primer-size-medium ); /* Added explicit height to maintain aspect ratio */ object-fit: contain; } .caret { margin-left: var(--primer-space-xsmall); transition: transform var(--primer-animation-duration) var(--primer-animation-easing); color: var(--primer-color-icon-primary); } .caret.open { transform: rotate(180deg); } .dropdown { position: absolute; top: 100%; right: 0; width: max-content; min-width: calc(var(--primer-size-xxxlarge) * 3); background: var(--primer-color-gray-000); border-radius: var(--primer-radius-small); box-shadow: 0 var(--primer-space-xxsmall) var(--primer-space-large) rgba(0, 0, 0, 0.15); z-index: 10; overflow: hidden; border: 1px solid var(--primer-color-border-outlined-default); } .dropdown:not(.open) { display: none; } .dropdown.open { display: block; max-height: calc(var(--primer-size-xxxlarge) * 4); overflow-y: auto; } .network-option { display: flex; align-items: center; padding: var(--primer-space-small) var(--primer-space-medium); cursor: pointer; transition: background-color var(--primer-animation-duration) var(--primer-animation-easing); position: relative; outline: none; background-color: transparent; } /* Only apply hover effect when not in keyboard navigation mode */ .network-option:hover { background-color: var(--primer-color-gray-100); } /* Apply focused style only when the focused class is present (keyboard navigation) */ .network-option.focused { background-color: var(--primer-color-gray-100); } .network-option:focus-visible { outline: 2px solid var(--primer-color-focus); outline-offset: -2px; } .network-option-icon { width: var(--primer-size-medium); height: var(--primer-size-small); margin-right: var(--primer-space-small); object-fit: contain; } .network-name { font-size: var(--primer-typography-body-medium-size); font-family: var(--primer-typography-body-medium-font); line-height: var(--primer-typography-body-medium-line-height); letter-spacing: var(--primer-typography-body-medium-letter-spacing); white-space: nowrap; color: var(--primer-color-text-primary); flex: 1; } .checkmark { margin-left: var(--primer-space-small); color: var(--primer-color-brand); width: var(--primer-size-small); height: var(--primer-size-small); } `;var ne=class extends v{constructor(){super(...arguments);this.cardNetworks=null;this.headlessUtils=null;this.selectedCardNetwork=null;this.isDropdownOpen=!1;this.focusedNetworkIndex=0;this.isKeyboardNavigation=!1;this.buttonRef=ho();this.dropdownRef=ho();this.networkOptionRefs=[];this.toggleDropdown=e=>{this.isKeyboardNavigation=!1,e.stopPropagation(),this.getSelectableNetworks().length>1&&(this.isDropdownOpen=!this.isDropdownOpen,this.isDropdownOpen&&(this.focusedNetworkIndex=this.getSelectedNetworkIndex()))};this.handleClickOutside=e=>{this.isDropdownOpen&&(this.contains(e.target)||(this.isDropdownOpen=!1,this.isKeyboardNavigation=!1))};this.handleMouseMove=()=>{this.isKeyboardNavigation&&(this.isKeyboardNavigation=!1)};this.handleKeyDown=e=>{if(!(!(this.getSelectableNetworks().length>1)||!(this.contains(e.target)||this===e.target||this.isDropdownOpen&&e.target===document.body)))switch(this.isKeyboardNavigation=!0,e.key){case"ArrowDown":e.preventDefault(),this.isDropdownOpen?(this.focusedNetworkIndex=(this.focusedNetworkIndex+1)%this.getSelectableNetworks().length,this.focusNetworkOption()):(this.isDropdownOpen=!0,this.focusedNetworkIndex=this.getSelectedNetworkIndex());break;case"ArrowUp":e.preventDefault(),this.isDropdownOpen?(this.focusedNetworkIndex=(this.focusedNetworkIndex-1+this.getSelectableNetworks().length)%this.getSelectableNetworks().length,this.focusNetworkOption()):(this.isDropdownOpen=!0,this.focusedNetworkIndex=this.getSelectedNetworkIndex());break;case"Enter":case" ":this.isDropdownOpen&&this.focusedNetworkIndex>=0?(e.preventDefault(),this.selectNetwork(e,this.getSelectableNetworks()[this.focusedNetworkIndex])):!this.isDropdownOpen&&this.buttonRef.value===document.activeElement&&(e.preventDefault(),this.isDropdownOpen=!0,this.focusedNetworkIndex=this.getSelectedNetworkIndex());break;case"Escape":this.isDropdownOpen&&(e.preventDefault(),this.isDropdownOpen=!1,this.buttonRef.value?.focus());break;case"Tab":this.isDropdownOpen&&(this.isDropdownOpen=!1);break}};this.handleDocumentKeyDown=e=>{this.isDropdownOpen&&this.handleKeyDown(e)}}getNetworkIconUrl(e){return this.headlessUtils?.getCardNetworkAsset(e.network)?.cardUrl}getSelectableNetworks(){return this.cardNetworks?.selectableCardNetworks||[]}getDetectedNetwork(){return this.selectedCardNetwork??(this.cardNetworks?.detectedCardNetwork||null)}getSelectedNetworkIndex(){let e=this.getDetectedNetwork();if(!e)return 0;let r=this.getSelectableNetworks().findIndex(o=>o.network===e.network);return r>=0?r:0}selectNetwork(e,r){e.stopPropagation(),this.selectedCardNetwork=r,this.isDropdownOpen=!1,this.buttonRef.value?.focus(),this.cardNetworks&&this.dispatchEvent(new CustomEvent("network-selected",{detail:{network:r.network},bubbles:!0,composed:!0}))}focusNetworkOption(){requestAnimationFrame(()=>{this.networkOptionRefs[this.focusedNetworkIndex]&&this.networkOptionRefs[this.focusedNetworkIndex].focus()})}setNetworkOptionRef(e,r){this.networkOptionRefs[r]=e}connectedCallback(){super.connectedCallback(),setTimeout(()=>{document.addEventListener("click",this.handleClickOutside),document.addEventListener("mousemove",this.handleMouseMove),this.addEventListener("keydown",this.handleKeyDown),document.addEventListener("keydown",this.handleDocumentKeyDown)},0)}disconnectedCallback(){document.removeEventListener("click",this.handleClickOutside),document.removeEventListener("keydown",this.handleDocumentKeyDown),document.removeEventListener("mousemove",this.handleMouseMove),this.removeEventListener("keydown",this.handleKeyDown),super.disconnectedCallback()}render(){if(this.cardNetworks?.isLoading)return u`<primer-spinner size="small" compact></primer-spinner>`;let e=this.getSelectableNetworks();if(!this.getDetectedNetwork()&&e.length===0)return u`<primer-icon name="payment-card" size="sm"></primer-icon>`;let r=this.getDetectedNetwork()||(e.length>0?e[0]:null);if(!r)return u`<primer-icon name="payment-card" size="sm"></primer-icon>`;let o=e.length>1;return u`<button ${ci(this.buttonRef)} class="network-selector" @click=${this.toggleDropdown} @keydown=${n=>{(n.key===" "||n.key==="Enter")&&o&&(n.preventDefault(),this.isDropdownOpen=!this.isDropdownOpen,this.isDropdownOpen&&(this.focusedNetworkIndex=this.getSelectedNetworkIndex()))}} aria-label=${o?`Selected card network: ${r.displayName}. Click to change.`:`Card network: ${r.displayName}`} aria-expanded=${o?this.isDropdownOpen:h} aria-haspopup=${o?"true":h} aria-controls=${o?"network-dropdown":h} ><img class="network-icon" src=${this.getNetworkIconUrl(r)} alt=${r.displayName} />${$(o,()=>u`<primer-icon class="caret ${this.isDropdownOpen?"open":""}" size="sm" name="chevron-down" ></primer-icon>`,()=>h)}</button>${$(this.isDropdownOpen,()=>u`<div ${ci(this.dropdownRef)} id="network-dropdown" class="dropdown open" role="listbox" aria-label="Select card network" >${e.map((n,a)=>u`<div ${ci(l=>this.setNetworkOptionRef(l,a))} class="network-option ${this.isKeyboardNavigation&&a===this.focusedNetworkIndex?"focused":""}" @click=${l=>this.selectNetwork(l,n)} @keydown=${l=>{(l.key==="Enter"||l.key===" ")&&this.selectNetwork(l,n)}} role="option" aria-selected=${n.network===r.network} tabindex="${a===this.focusedNetworkIndex?"0":"-1"}" ><img class="network-option-icon" src=${this.getNetworkIconUrl(n)} alt=${n.displayName} /><span class="network-name">${n.displayName}</span>${$(n.network===r.network,()=>u`<primer-icon class="checkmark" name="checkmark" size="sm" ></primer-icon>`,()=>h)}</div>`)}</div>`,()=>h)} `}};ne.styles=[w,ss],d([C({context:dr,subscribe:!0})],ne.prototype,"cardNetworks",2),d([C({context:B,subscribe:!0})],ne.prototype,"headlessUtils",2),d([M()],ne.prototype,"selectedCardNetwork",2),d([M()],ne.prototype,"isDropdownOpen",2),d([M()],ne.prototype,"focusedNetworkIndex",2),d([M()],ne.prototype,"isKeyboardNavigation",2),ne=d([b("primer-card-network-selector")],ne);var ls=g` :host { display: block; margin-top: var(--primer-space-medium); margin-bottom: var(--primer-space-medium); } .other-payment-methods-container { width: 100%; } .other-payment-methods-content { padding: var(--primer-space-medium) 0; } .primer-loader { display: flex; justify-content: center; align-items: center; } `;var mt=class extends v{constructor(){super(...arguments);this.vaultManager=null}render(){if(this.vaultManager?.isLoading)return h;let e=this.vaultManager?.showEmptyState&&this.vaultManager?.vaultedPaymentMethods.length;return!this.vaultManager||!this.vaultManager.enabled||!e?u`<slot name="other-payments"></slot>`:u`<div class="other-payment-methods-container"><primer-collapsable buttonVariant="secondary" .expanded="${this.vaultManager?.vaultedPaymentMethods.length===0}" .header="${P("navigateToPaymentMethods",{id:"navigateToPaymentMethods"})}" ><div class="other-payment-methods-content"><slot name="other-payments"></slot></div></primer-collapsable></div>`}};mt.styles=[ls],d([C({context:le,subscribe:!0}),p({type:Object,attribute:!1})],mt.prototype,"vaultManager",2),mt=d([b("primer-show-other-payments")],mt);var ds=g` :host { height: calc( ${we(nt)} + calc(2 * var(--primer-space-medium)) ); display: flex; } .native-button-container { width: 100%; height: 100%; position: relative; } /* Disabled state styling - handled via JavaScript overlay for iframe compatibility */ :host([disabled]) { cursor: not-allowed; } `;var Pe=class extends v{constructor(){super();this.paymentManagers=new Map;this.computedStyles=null;this.disabled=!1;this._buttonId="button-container";this.loadManagerTask=new V(this,{args:()=>[this.paymentMethod?.type],task:([e])=>{if(!e)return D;let r=this.paymentManagers.get(e)?.manager;if(!r)throw new Error(`No manager found for payment method type ${e}`);return r}}),this.nativeButtonTask=new V(this,{args:()=>[this.loadManagerTask.value],task:async([e])=>{if(!e)return D;await this.updateComplete;let r=this.shadowRoot?.getElementById(this._buttonId);if(!r)return;let o=this.calculateButtonHeight(),n=e.createButton(),a=this.createRenderOptions(o);return await n.render(this.paymentMethod?.type==="GOOGLE_PAY"?this.shadowRoot?.getRootNode():r,a),this.disabled&&await n.setDisabled(this.disabled),this.disabled&&(await this.updateComplete,this.updateDisabledOverlay()),n}})}attributeChangedCallback(e,r,o){if(super.attributeChangedCallback(e,r,o),e==="disabled"&&r!==o){let n=o!==null,a=this.nativeButtonTask.value;a&&a.setDisabled(n)}}calculateButtonHeight(){return typeof window>"u"||!this.isConnected?0:parseFloat(getComputedStyle(this).height)}createRenderOptions(e){let r=this.paymentMethod?.type;if(r==="GOOGLE_PAY")return{style:{shadowRoot:!0}};if(r==="APPLE_PAY")return{style:{buttonHeight:e}};if(r==="PAYPAL"){let a=Math.max(25,Math.min(55,e));return e>55&&E.warn(`PayPal button height (${e}px) exceeds maximum allowed height of 55px. Button will be capped at 55px. This is a PayPal SDK limitation.`),{style:{buttonHeight:a}}}return{style:{buttonHeight:e}}}updated(e){e.has("paymentMethod")&&this.paymentMethod&&(this._buttonId=`button-container-${this.paymentMethod.type}`),e.has("disabled")&&this.updateDisabledOverlay()}updateDisabledOverlay(){this.paymentMethod?.type==="GOOGLE_PAY"?this.updateGooglePayOverlay():this.updateRegularOverlay()}updateGooglePayOverlay(){let e=null;if(e=this.shadowRoot?.getRootNode()?.querySelector(".gpay-card-info-container-fill"),e||(e=document.querySelector(".gpay-card-info-container-fill")),e||(e=this.shadowRoot?.querySelector(".gpay-card-info-container-fill")),!e){setTimeout(()=>this.updateGooglePayOverlay(),100);return}let o=e.querySelector(".disabled-overlay");if(o&&o.remove(),this.disabled){let n=document.createElement("div");n.className="disabled-overlay",n.style.cssText=`
199
- position: absolute;
200
- top: 0;
201
- left: 0;
202
- right: 0;
203
- bottom: 0;
204
- background-color: rgba(255, 255, 255, 0.4);
205
- border-radius: var(--primer-radius-medium);
206
- cursor: not-allowed;
207
- z-index: 1000;
208
- pointer-events: all;
209
- backdrop-filter: grayscale(100%);
210
- `,e.style.position="relative",e.appendChild(n)}}updateRegularOverlay(){let e=this.shadowRoot?.querySelector(".native-button-container");if(!e)return;let r=e.querySelector(".disabled-overlay");if(r&&r.remove(),this.disabled){let o=document.createElement("div");o.className="disabled-overlay",o.style.cssText=`
211
- position: absolute;
212
- top: 0;
213
- left: 0;
214
- right: 0;
215
- bottom: 0;
216
- background-color: rgba(255, 255, 255, 0.4);
217
- border-radius: var(--primer-radius-medium);
218
- cursor: not-allowed;
219
- z-index: 1000;
220
- pointer-events: all;
221
- backdrop-filter: grayscale(100%);
222
- `,e.appendChild(o)}}render(){return this.loadManagerTask.render({error:()=>h,complete:()=>u`<div class="native-button-container" id="${this._buttonId}"></div>`,pending:()=>h})}};Pe.styles=[w,ds],d([p({type:Object})],Pe.prototype,"paymentMethod",2),d([C({context:se,subscribe:!0}),p()],Pe.prototype,"paymentManagers",2),d([C({context:Qe,subscribe:!0}),p()],Pe.prototype,"computedStyles",2),d([p({type:Boolean,attribute:"disabled"})],Pe.prototype,"disabled",2),Pe=d([b("primer-native-payment")],Pe);var Rt=class extends v{render(){return u`<primer-checkout-state type="complete"></primer-checkout-state>`}};Rt=d([b("primer-checkout-complete")],Rt);var _t=class extends v{constructor(){super(...arguments);this.sdkState=null}render(){return u`<primer-checkout-state type="failure" description=${this.sdkState?.error?.message||""} ></primer-checkout-state>`}};d([C({context:F,subscribe:!0}),p()],_t.prototype,"sdkState",2),_t=d([b("primer-checkout-error")],_t);var cs=g` :host { display: block; width: 100%; } `;var qe=class extends v{constructor(){super(...arguments);this.showProcessingErrors=!0}get shouldShowError(){return!this.sdkState||this.sdkState.isProcessing?!1:!!(this.sdkState.failure&&this.showProcessingErrors)}render(){return this.sdkState?u`<primer-error-message message="${P(this.sdkState.failure?.message??"",{id:"tokenizationError"})}" ?visible="${this.shouldShowError}" ></primer-error-message>`:h}};qe.styles=[cs],d([C({context:F,subscribe:!0}),M()],qe.prototype,"sdkState",2),d([p({type:Boolean,attribute:"show-processing-errors"})],qe.prototype,"showProcessingErrors",2),qe=d([b("primer-error-message-container")],qe);var ps=g` :host { display: contents; } .primer-main-list { display: flex; flex-direction: column; gap: var(--primer-space-small); } .primer-is-processing { opacity: 0.5; pointer-events: none; } primer-vault-manager { margin-bottom: var(--primer-space-xlarge); } `;var $e=class extends v{constructor(){super(...arguments);this.hasAssignedContent=!1;this.onSlotChange=e=>{let o=e.target.assignedNodes({flatten:!0});this.hasAssignedContent=o.length>0,this.requestUpdate()};this.paymentMethods=null;this.sdkState=null;this.clientOptions=null}render(){return this.sdkState?.isSuccessful?u`<slot name="checkout-complete"><primer-checkout-complete></primer-checkout-complete></slot>`:u`<slot name="payments" @slotchange=${this.onSlotChange}></slot>${$(this.hasAssignedContent,()=>h,()=>u`<div class=${Z({"primer-is-processing":!!this.sdkState?.isProcessing})} ><primer-vault-manager></primer-vault-manager><primer-show-other-payments><div slot="other-payments" class="primer-main-list">${this.paymentMethods?.toArray().map(e=>u`<primer-payment-method type=${e.type} ?disabled=${this.clientOptions?.disabledPayments===!0} ></primer-payment-method>`)}</div></primer-show-other-payments><primer-error-message-container></primer-error-message-container></div>`)} `}};$e.styles=[w,ps],d([C({context:et,subscribe:!0}),p()],$e.prototype,"paymentMethods",2),d([C({context:F,subscribe:!0}),p()],$e.prototype,"sdkState",2),d([C({context:ae,subscribe:!0}),p()],$e.prototype,"clientOptions",2),$e=d([b("primer-main")],$e);function hT(){la(),da()}export{he as AchPayment,de as Button,ee as CardForm,Ke as CardFormCVV,ne as CardFormCardNetworkSelector,je as CardFormCardNumber,Be as CardFormError,Ge as CardFormExpiry,We as CardFormName,K as CardFormSubmit,ce as Collapsable,xe as Dialog,be as DynamicPayment,Oe as ErrorMessage,qe as ErrorMessageContainer,Rr as InitializedPayments,Y as Input,He as InputLabel,Ne as InputWrapper,Pe as NativePayment,Se as PaymentMethod,ve as PaymentMethodContainer,De as PaymentMethodContentComponent,lt as Portal,ie as PortalDialogComponent,Rt as PrimerCheckoutComplete,ue as PrimerCheckoutComponent,_t as PrimerCheckoutFailure,Fe as PrimerCheckoutState,Le as PrimerIcon,X as PrimerKlarna,$e as PrimerMain,Ce as RedirectPayment,mt as ShowOtherPayments,ke as Spinner,j as VaultCvvInput,fe as VaultDeleteConfirmation,ze as VaultEmptyState,Re as VaultErrorMessage,Q as VaultManager,_e as VaultManagerHeader,pe as VaultPaymentMethodItem,J as VaultPaymentSubmit,_d as injectDarkTheme,Sd as injectLightTheme,la as injectLoaderStyles,da as injectThemeStyles,hT as loadPrimer};
210
+ `,t.shadowRoot?t.shadowRoot.appendChild(e):t.appendChild(e)}}function ms(i,t){return i.active!==t.active||i.dirty!==t.dirty||i.error!==t.error||i.errorCode!==t.errorCode||i.submitted!==t.submitted||i.touched!==t.touched||i.valid!==t.valid}var gi=class{constructor(t,e){this._meta={active:!1,dirty:!1,error:null,errorCode:null,submitted:!1,touched:!1,valid:!1};this._hostedInput=null;this._standardInput=null;this.host=t,this.config=e,this.host.addController(this),this.setupTask=new D(this.host,{args:()=>[this.getHostedInput()],task:this.setupHostedInput.bind(this)}),this.host.addEventListener("wrapper-click",()=>{this.focusInput()})}focusInput(){this._hostedInput?this._hostedInput.focus():this._standardInput&&this._standardInput.focus()}notifyUserInteraction(){let t=this.host.cardFormContext;t?.onUserInteraction&&t.onUserInteraction()}getHostedInput(){let{type:t}=this.config,e=this.host.cardFormContext;return e?{cardNumber:e.cardNumberInput,cvv:e.cvvInput,expire:e.expiryInput,cardholderName:e.cardholderNameInput??"cardholderName"}[t]:void 0}async setupHostedInput([t]){if(!t)return N;await this.host.updateComplete;let e=this.getTargetContainer();return e?t==="cardholderName"?this.setupStandardInput(e):this.setupHostedIframeInput(t,e):N}getTargetContainer(){return this.host.renderRoot.querySelector(this.config.containerSelector)}setupStandardInput(t){let e=document.createElement("input");return e.type="text",e.placeholder=this.host.placeholder,ps(e,this.host),(this.host.ariaLabel||this.host.label)&&e.setAttribute("aria-label",this.host.ariaLabel??this.host.label),this.setupInputEventListeners(e),t.innerHTML="",t.appendChild(e),this._standardInput=e,!0}setupInputEventListeners(t){t.addEventListener("input",e=>{let r=e.target,a=!!r.value.trim();this.notifyUserInteraction(),this._meta={...this._meta,dirty:a},this.config.onInput?.(r.value),this.host.requestUpdate()}),t.addEventListener("focus",()=>{this.notifyUserInteraction(),this._meta.active=!0,this.host.requestUpdate()}),t.addEventListener("blur",()=>{this._meta.active=!1,this._meta.touched=!1,this.host.requestUpdate()})}async setupHostedIframeInput(t,e){await new Promise(a=>requestAnimationFrame(()=>a())),this._hostedInput=t;let r=yi(this.host.computedStyles),o=r?{style:{input:{base:r}}}:void 0;return t.addEventListener("focus",()=>{this.notifyUserInteraction(),this._meta.active=!0,this.host.requestUpdate()}),t.addEventListener("blur",()=>{this._meta.active=!1,this.host.requestUpdate()}),t.addEventListener("change",a=>{let n=a;this.notifyUserInteraction(),ms(this._meta,n)&&(this._meta={...this._meta,...n},this.host.requestUpdate())}),await t.render(e,{placeholder:this.host.placeholder,ariaLabel:this.host.ariaLabel,...o}),!0}get meta(){return this._meta}updateMetaFromValidation(t){this._meta={...this._meta,valid:!!t.valid,error:t.error||null,errorCode:t.errorCode||null},this.host.requestUpdate()}setSubmitted(t){this._meta={...this._meta,submitted:t,...t&&{touched:!0}},this.host.requestUpdate()}hostConnected(){this.registerWithContext()}hostDisconnected(){this.unregisterFromContext(),this._hostedInput=null,this._standardInput=null}registerWithContext(){let t=this.host.cardFormContext;t?.registerInputController&&t.registerInputController(this.config.type,this)}unregisterFromContext(){let t=this.host.cardFormContext;t?.unregisterInputController&&t.unregisterInputController(this.config.type)}};var us=g` :host { display: contents; } form { display: flex; flex-direction: column; gap: var(--primer-space-medium); width: 100%; } .card-form { display: flex; flex-direction: column; gap: var(--primer-space-medium); margin-bottom: var(--primer-space-medium); } .card-form-row { display: flex; gap: var(--primer-space-small); } `;var hs={cardholderName:"cardholderName",cardNumber:"cardNumber",cardExpiryDate:"expire",expiryDate:"expire",cardSecurityCode:"cvv",cvv:"cvv"},te=class extends v{constructor(){super(...arguments);this.hideLabels=!1;this.disabled=!1;this.hasAssignedContent=!1;this.selectedCardNetwork=null;this.paymentMethodSelectionSent=!1;this.paymentManagers=new Map;this.clientOptions=null;this.headlessUtils=null;this.analyticsUtils=null;this.contextEventsController=null;this.cardFormProvider=new z(this,{context:Yt,initialValue:null});this.eventsController=new Mt(this);this._contextCardSubmitListener=null;this._isHandlingContextEvent=!1;this.inputControllers=new Map;this.setupCardFormTask=new D(this,{task:([e])=>{if(!e?.manager)return N;let{manager:r}=e,o=r.createHostedInputs(),{cardNumberInput:a,expiryInput:n,cvvInput:l}=o;return this.cardFormProvider.setValue({cardholderNameInput:o.cardholderNameInput,cardNumberInput:a,expiryInput:n,cvvInput:l,setCardholderName:s=>{r.setCardholderName(s),this.shouldRequireCardholderName&&r.validate?.().then(c=>{let y=c?.validationErrors?.find(E=>E.name===hs.cardholderName),h=this.inputControllers.get("cardholderName");h&&h.updateMetaFromValidation({valid:!1,error:y?.message||y?.error||null,errorCode:y?.message||y?.error||null})})},setCardNetwork:s=>{this.selectedCardNetwork=s},validate:()=>r.validate(),submit:s=>r.submit(s),hideLabels:this.hideLabels,disabled:this.disabled,setSubmissionState:s=>{this.inputControllers.forEach(c=>{c.setSubmitted(s)})},propagateValidationErrors:s=>{s&&s.forEach(c=>{let m=c.field||c.name,y=c.message||c.error,h=hs[m];if(h){let E=this.inputControllers.get(h);if(E){let A={valid:!1,error:y,errorCode:y};E.updateMetaFromValidation(A)}}})},registerInputController:(s,c)=>{this.inputControllers.set(s,c)},unregisterInputController:s=>{this.inputControllers.delete(s)},onUserInteraction:()=>{this.sendPaymentMethodSelectionEvent(),this.checkAndSendPaymentDetailsEnteredEvent()}}),!0},args:()=>[this.paymentManagers.get("PAYMENT_CARD")]});this.paymentDetailsEnteredSent=!1;this.handleSlotButtonClick=e=>{let o=e.target.closest("button, primer-button");if(!o)return;let a=o;this.isSubmitButton(a)&&(e.preventDefault(),this.submitCardPayment())};this.handleDirectSubmit=e=>{e.stopPropagation(),this.submitCardPayment()};this.handleContextCardSubmit=e=>{if(!this._isHandlingContextEvent){this._isHandlingContextEvent=!0;try{e.target!==this&&(e.stopPropagation(),this.submitCardPayment())}finally{this._isHandlingContextEvent=!1}}};this.onSlotChange=e=>{let o=e.target.assignedNodes({flatten:!0});this.hasAssignedContent=o.length>0};this.handleFormSubmit=e=>{e.preventDefault(),e.stopPropagation(),this.submitCardPayment()}}updated(e){if(super.updated(e),(e.has("hideLabels")||e.has("disabled"))&&this.cardFormProvider.value&&this.cardFormProvider.setValue({...this.cardFormProvider.value,hideLabels:this.hideLabels,disabled:this.disabled}),e.has("contextEventsController")){let r=e.get("contextEventsController");r?.host&&this._contextCardSubmitListener&&r.host.removeEventListener("primer:card-submit",this._contextCardSubmitListener),this.setupContextEventListeners()}}get shouldShowCardholderName(){let e=this.clientOptions?.card?.cardholderName;return typeof e?.visible=="boolean"?e.visible:!0}get shouldRequireCardholderName(){if(!this.shouldShowCardholderName)return!1;let e=this.clientOptions?.card?.cardholderName;return typeof e?.required=="boolean"?e.required:!0}sendPaymentMethodSelectionEvent(){this.paymentMethodSelectionSent||(this.paymentMethodSelectionSent=!0,W({eventName:"PAYMENT_METHOD_SELECTION",paymentMethod:"PAYMENT_CARD"}))}checkAndSendPaymentDetailsEnteredEvent(){if(this.paymentDetailsEnteredSent)return;let e=this.inputControllers.get("cardNumber"),r=this.inputControllers.get("expire"),o=this.inputControllers.get("cvv"),a=e?.meta?.dirty===!0,n=r?.meta?.dirty===!0,l=o?.meta?.dirty===!0,s=!0;this.shouldRequireCardholderName&&(s=this.inputControllers.get("cardholderName")?.meta?.dirty===!0),a&&n&&l&&s&&(this.sendPaymentDetailsEnteredEvent(),this.paymentDetailsEnteredSent=!0)}sendPaymentDetailsEnteredEvent(){W({eventName:"PAYMENT_DETAILS_ENTERED",paymentMethod:"PAYMENT_CARD"})}connectedCallback(){super.connectedCallback(),this.addEventListener("click",this.handleSlotButtonClick),this.addEventListener("primer:card-submit",this.handleDirectSubmit),this._contextCardSubmitListener=e=>{this.handleContextCardSubmit(e)},this.setupContextEventListeners()}disconnectedCallback(){this.removeEventListener("click",this.handleSlotButtonClick),this.removeEventListener("primer:card-submit",this.handleDirectSubmit),this.cleanupContextEventListeners(),super.disconnectedCallback()}setupContextEventListeners(){this.contextEventsController?.host&&this._contextCardSubmitListener&&this.contextEventsController.host.addEventListener("primer:card-submit",this._contextCardSubmitListener)}cleanupContextEventListeners(){this.contextEventsController?.host&&this._contextCardSubmitListener&&this.contextEventsController.host.removeEventListener("primer:card-submit",this._contextCardSubmitListener)}isSubmitButton(e){let r=e.tagName.toLowerCase(),o=r==="button",a=r==="primer-button";return o&&(e.getAttribute("type")==="submit"||e.hasAttribute("data-submit"))||a&&(e.getAttribute("type")==="submit"||e.hasAttribute("data-submit"))}async submitCardPayment(){let e=this.cardFormProvider.value;if(!e||this.disabled)return;e.setSubmissionState?.(!0);let r=await e.validate?.();if(r?.valid){let o=this.selectedCardNetwork?{cardNetwork:this.selectedCardNetwork}:void 0;await e.submit?.(o);let a={success:!0};this.eventsController.dispatchFormSubmitSuccess(a)}else{let o=r?.validationErrors;e.propagateValidationErrors?.(o||[]),this.cardFormProvider.setValue({...e,errors:o}),this.eventsController.dispatchFormSubmitErrors(o)}}render(){return this.setupCardFormTask.status===it.ERROR||this.setupCardFormTask.status===it.INITIAL?f:u`<form @submit=${this.handleFormSubmit}><slot name="card-form-content" @slotchange=${this.onSlotChange}></slot>${this.setupCardFormTask.render({complete:()=>V(this.hasAssignedContent,()=>f,()=>u`<div class="card-form"><primer-input-card-number></primer-input-card-number><div class="card-form-row"><primer-input-card-expiry></primer-input-card-expiry><primer-input-cvv></primer-input-cvv></div>${V(this.shouldShowCardholderName,()=>u`<primer-input-card-holder-name></primer-input-card-holder-name>`,()=>f)}</div><primer-card-form-submit></primer-card-form-submit>`)})}</form>`}};te.styles=[P,us],d([p({type:Boolean,attribute:"hide-labels",reflect:!0})],te.prototype,"hideLabels",2),d([p({type:Boolean,attribute:"disabled"})],te.prototype,"disabled",2),d([M()],te.prototype,"hasAssignedContent",2),d([M()],te.prototype,"selectedCardNetwork",2),d([C({context:j,subscribe:!0}),p({type:Object})],te.prototype,"paymentManagers",2),d([C({context:se}),p({attribute:!1})],te.prototype,"clientOptions",2),d([C({context:B}),p({attribute:!1})],te.prototype,"headlessUtils",2),d([C({context:et,subscribe:!0}),p({attribute:!1})],te.prototype,"analyticsUtils",2),d([C({context:It,subscribe:!0}),p({attribute:!1})],te.prototype,"contextEventsController",2),te=d([b("primer-card-form"),R()],te);var ae=class extends v{constructor(){super();this._cardFormContext=null;this.computedStyles=null;this._userAssignedProps=new Set;this._internalLabel="";this._internalPlaceholder="";this._internalAriaLabel="";this.handleWrapperClick=()=>{this.hostedInputController.focusInput()};this.hostedInputController={}}get cardFormContext(){return this._cardFormContext}set cardFormContext(e){let r=this._cardFormContext;this._cardFormContext=e,!r&&e&&this.updateComplete.then(()=>{this.hostedInputController?.registerWithContext?.()}),this.requestUpdate("cardFormContext",r)}getTranslatedValue(e){return e?typeof e=="string"?e:_(e.id,{id:e.id}):""}get label(){return this._userAssignedProps.has("label")?this._internalLabel:this.getTranslatedValue(this.config.translations.label)}set label(e){let r=this.label;e!==""?(this._userAssignedProps.add("label"),this._internalLabel=e):(this._userAssignedProps.delete("label"),this._internalLabel=""),this.requestUpdate("label",r)}get placeholder(){return this._userAssignedProps.has("placeholder")?this._internalPlaceholder:this.getTranslatedValue(this.config.translations.placeholder)}set placeholder(e){let r=this.placeholder;this._userAssignedProps.add("placeholder"),this._internalPlaceholder=e,this.requestUpdate("placeholder",r)}get ariaLabel(){return this._userAssignedProps.has("ariaLabel")?this._internalAriaLabel:this.getTranslatedValue(this.config.translations.ariaLabel)||this.getTranslatedValue(this.config.translations.label)}set ariaLabel(e){let r=this.ariaLabel;e!==""?(this._userAssignedProps.add("ariaLabel"),this._internalAriaLabel=e):(this._userAssignedProps.delete("ariaLabel"),this._internalAriaLabel=""),this.requestUpdate("ariaLabel",r)}childUpdated(){Object.defineProperty(this,"hostedInputController",{value:new gi(this,{type:this.config.inputType,containerSelector:this.config.containerSelector,onInput:this.config.onInput}),writable:!1,configurable:!1})}getError(){let e=this.hostedInputController.meta;return e.submitted||e.dirty&&e.touched?e.errorCode:null}renderInput(){if(this.hostedInputController.setupTask.status===it.ERROR)return f;let e=this.getError();return u`<primer-input-wrapper .focusWithin="${this.hostedInputController.meta.active}" .hasError=${!!e} @wrapper-click="${this.handleWrapperClick}" >${V(!this.cardFormContext?.hideLabels,()=>u`<primer-input-label slot="label" >${this.label}</primer-input-label >`,()=>f)}<div slot="input" class="card-input-slot" id="${this.config.containerSelector.substring(1)}" aria-label="${this.ariaLabel}" ></div>${V(e,()=>u`<primer-input-error slot="error">${_(e,{id:e})}</primer-input-error>`,()=>f)}</primer-input-wrapper>`}};d([C({context:Yt,subscribe:!0})],ae.prototype,"cardFormContext",1),d([C({context:Nt,subscribe:!0}),p()],ae.prototype,"computedStyles",2),d([p({type:String})],ae.prototype,"label",1),d([p({type:String})],ae.prototype,"placeholder",1),d([p({type:String,attribute:"aria-label"})],ae.prototype,"ariaLabel",1);var fs=g` :host { display: contents; } .card-number-container { display: flex; align-items: center; width: 100%; position: relative; gap: var(--primer-space-small); } #cardNumber { flex: 1; display: flex; width: 100%; } .network-selector-container { display: flex; align-items: center; z-index: 2; } `;var ut=g` .card-input-slot { display: flex; } `;var Ge=class extends ae{constructor(){super();this.config={inputType:"cardNumber",containerSelector:"#cardNumber",errorName:"cardNumber-card",translations:{label:{id:"cardNumber",defaultMessage:"Card Number"},placeholder:"4111 1111 1111 1111",ariaLabel:{id:"cardNumber",defaultMessage:"Card Number"}}};this.handleNetworkSelected=e=>{let{network:r}=e.detail;this.cardFormContext&&this.cardFormContext.setCardNetwork(r)};this.childUpdated()}renderInput(){if(this.hostedInputController.setupTask.status===it.ERROR)return f;let e=this.getError();return u`<primer-input-wrapper .focusWithin="${this.hostedInputController.meta.active}" .hasError=${!!e} >${V(!this.cardFormContext?.hideLabels,()=>u`<primer-input-label slot="label" >${this.label}</primer-input-label >`,()=>f)}<div slot="input" class="card-number-container" aria-label="${this.ariaLabel}" ><div id="${this.config.containerSelector.substring(1)}"></div><div class="network-selector-container"><primer-card-network-selector @network-selected=${this.handleNetworkSelected} ></primer-card-network-selector></div></div>${V(e,r=>u`<primer-input-error slot="error">${_(r,{id:r})}</primer-input-error>`,()=>f)}</primer-input-wrapper>`}render(){return this.renderInput()}};Ge.styles=[P,ut,fs],Ge=d([b("primer-input-card-number"),R()],Ge);var ys=g` :host { display: contents; } `;var We=class extends ae{constructor(){super();this.config={inputType:"cvv",containerSelector:"#cvv",errorName:"cvv-card",translations:{label:"CVV",placeholder:"123"}};this.childUpdated()}render(){return this.renderInput()}};We.styles=[P,ut,ys],We=d([b("primer-input-cvv"),R()],We);var gs=g` :host { display: contents; } `;var qe=class extends ae{constructor(){super();this.config={inputType:"expire",containerSelector:"#expiry",errorName:"expiryDate-card",translations:{label:{id:"cardExpiry",defaultMessage:"Expiry Date"},placeholder:{id:"cardExpiryPlaceholder",defaultMessage:"MM/YY"},ariaLabel:{id:"cardExpiry",defaultMessage:"Expiry Date"}}};this.childUpdated()}render(){return this.renderInput()}};qe.styles=[P,ut,gs],qe=d([b("primer-input-card-expiry"),R()],qe);var vs=g` :host { display: contents; } `;var Je=class extends ae{constructor(){super();this.config={inputType:"cardholderName",containerSelector:"#cardFormName",errorName:"cardholderName",translations:{label:{id:"cardholderNameLabel",defaultMessage:"Cardholder Name"},placeholder:{id:"cardholderNamePlaceholder",defaultMessage:"Name on card"},ariaLabel:{id:"cardholderNameLabel",defaultMessage:"Cardholder Name"}},onInput:e=>this.handleInput(e)};this.childUpdated()}handleInput(e){this.cardFormContext?.setCardholderName?.(e)}render(){return this.renderInput()}};Je.styles=[P,ut,vs],Je=d([b("primer-input-card-holder-name"),R()],Je);var bs=g` :host { display: contents; } `;var G=class extends v{constructor(){super(...arguments);this._userAssignedProps=new Set;this._internalButtonText="";this.headlessInstance=null;this.clientOptions=null;this.sdkState=null;this.cardFormContext=null;this.analyticsUtils=null;this.contextEventsController=null;this.variant="primary";this.disabled=!1;this.handleClick=e=>{if(e.preventDefault(),this.disabled)return;W({eventName:"PAYMENT_SUBMITTED",paymentMethod:"PAYMENT_CARD"});let r=new CustomEvent("primer:card-submit",{bubbles:!0,composed:!0,detail:{source:"primer-card-form-submit"}});this.dispatchEvent(r)}}get buttonText(){return this._userAssignedProps.has("buttonText")?this._internalButtonText:_("pay",{id:"pay"})}set buttonText(e){let r=this.buttonText;e!==""?(this._userAssignedProps.add("buttonText"),this._internalButtonText=e):(this._userAssignedProps.delete("buttonText"),this._internalButtonText=""),this.requestUpdate("buttonText",r)}get submitButtonConfig(){return this.clientOptions?.submitButton??null}get shouldShowBuiltInButton(){return this.submitButtonConfig?.useBuiltInButton??!0}render(){if(!this.shouldShowBuiltInButton)return f;let e=this.submitButtonConfig?.amountVisible?this.headlessInstance?.getUIOrderAmount():null,r=e?` ${e}`:f,o=this.disabled||this.cardFormContext?.disabled||!1;return u`<primer-button type="submit" variant=${this.variant} ?disabled=${o} @click=${this.handleClick} .loading=${!!this.sdkState?.isProcessing} data-submit >${this.buttonText}${r}</primer-button>`}};G.styles=[P,bs],d([p({type:String})],G.prototype,"buttonText",1),d([C({context:B,subscribe:!0}),p({type:Object})],G.prototype,"headlessInstance",2),d([C({context:se,subscribe:!0}),p({type:Object})],G.prototype,"clientOptions",2),d([C({context:F,subscribe:!0}),p()],G.prototype,"sdkState",2),d([C({context:Yt,subscribe:!0}),p()],G.prototype,"cardFormContext",2),d([C({context:et,subscribe:!0}),p({attribute:!1})],G.prototype,"analyticsUtils",2),d([C({context:It,subscribe:!0}),p({attribute:!1})],G.prototype,"contextEventsController",2),d([p({type:String})],G.prototype,"variant",2),d([p({type:Boolean})],G.prototype,"disabled",2),G=d([b("primer-card-form-submit"),R()],G);var Cs=g` :host { display: flex; align-items: center; position: relative; } .network-selector { display: flex; align-items: center; cursor: pointer; background: none; padding: unset; border: none; transition: opacity var(--primer-animation-duration) var(--primer-animation-easing); outline: none; gap: var(--primer-space-xsmall); } .network-selector:hover { opacity: 0.8; } .network-selector:focus-visible { outline: 2px solid var(--primer-color-focus); border-radius: var(--primer-radius-xsmall); } .network-icon { width: var(--primer-size-large); height: var( --primer-size-medium ); /* Added explicit height to maintain aspect ratio */ object-fit: contain; } .caret { margin-left: var(--primer-space-xsmall); transition: transform var(--primer-animation-duration) var(--primer-animation-easing); color: var(--primer-color-icon-primary); } .caret.open { transform: rotate(180deg); } .dropdown { position: absolute; top: 100%; right: 0; width: max-content; min-width: calc(var(--primer-size-xxxlarge) * 3); background: var(--primer-color-gray-000); border-radius: var(--primer-radius-small); box-shadow: 0 var(--primer-space-xxsmall) var(--primer-space-large) rgba(0, 0, 0, 0.15); z-index: 10; overflow: hidden; border: 1px solid var(--primer-color-border-outlined-default); } .dropdown:not(.open) { display: none; } .dropdown.open { display: block; max-height: calc(var(--primer-size-xxxlarge) * 4); overflow-y: auto; } .network-option { display: flex; align-items: center; padding: var(--primer-space-small) var(--primer-space-medium); cursor: pointer; transition: background-color var(--primer-animation-duration) var(--primer-animation-easing); position: relative; outline: none; background-color: transparent; } /* Only apply hover effect when not in keyboard navigation mode */ .network-option:hover { background-color: var(--primer-color-gray-100); } /* Apply focused style only when the focused class is present (keyboard navigation) */ .network-option.focused { background-color: var(--primer-color-gray-100); } .network-option:focus-visible { outline: 2px solid var(--primer-color-focus); outline-offset: -2px; } .network-option-icon { width: var(--primer-size-medium); height: var(--primer-size-small); margin-right: var(--primer-space-small); object-fit: contain; } .network-name { font-size: var(--primer-typography-body-medium-size); font-family: var(--primer-typography-body-medium-font); line-height: var(--primer-typography-body-medium-line-height); letter-spacing: var(--primer-typography-body-medium-letter-spacing); white-space: nowrap; color: var(--primer-color-text-primary); flex: 1; } .checkmark { margin-left: var(--primer-space-small); color: var(--primer-color-brand); width: var(--primer-size-small); height: var(--primer-size-small); } `;var ne=class extends v{constructor(){super(...arguments);this.cardNetworks=null;this.headlessUtils=null;this.selectedCardNetwork=null;this.isDropdownOpen=!1;this.focusedNetworkIndex=0;this.isKeyboardNavigation=!1;this.buttonRef=Pt();this.dropdownRef=Pt();this.networkOptionRefs=[];this.toggleDropdown=e=>{this.isKeyboardNavigation=!1,e.stopPropagation(),this.getSelectableNetworks().length>1&&(this.isDropdownOpen=!this.isDropdownOpen,this.isDropdownOpen&&(this.focusedNetworkIndex=this.getSelectedNetworkIndex()))};this.handleClickOutside=e=>{this.isDropdownOpen&&(this.contains(e.target)||(this.isDropdownOpen=!1,this.isKeyboardNavigation=!1))};this.handleMouseMove=()=>{this.isKeyboardNavigation&&(this.isKeyboardNavigation=!1)};this.handleKeyDown=e=>{if(!(!(this.getSelectableNetworks().length>1)||!(this.contains(e.target)||this===e.target||this.isDropdownOpen&&e.target===document.body)))switch(this.isKeyboardNavigation=!0,e.key){case"ArrowDown":e.preventDefault(),this.isDropdownOpen?(this.focusedNetworkIndex=(this.focusedNetworkIndex+1)%this.getSelectableNetworks().length,this.focusNetworkOption()):(this.isDropdownOpen=!0,this.focusedNetworkIndex=this.getSelectedNetworkIndex());break;case"ArrowUp":e.preventDefault(),this.isDropdownOpen?(this.focusedNetworkIndex=(this.focusedNetworkIndex-1+this.getSelectableNetworks().length)%this.getSelectableNetworks().length,this.focusNetworkOption()):(this.isDropdownOpen=!0,this.focusedNetworkIndex=this.getSelectedNetworkIndex());break;case"Enter":case" ":this.isDropdownOpen&&this.focusedNetworkIndex>=0?(e.preventDefault(),this.selectNetwork(e,this.getSelectableNetworks()[this.focusedNetworkIndex])):!this.isDropdownOpen&&this.buttonRef.value===document.activeElement&&(e.preventDefault(),this.isDropdownOpen=!0,this.focusedNetworkIndex=this.getSelectedNetworkIndex());break;case"Escape":this.isDropdownOpen&&(e.preventDefault(),this.isDropdownOpen=!1,this.buttonRef.value?.focus());break;case"Tab":this.isDropdownOpen&&(this.isDropdownOpen=!1);break}};this.handleDocumentKeyDown=e=>{this.isDropdownOpen&&this.handleKeyDown(e)}}getNetworkIconUrl(e){return this.headlessUtils?.getCardNetworkAsset(e.network)?.cardUrl}getSelectableNetworks(){return this.cardNetworks?.selectableCardNetworks||[]}getDetectedNetwork(){return this.selectedCardNetwork??(this.cardNetworks?.detectedCardNetwork||null)}getSelectedNetworkIndex(){let e=this.getDetectedNetwork();if(!e)return 0;let r=this.getSelectableNetworks().findIndex(o=>o.network===e.network);return r>=0?r:0}selectNetwork(e,r){e.stopPropagation(),this.selectedCardNetwork=r,this.isDropdownOpen=!1,this.buttonRef.value?.focus(),this.cardNetworks&&this.dispatchEvent(new CustomEvent("network-selected",{detail:{network:r.network},bubbles:!0,composed:!0}))}focusNetworkOption(){requestAnimationFrame(()=>{this.networkOptionRefs[this.focusedNetworkIndex]&&this.networkOptionRefs[this.focusedNetworkIndex].focus()})}setNetworkOptionRef(e,r){this.networkOptionRefs[r]=e}connectedCallback(){super.connectedCallback(),setTimeout(()=>{document.addEventListener("click",this.handleClickOutside),document.addEventListener("mousemove",this.handleMouseMove),this.addEventListener("keydown",this.handleKeyDown),document.addEventListener("keydown",this.handleDocumentKeyDown)},0)}disconnectedCallback(){document.removeEventListener("click",this.handleClickOutside),document.removeEventListener("keydown",this.handleDocumentKeyDown),document.removeEventListener("mousemove",this.handleMouseMove),this.removeEventListener("keydown",this.handleKeyDown),super.disconnectedCallback()}render(){if(this.cardNetworks?.isLoading)return u`<primer-spinner size="small" compact></primer-spinner>`;let e=this.getSelectableNetworks();if(!this.getDetectedNetwork()&&e.length===0)return u`<primer-icon name="payment-card" size="sm"></primer-icon>`;let r=this.getDetectedNetwork()||(e.length>0?e[0]:null);if(!r)return u`<primer-icon name="payment-card" size="sm"></primer-icon>`;let o=e.length>1;return u`<button ${pt(this.buttonRef)} class="network-selector" @click=${this.toggleDropdown} @keydown=${a=>{(a.key===" "||a.key==="Enter")&&o&&(a.preventDefault(),this.isDropdownOpen=!this.isDropdownOpen,this.isDropdownOpen&&(this.focusedNetworkIndex=this.getSelectedNetworkIndex()))}} aria-label=${o?`Selected card network: ${r.displayName}. Click to change.`:`Card network: ${r.displayName}`} aria-expanded=${o?this.isDropdownOpen:f} aria-haspopup=${o?"true":f} aria-controls=${o?"network-dropdown":f} ><img class="network-icon" src=${this.getNetworkIconUrl(r)} alt=${r.displayName} />${V(o,()=>u`<primer-icon class="caret ${this.isDropdownOpen?"open":""}" size="sm" name="chevron-down" ></primer-icon>`,()=>f)}</button>${V(this.isDropdownOpen,()=>u`<div ${pt(this.dropdownRef)} id="network-dropdown" class="dropdown open" role="listbox" aria-label="Select card network" >${e.map((a,n)=>u`<div ${pt(l=>this.setNetworkOptionRef(l,n))} class="network-option ${this.isKeyboardNavigation&&n===this.focusedNetworkIndex?"focused":""}" @click=${l=>this.selectNetwork(l,a)} @keydown=${l=>{(l.key==="Enter"||l.key===" ")&&this.selectNetwork(l,a)}} role="option" aria-selected=${a.network===r.network} tabindex="${n===this.focusedNetworkIndex?"0":"-1"}" ><img class="network-option-icon" src=${this.getNetworkIconUrl(a)} alt=${a.displayName} /><span class="network-name">${a.displayName}</span>${V(a.network===r.network,()=>u`<primer-icon class="checkmark" name="checkmark" size="sm" ></primer-icon>`,()=>f)}</div>`)}</div>`,()=>f)} `}};ne.styles=[P,Cs],d([C({context:yr,subscribe:!0})],ne.prototype,"cardNetworks",2),d([C({context:B,subscribe:!0})],ne.prototype,"headlessUtils",2),d([M()],ne.prototype,"selectedCardNetwork",2),d([M()],ne.prototype,"isDropdownOpen",2),d([M()],ne.prototype,"focusedNetworkIndex",2),d([M()],ne.prototype,"isKeyboardNavigation",2),ne=d([b("primer-card-network-selector")],ne);var Es=g` :host { display: block; margin-top: var(--primer-space-medium); margin-bottom: var(--primer-space-medium); } .other-payment-methods-container { width: 100%; } .other-payment-methods-content { padding: var(--primer-space-medium) 0; } .primer-loader { display: flex; justify-content: center; align-items: center; } `;var ht=class extends v{constructor(){super(...arguments);this.vaultManager=null}render(){if(this.vaultManager?.isLoading)return f;let e=this.vaultManager?.showEmptyState&&this.vaultManager?.vaultedPaymentMethods.length;return!this.vaultManager||!this.vaultManager.enabled||!e?u`<slot name="other-payments"></slot>`:u`<div class="other-payment-methods-container"><primer-collapsable buttonVariant="secondary" .expanded="${this.vaultManager?.vaultedPaymentMethods.length===0}" .header="${_("navigateToPaymentMethods",{id:"navigateToPaymentMethods"})}" ><div class="other-payment-methods-content"><slot name="other-payments"></slot></div></primer-collapsable></div>`}};ht.styles=[Es],d([C({context:le,subscribe:!0}),p({type:Object,attribute:!1})],ht.prototype,"vaultManager",2),ht=d([b("primer-show-other-payments")],ht);var Ht=class extends v{render(){return u`<primer-checkout-state type="complete"></primer-checkout-state>`}};Ht=d([b("primer-checkout-complete")],Ht);var wt=class extends v{constructor(){super(...arguments);this.sdkState=null}render(){return u`<primer-checkout-state type="failure" description=${this.sdkState?.error?.message||""} ></primer-checkout-state>`}};d([C({context:F,subscribe:!0}),p()],wt.prototype,"sdkState",2),wt=d([b("primer-checkout-error")],wt);var xs=g` :host { display: block; width: 100%; } `;var Ze=class extends v{constructor(){super(...arguments);this.showProcessingErrors=!0}get shouldShowError(){return!this.sdkState||this.sdkState.isProcessing?!1:!!(this.sdkState.failure&&this.showProcessingErrors)}render(){return this.sdkState?u`<primer-error-message message="${_(this.sdkState.failure?.message??"",{id:"tokenizationError"})}" ?visible="${this.shouldShowError}" ></primer-error-message>`:f}};Ze.styles=[xs],d([C({context:F,subscribe:!0}),M()],Ze.prototype,"sdkState",2),d([p({type:Boolean,attribute:"show-processing-errors"})],Ze.prototype,"showProcessingErrors",2),Ze=d([b("primer-error-message-container")],Ze);var As=g` :host { display: contents; } .primer-main-list { display: flex; flex-direction: column; gap: var(--primer-space-small); } .primer-is-processing { opacity: 0.5; pointer-events: none; } primer-vault-manager { margin-bottom: var(--primer-space-xlarge); } `;var Ue=class extends v{constructor(){super(...arguments);this.hasAssignedContent=!1;this.onSlotChange=e=>{let o=e.target.assignedNodes({flatten:!0});this.hasAssignedContent=o.length>0,this.requestUpdate()};this.paymentMethods=null;this.sdkState=null;this.clientOptions=null}render(){return this.sdkState?.isSuccessful?u`<slot name="checkout-complete"><primer-checkout-complete></primer-checkout-complete></slot>`:u`<slot name="payments" @slotchange=${this.onSlotChange}></slot>${V(this.hasAssignedContent,()=>f,()=>u`<div class=${X({"primer-is-processing":!!this.sdkState?.isProcessing})} ><primer-vault-manager></primer-vault-manager><primer-show-other-payments><div slot="other-payments" class="primer-main-list">${this.paymentMethods?.toArray().map(e=>u`<primer-payment-method type=${e.type} ?disabled=${this.clientOptions?.disabledPayments===!0} ></primer-payment-method>`)}</div></primer-show-other-payments><primer-error-message-container></primer-error-message-container></div>`)} `}};Ue.styles=[P,As],d([C({context:tt,subscribe:!0}),p()],Ue.prototype,"paymentMethods",2),d([C({context:F,subscribe:!0}),p()],Ue.prototype,"sdkState",2),d([C({context:se,subscribe:!0}),p()],Ue.prototype,"clientOptions",2),Ue=d([b("primer-main")],Ue);function Cw(){yn(),gn()}export{he as AchPayment,Re as ApplePay,de as Button,te as CardForm,We as CardFormCVV,ne as CardFormCardNetworkSelector,Ge as CardFormCardNumber,ze as CardFormError,qe as CardFormExpiry,Je as CardFormName,G as CardFormSubmit,ce as Collapsable,Ae as Dialog,be as DynamicPayment,Le as ErrorMessage,Ze as ErrorMessageContainer,Oe as GooglePay,Br as InitializedPayments,Y as Input,Fe as InputLabel,Ie as InputWrapper,De as PayPal,Se as PaymentMethod,ve as PaymentMethodContainer,Ve as PaymentMethodContentComponent,dt as Portal,oe as PortalDialogComponent,Ht as PrimerCheckoutComplete,ue as PrimerCheckoutComponent,wt as PrimerCheckoutFailure,je as PrimerCheckoutState,Ne as PrimerIcon,Q as PrimerKlarna,Ue as PrimerMain,Ce as RedirectPayment,ht as ShowOtherPayments,ke as Spinner,K as VaultCvvInput,fe as VaultDeleteConfirmation,Ke as VaultEmptyState,$e as VaultErrorMessage,ee as VaultManager,_e as VaultManagerHeader,pe as VaultPaymentMethodItem,Z as VaultPaymentSubmit,$d as injectDarkTheme,Dd as injectLightTheme,yn as injectLoaderStyles,gn as injectThemeStyles,Cw as loadPrimer};