@vue-stripe/vue-stripe 5.7.0 → 6.0.0-beta.0
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/CHANGELOG.md +5 -1
- package/README.md +83 -115
- package/dist/cjs/index.js +1 -1
- package/dist/es/index.js +1498 -1714
- package/dist/types/components/VueStripeAddressElement.d.ts +16 -0
- package/dist/types/components/VueStripeAuBankAccountElement.d.ts +6 -0
- package/dist/types/components/VueStripeCardCvcElement.d.ts +6 -0
- package/dist/types/components/VueStripeCardElement.d.ts +11 -0
- package/dist/types/components/VueStripeCardExpiryElement.d.ts +6 -0
- package/dist/types/components/VueStripeCardNumberElement.d.ts +6 -0
- package/dist/types/components/VueStripeCheckout.d.ts +65 -0
- package/dist/types/components/VueStripeCheckoutElementsProvider.d.ts +81 -0
- package/dist/types/components/VueStripeCheckoutForm.d.ts +29 -0
- package/dist/types/components/VueStripeCheckoutFormProvider.d.ts +102 -0
- package/dist/types/components/VueStripeContactDetailsElement.d.ts +13 -0
- package/dist/types/components/VueStripeCurrencySelectorElement.d.ts +17 -0
- package/dist/types/components/VueStripeElements.d.ts +122 -0
- package/dist/types/components/VueStripeEmbeddedCheckout.d.ts +62 -0
- package/dist/types/components/VueStripeExpressCheckoutElement.d.ts +26 -0
- package/dist/types/components/VueStripeFinancialAccountDisclosure.d.ts +8 -0
- package/dist/types/components/VueStripeIbanElement.d.ts +6 -0
- package/dist/types/components/VueStripeIssuingAddToWalletButtonElement.d.ts +21 -0
- package/dist/types/components/VueStripeIssuingCardCopyButtonElement.d.ts +14 -0
- package/dist/types/components/VueStripeIssuingCardCvcDisplayElement.d.ts +10 -0
- package/dist/types/components/VueStripeIssuingCardExpiryDisplayElement.d.ts +10 -0
- package/dist/types/components/VueStripeIssuingCardNumberDisplayElement.d.ts +13 -0
- package/dist/types/components/VueStripeIssuingCardPinDisplayElement.d.ts +10 -0
- package/dist/types/components/VueStripeIssuingDisclosure.d.ts +8 -0
- package/dist/types/components/VueStripeLinkAuthenticationElement.d.ts +9 -0
- package/dist/types/components/VueStripeLinkSignupElement.d.ts +18 -0
- package/dist/types/components/VueStripePaymentElement.d.ts +18 -0
- package/dist/types/components/VueStripePaymentMethodMessagingElement.d.ts +12 -0
- package/dist/types/components/VueStripePricingTable.d.ts +50 -0
- package/dist/types/components/VueStripeProvider.d.ts +111 -0
- package/dist/types/components/VueStripeTaxIdElement.d.ts +16 -0
- package/dist/types/components/VueStripeTermsElement.d.ts +18 -0
- package/dist/types/components/VueStripeTreasuryDisclosure.d.ts +8 -0
- package/dist/types/components/index.d.ts +35 -21
- package/dist/types/composables/confirm/index.d.ts +46 -0
- package/dist/types/composables/index.d.ts +12 -1
- package/dist/types/composables/useCheckoutForm.d.ts +22 -0
- package/dist/types/composables/useCheckoutSession.d.ts +7 -7
- package/dist/types/composables/useCreateConfirmationToken.d.ts +27 -0
- package/dist/types/composables/useCreatePaymentMethod.d.ts +1 -2
- package/dist/types/composables/useCreateToken.d.ts +14 -0
- package/dist/types/composables/useEphemeralKeyNonce.d.ts +12 -0
- package/dist/types/composables/useFinancialConnections.d.ts +25 -0
- package/dist/types/composables/useHandleCardAction.d.ts +13 -0
- package/dist/types/composables/useHandleNextAction.d.ts +1 -2
- package/dist/types/composables/useIdentity.d.ts +22 -0
- package/dist/types/composables/usePaymentIntent.d.ts +1 -2
- package/dist/types/composables/usePaymentRequest.d.ts +34 -0
- package/dist/types/composables/useRadarSession.d.ts +12 -0
- package/dist/types/composables/useSetupIntent.d.ts +1 -2
- package/dist/types/composables/useStripe.d.ts +2 -3
- package/dist/types/composables/useStripeCheckout.d.ts +13 -49
- package/dist/types/composables/useStripeElements.d.ts +1 -2
- package/dist/types/composables/useVerifyMicrodepositsForPayment.d.ts +14 -0
- package/dist/types/composables/useVerifyMicrodepositsForSetup.d.ts +14 -0
- package/dist/types/index.d.ts +8 -5
- package/dist/types/plugin.d.ts +8 -11
- package/dist/types/types/index.d.ts +253 -41
- package/dist/types/utils/constants.d.ts +0 -1
- package/dist/types/utils/disclosure.d.ts +57 -0
- package/dist/types/utils/element-factory.d.ts +12 -28
- package/dist/types/utils/element-render.d.ts +13 -0
- package/dist/types/utils/element-types.d.ts +72 -0
- package/dist/types/utils/errors.d.ts +0 -5
- package/dist/types/utils/h.d.ts +13 -0
- package/dist/types/utils/injection-keys.d.ts +18 -4
- package/dist/types/utils/load-stripe.d.ts +19 -0
- package/dist/types/utils/method-factory.d.ts +46 -0
- package/dist/types/utils/status-shell.d.ts +12 -0
- package/dist/umd/index.js +1 -1
- package/dist/vue-stripe.css +2 -1
- package/package.json +28 -24
- package/dist/types/components/VueStripeAddressElement.vue.d.ts +0 -105
- package/dist/types/components/VueStripeAddressElement.vue.d.ts.map +0 -1
- package/dist/types/components/VueStripeAuBankAccountElement.vue.d.ts +0 -155
- package/dist/types/components/VueStripeAuBankAccountElement.vue.d.ts.map +0 -1
- package/dist/types/components/VueStripeCardCvcElement.vue.d.ts +0 -24
- package/dist/types/components/VueStripeCardCvcElement.vue.d.ts.map +0 -1
- package/dist/types/components/VueStripeCardElement.vue.d.ts +0 -197
- package/dist/types/components/VueStripeCardElement.vue.d.ts.map +0 -1
- package/dist/types/components/VueStripeCardExpiryElement.vue.d.ts +0 -24
- package/dist/types/components/VueStripeCardExpiryElement.vue.d.ts.map +0 -1
- package/dist/types/components/VueStripeCardNumberElement.vue.d.ts +0 -24
- package/dist/types/components/VueStripeCardNumberElement.vue.d.ts.map +0 -1
- package/dist/types/components/VueStripeCheckout.vue.d.ts +0 -74
- package/dist/types/components/VueStripeCheckout.vue.d.ts.map +0 -1
- package/dist/types/components/VueStripeCheckoutProvider.vue.d.ts +0 -359
- package/dist/types/components/VueStripeCheckoutProvider.vue.d.ts.map +0 -1
- package/dist/types/components/VueStripeElements.vue.d.ts +0 -110
- package/dist/types/components/VueStripeElements.vue.d.ts.map +0 -1
- package/dist/types/components/VueStripeEpsBankElement.vue.d.ts +0 -155
- package/dist/types/components/VueStripeEpsBankElement.vue.d.ts.map +0 -1
- package/dist/types/components/VueStripeExpressCheckoutElement.vue.d.ts +0 -210
- package/dist/types/components/VueStripeExpressCheckoutElement.vue.d.ts.map +0 -1
- package/dist/types/components/VueStripeFpxBankElement.vue.d.ts +0 -163
- package/dist/types/components/VueStripeFpxBankElement.vue.d.ts.map +0 -1
- package/dist/types/components/VueStripeIbanElement.vue.d.ts +0 -155
- package/dist/types/components/VueStripeIbanElement.vue.d.ts.map +0 -1
- package/dist/types/components/VueStripeIdealBankElement.vue.d.ts +0 -155
- package/dist/types/components/VueStripeIdealBankElement.vue.d.ts.map +0 -1
- package/dist/types/components/VueStripeLinkAuthenticationElement.vue.d.ts +0 -195
- package/dist/types/components/VueStripeLinkAuthenticationElement.vue.d.ts.map +0 -1
- package/dist/types/components/VueStripeP24BankElement.vue.d.ts +0 -155
- package/dist/types/components/VueStripeP24BankElement.vue.d.ts.map +0 -1
- package/dist/types/components/VueStripePaymentElement.vue.d.ts +0 -214
- package/dist/types/components/VueStripePaymentElement.vue.d.ts.map +0 -1
- package/dist/types/components/VueStripePaymentMethodMessagingElement.vue.d.ts +0 -31
- package/dist/types/components/VueStripePaymentMethodMessagingElement.vue.d.ts.map +0 -1
- package/dist/types/components/VueStripePricingTable.vue.d.ts +0 -32
- package/dist/types/components/VueStripePricingTable.vue.d.ts.map +0 -1
- package/dist/types/components/VueStripeProvider.vue.d.ts +0 -42
- package/dist/types/components/VueStripeProvider.vue.d.ts.map +0 -1
- package/dist/types/components/index.d.ts.map +0 -1
- package/dist/types/composables/index.d.ts.map +0 -1
- package/dist/types/composables/useCheckoutSession.d.ts.map +0 -1
- package/dist/types/composables/useCreatePaymentMethod.d.ts.map +0 -1
- package/dist/types/composables/useHandleNextAction.d.ts.map +0 -1
- package/dist/types/composables/usePaymentIntent.d.ts.map +0 -1
- package/dist/types/composables/useSetupIntent.d.ts.map +0 -1
- package/dist/types/composables/useStripe.d.ts.map +0 -1
- package/dist/types/composables/useStripeCheckout.d.ts.map +0 -1
- package/dist/types/composables/useStripeElements.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/plugin.d.ts.map +0 -1
- package/dist/types/tsconfig.build.tsbuildinfo +0 -1
- package/dist/types/types/index.d.ts.map +0 -1
- package/dist/types/utils/constants.d.ts.map +0 -1
- package/dist/types/utils/element-factory.d.ts.map +0 -1
- package/dist/types/utils/errors.d.ts.map +0 -1
- package/dist/types/utils/injection-keys.d.ts.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
# @vue-stripe/vue-stripe
|
|
2
2
|
|
|
3
3
|
> **Release notes for v5.4.0 and later are published on [GitHub Releases](https://github.com/vue-stripe/vue-stripe/releases).**
|
|
4
|
-
> The entries
|
|
4
|
+
> The 6.0.0-beta.0 entry points to the v6 notes; the older entries are kept for historical reference (through v5.3.0).
|
|
5
|
+
|
|
6
|
+
## 6.0.0-beta.0 (pre-release)
|
|
7
|
+
|
|
8
|
+
First public beta of v6, published under the `beta` dist-tag (`npm install @vue-stripe/vue-stripe@beta`). It contains the whole v6 line: the Stripe.js 10 upgrade and the Stripe.js 10 parity work (Embedded Checkout, Checkout Form SDK, Issuing, Contact Details / Terms / Link Signup, disclosures, the `useConfirm*` and token composables, `usePaymentRequest`, `createVueStripe()` as a global provider). Breaking changes: [Migrating from v5 to v6](https://vuestripe.com/guide/migration-v6). Notes: the [v6.0.0-beta.0 GitHub Release](https://github.com/vue-stripe/vue-stripe/releases/tag/v6.0.0-beta.0).
|
|
5
9
|
|
|
6
10
|
## 5.3.0
|
|
7
11
|
|
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
<p align="center">
|
|
20
20
|
<strong>Vue.js library for Stripe Checkout and Elements</strong><br/>
|
|
21
|
-
Vue 3.
|
|
21
|
+
Vue 3 and Vue 2.7, TypeScript-first
|
|
22
22
|
</p>
|
|
23
23
|
|
|
24
24
|
<p align="center">
|
|
@@ -37,164 +37,132 @@
|
|
|
37
37
|
|
|
38
38
|
Thank you for your patience! This is an early release of the new Vue Stripe. As with any early release, you may encounter bugs. If you find any issues or have suggestions, please [create an issue](https://github.com/vue-stripe/vue-stripe/issues) or [submit a pull request](https://github.com/vue-stripe/vue-stripe/pulls). Your contributions are greatly appreciated!
|
|
39
39
|
|
|
40
|
+
## Requirements
|
|
41
|
+
|
|
42
|
+
| Package | Version |
|
|
43
|
+
|---------|---------|
|
|
44
|
+
| `vue` | `^2.7.0 \|\| ^3.0.0` (Vue 2.6 is not supported) |
|
|
45
|
+
| `@stripe/stripe-js` | `^10.0.0` (Stripe.js Endive) |
|
|
46
|
+
|
|
47
|
+
Upgrading from v5? Read [Migrating from v5 to v6](https://vuestripe.com/guide/migration-v6).
|
|
48
|
+
|
|
40
49
|
## Installation
|
|
41
50
|
|
|
42
51
|
```bash
|
|
43
52
|
npm install @vue-stripe/vue-stripe @stripe/stripe-js
|
|
44
53
|
```
|
|
45
54
|
|
|
55
|
+
Import the component styles once, for example in `main.ts`:
|
|
56
|
+
|
|
57
|
+
```ts
|
|
58
|
+
import '@vue-stripe/vue-stripe/style.css'
|
|
59
|
+
```
|
|
60
|
+
|
|
46
61
|
## Basic Usage
|
|
47
62
|
|
|
63
|
+
Composables such as `usePaymentIntent()` read the Stripe context, so call them in a component rendered **inside** `VueStripeElements`:
|
|
64
|
+
|
|
48
65
|
```vue
|
|
66
|
+
<!-- CheckoutPage.vue -->
|
|
49
67
|
<template>
|
|
50
68
|
<VueStripeProvider :publishable-key="publishableKey">
|
|
51
|
-
<VueStripeElements>
|
|
52
|
-
<VueStripePaymentElement
|
|
53
|
-
<
|
|
69
|
+
<VueStripeElements :client-secret="clientSecret">
|
|
70
|
+
<VueStripePaymentElement />
|
|
71
|
+
<PayButton :client-secret="clientSecret" />
|
|
54
72
|
</VueStripeElements>
|
|
55
73
|
</VueStripeProvider>
|
|
56
74
|
</template>
|
|
57
75
|
|
|
58
76
|
<script setup lang="ts">
|
|
59
|
-
import {
|
|
60
|
-
|
|
61
|
-
VueStripeElements,
|
|
62
|
-
VueStripePaymentElement,
|
|
63
|
-
usePaymentIntent
|
|
64
|
-
} from '@vue-stripe/vue-stripe'
|
|
77
|
+
import { VueStripeProvider, VueStripeElements, VueStripePaymentElement } from '@vue-stripe/vue-stripe'
|
|
78
|
+
import PayButton from './PayButton.vue'
|
|
65
79
|
|
|
66
80
|
const publishableKey = 'pk_test_...'
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
const processPayment = async () => {
|
|
70
|
-
const result = await confirmPayment(clientSecret)
|
|
71
|
-
// Handle result
|
|
72
|
-
}
|
|
81
|
+
const clientSecret = 'pi_..._secret_...' // from your server
|
|
73
82
|
</script>
|
|
74
83
|
```
|
|
75
84
|
|
|
76
|
-
## Components
|
|
77
|
-
|
|
78
|
-
### Provider Components
|
|
79
|
-
|
|
80
|
-
| Component | Description |
|
|
81
|
-
|-----------|-------------|
|
|
82
|
-
| `VueStripeProvider` | Root component that loads Stripe.js and provides context |
|
|
83
|
-
| `VueStripeElements` | Creates an Elements instance and provides it to child components |
|
|
84
|
-
|
|
85
|
-
### Payment Components
|
|
86
|
-
|
|
87
|
-
| Component | Description |
|
|
88
|
-
|-----------|-------------|
|
|
89
|
-
| `VueStripePaymentElement` | Modern payment element supporting 40+ payment methods |
|
|
90
|
-
| `VueStripeExpressCheckoutElement` | Wallet payments (Apple Pay, Google Pay, etc.) |
|
|
91
|
-
| `VueStripeLinkAuthenticationElement` | Link authentication element |
|
|
92
|
-
| `VueStripeAddressElement` | Address collection with Google Maps autocomplete |
|
|
93
|
-
| `VueStripeCheckout` | Embedded Stripe Checkout |
|
|
94
|
-
|
|
95
|
-
### VueStripeAddressElement
|
|
96
|
-
|
|
97
|
-
Collect shipping or billing addresses with Google Maps autocomplete:
|
|
98
|
-
|
|
99
85
|
```vue
|
|
86
|
+
<!-- PayButton.vue -->
|
|
100
87
|
<template>
|
|
101
|
-
<
|
|
102
|
-
|
|
103
|
-
:options="{ mode: 'shipping' }"
|
|
104
|
-
@change="onAddressChange"
|
|
105
|
-
/>
|
|
106
|
-
<button @click="validateAddress">Validate</button>
|
|
88
|
+
<button :disabled="loading" @click="pay">Pay now</button>
|
|
89
|
+
<p v-if="error">{{ error }}</p>
|
|
107
90
|
</template>
|
|
108
91
|
|
|
109
|
-
<script setup>
|
|
110
|
-
import {
|
|
92
|
+
<script setup lang="ts">
|
|
93
|
+
import { usePaymentIntent } from '@vue-stripe/vue-stripe'
|
|
111
94
|
|
|
112
|
-
const
|
|
95
|
+
const props = defineProps<{ clientSecret: string }>()
|
|
96
|
+
const { confirmPayment, loading, error } = usePaymentIntent()
|
|
113
97
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
}
|
|
98
|
+
const pay = () =>
|
|
99
|
+
confirmPayment({
|
|
100
|
+
clientSecret: props.clientSecret,
|
|
101
|
+
confirmParams: { return_url: `${window.location.origin}/complete` }
|
|
102
|
+
})
|
|
121
103
|
</script>
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
### VueStripeLinkAuthenticationElement
|
|
125
|
-
|
|
126
|
-
Enable Stripe Link for faster checkout by collecting and authenticating the customer's email.
|
|
127
|
-
|
|
128
|
-
> **Note:** This element collects email only and **must be paired with `VueStripePaymentElement`** for a complete checkout flow. It cannot process payments on its own.
|
|
129
|
-
|
|
130
|
-
```vue
|
|
131
|
-
<template>
|
|
132
|
-
<VueStripeProvider :publishable-key="publishableKey">
|
|
133
|
-
<VueStripeElements :client-secret="clientSecret">
|
|
134
|
-
<!-- Step 1: Email + Link authentication -->
|
|
135
|
-
<VueStripeLinkAuthenticationElement @change="onEmailChange" />
|
|
136
|
-
|
|
137
|
-
<!-- Step 2: Payment methods (auto-fills if Link authenticated) -->
|
|
138
|
-
<VueStripePaymentElement @change="onPaymentChange" />
|
|
139
|
-
|
|
140
|
-
<button :disabled="!canPay">Pay Now</button>
|
|
141
|
-
</VueStripeElements>
|
|
142
|
-
</VueStripeProvider>
|
|
143
|
-
</template>
|
|
144
104
|
|
|
145
|
-
|
|
146
|
-
import { ref, computed } from 'vue'
|
|
147
|
-
import {
|
|
148
|
-
VueStripeProvider,
|
|
149
|
-
VueStripeElements,
|
|
150
|
-
VueStripeLinkAuthenticationElement,
|
|
151
|
-
StripePaymentElement
|
|
152
|
-
} from '@vue-stripe/vue-stripe'
|
|
105
|
+
## Components
|
|
153
106
|
|
|
154
|
-
|
|
155
|
-
const paymentComplete = ref(false)
|
|
156
|
-
const canPay = computed(() => emailComplete.value && paymentComplete.value)
|
|
107
|
+
### Providers
|
|
157
108
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
}
|
|
109
|
+
| Component | Description |
|
|
110
|
+
|-----------|-------------|
|
|
111
|
+
| `VueStripeProvider` | Loads Stripe.js and provides the Stripe instance |
|
|
112
|
+
| `VueStripeElements` | Creates an Elements group (client secret or mode/currency/amount) |
|
|
113
|
+
| `VueStripeCheckoutElementsProvider` | Elements with Checkout Sessions (`ui_mode: 'elements'`); `VueStripeCheckoutProvider` is a deprecated alias |
|
|
164
114
|
|
|
165
|
-
|
|
166
|
-
paymentComplete.value = event.complete
|
|
167
|
-
}
|
|
168
|
-
</script>
|
|
169
|
-
```
|
|
115
|
+
### Elements
|
|
170
116
|
|
|
171
|
-
|
|
117
|
+
| Component | Description |
|
|
118
|
+
|-----------|-------------|
|
|
119
|
+
| `VueStripePaymentElement` | Every payment method in one UI (recommended) |
|
|
120
|
+
| `VueStripeExpressCheckoutElement` | Apple Pay, Google Pay, Link and other wallets |
|
|
121
|
+
| `VueStripeLinkAuthenticationElement` | Email collection and Link sign-in |
|
|
122
|
+
| `VueStripeAddressElement` | Billing or shipping address with autocomplete |
|
|
123
|
+
| `VueStripePaymentMethodMessagingElement` | Buy now, pay later messaging |
|
|
124
|
+
| `VueStripeCardElement` | Single card input |
|
|
125
|
+
| `VueStripeCardNumberElement`, `VueStripeCardExpiryElement`, `VueStripeCardCvcElement` | Split card inputs |
|
|
126
|
+
| `VueStripeIbanElement` | IBAN for SEPA Direct Debit |
|
|
127
|
+
| `VueStripeAuBankAccountElement` | BECS Direct Debit (Australia) |
|
|
128
|
+
| `VueStripeTaxIdElement` | Business tax ID (Checkout Sessions, Stripe beta) |
|
|
129
|
+
| `VueStripeCurrencySelectorElement` | Local currency selection (Checkout Sessions, Adaptive Pricing) |
|
|
130
|
+
| `VueStripeContactDetailsElement` | Customer email (Checkout Sessions or Elements) |
|
|
131
|
+
| `VueStripeTermsElement` | Terms the customer accepts (Stripe beta) |
|
|
132
|
+
| `VueStripeLinkSignupElement` | Save details to Link (Stripe beta) |
|
|
133
|
+
| `VueStripeIssuingCardNumberDisplayElement`, `VueStripeIssuingCardCvcDisplayElement`, `VueStripeIssuingCardExpiryDisplayElement`, `VueStripeIssuingCardPinDisplayElement` | Stripe Issuing card details in Stripe-hosted iframes |
|
|
134
|
+
| `VueStripeIssuingCardCopyButtonElement`, `VueStripeIssuingAddToWalletButtonElement` | Copy an issued card detail; add an issued card to a wallet (Stripe private preview) |
|
|
135
|
+
|
|
136
|
+
Stripe removed the standalone iDEAL, P24, EPS and FPX elements; the Payment Element collects these payment methods.
|
|
137
|
+
|
|
138
|
+
### Checkout
|
|
172
139
|
|
|
173
140
|
| Component | Description |
|
|
174
141
|
|-----------|-------------|
|
|
175
|
-
| `
|
|
176
|
-
| `
|
|
177
|
-
| `VueStripeCardExpiryElement` | Expiry date input |
|
|
178
|
-
| `VueStripeCardCvcElement` | CVC input |
|
|
142
|
+
| `VueStripeCheckout` | Button that redirects to a hosted Checkout Session URL |
|
|
143
|
+
| `VueStripePricingTable` | Embeds a pricing table configured in the Stripe Dashboard |
|
|
179
144
|
|
|
180
|
-
###
|
|
145
|
+
### Disclosures
|
|
181
146
|
|
|
182
147
|
| Component | Description |
|
|
183
148
|
|-----------|-------------|
|
|
184
|
-
| `
|
|
185
|
-
| `VueStripeIdealBankElement` | iDEAL bank selector (Netherlands) |
|
|
186
|
-
| `VueStripeP24BankElement` | Przelewy24 bank selector (Poland) |
|
|
187
|
-
| `VueStripeEpsBankElement` | EPS bank selector (Austria) |
|
|
149
|
+
| `VueStripeFinancialAccountDisclosure`, `VueStripeIssuingDisclosure`, `VueStripeTreasuryDisclosure` | Legal text rendered by Stripe.js (React Stripe.js 7 parity) |
|
|
188
150
|
|
|
189
151
|
## Composables
|
|
190
152
|
|
|
191
153
|
| Composable | Description |
|
|
192
154
|
|------------|-------------|
|
|
193
|
-
| `useStripe()` |
|
|
194
|
-
| `useStripeElements()` |
|
|
195
|
-
| `usePaymentIntent()` |
|
|
196
|
-
| `useSetupIntent()` |
|
|
197
|
-
| `
|
|
155
|
+
| `useStripe()` | The Stripe instance |
|
|
156
|
+
| `useStripeElements()` | The Elements group, `submit()`, `fetchUpdates()` and `getElement()` |
|
|
157
|
+
| `usePaymentIntent()` | Confirm and retrieve PaymentIntents |
|
|
158
|
+
| `useSetupIntent()` | Confirm and retrieve SetupIntents |
|
|
159
|
+
| `useCreatePaymentMethod()` | Create a PaymentMethod from Elements |
|
|
160
|
+
| `useHandleNextAction()` | Finish 3D Secure and other next actions |
|
|
161
|
+
| `useFinancialConnections()` | Financial Connections and ACH bank account collection |
|
|
162
|
+
| `useIdentity()` | Stripe Identity verification modal |
|
|
163
|
+
| `usePaymentRequest()` | Payment Request API behind your own button (prefer the Express Checkout Element for new integrations) |
|
|
164
|
+
| `useCheckoutSession()` | Session state and actions inside `VueStripeCheckoutElementsProvider` |
|
|
165
|
+
| `useStripeCheckout()` | Redirect to a hosted Checkout Session URL |
|
|
198
166
|
|
|
199
167
|
## TypeScript
|
|
200
168
|
|
|
@@ -218,4 +186,4 @@ import type {
|
|
|
218
186
|
|
|
219
187
|
## License
|
|
220
188
|
|
|
221
|
-
[MIT](LICENSE) License
|
|
189
|
+
[MIT](LICENSE) License. Copyright 2017-2026 Vue Stripe Contributors.
|
package/dist/cjs/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const M=require("@stripe/stripe-js"),e=require("vue-demi"),w=Symbol("stripe"),b=Symbol("stripe-elements"),A=Symbol("stripe-checkout"),$=Symbol("vue-stripe-config");class S extends Error{constructor(d){super(d),this.name="VueStripeProviderError"}}class V extends Error{constructor(d){super(d),this.name="VueStripeElementsError"}}class I extends Error{constructor(d){super(d),this.name="VueStripeCheckoutError"}}class x extends Error{constructor(d){super(d),this.name="VueStripeLoadError"}}function T(i,d){switch(i){case"provider":return new S(d);case"elements":return new V(d);case"checkout":return new I(d);case"load":return new x(d);default:return new Error(d)}}const U={name:"vue-stripe",version:"5.7.0",url:"https://vuestripe.com",partner_id:"pp_partner_IqtOXpBSuz0IE2"},j={key:0,class:"vue-stripe-error"},L={class:"vue-stripe-error-message"},z={key:1,class:"vue-stripe-loading"},D={key:2},K=e.defineComponent({__name:"VueStripeProvider",props:{publishableKey:{},stripeKey:{},stripeAccount:{},apiVersion:{},locale:{},options:{}},emits:["load","error"],setup(i,{emit:d}){const c=i,o=d,l=e.ref(null),u=e.ref(!0),t=e.ref(null),r=c.publishableKey||c.stripeKey;if(!r)throw new S("publishableKey or stripeKey is required");const n={publishableKey:r,stripeAccount:c.stripeAccount||c.options?.stripeAccount,apiVersion:c.apiVersion||c.options?.apiVersion,locale:c.locale||c.options?.locale},s=async()=>{try{u.value=!0,t.value=null;const p={},v=c.stripeAccount||c.options?.stripeAccount,f=c.apiVersion||c.options?.apiVersion,g=c.locale||c.options?.locale;if(v&&(p.stripeAccount=v),f&&(p.apiVersion=f),g&&(p.locale=g),l.value=await M.loadStripe(r,p),!l.value)throw new S("Failed to initialize Stripe");l.value.registerAppInfo(U),o("load",l.value)}catch(p){const v=p instanceof Error?p.message:"Failed to load Stripe";t.value=v,console.error("[Vue Stripe] Initialization error:",v),o("error",p instanceof Error?p:new Error(v))}finally{u.value=!1}};return e.onMounted(()=>{s()}),e.provide($,n),e.provide(w,{stripe:l,loading:u,error:t}),(p,v)=>e.unref(t)?(e.openBlock(),e.createElementBlock("div",j,[e.renderSlot(p.$slots,"error",{error:e.unref(t)},()=>[e.createElementVNode("div",L,e.toDisplayString(e.unref(t)),1)],!0)])):e.unref(u)?(e.openBlock(),e.createElementBlock("div",z,[e.renderSlot(p.$slots,"loading",{},()=>[v[0]||(v[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading Stripe... ",-1))],!0)])):(e.openBlock(),e.createElementBlock("div",D,[e.renderSlot(p.$slots,"default",{},void 0,!0)]))}}),_=(i,d)=>{const c=i.__vccOpts||i;for(const[o,l]of d)c[o]=l;return c},q=_(K,[["__scopeId","data-v-573ddc51"]]),H={key:0,class:"vue-stripe-elements-error"},O={class:"vue-stripe-error-message"},X={key:1,class:"vue-stripe-elements-loading"},Q={key:2},W=e.defineComponent({__name:"VueStripeElements",props:{clientSecret:{},mode:{},currency:{},amount:{},setupFutureUsage:{},captureMethod:{},paymentMethodTypes:{},appearance:{},fonts:{},locale:{},options:{}},emits:["ready","error"],setup(i,{emit:d}){const c=d,o=i,l=e.inject(w);if(!l)throw new S("VueStripeElements must be used within VueStripeProvider");const u=e.ref(null),t=e.ref(!0),r=e.ref(null),n=()=>{if(!l.stripe.value){r.value="Stripe instance not available",t.value=!1;return}try{r.value=null,t.value=!0;const s={...o.options};o.clientSecret&&(s.clientSecret=o.clientSecret),o.mode&&(s.mode=o.mode),o.currency&&(s.currency=o.currency),o.amount!==void 0&&(s.amount=o.amount),o.setupFutureUsage&&(s.setupFutureUsage=o.setupFutureUsage),o.captureMethod&&(s.captureMethod=o.captureMethod),o.paymentMethodTypes&&(s.paymentMethodTypes=o.paymentMethodTypes),o.appearance&&(s.appearance=o.appearance),o.fonts&&(s.fonts=o.fonts),o.locale&&(s.locale=o.locale),u.value=l.stripe.value.elements(s),t.value=!1,e.nextTick(()=>{c("ready",u.value)})}catch(s){const p=s instanceof Error?s.message:"Failed to create elements";r.value=p,t.value=!1,console.error("[Vue Stripe] Elements creation error:",p),c("error",p)}};return e.watch(()=>l.stripe.value,s=>{s&&!u.value&&n()},{immediate:!0}),e.watch(()=>o.clientSecret,()=>{l.stripe.value&&n()}),e.watch(()=>[o.mode,o.currency,o.amount,o.setupFutureUsage],()=>{l.stripe.value&&n()}),e.watch(()=>[o.appearance,o.locale],()=>{if(u.value){const s={};o.appearance&&(s.appearance=o.appearance),o.locale&&(s.locale=o.locale),u.value.update(s)}},{deep:!0}),e.onMounted(()=>{l.stripe.value&&!u.value&&n()}),e.provide(b,{elements:u,loading:t,error:r}),(s,p)=>e.unref(r)?(e.openBlock(),e.createElementBlock("div",H,[e.renderSlot(s.$slots,"error",{error:e.unref(r)},()=>[e.createElementVNode("div",O,e.toDisplayString(e.unref(r)),1)],!0)])):e.unref(t)?(e.openBlock(),e.createElementBlock("div",X,[e.renderSlot(s.$slots,"loading",{},()=>[p[0]||(p[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Initializing Elements... ",-1))],!0)])):(e.openBlock(),e.createElementBlock("div",Q,[e.renderSlot(s.$slots,"default",{},void 0,!0)]))}}),G=_(W,[["__scopeId","data-v-609ef015"]]),J={class:"vue-stripe-payment-element"},Y={key:0,class:"vue-stripe-payment-element-error"},Z={class:"vue-stripe-error-message"},ee={key:1,class:"vue-stripe-payment-element-loader"},te=e.defineComponent({__name:"VueStripePaymentElement",props:{options:{}},emits:["ready","change","focus","blur","escape","loaderstart","loaderstop","loaderror"],setup(i,{expose:d,emit:c}){const o=i,l=c,u=e.ref(),t=e.ref(null),r=e.ref(!0),n=e.ref(null),s=e.inject(b);if(!s)throw new V("VueStripePaymentElement must be used within VueStripeElements");const p=()=>{r.value=!1,l("ready",t.value)},v=E=>l("change",E),f=()=>l("focus"),g=()=>l("blur"),y=()=>l("escape"),h=()=>l("loaderstart"),a=()=>l("loaderstop"),m=E=>l("loaderror",E),k=()=>{if(!s.elements.value){n.value="Elements instance not available",r.value=!1;return}if(!u.value){n.value="Mount point not available",r.value=!1;return}try{n.value=null,r.value=!0,t.value=s.elements.value.create("payment",o.options),t.value.on("ready",p),t.value.on("change",v),t.value.on("focus",f),t.value.on("blur",g),t.value.on("escape",y);const E=t.value;E.on("loaderstart",h),E.on("loaderstop",a),E.on("loaderror",m),t.value.mount(u.value)}catch(E){const C=E instanceof Error?E.message:"Failed to create payment element";n.value=C,r.value=!1,console.error("[Vue Stripe] Payment element creation error:",C)}};return e.watch(()=>o.options,E=>{t.value&&E&&t.value.update(E)},{deep:!0}),e.watch(()=>s.elements.value,E=>{E&&u.value&&!t.value&&k()},{immediate:!0}),e.onMounted(()=>{s.elements.value&&u.value&&!t.value&&k()}),e.onUnmounted(()=>{if(t.value){t.value.off("ready",p),t.value.off("change",v),t.value.off("focus",f),t.value.off("blur",g),t.value.off("escape",y);const E=t.value;E.off("loaderstart",h),E.off("loaderstop",a),E.off("loaderror",m),t.value.destroy(),t.value=null}}),d({element:t,loading:r,error:n}),(E,C)=>(e.openBlock(),e.createElementBlock("div",J,[e.unref(n)?(e.openBlock(),e.createElementBlock("div",Y,[e.renderSlot(E.$slots,"error",{error:e.unref(n)},()=>[e.createElementVNode("div",Z,e.toDisplayString(e.unref(n)),1)],!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"elementRef",ref:u,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",ee,[e.renderSlot(E.$slots,"loading",{},()=>[C[0]||(C[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading payment form... ",-1))],!0)])):e.createCommentVNode("",!0)]))}}),re=_(te,[["__scopeId","data-v-dda3fbfc"]]),ne={class:"vue-stripe-express-checkout-element"},ae={key:0,class:"vue-stripe-express-checkout-element-error"},oe={class:"vue-stripe-error-message"},le={key:1,class:"vue-stripe-express-checkout-element-loader"},se=e.defineComponent({__name:"VueStripeExpressCheckoutElement",props:{options:{}},emits:["ready","click","confirm","cancel","shippingaddresschange","shippingratechange","loaderror"],setup(i,{expose:d,emit:c}){const o=i,l=c,u=e.ref(),t=e.ref(null),r=e.ref(!0),n=e.ref(null),s=e.inject(b);if(!s)throw new V("VueStripeExpressCheckoutElement must be used within VueStripeElements");const p=k=>{r.value=!1,l("ready",k)},v=k=>l("click",k),f=k=>l("confirm",k),g=()=>l("cancel"),y=k=>l("shippingaddresschange",k),h=k=>l("shippingratechange",k),a=k=>l("loaderror",k),m=()=>{if(!s.elements.value){n.value="Elements instance not available",r.value=!1;return}if(!u.value){n.value="Mount point not available",r.value=!1;return}try{n.value=null,r.value=!0,t.value=s.elements.value.create("expressCheckout",o.options),t.value.on("ready",p),t.value.on("click",v),t.value.on("confirm",f),t.value.on("cancel",g),t.value.on("shippingaddresschange",y),t.value.on("shippingratechange",h),t.value.on("loaderror",a),t.value.mount(u.value)}catch(k){const E=k instanceof Error?k.message:"Failed to create express checkout element";n.value=E,r.value=!1,console.error("[Vue Stripe] Express checkout element creation error:",E)}};return e.watch(()=>o.options,k=>{t.value&&k&&t.value.update(k)},{deep:!0}),e.watch(()=>s.elements.value,k=>{k&&u.value&&!t.value&&m()},{immediate:!0}),e.onMounted(()=>{s.elements.value&&u.value&&!t.value&&m()}),e.onUnmounted(()=>{t.value&&(t.value.off("ready",p),t.value.off("click",v),t.value.off("confirm",f),t.value.off("cancel",g),t.value.off("shippingaddresschange",y),t.value.off("shippingratechange",h),t.value.off("loaderror",a),t.value.destroy(),t.value=null)}),d({element:t,loading:r,error:n}),(k,E)=>(e.openBlock(),e.createElementBlock("div",ne,[e.unref(n)?(e.openBlock(),e.createElementBlock("div",ae,[e.renderSlot(k.$slots,"error",{error:e.unref(n)},()=>[e.createElementVNode("div",oe,e.toDisplayString(e.unref(n)),1)],!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"elementRef",ref:u,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",le,[e.renderSlot(k.$slots,"loading",{},()=>[E[0]||(E[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading express checkout... ",-1))],!0)])):e.createCommentVNode("",!0)]))}}),ue=_(se,[["__scopeId","data-v-0d8574fa"]]),ie={class:"vue-stripe-card-element"},ce={key:0,class:"vue-stripe-card-element-error"},de={class:"vue-stripe-error-message"},pe={key:1,class:"vue-stripe-card-element-loader"},me=e.defineComponent({__name:"VueStripeCardElement",props:{options:{}},emits:["ready","change","focus","blur","escape"],setup(i,{expose:d,emit:c}){const o=i,l=c,u=e.ref(),t=e.ref(null),r=e.ref(!0),n=e.ref(null),s=e.inject(b);if(!s)throw new V("VueStripeCardElement must be used within VueStripeElements");const p=()=>{r.value=!1,l("ready",t.value)},v=a=>{a.error?n.value=a.error.message:n.value=null,l("change",a)},f=()=>l("focus"),g=()=>l("blur"),y=()=>l("escape"),h=()=>{if(!s.elements.value){n.value="Elements instance not available",r.value=!1;return}if(!u.value){n.value="Mount point not available",r.value=!1;return}try{n.value=null,r.value=!0,t.value=s.elements.value.create("card",o.options),t.value.on("ready",p),t.value.on("change",v),t.value.on("focus",f),t.value.on("blur",g),t.value.on("escape",y),t.value.mount(u.value)}catch(a){const m=a instanceof Error?a.message:"Failed to create card element";n.value=m,r.value=!1,console.error("[Vue Stripe] Card element creation error:",m)}};return e.watch(()=>o.options,a=>{t.value&&a&&t.value.update(a)},{deep:!0}),e.watch(()=>s.elements.value,a=>{a&&u.value&&!t.value&&h()},{immediate:!0}),e.onMounted(()=>{s.elements.value&&u.value&&!t.value&&h()}),e.onUnmounted(()=>{t.value&&(t.value.off("ready",p),t.value.off("change",v),t.value.off("focus",f),t.value.off("blur",g),t.value.off("escape",y),t.value.destroy(),t.value=null)}),d({element:t,loading:r,error:n,focus:()=>t.value?.focus(),blur:()=>t.value?.blur(),clear:()=>t.value?.clear()}),(a,m)=>(e.openBlock(),e.createElementBlock("div",ie,[e.unref(n)?(e.openBlock(),e.createElementBlock("div",ce,[e.renderSlot(a.$slots,"error",{error:e.unref(n)},()=>[e.createElementVNode("div",de,e.toDisplayString(e.unref(n)),1)],!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"elementRef",ref:u,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",pe,[e.renderSlot(a.$slots,"loading",{},()=>[m[0]||(m[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading card form... ",-1))],!0)])):e.createCommentVNode("",!0)]))}}),ve=_(me,[["__scopeId","data-v-603e7c2a"]]);function B({elementType:i,componentName:d}){return e.defineComponent({name:d,props:{options:{type:Object,default:()=>({})}},emits:["ready","change","focus","blur","escape"],setup(c,{emit:o,expose:l}){const u=e.ref(),t=e.ref(null),r=e.ref(!0),n=e.ref(null),s=e.inject(b);if(!s)throw new V(`${d} must be used within VueStripeElements`);const p=()=>{r.value=!1,o("ready",t.value)},v=a=>{const m=a;m.error?n.value=m.error.message:n.value=null,o("change",m)},f=()=>o("focus"),g=()=>o("blur"),y=()=>o("escape"),h=()=>{if(!s.elements.value){n.value="Elements instance not available",r.value=!1;return}if(!u.value){n.value="Mount point not available",r.value=!1;return}try{n.value=null,r.value=!0;const a=s.elements.value.create(i,c.options);t.value=a,a.on("ready",p),a.on("change",v),a.on("focus",f),a.on("blur",g),a.on("escape",y),a.mount(u.value)}catch(a){const m=a instanceof Error?a.message:`Failed to create ${i} element`;n.value=m,r.value=!1,console.error(`[Vue Stripe] ${d} creation error:`,m)}};return e.watch(()=>c.options,a=>{t.value?.update&&a&&t.value.update(a)},{deep:!0}),e.watch(()=>s.elements.value,a=>{a&&u.value&&!t.value&&h()},{immediate:!0}),e.onMounted(()=>{s.elements.value&&u.value&&!t.value&&h()}),e.onUnmounted(()=>{t.value&&(t.value.off?.("ready",p),t.value.off?.("change",v),t.value.off?.("focus",f),t.value.off?.("blur",g),t.value.off?.("escape",y),t.value.destroy(),t.value=null)}),l({element:t,loading:r,error:n,focus:()=>{t.value?.focus?.()},blur:()=>{t.value?.blur?.()},clear:()=>{t.value?.clear?.()}}),()=>{const a=`vue-stripe-${i}-element`;return e.h("div",{class:a},[n.value&&e.h("div",{class:`${a}-error`},[e.h("div",{class:"vue-stripe-error-message"},n.value)]),e.h("div",{ref:u,class:{[`${a}-mount`]:!0,[`${a}-loading`]:r.value}}),r.value&&e.h("div",{class:`${a}-loader`},[e.h("div",{class:"vue-stripe-loading-message"},`Loading ${i}...`)])])}}})}const fe=B({elementType:"cardNumber",componentName:"VueStripeCardNumberElement"}),he=B({elementType:"cardExpiry",componentName:"VueStripeCardExpiryElement"}),ge=B({elementType:"cardCvc",componentName:"VueStripeCardCvcElement"}),ye={class:"vue-stripe-link-auth"},ke={key:0,class:"vue-stripe-link-auth-error"},Ee={class:"vue-stripe-error-message"},Se={key:1,class:"vue-stripe-link-auth-loading"},be=e.defineComponent({__name:"VueStripeLinkAuthenticationElement",props:{options:{}},emits:["ready","change","focus","blur","escape"],setup(i,{expose:d,emit:c}){const o=i,l=c,u=e.inject(b);if(!u)throw new V("VueStripeLinkAuthenticationElement must be used within VueStripeElements");const t=e.ref(),r=e.ref(null),n=e.ref(!0),s=e.ref(null),p=()=>{n.value=!1,r.value&&l("ready",r.value)},v=m=>{l("change",m)},f=()=>l("focus"),g=()=>l("blur"),y=()=>l("escape"),h=()=>{if(!(!u.elements?.value||!t.value))try{s.value=null,n.value=!0,r.value=u.elements.value.create("linkAuthentication",o.options),r.value.mount(t.value),r.value.on("ready",p),r.value.on("change",v),r.value.on("focus",f),r.value.on("blur",g),r.value.on("escape",y)}catch(m){const k=m instanceof Error?m.message:"Failed to create link authentication element";s.value=k,n.value=!1,console.error("[Vue Stripe] Link authentication element creation error:",k)}},a=()=>{r.value&&(r.value.off("ready",p),r.value.off("change",v),r.value.off("focus",f),r.value.off("blur",g),r.value.off("escape",y),r.value.unmount(),r.value.destroy(),r.value=null)};return e.watch(()=>u.elements?.value,m=>{m&&t.value&&!r.value&&h()},{immediate:!0}),e.watch(()=>o.options,m=>{r.value&&m&&typeof r.value.update=="function"&&r.value.update(m)},{deep:!0}),e.onMounted(()=>{u.elements?.value&&t.value&&h()}),e.onUnmounted(()=>{a()}),d({element:r,loading:n,error:s,focus:()=>r.value?.focus(),blur:()=>r.value?.blur(),clear:()=>r.value?.clear()}),(m,k)=>(e.openBlock(),e.createElementBlock("div",ye,[e.unref(s)?(e.openBlock(),e.createElementBlock("div",ke,[e.renderSlot(m.$slots,"error",{error:e.unref(s)},()=>[e.createElementVNode("div",Ee,e.toDisplayString(e.unref(s)),1)],!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"elementRef",ref:t,class:"vue-stripe-link-auth-element"},null,512),e.unref(n)?(e.openBlock(),e.createElementBlock("div",Se,[e.renderSlot(m.$slots,"loading",{},()=>[k[0]||(k[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading… ",-1))],!0)])):e.createCommentVNode("",!0)]))}}),Ve=_(be,[["__scopeId","data-v-10f4cbf0"]]),_e=e.defineComponent({name:"VueStripeAddressElement",props:{options:{type:Object,default:()=>({mode:"shipping"})}},emits:["ready","change","blur","focus","escape","loadError"],setup(i,{emit:d,expose:c}){const o=e.ref(),l=e.ref(null),u=e.inject(b);if(!u)throw new V("VueStripeAddressElement must be used within VueStripeElements");const t=()=>{d("ready")},r=k=>{d("change",k)},n=()=>{d("blur")},s=()=>{d("focus")},p=()=>{d("escape")},v=k=>{d("loadError",k)},f=()=>{if(!(!u.elements.value||!o.value))try{l.value=u.elements.value.create("address",i.options),l.value.mount(o.value),l.value.on("ready",t),l.value.on("change",r),l.value.on("blur",n),l.value.on("focus",s),l.value.on("escape",p),l.value.on("loaderror",v)}catch(k){const E=k instanceof Error?k.message:"Failed to create address element";console.error("[Vue Stripe] Address element creation error:",E),d("loadError",{elementType:"address",error:E})}},g=()=>{l.value&&l.value.update(i.options)},y=()=>{l.value&&(l.value.off("ready",t),l.value.off("change",r),l.value.off("blur",n),l.value.off("focus",s),l.value.off("escape",p),l.value.off("loaderror",v),l.value.destroy(),l.value=null)},h=async()=>{if(!l.value)throw new V("Address element not mounted");return l.value.getValue()},a=()=>{l.value?.focus()},m=()=>{l.value?.clear()};return e.onMounted(()=>{f()}),e.onBeforeUnmount(()=>{y()}),e.watch(()=>i.options,()=>{g()},{deep:!0}),c({element:l,getValue:h,focus:a,clear:m}),{addressRef:o,element:l,getValue:h,focus:a,clear:m}}}),we={ref:"addressRef"};function Ce(i,d,c,o,l,u){return e.openBlock(),e.createElementBlock("div",we,null,512)}const Be=_(_e,[["render",Ce]]),$e={class:"vue-stripe-iban-element"},Ie={key:0,class:"vue-stripe-iban-element-error"},Pe={class:"vue-stripe-error-message"},Ne={key:1,class:"vue-stripe-iban-element-loader"},Me=e.defineComponent({__name:"VueStripeIbanElement",props:{options:{}},emits:["ready","change","focus","blur","escape"],setup(i,{expose:d,emit:c}){const o=i,l=c,u=e.ref(),t=e.ref(null),r=e.ref(!0),n=e.ref(null),s=e.inject(b);if(!s)throw new V("VueStripeIbanElement must be used within VueStripeElements");const p=()=>{r.value=!1,l("ready",t.value)},v=a=>{a.error?n.value=a.error.message:n.value=null,l("change",a)},f=()=>l("focus"),g=()=>l("blur"),y=()=>l("escape"),h=()=>{if(!s.elements.value){n.value="Elements instance not available",r.value=!1;return}if(!u.value){n.value="Mount point not available",r.value=!1;return}try{n.value=null,r.value=!0;const a={supportedCountries:["SEPA"],...o.options};t.value=s.elements.value.create("iban",a),t.value.on("ready",p),t.value.on("change",v),t.value.on("focus",f),t.value.on("blur",g),t.value.on("escape",y),t.value.mount(u.value)}catch(a){const m=a instanceof Error?a.message:"Failed to create IBAN element";n.value=m,r.value=!1,console.error("[Vue Stripe] IBAN element creation error:",m)}};return e.watch(()=>o.options,a=>{t.value&&a&&t.value.update(a)},{deep:!0}),e.watch(()=>s.elements.value,a=>{a&&u.value&&!t.value&&h()},{immediate:!0}),e.onMounted(()=>{s.elements.value&&u.value&&!t.value&&h()}),e.onUnmounted(()=>{t.value&&(t.value.off("ready",p),t.value.off("change",v),t.value.off("focus",f),t.value.off("blur",g),t.value.off("escape",y),t.value.destroy(),t.value=null)}),d({element:t,loading:r,error:n,focus:()=>t.value?.focus(),blur:()=>t.value?.blur(),clear:()=>t.value?.clear()}),(a,m)=>(e.openBlock(),e.createElementBlock("div",$e,[e.unref(n)?(e.openBlock(),e.createElementBlock("div",Ie,[e.renderSlot(a.$slots,"error",{error:e.unref(n)},()=>[e.createElementVNode("div",Pe,e.toDisplayString(e.unref(n)),1)],!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"elementRef",ref:u,class:e.normalizeClass(["vue-stripe-iban-element-mount",{"vue-stripe-iban-element-loading":e.unref(r)}])},null,2),e.unref(r)?(e.openBlock(),e.createElementBlock("div",Ne,[e.renderSlot(a.$slots,"loading",{},()=>[m[0]||(m[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading IBAN form... ",-1))],!0)])):e.createCommentVNode("",!0)]))}}),Ae=_(Me,[["__scopeId","data-v-40925136"]]),xe={class:"vue-stripe-ideal-bank-element"},Re={key:0,class:"vue-stripe-ideal-bank-element-error"},Fe={class:"vue-stripe-error-message"},Te={key:1,class:"vue-stripe-ideal-bank-element-loader"},Ue=e.defineComponent({__name:"VueStripeIdealBankElement",props:{options:{}},emits:["ready","change","focus","blur","escape"],setup(i,{expose:d,emit:c}){const o=i,l=c,u=e.ref(),t=e.ref(null),r=e.ref(!0),n=e.ref(null),s=e.inject(b);if(!s)throw new V("VueStripeIdealBankElement must be used within VueStripeElements");const p=()=>{r.value=!1,l("ready",t.value)},v=a=>{a.error?n.value=a.error.message:n.value=null,l("change",a)},f=()=>l("focus"),g=()=>l("blur"),y=()=>l("escape"),h=()=>{if(!s.elements.value){n.value="Elements instance not available",r.value=!1;return}if(!u.value){n.value="Mount point not available",r.value=!1;return}try{n.value=null,r.value=!0,t.value=s.elements.value.create("idealBank",o.options),t.value.on("ready",p),t.value.on("change",v),t.value.on("focus",f),t.value.on("blur",g),t.value.on("escape",y),t.value.mount(u.value)}catch(a){const m=a instanceof Error?a.message:"Failed to create iDEAL bank element";n.value=m,r.value=!1,console.error("[Vue Stripe] iDEAL bank element creation error:",m)}};return e.watch(()=>o.options,a=>{t.value&&a&&t.value.update(a)},{deep:!0}),e.watch(()=>s.elements.value,a=>{a&&u.value&&!t.value&&h()},{immediate:!0}),e.onMounted(()=>{s.elements.value&&u.value&&!t.value&&h()}),e.onUnmounted(()=>{t.value&&(t.value.off("ready",p),t.value.off("change",v),t.value.off("focus",f),t.value.off("blur",g),t.value.off("escape",y),t.value.destroy(),t.value=null)}),d({element:t,loading:r,error:n,focus:()=>t.value?.focus(),blur:()=>t.value?.blur(),clear:()=>t.value?.clear()}),(a,m)=>(e.openBlock(),e.createElementBlock("div",xe,[e.unref(n)?(e.openBlock(),e.createElementBlock("div",Re,[e.renderSlot(a.$slots,"error",{error:e.unref(n)},()=>[e.createElementVNode("div",Fe,e.toDisplayString(e.unref(n)),1)],!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"elementRef",ref:u,class:e.normalizeClass(["vue-stripe-ideal-bank-element-mount",{"vue-stripe-ideal-bank-element-loading":e.unref(r)}])},null,2),e.unref(r)?(e.openBlock(),e.createElementBlock("div",Te,[e.renderSlot(a.$slots,"loading",{},()=>[m[0]||(m[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading iDEAL bank selector... ",-1))],!0)])):e.createCommentVNode("",!0)]))}}),je=_(Ue,[["__scopeId","data-v-1cf67d48"]]),Le={class:"vue-stripe-p24-bank-element"},ze={key:0,class:"vue-stripe-p24-bank-element-error"},De={class:"vue-stripe-error-message"},Ke={key:1,class:"vue-stripe-p24-bank-element-loader"},qe=e.defineComponent({__name:"VueStripeP24BankElement",props:{options:{}},emits:["ready","change","focus","blur","escape"],setup(i,{expose:d,emit:c}){const o=i,l=c,u=e.ref(),t=e.ref(null),r=e.ref(!0),n=e.ref(null),s=e.inject(b);if(!s)throw new V("VueStripeP24BankElement must be used within VueStripeElements");const p=()=>{r.value=!1,l("ready",t.value)},v=a=>{a.error?n.value=a.error.message:n.value=null,l("change",a)},f=()=>l("focus"),g=()=>l("blur"),y=()=>l("escape"),h=()=>{if(!s.elements.value){n.value="Elements instance not available",r.value=!1;return}if(!u.value){n.value="Mount point not available",r.value=!1;return}try{n.value=null,r.value=!0,t.value=s.elements.value.create("p24Bank",o.options||{}),t.value.on("ready",p),t.value.on("change",v),t.value.on("focus",f),t.value.on("blur",g),t.value.on("escape",y),t.value.mount(u.value)}catch(a){const m=a instanceof Error?a.message:"Failed to create P24 bank element";n.value=m,r.value=!1,console.error("[Vue Stripe] P24 bank element creation error:",m)}};return e.watch(()=>o.options,a=>{t.value&&a&&t.value.update(a)},{deep:!0}),e.watch(()=>s.elements.value,a=>{a&&u.value&&!t.value&&h()},{immediate:!0}),e.onMounted(()=>{s.elements.value&&u.value&&!t.value&&h()}),e.onUnmounted(()=>{t.value&&(t.value.off("ready",p),t.value.off("change",v),t.value.off("focus",f),t.value.off("blur",g),t.value.off("escape",y),t.value.destroy(),t.value=null)}),d({element:t,loading:r,error:n,focus:()=>t.value?.focus(),blur:()=>t.value?.blur(),clear:()=>t.value?.clear()}),(a,m)=>(e.openBlock(),e.createElementBlock("div",Le,[e.unref(n)?(e.openBlock(),e.createElementBlock("div",ze,[e.renderSlot(a.$slots,"error",{error:e.unref(n)},()=>[e.createElementVNode("div",De,e.toDisplayString(e.unref(n)),1)],!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"elementRef",ref:u,class:e.normalizeClass(["vue-stripe-p24-bank-element-mount",{"vue-stripe-p24-bank-element-loading":e.unref(r)}])},null,2),e.unref(r)?(e.openBlock(),e.createElementBlock("div",Ke,[e.renderSlot(a.$slots,"loading",{},()=>[m[0]||(m[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading Przelewy24 bank selector... ",-1))],!0)])):e.createCommentVNode("",!0)]))}}),He=_(qe,[["__scopeId","data-v-ffe86554"]]),Oe={class:"vue-stripe-eps-bank-element"},Xe={key:0,class:"vue-stripe-eps-bank-element-error"},Qe={class:"vue-stripe-error-message"},We={key:1,class:"vue-stripe-eps-bank-element-loader"},Ge=e.defineComponent({__name:"VueStripeEpsBankElement",props:{options:{}},emits:["ready","change","focus","blur","escape"],setup(i,{expose:d,emit:c}){const o=i,l=c,u=e.ref(),t=e.ref(null),r=e.ref(!0),n=e.ref(null),s=e.inject(b);if(!s)throw new V("VueStripeEpsBankElement must be used within VueStripeElements");const p=()=>{r.value=!1,l("ready",t.value)},v=a=>{a.error?n.value=a.error.message:n.value=null,l("change",a)},f=()=>l("focus"),g=()=>l("blur"),y=()=>l("escape"),h=()=>{if(!s.elements.value){n.value="Elements instance not available",r.value=!1;return}if(!u.value){n.value="Mount point not available",r.value=!1;return}try{n.value=null,r.value=!0,t.value=s.elements.value.create("epsBank",o.options||{}),t.value.on("ready",p),t.value.on("change",v),t.value.on("focus",f),t.value.on("blur",g),t.value.on("escape",y),t.value.mount(u.value)}catch(a){const m=a instanceof Error?a.message:"Failed to create EPS bank element";n.value=m,r.value=!1,console.error("[Vue Stripe] EPS bank element creation error:",m)}};return e.watch(()=>o.options,a=>{t.value&&a&&t.value.update(a)},{deep:!0}),e.watch(()=>s.elements.value,a=>{a&&u.value&&!t.value&&h()},{immediate:!0}),e.onMounted(()=>{s.elements.value&&u.value&&!t.value&&h()}),e.onUnmounted(()=>{t.value&&(t.value.off("ready",p),t.value.off("change",v),t.value.off("focus",f),t.value.off("blur",g),t.value.off("escape",y),t.value.destroy(),t.value=null)}),d({element:t,loading:r,error:n,focus:()=>t.value?.focus(),blur:()=>t.value?.blur(),clear:()=>t.value?.clear()}),(a,m)=>(e.openBlock(),e.createElementBlock("div",Oe,[e.unref(n)?(e.openBlock(),e.createElementBlock("div",Xe,[e.renderSlot(a.$slots,"error",{error:e.unref(n)},()=>[e.createElementVNode("div",Qe,e.toDisplayString(e.unref(n)),1)],!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"elementRef",ref:u,class:e.normalizeClass(["vue-stripe-eps-bank-element-mount",{"vue-stripe-eps-bank-element-loading":e.unref(r)}])},null,2),e.unref(r)?(e.openBlock(),e.createElementBlock("div",We,[e.renderSlot(a.$slots,"loading",{},()=>[m[0]||(m[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading EPS bank selector... ",-1))],!0)])):e.createCommentVNode("",!0)]))}}),Je=_(Ge,[["__scopeId","data-v-8fd31c57"]]),Ye=B({elementType:"paymentMethodMessaging",componentName:"VueStripePaymentMethodMessagingElement"});function P(){const i=e.inject(w);if(!i)throw new S("useStripe must be called within a VueStripeProvider component");return{stripe:e.readonly(i.stripe),loading:e.readonly(i.loading),error:e.readonly(i.error),initialize:async()=>{}}}const Ze=["disabled"],et=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(i,{expose:d,emit:c}){const o=i,l=c,{stripe:u}=P(),t=e.ref(!1),r=e.useSlots(),n=e.computed(()=>!!r.default),s=()=>u.value!==null&&typeof u.value.redirectToCheckout=="function",p=async()=>{t.value=!0,l("checkout");try{if(o.sessionUrl){l("before-redirect",{url:o.sessionUrl}),window.location.replace(o.sessionUrl),l("success");return}if(o.sessionId){if(!s())throw new S("redirectToCheckout is not available. This method was removed in @stripe/stripe-js v8.x. Use sessionUrl prop with the checkout session URL instead.");if(!u.value)throw new S("Stripe not initialized");const v=await u.value.redirectToCheckout({sessionId:o.sessionId});if(v.error)throw new S(v.error.message||"Redirect to checkout failed");l("success");return}if(o.priceId){if(!s())throw new S("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(!u.value)throw new S("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 v=await u.value.redirectToCheckout({lineItems:[{price:o.priceId,quantity:1}],mode:o.mode,successUrl:o.successUrl||window.location.origin+"/success",cancelUrl:o.cancelUrl||window.location.origin+"/cancel",customerEmail:o.customerEmail,clientReferenceId:o.clientReferenceId,submitType:o.submitType});if(v.error)throw new S(v.error.message||"Redirect to checkout failed");l("success");return}throw new S("Either sessionUrl, sessionId, or priceId is required. For @stripe/stripe-js v8.x, use sessionUrl.")}catch(v){const f=v instanceof Error?v:new Error("Checkout failed");l("error",f),console.error("[Vue Stripe] Checkout error:",f)}finally{t.value=!1}};return d({checkout:p,loading:t}),(v,f)=>e.unref(n)?(e.openBlock(),e.createElementBlock("span",{key:0,onClick:p,class:"vue-stripe-checkout-wrapper"},[e.renderSlot(v.$slots,"default",{checkout:p,loading:e.unref(t),disabled:i.disabled},void 0,!0)])):(e.openBlock(),e.createElementBlock("button",{key:1,disabled:e.unref(t)||i.disabled,class:e.normalizeClass(i.buttonClass),onClick:p},[e.unref(t)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[f[0]||(f[0]=e.createElementVNode("span",{class:"vue-stripe-loading-spinner"},null,-1)),e.createTextVNode(" "+e.toDisplayString(i.loadingText),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(i.buttonText),1)],64))],10,Ze))}}),tt=_(et,[["__scopeId","data-v-8fe59422"]]),rt={key:0,class:"vue-stripe-checkout-error"},nt={class:"vue-stripe-error-message"},at={key:1,class:"vue-stripe-checkout-loading"},ot={key:2},lt=e.defineComponent({__name:"VueStripeCheckoutProvider",props:{clientSecret:{},fetchClientSecret:{type:Function},elementsOptions:{}},emits:["ready","error"],setup(i,{emit:d}){const c=i,o=d,l=e.inject(w);if(!l)throw new S("VueStripeCheckoutProvider must be used within VueStripeProvider");const u=e.ref(null),t=e.ref(null),r=e.ref(!0),n=e.ref(null);let s=!1,p=!1;const v=async()=>{if(s||!l.stripe.value)return;const f=c.fetchClientSecret??(c.clientSecret?()=>Promise.resolve(c.clientSecret):null);if(!f){const y="VueStripeCheckoutProvider requires a `clientSecret` or `fetchClientSecret` prop";n.value=y,r.value=!1,o("error",y);return}const g=l.stripe.value;if(g){s=!0;try{r.value=!0,n.value=null;const y={fetchClientSecret:f};c.elementsOptions&&(y.elementsOptions=c.elementsOptions);const h=await g.initCheckout(y);if(p)return;u.value=e.markRaw(h),t.value=e.markRaw(h.session()),h.on("change",a=>{p||(t.value=e.markRaw(a))}),r.value=!1,o("ready",h)}catch(y){s=!1;const h=y instanceof Error?y.message:"Failed to initialize Checkout";n.value=h,r.value=!1,console.error("[Vue Stripe] Checkout init error:",h),o("error",h)}}};return e.watch(()=>l.stripe.value,f=>{f&&v()},{immediate:!0}),e.onUnmounted(()=>{p=!0,u.value=null,t.value=null,s=!1}),e.provide(A,{checkout:u,session:t,loading:r,error:n}),(f,g)=>e.unref(n)?(e.openBlock(),e.createElementBlock("div",rt,[e.renderSlot(f.$slots,"error",{error:e.unref(n)},()=>[e.createElementVNode("div",nt,e.toDisplayString(e.unref(n)),1)],!0)])):e.unref(r)?(e.openBlock(),e.createElementBlock("div",at,[e.renderSlot(f.$slots,"loading",{},()=>[g[0]||(g[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Initializing Checkout... ",-1))],!0)])):(e.openBlock(),e.createElementBlock("div",ot,[e.renderSlot(f.$slots,"default",{checkout:e.unref(u),session:e.unref(t)},void 0,!0)]))}}),st=_(lt,[["__scopeId","data-v-920cdeaf"]]),ut={class:"vue-stripe-pricing-table"},it={class:"vue-stripe-pricing-table-error"},N="https://js.stripe.com/v3/pricing-table.js",ct=e.defineComponent({__name:"VueStripePricingTable",props:{pricingTableId:{},customerEmail:{},customerSessionClientSecret:{},clientReferenceId:{}},emits:["load","error"],setup(i,{expose:d,emit:c}){const o=i,l=c,u=e.inject($);if(!u?.publishableKey)throw new S("VueStripePricingTable must be used within a VueStripeProvider component");const t=u.publishableKey,r=e.ref(!0),n=e.ref(null),s=()=>new Promise((p,v)=>{if(document.querySelector(`script[src="${N}"]`)){p();return}const f=document.createElement("script");f.src=N,f.async=!0,f.onload=()=>p(),f.onerror=()=>v(new Error("Failed to load Stripe pricing table script")),document.head.appendChild(f)});return e.onMounted(async()=>{try{r.value=!0,n.value=null,await s(),r.value=!1,l("load")}catch(p){const v=p instanceof Error?p.message:"Failed to load pricing table";n.value=v,r.value=!1,l("error",p instanceof Error?p:new Error(v)),console.error("[Vue Stripe] Pricing table error:",v)}}),d({loading:r,error:n}),(p,v)=>{const f=e.resolveComponent("stripe-pricing-table");return e.openBlock(),e.createElementBlock("div",ut,[e.unref(r)?e.renderSlot(p.$slots,"loading",{key:0},()=>[v[0]||(v[0]=e.createElementVNode("div",{class:"vue-stripe-pricing-table-loading"}," Loading pricing table... ",-1))],!0):e.unref(n)?e.renderSlot(p.$slots,"error",{key:1,error:e.unref(n)},()=>[e.createElementVNode("div",it,e.toDisplayString(e.unref(n)),1)],!0):e.createCommentVNode("",!0),e.withDirectives(e.createVNode(f,{"pricing-table-id":o.pricingTableId,"publishable-key":e.unref(t),"customer-email":o.customerEmail,"customer-session-client-secret":o.customerSessionClientSecret,"client-reference-id":o.clientReferenceId},null,8,["pricing-table-id","publishable-key","customer-email","customer-session-client-secret","client-reference-id"]),[[e.vShow,!e.unref(r)&&!e.unref(n)]])])}}}),dt=_(ct,[["__scopeId","data-v-2b89dbe1"]]),pt={class:"vue-stripe-fpx-bank-element"},mt={key:0,class:"vue-stripe-fpx-bank-element-error"},vt={class:"vue-stripe-error-message"},ft={key:1,class:"vue-stripe-fpx-bank-element-loader"},ht=e.defineComponent({__name:"VueStripeFpxBankElement",props:{accountHolderType:{},options:{}},emits:["ready","change","focus","blur","escape"],setup(i,{expose:d,emit:c}){const o=i,l=c,u=e.ref(),t=e.ref(null),r=e.ref(!0),n=e.ref(null),s=e.inject(b);if(!s)throw new V("VueStripeFpxBankElement must be used within VueStripeElements");const p=()=>{r.value=!1,l("ready",t.value)},v=a=>{a.error?n.value=a.error.message:n.value=null,l("change",a)},f=()=>l("focus"),g=()=>l("blur"),y=()=>l("escape"),h=()=>{if(!s.elements.value){n.value="Elements instance not available",r.value=!1;return}if(!u.value){n.value="Mount point not available",r.value=!1;return}try{n.value=null,r.value=!0;const a={...o.options,accountHolderType:o.accountHolderType??"individual"};t.value=s.elements.value.create("fpxBank",a),t.value.on("ready",p),t.value.on("change",v),t.value.on("focus",f),t.value.on("blur",g),t.value.on("escape",y),t.value.mount(u.value)}catch(a){const m=a instanceof Error?a.message:"Failed to create FPX bank element";n.value=m,r.value=!1,console.error("[Vue Stripe] FPX bank element creation error:",m)}};return e.watch([()=>o.options,()=>o.accountHolderType],([a,m])=>{t.value&&t.value.update({...a,accountHolderType:m??"individual"})},{deep:!0}),e.watch(()=>s.elements.value,a=>{a&&u.value&&!t.value&&h()},{immediate:!0}),e.onMounted(()=>{s.elements.value&&u.value&&!t.value&&h()}),e.onUnmounted(()=>{t.value&&(t.value.off("ready",p),t.value.off("change",v),t.value.off("focus",f),t.value.off("blur",g),t.value.off("escape",y),t.value.destroy(),t.value=null)}),d({element:t,loading:r,error:n,focus:()=>t.value?.focus(),blur:()=>t.value?.blur(),clear:()=>t.value?.clear()}),(a,m)=>(e.openBlock(),e.createElementBlock("div",pt,[e.unref(n)?(e.openBlock(),e.createElementBlock("div",mt,[e.renderSlot(a.$slots,"error",{error:e.unref(n)},()=>[e.createElementVNode("div",vt,e.toDisplayString(e.unref(n)),1)],!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"elementRef",ref:u,class:e.normalizeClass(["vue-stripe-fpx-bank-element-mount",{"vue-stripe-fpx-bank-element-loading":e.unref(r)}])},null,2),e.unref(r)?(e.openBlock(),e.createElementBlock("div",ft,[e.renderSlot(a.$slots,"loading",{},()=>[m[0]||(m[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading FPX bank selector... ",-1))],!0)])):e.createCommentVNode("",!0)]))}}),gt=_(ht,[["__scopeId","data-v-3faeaafc"]]),yt={class:"vue-stripe-au-bank-account-element"},kt={key:0,class:"vue-stripe-au-bank-account-element-error"},Et={class:"vue-stripe-error-message"},St={key:1,class:"vue-stripe-au-bank-account-element-loader"},bt=e.defineComponent({__name:"VueStripeAuBankAccountElement",props:{options:{}},emits:["ready","change","focus","blur","escape"],setup(i,{expose:d,emit:c}){const o=i,l=c,u=e.ref(),t=e.ref(null),r=e.ref(!0),n=e.ref(null),s=e.inject(b);if(!s)throw new V("VueStripeAuBankAccountElement must be used within VueStripeElements");const p=()=>{r.value=!1,l("ready",t.value)},v=a=>{a.error?n.value=a.error.message:n.value=null,l("change",a)},f=()=>l("focus"),g=()=>l("blur"),y=()=>l("escape"),h=()=>{if(!s.elements.value){n.value="Elements instance not available",r.value=!1;return}if(!u.value){n.value="Mount point not available",r.value=!1;return}try{n.value=null,r.value=!0,t.value=s.elements.value.create("auBankAccount",o.options),t.value.on("ready",p),t.value.on("change",v),t.value.on("focus",f),t.value.on("blur",g),t.value.on("escape",y),t.value.mount(u.value)}catch(a){const m=a instanceof Error?a.message:"Failed to create AU Bank Account element";n.value=m,r.value=!1,console.error("[Vue Stripe] AU Bank Account element creation error:",m)}};return e.watch(()=>o.options,a=>{t.value&&a&&t.value.update(a)},{deep:!0}),e.watch(()=>s.elements.value,a=>{a&&u.value&&!t.value&&h()},{immediate:!0}),e.onMounted(()=>{s.elements.value&&u.value&&!t.value&&h()}),e.onUnmounted(()=>{t.value&&(t.value.off("ready",p),t.value.off("change",v),t.value.off("focus",f),t.value.off("blur",g),t.value.off("escape",y),t.value.destroy(),t.value=null)}),d({element:t,loading:r,error:n,focus:()=>t.value?.focus(),blur:()=>t.value?.blur(),clear:()=>t.value?.clear()}),(a,m)=>(e.openBlock(),e.createElementBlock("div",yt,[e.unref(n)?(e.openBlock(),e.createElementBlock("div",kt,[e.renderSlot(a.$slots,"error",{error:e.unref(n)},()=>[e.createElementVNode("div",Et,e.toDisplayString(e.unref(n)),1)],!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"elementRef",ref:u,class:e.normalizeClass(["vue-stripe-au-bank-account-element-mount",{"vue-stripe-au-bank-account-element-loading":e.unref(r)}])},null,2),e.unref(r)?(e.openBlock(),e.createElementBlock("div",St,[e.renderSlot(a.$slots,"loading",{},()=>[m[0]||(m[0]=e.createElementVNode("div",{class:"vue-stripe-loading-message"}," Loading BECS Direct Debit form... ",-1))],!0)])):e.createCommentVNode("",!0)]))}}),Vt=_(bt,[["__scopeId","data-v-e72d2a07"]]);function _t(){const i=e.inject(w),d=e.inject(b);if(!i)throw new S("usePaymentIntent must be called within a VueStripeProvider component");const c=e.ref(!1),o=e.ref(null);return{confirmPayment:async t=>{if(!i.stripe.value)return o.value="Stripe not initialized",{error:{message:"Stripe not initialized"}};c.value=!0,o.value=null;try{const r=t.elements??d?.elements.value;if(r&&!t.skipSubmit){const{error:s}=await r.submit();if(s)return o.value=s.message||"Form validation failed",{error:s}}const n=await i.stripe.value.confirmPayment({elements:r??void 0,clientSecret:t.clientSecret,confirmParams:t.confirmParams??{},redirect:t.redirect??"if_required"});return n.error&&(o.value=n.error.message||"Payment confirmation failed"),n}catch(r){const n=r instanceof Error?r.message:"Payment confirmation failed";return o.value=n,{error:{message:n}}}finally{c.value=!1}},retrievePaymentIntent:async t=>{if(!i.stripe.value)return o.value="Stripe not initialized",{error:{message:"Stripe not initialized"}};c.value=!0,o.value=null;try{const r=await i.stripe.value.retrievePaymentIntent(t);return r.error&&(o.value=r.error.message||"Failed to retrieve payment intent"),r}catch(r){const n=r instanceof Error?r.message:"Failed to retrieve payment intent";return o.value=n,{error:{message:n}}}finally{c.value=!1}},loading:e.readonly(c),error:e.readonly(o)}}function wt(){const i=e.inject(w),d=e.inject(b);if(!i)throw new S("useSetupIntent must be called within a VueStripeProvider component");const c=e.ref(!1),o=e.ref(null);return{confirmSetup:async t=>{if(!i.stripe.value)return o.value="Stripe not initialized",{error:{message:"Stripe not initialized"}};c.value=!0,o.value=null;try{const r=t.elements??d?.elements.value;if(r&&!t.skipSubmit){const{error:s}=await r.submit();if(s)return o.value=s.message||"Form validation failed",{error:s}}const n=await i.stripe.value.confirmSetup({elements:r??void 0,clientSecret:t.clientSecret,confirmParams:t.confirmParams??{},redirect:t.redirect??"if_required"});return n.error&&(o.value=n.error.message||"Setup confirmation failed"),n}catch(r){const n=r instanceof Error?r.message:"Setup confirmation failed";return o.value=n,{error:{message:n}}}finally{c.value=!1}},retrieveSetupIntent:async t=>{if(!i.stripe.value)return o.value="Stripe not initialized",{error:{message:"Stripe not initialized"}};c.value=!0,o.value=null;try{const r=await i.stripe.value.retrieveSetupIntent(t);return r.error&&(o.value=r.error.message||"Failed to retrieve setup intent"),r}catch(r){const n=r instanceof Error?r.message:"Failed to retrieve setup intent";return o.value=n,{error:{message:n}}}finally{c.value=!1}},loading:e.readonly(c),error:e.readonly(o)}}function R(){const{stripe:i}=P(),d=e.ref(!1),c=e.ref(null),o=()=>i.value!==null&&typeof i.value.redirectToCheckout=="function";return{redirectToCheckout:async t=>{d.value=!0,c.value=null;try{if("url"in t&&t.url){window.location.replace(t.url);return}const r=t;if(!o())throw new S("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(!i.value)throw new S("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 n=await i.value.redirectToCheckout(r);if(n.error){const s=n.error.message||"Checkout redirect failed";throw c.value=s,new S(s)}}catch(r){const n=r instanceof Error?r.message:"Checkout redirect failed";throw c.value=n,r}finally{d.value=!1}},redirectToUrl:t=>{d.value=!0,c.value=null,window.location.replace(t)},loading:e.readonly(d),error:e.readonly(c)}}function F(){const i=e.inject(b);if(!i)throw new V("Elements context not found. Make sure to wrap your component with VueStripeElements.");const d=async()=>i.elements.value?i.elements.value.submit():{error:{message:"Elements not initialized"}};return{elements:e.readonly(i.elements),submit:d,loading:e.readonly(i.loading),error:e.readonly(i.error)}}function Ct(){const i=e.inject(w),d=e.inject(b);if(!i)throw new S("useCreatePaymentMethod must be called within a VueStripeProvider component");const c=e.ref(!1),o=e.ref(null);return{createPaymentMethod:async(u={})=>{if(!i.stripe.value)return o.value="Stripe not initialized",{error:{message:"Stripe not initialized"}};c.value=!0,o.value=null;try{const{skipSubmit:t,...r}=u,n={...r};if(!n.elements&&!n.type){const p=d?.elements.value;p&&(n.elements=p)}if(n.elements&&!t){const{error:p}=await n.elements.submit();if(p)return o.value=p.message||"Form validation failed",{error:p}}const s=await i.stripe.value.createPaymentMethod(n);return s.error&&(o.value=s.error.message||"Failed to create payment method"),s}catch(t){const r=t instanceof Error?t.message:"Failed to create payment method";return o.value=r,{error:{message:r}}}finally{c.value=!1}},loading:e.readonly(c),error:e.readonly(o)}}function Bt(){const i=e.inject(w);if(!i)throw new S("useHandleNextAction must be called within a VueStripeProvider component");const d=e.ref(!1),c=e.ref(null);return{handleNextAction:async l=>{if(!i.stripe.value)return c.value="Stripe not initialized",{error:{message:"Stripe not initialized"}};d.value=!0,c.value=null;try{const u=await i.stripe.value.handleNextAction({clientSecret:l.clientSecret});return u.error&&(c.value=u.error.message||"Failed to handle next action"),u}catch(u){const t=u instanceof Error?u.message:"Failed to handle next action";return c.value=t,{error:{message:t}}}finally{d.value=!1}},loading:e.readonly(d),error:e.readonly(c)}}function $t(){const i=e.inject(A);if(!i)throw new I("useCheckoutSession must be used within a VueStripeCheckoutProvider component");const d=c=>(...l)=>{const u=i.checkout.value,t=u?.[c];return typeof t!="function"?Promise.resolve({type:"error",error:{message:"Checkout session is not ready yet",code:null}}):t.apply(u,l)};return{checkout:e.readonly(i.checkout),session:e.readonly(i.session),loading:e.readonly(i.loading),error:e.readonly(i.error),getSession:()=>i.checkout.value?.session()??null,confirm:d("confirm"),applyPromotionCode:d("applyPromotionCode"),removePromotionCode:d("removePromotionCode"),updateEmail:d("updateEmail"),updatePhoneNumber:d("updatePhoneNumber"),updateBillingAddress:d("updateBillingAddress"),updateShippingAddress:d("updateShippingAddress"),updateLineItemQuantity:d("updateLineItemQuantity"),updateShippingOption:d("updateShippingOption"),updateTaxIdInfo:d("updateTaxIdInfo"),runServerUpdate:d("runServerUpdate"),changeAppearance:c=>{if(!i.checkout.value){console.warn("[Vue Stripe] changeAppearance called before the Checkout session is ready");return}i.checkout.value.changeAppearance(c)}}}function It(i){return{install(d){const c={publishableKey:i.publishableKey,stripeAccount:i.stripeAccount,apiVersion:i.apiVersion,locale:i.locale};d.provide($,c)}}}Object.defineProperty(exports,"loadStripe",{enumerable:!0,get:()=>M.loadStripe});exports.VueStripeAddressElement=Be;exports.VueStripeAuBankAccountElement=Vt;exports.VueStripeCardCvcElement=ge;exports.VueStripeCardElement=ve;exports.VueStripeCardExpiryElement=he;exports.VueStripeCardNumberElement=fe;exports.VueStripeCheckout=tt;exports.VueStripeCheckoutError=I;exports.VueStripeCheckoutProvider=st;exports.VueStripeElements=G;exports.VueStripeElementsError=V;exports.VueStripeEpsBankElement=Je;exports.VueStripeExpressCheckoutElement=ue;exports.VueStripeFpxBankElement=gt;exports.VueStripeIbanElement=Ae;exports.VueStripeIdealBankElement=je;exports.VueStripeLinkAuthenticationElement=Ve;exports.VueStripeLoadError=x;exports.VueStripeP24BankElement=He;exports.VueStripePaymentElement=re;exports.VueStripePaymentMethodMessagingElement=Ye;exports.VueStripePricingTable=dt;exports.VueStripeProvider=q;exports.VueStripeProviderError=S;exports.createVueStripe=It;exports.createVueStripeError=T;exports.useCheckout=R;exports.useCheckoutSession=$t;exports.useCreatePaymentMethod=Ct;exports.useElements=F;exports.useHandleNextAction=Bt;exports.usePaymentIntent=_t;exports.useSetupIntent=wt;exports.useStripe=P;exports.useStripeCheckout=R;exports.useStripeElements=F;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("vue-demi"),t=require("@stripe/stripe-js/pure");var n=Symbol(`stripe`),r=Symbol(`stripe-elements`),i=Symbol(`stripe-checkout`),a=Symbol(`stripe-checkout-form`),o=Symbol(`vue-stripe-config`),s=class extends Error{constructor(e){super(e),this.name=`VueStripeProviderError`}},c=class extends Error{constructor(e){super(e),this.name=`VueStripeElementsError`}},l=class extends Error{constructor(e){super(e),this.name=`VueStripeCheckoutError`}},u={name:`vue-stripe`,version:`6.0.0-beta.0`,url:`https://vuestripe.com`,partner_id:`pp_partner_IqtOXpBSuz0IE2`},d=null,f=Object.assign((...e)=>{if(d)return d.then(()=>(0,t.loadStripe)(...e));let n=(0,t.loadStripe)(...e),r=()=>{d===n&&(d=null)};return d=n,n.then(r,r),n},{setLoadParameters:e=>t.loadStripe.setLoadParameters(e)});async function p(e,t,n=!0){if(!n)try{f.setLoadParameters({advancedFraudSignals:!1})}catch{console.warn(`[Vue Stripe] advancedFraudSignals: false was ignored: Stripe.js already loading`)}let r=await f(e,t);if(!r)throw new s(`Failed to initialize Stripe`);return r.registerAppInfo(u),r}function m(t,n={},r){if(!e.isVue2)return(0,e.h)(t,n,r);let i={},a={},o={};for(let[e,t]of Object.entries(n))e===`class`||e===`style`||e===`key`||e===`ref`?i[e]=t:/^on[A-Z]/.test(e)?o[e.charAt(2).toLowerCase()+e.slice(3)]=t:a[e]=t;return Object.keys(a).length&&(i.attrs=a),Object.keys(o).length&&(i.on=o),(0,e.h)(t,i,r)}function h(e,t,n,r,i){return t.error?m(`div`,{class:`${e}-error`},n.error?.({error:t.error})??[m(`div`,{class:`vue-stripe-error-message`},t.error)]):t.loading?m(`div`,{class:`${e}-loading`},n.loading?.()??[m(`div`,{class:`vue-stripe-loading-message`},i)]):m(`div`,{},n.default?.(r))}var g=(0,e.defineComponent)({name:`VueStripeProvider`,props:{publishableKey:{type:String,default:void 0},stripeKey:{type:String,default:void 0},stripeAccount:{type:String,default:void 0},apiVersion:{type:String,default:void 0},locale:{type:String,default:void 0},betas:{type:Array,default:void 0},developerTools:{type:Object,default:void 0},advancedFraudSignals:{type:Boolean,default:!0},options:{type:Object,default:void 0}},emits:[`load`,`error`],setup(t,{emit:r,slots:i}){let a=t.publishableKey||t.stripeKey;if(!a)throw new s(`publishableKey or stripeKey is required`);let c=(0,e.shallowRef)(null),l=(0,e.ref)(!0),u=(0,e.ref)(null),d=t.stripeAccount||t.options?.stripeAccount,f=t.apiVersion||t.options?.apiVersion,m=t.locale||t.options?.locale,g={publishableKey:a,stripeAccount:d,apiVersion:f,locale:m},_=async()=>{try{l.value=!0,u.value=null;let e={...t.options};t.betas?.length&&(e.betas=t.betas),t.developerTools&&(e.developerTools=t.developerTools),d&&(e.stripeAccount=d),f&&(e.apiVersion=f),m&&(e.locale=m),c.value=await p(a,e,t.advancedFraudSignals),r(`load`,c.value)}catch(e){let t=e instanceof Error?e.message:`Failed to load Stripe`;u.value=t,console.error(`[Vue Stripe] Initialization error:`,t),r(`error`,e instanceof Error?e:Error(t))}finally{l.value=!1}};return(0,e.onMounted)(()=>{_()}),(0,e.provide)(o,g),(0,e.provide)(n,{stripe:c,loading:l,error:u}),()=>h(`vue-stripe`,{error:u.value,loading:l.value},i,{},`Loading Stripe...`)}}),_=(0,e.defineComponent)({name:`VueStripeElements`,props:{clientSecret:{type:String,default:void 0},mode:{type:String,default:void 0},currency:{type:String,default:void 0},amount:{type:Number,default:void 0},setupFutureUsage:{type:String,default:void 0},captureMethod:{type:String,default:void 0},appearance:{type:Object,default:void 0},fonts:{type:Array,default:void 0},locale:{type:String,default:void 0},options:{type:Object,default:void 0}},emits:[`ready`,`error`,`update-end`],setup(t,{emit:i,slots:a}){let o=(0,e.inject)(n,null);if(!o)throw new s(`VueStripeElements must be used within VueStripeProvider or an app using createVueStripe()`);let c=(0,e.shallowRef)(null),l=(0,e.ref)(!0),u=(0,e.ref)(null),d=null,f=e=>{if(d?.(),d=null,typeof e.on!=`function`)return;let t=!0,n=()=>{t&&i(`update-end`)};e.on(`update-end`,n),d=()=>{t=!1,e.off?.(`update-end`,n)}},p=()=>{let n=o.stripe.value;if(!n)u.value=`Stripe instance not available`,l.value=!1;else try{u.value=null,l.value=!0;let r={...t.options};delete r.paymentMethodTypes,t.clientSecret&&(r.clientSecret=t.clientSecret),t.mode&&(r.mode=t.mode),t.currency&&(r.currency=t.currency),t.amount!==void 0&&(r.amount=t.amount),t.setupFutureUsage&&(r.setupFutureUsage=t.setupFutureUsage),t.captureMethod&&(r.captureMethod=t.captureMethod),t.appearance&&(r.appearance=t.appearance),t.fonts&&(r.fonts=t.fonts),t.locale&&(r.locale=t.locale),c.value=(t.clientSecret,n.elements(r)),f(c.value),l.value=!1,(0,e.nextTick)(()=>i(`ready`,c.value))}catch(e){let t=e instanceof Error?e.message:`Failed to create elements`;u.value=t,l.value=!1,console.error(`[Vue Stripe] Elements creation error:`,t),i(`error`,t)}};return(0,e.watch)(()=>o.stripe.value,e=>{e&&!c.value&&p()},{immediate:!0}),(0,e.watch)(()=>[t.clientSecret,t.mode,t.currency,t.amount,t.setupFutureUsage],()=>{o.stripe.value&&p()}),(0,e.watch)(()=>[t.appearance,t.locale],()=>{if(!c.value)return;let e={};t.appearance&&(e.appearance=t.appearance),t.locale&&(e.locale=t.locale),Promise.resolve(c.value.update(e)).catch(e=>{let t=e instanceof Error?e.message:`elements.update() failed`;u.value=t,console.error(`[Vue Stripe] Elements update error:`,t),i(`error`,t)})},{deep:!0}),(0,e.onMounted)(()=>{o.stripe.value&&!c.value&&p()}),(0,e.onBeforeUnmount)(()=>{d?.(),d=null}),(0,e.provide)(r,{elements:c,loading:l,error:u}),()=>h(`vue-stripe-elements`,{error:u.value??o.error.value,loading:l.value},a,{},`Initializing Elements...`)}});function v(e,t,n,r){return m(`div`,{class:[e,`vue-stripe-element`]},[t.error&&m(`div`,{class:[`${e}-error`,`vue-stripe-element-error`]},n.error?.({error:t.error})??[m(`div`,{class:`vue-stripe-error-message`},t.error)]),m(`div`,{ref:`mount`,class:{[`${e}-mount`]:!0,"vue-stripe-element-mount":!0,[`${e}-loading`]:t.loading,"vue-stripe-element-loading":t.loading}}),t.loading&&m(`div`,{class:[`${e}-loader`,`vue-stripe-element-loader`]},n.loading?.()??[m(`div`,{class:`vue-stripe-loading-message`},r)])])}var y=e=>{try{return JSON.stringify(e)}catch{return String(Math.random())}},b=(e,t)=>Object.fromEntries(Object.entries(e).filter(([e])=>t.includes(e))),x=[`ready`,`change`,`focus`,`blur`,`escape`];function S(t){let{elementType:n,componentName:o,events:s=x}=t,l=t.loadingText??`Loading ${n}...`,u=t.className??`vue-stripe-${n}-element`;return(0,e.defineComponent)({name:o,props:{options:{type:Object,default:()=>({})}},emits:[...s],setup(d,{emit:f,expose:p,slots:m}){let h=(0,e.shallowRef)(null),g=(0,e.ref)(!0),_=(0,e.ref)(null),b=(0,e.getCurrentInstance)(),x=t.elements===!1?null:(0,e.inject)(r,null),S=(0,e.inject)(i,null),C=(0,e.inject)(a,null);if(!x&&!S&&!C){let e=t.elements===!1?[]:[`VueStripeElements`,`VueStripeCheckoutElementsProvider`];throw t.checkoutForm&&e.push(`VueStripeCheckoutFormProvider`),new c(`${o} must be used within ${e.join(` or `)}`)}let w=()=>(b?.proxy)?.$refs.mount??null,T={};for(let e of s)T[e]=(...n)=>{let r=n[0];e===`ready`&&(g.value=!1),e===`change`&&(_.value=r?.error?.message??null),e===`loaderror`&&(_.value=r?.error?.message??`Element failed to load`,g.value=!1),e===`ready`&&t.readyPayload!==`event`?f(e,h.value):f(e,...n)};let E=e=>t.updateOptions?t.updateOptions({...e}):{...e},D=``,O=e=>{let r=x?.elements.value;if(r)return r.create(n,e);let i=S?.checkout.value;if(i){if(t.checkout)return t.checkout(i,e);throw new c(t.elements===!1?`${o} is not available inside VueStripeCheckoutElementsProvider`:`${o} is not available inside Checkout Sessions; use it within VueStripeElements`)}let a=C?.checkout.value;if(!a)return null;if(!t.checkoutForm)throw new c(`${o} is not available inside VueStripeCheckoutFormProvider`);return t.checkoutForm(a,e)},k=()=>{let e=w();if(!h.value&&e)try{_.value=null;let n=O({...t.defaultOptions?.(),...d.options});if(!n)return;D=y(E(d.options)),g.value=!0,h.value=n;for(let e of s)n.on(e,T[e]);n.mount(e),s.includes(`ready`)||(g.value=!1)}catch(e){_.value=e instanceof Error?e.message:`Failed to create ${n} element`,g.value=!1,console.error(`[Vue Stripe] ${o} creation error:`,_.value),s.includes(`loaderror`)&&f(`loaderror`,{elementType:n,error:{message:_.value}})}};(0,e.watch)(()=>d.options,e=>{let t=h.value;if(!e||!t?.update)return;let n=E(e),r=y(n);if(r===D)return;D=r;let i=e=>console.error(`[Vue Stripe] ${o} update error:`,e instanceof Error?e.message:String(e));try{Promise.resolve(t.update(n)).catch(i)}catch(e){i(e)}},{deep:!0});let A=()=>{let e=h.value;if(e){for(let t of s)e.off?.(t,T[t]);e.destroy(),h.value=null}};return(0,e.watch)(()=>x?.elements.value??S?.checkout.value??C?.checkout.value,(e,t)=>{e!==t&&A(),k()}),(0,e.onMounted)(k),(0,e.onUnmounted)(A),p({element:h,loading:g,error:_,focus:()=>h.value?.focus?.(),blur:()=>h.value?.blur?.(),clear:()=>h.value?.clear?.(),...t.expose?.(h)}),()=>v(u,{error:_.value,loading:g.value},m,l)}})}var C=S({elementType:`payment`,componentName:`VueStripePaymentElement`,events:[...x,`loaderstart`,`loaderror`,`availablepaymentmethodschange`,`carddetailschange`,`savedpaymentmethodupdate`,`savedpaymentmethodremove`],checkout:(e,t)=>e.createPaymentElement(b(t,[`layout`,`paymentMethodOrder`,`readOnly`,`terms`,`fields`,`wallets`,`walletOptions`])),expose:e=>({collapse:()=>e.value?.collapse?.()}),loadingText:`Loading payment form...`}),w=S({elementType:`expressCheckout`,componentName:`VueStripeExpressCheckoutElement`,events:[`ready`,`click`,`confirm`,`cancel`,`focus`,`blur`,`escape`,`shippingaddresschange`,`shippingratechange`,`availablepaymentmethodschange`,`loaderror`],className:`vue-stripe-express-checkout-element`,readyPayload:`event`,checkout:(e,t)=>e.createExpressCheckoutElement(b(t,[`buttonHeight`,`buttonTheme`,`buttonType`,`layout`,`paymentMethods`,`paymentMethodOrder`])),loadingText:`Loading express checkout...`}),T=S({elementType:`card`,componentName:`VueStripeCardElement`,events:[...x,`networkschange`,`loaderror`],loadingText:`Loading card form...`}),E=S({elementType:`cardNumber`,componentName:`VueStripeCardNumberElement`}),D=S({elementType:`cardExpiry`,componentName:`VueStripeCardExpiryElement`}),O=S({elementType:`cardCvc`,componentName:`VueStripeCardCvcElement`}),k=S({elementType:`linkAuthentication`,componentName:`VueStripeLinkAuthenticationElement`,events:[...x,`loaderstart`,`loaderror`],className:`vue-stripe-link-auth`,loadingText:`Loading...`}),A=S({elementType:`address`,componentName:`VueStripeAddressElement`,events:[...x,`loaderstart`,`loaderror`],defaultOptions:()=>({mode:`shipping`}),updateOptions:({mode:e,...t})=>t,checkout:(e,t)=>{let n=b(t,[`contacts`,`display`,`fields`]);return t.mode===`billing`?e.createBillingAddressElement(n):e.createShippingAddressElement(n)},expose:e=>({getValue:t=>t?e.value?.getValue?.(t):e.value?.getValue?.()}),loadingText:`Loading address form...`}),ee=S({elementType:`iban`,componentName:`VueStripeIbanElement`,defaultOptions:()=>({supportedCountries:[`SEPA`]}),loadingText:`Loading IBAN form...`}),te=S({elementType:`auBankAccount`,componentName:`VueStripeAuBankAccountElement`,className:`vue-stripe-au-bank-account-element`,loadingText:`Loading BECS Direct Debit form...`}),j=S({elementType:`paymentMethodMessaging`,componentName:`VueStripePaymentMethodMessagingElement`,events:[`ready`]}),ne=(0,e.defineComponent)({name:`VueStripeCheckout`,props:{sessionUrl:{type:String,default:void 0},buttonText:{type:String,default:`Checkout`},loadingText:{type:String,default:`Redirecting...`},disabled:{type:Boolean,default:!1},buttonClass:{type:String,default:`vue-stripe-checkout-button`}},emits:[`checkout`,`before-redirect`,`success`,`error`],setup(t,{emit:n,expose:r,slots:i}){let a=(0,e.ref)(!1),o=()=>{if(!(a.value||t.disabled)){if(n(`checkout`),!t.sessionUrl){let e=new l("VueStripeCheckout: `sessionUrl` is required (create the Checkout Session on your server)");console.error(`[Vue Stripe] Checkout error:`,e.message),n(`error`,e)}else a.value=!0,n(`before-redirect`,{url:t.sessionUrl}),window.location.replace(t.sessionUrl),n(`success`)}};return r({checkout:o,loading:a}),()=>{let e=i.default;return e?m(`span`,{class:`vue-stripe-checkout-wrapper`,onClick:o},e({checkout:o,loading:a.value,disabled:t.disabled})):m(`button`,{class:t.buttonClass,disabled:a.value||t.disabled,onClick:o},a.value?[m(`span`,{class:`vue-stripe-loading-spinner`}),` ${t.loadingText}`]:t.buttonText)}}}),M=(0,e.defineComponent)({name:`VueStripeCheckoutElementsProvider`,props:{clientSecret:{type:[String,Promise],default:void 0},fetchClientSecret:{type:Function,default:void 0},elementsOptions:{type:Object,default:void 0},adaptivePricing:{type:Object,default:void 0},defaultValues:{type:Object,default:void 0}},emits:[`ready`,`change`,`error`],setup(t,{emit:r,slots:a}){let o=(0,e.inject)(n,null);if(!o)throw new s(`VueStripeCheckoutElementsProvider must be used within VueStripeProvider or an app using createVueStripe()`);let c=(0,e.shallowRef)(null),l=(0,e.shallowRef)(null),u=(0,e.shallowRef)(null),d=(0,e.ref)(!0),f=(0,e.ref)(null),p=!1,g=!1,_=e=>{f.value=e,d.value=!1,console.error(`[Vue Stripe] Checkout init error:`,e),r(`error`,e)},v=()=>{let n=o.stripe.value;if(p||!n)return;let i=t.fetchClientSecret?t.fetchClientSecret():t.clientSecret;if(!i)_("VueStripeCheckoutElementsProvider requires a `clientSecret` (string or Promise) or `fetchClientSecret` prop");else{p=!0;try{let a={clientSecret:i};t.elementsOptions&&(a.elementsOptions=t.elementsOptions),t.adaptivePricing&&(a.adaptivePricing=t.adaptivePricing),t.defaultValues&&(a.defaultValues=t.defaultValues);let o=n.initCheckoutElementsSdk(a);c.value=(0,e.markRaw)(o),o.on(`change`,t=>{g||(u.value=(0,e.markRaw)(t),r(`change`,t))}),o.loadActions().then(t=>{g||(t.type===`error`?_(t.error.message):(l.value=(0,e.markRaw)(t.actions),u.value=(0,e.markRaw)(t.actions.getSession()),d.value=!1,r(`ready`,t.actions)))})}catch(e){p=!1,c.value=null,_(e instanceof Error?e.message:`Failed to initialize Checkout`)}}};return(0,e.watch)(()=>o.stripe.value,e=>{e&&v()},{immediate:!0}),(0,e.onUnmounted)(()=>{g=!0,c.value=null,l.value=null,u.value=null,p=!1}),(0,e.provide)(i,{checkout:c,actions:l,session:u,loading:d,error:f}),()=>{let e=f.value??o.error.value;return e||!c.value?h(`vue-stripe-checkout`,{error:e,loading:!0},a,{},`Initializing Checkout...`):m(`div`,{},a.default?.({checkout:c.value,actions:l.value,session:u.value,loading:d.value}))}}}),N=null,re=(0,e.defineComponent)({name:`VueStripeEmbeddedCheckout`,props:{clientSecret:{type:String,default:void 0},fetchClientSecret:{type:Function,default:void 0},onLineItemsChange:{type:Function,default:void 0}},emits:[`ready`,`complete`,`analytics`,`error`],setup(t,{emit:r,expose:i,slots:a}){let o=(0,e.inject)(n,null);if(!o)throw new s(`VueStripeEmbeddedCheckout must be used within VueStripeProvider`);let c=(0,e.shallowRef)(null),l=(0,e.ref)(!0),u=(0,e.ref)(null),d=(0,e.getCurrentInstance)(),f={},p=!1,m=!1,h=!1,g=()=>(d?.proxy)?.$refs.mount??null,_=()=>{N===f&&(N=null)},y=e=>{u.value=e,l.value=!1,console.error(`[Vue Stripe] Embedded Checkout error:`,e),r(`error`,e)},b=async()=>{let n=o.stripe.value;if(p||h||!m||!n)return;if(p=!0,!t.clientSecret&&!t.fetchClientSecret){y("VueStripeEmbeddedCheckout requires a `clientSecret` or `fetchClientSecret` prop");return}if(N){y(`Only one VueStripeEmbeddedCheckout can be mounted at a time (Stripe allows one Embedded Checkout per page)`);return}N=f;let i={onComplete:()=>r(`complete`),onAnalyticsEvent:e=>r(`analytics`,e)};t.clientSecret&&(i.clientSecret=t.clientSecret),t.fetchClientSecret&&(i.fetchClientSecret=t.fetchClientSecret);let a=t.onLineItemsChange;a&&(i.onLineItemsChange=e=>a(e));try{let t=await n.createEmbeddedCheckoutPage(i);if(h){t.destroy(),_();return}c.value=(0,e.markRaw)(t),t.mount(g()),l.value=!1,r(`ready`,t)}catch(e){if(c.value=null,_(),h)return;y(e instanceof Error?e.message:`Failed to create Embedded Checkout`)}};return(0,e.watch)(()=>o.stripe.value,()=>void b()),(0,e.onMounted)(()=>{m=!0,b()}),(0,e.onUnmounted)(()=>{h=!0;let e=c.value;e&&(e.destroy(),c.value=null,_())}),i({checkout:c,loading:l,error:u}),()=>v(`vue-stripe-embedded-checkout`,{error:u.value,loading:l.value},a,`Loading checkout...`)}}),ie=(0,e.defineComponent)({name:`VueStripeCheckoutFormProvider`,props:{clientSecret:{type:[String,Promise],default:void 0},fetchClientSecret:{type:Function,default:void 0},appearance:{type:Object,default:void 0},loader:{type:String,default:void 0},fonts:{type:Array,default:void 0},savedPaymentMethod:{type:Object,default:void 0},defaultValues:{type:Object,default:void 0}},emits:[`ready`,`change`,`error`],setup(t,{emit:r,slots:i}){let o=(0,e.inject)(n,null);if(!o)throw new s(`VueStripeCheckoutFormProvider must be used within VueStripeProvider or an app using createVueStripe()`);let c=(0,e.shallowRef)(null),l=(0,e.shallowRef)(null),u=(0,e.shallowRef)(null),d=(0,e.ref)(!0),f=(0,e.ref)(null),p=!1,g=!1,_=e=>{f.value=e,d.value=!1,console.error(`[Vue Stripe] Checkout Form init error:`,e),r(`error`,e)},v=()=>{let n=o.stripe.value;if(p||!n)return;let i=t.fetchClientSecret?t.fetchClientSecret():t.clientSecret;if(!i)_("VueStripeCheckoutFormProvider requires a `clientSecret` (string or Promise) or `fetchClientSecret` prop");else{p=!0;try{let a={clientSecret:i};t.appearance&&(a.appearance=t.appearance),t.loader&&(a.loader=t.loader),t.fonts&&(a.fonts=t.fonts),t.savedPaymentMethod&&(a.savedPaymentMethod=t.savedPaymentMethod),t.defaultValues&&(a.defaultValues=t.defaultValues);let o=n.initCheckoutFormSdk(a);c.value=(0,e.markRaw)(o),o.on(`change`,t=>{g||(u.value=(0,e.markRaw)(t),r(`change`,t))}),o.loadActions().then(t=>{g||(t.type===`error`?_(t.error.message):(l.value=(0,e.markRaw)(t.actions),u.value=(0,e.markRaw)(t.actions.getSession()),d.value=!1,r(`ready`,t.actions)))})}catch(e){p=!1,c.value=null,_(e instanceof Error?e.message:`Failed to initialize the Checkout Form`)}}};return(0,e.watch)(()=>o.stripe.value,e=>{e&&v()},{immediate:!0}),(0,e.onUnmounted)(()=>{g=!0,c.value=null,l.value=null,u.value=null,p=!1}),(0,e.provide)(a,{checkout:c,actions:l,session:u,loading:d,error:f}),()=>f.value||!c.value?h(`vue-stripe-checkout`,{error:f.value,loading:!0},i,{},`Initializing Checkout Form...`):m(`div`,{},i.default?.({checkout:c.value,actions:l.value,session:u.value,loading:d.value}))}}),ae=S({elementType:`checkoutForm`,componentName:`VueStripeCheckoutForm`,events:[`ready`,`change`,`confirm`,`cancel`,`focus`,`blur`,`escape`,`loaderstart`,`loaderror`],elements:!1,checkoutForm:(e,t)=>e.createForm(t),expose:e=>({getValue:async()=>e.value?.getValue?.(),setView:async t=>e.value?.setView(t)}),className:`vue-stripe-checkout-form`,loadingText:`Loading checkout form...`}),oe=S({elementType:`taxId`,componentName:`VueStripeTaxIdElement`,events:[...x,`loaderstart`,`loaderror`],checkout:(e,t)=>e.createTaxIdElement(t),expose:e=>({getValue:()=>e.value?.getValue?.()}),className:`vue-stripe-tax-id-element`,loadingText:`Loading tax ID form...`}),se=S({elementType:`currencySelector`,componentName:`VueStripeCurrencySelectorElement`,events:[`ready`,`focus`,`blur`,`escape`,`loaderror`],checkout:e=>e.createCurrencySelectorElement(),checkoutForm:e=>e.createCurrencySelectorElement(),className:`vue-stripe-currency-selector-element`,loadingText:`Loading currency selector...`}),P=S({elementType:`contactDetails`,componentName:`VueStripeContactDetailsElement`,events:[...x,`loaderstart`,`loaderror`],checkout:e=>e.createContactDetailsElement(),className:`vue-stripe-contact-details-element`,loadingText:`Loading contact details...`}),F=S({elementType:`terms`,componentName:`VueStripeTermsElement`,events:[`ready`,`focus`,`blur`,`escape`,`loaderstart`,`loaderror`],checkout:e=>e.createTermsElement(),className:`vue-stripe-terms-element`,loadingText:`Loading terms...`}),I=S({elementType:`linkSignup`,componentName:`VueStripeLinkSignupElement`,events:[`ready`,`focus`,`blur`,`escape`,`loaderstart`,`loaderror`],checkout:(e,t)=>e.createLinkSignupElement(b(t,[`defaultValues`])),className:`vue-stripe-link-signup-element`,loadingText:`Loading Link signup...`});function L(t){let{componentName:r,method:i,optionKeys:a,className:o}=t;return(0,e.defineComponent)({name:r,props:{stripe:{type:[Object,Promise],default:void 0},options:{type:Object,default:void 0}},emits:[`load`,`error`],setup(t,{emit:c,expose:l,slots:u}){let d=(0,e.inject)(n,null);if(t.stripe===void 0&&!d)throw new s(`${r} needs a \`stripe\` prop, a VueStripeProvider ancestor or an app using createVueStripe()`);let f=(0,e.ref)(!0),p=(0,e.ref)(null),m=(0,e.getCurrentInstance)(),h=()=>(m?.proxy)?.$refs.mount??null,g=()=>t.stripe===void 0?d?.stripe.value:t.stripe,_=()=>JSON.stringify(a.map(e=>t.options?.[e])),y=0,b=e=>{p.value=e.message??`${r} failed to load`,c(`error`,e)},x=async()=>{let n=++y,o=g(),l=Object.fromEntries(a.map(e=>[e,t.options?.[e]])),u=await o,d=u?(0,e.toRaw)(u):null;if(n===y&&d){f.value=!0,p.value=null;try{let e=d[i];if(typeof e!=`function`)throw new s(`stripe.${i}() is not available in this Stripe.js version`);let t=await e.call(d,l);if(n!==y)return;let r=h();t.error?b(t.error):t.htmlElement&&r&&(r.innerHTML=``,r.appendChild(t.htmlElement),c(`load`))}catch(e){if(n!==y)return;let t=e instanceof Error?e.message:String(e);console.error(`[Vue Stripe] ${r} error:`,t),b({message:t})}finally{n===y&&(f.value=!1)}}};return(0,e.watch)([g,_],()=>void x()),(0,e.onMounted)(()=>void x()),(0,e.onUnmounted)(()=>{y++}),l({loading:f,error:p}),()=>v(o,{error:p.value,loading:f.value&&!p.value},u,`Loading disclosure...`)}})}var R=L({componentName:`VueStripeFinancialAccountDisclosure`,method:`createFinancialAccountDisclosure`,optionKeys:[`businessName`,`learnMoreLink`],className:`vue-stripe-financial-account-disclosure`}),z=L({componentName:`VueStripeIssuingDisclosure`,method:`createIssuingDisclosure`,optionKeys:[`issuingProgramID`,`publicCardProgramName`,`learnMoreLink`],className:`vue-stripe-issuing-disclosure`}),B=L({componentName:`VueStripeTreasuryDisclosure`,method:`createTreasuryDisclosure`,optionKeys:[`businessName`,`learnMoreLink`],className:`vue-stripe-treasury-disclosure`}),V=S({elementType:`issuingCardNumberDisplay`,componentName:`VueStripeIssuingCardNumberDisplayElement`,events:[`ready`],className:`vue-stripe-issuing-card-number-display-element`,loadingText:`Loading card number...`}),H=S({elementType:`issuingCardCvcDisplay`,componentName:`VueStripeIssuingCardCvcDisplayElement`,events:[],className:`vue-stripe-issuing-card-cvc-display-element`,loadingText:`Loading CVC...`}),U=S({elementType:`issuingCardExpiryDisplay`,componentName:`VueStripeIssuingCardExpiryDisplayElement`,events:[],className:`vue-stripe-issuing-card-expiry-display-element`,loadingText:`Loading expiry date...`}),W=S({elementType:`issuingCardPinDisplay`,componentName:`VueStripeIssuingCardPinDisplayElement`,events:[],className:`vue-stripe-issuing-card-pin-display-element`,loadingText:`Loading PIN...`}),G=S({elementType:`issuingCardCopyButton`,componentName:`VueStripeIssuingCardCopyButtonElement`,events:[`click`],className:`vue-stripe-issuing-card-copy-button-element`,loadingText:`Loading copy button...`}),K=S({elementType:`issuingAddToWalletButton`,componentName:`VueStripeIssuingAddToWalletButtonElement`,events:[`click`,`success`],className:`vue-stripe-issuing-add-to-wallet-button-element`,loadingText:`Loading Add to Wallet button...`}),q=`https://js.stripe.com/v3/pricing-table.js`,ce=()=>new Promise((e,t)=>{if(document.querySelector(`script[src="${q}"]`)){e();return}let n=document.createElement(`script`);n.src=q,n.async=!0,n.onload=()=>e(),n.onerror=()=>t(Error(`Failed to load Stripe pricing table script`)),document.head.appendChild(n)}),le=(0,e.defineComponent)({name:`VueStripePricingTable`,props:{pricingTableId:{type:String,required:!0},customerEmail:{type:String,default:void 0},customerSessionClientSecret:{type:String,default:void 0},clientReferenceId:{type:String,default:void 0}},emits:[`load`,`error`],setup(t,{emit:n,expose:r,slots:i}){let a=(0,e.inject)(o,null);if(!a?.publishableKey)throw new s(`VueStripePricingTable must be used within a VueStripeProvider component or an app using createVueStripe()`);let c=a.publishableKey,l=(0,e.ref)(!0),u=(0,e.ref)(null);return(0,e.onMounted)(async()=>{try{l.value=!0,u.value=null,await ce(),l.value=!1,n(`load`)}catch(e){let t=e instanceof Error?e.message:`Failed to load pricing table`;u.value=t,l.value=!1,n(`error`,e instanceof Error?e:Error(t)),console.error(`[Vue Stripe] Pricing table error:`,t)}}),r({loading:l,error:u}),()=>m(`div`,{class:`vue-stripe-pricing-table`},[...l.value?i.loading?.()??[m(`div`,{class:`vue-stripe-pricing-table-loading`},`Loading pricing table...`)]:u.value?i.error?.({error:u.value})??[m(`div`,{class:`vue-stripe-pricing-table-error`},u.value)]:[],m(`stripe-pricing-table`,{"pricing-table-id":t.pricingTableId,"publishable-key":c,"customer-email":t.customerEmail,"customer-session-client-secret":t.customerSessionClientSecret,"client-reference-id":t.clientReferenceId,style:l.value||u.value?{display:`none`}:void 0})])}});function ue(){let t=(0,e.inject)(n);if(!t)throw new s(`useStripe must be called within a VueStripeProvider component or an app using createVueStripe()`);return{stripe:(0,e.computed)(()=>t.stripe.value),loading:(0,e.readonly)(t.loading),error:(0,e.readonly)(t.error),initialize:async()=>{}}}function de(){let t=(0,e.inject)(n),i=(0,e.inject)(r);if(!t)throw new s(`usePaymentIntent must be called within a VueStripeProvider component or an app using createVueStripe()`);let a=(0,e.ref)(!1),o=(0,e.ref)(null);return{confirmPayment:async e=>{if(!t.stripe.value)return o.value=`Stripe not initialized`,{error:{message:`Stripe not initialized`}};a.value=!0,o.value=null;try{let n=e.elements??i?.elements.value;if(n&&!e.skipSubmit){let{error:e}=await n.submit();if(e)return o.value=e.message||`Form validation failed`,{error:e}}let r=t.stripe.value,a={clientSecret:e.clientSecret,...n?{elements:n}:{}},s=e.redirect===`always`?await r.confirmPayment({...a,confirmParams:e.confirmParams??{},redirect:`always`}):await r.confirmPayment({...a,confirmParams:e.confirmParams??{},redirect:`if_required`});return s.error&&(o.value=s.error.message||`Payment confirmation failed`),s}catch(e){let t=e instanceof Error?e.message:`Payment confirmation failed`;return o.value=t,{error:{message:t}}}finally{a.value=!1}},retrievePaymentIntent:async e=>{if(!t.stripe.value)return o.value=`Stripe not initialized`,{error:{message:`Stripe not initialized`}};a.value=!0,o.value=null;try{let n=await t.stripe.value.retrievePaymentIntent(e);return n.error&&(o.value=n.error.message||`Failed to retrieve payment intent`),n}catch(e){let t=e instanceof Error?e.message:`Failed to retrieve payment intent`;return o.value=t,{error:{message:t}}}finally{a.value=!1}},loading:(0,e.readonly)(a),error:(0,e.readonly)(o)}}function fe(){let t=(0,e.inject)(n),i=(0,e.inject)(r);if(!t)throw new s(`useSetupIntent must be called within a VueStripeProvider component or an app using createVueStripe()`);let a=(0,e.ref)(!1),o=(0,e.ref)(null);return{confirmSetup:async e=>{if(!t.stripe.value)return o.value=`Stripe not initialized`,{error:{message:`Stripe not initialized`}};a.value=!0,o.value=null;try{let n=e.elements??i?.elements.value;if(n&&!e.skipSubmit){let{error:e}=await n.submit();if(e)return o.value=e.message||`Form validation failed`,{error:e}}let r=t.stripe.value,a={clientSecret:e.clientSecret,...n?{elements:n}:{}},s=e.redirect===`always`?await r.confirmSetup({...a,confirmParams:e.confirmParams??{},redirect:`always`}):await r.confirmSetup({...a,confirmParams:e.confirmParams??{},redirect:`if_required`});return s.error&&(o.value=s.error.message||`Setup confirmation failed`),s}catch(e){let t=e instanceof Error?e.message:`Setup confirmation failed`;return o.value=t,{error:{message:t}}}finally{a.value=!1}},retrieveSetupIntent:async e=>{if(!t.stripe.value)return o.value=`Stripe not initialized`,{error:{message:`Stripe not initialized`}};a.value=!0,o.value=null;try{let n=await t.stripe.value.retrieveSetupIntent(e);return n.error&&(o.value=n.error.message||`Failed to retrieve setup intent`),n}catch(e){let t=e instanceof Error?e.message:`Failed to retrieve setup intent`;return o.value=t,{error:{message:t}}}finally{a.value=!1}},loading:(0,e.readonly)(a),error:(0,e.readonly)(o)}}function J(){let t=(0,e.ref)(!1),n=(0,e.ref)(null),r=e=>{t.value=!0,n.value=null,window.location.replace(e)};return{redirectToCheckout:({url:e})=>e?(r(e),Promise.resolve()):(n.value="useStripeCheckout: `url` is required (Checkout Session URL from your server)",Promise.reject(new l(n.value))),redirectToUrl:r,loading:(0,e.readonly)(t),error:(0,e.readonly)(n)}}function Y(){let t=(0,e.inject)(r);if(!t)throw new c(`Elements context not found. Make sure to wrap your component with VueStripeElements.`);return{elements:(0,e.computed)(()=>t.elements.value),submit:async()=>t.elements.value?t.elements.value.submit():{error:{message:`Elements not initialized`}},fetchUpdates:async()=>t.elements.value?t.elements.value.fetchUpdates():{error:{message:`Elements not initialized`}},getElement:((e,n)=>{let r=t.elements.value;return r?r.getElement.bind(r)(e,n):null}),loading:(0,e.readonly)(t.loading),error:(0,e.readonly)(t.error)}}function pe(){let t=(0,e.inject)(n),i=(0,e.inject)(r);if(!t)throw new s(`useCreatePaymentMethod must be called within a VueStripeProvider component or an app using createVueStripe()`);let a=(0,e.ref)(!1),o=(0,e.ref)(null);return{createPaymentMethod:async(e={})=>{if(!t.stripe.value)return o.value=`Stripe not initialized`,{error:{message:`Stripe not initialized`}};a.value=!0,o.value=null;try{let{skipSubmit:n,...r}=e,a={...r};if(!a.elements&&!a.type){let e=i?.elements.value;e&&(a.elements=e)}if(a.elements&&!n){let{error:e}=await a.elements.submit();if(e)return o.value=e.message||`Form validation failed`,{error:e}}let s=t.stripe.value,c=(a.elements,await s.createPaymentMethod(a));return c.error&&(o.value=c.error.message||`Failed to create payment method`),c}catch(e){let t=e instanceof Error?e.message:`Failed to create payment method`;return o.value=t,{error:{message:t}}}finally{a.value=!1}},loading:(0,e.readonly)(a),error:(0,e.readonly)(o)}}function me(){let t=(0,e.inject)(n);if(!t)throw new s(`useHandleNextAction must be called within a VueStripeProvider component or an app using createVueStripe()`);let r=(0,e.ref)(!1),i=(0,e.ref)(null);return{handleNextAction:async e=>{if(!t.stripe.value)return i.value=`Stripe not initialized`,{error:{message:`Stripe not initialized`}};r.value=!0,i.value=null;try{let n=t.stripe.value,r=`hashedValue`in e?await n.handleNextAction({hashedValue:e.hashedValue}):await n.handleNextAction({clientSecret:e.clientSecret});return r.error&&(i.value=r.error.message||`Failed to handle next action`),r}catch(e){let t=e instanceof Error?e.message:`Failed to handle next action`;return i.value=t,{error:{message:t}}}finally{r.value=!1}},loading:(0,e.readonly)(r),error:(0,e.readonly)(i)}}function X(t,r,i){let a=(0,e.inject)(n);if(!a)throw new s(`${t} must be called within a VueStripeProvider component`);let o=(0,e.ref)(!1),c=(0,e.ref)(null),l=0;return{[r]:async(...e)=>{l++,o.value=!0,c.value=null;try{let t=a.stripe.value;if(!t)throw new s(`Stripe.js is not loaded yet`);let n=await i(t,e),o=n?.error;return o&&(c.value=o.message||`${r} failed`),n}catch(e){throw c.value=e instanceof Error?e.message:String(e),e}finally{o.value=--l>0}},loading:(0,e.readonly)(o),error:(0,e.readonly)(c)}}function Z(e,t=`use${e.charAt(0).toUpperCase()}${e.slice(1)}`){return()=>X(t,e,(t,n)=>t[e].apply(t,n))}var he=Z(`createToken`);function ge(){let t=(0,e.inject)(r,null);return X(`useCreateConfirmationToken`,`createConfirmationToken`,async(e,[n={}])=>{let{skipSubmit:r,params:i,elements:a=t?.elements.value}=n;if(!a)throw new c("useCreateConfirmationToken needs an Elements instance: pass `elements` or call it inside <VueStripeElements>");if(!r){let{error:e}=await a.submit();if(e)return{error:e}}return e.createConfirmationToken(i?{elements:a,params:i}:{elements:a})})}var _e=Z(`handleCardAction`),ve=Z(`verifyMicrodepositsForPayment`),ye=Z(`verifyMicrodepositsForSetup`),be=Z(`createRadarSession`,`useRadarSession`),xe=Z(`createEphemeralKeyNonce`,`useEphemeralKeyNonce`);function Se(){let t=(0,e.inject)(i,null);if(!t)throw new l(`useCheckoutSession must be used within a VueStripeCheckoutElementsProvider component`);let n=e=>(...n)=>{let r=t.actions.value,i=r?.[e];return typeof i==`function`?i.apply(r,n):Promise.resolve({type:`error`,error:{message:`Checkout session is not ready yet`,code:null}})},r=(e,n)=>{t.checkout.value?n():console.warn(`[Vue Stripe] ${e} called before the Checkout session is ready`)},a=e=>(()=>t.checkout.value?.[e]()??null);return{checkout:(0,e.computed)(()=>t.checkout.value),actions:(0,e.computed)(()=>t.actions.value),session:(0,e.computed)(()=>t.session.value),loading:(0,e.readonly)(t.loading),error:(0,e.readonly)(t.error),getSession:()=>t.actions.value?.getSession()??null,confirm:n(`confirm`),applyPromotionCode:n(`applyPromotionCode`),removePromotionCode:n(`removePromotionCode`),updateEmail:n(`updateEmail`),updatePhoneNumber:n(`updatePhoneNumber`),updateBillingAddress:n(`updateBillingAddress`),updateShippingAddress:n(`updateShippingAddress`),updateLineItemQuantity:n(`updateLineItemQuantity`),updateShippingOption:n(`updateShippingOption`),updateTaxIdInfo:n(`updateTaxIdInfo`),runServerUpdate:n(`runServerUpdate`),validateElements:n(`validateElements`),addOptionalLineItem:n(`addOptionalLineItem`),removeOptionalLineItem:n(`removeOptionalLineItem`),changeAppearance:e=>r(`changeAppearance`,()=>t.checkout.value?.changeAppearance(e)),loadFonts:e=>r(`loadFonts`,()=>t.checkout.value?.loadFonts(e)),getPaymentElement:a(`getPaymentElement`),getBillingAddressElement:a(`getBillingAddressElement`),getShippingAddressElement:a(`getShippingAddressElement`),getExpressCheckoutElement:a(`getExpressCheckoutElement`),getCurrencySelectorElement:a(`getCurrencySelectorElement`),getTaxIdElement:a(`getTaxIdElement`),getTermsElement:a(`getTermsElement`),getLinkSignupElement:a(`getLinkSignupElement`)}}var Ce=Z(`confirmAcssDebitPayment`),we=Z(`confirmAcssDebitSetup`),Te=Z(`confirmAffirmPayment`),Ee=Z(`confirmAfterpayClearpayPayment`),De=Z(`confirmAlipayPayment`),Oe=Z(`confirmAmazonPaySetup`),ke=Z(`confirmAuBecsDebitPayment`),Ae=Z(`confirmAuBecsDebitSetup`),je=Z(`confirmBacsDebitSetup`),Me=Z(`confirmBancontactPayment`),Ne=Z(`confirmBancontactSetup`),Pe=Z(`confirmBilliePayment`),Fe=Z(`confirmBlikPayment`),Ie=Z(`confirmBlikSetup`),Le=Z(`confirmBoletoPayment`),Re=Z(`confirmCardPayment`),ze=Z(`confirmCardSetup`),Be=Z(`confirmCashappPayment`),Ve=Z(`confirmCashappSetup`),He=Z(`confirmCustomerBalancePayment`),Ue=Z(`confirmEpsPayment`),We=Z(`confirmFpxPayment`),Ge=Z(`confirmGiropayPayment`),Ke=Z(`confirmGrabPayPayment`),qe=Z(`confirmIdealPayment`),Je=Z(`confirmIdealSetup`),Ye=Z(`confirmKlarnaPayment`),Xe=Z(`confirmKonbiniPayment`),Ze=Z(`confirmMobilepayPayment`),Qe=Z(`confirmMultibancoPayment`),$e=Z(`confirmOxxoPayment`),et=Z(`confirmP24Payment`),tt=Z(`confirmPayByBankPayment`),nt=Z(`confirmPayNowPayment`),rt=Z(`confirmPayPalPayment`),it=Z(`confirmPayPalSetup`),at=Z(`confirmPixPayment`),ot=Z(`confirmPromptPayPayment`),st=Z(`confirmSepaDebitPayment`),ct=Z(`confirmSepaDebitSetup`),lt=Z(`confirmSofortPayment`),ut=Z(`confirmSofortSetup`),dt=Z(`confirmTwintPayment`),ft=Z(`confirmUsBankAccountPayment`),pt=Z(`confirmUsBankAccountSetup`),Q=Z(`confirmWechatPayPayment`);function mt(){let t=(0,e.inject)(n);if(!t)throw new s(`useFinancialConnections must be called within a VueStripeProvider component`);let r=(0,e.ref)(!1),i=(0,e.ref)(null),a=async(e,n)=>{if(!t.stripe.value)return i.value=`Stripe not initialized`,{error:{message:`Stripe not initialized`}};r.value=!0,i.value=null;try{let r=await e(t.stripe.value);return r.error&&(i.value=r.error.message||n),r}catch(e){let t=e instanceof Error?e.message:n;return i.value=t,{error:{message:t}}}finally{r.value=!1}};return{collectFinancialConnectionsAccounts:e=>a(t=>t.collectFinancialConnectionsAccounts(e),`Failed to collect financial accounts`),collectBankAccountForPayment:e=>a(t=>t.collectBankAccountForPayment(e),`Failed to collect bank account`),collectBankAccountForSetup:e=>a(t=>t.collectBankAccountForSetup(e),`Failed to collect bank account`),collectBankAccountToken:e=>a(t=>t.collectBankAccountToken(e),`Failed to collect bank account token`),loading:(0,e.readonly)(r),error:(0,e.readonly)(i)}}function ht(){let t=(0,e.inject)(n);if(!t)throw new s(`useIdentity must be called within a VueStripeProvider component`);let r=(0,e.ref)(!1),i=(0,e.ref)(null);return{verifyIdentity:async e=>{if(!t.stripe.value)return i.value=`Stripe not initialized`,{error:{message:`Stripe not initialized`}};r.value=!0,i.value=null;try{let n=await t.stripe.value.verifyIdentity(e);return n.error&&(i.value=n.error.message||`Failed to verify identity`),n}catch(e){let t=e instanceof Error?e.message:`Failed to verify identity`;return i.value=t,{error:{message:t}}}finally{r.value=!1}},loading:(0,e.readonly)(r),error:(0,e.readonly)(i)}}function gt(){let t=(0,e.inject)(a,null);if(!t)throw new l(`useCheckoutForm must be used within a VueStripeCheckoutFormProvider component`);let n=e=>(...n)=>{let r=t.actions.value,i=r?.[e];return typeof i==`function`?i.apply(r,n):Promise.resolve({type:`error`,error:{message:`Checkout session is not ready yet`,code:null}})},r=(e,n)=>{t.checkout.value?n():console.warn(`[Vue Stripe] ${e} called before the Checkout Form is ready`)};return{checkout:(0,e.computed)(()=>t.checkout.value),actions:(0,e.computed)(()=>t.actions.value),session:(0,e.computed)(()=>t.session.value),loading:(0,e.readonly)(t.loading),error:(0,e.readonly)(t.error),getSession:()=>t.actions.value?.getSession()??null,confirm:n(`confirm`),applyPromotionCode:n(`applyPromotionCode`),removePromotionCode:n(`removePromotionCode`),updateLineItemQuantity:n(`updateLineItemQuantity`),updateShippingOption:n(`updateShippingOption`),runServerUpdate:n(`runServerUpdate`),validateElements:n(`validateElements`),addOptionalLineItem:n(`addOptionalLineItem`),removeOptionalLineItem:n(`removeOptionalLineItem`),changeAppearance:e=>r(`changeAppearance`,()=>t.checkout.value?.changeAppearance(e)),loadFonts:e=>r(`loadFonts`,()=>t.checkout.value?.loadFonts(e)),getForm:()=>t.checkout.value?.getForm()??null,getCurrencySelectorElement:()=>t.checkout.value?.getCurrencySelectorElement()??null}}var $=(e,t)=>e instanceof Error?e.message:t;function _t(t){let r=(0,e.inject)(n);if(!r)throw new s(`usePaymentRequest must be called within a VueStripeProvider component`);let i=(0,e.shallowRef)(null),a=(0,e.ref)(null),o=(0,e.ref)(!1),c=(0,e.ref)(null),l=[],u=0,d=e=>e,f=()=>{u++;let e=i.value;if(e)for(let{event:t,handler:n}of l)d(e).off(t,n);i.value=null,a.value=null,o.value=!1},p=e=>{f(),c.value=null;let n;try{n=e.paymentRequest(t)}catch(e){c.value=$(e,`Failed to create the PaymentRequest`);return}i.value=n;for(let{event:e,handler:t}of l)d(n).on(e,t);let r=u;o.value=!0,n.canMakePayment().then(e=>{r===u&&(a.value=e,o.value=!1)},e=>{r===u&&(c.value=$(e,`Failed to check for a wallet`),o.value=!1)})};(0,e.watch)(()=>r.stripe.value,e=>e?p(e):f(),{immediate:!0});let m=(e,t)=>{let n=i.value;if(!n)c.value=`PaymentRequest is not ready`;else try{t(n),c.value=null}catch(t){c.value=$(t,`Failed to call ${e}()`)}},h=(e,t)=>{let n=l.filter(n=>n.event===e&&(!t||n.handler===t));for(let t of n)l.splice(l.indexOf(t),1),i.value&&d(i.value).off(e,t.handler)},g=(e,t)=>(l.push({event:e,handler:t}),i.value&&d(i.value).on(e,t),()=>h(e,t));return(0,e.getCurrentScope)()&&(0,e.onScopeDispose)(()=>{let e=i.value;e?.isShowing()&&e.abort(),f(),l.length=0}),{paymentRequest:(0,e.computed)(()=>i.value),canMakePayment:(0,e.computed)(()=>a.value),show:()=>m(`show`,e=>e.show()),update:e=>m(`update`,t=>t.update(e)),abort:()=>m(`abort`,e=>e.abort()),isShowing:()=>i.value?.isShowing()??!1,on:g,once:(e,t)=>{let n=t,r=((...t)=>(h(e,r),n(...t)));return g(e,r)},off:h,loading:(0,e.readonly)(o),error:(0,e.readonly)(c)}}function vt(t){let n=(0,e.shallowRef)(null),r=(0,e.ref)(!0),i=(0,e.ref)(null),a=!1,o=()=>{if(a||typeof window>`u`)return;a=!0;let e={};t.stripeAccount&&(e.stripeAccount=t.stripeAccount),t.apiVersion&&(e.apiVersion=t.apiVersion),t.locale&&(e.locale=t.locale),t.developerTools&&(e.developerTools=t.developerTools),p(t.publishableKey,e,t.advancedFraudSignals).then(e=>{n.value=e}).catch(e=>{let t=e instanceof Error?e.message:`Failed to load Stripe`;i.value=t,console.error(`[Vue Stripe] Initialization error:`,t)}).finally(()=>{r.value=!1})};return{get stripe(){return o(),n},get loading(){return o(),r},get error(){return o(),i}}}function yt(t){let r={publishableKey:t.publishableKey,stripeAccount:t.stripeAccount,apiVersion:t.apiVersion,locale:t.locale},i=vt(t);return{install(t){e.isVue2?t.mixin({provide(){return this.$root===this?{[o]:r,[n]:i}:{}}}):(t.provide(o,r),t.provide(n,i))}}}exports.VueStripeAddressElement=A,exports.VueStripeAuBankAccountElement=te,exports.VueStripeCardCvcElement=O,exports.VueStripeCardElement=T,exports.VueStripeCardExpiryElement=D,exports.VueStripeCardNumberElement=E,exports.VueStripeCheckout=ne,exports.VueStripeCheckoutElementsProvider=M,exports.VueStripeCheckoutProvider=M,exports.VueStripeCheckoutError=l,exports.VueStripeCheckoutForm=ae,exports.VueStripeCheckoutFormProvider=ie,exports.VueStripeContactDetailsElement=P,exports.VueStripeCurrencySelectorElement=se,exports.VueStripeElements=_,exports.VueStripeElementsError=c,exports.VueStripeEmbeddedCheckout=re,exports.VueStripeExpressCheckoutElement=w,exports.VueStripeFinancialAccountDisclosure=R,exports.VueStripeIbanElement=ee,exports.VueStripeIssuingAddToWalletButtonElement=K,exports.VueStripeIssuingCardCopyButtonElement=G,exports.VueStripeIssuingCardCvcDisplayElement=H,exports.VueStripeIssuingCardExpiryDisplayElement=U,exports.VueStripeIssuingCardNumberDisplayElement=V,exports.VueStripeIssuingCardPinDisplayElement=W,exports.VueStripeIssuingDisclosure=z,exports.VueStripeLinkAuthenticationElement=k,exports.VueStripeLinkSignupElement=I,exports.VueStripePaymentElement=C,exports.VueStripePaymentMethodMessagingElement=j,exports.VueStripePricingTable=le,exports.VueStripeProvider=g,exports.VueStripeProviderError=s,exports.VueStripeTaxIdElement=oe,exports.VueStripeTermsElement=F,exports.VueStripeTreasuryDisclosure=B,exports.createVueStripe=yt,exports.loadStripe=f,exports.useCheckout=J,exports.useStripeCheckout=J,exports.useCheckoutForm=gt,exports.useCheckoutSession=Se,exports.useConfirmAcssDebitPayment=Ce,exports.useConfirmAcssDebitSetup=we,exports.useConfirmAffirmPayment=Te,exports.useConfirmAfterpayClearpayPayment=Ee,exports.useConfirmAlipayPayment=De,exports.useConfirmAmazonPaySetup=Oe,exports.useConfirmAuBecsDebitPayment=ke,exports.useConfirmAuBecsDebitSetup=Ae,exports.useConfirmBacsDebitSetup=je,exports.useConfirmBancontactPayment=Me,exports.useConfirmBancontactSetup=Ne,exports.useConfirmBilliePayment=Pe,exports.useConfirmBlikPayment=Fe,exports.useConfirmBlikSetup=Ie,exports.useConfirmBoletoPayment=Le,exports.useConfirmCardPayment=Re,exports.useConfirmCardSetup=ze,exports.useConfirmCashappPayment=Be,exports.useConfirmCashappSetup=Ve,exports.useConfirmCustomerBalancePayment=He,exports.useConfirmEpsPayment=Ue,exports.useConfirmFpxPayment=We,exports.useConfirmGiropayPayment=Ge,exports.useConfirmGrabPayPayment=Ke,exports.useConfirmIdealPayment=qe,exports.useConfirmIdealSetup=Je,exports.useConfirmKlarnaPayment=Ye,exports.useConfirmKonbiniPayment=Xe,exports.useConfirmMobilepayPayment=Ze,exports.useConfirmMultibancoPayment=Qe,exports.useConfirmOxxoPayment=$e,exports.useConfirmP24Payment=et,exports.useConfirmPayByBankPayment=tt,exports.useConfirmPayNowPayment=nt,exports.useConfirmPayPalPayment=rt,exports.useConfirmPayPalSetup=it,exports.useConfirmPixPayment=at,exports.useConfirmPromptPayPayment=ot,exports.useConfirmSepaDebitPayment=st,exports.useConfirmSepaDebitSetup=ct,exports.useConfirmSofortPayment=lt,exports.useConfirmSofortSetup=ut,exports.useConfirmTwintPayment=dt,exports.useConfirmUsBankAccountPayment=ft,exports.useConfirmUsBankAccountSetup=pt,exports.useConfirmWechatPayPayment=Q,exports.useCreateConfirmationToken=ge,exports.useCreatePaymentMethod=pe,exports.useCreateToken=he,exports.useElements=Y,exports.useStripeElements=Y,exports.useEphemeralKeyNonce=xe,exports.useFinancialConnections=mt,exports.useHandleCardAction=_e,exports.useHandleNextAction=me,exports.useIdentity=ht,exports.usePaymentIntent=de,exports.usePaymentRequest=_t,exports.useRadarSession=be,exports.useSetupIntent=fe,exports.useStripe=ue,exports.useVerifyMicrodepositsForPayment=ve,exports.useVerifyMicrodepositsForSetup=ye;
|