@vue-stripe/vue-stripe 5.1.1 → 5.2.1
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.
- package/README.md +16 -3
- package/dist/cjs/index.js +1 -1
- package/dist/es/index.js +881 -529
- package/dist/types/components/VueStripeCheckout.vue.d.ts +1 -1
- package/dist/types/components/VueStripeCheckout.vue.d.ts.map +1 -1
- package/dist/types/components/VueStripeElements.vue.d.ts +8 -1
- package/dist/types/components/VueStripeElements.vue.d.ts.map +1 -1
- package/dist/types/components/VueStripeEpsBankElement.vue.d.ts +155 -0
- package/dist/types/components/VueStripeEpsBankElement.vue.d.ts.map +1 -0
- package/dist/types/components/VueStripeIbanElement.vue.d.ts +155 -0
- package/dist/types/components/VueStripeIbanElement.vue.d.ts.map +1 -0
- package/dist/types/components/VueStripeIdealBankElement.vue.d.ts +155 -0
- package/dist/types/components/VueStripeIdealBankElement.vue.d.ts.map +1 -0
- package/dist/types/components/VueStripeP24BankElement.vue.d.ts +155 -0
- package/dist/types/components/VueStripeP24BankElement.vue.d.ts.map +1 -0
- package/dist/types/components/index.d.ts +4 -0
- package/dist/types/components/index.d.ts.map +1 -1
- package/dist/types/tsconfig.build.tsbuildinfo +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/vue-stripe.css +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -25,6 +25,8 @@
|
|
|
25
25
|
<a href="https://vuestripe.com">Website</a> |
|
|
26
26
|
<a href="https://vuestripe.com/guide/introduction">Guides</a> |
|
|
27
27
|
<a href="https://vuestripe.com/api/">API</a>
|
|
28
|
+
<a href="https://playground.vuestripe.com">Playground</a>
|
|
29
|
+
<a href="https://backend.vuestripe.com">Backend</a>
|
|
28
30
|
</p>
|
|
29
31
|
|
|
30
32
|
---
|
|
@@ -175,6 +177,15 @@ const onPaymentChange = (event) => {
|
|
|
175
177
|
| `VueStripeCardExpiryElement` | Expiry date input |
|
|
176
178
|
| `VueStripeCardCvcElement` | CVC input |
|
|
177
179
|
|
|
180
|
+
### European Regional Elements
|
|
181
|
+
|
|
182
|
+
| Component | Description |
|
|
183
|
+
|-----------|-------------|
|
|
184
|
+
| `VueStripeIbanElement` | IBAN input for SEPA payments |
|
|
185
|
+
| `VueStripeIdealBankElement` | iDEAL bank selector (Netherlands) |
|
|
186
|
+
| `VueStripeP24BankElement` | Przelewy24 bank selector (Poland) |
|
|
187
|
+
| `VueStripeEpsBankElement` | EPS bank selector (Austria) |
|
|
188
|
+
|
|
178
189
|
## Composables
|
|
179
190
|
|
|
180
191
|
| Composable | Description |
|
|
@@ -199,9 +210,11 @@ import type {
|
|
|
199
210
|
|
|
200
211
|
## Documentation
|
|
201
212
|
|
|
202
|
-
- [Website](https://vuestripe.com)
|
|
203
|
-
- [Guides](https://vuestripe.com/guide/introduction)
|
|
204
|
-
- [API Reference](https://vuestripe.com/api/)
|
|
213
|
+
- [Website](https://vuestripe.com) - Official website for Vue Stripe
|
|
214
|
+
- [Guides](https://vuestripe.com/guide/introduction) - Guides for using Vue Stripe
|
|
215
|
+
- [API Reference](https://vuestripe.com/api/) - API reference for Vue Stripe components and composables
|
|
216
|
+
- [Playground](https://playground.vuestripe.com) - Interactive playground for testing Vue Stripe components and integrations
|
|
217
|
+
- [Backend](https://backend.vuestripe.com) - Backend for the playground
|
|
205
218
|
|
|
206
219
|
## License
|
|
207
220
|
|
package/dist/cjs/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const k=require("@stripe/stripe-js"),e=require("vue-demi"),g=Symbol("stripe"),h=Symbol("stripe-elements");class v extends Error{constructor(s){super(s),this.name="VueStripeProviderError"}}class f extends Error{constructor(s){super(s),this.name="VueStripeElementsError"}}class $ extends Error{constructor(s){super(s),this.name="VueStripeLoadError"}}function P(a,s){switch(a){case"provider":return new v(s);case"elements":return new f(s);case"load":return new $(s);default:return new Error(s)}}const I={name:"vue-stripe",version:"5.1.1",url:"https://vuestripe.com",partner_id:"pp_partner_IqtOXpBSuz0IE2"},U={key:0,class:"vue-stripe-error"},M={class:"vue-stripe-error-message"},N={key:1,class:"vue-stripe-loading"},R={key:2},A=e.defineComponent({__name:"VueStripeProvider",props:{publishableKey:{},stripeKey:{},stripeAccount:{},apiVersion:{},locale:{},options:{}},emits:["load","error"],setup(a,{emit:s}){const c=a,l=s,o=e.ref(null),i=e.ref(!0),t=e.ref(null),r=c.publishableKey||c.stripeKey;if(!r)throw new v("publishableKey or stripeKey is required");const u={publishableKey:r,stripeAccount:c.stripeAccount||c.options?.stripeAccount,apiVersion:c.apiVersion||c.options?.apiVersion,locale:c.locale||c.options?.locale},p=async()=>{try{i.value=!0,t.value=null;const d={},n=c.stripeAccount||c.options?.stripeAccount,m=c.apiVersion||c.options?.apiVersion,y=c.locale||c.options?.locale;if(n&&(d.stripeAccount=n),m&&(d.apiVersion=m),y&&(d.locale=y),o.value=await k.loadStripe(r,d),!o.value)throw new v("Failed to initialize Stripe");o.value.registerAppInfo(I),l("load",o.value)}catch(d){const n=d instanceof Error?d.message:"Failed to load Stripe";t.value=n,console.error("[Vue Stripe] Initialization error:",n),l("error",d instanceof Error?d:new Error(n))}finally{i.value=!1}};return e.onMounted(()=>{p()}),e.provide("vue-stripe-config",u),e.provide(g,{stripe:o,loading:i,error:t}),(d,n)=>e.unref(t)?(e.openBlock(),e.createElementBlock("div",U,[e.renderSlot(d.$slots,"error",{error:e.unref(t)},()=>[e.createElementVNode("div",M,e.toDisplayString(e.unref(t)),1)],!0)])):e.unref(i)?(e.openBlock(),e.createElementBlock("div",N,[e.renderSlot(d.$slots,"loading",{},()=>[n[0]||(n[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading Stripe... ",-1))],!0)])):(e.openBlock(),e.createElementBlock("div",R,[e.renderSlot(d.$slots,"default",{},void 0,!0)]))}}),E=(a,s)=>{const c=a.__vccOpts||a;for(const[l,o]of s)c[l]=o;return c},j=E(A,[["__scopeId","data-v-ce126b08"]]),L={key:0,class:"vue-stripe-elements-error"},z={class:"vue-stripe-error-message"},F={key:1,class:"vue-stripe-elements-loading"},K={key:2},D=e.defineComponent({__name:"VueStripeElements",props:{clientSecret:{},mode:{},currency:{},amount:{},setupFutureUsage:{},captureMethod:{},paymentMethodTypes:{},options:{}},setup(a){const s=a,c=e.inject(g);if(!c)throw new v("VueStripeElements must be used within VueStripeProvider");const l=e.ref(null),o=e.ref(!0),i=e.ref(null),t=()=>{if(!c.stripe.value){i.value="Stripe instance not available",o.value=!1;return}try{i.value=null,o.value=!0;const r={...s.options};s.clientSecret&&(r.clientSecret=s.clientSecret),s.mode&&(r.mode=s.mode),s.currency&&(r.currency=s.currency),s.amount!==void 0&&(r.amount=s.amount),s.setupFutureUsage&&(r.setupFutureUsage=s.setupFutureUsage),s.captureMethod&&(r.captureMethod=s.captureMethod),s.paymentMethodTypes&&(r.paymentMethodTypes=s.paymentMethodTypes),l.value=c.stripe.value.elements(r),o.value=!1}catch(r){const u=r instanceof Error?r.message:"Failed to create elements";i.value=u,o.value=!1,console.error("[Vue Stripe] Elements creation error:",u)}};return e.watch(()=>c.stripe.value,r=>{r&&!l.value&&t()},{immediate:!0}),e.watch(()=>s.clientSecret,()=>{c.stripe.value&&t()}),e.watch(()=>[s.mode,s.currency,s.amount,s.setupFutureUsage],()=>{c.stripe.value&&t()}),e.onMounted(()=>{c.stripe.value&&!l.value&&t()}),e.provide(h,{elements:l,loading:o,error:i}),(r,u)=>e.unref(i)?(e.openBlock(),e.createElementBlock("div",L,[e.renderSlot(r.$slots,"error",{error:e.unref(i)},()=>[e.createElementVNode("div",z,e.toDisplayString(e.unref(i)),1)],!0)])):e.unref(o)?(e.openBlock(),e.createElementBlock("div",F,[e.renderSlot(r.$slots,"loading",{},()=>[u[0]||(u[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Initializing Elements... ",-1))],!0)])):(e.openBlock(),e.createElementBlock("div",K,[e.renderSlot(r.$slots,"default",{},void 0,!0)]))}}),q=E(D,[["__scopeId","data-v-478abfa3"]]),O={class:"vue-stripe-payment-element"},J={key:0,class:"vue-stripe-payment-element-error"},W={class:"vue-stripe-error-message"},X={key:1,class:"vue-stripe-payment-element-loader"},G=e.defineComponent({__name:"VueStripePaymentElement",props:{options:{}},emits:["ready","change","focus","blur","escape","loaderstart","loaderstop"],setup(a,{expose:s,emit:c}){const l=a,o=c,i=e.ref(),t=e.ref(null),r=e.ref(!0),u=e.ref(null),p=e.inject(h);if(!p)throw new f("VueStripePaymentElement must be used within VueStripeElements");const d=()=>{if(!p.elements.value){u.value="Elements instance not available",r.value=!1;return}if(!i.value){u.value="Mount point not available",r.value=!1;return}try{u.value=null,r.value=!0,t.value=p.elements.value.create("payment",l.options),t.value.on("ready",()=>{r.value=!1,o("ready",t.value)}),t.value.on("change",m=>{o("change",m)}),t.value.on("focus",()=>{o("focus")}),t.value.on("blur",()=>{o("blur")}),t.value.on("escape",()=>{o("escape")});const n=t.value;n.on("loaderstart",()=>{o("loaderstart")}),n.on("loaderstop",()=>{o("loaderstop")}),t.value.mount(i.value)}catch(n){const m=n instanceof Error?n.message:"Failed to create payment element";u.value=m,r.value=!1,console.error("[Vue Stripe] Payment element creation error:",m)}};return e.watch(()=>l.options,n=>{t.value&&n&&t.value.update(n)},{deep:!0}),e.watch(()=>p.elements.value,n=>{n&&i.value&&!t.value&&d()},{immediate:!0}),e.onMounted(()=>{p.elements.value&&i.value&&!t.value&&d()}),e.onUnmounted(()=>{t.value&&t.value.destroy()}),s({element:t,loading:r,error:u}),(n,m)=>(e.openBlock(),e.createElementBlock("div",O,[e.unref(u)?(e.openBlock(),e.createElementBlock("div",J,[e.renderSlot(n.$slots,"error",{error:e.unref(u)},()=>[e.createElementVNode("div",W,e.toDisplayString(e.unref(u)),1)],!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"elementRef",ref:i,class:e.normalizeClass(["vue-stripe-payment-element-mount",{"vue-stripe-payment-element-loading":e.unref(r)}])},null,2),e.unref(r)?(e.openBlock(),e.createElementBlock("div",X,[e.renderSlot(n.$slots,"loading",{},()=>[m[0]||(m[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading payment form... ",-1))],!0)])):e.createCommentVNode("",!0)]))}}),H=E(G,[["__scopeId","data-v-2477e9df"]]),Q={class:"vue-stripe-express-checkout-element"},Y={key:0,class:"vue-stripe-express-checkout-element-error"},Z={class:"vue-stripe-error-message"},ee={key:1,class:"vue-stripe-express-checkout-element-loader"},te=e.defineComponent({__name:"VueStripeExpressCheckoutElement",props:{options:{}},emits:["ready","click","confirm","cancel","shippingaddresschange","shippingratechange"],setup(a,{expose:s,emit:c}){const l=a,o=c,i=e.ref(),t=e.ref(null),r=e.ref(!0),u=e.ref(null),p=e.inject(h);if(!p)throw new f("VueStripeExpressCheckoutElement must be used within VueStripeElements");const d=()=>{if(!p.elements.value){u.value="Elements instance not available",r.value=!1;return}if(!i.value){u.value="Mount point not available",r.value=!1;return}try{u.value=null,r.value=!0,t.value=p.elements.value.create("expressCheckout",l.options),t.value.on("ready",n=>{r.value=!1,o("ready",n)}),t.value.on("click",n=>{o("click",n)}),t.value.on("confirm",n=>{o("confirm",n)}),t.value.on("cancel",()=>{o("cancel")}),t.value.on("shippingaddresschange",n=>{o("shippingaddresschange",n)}),t.value.on("shippingratechange",n=>{o("shippingratechange",n)}),t.value.mount(i.value)}catch(n){const m=n instanceof Error?n.message:"Failed to create express checkout element";u.value=m,r.value=!1,console.error("[Vue Stripe] Express checkout element creation error:",m)}};return e.watch(()=>l.options,n=>{t.value&&n&&t.value.update(n)},{deep:!0}),e.watch(()=>p.elements.value,n=>{n&&i.value&&!t.value&&d()},{immediate:!0}),e.onMounted(()=>{p.elements.value&&i.value&&!t.value&&d()}),e.onUnmounted(()=>{t.value&&t.value.destroy()}),s({element:t,loading:r,error:u}),(n,m)=>(e.openBlock(),e.createElementBlock("div",Q,[e.unref(u)?(e.openBlock(),e.createElementBlock("div",Y,[e.renderSlot(n.$slots,"error",{error:e.unref(u)},()=>[e.createElementVNode("div",Z,e.toDisplayString(e.unref(u)),1)],!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"elementRef",ref:i,class:e.normalizeClass(["vue-stripe-express-checkout-element-mount",{"vue-stripe-express-checkout-element-loading":e.unref(r)}])},null,2),e.unref(r)?(e.openBlock(),e.createElementBlock("div",ee,[e.renderSlot(n.$slots,"loading",{},()=>[m[0]||(m[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading express checkout... ",-1))],!0)])):e.createCommentVNode("",!0)]))}}),re=E(te,[["__scopeId","data-v-20294cda"]]),ne={class:"vue-stripe-card-element"},oe={key:0,class:"vue-stripe-card-element-error"},se={class:"vue-stripe-error-message"},ae={key:1,class:"vue-stripe-card-element-loader"},le=e.defineComponent({__name:"VueStripeCardElement",props:{options:{}},emits:["ready","change","focus","blur","escape"],setup(a,{expose:s,emit:c}){const l=a,o=c,i=e.ref(),t=e.ref(null),r=e.ref(!0),u=e.ref(null),p=e.inject(h);if(!p)throw new f("VueStripeCardElement must be used within VueStripeElements");const d=()=>{if(!p.elements.value){u.value="Elements instance not available",r.value=!1;return}if(!i.value){u.value="Mount point not available",r.value=!1;return}try{u.value=null,r.value=!0,t.value=p.elements.value.create("card",l.options),t.value.on("ready",()=>{r.value=!1,o("ready",t.value)}),t.value.on("change",n=>{n.error?u.value=n.error.message:u.value=null,o("change",n)}),t.value.on("focus",()=>{o("focus")}),t.value.on("blur",()=>{o("blur")}),t.value.on("escape",()=>{o("escape")}),t.value.mount(i.value)}catch(n){const m=n instanceof Error?n.message:"Failed to create card element";u.value=m,r.value=!1,console.error("[Vue Stripe] Card element creation error:",m)}};return e.watch(()=>l.options,n=>{t.value&&n&&t.value.update(n)},{deep:!0}),e.watch(()=>p.elements.value,n=>{n&&i.value&&!t.value&&d()},{immediate:!0}),e.onMounted(()=>{p.elements.value&&i.value&&!t.value&&d()}),e.onUnmounted(()=>{t.value&&t.value.destroy()}),s({element:t,loading:r,error:u,focus:()=>t.value?.focus(),blur:()=>t.value?.blur(),clear:()=>t.value?.clear()}),(n,m)=>(e.openBlock(),e.createElementBlock("div",ne,[e.unref(u)?(e.openBlock(),e.createElementBlock("div",oe,[e.renderSlot(n.$slots,"error",{error:e.unref(u)},()=>[e.createElementVNode("div",se,e.toDisplayString(e.unref(u)),1)],!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"elementRef",ref:i,class:e.normalizeClass(["vue-stripe-card-element-mount",{"vue-stripe-card-element-loading":e.unref(r)}])},null,2),e.unref(r)?(e.openBlock(),e.createElementBlock("div",ae,[e.renderSlot(n.$slots,"loading",{},()=>[m[0]||(m[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading card form... ",-1))],!0)])):e.createCommentVNode("",!0)]))}}),ie=E(le,[["__scopeId","data-v-a41a7ee5"]]);function V({elementType:a,componentName:s}){return e.defineComponent({name:s,props:{options:{type:Object,default:()=>({})}},emits:["ready","change","focus","blur","escape"],setup(c,{emit:l,expose:o}){const i=e.ref(),t=e.ref(null),r=e.ref(!0),u=e.ref(null),p=e.inject(h);if(!p)throw new f(`${s} must be used within VueStripeElements`);const d=()=>{if(!p.elements.value){u.value="Elements instance not available",r.value=!1;return}if(!i.value){u.value="Mount point not available",r.value=!1;return}try{u.value=null,r.value=!0;const n=p.elements.value.create(a,c.options);t.value=n,n.on("ready",()=>{r.value=!1,l("ready",t.value)}),n.on("change",m=>{const y=m;y.error?u.value=y.error.message:u.value=null,l("change",y)}),n.on("focus",()=>{l("focus")}),n.on("blur",()=>{l("blur")}),n.on("escape",()=>{l("escape")}),n.mount(i.value)}catch(n){const m=n instanceof Error?n.message:`Failed to create ${a} element`;u.value=m,r.value=!1,console.error(`[Vue Stripe] ${s} creation error:`,m)}};return e.watch(()=>c.options,n=>{t.value?.update&&n&&t.value.update(n)},{deep:!0}),e.watch(()=>p.elements.value,n=>{n&&i.value&&!t.value&&d()},{immediate:!0}),e.onMounted(()=>{p.elements.value&&i.value&&!t.value&&d()}),e.onUnmounted(()=>{t.value&&t.value.destroy()}),o({element:t,loading:r,error:u,focus:()=>{t.value?.focus?.()},blur:()=>{t.value?.blur?.()},clear:()=>{t.value?.clear?.()}}),()=>{const n=`vue-stripe-${a}-element`;return e.h("div",{class:n},[u.value&&e.h("div",{class:`${n}-error`},[e.h("div",{class:"vue-stripe-error-message"},u.value)]),e.h("div",{ref:i,class:{[`${n}-mount`]:!0,[`${n}-loading`]:r.value}}),r.value&&e.h("div",{class:`${n}-loader`},[e.h("div",{class:"vue-stripe-loading-message"},`Loading ${a}...`)])])}}})}const ue=V({elementType:"cardNumber",componentName:"VueStripeCardNumberElement"}),ce=V({elementType:"cardExpiry",componentName:"VueStripeCardExpiryElement"}),de=V({elementType:"cardCvc",componentName:"VueStripeCardCvcElement"}),pe=e.defineComponent({__name:"VueStripeLinkAuthenticationElement",props:{options:{}},emits:["ready","change"],setup(a,{expose:s,emit:c}){const l=a,o=c,i=e.inject(h);if(!i)throw new f("VueStripeLinkAuthenticationElement must be used within VueStripeElements");const t=e.ref(),r=e.ref(null),u=()=>{if(!(!i.elements?.value||!t.value))try{r.value=i.elements?.value.create("linkAuthentication",l.options),r.value.mount(t.value),r.value.on("ready",()=>{r.value&&o("ready",r.value)}),r.value.on("change",d=>{o("change",d)})}catch(d){console.error("[Vue Stripe] Link authentication element creation error:",d)}},p=()=>{r.value&&(r.value.unmount(),r.value.destroy(),r.value=null)};return e.watch(()=>i.elements?.value,d=>{d&&t.value&&!r.value&&u()},{immediate:!0}),e.watch(()=>l.options,d=>{r.value&&d&&typeof r.value.update=="function"&&r.value.update(d)},{deep:!0}),e.onMounted(()=>{i.elements?.value&&t.value&&u()}),e.onUnmounted(()=>{p()}),s({element:r,focus:()=>r.value?.focus(),blur:()=>r.value?.blur(),clear:()=>r.value?.clear()}),(d,n)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"elementRef",ref:t,class:"vue-stripe-link-auth-element"},null,512))}}),me=E(pe,[["__scopeId","data-v-b79076eb"]]),ve=e.defineComponent({name:"VueStripeAddressElement",props:{options:{type:Object,default:()=>({mode:"shipping"})}},emits:["ready","change","blur","focus","escape","loadError"],setup(a,{emit:s,expose:c}){const l=e.ref(),o=e.ref(null),i=e.inject(h);if(!i)throw new f("VueStripeAddressElement must be used within VueStripeElements");const t=()=>{s("ready")},r=S=>{s("change",S)},u=()=>{s("blur")},p=()=>{s("focus")},d=()=>{s("escape")},n=S=>{s("loadError",S)},m=()=>{!i.elements.value||!l.value||(o.value=i.elements.value.create("address",a.options),o.value.mount(l.value),o.value.on("ready",t),o.value.on("change",r),o.value.on("blur",u),o.value.on("focus",p),o.value.on("escape",d),o.value.on("loaderror",n))},y=()=>{o.value&&o.value.update(a.options)},T=()=>{o.value&&(o.value.off("ready",t),o.value.off("change",r),o.value.off("blur",u),o.value.off("focus",p),o.value.off("escape",d),o.value.off("loaderror",n),o.value.destroy(),o.value=null)},b=async()=>{if(!o.value)throw new f("Address element not mounted");return o.value.getValue()},_=()=>{o.value?.focus()},C=()=>{o.value?.clear()};return e.onMounted(()=>{m()}),e.onBeforeUnmount(()=>{T()}),e.watch(()=>a.options,()=>{y()},{deep:!0}),c({element:o,getValue:b,focus:_,clear:C}),{addressRef:l,element:o,getValue:b,focus:_,clear:C}}}),fe={ref:"addressRef"};function he(a,s,c,l,o,i){return e.openBlock(),e.createElementBlock("div",fe,null,512)}const ye=E(ve,[["render",he]]);function w(){const a=e.inject(g);if(!a)throw new v("useStripe must be called within a VueStripeProvider component");return{stripe:e.readonly(a.stripe),loading:e.readonly(a.loading),error:e.readonly(a.error),initialize:async()=>{}}}const Ee=["disabled"],ge=e.defineComponent({__name:"VueStripeCheckout",props:{sessionId:{},sessionUrl:{},priceId:{},mode:{default:"payment"},successUrl:{},cancelUrl:{},customerEmail:{},clientReferenceId:{},submitType:{},buttonText:{default:"Checkout"},loadingText:{default:"Redirecting..."},disabled:{type:Boolean,default:!1},buttonClass:{default:"vue-stripe-checkout-button"}},emits:["checkout","success","error","before-redirect"],setup(a,{expose:s,emit:c}){const l=a,o=c,{stripe:i}=w(),t=e.ref(!1),r=e.useSlots(),u=e.computed(()=>!!r.default),p=()=>i.value!==null&&typeof i.value.redirectToCheckout=="function",d=async()=>{t.value=!0,o("checkout");try{if(l.sessionUrl){o("before-redirect",{url:l.sessionUrl}),window.location.replace(l.sessionUrl),o("success");return}if(l.sessionId){if(!p())throw new v("redirectToCheckout is not available. This method was removed in @stripe/stripe-js v8.x. Use sessionUrl prop with the checkout session URL instead.");if(!i.value)throw new v("Stripe not initialized");const n=await i.value.redirectToCheckout({sessionId:l.sessionId});if(n.error)throw new v(n.error.message||"Redirect to checkout failed");o("success");return}if(l.priceId){if(!p())throw new v("Price-based checkout using redirectToCheckout is not available in @stripe/stripe-js v8.x. Create a Checkout Session on your server and use sessionUrl prop instead.");if(!i.value)throw new v("Stripe not initialized");console.warn("[Vue Stripe] Price-based checkout is deprecated in v8.x. Create a Checkout Session on your server and use sessionUrl prop instead.");const n=await i.value.redirectToCheckout({lineItems:[{price:l.priceId,quantity:1}],mode:l.mode,successUrl:l.successUrl||window.location.origin+"/success",cancelUrl:l.cancelUrl||window.location.origin+"/cancel",customerEmail:l.customerEmail,clientReferenceId:l.clientReferenceId,submitType:l.submitType});if(n.error)throw new v(n.error.message||"Redirect to checkout failed");o("success");return}throw new v("Either sessionUrl, sessionId, or priceId is required. For @stripe/stripe-js v8.x, use sessionUrl.")}catch(n){const m=n instanceof Error?n:new Error("Checkout failed");o("error",m),console.error("[Vue Stripe] Checkout error:",m)}finally{t.value=!1}};return s({checkout:d,loading:t}),(n,m)=>e.unref(u)?(e.openBlock(),e.createElementBlock("span",{key:0,onClick:d,class:"vue-stripe-checkout-wrapper"},[e.renderSlot(n.$slots,"default",{checkout:d,loading:e.unref(t),disabled:a.disabled},void 0,!0)])):(e.openBlock(),e.createElementBlock("button",{key:1,disabled:e.unref(t)||a.disabled,class:e.normalizeClass(a.buttonClass),onClick:d},[e.unref(t)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[m[0]||(m[0]=e.createElementVNode("span",{class:"vue-stripe-loading-spinner"},null,-1)),e.createTextVNode(" "+e.toDisplayString(a.loadingText),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(a.buttonText),1)],64))],10,Ee))}}),Se=E(ge,[["__scopeId","data-v-639387e4"]]);function ke(){const a=e.inject(g),s=e.inject(h);if(!a)throw new v("usePaymentIntent must be called within a VueStripeProvider component");const c=e.ref(!1),l=e.ref(null);return{confirmPayment:async i=>{if(!a.stripe.value)return l.value="Stripe not initialized",{error:{message:"Stripe not initialized"}};c.value=!0,l.value=null;try{const t=i.elements??s?.elements.value;if(t&&!i.skipSubmit){const{error:u}=await t.submit();if(u)return l.value=u.message||"Form validation failed",{error:u}}const r=await a.stripe.value.confirmPayment({elements:t??void 0,clientSecret:i.clientSecret,confirmParams:i.confirmParams??{},redirect:i.redirect??"if_required"});return r.error&&(l.value=r.error.message||"Payment confirmation failed"),r}catch(t){const r=t instanceof Error?t.message:"Payment confirmation failed";return l.value=r,{error:{message:r}}}finally{c.value=!1}},loading:e.readonly(c),error:e.readonly(l)}}function Ve(){const a=e.inject(g),s=e.inject(h);if(!a)throw new v("useSetupIntent must be called within a VueStripeProvider component");const c=e.ref(!1),l=e.ref(null);return{confirmSetup:async i=>{if(!a.stripe.value)return l.value="Stripe not initialized",{error:{message:"Stripe not initialized"}};c.value=!0,l.value=null;try{const t=i.elements??s?.elements.value;if(t&&!i.skipSubmit){const{error:u}=await t.submit();if(u)return l.value=u.message||"Form validation failed",{error:u}}const r=await a.stripe.value.confirmSetup({elements:t??void 0,clientSecret:i.clientSecret,confirmParams:i.confirmParams??{},redirect:i.redirect??"if_required"});return r.error&&(l.value=r.error.message||"Setup confirmation failed"),r}catch(t){const r=t instanceof Error?t.message:"Setup confirmation failed";return l.value=r,{error:{message:r}}}finally{c.value=!1}},loading:e.readonly(c),error:e.readonly(l)}}function B(){const{stripe:a}=w(),s=e.ref(!1),c=e.ref(null),l=()=>a.value!==null&&typeof a.value.redirectToCheckout=="function";return{redirectToCheckout:async t=>{s.value=!0,c.value=null;try{if("url"in t&&t.url){window.location.replace(t.url);return}const r=t;if(!l())throw new v("redirectToCheckout is not available. This method was removed in @stripe/stripe-js v8.x. Create a Checkout Session on your server and use redirectToUrl() or pass { url } instead.");if(!a.value)throw new v("Stripe not initialized");console.warn("[Vue Stripe] Legacy redirectToCheckout is deprecated in @stripe/stripe-js v8.x. Use redirectToUrl() with a session URL from your server instead.");const u=await a.value.redirectToCheckout(r);if(u.error){const p=u.error.message||"Checkout redirect failed";throw c.value=p,new v(p)}}catch(r){const u=r instanceof Error?r.message:"Checkout redirect failed";throw c.value=u,r}finally{s.value=!1}},redirectToUrl:t=>{s.value=!0,c.value=null,window.location.replace(t)},loading:e.readonly(s),error:e.readonly(c)}}function x(){const a=e.inject(h);if(!a)throw new f("Elements context not found. Make sure to wrap your component with VueStripeElements.");const s=async()=>a.elements.value?a.elements.value.submit():{error:{message:"Elements not initialized"}};return{elements:e.readonly(a.elements),submit:s,loading:e.readonly(a.loading),error:e.readonly(a.error)}}function we(a){return{install(s){s.provide("vue-stripe-config",a);let c=null;s.provide("vue-stripe-global",{get stripe(){if(!c){const l={};a.stripeAccount&&(l.stripeAccount=a.stripeAccount),a.apiVersion&&(l.apiVersion=a.apiVersion),a.locale&&(l.locale=a.locale),c=k.loadStripe(a.publishableKey,l).then(o=>(o&&o.registerAppInfo(I),o))}return c}})}}}Object.defineProperty(exports,"loadStripe",{enumerable:!0,get:()=>k.loadStripe});exports.VueStripeAddressElement=ye;exports.VueStripeCardCvcElement=de;exports.VueStripeCardElement=ie;exports.VueStripeCardExpiryElement=ce;exports.VueStripeCardNumberElement=ue;exports.VueStripeCheckout=Se;exports.VueStripeElements=q;exports.VueStripeElementsError=f;exports.VueStripeExpressCheckoutElement=re;exports.VueStripeLinkAuthenticationElement=me;exports.VueStripeLoadError=$;exports.VueStripePaymentElement=H;exports.VueStripeProvider=j;exports.VueStripeProviderError=v;exports.createVueStripe=we;exports.createVueStripeError=P;exports.useCheckout=B;exports.useElements=x;exports.usePaymentIntent=ke;exports.useSetupIntent=Ve;exports.useStripe=w;exports.useStripeCheckout=B;exports.useStripeElements=x;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("@stripe/stripe-js"),e=require("vue-demi"),g=Symbol("stripe"),h=Symbol("stripe-elements");class v extends Error{constructor(p){super(p),this.name="VueStripeProviderError"}}class f extends Error{constructor(p){super(p),this.name="VueStripeElementsError"}}class B extends Error{constructor(p){super(p),this.name="VueStripeLoadError"}}function M(u,p){switch(u){case"provider":return new v(p);case"elements":return new f(p);case"load":return new B(p);default:return new Error(p)}}const $={name:"vue-stripe",version:"5.2.1",url:"https://vuestripe.com",partner_id:"pp_partner_IqtOXpBSuz0IE2"},x={key:0,class:"vue-stripe-error"},U={class:"vue-stripe-error-message"},T={key:1,class:"vue-stripe-loading"},R={key:2},A=e.defineComponent({__name:"VueStripeProvider",props:{publishableKey:{},stripeKey:{},stripeAccount:{},apiVersion:{},locale:{},options:{}},emits:["load","error"],setup(u,{emit:p}){const d=u,l=p,a=e.ref(null),s=e.ref(!0),t=e.ref(null),n=d.publishableKey||d.stripeKey;if(!n)throw new v("publishableKey or stripeKey is required");const o={publishableKey:n,stripeAccount:d.stripeAccount||d.options?.stripeAccount,apiVersion:d.apiVersion||d.options?.apiVersion,locale:d.locale||d.options?.locale},i=async()=>{try{s.value=!0,t.value=null;const m={},r=d.stripeAccount||d.options?.stripeAccount,c=d.apiVersion||d.options?.apiVersion,k=d.locale||d.options?.locale;if(r&&(m.stripeAccount=r),c&&(m.apiVersion=c),k&&(m.locale=k),a.value=await S.loadStripe(n,m),!a.value)throw new v("Failed to initialize Stripe");a.value.registerAppInfo($),l("load",a.value)}catch(m){const r=m instanceof Error?m.message:"Failed to load Stripe";t.value=r,console.error("[Vue Stripe] Initialization error:",r),l("error",m instanceof Error?m:new Error(r))}finally{s.value=!1}};return e.onMounted(()=>{i()}),e.provide("vue-stripe-config",o),e.provide(g,{stripe:a,loading:s,error:t}),(m,r)=>e.unref(t)?(e.openBlock(),e.createElementBlock("div",x,[e.renderSlot(m.$slots,"error",{error:e.unref(t)},()=>[e.createElementVNode("div",U,e.toDisplayString(e.unref(t)),1)],!0)])):e.unref(s)?(e.openBlock(),e.createElementBlock("div",T,[e.renderSlot(m.$slots,"loading",{},()=>[r[0]||(r[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading Stripe... ",-1))],!0)])):(e.openBlock(),e.createElementBlock("div",R,[e.renderSlot(m.$slots,"default",{},void 0,!0)]))}}),E=(u,p)=>{const d=u.__vccOpts||u;for(const[l,a]of p)d[l]=a;return d},j=E(A,[["__scopeId","data-v-ce126b08"]]),L={key:0,class:"vue-stripe-elements-error"},z={class:"vue-stripe-error-message"},F={key:1,class:"vue-stripe-elements-loading"},D={key:2},K=e.defineComponent({__name:"VueStripeElements",props:{clientSecret:{},mode:{},currency:{},amount:{},setupFutureUsage:{},captureMethod:{},paymentMethodTypes:{},options:{}},emits:["ready","error"],setup(u,{emit:p}){const d=p,l=u,a=e.inject(g);if(!a)throw new v("VueStripeElements must be used within VueStripeProvider");const s=e.ref(null),t=e.ref(!0),n=e.ref(null),o=()=>{if(!a.stripe.value){n.value="Stripe instance not available",t.value=!1;return}try{n.value=null,t.value=!0;const i={...l.options};l.clientSecret&&(i.clientSecret=l.clientSecret),l.mode&&(i.mode=l.mode),l.currency&&(i.currency=l.currency),l.amount!==void 0&&(i.amount=l.amount),l.setupFutureUsage&&(i.setupFutureUsage=l.setupFutureUsage),l.captureMethod&&(i.captureMethod=l.captureMethod),l.paymentMethodTypes&&(i.paymentMethodTypes=l.paymentMethodTypes),s.value=a.stripe.value.elements(i),t.value=!1,e.nextTick(()=>{d("ready",s.value)})}catch(i){const m=i instanceof Error?i.message:"Failed to create elements";n.value=m,t.value=!1,console.error("[Vue Stripe] Elements creation error:",m),d("error",m)}};return e.watch(()=>a.stripe.value,i=>{i&&!s.value&&o()},{immediate:!0}),e.watch(()=>l.clientSecret,()=>{a.stripe.value&&o()}),e.watch(()=>[l.mode,l.currency,l.amount,l.setupFutureUsage],()=>{a.stripe.value&&o()}),e.onMounted(()=>{a.stripe.value&&!s.value&&o()}),e.provide(h,{elements:s,loading:t,error:n}),(i,m)=>e.unref(n)?(e.openBlock(),e.createElementBlock("div",L,[e.renderSlot(i.$slots,"error",{error:e.unref(n)},()=>[e.createElementVNode("div",z,e.toDisplayString(e.unref(n)),1)],!0)])):e.unref(t)?(e.openBlock(),e.createElementBlock("div",F,[e.renderSlot(i.$slots,"loading",{},()=>[m[0]||(m[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Initializing Elements... ",-1))],!0)])):(e.openBlock(),e.createElementBlock("div",D,[e.renderSlot(i.$slots,"default",{},void 0,!0)]))}}),q=E(K,[["__scopeId","data-v-c54b80f7"]]),J={class:"vue-stripe-payment-element"},O={key:0,class:"vue-stripe-payment-element-error"},W={class:"vue-stripe-error-message"},X={key:1,class:"vue-stripe-payment-element-loader"},G=e.defineComponent({__name:"VueStripePaymentElement",props:{options:{}},emits:["ready","change","focus","blur","escape","loaderstart","loaderstop"],setup(u,{expose:p,emit:d}){const l=u,a=d,s=e.ref(),t=e.ref(null),n=e.ref(!0),o=e.ref(null),i=e.inject(h);if(!i)throw new f("VueStripePaymentElement must be used within VueStripeElements");const m=()=>{if(!i.elements.value){o.value="Elements instance not available",n.value=!1;return}if(!s.value){o.value="Mount point not available",n.value=!1;return}try{o.value=null,n.value=!0,t.value=i.elements.value.create("payment",l.options),t.value.on("ready",()=>{n.value=!1,a("ready",t.value)}),t.value.on("change",c=>{a("change",c)}),t.value.on("focus",()=>{a("focus")}),t.value.on("blur",()=>{a("blur")}),t.value.on("escape",()=>{a("escape")});const r=t.value;r.on("loaderstart",()=>{a("loaderstart")}),r.on("loaderstop",()=>{a("loaderstop")}),t.value.mount(s.value)}catch(r){const c=r instanceof Error?r.message:"Failed to create payment element";o.value=c,n.value=!1,console.error("[Vue Stripe] Payment element creation error:",c)}};return e.watch(()=>l.options,r=>{t.value&&r&&t.value.update(r)},{deep:!0}),e.watch(()=>i.elements.value,r=>{r&&s.value&&!t.value&&m()},{immediate:!0}),e.onMounted(()=>{i.elements.value&&s.value&&!t.value&&m()}),e.onUnmounted(()=>{t.value&&t.value.destroy()}),p({element:t,loading:n,error:o}),(r,c)=>(e.openBlock(),e.createElementBlock("div",J,[e.unref(o)?(e.openBlock(),e.createElementBlock("div",O,[e.renderSlot(r.$slots,"error",{error:e.unref(o)},()=>[e.createElementVNode("div",W,e.toDisplayString(e.unref(o)),1)],!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"elementRef",ref:s,class:e.normalizeClass(["vue-stripe-payment-element-mount",{"vue-stripe-payment-element-loading":e.unref(n)}])},null,2),e.unref(n)?(e.openBlock(),e.createElementBlock("div",X,[e.renderSlot(r.$slots,"loading",{},()=>[c[0]||(c[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading payment form... ",-1))],!0)])):e.createCommentVNode("",!0)]))}}),H=E(G,[["__scopeId","data-v-2477e9df"]]),Q={class:"vue-stripe-express-checkout-element"},Y={key:0,class:"vue-stripe-express-checkout-element-error"},Z={class:"vue-stripe-error-message"},ee={key:1,class:"vue-stripe-express-checkout-element-loader"},te=e.defineComponent({__name:"VueStripeExpressCheckoutElement",props:{options:{}},emits:["ready","click","confirm","cancel","shippingaddresschange","shippingratechange"],setup(u,{expose:p,emit:d}){const l=u,a=d,s=e.ref(),t=e.ref(null),n=e.ref(!0),o=e.ref(null),i=e.inject(h);if(!i)throw new f("VueStripeExpressCheckoutElement must be used within VueStripeElements");const m=()=>{if(!i.elements.value){o.value="Elements instance not available",n.value=!1;return}if(!s.value){o.value="Mount point not available",n.value=!1;return}try{o.value=null,n.value=!0,t.value=i.elements.value.create("expressCheckout",l.options),t.value.on("ready",r=>{n.value=!1,a("ready",r)}),t.value.on("click",r=>{a("click",r)}),t.value.on("confirm",r=>{a("confirm",r)}),t.value.on("cancel",()=>{a("cancel")}),t.value.on("shippingaddresschange",r=>{a("shippingaddresschange",r)}),t.value.on("shippingratechange",r=>{a("shippingratechange",r)}),t.value.mount(s.value)}catch(r){const c=r instanceof Error?r.message:"Failed to create express checkout element";o.value=c,n.value=!1,console.error("[Vue Stripe] Express checkout element creation error:",c)}};return e.watch(()=>l.options,r=>{t.value&&r&&t.value.update(r)},{deep:!0}),e.watch(()=>i.elements.value,r=>{r&&s.value&&!t.value&&m()},{immediate:!0}),e.onMounted(()=>{i.elements.value&&s.value&&!t.value&&m()}),e.onUnmounted(()=>{t.value&&t.value.destroy()}),p({element:t,loading:n,error:o}),(r,c)=>(e.openBlock(),e.createElementBlock("div",Q,[e.unref(o)?(e.openBlock(),e.createElementBlock("div",Y,[e.renderSlot(r.$slots,"error",{error:e.unref(o)},()=>[e.createElementVNode("div",Z,e.toDisplayString(e.unref(o)),1)],!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"elementRef",ref:s,class:e.normalizeClass(["vue-stripe-express-checkout-element-mount",{"vue-stripe-express-checkout-element-loading":e.unref(n)}])},null,2),e.unref(n)?(e.openBlock(),e.createElementBlock("div",ee,[e.renderSlot(r.$slots,"loading",{},()=>[c[0]||(c[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading express checkout... ",-1))],!0)])):e.createCommentVNode("",!0)]))}}),re=E(te,[["__scopeId","data-v-20294cda"]]),ne={class:"vue-stripe-card-element"},oe={key:0,class:"vue-stripe-card-element-error"},ae={class:"vue-stripe-error-message"},le={key:1,class:"vue-stripe-card-element-loader"},se=e.defineComponent({__name:"VueStripeCardElement",props:{options:{}},emits:["ready","change","focus","blur","escape"],setup(u,{expose:p,emit:d}){const l=u,a=d,s=e.ref(),t=e.ref(null),n=e.ref(!0),o=e.ref(null),i=e.inject(h);if(!i)throw new f("VueStripeCardElement must be used within VueStripeElements");const m=()=>{if(!i.elements.value){o.value="Elements instance not available",n.value=!1;return}if(!s.value){o.value="Mount point not available",n.value=!1;return}try{o.value=null,n.value=!0,t.value=i.elements.value.create("card",l.options),t.value.on("ready",()=>{n.value=!1,a("ready",t.value)}),t.value.on("change",r=>{r.error?o.value=r.error.message:o.value=null,a("change",r)}),t.value.on("focus",()=>{a("focus")}),t.value.on("blur",()=>{a("blur")}),t.value.on("escape",()=>{a("escape")}),t.value.mount(s.value)}catch(r){const c=r instanceof Error?r.message:"Failed to create card element";o.value=c,n.value=!1,console.error("[Vue Stripe] Card element creation error:",c)}};return e.watch(()=>l.options,r=>{t.value&&r&&t.value.update(r)},{deep:!0}),e.watch(()=>i.elements.value,r=>{r&&s.value&&!t.value&&m()},{immediate:!0}),e.onMounted(()=>{i.elements.value&&s.value&&!t.value&&m()}),e.onUnmounted(()=>{t.value&&t.value.destroy()}),p({element:t,loading:n,error:o,focus:()=>t.value?.focus(),blur:()=>t.value?.blur(),clear:()=>t.value?.clear()}),(r,c)=>(e.openBlock(),e.createElementBlock("div",ne,[e.unref(o)?(e.openBlock(),e.createElementBlock("div",oe,[e.renderSlot(r.$slots,"error",{error:e.unref(o)},()=>[e.createElementVNode("div",ae,e.toDisplayString(e.unref(o)),1)],!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"elementRef",ref:s,class:e.normalizeClass(["vue-stripe-card-element-mount",{"vue-stripe-card-element-loading":e.unref(n)}])},null,2),e.unref(n)?(e.openBlock(),e.createElementBlock("div",le,[e.renderSlot(r.$slots,"loading",{},()=>[c[0]||(c[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading card form... ",-1))],!0)])):e.createCommentVNode("",!0)]))}}),ue=E(se,[["__scopeId","data-v-a41a7ee5"]]);function b({elementType:u,componentName:p}){return e.defineComponent({name:p,props:{options:{type:Object,default:()=>({})}},emits:["ready","change","focus","blur","escape"],setup(d,{emit:l,expose:a}){const s=e.ref(),t=e.ref(null),n=e.ref(!0),o=e.ref(null),i=e.inject(h);if(!i)throw new f(`${p} must be used within VueStripeElements`);const m=()=>{if(!i.elements.value){o.value="Elements instance not available",n.value=!1;return}if(!s.value){o.value="Mount point not available",n.value=!1;return}try{o.value=null,n.value=!0;const r=i.elements.value.create(u,d.options);t.value=r,r.on("ready",()=>{n.value=!1,l("ready",t.value)}),r.on("change",c=>{const k=c;k.error?o.value=k.error.message:o.value=null,l("change",k)}),r.on("focus",()=>{l("focus")}),r.on("blur",()=>{l("blur")}),r.on("escape",()=>{l("escape")}),r.mount(s.value)}catch(r){const c=r instanceof Error?r.message:`Failed to create ${u} element`;o.value=c,n.value=!1,console.error(`[Vue Stripe] ${p} creation error:`,c)}};return e.watch(()=>d.options,r=>{t.value?.update&&r&&t.value.update(r)},{deep:!0}),e.watch(()=>i.elements.value,r=>{r&&s.value&&!t.value&&m()},{immediate:!0}),e.onMounted(()=>{i.elements.value&&s.value&&!t.value&&m()}),e.onUnmounted(()=>{t.value&&t.value.destroy()}),a({element:t,loading:n,error:o,focus:()=>{t.value?.focus?.()},blur:()=>{t.value?.blur?.()},clear:()=>{t.value?.clear?.()}}),()=>{const r=`vue-stripe-${u}-element`;return e.h("div",{class:r},[o.value&&e.h("div",{class:`${r}-error`},[e.h("div",{class:"vue-stripe-error-message"},o.value)]),e.h("div",{ref:s,class:{[`${r}-mount`]:!0,[`${r}-loading`]:n.value}}),n.value&&e.h("div",{class:`${r}-loader`},[e.h("div",{class:"vue-stripe-loading-message"},`Loading ${u}...`)])])}}})}const ie=b({elementType:"cardNumber",componentName:"VueStripeCardNumberElement"}),ce=b({elementType:"cardExpiry",componentName:"VueStripeCardExpiryElement"}),de=b({elementType:"cardCvc",componentName:"VueStripeCardCvcElement"}),me=e.defineComponent({__name:"VueStripeLinkAuthenticationElement",props:{options:{}},emits:["ready","change"],setup(u,{expose:p,emit:d}){const l=u,a=d,s=e.inject(h);if(!s)throw new f("VueStripeLinkAuthenticationElement must be used within VueStripeElements");const t=e.ref(),n=e.ref(null),o=()=>{if(!(!s.elements?.value||!t.value))try{n.value=s.elements?.value.create("linkAuthentication",l.options),n.value.mount(t.value),n.value.on("ready",()=>{n.value&&a("ready",n.value)}),n.value.on("change",m=>{a("change",m)})}catch(m){console.error("[Vue Stripe] Link authentication element creation error:",m)}},i=()=>{n.value&&(n.value.unmount(),n.value.destroy(),n.value=null)};return e.watch(()=>s.elements?.value,m=>{m&&t.value&&!n.value&&o()},{immediate:!0}),e.watch(()=>l.options,m=>{n.value&&m&&typeof n.value.update=="function"&&n.value.update(m)},{deep:!0}),e.onMounted(()=>{s.elements?.value&&t.value&&o()}),e.onUnmounted(()=>{i()}),p({element:n,focus:()=>n.value?.focus(),blur:()=>n.value?.blur(),clear:()=>n.value?.clear()}),(m,r)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"elementRef",ref:t,class:"vue-stripe-link-auth-element"},null,512))}}),pe=E(me,[["__scopeId","data-v-b79076eb"]]),ve=e.defineComponent({name:"VueStripeAddressElement",props:{options:{type:Object,default:()=>({mode:"shipping"})}},emits:["ready","change","blur","focus","escape","loadError"],setup(u,{emit:p,expose:d}){const l=e.ref(),a=e.ref(null),s=e.inject(h);if(!s)throw new f("VueStripeAddressElement must be used within VueStripeElements");const t=()=>{p("ready")},n=y=>{p("change",y)},o=()=>{p("blur")},i=()=>{p("focus")},m=()=>{p("escape")},r=y=>{p("loadError",y)},c=()=>{!s.elements.value||!l.value||(a.value=s.elements.value.create("address",u.options),a.value.mount(l.value),a.value.on("ready",t),a.value.on("change",n),a.value.on("blur",o),a.value.on("focus",i),a.value.on("escape",m),a.value.on("loaderror",r))},k=()=>{a.value&&a.value.update(u.options)},P=()=>{a.value&&(a.value.off("ready",t),a.value.off("change",n),a.value.off("blur",o),a.value.off("focus",i),a.value.off("escape",m),a.value.off("loaderror",r),a.value.destroy(),a.value=null)},_=async()=>{if(!a.value)throw new f("Address element not mounted");return a.value.getValue()},w=()=>{a.value?.focus()},C=()=>{a.value?.clear()};return e.onMounted(()=>{c()}),e.onBeforeUnmount(()=>{P()}),e.watch(()=>u.options,()=>{k()},{deep:!0}),d({element:a,getValue:_,focus:w,clear:C}),{addressRef:l,element:a,getValue:_,focus:w,clear:C}}}),fe={ref:"addressRef"};function he(u,p,d,l,a,s){return e.openBlock(),e.createElementBlock("div",fe,null,512)}const Ee=E(ve,[["render",he]]),ke={class:"vue-stripe-iban-element"},ge={key:0,class:"vue-stripe-iban-element-error"},ye={class:"vue-stripe-error-message"},Se={key:1,class:"vue-stripe-iban-element-loader"},be=e.defineComponent({__name:"VueStripeIbanElement",props:{options:{}},emits:["ready","change","focus","blur","escape"],setup(u,{expose:p,emit:d}){const l=u,a=d,s=e.ref(),t=e.ref(null),n=e.ref(!0),o=e.ref(null),i=e.inject(h);if(!i)throw new f("VueStripeIbanElement must be used within VueStripeElements");const m=()=>{if(!i.elements.value){o.value="Elements instance not available",n.value=!1;return}if(!s.value){o.value="Mount point not available",n.value=!1;return}try{o.value=null,n.value=!0;const r={supportedCountries:["SEPA"],...l.options};t.value=i.elements.value.create("iban",r),t.value.on("ready",()=>{n.value=!1,a("ready",t.value)}),t.value.on("change",c=>{c.error?o.value=c.error.message:o.value=null,a("change",c)}),t.value.on("focus",()=>{a("focus")}),t.value.on("blur",()=>{a("blur")}),t.value.on("escape",()=>{a("escape")}),t.value.mount(s.value)}catch(r){const c=r instanceof Error?r.message:"Failed to create IBAN element";o.value=c,n.value=!1,console.error("[Vue Stripe] IBAN element creation error:",c)}};return e.watch(()=>l.options,r=>{t.value&&r&&t.value.update(r)},{deep:!0}),e.watch(()=>i.elements.value,r=>{r&&s.value&&!t.value&&m()},{immediate:!0}),e.onMounted(()=>{i.elements.value&&s.value&&!t.value&&m()}),e.onUnmounted(()=>{t.value&&t.value.destroy()}),p({element:t,loading:n,error:o,focus:()=>t.value?.focus(),blur:()=>t.value?.blur(),clear:()=>t.value?.clear()}),(r,c)=>(e.openBlock(),e.createElementBlock("div",ke,[e.unref(o)?(e.openBlock(),e.createElementBlock("div",ge,[e.renderSlot(r.$slots,"error",{error:e.unref(o)},()=>[e.createElementVNode("div",ye,e.toDisplayString(e.unref(o)),1)],!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"elementRef",ref:s,class:e.normalizeClass(["vue-stripe-iban-element-mount",{"vue-stripe-iban-element-loading":e.unref(n)}])},null,2),e.unref(n)?(e.openBlock(),e.createElementBlock("div",Se,[e.renderSlot(r.$slots,"loading",{},()=>[c[0]||(c[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading IBAN form... ",-1))],!0)])):e.createCommentVNode("",!0)]))}}),Ve=E(be,[["__scopeId","data-v-f8ffb457"]]),_e={class:"vue-stripe-ideal-bank-element"},we={key:0,class:"vue-stripe-ideal-bank-element-error"},Ce={class:"vue-stripe-error-message"},Be={key:1,class:"vue-stripe-ideal-bank-element-loader"},$e=e.defineComponent({__name:"VueStripeIdealBankElement",props:{options:{}},emits:["ready","change","focus","blur","escape"],setup(u,{expose:p,emit:d}){const l=u,a=d,s=e.ref(),t=e.ref(null),n=e.ref(!0),o=e.ref(null),i=e.inject(h);if(!i)throw new f("VueStripeIdealBankElement must be used within VueStripeElements");const m=()=>{if(!i.elements.value){o.value="Elements instance not available",n.value=!1;return}if(!s.value){o.value="Mount point not available",n.value=!1;return}try{o.value=null,n.value=!0,t.value=i.elements.value.create("idealBank",l.options),t.value.on("ready",()=>{n.value=!1,a("ready",t.value)}),t.value.on("change",r=>{r.error?o.value=r.error.message:o.value=null,a("change",r)}),t.value.on("focus",()=>{a("focus")}),t.value.on("blur",()=>{a("blur")}),t.value.on("escape",()=>{a("escape")}),t.value.mount(s.value)}catch(r){const c=r instanceof Error?r.message:"Failed to create iDEAL bank element";o.value=c,n.value=!1,console.error("[Vue Stripe] iDEAL bank element creation error:",c)}};return e.watch(()=>l.options,r=>{t.value&&r&&t.value.update(r)},{deep:!0}),e.watch(()=>i.elements.value,r=>{r&&s.value&&!t.value&&m()},{immediate:!0}),e.onMounted(()=>{i.elements.value&&s.value&&!t.value&&m()}),e.onUnmounted(()=>{t.value&&t.value.destroy()}),p({element:t,loading:n,error:o,focus:()=>t.value?.focus(),blur:()=>t.value?.blur(),clear:()=>t.value?.clear()}),(r,c)=>(e.openBlock(),e.createElementBlock("div",_e,[e.unref(o)?(e.openBlock(),e.createElementBlock("div",we,[e.renderSlot(r.$slots,"error",{error:e.unref(o)},()=>[e.createElementVNode("div",Ce,e.toDisplayString(e.unref(o)),1)],!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"elementRef",ref:s,class:e.normalizeClass(["vue-stripe-ideal-bank-element-mount",{"vue-stripe-ideal-bank-element-loading":e.unref(n)}])},null,2),e.unref(n)?(e.openBlock(),e.createElementBlock("div",Be,[e.renderSlot(r.$slots,"loading",{},()=>[c[0]||(c[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading iDEAL bank selector... ",-1))],!0)])):e.createCommentVNode("",!0)]))}}),Ie=E($e,[["__scopeId","data-v-3d7f7e08"]]),Ne={class:"vue-stripe-p24-bank-element"},Pe={key:0,class:"vue-stripe-p24-bank-element-error"},Me={class:"vue-stripe-error-message"},xe={key:1,class:"vue-stripe-p24-bank-element-loader"},Ue=e.defineComponent({__name:"VueStripeP24BankElement",props:{options:{}},emits:["ready","change","focus","blur","escape"],setup(u,{expose:p,emit:d}){const l=u,a=d,s=e.ref(),t=e.ref(null),n=e.ref(!0),o=e.ref(null),i=e.inject(h);if(!i)throw new f("VueStripeP24BankElement must be used within VueStripeElements");const m=()=>{if(!i.elements.value){o.value="Elements instance not available",n.value=!1;return}if(!s.value){o.value="Mount point not available",n.value=!1;return}try{o.value=null,n.value=!0,t.value=i.elements.value.create("p24Bank",l.options||{}),t.value.on("ready",()=>{n.value=!1,a("ready",t.value)}),t.value.on("change",r=>{r.error?o.value=r.error.message:o.value=null,a("change",r)}),t.value.on("focus",()=>{a("focus")}),t.value.on("blur",()=>{a("blur")}),t.value.on("escape",()=>{a("escape")}),t.value.mount(s.value)}catch(r){const c=r instanceof Error?r.message:"Failed to create P24 bank element";o.value=c,n.value=!1,console.error("[Vue Stripe] P24 bank element creation error:",c)}};return e.watch(()=>l.options,r=>{t.value&&r&&t.value.update(r)},{deep:!0}),e.watch(()=>i.elements.value,r=>{r&&s.value&&!t.value&&m()},{immediate:!0}),e.onMounted(()=>{i.elements.value&&s.value&&!t.value&&m()}),e.onUnmounted(()=>{t.value&&t.value.destroy()}),p({element:t,loading:n,error:o,focus:()=>t.value?.focus(),blur:()=>t.value?.blur(),clear:()=>t.value?.clear()}),(r,c)=>(e.openBlock(),e.createElementBlock("div",Ne,[e.unref(o)?(e.openBlock(),e.createElementBlock("div",Pe,[e.renderSlot(r.$slots,"error",{error:e.unref(o)},()=>[e.createElementVNode("div",Me,e.toDisplayString(e.unref(o)),1)],!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"elementRef",ref:s,class:e.normalizeClass(["vue-stripe-p24-bank-element-mount",{"vue-stripe-p24-bank-element-loading":e.unref(n)}])},null,2),e.unref(n)?(e.openBlock(),e.createElementBlock("div",xe,[e.renderSlot(r.$slots,"loading",{},()=>[c[0]||(c[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading Przelewy24 bank selector... ",-1))],!0)])):e.createCommentVNode("",!0)]))}}),Te=E(Ue,[["__scopeId","data-v-29dc009e"]]),Re={class:"vue-stripe-eps-bank-element"},Ae={key:0,class:"vue-stripe-eps-bank-element-error"},je={class:"vue-stripe-error-message"},Le={key:1,class:"vue-stripe-eps-bank-element-loader"},ze=e.defineComponent({__name:"VueStripeEpsBankElement",props:{options:{}},emits:["ready","change","focus","blur","escape"],setup(u,{expose:p,emit:d}){const l=u,a=d,s=e.ref(),t=e.ref(null),n=e.ref(!0),o=e.ref(null),i=e.inject(h);if(!i)throw new f("VueStripeEpsBankElement must be used within VueStripeElements");const m=()=>{if(!i.elements.value){o.value="Elements instance not available",n.value=!1;return}if(!s.value){o.value="Mount point not available",n.value=!1;return}try{o.value=null,n.value=!0,t.value=i.elements.value.create("epsBank",l.options||{}),t.value.on("ready",()=>{n.value=!1,a("ready",t.value)}),t.value.on("change",r=>{r.error?o.value=r.error.message:o.value=null,a("change",r)}),t.value.on("focus",()=>{a("focus")}),t.value.on("blur",()=>{a("blur")}),t.value.on("escape",()=>{a("escape")}),t.value.mount(s.value)}catch(r){const c=r instanceof Error?r.message:"Failed to create EPS bank element";o.value=c,n.value=!1,console.error("[Vue Stripe] EPS bank element creation error:",c)}};return e.watch(()=>l.options,r=>{t.value&&r&&t.value.update(r)},{deep:!0}),e.watch(()=>i.elements.value,r=>{r&&s.value&&!t.value&&m()},{immediate:!0}),e.onMounted(()=>{i.elements.value&&s.value&&!t.value&&m()}),e.onUnmounted(()=>{t.value&&t.value.destroy()}),p({element:t,loading:n,error:o,focus:()=>t.value?.focus(),blur:()=>t.value?.blur(),clear:()=>t.value?.clear()}),(r,c)=>(e.openBlock(),e.createElementBlock("div",Re,[e.unref(o)?(e.openBlock(),e.createElementBlock("div",Ae,[e.renderSlot(r.$slots,"error",{error:e.unref(o)},()=>[e.createElementVNode("div",je,e.toDisplayString(e.unref(o)),1)],!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"elementRef",ref:s,class:e.normalizeClass(["vue-stripe-eps-bank-element-mount",{"vue-stripe-eps-bank-element-loading":e.unref(n)}])},null,2),e.unref(n)?(e.openBlock(),e.createElementBlock("div",Le,[e.renderSlot(r.$slots,"loading",{},()=>[c[0]||(c[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading EPS bank selector... ",-1))],!0)])):e.createCommentVNode("",!0)]))}}),Fe=E(ze,[["__scopeId","data-v-27c62f72"]]);function V(){const u=e.inject(g);if(!u)throw new v("useStripe must be called within a VueStripeProvider component");return{stripe:e.readonly(u.stripe),loading:e.readonly(u.loading),error:e.readonly(u.error),initialize:async()=>{}}}const De=["disabled"],Ke=e.defineComponent({__name:"VueStripeCheckout",props:{sessionId:{},sessionUrl:{},priceId:{},mode:{default:"payment"},successUrl:{},cancelUrl:{},customerEmail:{},clientReferenceId:{},submitType:{},buttonText:{default:"Checkout"},loadingText:{default:"Redirecting..."},disabled:{type:Boolean,default:!1},buttonClass:{default:"vue-stripe-checkout-button"}},emits:["checkout","success","error","before-redirect"],setup(u,{expose:p,emit:d}){const l=u,a=d,{stripe:s}=V(),t=e.ref(!1),n=e.useSlots(),o=e.computed(()=>!!n.default),i=()=>s.value!==null&&typeof s.value.redirectToCheckout=="function",m=async()=>{t.value=!0,a("checkout");try{if(l.sessionUrl){a("before-redirect",{url:l.sessionUrl}),window.location.replace(l.sessionUrl),a("success");return}if(l.sessionId){if(!i())throw new v("redirectToCheckout is not available. This method was removed in @stripe/stripe-js v8.x. Use sessionUrl prop with the checkout session URL instead.");if(!s.value)throw new v("Stripe not initialized");const r=await s.value.redirectToCheckout({sessionId:l.sessionId});if(r.error)throw new v(r.error.message||"Redirect to checkout failed");a("success");return}if(l.priceId){if(!i())throw new v("Price-based checkout using redirectToCheckout is not available in @stripe/stripe-js v8.x. Create a Checkout Session on your server and use sessionUrl prop instead.");if(!s.value)throw new v("Stripe not initialized");console.warn("[Vue Stripe] Price-based checkout is deprecated in v8.x. Create a Checkout Session on your server and use sessionUrl prop instead.");const r=await s.value.redirectToCheckout({lineItems:[{price:l.priceId,quantity:1}],mode:l.mode,successUrl:l.successUrl||window.location.origin+"/success",cancelUrl:l.cancelUrl||window.location.origin+"/cancel",customerEmail:l.customerEmail,clientReferenceId:l.clientReferenceId,submitType:l.submitType});if(r.error)throw new v(r.error.message||"Redirect to checkout failed");a("success");return}throw new v("Either sessionUrl, sessionId, or priceId is required. For @stripe/stripe-js v8.x, use sessionUrl.")}catch(r){const c=r instanceof Error?r:new Error("Checkout failed");a("error",c),console.error("[Vue Stripe] Checkout error:",c)}finally{t.value=!1}};return p({checkout:m,loading:t}),(r,c)=>e.unref(o)?(e.openBlock(),e.createElementBlock("span",{key:0,onClick:m,class:"vue-stripe-checkout-wrapper"},[e.renderSlot(r.$slots,"default",{checkout:m,loading:e.unref(t),disabled:u.disabled},void 0,!0)])):(e.openBlock(),e.createElementBlock("button",{key:1,disabled:e.unref(t)||u.disabled,class:e.normalizeClass(u.buttonClass),onClick:m},[e.unref(t)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[c[0]||(c[0]=e.createElementVNode("span",{class:"vue-stripe-loading-spinner"},null,-1)),e.createTextVNode(" "+e.toDisplayString(u.loadingText),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(u.buttonText),1)],64))],10,De))}}),qe=E(Ke,[["__scopeId","data-v-639387e4"]]);function Je(){const u=e.inject(g),p=e.inject(h);if(!u)throw new v("usePaymentIntent must be called within a VueStripeProvider component");const d=e.ref(!1),l=e.ref(null);return{confirmPayment:async s=>{if(!u.stripe.value)return l.value="Stripe not initialized",{error:{message:"Stripe not initialized"}};d.value=!0,l.value=null;try{const t=s.elements??p?.elements.value;if(t&&!s.skipSubmit){const{error:o}=await t.submit();if(o)return l.value=o.message||"Form validation failed",{error:o}}const n=await u.stripe.value.confirmPayment({elements:t??void 0,clientSecret:s.clientSecret,confirmParams:s.confirmParams??{},redirect:s.redirect??"if_required"});return n.error&&(l.value=n.error.message||"Payment confirmation failed"),n}catch(t){const n=t instanceof Error?t.message:"Payment confirmation failed";return l.value=n,{error:{message:n}}}finally{d.value=!1}},loading:e.readonly(d),error:e.readonly(l)}}function Oe(){const u=e.inject(g),p=e.inject(h);if(!u)throw new v("useSetupIntent must be called within a VueStripeProvider component");const d=e.ref(!1),l=e.ref(null);return{confirmSetup:async s=>{if(!u.stripe.value)return l.value="Stripe not initialized",{error:{message:"Stripe not initialized"}};d.value=!0,l.value=null;try{const t=s.elements??p?.elements.value;if(t&&!s.skipSubmit){const{error:o}=await t.submit();if(o)return l.value=o.message||"Form validation failed",{error:o}}const n=await u.stripe.value.confirmSetup({elements:t??void 0,clientSecret:s.clientSecret,confirmParams:s.confirmParams??{},redirect:s.redirect??"if_required"});return n.error&&(l.value=n.error.message||"Setup confirmation failed"),n}catch(t){const n=t instanceof Error?t.message:"Setup confirmation failed";return l.value=n,{error:{message:n}}}finally{d.value=!1}},loading:e.readonly(d),error:e.readonly(l)}}function I(){const{stripe:u}=V(),p=e.ref(!1),d=e.ref(null),l=()=>u.value!==null&&typeof u.value.redirectToCheckout=="function";return{redirectToCheckout:async t=>{p.value=!0,d.value=null;try{if("url"in t&&t.url){window.location.replace(t.url);return}const n=t;if(!l())throw new v("redirectToCheckout is not available. This method was removed in @stripe/stripe-js v8.x. Create a Checkout Session on your server and use redirectToUrl() or pass { url } instead.");if(!u.value)throw new v("Stripe not initialized");console.warn("[Vue Stripe] Legacy redirectToCheckout is deprecated in @stripe/stripe-js v8.x. Use redirectToUrl() with a session URL from your server instead.");const o=await u.value.redirectToCheckout(n);if(o.error){const i=o.error.message||"Checkout redirect failed";throw d.value=i,new v(i)}}catch(n){const o=n instanceof Error?n.message:"Checkout redirect failed";throw d.value=o,n}finally{p.value=!1}},redirectToUrl:t=>{p.value=!0,d.value=null,window.location.replace(t)},loading:e.readonly(p),error:e.readonly(d)}}function N(){const u=e.inject(h);if(!u)throw new f("Elements context not found. Make sure to wrap your component with VueStripeElements.");const p=async()=>u.elements.value?u.elements.value.submit():{error:{message:"Elements not initialized"}};return{elements:e.readonly(u.elements),submit:p,loading:e.readonly(u.loading),error:e.readonly(u.error)}}function We(u){return{install(p){p.provide("vue-stripe-config",u);let d=null;p.provide("vue-stripe-global",{get stripe(){if(!d){const l={};u.stripeAccount&&(l.stripeAccount=u.stripeAccount),u.apiVersion&&(l.apiVersion=u.apiVersion),u.locale&&(l.locale=u.locale),d=S.loadStripe(u.publishableKey,l).then(a=>(a&&a.registerAppInfo($),a))}return d}})}}}Object.defineProperty(exports,"loadStripe",{enumerable:!0,get:()=>S.loadStripe});exports.VueStripeAddressElement=Ee;exports.VueStripeCardCvcElement=de;exports.VueStripeCardElement=ue;exports.VueStripeCardExpiryElement=ce;exports.VueStripeCardNumberElement=ie;exports.VueStripeCheckout=qe;exports.VueStripeElements=q;exports.VueStripeElementsError=f;exports.VueStripeEpsBankElement=Fe;exports.VueStripeExpressCheckoutElement=re;exports.VueStripeIbanElement=Ve;exports.VueStripeIdealBankElement=Ie;exports.VueStripeLinkAuthenticationElement=pe;exports.VueStripeLoadError=B;exports.VueStripeP24BankElement=Te;exports.VueStripePaymentElement=H;exports.VueStripeProvider=j;exports.VueStripeProviderError=v;exports.createVueStripe=We;exports.createVueStripeError=M;exports.useCheckout=I;exports.useElements=N;exports.usePaymentIntent=Je;exports.useSetupIntent=Oe;exports.useStripe=V;exports.useStripeCheckout=I;exports.useStripeElements=N;
|