@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.
Files changed (134) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/README.md +83 -115
  3. package/dist/cjs/index.js +1 -1
  4. package/dist/es/index.js +1498 -1714
  5. package/dist/types/components/VueStripeAddressElement.d.ts +16 -0
  6. package/dist/types/components/VueStripeAuBankAccountElement.d.ts +6 -0
  7. package/dist/types/components/VueStripeCardCvcElement.d.ts +6 -0
  8. package/dist/types/components/VueStripeCardElement.d.ts +11 -0
  9. package/dist/types/components/VueStripeCardExpiryElement.d.ts +6 -0
  10. package/dist/types/components/VueStripeCardNumberElement.d.ts +6 -0
  11. package/dist/types/components/VueStripeCheckout.d.ts +65 -0
  12. package/dist/types/components/VueStripeCheckoutElementsProvider.d.ts +81 -0
  13. package/dist/types/components/VueStripeCheckoutForm.d.ts +29 -0
  14. package/dist/types/components/VueStripeCheckoutFormProvider.d.ts +102 -0
  15. package/dist/types/components/VueStripeContactDetailsElement.d.ts +13 -0
  16. package/dist/types/components/VueStripeCurrencySelectorElement.d.ts +17 -0
  17. package/dist/types/components/VueStripeElements.d.ts +122 -0
  18. package/dist/types/components/VueStripeEmbeddedCheckout.d.ts +62 -0
  19. package/dist/types/components/VueStripeExpressCheckoutElement.d.ts +26 -0
  20. package/dist/types/components/VueStripeFinancialAccountDisclosure.d.ts +8 -0
  21. package/dist/types/components/VueStripeIbanElement.d.ts +6 -0
  22. package/dist/types/components/VueStripeIssuingAddToWalletButtonElement.d.ts +21 -0
  23. package/dist/types/components/VueStripeIssuingCardCopyButtonElement.d.ts +14 -0
  24. package/dist/types/components/VueStripeIssuingCardCvcDisplayElement.d.ts +10 -0
  25. package/dist/types/components/VueStripeIssuingCardExpiryDisplayElement.d.ts +10 -0
  26. package/dist/types/components/VueStripeIssuingCardNumberDisplayElement.d.ts +13 -0
  27. package/dist/types/components/VueStripeIssuingCardPinDisplayElement.d.ts +10 -0
  28. package/dist/types/components/VueStripeIssuingDisclosure.d.ts +8 -0
  29. package/dist/types/components/VueStripeLinkAuthenticationElement.d.ts +9 -0
  30. package/dist/types/components/VueStripeLinkSignupElement.d.ts +18 -0
  31. package/dist/types/components/VueStripePaymentElement.d.ts +18 -0
  32. package/dist/types/components/VueStripePaymentMethodMessagingElement.d.ts +12 -0
  33. package/dist/types/components/VueStripePricingTable.d.ts +50 -0
  34. package/dist/types/components/VueStripeProvider.d.ts +111 -0
  35. package/dist/types/components/VueStripeTaxIdElement.d.ts +16 -0
  36. package/dist/types/components/VueStripeTermsElement.d.ts +18 -0
  37. package/dist/types/components/VueStripeTreasuryDisclosure.d.ts +8 -0
  38. package/dist/types/components/index.d.ts +35 -21
  39. package/dist/types/composables/confirm/index.d.ts +46 -0
  40. package/dist/types/composables/index.d.ts +12 -1
  41. package/dist/types/composables/useCheckoutForm.d.ts +22 -0
  42. package/dist/types/composables/useCheckoutSession.d.ts +7 -7
  43. package/dist/types/composables/useCreateConfirmationToken.d.ts +27 -0
  44. package/dist/types/composables/useCreatePaymentMethod.d.ts +1 -2
  45. package/dist/types/composables/useCreateToken.d.ts +14 -0
  46. package/dist/types/composables/useEphemeralKeyNonce.d.ts +12 -0
  47. package/dist/types/composables/useFinancialConnections.d.ts +25 -0
  48. package/dist/types/composables/useHandleCardAction.d.ts +13 -0
  49. package/dist/types/composables/useHandleNextAction.d.ts +1 -2
  50. package/dist/types/composables/useIdentity.d.ts +22 -0
  51. package/dist/types/composables/usePaymentIntent.d.ts +1 -2
  52. package/dist/types/composables/usePaymentRequest.d.ts +34 -0
  53. package/dist/types/composables/useRadarSession.d.ts +12 -0
  54. package/dist/types/composables/useSetupIntent.d.ts +1 -2
  55. package/dist/types/composables/useStripe.d.ts +2 -3
  56. package/dist/types/composables/useStripeCheckout.d.ts +13 -49
  57. package/dist/types/composables/useStripeElements.d.ts +1 -2
  58. package/dist/types/composables/useVerifyMicrodepositsForPayment.d.ts +14 -0
  59. package/dist/types/composables/useVerifyMicrodepositsForSetup.d.ts +14 -0
  60. package/dist/types/index.d.ts +8 -5
  61. package/dist/types/plugin.d.ts +8 -11
  62. package/dist/types/types/index.d.ts +253 -41
  63. package/dist/types/utils/constants.d.ts +0 -1
  64. package/dist/types/utils/disclosure.d.ts +57 -0
  65. package/dist/types/utils/element-factory.d.ts +12 -28
  66. package/dist/types/utils/element-render.d.ts +13 -0
  67. package/dist/types/utils/element-types.d.ts +72 -0
  68. package/dist/types/utils/errors.d.ts +0 -5
  69. package/dist/types/utils/h.d.ts +13 -0
  70. package/dist/types/utils/injection-keys.d.ts +18 -4
  71. package/dist/types/utils/load-stripe.d.ts +19 -0
  72. package/dist/types/utils/method-factory.d.ts +46 -0
  73. package/dist/types/utils/status-shell.d.ts +12 -0
  74. package/dist/umd/index.js +1 -1
  75. package/dist/vue-stripe.css +2 -1
  76. package/package.json +28 -24
  77. package/dist/types/components/VueStripeAddressElement.vue.d.ts +0 -105
  78. package/dist/types/components/VueStripeAddressElement.vue.d.ts.map +0 -1
  79. package/dist/types/components/VueStripeAuBankAccountElement.vue.d.ts +0 -155
  80. package/dist/types/components/VueStripeAuBankAccountElement.vue.d.ts.map +0 -1
  81. package/dist/types/components/VueStripeCardCvcElement.vue.d.ts +0 -24
  82. package/dist/types/components/VueStripeCardCvcElement.vue.d.ts.map +0 -1
  83. package/dist/types/components/VueStripeCardElement.vue.d.ts +0 -197
  84. package/dist/types/components/VueStripeCardElement.vue.d.ts.map +0 -1
  85. package/dist/types/components/VueStripeCardExpiryElement.vue.d.ts +0 -24
  86. package/dist/types/components/VueStripeCardExpiryElement.vue.d.ts.map +0 -1
  87. package/dist/types/components/VueStripeCardNumberElement.vue.d.ts +0 -24
  88. package/dist/types/components/VueStripeCardNumberElement.vue.d.ts.map +0 -1
  89. package/dist/types/components/VueStripeCheckout.vue.d.ts +0 -74
  90. package/dist/types/components/VueStripeCheckout.vue.d.ts.map +0 -1
  91. package/dist/types/components/VueStripeCheckoutProvider.vue.d.ts +0 -359
  92. package/dist/types/components/VueStripeCheckoutProvider.vue.d.ts.map +0 -1
  93. package/dist/types/components/VueStripeElements.vue.d.ts +0 -110
  94. package/dist/types/components/VueStripeElements.vue.d.ts.map +0 -1
  95. package/dist/types/components/VueStripeEpsBankElement.vue.d.ts +0 -155
  96. package/dist/types/components/VueStripeEpsBankElement.vue.d.ts.map +0 -1
  97. package/dist/types/components/VueStripeExpressCheckoutElement.vue.d.ts +0 -210
  98. package/dist/types/components/VueStripeExpressCheckoutElement.vue.d.ts.map +0 -1
  99. package/dist/types/components/VueStripeFpxBankElement.vue.d.ts +0 -163
  100. package/dist/types/components/VueStripeFpxBankElement.vue.d.ts.map +0 -1
  101. package/dist/types/components/VueStripeIbanElement.vue.d.ts +0 -155
  102. package/dist/types/components/VueStripeIbanElement.vue.d.ts.map +0 -1
  103. package/dist/types/components/VueStripeIdealBankElement.vue.d.ts +0 -155
  104. package/dist/types/components/VueStripeIdealBankElement.vue.d.ts.map +0 -1
  105. package/dist/types/components/VueStripeLinkAuthenticationElement.vue.d.ts +0 -195
  106. package/dist/types/components/VueStripeLinkAuthenticationElement.vue.d.ts.map +0 -1
  107. package/dist/types/components/VueStripeP24BankElement.vue.d.ts +0 -155
  108. package/dist/types/components/VueStripeP24BankElement.vue.d.ts.map +0 -1
  109. package/dist/types/components/VueStripePaymentElement.vue.d.ts +0 -214
  110. package/dist/types/components/VueStripePaymentElement.vue.d.ts.map +0 -1
  111. package/dist/types/components/VueStripePaymentMethodMessagingElement.vue.d.ts +0 -31
  112. package/dist/types/components/VueStripePaymentMethodMessagingElement.vue.d.ts.map +0 -1
  113. package/dist/types/components/VueStripePricingTable.vue.d.ts +0 -32
  114. package/dist/types/components/VueStripePricingTable.vue.d.ts.map +0 -1
  115. package/dist/types/components/VueStripeProvider.vue.d.ts +0 -42
  116. package/dist/types/components/VueStripeProvider.vue.d.ts.map +0 -1
  117. package/dist/types/components/index.d.ts.map +0 -1
  118. package/dist/types/composables/index.d.ts.map +0 -1
  119. package/dist/types/composables/useCheckoutSession.d.ts.map +0 -1
  120. package/dist/types/composables/useCreatePaymentMethod.d.ts.map +0 -1
  121. package/dist/types/composables/useHandleNextAction.d.ts.map +0 -1
  122. package/dist/types/composables/usePaymentIntent.d.ts.map +0 -1
  123. package/dist/types/composables/useSetupIntent.d.ts.map +0 -1
  124. package/dist/types/composables/useStripe.d.ts.map +0 -1
  125. package/dist/types/composables/useStripeCheckout.d.ts.map +0 -1
  126. package/dist/types/composables/useStripeElements.d.ts.map +0 -1
  127. package/dist/types/index.d.ts.map +0 -1
  128. package/dist/types/plugin.d.ts.map +0 -1
  129. package/dist/types/tsconfig.build.tsbuildinfo +0 -1
  130. package/dist/types/types/index.d.ts.map +0 -1
  131. package/dist/types/utils/constants.d.ts.map +0 -1
  132. package/dist/types/utils/element-factory.d.ts.map +0 -1
  133. package/dist/types/utils/errors.d.ts.map +0 -1
  134. 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 below are kept for historical reference (through v5.3.0).
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.x with TypeScript-first development
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 @ready="onReady" />
53
- <button @click="processPayment">Pay Now</button>
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
- VueStripeProvider,
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 { confirmPayment } = usePaymentIntent()
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
- <VueStripeAddressElement
102
- ref="addressRef"
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 { ref } from 'vue'
92
+ <script setup lang="ts">
93
+ import { usePaymentIntent } from '@vue-stripe/vue-stripe'
111
94
 
