@reevit/svelte 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Reevit
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,167 @@
1
+ # @reevit/svelte
2
+
3
+ Svelte SDK for integrating Reevit unified payments into your application.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @reevit/svelte @reevit/core
9
+ ```
10
+
11
+ ## Quick Start
12
+
13
+ The simplest way to integrate Reevit is using the `ReevitCheckout` component.
14
+
15
+ ```svelte
16
+ <script lang="ts">
17
+ import { ReevitCheckout } from '@reevit/svelte';
18
+ import '@reevit/svelte/styles.css';
19
+
20
+ const handleSuccess = (event) => {
21
+ console.log('Payment success!', event.detail);
22
+ };
23
+
24
+ const handleError = (event) => {
25
+ console.error('Payment failed:', event.detail);
26
+ };
27
+ </script>
28
+
29
+ <ReevitCheckout
30
+ publicKey="pk_test_xxx"
31
+ amount={10000}
32
+ currency="GHS"
33
+ email="customer@example.com"
34
+ on:success={handleSuccess}
35
+ on:error={handleError}
36
+ >
37
+ <button slot="default" let:handleOpen let:isLoading on:click={handleOpen} disabled={isLoading}>
38
+ {isLoading ? 'Loading...' : 'Pay GHS 100.00'}
39
+ </button>
40
+ </ReevitCheckout>
41
+ ```
42
+
43
+ ## Custom Theme
44
+
45
+ ```svelte
46
+ <ReevitCheckout
47
+ theme={{
48
+ primaryColor: '#FF3E00',
49
+ backgroundColor: '#FFFFFF',
50
+ borderRadius: '10px'
51
+ }}
52
+ publicKey="pk_test_xxx"
53
+ amount={5000}
54
+ currency="GHS"
55
+ >
56
+ <button on:click={handleOpen}>Secure Pay</button>
57
+ </ReevitCheckout>
58
+ ```
59
+
60
+ ## Advanced Usage: createReevitStore
61
+
62
+ For full control over the payment flow, use the `createReevitStore` factory.
63
+
64
+ ```svelte
65
+ <script lang="ts">
66
+ import { createReevitStore } from '@reevit/svelte';
67
+
68
+ const store = createReevitStore({
69
+ config: {
70
+ publicKey: 'pk_test_xxx',
71
+ amount: 5000,
72
+ currency: 'GHS',
73
+ },
74
+ onSuccess: (res) => console.log('Payment done!', res),
75
+ });
76
+
77
+ $: state = $store;
78
+ </script>
79
+
80
+ <button on:click={() => store.initialize()}>Start Payment</button>
81
+
82
+ {#if state.status === 'ready'}
83
+ <button on:click={() => store.selectMethod('card')}>Card</button>
84
+ <button on:click={() => store.selectMethod('mobile_money')}>Mobile Money</button>
85
+ {/if}
86
+ ```
87
+
88
+ ## Props Reference
89
+
90
+ | Prop | Type | Description |
91
+ |------|------|-------------|
92
+ | `publicKey` | `string` | Your project's public key |
93
+ | `amount` | `number` | Amount in smallest unit |
94
+ | `currency` | `string` | 3-letter currency code |
95
+ | `email` | `string` | Customer's email |
96
+ | `theme` | `ReevitTheme` | Customization options |
97
+ | `isOpen` | `boolean` | Control modal visibility manually |
98
+
99
+ ## Events
100
+
101
+ - `on:success` - `CustomEvent<PaymentResult>`
102
+ - `on:error` - `CustomEvent<PaymentError>`
103
+ - `on:close` - `CustomEvent<void>`
104
+
105
+ ## PSP Bridge Functions
106
+
107
+ For advanced use cases, you can use PSP bridge functions directly.
108
+
109
+ ### Stripe
110
+
111
+ ```ts
112
+ import { createStripeInstance, confirmStripePayment } from '@reevit/svelte';
113
+
114
+ const stripe = await createStripeInstance('pk_test_xxx');
115
+ const elements = stripe.elements({ clientSecret: 'pi_xxx_secret_xxx' });
116
+ const paymentElement = elements.create('payment');
117
+ paymentElement.mount('#payment-element');
118
+
119
+ // Later, confirm payment
120
+ await confirmStripePayment({
121
+ publishableKey: 'pk_test_xxx',
122
+ clientSecret: 'pi_xxx_secret_xxx',
123
+ elements,
124
+ onSuccess: (result) => console.log('Paid:', result.paymentIntentId),
125
+ onError: (err) => console.error(err.message),
126
+ });
127
+ ```
128
+
129
+ ### Monnify (Nigeria)
130
+
131
+ ```ts
132
+ import { openMonnifyModal } from '@reevit/svelte';
133
+
134
+ await openMonnifyModal({
135
+ apiKey: 'MK_TEST_xxx',
136
+ contractCode: '1234567890',
137
+ amount: 5000,
138
+ currency: 'NGN',
139
+ reference: 'TXN_12345',
140
+ customerName: 'John Doe',
141
+ customerEmail: 'john@example.com',
142
+ onSuccess: (result) => console.log('Paid:', result.transactionReference),
143
+ onClose: () => console.log('Closed'),
144
+ });
145
+ ```
146
+
147
+ ### M-Pesa (Kenya/Tanzania)
148
+
149
+ ```ts
150
+ import { initiateMPesaSTKPush } from '@reevit/svelte';
151
+
152
+ const result = await initiateMPesaSTKPush(
153
+ {
154
+ phoneNumber: '254712345678',
155
+ amount: 500,
156
+ reference: 'TXN_12345',
157
+ onInitiated: () => console.log('STK Push sent'),
158
+ onSuccess: (result) => console.log('Paid:', result.transactionId),
159
+ onError: (err) => console.error(err.message),
160
+ },
161
+ '/api/mpesa/stk-push'
162
+ );
163
+ ```
164
+
165
+ ## License
166
+
167
+ MIT © Reevit
@@ -0,0 +1,337 @@
1
+ import { CheckoutState } from '@reevit/core';
2
+ import { cn } from '@reevit/core';
3
+ import { createInitialState } from '@reevit/core';
4
+ import { createReevitClient } from '@reevit/core';
5
+ import { detectCountryFromCurrency } from '@reevit/core';
6
+ import { detectNetwork } from '@reevit/core';
7
+ import { formatAmount } from '@reevit/core';
8
+ import { formatPhone } from '@reevit/core';
9
+ import { MobileMoneyFormData } from '@reevit/core';
10
+ import { MobileMoneyNetwork } from '@reevit/core';
11
+ import { PaymentError } from '@reevit/core';
12
+ import { PaymentIntent } from '@reevit/core';
13
+ import { PaymentMethod } from '@reevit/core';
14
+ import { PaymentResult } from '@reevit/core';
15
+ import { PSPType } from '@reevit/core';
16
+ import { ReevitAction } from '@reevit/core';
17
+ import { ReevitAPIClient } from '@reevit/core';
18
+ import { ReevitCheckoutCallbacks } from '@reevit/core';
19
+ import { ReevitCheckoutConfig } from '@reevit/core';
20
+ import { reevitReducer } from '@reevit/core';
21
+ import { ReevitState } from '@reevit/core';
22
+ import { ReevitTheme } from '@reevit/core';
23
+ import { SvelteComponent } from 'svelte';
24
+ import { validatePhone } from '@reevit/core';
25
+
26
+ export { CheckoutState }
27
+
28
+ export { cn }
29
+
30
+ /**
31
+ * Confirms a Stripe PaymentIntent using Elements
32
+ */
33
+ export declare function confirmStripePayment(config: StripeConfig & {
34
+ elements: StripeElements;
35
+ }): Promise<void>;
36
+
37
+ export { createInitialState }
38
+
39
+ export { createReevitClient }
40
+
41
+ /**
42
+ * Creates a Svelte-compatible store for managing Reevit checkout state
43
+ */
44
+ export declare function createReevitStore(options: CreateReevitStoreOptions): {
45
+ subscribe: (subscriber: Subscriber<ReevitState>) => Unsubscriber;
46
+ initialize: (method?: PaymentMethod) => Promise<void>;
47
+ selectMethod: (method: PaymentMethod) => void;
48
+ processPayment: (paymentData: Record<string, unknown>) => Promise<void>;
49
+ handlePspSuccess: (pspData: Record<string, unknown>) => Promise<void>;
50
+ handlePspError: (error: PaymentError) => void;
51
+ reset: () => void;
52
+ close: () => Promise<void>;
53
+ getStatus: () => any;
54
+ getPaymentIntent: () => any;
55
+ getSelectedMethod: () => any;
56
+ getError: () => any;
57
+ getResult: () => any;
58
+ isLoading: () => boolean;
59
+ isReady: () => boolean;
60
+ isComplete: () => boolean;
61
+ canRetry: () => any;
62
+ };
63
+
64
+ declare interface CreateReevitStoreOptions {
65
+ config: ReevitCheckoutConfig;
66
+ onSuccess?: (result: PaymentResult) => void;
67
+ onError?: (error: PaymentError) => void;
68
+ onClose?: () => void;
69
+ onStateChange?: (state: CheckoutState) => void;
70
+ apiBaseUrl?: string;
71
+ }
72
+
73
+ /**
74
+ * Creates a Stripe instance for payment processing
75
+ * Returns the Stripe instance for use with Elements
76
+ */
77
+ export declare function createStripeInstance(publishableKey: string): Promise<StripeInstance>;
78
+
79
+ export { detectCountryFromCurrency }
80
+
81
+ export { detectNetwork }
82
+
83
+ export declare interface FlutterwaveConfig {
84
+ public_key: string;
85
+ tx_ref: string;
86
+ amount: number;
87
+ currency: string;
88
+ customer: {
89
+ email: string;
90
+ phone_number?: string;
91
+ name?: string;
92
+ };
93
+ payment_options?: string;
94
+ customizations?: {
95
+ title?: string;
96
+ description?: string;
97
+ logo?: string;
98
+ };
99
+ callback: (response: {
100
+ transaction_id: number;
101
+ tx_ref: string;
102
+ [key: string]: unknown;
103
+ }) => void;
104
+ onclose: () => void;
105
+ }
106
+
107
+ export { formatAmount }
108
+
109
+ export { formatPhone }
110
+
111
+ export declare interface HubtelConfig {
112
+ clientId: string;
113
+ purchaseDescription: string;
114
+ amount: number;
115
+ callbackUrl?: string;
116
+ customerPhone?: string;
117
+ customerEmail?: string;
118
+ onSuccess: (response: Record<string, unknown>) => void;
119
+ onClose: () => void;
120
+ }
121
+
122
+ /**
123
+ * Initiates M-Pesa STK Push via your backend
124
+ * The actual push is server-side; this handles the UI flow.
125
+ */
126
+ export declare function initiateMPesaSTKPush(config: MPesaConfig, apiEndpoint: string): Promise<MPesaSTKPushResult>;
127
+
128
+ /**
129
+ * Loads the Flutterwave checkout script
130
+ */
131
+ export declare function loadFlutterwaveScript(): Promise<void>;
132
+
133
+ /**
134
+ * Loads the Hubtel checkout script
135
+ */
136
+ export declare function loadHubtelScript(): Promise<void>;
137
+
138
+ /**
139
+ * Loads the Monnify SDK script
140
+ */
141
+ export declare function loadMonnifyScript(): Promise<void>;
142
+
143
+ /**
144
+ * Loads the Paystack inline script
145
+ */
146
+ export declare function loadPaystackScript(): Promise<void>;
147
+
148
+ /**
149
+ * Loads the Stripe.js script
150
+ */
151
+ export declare function loadStripeScript(): Promise<void>;
152
+
153
+ export { MobileMoneyFormData }
154
+
155
+ export { MobileMoneyNetwork }
156
+
157
+ export declare interface MonnifyConfig {
158
+ apiKey: string;
159
+ contractCode: string;
160
+ amount: number;
161
+ currency: string;
162
+ reference: string;
163
+ customerName: string;
164
+ customerEmail: string;
165
+ customerPhone?: string;
166
+ paymentDescription?: string;
167
+ isTestMode?: boolean;
168
+ metadata?: Record<string, unknown>;
169
+ onSuccess: (response: {
170
+ transactionReference: string;
171
+ paymentReference: string;
172
+ [key: string]: unknown;
173
+ }) => void;
174
+ onClose: () => void;
175
+ onError?: (error: {
176
+ message: string;
177
+ }) => void;
178
+ }
179
+
180
+ export declare interface MPesaConfig {
181
+ phoneNumber: string;
182
+ amount: number;
183
+ reference: string;
184
+ description?: string;
185
+ onInitiated: () => void;
186
+ onSuccess: (response: {
187
+ transactionId: string;
188
+ [key: string]: unknown;
189
+ }) => void;
190
+ onError: (error: {
191
+ message: string;
192
+ }) => void;
193
+ }
194
+
195
+ /**
196
+ * M-Pesa STK Push
197
+ * Note: M-Pesa uses server-to-server STK Push, the customer receives a prompt on their phone.
198
+ * This function handles the UI state while waiting for the push to be accepted.
199
+ */
200
+ export declare interface MPesaSTKPushResult {
201
+ status: 'initiated' | 'success' | 'failed' | 'cancelled';
202
+ message?: string;
203
+ transactionId?: string;
204
+ }
205
+
206
+ /**
207
+ * Opens Flutterwave modal
208
+ */
209
+ export declare function openFlutterwaveModal(config: FlutterwaveConfig): Promise<void>;
210
+
211
+ /**
212
+ * Opens Hubtel popup
213
+ */
214
+ export declare function openHubtelPopup(config: HubtelConfig): Promise<void>;
215
+
216
+ /**
217
+ * Opens Monnify payment modal
218
+ */
219
+ export declare function openMonnifyModal(config: MonnifyConfig): Promise<void>;
220
+
221
+ /**
222
+ * Opens Paystack popup
223
+ */
224
+ export declare function openPaystackPopup(config: PaystackConfig): Promise<void>;
225
+
226
+ export { PaymentError }
227
+
228
+ export { PaymentIntent }
229
+
230
+ export { PaymentMethod }
231
+
232
+ export { PaymentResult }
233
+
234
+ export declare interface PaystackConfig {
235
+ key: string;
236
+ email: string;
237
+ amount: number;
238
+ currency: string;
239
+ ref: string;
240
+ metadata?: Record<string, unknown>;
241
+ onSuccess: (response: {
242
+ reference: string;
243
+ [key: string]: unknown;
244
+ }) => void;
245
+ onClose: () => void;
246
+ }
247
+
248
+ export { PSPType }
249
+
250
+ export { ReevitAction }
251
+
252
+ export { ReevitAPIClient }
253
+
254
+ export { ReevitCheckoutCallbacks }
255
+
256
+ export { ReevitCheckoutConfig }
257
+
258
+ export { reevitReducer }
259
+
260
+ export { ReevitState }
261
+
262
+ export declare type ReevitStore = ReturnType<typeof createReevitStore>;
263
+
264
+ export { ReevitTheme }
265
+
266
+ declare interface StripeCardElement {
267
+ mount: (selector: string | HTMLElement) => void;
268
+ unmount: () => void;
269
+ on: (event: string, handler: (e: any) => void) => void;
270
+ destroy: () => void;
271
+ }
272
+
273
+ export declare interface StripeConfig {
274
+ publishableKey: string;
275
+ clientSecret: string;
276
+ appearance?: {
277
+ theme?: 'stripe' | 'night' | 'flat';
278
+ variables?: Record<string, string>;
279
+ };
280
+ onSuccess: (response: {
281
+ paymentIntentId: string;
282
+ status: string;
283
+ }) => void;
284
+ onError: (error: {
285
+ message: string;
286
+ }) => void;
287
+ }
288
+
289
+ declare interface StripeElements {
290
+ create: (type: string, options?: Record<string, unknown>) => StripeCardElement;
291
+ getElement: (type: string) => StripeCardElement | null;
292
+ }
293
+
294
+ declare interface StripeInstance {
295
+ elements: () => StripeElements;
296
+ confirmCardPayment: (clientSecret: string, data?: {
297
+ payment_method?: string | {
298
+ card: StripeCardElement;
299
+ };
300
+ }) => Promise<{
301
+ error?: {
302
+ message: string;
303
+ };
304
+ paymentIntent?: {
305
+ id: string;
306
+ status: string;
307
+ };
308
+ }>;
309
+ confirmPayment: (options: {
310
+ elements: StripeElements;
311
+ clientSecret: string;
312
+ confirmParams?: {
313
+ return_url?: string;
314
+ };
315
+ redirect?: 'if_required';
316
+ }) => Promise<{
317
+ error?: {
318
+ message: string;
319
+ };
320
+ paymentIntent?: {
321
+ id: string;
322
+ status: string;
323
+ };
324
+ }>;
325
+ }
326
+
327
+ declare type Subscriber<T> = (value: T) => void;
328
+
329
+ export { SvelteComponent as MobileMoneyForm }
330
+ export { SvelteComponent as PaymentMethodSelector }
331
+ export { SvelteComponent as ReevitCheckout }
332
+
333
+ declare type Unsubscriber = () => void;
334
+
335
+ export { validatePhone }
336
+
337
+ export { }
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Qe=require("svelte"),P=require("@reevit/core"),Mr="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add(Mr);let ot=!1,Tr=!1;function Ar(){ot=!0}Ar();const xr=1,Or=2,Nr=16,Fr=1,Dr=2,jr=4,Lr=8,Ur=16,qr=1,Kr=2,Y=Symbol(),Ht=!1;var Cn=Array.isArray,zr=Array.prototype.indexOf,$t=Array.from,In=Object.defineProperty,ht=Object.getOwnPropertyDescriptor,Br=Object.getOwnPropertyDescriptors,Hr=Object.prototype,Vr=Array.prototype,Mn=Object.getPrototypeOf;const Vt=()=>{};function Yr(e){return e()}function Yt(e){for(var t=0;t<e.length;t++)e[t]()}function Tn(){var e,t,n=new Promise((r,i)=>{e=r,t=i});return{promise:n,resolve:e,reject:t}}const B=2,An=4,It=8,Gr=1<<24,he=16,me=32,He=64,en=128,ie=512,K=1024,X=2048,se=4096,$=8192,ve=16384,tn=32768,tt=65536,hn=1<<17,xn=1<<18,Mt=1<<19,On=1<<20,Ee=1<<25,Oe=32768,Gt=1<<21,nn=1<<22,Se=1<<23,ze=Symbol("$state"),Wr=Symbol("legacy props"),qe=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"};function Zr(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function Jr(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function Xr(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function Qr(e){throw new Error("https://svelte.dev/e/effect_orphan")}function $r(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function ea(e){throw new Error("https://svelte.dev/e/props_invalid_value")}function ta(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function na(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function ra(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function Nn(e){return e===this.v}function aa(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function Fn(e){return!aa(e,this.v)}let q=null;function yt(e){q=e}function rn(e,t=!1,n){q={p:q,i:!1,c:null,e:null,s:e,x:null,l:ot&&!t?{s:null,u:null,$:[]}:null}}function an(e){var t=q,n=t.e;if(n!==null){t.e=null;for(var r of n)Gn(r)}return t.i=!0,q=t.p,{}}function lt(){return!ot||q!==null&&q.l===null}let Ie=[];function Dn(){var e=Ie;Ie=[],Yt(e)}function jn(e){if(Ie.length===0&&!$e){var t=Ie;queueMicrotask(()=>{t===Ie&&Dn()})}Ie.push(e)}function ia(){for(;Ie.length>0;)Dn()}function sa(e){var t=C;if(t===null)return g.f|=Se,e;if((t.f&tn)===0){if((t.f&en)===0)throw e;t.b.error(e)}else bt(e,t)}function bt(e,t){for(;t!==null;){if((t.f&en)!==0)try{t.b.error(e);return}catch(n){e=n}t=t.parent}throw e}const vt=new Set;let k=null,mt=null,re=null,ne=[],Tt=null,Wt=!1,$e=!1;class nt{committed=!1;current=new Map;previous=new Map;#t=new Set;#n=new Set;#e=0;#r=0;#i=null;#a=new Set;#s=new Set;skipped_effects=new Set;is_fork=!1;is_deferred(){return this.is_fork||this.#r>0}process(t){ne=[],mt=null,this.apply();var n={parent:null,effect:null,effects:[],render_effects:[]};for(const r of t)this.#l(r,n);this.is_fork||this.#f(),this.is_deferred()?(this.#o(n.effects),this.#o(n.render_effects)):(mt=this,k=null,mn(n.render_effects),mn(n.effects),mt=null,this.#i?.resolve()),re=null}#l(t,n){t.f^=K;for(var r=t.first;r!==null;){var i=r.f,a=(i&(me|He))!==0,l=a&&(i&K)!==0,s=l||(i&$)!==0||this.skipped_effects.has(r);if((r.f&en)!==0&&r.b?.is_pending()&&(n={parent:n,effect:r,effects:[],render_effects:[]}),!s&&r.fn!==null){a?r.f^=K:(i&An)!==0?n.effects.push(r):Ve(r)&&((r.f&he)!==0&&this.#a.add(r),Be(r));var u=r.first;if(u!==null){r=u;continue}}var o=r.parent;for(r=r.next;r===null&&o!==null;)o===n.effect&&(this.#o(n.effects),this.#o(n.render_effects),n=n.parent),r=o.next,o=o.parent}}#o(t){for(const n of t)(n.f&X)!==0?this.#a.add(n):(n.f&se)!==0&&this.#s.add(n),this.#u(n.deps),z(n,K)}#u(t){if(t!==null)for(const n of t)(n.f&B)===0||(n.f&Oe)===0||(n.f^=Oe,this.#u(n.deps))}capture(t,n){this.previous.has(t)||this.previous.set(t,n),(t.f&Se)===0&&(this.current.set(t,t.v),re?.set(t,t.v))}activate(){k=this,this.apply()}deactivate(){k===this&&(k=null,re=null)}flush(){if(this.activate(),ne.length>0){if(Ln(),k!==null&&k!==this)return}else this.#e===0&&this.process([]);this.deactivate()}discard(){for(const t of this.#n)t(this);this.#n.clear()}#f(){if(this.#r===0){for(const t of this.#t)t();this.#t.clear()}this.#e===0&&this.#c()}#c(){if(vt.size>1){this.previous.clear();var t=re,n=!0,r={parent:null,effect:null,effects:[],render_effects:[]};for(const a of vt){if(a===this){n=!1;continue}const l=[];for(const[u,o]of this.current){if(a.current.has(u))if(n&&o!==a.current.get(u))a.current.set(u,o);else continue;l.push(u)}if(l.length===0)continue;const s=[...a.current.keys()].filter(u=>!this.current.has(u));if(s.length>0){var i=ne;ne=[];const u=new Set,o=new Map;for(const d of l)Un(d,s,u,o);if(ne.length>0){k=a,a.apply();for(const d of ne)a.#l(d,r);a.deactivate()}ne=i}}k=null,re=t}this.committed=!0,vt.delete(this)}increment(t){this.#e+=1,t&&(this.#r+=1)}decrement(t){this.#e-=1,t&&(this.#r-=1),this.revive()}revive(){for(const t of this.#a)this.#s.delete(t),z(t,X),Ne(t);for(const t of this.#s)z(t,se),Ne(t);this.flush()}oncommit(t){this.#t.add(t)}ondiscard(t){this.#n.add(t)}settled(){return(this.#i??=Tn()).promise}static ensure(){if(k===null){const t=k=new nt;vt.add(k),$e||nt.enqueue(()=>{k===t&&t.flush()})}return k}static enqueue(t){jn(t)}apply(){}}function oa(e){var t=$e;$e=!0;try{for(var n;;){if(ia(),ne.length===0&&(k?.flush(),ne.length===0))return Tt=null,n;Ln()}}finally{$e=t}}function Ln(){var e=Ae;Wt=!0;var t=null;try{var n=0;for(St(!0);ne.length>0;){var r=nt.ensure();if(n++>1e3){var i,a;la()}r.process(ne),Pe.clear()}}finally{Wt=!1,St(e),Tt=null}}function la(){try{$r()}catch(e){bt(e,Tt)}}let de=null;function mn(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if((r.f&(ve|$))===0&&Ve(r)&&(de=new Set,Be(r),r.deps===null&&r.first===null&&r.nodes===null&&(r.teardown===null&&r.ac===null?Xn(r):r.fn=null),de?.size>0)){Pe.clear();for(const i of de){if((i.f&(ve|$))!==0)continue;const a=[i];let l=i.parent;for(;l!==null;)de.has(l)&&(de.delete(l),a.push(l)),l=l.parent;for(let s=a.length-1;s>=0;s--){const u=a[s];(u.f&(ve|$))===0&&Be(u)}}de.clear()}}de=null}}function Un(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(const i of e.reactions){const a=i.f;(a&B)!==0?Un(i,t,n,r):(a&(nn|he))!==0&&(a&X)===0&&qn(i,t,r)&&(z(i,X),Ne(i))}}function qn(e,t,n){const r=n.get(e);if(r!==void 0)return r;if(e.deps!==null)for(const i of e.deps){if(t.includes(i))return!0;if((i.f&B)!==0&&qn(i,t,n))return n.set(i,!0),!0}return n.set(e,!1),!1}function Ne(e){for(var t=Tt=e;t.parent!==null;){t=t.parent;var n=t.f;if(Wt&&t===C&&(n&he)!==0&&(n&xn)===0)return;if((n&(He|me))!==0){if((n&K)===0)return;t.f^=K}}ne.push(t)}function ua(e,t,n,r){const i=lt()?At:xt;if(n.length===0&&e.length===0){r(t.map(i));return}var a=k,l=C,s=fa();function u(){Promise.all(n.map(o=>ca(o))).then(o=>{s();try{r([...t.map(i),...o])}catch(d){(l.f&ve)===0&&bt(d,l)}a?.deactivate(),wt()}).catch(o=>{bt(o,l)})}e.length>0?Promise.all(e).then(()=>{s();try{return u()}finally{a?.deactivate(),wt()}}):u()}function fa(){var e=C,t=g,n=q,r=k;return function(a=!0){Re(e),fe(t),yt(n),a&&r?.activate()}}function wt(){Re(null),fe(null),yt(null)}function At(e){var t=B|X,n=g!==null&&(g.f&B)!==0?g:null;return C!==null&&(C.f|=Mt),{ctx:q,deps:null,effects:null,equals:Nn,f:t,fn:e,reactions:null,rv:0,v:Y,wv:0,parent:n??C,ac:null}}function ca(e,t){let n=C;n===null&&Zr();var r=n.b,i=void 0,a=rt(Y),l=!g,s=new Map;return Ea(()=>{var u=Tn();i=u.promise;try{Promise.resolve(e()).then(u.resolve,u.reject).then(()=>{o===k&&o.committed&&o.deactivate(),wt()})}catch(p){u.reject(p),wt()}var o=k;if(l){var d=!r.is_pending();r.update_pending_count(1),o.increment(d),s.get(o)?.reject(qe),s.delete(o),s.set(o,u)}const v=(p,_=void 0)=>{if(o.activate(),_)_!==qe&&(a.f|=Se,at(a,_));else{(a.f&Se)!==0&&(a.f^=Se),at(a,p);for(const[c,b]of s){if(s.delete(c),c===o)break;b.reject(qe)}}l&&(r.update_pending_count(-1),o.decrement(d))};u.promise.then(v,p=>v(null,p||"unknown"))}),on(()=>{for(const u of s.values())u.reject(qe)}),new Promise(u=>{function o(d){function v(){d===i?u(a):o(i)}d.then(v,v)}o(i)})}function xt(e){const t=At(e);return t.equals=Fn,t}function Kn(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)pe(t[n])}}function da(e){for(var t=e.parent;t!==null;){if((t.f&B)===0)return(t.f&ve)===0?t:null;t=t.parent}return null}function sn(e){var t,n=C;Re(da(e));try{e.f&=~Oe,Kn(e),t=rr(e)}finally{Re(n)}return t}function zn(e){var t=sn(e);if(e.equals(t)||(k?.is_fork||(e.v=t),e.wv=tr()),!Fe)if(re!==null)(Et()||k?.is_fork)&&re.set(e,t);else{var n=(e.f&ie)===0?se:K;z(e,n)}}let Zt=new Set;const Pe=new Map;let Bn=!1;function rt(e,t){var n={f:0,v:e,reactions:null,equals:Nn,rv:0,wv:0};return n}function we(e,t){const n=rt(e);return Ra(n),n}function ke(e,t=!1,n=!0){const r=rt(e);return t||(r.equals=Fn),ot&&n&&q!==null&&q.l!==null&&(q.l.s??=[]).push(r),r}function U(e,t,n=!1){g!==null&&(!ue||(g.f&hn)!==0)&&lt()&&(g.f&(B|he|nn|hn))!==0&&!_e?.includes(e)&&ra();let r=n?Ke(t):t;return at(e,r)}function at(e,t){if(!e.equals(t)){var n=e.v;Fe?Pe.set(e,t):Pe.set(e,n),e.v=t;var r=nt.ensure();r.capture(e,n),(e.f&B)!==0&&((e.f&X)!==0&&sn(e),z(e,(e.f&ie)!==0?K:se)),e.wv=tr(),Hn(e,X),lt()&&C!==null&&(C.f&K)!==0&&(C.f&(me|He))===0&&(ee===null?Ca([e]):ee.push(e)),!r.is_fork&&Zt.size>0&&!Bn&&va()}return t}function va(){Bn=!1;var e=Ae;St(!0);const t=Array.from(Zt);try{for(const n of t)(n.f&K)!==0&&z(n,se),Ve(n)&&Be(n)}finally{St(e)}Zt.clear()}function Kt(e){U(e,e.v+1)}function Hn(e,t){var n=e.reactions;if(n!==null)for(var r=lt(),i=n.length,a=0;a<i;a++){var l=n[a],s=l.f;if(!(!r&&l===C)){var u=(s&X)===0;if(u&&z(l,t),(s&B)!==0){var o=l;re?.delete(o),(s&Oe)===0&&(s&ie&&(l.f|=Oe),Hn(o,se))}else u&&((s&he)!==0&&de!==null&&de.add(l),Ne(l))}}}function Ke(e){if(typeof e!="object"||e===null||ze in e)return e;const t=Mn(e);if(t!==Hr&&t!==Vr)return e;var n=new Map,r=Cn(e),i=we(0),a=xe,l=s=>{if(xe===a)return s();var u=g,o=xe;fe(null),gn(a);var d=s();return fe(u),gn(o),d};return r&&n.set("length",we(e.length)),new Proxy(e,{defineProperty(s,u,o){(!("value"in o)||o.configurable===!1||o.enumerable===!1||o.writable===!1)&&ta();var d=n.get(u);return d===void 0?d=l(()=>{var v=we(o.value);return n.set(u,v),v}):U(d,o.value,!0),!0},deleteProperty(s,u){var o=n.get(u);if(o===void 0){if(u in s){const d=l(()=>we(Y));n.set(u,d),Kt(i)}}else U(o,Y),Kt(i);return!0},get(s,u,o){if(u===ze)return e;var d=n.get(u),v=u in s;if(d===void 0&&(!v||ht(s,u)?.writable)&&(d=l(()=>{var _=Ke(v?s[u]:Y),c=we(_);return c}),n.set(u,d)),d!==void 0){var p=f(d);return p===Y?void 0:p}return Reflect.get(s,u,o)},getOwnPropertyDescriptor(s,u){var o=Reflect.getOwnPropertyDescriptor(s,u);if(o&&"value"in o){var d=n.get(u);d&&(o.value=f(d))}else if(o===void 0){var v=n.get(u),p=v?.v;if(v!==void 0&&p!==Y)return{enumerable:!0,configurable:!0,value:p,writable:!0}}return o},has(s,u){if(u===ze)return!0;var o=n.get(u),d=o!==void 0&&o.v!==Y||Reflect.has(s,u);if(o!==void 0||C!==null&&(!d||ht(s,u)?.writable)){o===void 0&&(o=l(()=>{var p=d?Ke(s[u]):Y,_=we(p);return _}),n.set(u,o));var v=f(o);if(v===Y)return!1}return d},set(s,u,o,d){var v=n.get(u),p=u in s;if(r&&u==="length")for(var _=o;_<v.v;_+=1){var c=n.get(_+"");c!==void 0?U(c,Y):_ in s&&(c=l(()=>we(Y)),n.set(_+"",c))}if(v===void 0)(!p||ht(s,u)?.writable)&&(v=l(()=>we(void 0)),U(v,Ke(o)),n.set(u,v));else{p=v.v!==Y;var b=l(()=>Ke(o));U(v,b)}var y=Reflect.getOwnPropertyDescriptor(s,u);if(y?.set&&y.set.call(d,o),!p){if(r&&typeof u=="string"){var E=n.get("length"),m=Number(u);Number.isInteger(m)&&m>=E.v&&U(E,m+1)}Kt(i)}return!0},ownKeys(s){f(i);var u=Reflect.ownKeys(s).filter(v=>{var p=n.get(v);return p===void 0||p.v!==Y});for(var[o,d]of n)d.v!==Y&&!(o in s)&&u.push(o);return u},setPrototypeOf(){na()}})}var pa,_a,ha;function Te(e=""){return document.createTextNode(e)}function gt(e){return _a.call(e)}function ut(e){return ha.call(e)}function O(e,t){return gt(e)}function Je(e,t=!1){{var n=gt(e);return n instanceof Comment&&n.data===""?ut(n):n}}function D(e,t=1,n=!1){let r=e;for(;t--;)r=ut(r);return r}function ma(e){e.textContent=""}function Vn(){return!1}let yn=!1;function ya(){yn||(yn=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(const t of e.target.elements)t.__on_r?.()})},{capture:!0}))}function Ot(e){var t=g,n=C;fe(null),Re(null);try{return e()}finally{fe(t),Re(n)}}function ba(e,t,n,r=n){e.addEventListener(t,()=>Ot(n));const i=e.__on_r;i?e.__on_r=()=>{i(),r(!0)}:e.__on_r=()=>r(!0),ya()}function Yn(e){C===null&&(g===null&&Qr(),Xr()),Fe&&Jr()}function wa(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function Ce(e,t,n){var r=C;r!==null&&(r.f&$)!==0&&(e|=$);var i={ctx:q,deps:null,nodes:null,f:e|X|ie,first:null,fn:t,last:null,next:null,parent:r,b:r&&r.b,prev:null,teardown:null,wv:0,ac:null};if(n)try{Be(i),i.f|=tn}catch(s){throw pe(i),s}else t!==null&&Ne(i);var a=i;if(n&&a.deps===null&&a.teardown===null&&a.nodes===null&&a.first===a.last&&(a.f&Mt)===0&&(a=a.first,(e&he)!==0&&(e&tt)!==0&&a!==null&&(a.f|=tt)),a!==null&&(a.parent=r,r!==null&&wa(a,r),g!==null&&(g.f&B)!==0&&(e&He)===0)){var l=g;(l.effects??=[]).push(a)}return i}function Et(){return g!==null&&!ue}function on(e){const t=Ce(It,null,!1);return z(t,K),t.teardown=e,t}function bn(e){Yn();var t=C.f,n=!g&&(t&me)!==0&&(t&tn)===0;if(n){var r=q;(r.e??=[]).push(e)}else return Gn(e)}function Gn(e){return Ce(An|On,e,!1)}function ga(e){return Yn(),Ce(It|On,e,!0)}function et(e,t){var n=q,r={effect:null,ran:!1,deps:e};n.l.$.push(r),r.effect=un(()=>{e(),!r.ran&&(r.ran=!0,w(t))})}function ln(){var e=q;un(()=>{for(var t of e.l.$){t.deps();var n=t.effect;(n.f&K)!==0&&z(n,se),Ve(n)&&Be(n),t.ran=!1}})}function Ea(e){return Ce(nn|Mt,e,!0)}function un(e,t=0){return Ce(It|t,e,!0)}function le(e,t=[],n=[],r=[]){ua(r,t,n,i=>{Ce(It,()=>e(...i.map(f)),!0)})}function Wn(e,t=0){var n=Ce(he|t,e,!0);return n}function it(e){return Ce(me|Mt,e,!0)}function Zn(e){var t=e.teardown;if(t!==null){const n=Fe,r=g;wn(!0),fe(null);try{t.call(null)}finally{wn(n),fe(r)}}}function Jn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){const i=n.ac;i!==null&&Ot(()=>{i.abort(qe)});var r=n.next;(n.f&He)!==0?n.parent=null:pe(n,t),n=r}}function Sa(e){for(var t=e.first;t!==null;){var n=t.next;(t.f&me)===0&&pe(t),t=n}}function pe(e,t=!0){var n=!1;(t||(e.f&xn)!==0)&&e.nodes!==null&&e.nodes.end!==null&&(Pa(e.nodes.start,e.nodes.end),n=!0),Jn(e,t&&!n),Pt(e,0),z(e,ve);var r=e.nodes&&e.nodes.t;if(r!==null)for(const a of r)a.stop();Zn(e);var i=e.parent;i!==null&&i.first!==null&&Xn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=null}function Pa(e,t){for(;e!==null;){var n=e===t?null:ut(e);e.remove(),e=n}}function Xn(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function fn(e,t,n=!0){var r=[];Qn(e,r,!0);var i=()=>{n&&pe(e),t&&t()},a=r.length;if(a>0){var l=()=>--a||i();for(var s of r)s.out(l)}else i()}function Qn(e,t,n){if((e.f&$)===0){e.f^=$;var r=e.nodes&&e.nodes.t;if(r!==null)for(const s of r)(s.is_global||n)&&t.push(s);for(var i=e.first;i!==null;){var a=i.next,l=(i.f&tt)!==0||(i.f&me)!==0&&(e.f&he)!==0;Qn(i,t,l?n:!1),i=a}}}function cn(e){$n(e,!0)}function $n(e,t){if((e.f&$)!==0){e.f^=$,(e.f&K)===0&&(z(e,X),Ne(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&tt)!==0||(n.f&me)!==0;$n(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(const l of a)(l.is_global||t)&&l.in()}}function ka(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:ut(n);t.append(n),n=i}}let Ae=!1;function St(e){Ae=e}let Fe=!1;function wn(e){Fe=e}let g=null,ue=!1;function fe(e){g=e}let C=null;function Re(e){C=e}let _e=null;function Ra(e){g!==null&&(_e===null?_e=[e]:_e.push(e))}let W=null,Q=0,ee=null;function Ca(e){ee=e}let er=1,st=0,xe=st;function gn(e){xe=e}function tr(){return++er}function Ve(e){var t=e.f;if((t&X)!==0)return!0;if(t&B&&(e.f&=~Oe),(t&se)!==0){var n=e.deps;if(n!==null)for(var r=n.length,i=0;i<r;i++){var a=n[i];if(Ve(a)&&zn(a),a.wv>e.wv)return!0}(t&ie)!==0&&re===null&&z(e,K)}return!1}function nr(e,t,n=!0){var r=e.reactions;if(r!==null&&!_e?.includes(e))for(var i=0;i<r.length;i++){var a=r[i];(a.f&B)!==0?nr(a,t,!1):t===a&&(n?z(a,X):(a.f&K)!==0&&z(a,se),Ne(a))}}function rr(e){var t=W,n=Q,r=ee,i=g,a=_e,l=q,s=ue,u=xe,o=e.f;W=null,Q=0,ee=null,g=(o&(me|He))===0?e:null,_e=null,yt(e.ctx),ue=!1,xe=++st,e.ac!==null&&(Ot(()=>{e.ac.abort(qe)}),e.ac=null);try{e.f|=Gt;var d=e.fn,v=d(),p=e.deps;if(W!==null){var _;if(Pt(e,Q),p!==null&&Q>0)for(p.length=Q+W.length,_=0;_<W.length;_++)p[Q+_]=W[_];else e.deps=p=W;if(Et()&&(e.f&ie)!==0)for(_=Q;_<p.length;_++)(p[_].reactions??=[]).push(e)}else p!==null&&Q<p.length&&(Pt(e,Q),p.length=Q);if(lt()&&ee!==null&&!ue&&p!==null&&(e.f&(B|se|X))===0)for(_=0;_<ee.length;_++)nr(ee[_],e);return i!==null&&i!==e&&(st++,ee!==null&&(r===null?r=ee:r.push(...ee))),(e.f&Se)!==0&&(e.f^=Se),v}catch(c){return sa(c)}finally{e.f^=Gt,W=t,Q=n,ee=r,g=i,_e=a,yt(l),ue=s,xe=u}}function Ia(e,t){let n=t.reactions;if(n!==null){var r=zr.call(n,e);if(r!==-1){var i=n.length-1;i===0?n=t.reactions=null:(n[r]=n[i],n.pop())}}n===null&&(t.f&B)!==0&&(W===null||!W.includes(t))&&(z(t,se),(t.f&ie)!==0&&(t.f^=ie,t.f&=~Oe),Kn(t),Pt(t,0))}function Pt(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)Ia(e,n[r])}function Be(e){var t=e.f;if((t&ve)===0){z(e,K);var n=C,r=Ae;C=e,Ae=!0;try{(t&(he|Gr))!==0?Sa(e):Jn(e),Zn(e);var i=rr(e);e.teardown=typeof i=="function"?i:null,e.wv=er;var a;Ht&&Tr&&(e.f&X)!==0&&e.deps}finally{Ae=r,C=n}}}async function Ma(){await Promise.resolve(),oa()}function f(e){var t=e.f,n=(t&B)!==0;if(g!==null&&!ue){var r=C!==null&&(C.f&ve)!==0;if(!r&&!_e?.includes(e)){var i=g.deps;if((g.f&Gt)!==0)e.rv<st&&(e.rv=st,W===null&&i!==null&&i[Q]===e?Q++:W===null?W=[e]:W.includes(e)||W.push(e));else{(g.deps??=[]).push(e);var a=e.reactions;a===null?e.reactions=[g]:a.includes(g)||a.push(g)}}}if(Fe){if(Pe.has(e))return Pe.get(e);if(n){var l=e,s=l.v;return((l.f&K)===0&&l.reactions!==null||ir(l))&&(s=sn(l)),Pe.set(l,s),s}}else n&&(!re?.has(e)||k?.is_fork&&!Et())&&(l=e,Ve(l)&&zn(l),Ae&&Et()&&(l.f&ie)===0&&ar(l));if(re?.has(e))return re.get(e);if((e.f&Se)!==0)throw e.v;return e.v}function ar(e){if(e.deps!==null){e.f^=ie;for(const t of e.deps)(t.reactions??=[]).push(e),(t.f&B)!==0&&(t.f&ie)===0&&ar(t)}}function ir(e){if(e.v===Y)return!0;if(e.deps===null)return!1;for(const t of e.deps)if(Pe.has(t)||(t.f&B)!==0&&ir(t))return!0;return!1}function w(e){var t=ue;try{return ue=!0,e()}finally{ue=t}}const Ta=-7169;function z(e,t){e.f=e.f&Ta|t}function Z(e){if(!(typeof e!="object"||!e||e instanceof EventTarget)){if(ze in e)Jt(e);else if(!Array.isArray(e))for(let t in e){const n=e[t];typeof n=="object"&&n&&ze in n&&Jt(n)}}}function Jt(e,t=new Set){if(typeof e=="object"&&e!==null&&!(e instanceof EventTarget)&&!t.has(e)){t.add(e),e instanceof Date&&e.getTime();for(let r in e)try{Jt(e[r],t)}catch{}const n=Mn(e);if(n!==Object.prototype&&n!==Array.prototype&&n!==Map.prototype&&n!==Set.prototype&&n!==Date.prototype){const r=Br(n);for(let i in r){const a=r[i].get;if(a)try{a.call(e)}catch{}}}}}function Aa(e,t,n,r={}){function i(a){if(r.capture||xa.call(t,a),!a.cancelBubble)return Ot(()=>n?.call(this,a))}return e.startsWith("pointer")||e.startsWith("touch")||e==="wheel"?jn(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function oe(e,t,n,r,i){var a={capture:r,passive:i},l=Aa(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&on(()=>{t.removeEventListener(e,l,a)})}let En=null;function xa(e){var t=this,n=t.ownerDocument,r=e.type,i=e.composedPath?.()||[],a=i[0]||e.target;En=e;var l=0,s=En===e&&e.__root;if(s){var u=i.indexOf(s);if(u!==-1&&(t===document||t===window)){e.__root=t;return}var o=i.indexOf(t);if(o===-1)return;u<=o&&(l=u)}if(a=i[l]||e.target,a!==t){In(e,"currentTarget",{configurable:!0,get(){return a||n}});var d=g,v=C;fe(null),Re(null);try{for(var p,_=[];a!==null;){var c=a.assignedSlot||a.parentNode||a.host||null;try{var b=a["__"+r];b!=null&&(!a.disabled||e.target===a)&&b.call(a,e)}catch(y){p?_.push(y):p=y}if(e.cancelBubble||c===t||c===null)break;a=c}if(p){for(let y of _)queueMicrotask(()=>{throw y});throw p}}finally{e.__root=t,delete e.currentTarget,fe(d),Re(v)}}}function Oa(e){var t=document.createElement("template");return t.innerHTML=e.replaceAll("<!>","<!---->"),t.content}function kt(e,t){var n=C;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function F(e,t){var n=(t&qr)!==0,r=(t&Kr)!==0,i,a=!e.startsWith("<!>");return()=>{i===void 0&&(i=Oa(a?e:"<!>"+e),n||(i=gt(i)));var l=r||pa?document.importNode(i,!0):i.cloneNode(!0);if(n){var s=gt(l),u=l.lastChild;kt(s,u)}else kt(l,l);return l}}function Na(e=""){{var t=Te(e+"");return kt(t,t),t}}function pt(){var e=document.createDocumentFragment(),t=document.createComment(""),n=Te();return e.append(t,n),kt(t,n),e}function x(e,t){e!==null&&e.before(t)}function Me(e,t){var n=t==null?"":typeof t=="object"?t+"":t;n!==(e.__t??=e.nodeValue)&&(e.__t=n,e.nodeValue=n+"")}class Fa{anchor;#t=new Map;#n=new Map;#e=new Map;#r=new Set;#i=!0;constructor(t,n=!0){this.anchor=t,this.#i=n}#a=()=>{var t=k;if(this.#t.has(t)){var n=this.#t.get(t),r=this.#n.get(n);if(r)cn(r),this.#r.delete(n);else{var i=this.#e.get(n);i&&(this.#n.set(n,i.effect),this.#e.delete(n),i.fragment.lastChild.remove(),this.anchor.before(i.fragment),r=i.effect)}for(const[a,l]of this.#t){if(this.#t.delete(a),a===t)break;const s=this.#e.get(l);s&&(pe(s.effect),this.#e.delete(l))}for(const[a,l]of this.#n){if(a===n||this.#r.has(a))continue;const s=()=>{if(Array.from(this.#t.values()).includes(a)){var o=document.createDocumentFragment();ka(l,o),o.append(Te()),this.#e.set(a,{effect:l,fragment:o})}else pe(l);this.#r.delete(a),this.#n.delete(a)};this.#i||!r?(this.#r.add(a),fn(l,s,!1)):s()}}};#s=t=>{this.#t.delete(t);const n=Array.from(this.#t.values());for(const[r,i]of this.#e)n.includes(r)||(pe(i.effect),this.#e.delete(r))};ensure(t,n){var r=k,i=Vn();if(n&&!this.#n.has(t)&&!this.#e.has(t))if(i){var a=document.createDocumentFragment(),l=Te();a.append(l),this.#e.set(t,{effect:it(()=>n(l)),fragment:a})}else this.#n.set(t,it(()=>n(this.anchor)));if(this.#t.set(r,t),i){for(const[s,u]of this.#n)s===t?r.skipped_effects.delete(u):r.skipped_effects.add(u);for(const[s,u]of this.#e)s===t?r.skipped_effects.delete(u.effect):r.skipped_effects.add(u.effect);r.oncommit(this.#a),r.ondiscard(this.#s)}else this.#a()}}function te(e,t,n=!1){var r=new Fa(e),i=n?tt:0;function a(l,s){r.ensure(l,s)}Wn(()=>{var l=!1;t((s,u=!0)=>{l=!0,a(u,s)}),l||a(!1,null)},i)}function Da(e,t,n){for(var r=[],i=t.length,a,l=t.length,s=0;s<i;s++){let v=t[s];fn(v,()=>{if(a){if(a.pending.delete(v),a.done.add(v),a.pending.size===0){var p=e.outrogroups;Xt($t(a.done)),p.delete(a),p.size===0&&(e.outrogroups=null)}}else l-=1},!1)}if(l===0){var u=r.length===0&&n!==null;if(u){var o=n,d=o.parentNode;ma(d),d.append(o),e.items.clear()}Xt(t,!u)}else a={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(a)}function Xt(e,t=!0){for(var n=0;n<e.length;n++)pe(e[n],t)}var Sn;function sr(e,t,n,r,i,a=null){var l=e,s=new Map;{var u=e;l=u.appendChild(Te())}var o=null,d=xt(()=>{var y=n();return Cn(y)?y:y==null?[]:$t(y)}),v,p=!0;function _(){b.fallback=o,ja(b,v,l,t,r),o!==null&&(v.length===0?(o.f&Ee)===0?cn(o):(o.f^=Ee,Xe(o,null,l)):fn(o,()=>{o=null}))}var c=Wn(()=>{v=f(d);for(var y=v.length,E=new Set,m=k,S=Vn(),I=0;I<y;I+=1){var h=v[I],R=r(h,I),M=p?null:s.get(R);M?(M.v&&at(M.v,h),M.i&&at(M.i,I),S&&m.skipped_effects.delete(M.e)):(M=La(s,p?l:Sn??=Te(),h,R,I,i,t,n),p||(M.e.f|=Ee),s.set(R,M)),E.add(R)}if(y===0&&a&&!o&&(p?o=it(()=>a(l)):(o=it(()=>a(Sn??=Te())),o.f|=Ee)),!p)if(S){for(const[H,ye]of s)E.has(H)||m.skipped_effects.add(ye.e);m.oncommit(_),m.ondiscard(()=>{})}else _();f(d)}),b={effect:c,items:s,outrogroups:null,fallback:o};p=!1}function ja(e,t,n,r,i){var a=t.length,l=e.items,s=e.effect.first,u,o=null,d=[],v=[],p,_,c,b;for(b=0;b<a;b+=1){if(p=t[b],_=i(p,b),c=l.get(_).e,e.outrogroups!==null)for(const H of e.outrogroups)H.pending.delete(c),H.done.delete(c);if((c.f&Ee)!==0)if(c.f^=Ee,c===s)Xe(c,null,n);else{var y=o?o.next:s;c===e.effect.last&&(e.effect.last=c.prev),c.prev&&(c.prev.next=c.next),c.next&&(c.next.prev=c.prev),ge(e,o,c),ge(e,c,y),Xe(c,y,n),o=c,d=[],v=[],s=o.next;continue}if((c.f&$)!==0&&cn(c),c!==s){if(u!==void 0&&u.has(c)){if(d.length<v.length){var E=v[0],m;o=E.prev;var S=d[0],I=d[d.length-1];for(m=0;m<d.length;m+=1)Xe(d[m],E,n);for(m=0;m<v.length;m+=1)u.delete(v[m]);ge(e,S.prev,I.next),ge(e,o,S),ge(e,I,E),s=E,o=I,b-=1,d=[],v=[]}else u.delete(c),Xe(c,s,n),ge(e,c.prev,c.next),ge(e,c,o===null?e.effect.first:o.next),ge(e,o,c),o=c;continue}for(d=[],v=[];s!==null&&s!==c;)(u??=new Set).add(s),v.push(s),s=s.next;if(s===null)continue}(c.f&Ee)===0&&d.push(c),o=c,s=c.next}if(e.outrogroups!==null){for(const H of e.outrogroups)H.pending.size===0&&(Xt($t(H.done)),e.outrogroups?.delete(H));e.outrogroups.size===0&&(e.outrogroups=null)}if(s!==null||u!==void 0){var h=[];if(u!==void 0)for(c of u)(c.f&$)===0&&h.push(c);for(;s!==null;)(s.f&$)===0&&s!==e.fallback&&h.push(s),s=s.next;var R=h.length;if(R>0){var M=a===0?n:null;Da(e,h,M)}}}function La(e,t,n,r,i,a,l,s){var u=(l&xr)!==0?(l&Nr)===0?ke(n,!1,!1):rt(n):null,o=(l&Or)!==0?rt(i):null;return{v:u,i:o,e:it(()=>(a(t,u??n,o??i,s),()=>{e.delete(r)}))}}function Xe(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&(t.f&Ee)===0?t.nodes.start:n;r!==null;){var l=ut(r);if(a.before(r),r===i)return;r=l}}function ge(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function Pn(e,t,n,r,i){var a=t.$$slots?.[n],l=!1;a===!0&&(a=t[n==="default"?"children":n],l=!0),a===void 0?i!==null&&i(e):a(e,l?()=>r:r)}function or(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=or(e[t]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function Ua(){for(var e,t,n=0,r="",i=arguments.length;n<i;n++)(e=arguments[n])&&(t=or(e))&&(r&&(r+=" "),r+=t);return r}function Rt(e){return typeof e=="object"?Ua(e):e??""}function qa(e,t,n){var r=e==null?"":""+e;return r===""?null:r}function Ka(e,t){return e==null?null:String(e)}function Ct(e,t,n,r,i,a){var l=e.__className;if(l!==n||l===void 0){var s=qa(n);s==null?e.removeAttribute("class"):e.className=s,e.__className=n}return a}function lr(e,t,n,r){var i=e.__style;if(i!==t){var a=Ka(t);a==null?e.removeAttribute("style"):e.style.cssText=a,e.__style=t}return r}function za(e,t,n=t){var r=new WeakSet;ba(e,"input",async i=>{var a=i?e.defaultValue:e.value;if(a=zt(e)?Bt(a):a,n(a),k!==null&&r.add(k),await Ma(),a!==(a=t())){var l=e.selectionStart,s=e.selectionEnd,u=e.value.length;if(e.value=a??"",s!==null){var o=e.value.length;l===s&&s===u&&o>u?(e.selectionStart=o,e.selectionEnd=o):(e.selectionStart=l,e.selectionEnd=Math.min(s,o))}}}),w(t)==null&&e.value&&(n(zt(e)?Bt(e.value):e.value),k!==null&&r.add(k)),un(()=>{var i=t();if(e===document.activeElement){var a=mt??k;if(r.has(a))return}zt(e)&&i===Bt(e.value)||e.type==="date"&&!i&&!e.value||i!==e.value&&(e.value=i??"")})}function zt(e){var t=e.type;return t==="number"||t==="range"}function Bt(e){return e===""?null:+e}function Ba(e){return function(...t){var n=t[0];n.target===this&&e?.apply(this,t)}}function Ha(e){return function(...t){var n=t[0];return n.preventDefault(),e?.apply(this,t)}}function dn(e=!1){const t=q,n=t.l.u;if(!n)return;let r=()=>Z(t.s);if(e){let i=0,a={};const l=At(()=>{let s=!1;const u=t.s;for(const o in u)u[o]!==a[o]&&(a[o]=u[o],s=!0);return s&&i++,i});r=()=>f(l)}n.b.length&&ga(()=>{kn(t,r),Yt(n.b)}),bn(()=>{const i=w(()=>n.m.map(Yr));return()=>{for(const a of i)typeof a=="function"&&a()}}),n.a.length&&bn(()=>{kn(t,r),Yt(n.a)})}function kn(e,t){if(e.l.s)for(const n of e.l.s)f(n);t()}function ur(e,t,n){if(e==null)return t(void 0),Vt;const r=w(()=>e.subscribe(t,n));return r.unsubscribe?()=>r.unsubscribe():r}function Va(e){let t;return ur(e,n=>t=n)(),t}let _t=!1,Qt=Symbol();function Ya(e,t,n){const r=n[t]??={store:null,source:ke(void 0),unsubscribe:Vt};if(r.store!==e&&!(Qt in n))if(r.unsubscribe(),r.store=e??null,e==null)r.source.v=void 0,r.unsubscribe=Vt;else{var i=!0;r.unsubscribe=ur(e,a=>{i?r.source.v=a:U(r.source,a)}),i=!1}return e&&Qt in n?Va(e):f(r.source)}function Ga(){const e={};function t(){on(()=>{for(var n in e)e[n].unsubscribe();In(e,Qt,{enumerable:!1,value:!0})})}return[e,t]}function Wa(e){var t=_t;try{return _t=!1,[e(),_t]}finally{_t=t}}function G(e,t,n,r){var i=!ot||(n&Dr)!==0,a=(n&Lr)!==0,l=(n&Ur)!==0,s=r,u=!0,o=()=>(u&&(u=!1,s=l?w(r):r),s),d;if(a){var v=ze in e||Wr in e;d=ht(e,t)?.set??(v&&t in e?S=>e[t]=S:void 0)}var p,_=!1;a?[p,_]=Wa(()=>e[t]):p=e[t],p===void 0&&r!==void 0&&(p=o(),d&&(i&&ea(),d(p)));var c;if(i?c=()=>{var S=e[t];return S===void 0?o():(u=!0,S)}:c=()=>{var S=e[t];return S!==void 0&&(s=void 0),S===void 0?s:S},i&&(n&jr)===0)return c;if(d){var b=e.$$legacy;return(function(S,I){return arguments.length>0?((!i||!I||b||_)&&d(I?c():S),S):c()})}var y=!1,E=((n&Fr)!==0?At:xt)(()=>(y=!1,c()));a&&f(E);var m=C;return(function(S,I){if(arguments.length>0){const h=I?f(E):i&&a?Ke(S):S;return U(E,h),y=!0,s!==void 0&&(s=h),S}return Fe&&y||(m.f&ve)!==0?E.v:f(E)})}function Za(e){const t=e.toLowerCase();return t.includes("paystack")?"paystack":t.includes("hubtel")?"hubtel":t.includes("flutterwave")?"flutterwave":"paystack"}function Ja(e,t){return{id:e.id,clientSecret:e.client_secret,amount:e.amount,currency:e.currency,status:e.status,recommendedPsp:Za(e.provider),availableMethods:t.paymentMethods||["card","mobile_money"],connectionId:e.connection_id,provider:e.provider,feeAmount:e.fee_amount,feeCurrency:e.fee_currency,netAmount:e.net_amount,metadata:t.metadata}}function fr(e){const{config:t,onSuccess:n,onError:r,onClose:i,onStateChange:a,apiBaseUrl:l}=e;let s=P.createInitialState();const u=new Set,o=new P.ReevitAPIClient({publicKey:t.publicKey,baseUrl:l}),d=()=>{u.forEach(A=>A(s))},v=A=>{const L=s.status;s=P.reevitReducer(s,A),d(),s.status!==L&&a?.(s.status)},p=A=>(u.add(A),A(s),()=>u.delete(A)),_=async A=>{v({type:"INIT_START"});try{const L=t.reference||P.generateReference(),N=P.detectCountryFromCurrency(t.currency),ae=A||t.paymentMethods?.[0]||"card",{data:De,error:V}=await o.createPaymentIntent({...t,reference:L},ae,N);if(V){v({type:"INIT_ERROR",payload:V}),r?.(V);return}if(!De){const ct={code:"INIT_FAILED",message:"No data received from API",recoverable:!0};v({type:"INIT_ERROR",payload:ct}),r?.(ct);return}const be=Ja(De,{...t,reference:L});v({type:"INIT_SUCCESS",payload:be})}catch(L){const N={code:"INIT_FAILED",message:L instanceof Error?L.message:"Failed to initialize checkout",recoverable:!0,originalError:L};v({type:"INIT_ERROR",payload:N}),r?.(N)}},c=A=>{v({type:"SELECT_METHOD",payload:A})},b=async A=>{if(!(!s.paymentIntent||!s.selectedMethod)){v({type:"PROCESS_START"});try{const{data:L,error:N}=await o.confirmPayment(s.paymentIntent.id);if(N){v({type:"PROCESS_ERROR",payload:N}),r?.(N);return}const ae={paymentId:s.paymentIntent.id,reference:A.reference||s.paymentIntent.metadata?.reference||"",amount:s.paymentIntent.amount,currency:s.paymentIntent.currency,paymentMethod:s.selectedMethod,psp:s.paymentIntent.recommendedPsp,pspReference:A.pspReference||L?.provider_ref_id||"",status:"success",metadata:A};v({type:"PROCESS_SUCCESS",payload:ae}),n?.(ae)}catch(L){const N={code:"PAYMENT_FAILED",message:L instanceof Error?L.message:"Payment failed",recoverable:!0,originalError:L};v({type:"PROCESS_ERROR",payload:N}),r?.(N)}}};return{subscribe:p,initialize:_,selectMethod:c,processPayment:b,handlePspSuccess:async A=>{await b(A)},handlePspError:A=>{v({type:"PROCESS_ERROR",payload:A}),r?.(A)},reset:()=>{v({type:"RESET"})},close:async()=>{if(s.paymentIntent&&s.status!=="success")try{await o.cancelPaymentIntent(s.paymentIntent.id)}catch{}v({type:"CLOSE"}),i?.()},getStatus:()=>s.status,getPaymentIntent:()=>s.paymentIntent,getSelectedMethod:()=>s.selectedMethod,getError:()=>s.error,getResult:()=>s.result,isLoading:()=>s.status==="loading"||s.status==="processing",isReady:()=>s.status==="ready"||s.status==="method_selected",isComplete:()=>s.status==="success",canRetry:()=>s.error?.recoverable??!1}}var Xa=F('<div class="reevit-radio-inner"></div>'),Qa=F('<button type="button"><span class="reevit-method-icon"> </span> <div class="reevit-method-info"><span class="reevit-method-name"> </span> <span class="reevit-method-description"> </span></div> <div class="reevit-method-radio"><!></div></button>'),$a=F('<div class="reevit-method-selector"><h3 class="reevit-section-title">Select Payment Method</h3> <p class="reevit-amount-display"> </p> <div class="reevit-methods-grid"></div></div>');function cr(e,t){rn(t,!1);const n=ke();let r=G(t,"methods",8),i=G(t,"selected",8),a=G(t,"amount",8),l=G(t,"currency",8);const s=Qe.createEventDispatcher();function u(_){s("select",_)}et(()=>Z(r()),()=>{U(n,[{id:"card",name:"Card",description:"Visa, Mastercard, Maestro",icon:"💳"},{id:"mobile_money",name:"Mobile Money",description:"MTN, Vodafone, AirtelTigo",icon:"📱"},{id:"bank_transfer",name:"Bank Transfer",description:"Transfer directly from your bank",icon:"🏦"}].filter(_=>r().includes(_.id)))}),ln(),dn();var o=$a(),d=D(O(o),2),v=O(d),p=D(d,2);sr(p,5,()=>f(n),_=>_.id,(_,c)=>{var b=Qa(),y=O(b),E=O(y),m=D(y,2),S=O(m),I=O(S),h=D(S,2),R=O(h),M=D(m,2),H=O(M);{var ye=T=>{var j=Xa();x(T,j)};te(H,T=>{Z(i()),f(c),w(()=>i()===f(c).id)&&T(ye)})}le(T=>{Ct(b,1,T),Me(E,(f(c),w(()=>f(c).icon))),Me(I,(f(c),w(()=>f(c).name))),Me(R,(f(c),w(()=>f(c).description)))},[()=>Rt((Z(P.cn),Z(i()),f(c),w(()=>P.cn("reevit-method-card",i()===f(c).id&&"reevit-method-card--selected"))))]),oe("click",b,()=>u(f(c).id)),x(_,b)}),le(_=>Me(v,`Pay ${_??""}`),[()=>(Z(P.formatAmount),Z(a()),Z(l()),w(()=>P.formatAmount(a(),l())))]),x(e,o),an()}var ei=F('<button type="button"><div class="reevit-network-dot"></div> </button>'),ti=F('<p class="reevit-error-message"> </p>'),ni=F('<span class="reevit-spinner"></span>'),ri=F("<span>Continue</span>"),ai=F('<form class="reevit-momo-form"><div class="reevit-form-group"><label class="reevit-label" for="reevit-phone">Phone Number</label> <input id="reevit-phone" type="tel" placeholder="e.g. 024 123 4567" autocomplete="tel"/></div> <div class="reevit-network-selector"><label class="reevit-label" for="reevit-network-grid">Select Network</label> <div id="reevit-network-grid" class="reevit-networks-grid"></div></div> <!> <button type="submit" class="reevit-submit-btn"><!></button> <p class="reevit-secure-text">🔒 Secure mobile money payment via Reevit</p></form>');function dr(e,t){rn(t,!1);let n=G(t,"initialPhone",8,""),r=G(t,"loading",8,!1);const i=Qe.createEventDispatcher();let a=ke(n()),l=ke(null),s=ke(null);function u(){if(!P.validatePhone(f(a))){U(s,"Please enter a valid phone number");return}if(!f(l)){U(s,"Please select your mobile network");return}i("submit",{phone:f(a),network:f(l)})}const o=[{id:"mtn",name:"MTN",color:"#FFCC00"},{id:"vodafone",name:"Vodafone",color:"#E60000"},{id:"airteltigo",name:"AirtelTigo",color:"#005596"}];et(()=>(f(a),f(s)),()=>{const h=P.detectNetwork(f(a));h&&U(l,h),f(s)&&U(s,null)}),ln(),dn();var d=ai(),v=O(d),p=D(O(v),2),_=D(v,2),c=D(O(_),2);sr(c,5,()=>o,h=>h.id,(h,R)=>{var M=ei(),H=O(M),ye=D(H);le(T=>{Ct(M,1,T),M.disabled=r(),lr(H,`background-color: ${f(R),w(()=>f(R).color)??""}`),Me(ye,` ${f(R),w(()=>f(R).name)??""}`)},[()=>Rt((Z(P.cn),f(l),f(R),w(()=>P.cn("reevit-network-btn",f(l)===f(R).id&&"reevit-network-btn--selected"))))]),oe("click",M,()=>U(l,f(R).id)),x(h,M)});var b=D(_,2);{var y=h=>{var R=ti(),M=O(R);le(()=>Me(M,f(s))),x(h,R)};te(b,h=>{f(s)&&h(y)})}var E=D(b,2),m=O(E);{var S=h=>{var R=ni();x(h,R)},I=h=>{var R=ri();x(h,R)};te(m,h=>{r()?h(S):h(I,!1)})}le(h=>{Ct(p,1,h),p.disabled=r(),E.disabled=r()||!f(a)},[()=>Rt((Z(P.cn),f(s),Z(P.validatePhone),f(a),w(()=>P.cn("reevit-input",f(s)&&!P.validatePhone(f(a))&&"reevit-input--error"))))]),za(p,()=>f(a),h=>U(a,h)),oe("submit",d,Ha(u)),x(e,d),an()}const Rn=new Map;function ft(e,t){const n=Rn.get(t);if(n)return n;const r=new Promise((i,a)=>{if(document.getElementById(t)){i();return}const l=document.createElement("script");l.id=t,l.src=e,l.async=!0,l.onload=()=>i(),l.onerror=()=>a(new Error(`Failed to load ${t} script`)),document.head.appendChild(l)});return Rn.set(t,r),r}function vr(){return ft("https://js.paystack.co/v1/inline.js","paystack-script")}function pr(){return ft("https://checkout.hubtel.com/js/hubtel-checkout.js","hubtel-script")}function _r(){return ft("https://checkout.flutterwave.com/v3.js","flutterwave-script")}function hr(){return ft("https://js.stripe.com/v3/","stripe-script")}function mr(){return ft("https://sdk.monnify.com/plugin/monnify.js","monnify-script")}async function yr(e){if(await vr(),!window.PaystackPop)throw new Error("Paystack script not loaded");window.PaystackPop.setup({key:e.key,email:e.email,amount:e.amount,currency:e.currency,ref:e.ref,metadata:e.metadata,callback:e.onSuccess,onClose:e.onClose}).openIframe()}async function br(e){if(await pr(),!window.HubtelCheckout)throw new Error("Hubtel script not loaded");window.HubtelCheckout.initPay({clientId:e.clientId,purchaseDescription:e.purchaseDescription,amount:e.amount,callbackUrl:e.callbackUrl,customerPhone:e.customerPhone,customerEmail:e.customerEmail,onSuccess:e.onSuccess,onClose:e.onClose})}async function wr(e){if(await _r(),!window.FlutterwaveCheckout)throw new Error("Flutterwave script not loaded");window.FlutterwaveCheckout({public_key:e.public_key,tx_ref:e.tx_ref,amount:e.amount,currency:e.currency,customer:e.customer,payment_options:e.payment_options,customizations:e.customizations,callback:e.callback,onclose:e.onclose})}async function gr(e){if(await hr(),!window.Stripe)throw new Error("Stripe.js not loaded");return window.Stripe(e)}async function ii(e){const n=await(await gr(e.publishableKey)).confirmPayment({elements:e.elements,clientSecret:e.clientSecret,redirect:"if_required"});n.error?e.onError({message:n.error.message||"Payment failed"}):n.paymentIntent&&e.onSuccess({paymentIntentId:n.paymentIntent.id,status:n.paymentIntent.status})}async function si(e){if(await mr(),!window.MonnifySDK)throw new Error("Monnify SDK not loaded");window.MonnifySDK.initialize({amount:e.amount,currency:e.currency,reference:e.reference,customerName:e.customerName,customerEmail:e.customerEmail,customerMobileNumber:e.customerPhone,apiKey:e.apiKey,contractCode:e.contractCode,paymentDescription:e.paymentDescription||"Payment",isTestMode:e.isTestMode??!1,metadata:e.metadata,onComplete:t=>{t.status==="SUCCESS"?e.onSuccess({transactionReference:t.transactionReference,paymentReference:t.paymentReference,...t}):e.onError?.({message:t.message||"Payment failed"})},onClose:e.onClose})}async function oi(e,t){e.onInitiated();try{const n=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({phone_number:e.phoneNumber,amount:e.amount,reference:e.reference,description:e.description})});if(!n.ok){const a=(await n.json().catch(()=>({}))).message||"Failed to initiate M-Pesa payment";return e.onError({message:a}),{status:"failed",message:a}}const r=await n.json();return{status:"initiated",message:"Please check your phone and enter your M-Pesa PIN to complete the payment.",transactionId:r.checkout_request_id||r.transaction_id}}catch(n){const r=n instanceof Error?n.message:"Network error";return e.onError({message:r}),{status:"failed",message:r}}}var li=F('<span class="reevit-spinner"></span>'),ui=F('<button type="button" class="reevit-pay-button"><!></button>'),fi=F('<div class="reevit-loading-state"><div class="reevit-spinner reevit-spinner--large"></div> <p>Initializing payment...</p></div>'),ci=F('<div class="reevit-error-state"><div class="reevit-error-icon">⚠️</div> <h3>Payment Failed</h3> <p> </p> <button class="reevit-retry-btn">Retry</button></div>'),di=F('<div class="reevit-success-state"><div class="reevit-success-icon">✅</div> <h3>Payment Successful</h3> <p>Thank you for your payment.</p> <button class="reevit-done-btn">Done</button></div>'),vi=F('<div class="reevit-method-form-container"><!></div>'),pi=F('<span class="reevit-spinner"></span>'),_i=F("<span>Proceed to Card Payment</span>"),hi=F('<div class="reevit-card-info"><p class="reevit-info-text">You will be redirected to our secure payment partner to complete your card payment.</p> <button class="reevit-submit-btn"><!></button></div>'),mi=F("<!> <!> <!>",1),yi=F('<div class="reevit-modal-overlay" role="button" tabindex="0"><div><button class="reevit-modal-close" aria-label="Close">&times;</button> <div class="reevit-modal-header"><h2 class="reevit-modal-title">Reevit Checkout</h2> <p class="reevit-modal-subtitle">Secure payment powered by Reevit</p></div> <div class="reevit-modal-body"><!></div> <div class="reevit-modal-footer"><div class="reevit-trust-badges"><span>PCI DSS Compliant</span> <span>•</span> <span>SSL Secure</span></div></div></div></div>'),bi=F('<div class="reevit-sdk-container"><!> <!></div>');function wi(e,t){rn(t,!1);const n=()=>Ya(m,"$store",r),[r,i]=Ga(),a=ke(),l=ke(),s=Qe.createEventDispatcher();let u=G(t,"publicKey",8),o=G(t,"amount",8),d=G(t,"currency",8),v=G(t,"email",8,void 0),p=G(t,"phone",8,void 0),_=G(t,"reference",8,void 0),c=G(t,"metadata",8,void 0),b=G(t,"paymentMethods",24,()=>["card","mobile_money"]),y=G(t,"theme",24,()=>({})),E=G(t,"isOpen",12,!1);const m=fr({config:{publicKey:u(),amount:o(),currency:d(),email:v(),phone:p(),reference:_(),metadata:c(),paymentMethods:b()},onSuccess:T=>s("success",T),onError:T=>s("error",T),onClose:()=>{E(!1),s("close")}});function S(){E(!0)}function I(){E(!1),m.close()}async function h(T){if(!f(a).paymentIntent)return;const j=f(a).paymentIntent.recommendedPsp;try{j==="paystack"?await yr({key:u(),email:v()||"",amount:o(),currency:d(),ref:f(a).paymentIntent.id,onSuccess:J=>m.handlePspSuccess(J),onClose:()=>{}}):j==="hubtel"?await br({clientId:u(),purchaseDescription:`Payment for ${o()} ${d()}`,amount:o(),customerPhone:T?.phone||p(),customerEmail:v(),onSuccess:J=>m.handlePspSuccess(J),onClose:()=>{}}):j==="flutterwave"&&await wr({public_key:u(),tx_ref:f(a).paymentIntent.id,amount:o(),currency:d(),customer:{email:v()||"",phone_number:T?.phone||p()},callback:J=>m.handlePspSuccess(J),onclose:()=>{}})}catch(J){m.handlePspError({code:"BRIDGE_ERROR",message:J instanceof Error?J.message:"Failed to open payment gateway"})}}Qe.onMount(()=>{E()&&m.initialize()}),Qe.onDestroy(()=>{typeof document<"u"&&(document.body.style.overflow="")}),et(()=>n(),()=>{U(a,n())}),et(()=>Z(y()),()=>{U(l,P.createThemeVariables(y()))}),et(()=>(Z(E()),f(a)),()=>{E()?(document.body.style.overflow="hidden",f(a).paymentIntent||m.initialize()):typeof document<"u"&&(document.body.style.overflow="")}),ln(),dn();var R=bi(),M=O(R);Pn(M,t,"default",{handleOpen:S,get isLoading(){return f(a),w(()=>f(a).status==="loading")}},T=>{var j=ui(),J=O(j);{var A=N=>{var ae=li();x(N,ae)},L=N=>{var ae=pt(),De=Je(ae);Pn(De,t,"button-text",{},V=>{var be=Na("Pay Now");x(V,be)}),x(N,ae)};te(J,N=>{f(a),w(()=>f(a).status==="loading")?N(A):N(L,!1)})}le(()=>j.disabled=(f(a),w(()=>f(a).status==="loading"))),oe("click",j,S),x(T,j)});var H=D(M,2);{var ye=T=>{var j=yi(),J=O(j),A=O(J),L=D(A,4),N=O(L);{var ae=V=>{var be=fi();x(V,be)},De=V=>{var be=pt(),ct=Je(be);{var Er=je=>{var Ye=ci(),dt=D(O(Ye),4),Nt=O(dt),Ft=D(dt,2);le(()=>Me(Nt,(f(a),w(()=>f(a).error.message)))),oe("click",Ft,()=>m.initialize()),x(je,Ye)},Sr=je=>{var Ye=pt(),dt=Je(Ye);{var Nt=Le=>{var Ge=di(),Dt=D(O(Ge),6);oe("click",Dt,I),x(Le,Ge)},Ft=Le=>{var Ge=pt(),Dt=Je(Ge);{var Pr=jt=>{var vn=mi(),pn=Je(vn);cr(pn,{get methods(){return b()},get selected(){return f(a),w(()=>f(a).selectedMethod)},get amount(){return o()},get currency(){return d()},$$events:{select:ce=>m.selectMethod(ce.detail)}});var _n=D(pn,2);{var kr=ce=>{var We=vi(),Ze=O(We);{let Lt=xt(()=>(f(a),w(()=>f(a).status==="processing")));dr(Ze,{get initialPhone(){return p()},get loading(){return f(Lt)},$$events:{submit:Ut=>h(Ut.detail)}})}x(ce,We)};te(_n,ce=>{f(a),w(()=>f(a).status==="method_selected"&&f(a).selectedMethod==="mobile_money")&&ce(kr)})}var Rr=D(_n,2);{var Cr=ce=>{var We=hi(),Ze=D(O(We),2),Lt=O(Ze);{var Ut=Ue=>{var qt=pi();x(Ue,qt)},Ir=Ue=>{var qt=_i();x(Ue,qt)};te(Lt,Ue=>{f(a),w(()=>f(a).status==="processing")?Ue(Ut):Ue(Ir,!1)})}le(()=>Ze.disabled=(f(a),w(()=>f(a).status==="processing"))),oe("click",Ze,()=>h(null)),x(ce,We)};te(Rr,ce=>{f(a),w(()=>f(a).status==="method_selected"&&f(a).selectedMethod==="card")&&ce(Cr)})}x(jt,vn)};te(Dt,jt=>{f(a),w(()=>f(a).status==="ready"||f(a).status==="method_selected")&&jt(Pr)},!0)}x(Le,Ge)};te(dt,Le=>{f(a),w(()=>f(a).status==="success")?Le(Nt):Le(Ft,!1)},!0)}x(je,Ye)};te(ct,je=>{f(a),w(()=>f(a).status==="failed"&&f(a).error)?je(Er):je(Sr,!1)},!0)}x(V,be)};te(N,V=>{f(a),w(()=>f(a).status==="loading")?V(ae):V(De,!1)})}le(V=>Ct(J,1,V),[()=>Rt((Z(P.cn),Z(y()),w(()=>P.cn("reevit-modal-content",y().darkMode&&"reevit-modal--dark"))))]),oe("click",A,I),oe("click",j,Ba(I)),oe("keydown",j,V=>V.key==="Escape"&&I()),x(T,j)};te(H,T=>{E()&&T(ye)})}le(T=>lr(R,T),[()=>(f(l),w(()=>Object.entries(f(l)).map(([T,j])=>`${T}:${j}`).join(";")))]),x(e,R),an(),i()}Object.defineProperty(exports,"ReevitAPIClient",{enumerable:!0,get:()=>P.ReevitAPIClient});Object.defineProperty(exports,"cn",{enumerable:!0,get:()=>P.cn});Object.defineProperty(exports,"createInitialState",{enumerable:!0,get:()=>P.createInitialState});Object.defineProperty(exports,"createReevitClient",{enumerable:!0,get:()=>P.createReevitClient});Object.defineProperty(exports,"detectCountryFromCurrency",{enumerable:!0,get:()=>P.detectCountryFromCurrency});Object.defineProperty(exports,"detectNetwork",{enumerable:!0,get:()=>P.detectNetwork});Object.defineProperty(exports,"formatAmount",{enumerable:!0,get:()=>P.formatAmount});Object.defineProperty(exports,"formatPhone",{enumerable:!0,get:()=>P.formatPhone});Object.defineProperty(exports,"reevitReducer",{enumerable:!0,get:()=>P.reevitReducer});Object.defineProperty(exports,"validatePhone",{enumerable:!0,get:()=>P.validatePhone});exports.MobileMoneyForm=dr;exports.PaymentMethodSelector=cr;exports.ReevitCheckout=wi;exports.confirmStripePayment=ii;exports.createReevitStore=fr;exports.createStripeInstance=gr;exports.initiateMPesaSTKPush=oi;exports.loadFlutterwaveScript=_r;exports.loadHubtelScript=pr;exports.loadMonnifyScript=mr;exports.loadPaystackScript=vr;exports.loadStripeScript=hr;exports.openFlutterwaveModal=wr;exports.openHubtelPopup=br;exports.openMonnifyModal=si;exports.openPaystackPopup=yr;