112
- const addressRef = ref()
95
+ const props = defineProps<{ clientSecret: string }>()
96
+ const { confirmPayment, loading, error } = usePaymentIntent()
113
97
 
114
- // Use getValue() to programmatically get address data
115
- const validateAddress = async () => {
116
- const result = await addressRef.value?.getValue()
117
- if (result.complete) {
118
- console.log('Valid address:', result.value)
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
- <script setup>
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
- const emailComplete = ref(false)
155
- const paymentComplete = ref(false)
156
- const canPay = computed(() => emailComplete.value && paymentComplete.value)
107
+ ### Providers
157
108
 
158
- const onEmailChange = (event) => {
159
- emailComplete.value = event.complete
160
- if (event.complete) {
161
- console.log('Email:', event.value.email)
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
- const onPaymentChange = (event) => {
166
- paymentComplete.value = event.complete
167
- }
168
- </script>
169
- ```
115
+ ### Elements
170
116
 
171
- ### Legacy Card Components
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
- | `VueStripeCardElement` | Single card input field |
176
- | `VueStripeCardNumberElement` | Card number input |
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
- ### European Regional Elements
145
+ ### Disclosures
181
146
 
182
147
  | Component | Description |
183
148
  |-----------|-------------|
184
- | `VueStripeIbanElement` | IBAN input for SEPA payments |
185
- | `VueStripeIdealBankElement` | iDEAL bank selector (Netherlands) |
186
- | `VueStripeP24BankElement` | Przelewy24 bank selector (Poland) |
187
- | `VueStripeEpsBankElement` | EPS bank selector (Austria) |
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()` | Access Stripe instance |
194
- | `useStripeElements()` | Access Elements instance |
195
- | `usePaymentIntent()` | Payment confirmation helpers |
196
- | `useSetupIntent()` | Setup intent handling |
197
- | `useStripeCheckout()` | Checkout session management |
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 © 2017-2026 Vue Stripe Contributors
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;