@credenza3/passport-evm 0.3.6 → 0.3.8

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 (71) hide show
  1. package/dist/{App-m5UKvr3z.js → App-CChodDoZ.js} +18 -18
  2. package/dist/{App-m5UKvr3z.js.map → App-CChodDoZ.js.map} +1 -1
  3. package/dist/{Button-Cj3H54ng.js → Button-j2hwAk_x.js} +4 -4
  4. package/dist/{Button-Cj3H54ng.js.map → Button-j2hwAk_x.js.map} +1 -1
  5. package/dist/{ButtonBack-1KvcEgUf.js → ButtonBack-BGdJAP39.js} +4 -4
  6. package/dist/{ButtonBack-1KvcEgUf.js.map → ButtonBack-BGdJAP39.js.map} +1 -1
  7. package/dist/{ButtonLink-B_S5MzB9.js → ButtonLink-D7R7WKUD.js} +3 -3
  8. package/dist/{ButtonLink-B_S5MzB9.js.map → ButtonLink-D7R7WKUD.js.map} +1 -1
  9. package/dist/{ConfirmAccount-Dpm1na0x.js → ConfirmAccount-97xKqidL.js} +9 -9
  10. package/dist/{ConfirmAccount-Dpm1na0x.js.map → ConfirmAccount-97xKqidL.js.map} +1 -1
  11. package/dist/{ContentHeader-CfGBEODJ.js → ContentHeader-LjbBVRlz.js} +3 -3
  12. package/dist/{ContentHeader-CfGBEODJ.js.map → ContentHeader-LjbBVRlz.js.map} +1 -1
  13. package/dist/{Error-BcuJVodg.js → Error-Bz_6geEW.js} +5 -5
  14. package/dist/{Error-BcuJVodg.js.map → Error-Bz_6geEW.js.map} +1 -1
  15. package/dist/{Input-CNhWUtg9.js → Input-CKdHyF7q.js} +4 -4
  16. package/dist/{Input-CNhWUtg9.js.map → Input-CKdHyF7q.js.map} +1 -1
  17. package/dist/{Label-CZ_fNeze.js → Label-BKyIfts6.js} +3 -3
  18. package/dist/{Label-CZ_fNeze.js.map → Label-BKyIfts6.js.map} +1 -1
  19. package/dist/{Loader-DsVkNCRy.js → Loader-DctdK6OT.js} +3 -3
  20. package/dist/{Loader-DsVkNCRy.js.map → Loader-DctdK6OT.js.map} +1 -1
  21. package/dist/Login-BtYhMB1y.js +289 -0
  22. package/dist/Login-BtYhMB1y.js.map +1 -0
  23. package/dist/{Logout-Hd6t2ryj.js → Logout-BRBDEUNG.js} +6 -6
  24. package/dist/{Logout-Hd6t2ryj.js.map → Logout-BRBDEUNG.js.map} +1 -1
  25. package/dist/{Nav-CTMCwUqp.js → Nav-Dxq2vXkq.js} +5 -5
  26. package/dist/{Nav-CTMCwUqp.js.map → Nav-Dxq2vXkq.js.map} +1 -1
  27. package/dist/{PassportId-DsU6_WJZ.js → PassportId-fiBazNez.js} +6 -6
  28. package/dist/{PassportId-DsU6_WJZ.js.map → PassportId-fiBazNez.js.map} +1 -1
  29. package/dist/{Payment-Bba1DOkI.js → Payment-BLsG9mTy.js} +228 -228
  30. package/dist/Payment-BLsG9mTy.js.map +1 -0
  31. package/dist/{PaymentResult-DuBuGxa7.js → PaymentResult-DLPHr-9g.js} +4 -4
  32. package/dist/{PaymentResult-DuBuGxa7.js.map → PaymentResult-DLPHr-9g.js.map} +1 -1
  33. package/dist/{Profile-Scn1iFLs.js → Profile-CejFP9wa.js} +7 -7
  34. package/dist/{Profile-Scn1iFLs.js.map → Profile-CejFP9wa.js.map} +1 -1
  35. package/dist/{ProgressVideo-CXwgcF29.js → ProgressVideo-CbrnNmSS.js} +5 -5
  36. package/dist/{ProgressVideo-CXwgcF29.js.map → ProgressVideo-CbrnNmSS.js.map} +1 -1
  37. package/dist/{RichAlert-DbgaKnjs.js → RichAlert-BpWeOVqe.js} +5 -5
  38. package/dist/{RichAlert-DbgaKnjs.js.map → RichAlert-BpWeOVqe.js.map} +1 -1
  39. package/dist/{Scanner-JRyxx5Py.js → Scanner-BQwokbIl.js} +6 -6
  40. package/dist/{Scanner-JRyxx5Py.js.map → Scanner-BQwokbIl.js.map} +1 -1
  41. package/dist/{SendTokens-C74OvOeu.js → SendTokens-BoHnXEXH.js} +7 -7
  42. package/dist/{SendTokens-C74OvOeu.js.map → SendTokens-BoHnXEXH.js.map} +1 -1
  43. package/dist/{Sign-DlMv7W0U.js → Sign-Dk8dBUPc.js} +6 -6
  44. package/dist/{Sign-DlMv7W0U.js.map → Sign-Dk8dBUPc.js.map} +1 -1
  45. package/dist/{Stripe.service-CUgjSfET.js → Stripe.service-CpvfLrWa.js} +3 -3
  46. package/dist/{Stripe.service-CUgjSfET.js.map → Stripe.service-CpvfLrWa.js.map} +1 -1
  47. package/dist/{UpdateProfile-CvotQvPW.js → UpdateProfile-y7inyJuO.js} +10 -10
  48. package/dist/{UpdateProfile-CvotQvPW.js.map → UpdateProfile-y7inyJuO.js.map} +1 -1
  49. package/dist/{UserInfo-Bl8zPV3P.js → UserInfo-bCOXfwr0.js} +4 -4
  50. package/dist/{UserInfo-Bl8zPV3P.js.map → UserInfo-bCOXfwr0.js.map} +1 -1
  51. package/dist/{Wallet-C5KMUZwK.js → Wallet-BQxgS98-.js} +7 -7
  52. package/dist/{Wallet-C5KMUZwK.js.map → Wallet-BQxgS98-.js.map} +1 -1
  53. package/dist/{each-UwfXqlZO.js → each-BjDFZVYz.js} +2 -2
  54. package/dist/{each-UwfXqlZO.js.map → each-BjDFZVYz.js.map} +1 -1
  55. package/dist/{html-DqIqZ6JM.js → html-BYVO-3GL.js} +3 -3
  56. package/dist/{html-DqIqZ6JM.js.map → html-BYVO-3GL.js.map} +1 -1
  57. package/dist/{index-Dy26NoB8.js → index-BwN9XS4W.js} +5 -5
  58. package/dist/{index-Dy26NoB8.js.map → index-BwN9XS4W.js.map} +1 -1
  59. package/dist/{index-client-D0zSUosx.js → index-client-D86Uqpxr.js} +2 -2
  60. package/dist/{index-client-D0zSUosx.js.map → index-client-D86Uqpxr.js.map} +1 -1
  61. package/dist/{input-KAFubsaE.js → input-D2Hkf23e.js} +2 -2
  62. package/dist/{input-KAFubsaE.js.map → input-D2Hkf23e.js.map} +1 -1
  63. package/dist/{legacy-WZ2erltp.js → legacy-BptsOtjE.js} +2 -2
  64. package/dist/{legacy-WZ2erltp.js.map → legacy-BptsOtjE.js.map} +1 -1
  65. package/dist/passport.es.js +1 -1
  66. package/dist/passport.umd.js +102 -102
  67. package/dist/passport.umd.js.map +1 -1
  68. package/package.json +1 -1
  69. package/dist/Login-DRF70gfG.js +0 -281
  70. package/dist/Login-DRF70gfG.js.map +0 -1
  71. package/dist/Payment-Bba1DOkI.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@credenza3/passport-evm",
3
- "version": "0.3.6",
3
+ "version": "0.3.8",
4
4
  "type": "module",
5
5
  "description": "Credenza Passport",
6
6
  "types": "dist/types/index.d.ts",
@@ -1,281 +0,0 @@
1
- import { c as j, p as Z, f as M, g as xt, e as st, b as f, d as J, u as V, a as R, i as k, t as bt, r as et, h as it, n as yt, o as rt } from "./legacy-WZ2erltp.js";
2
- import { o as Ct } from "./index-client-D0zSUosx.js";
3
- import { z, B as L, C as S, y as B, u as K, x as I, G as H, F as Lt, D as ot, J as h, E as N, v as St, I as P, m as tt, A as Y, w as Ot, Z as ct, b4 as Qt, b5 as at, b6 as Pt, N as $, M as Mt, Q as Tt, b7 as kt, a5 as qt, S as At, T as Dt } from "./index-Dy26NoB8.js";
4
- import { C as Et, a as Rt } from "./App-m5UKvr3z.js";
5
- import { C as It } from "./ContentHeader-CfGBEODJ.js";
6
- import { L as lt } from "./Loader-DsVkNCRy.js";
7
- import { e as Ht, i as Nt } from "./each-UwfXqlZO.js";
8
- import { h as jt } from "./html-DqIqZ6JM.js";
9
- import { P as Jt, a as Vt } from "./svg-BwNV4pWZ.js";
10
- var zt = M(`<button class="crtw-w-full crtw-text-center crtw-h-11 crtw-font-medium
11
- crtw-rounded-sm crtw-text-[13px] sm:crtw-text-sm crtw-items-center crtw-bg-black
12
- crtw-text-white crtw-mt-[5px] crtw-justify-center crtw-flex"><!></button>`);
13
- function dt(a, o) {
14
- if (new.target) return j({ component: dt, ...a });
15
- z(o, !1);
16
- let n = Z(o, "handler", 12);
17
- var e = zt(), x = L(e);
18
- return xt(x, o, "default", {}), S(e), st("click", e, function(...d) {
19
- n()?.apply(this, d);
20
- }), f(a, e), B({
21
- get handler() {
22
- return n();
23
- },
24
- set handler(d) {
25
- n(d), K();
26
- },
27
- $set: V,
28
- $on: (d, l) => J(o, d, l)
29
- });
30
- }
31
- var Bt = M('<div class="crtw-text-center crtw-text-gray-500 crtw-text-sm">No login methods available for this client.</div>'), Ut = M('<div class="crtw-m-5"><!></div>');
32
- function vt(a, o) {
33
- if (new.target) return j({ component: vt, ...a });
34
- z(o, !1);
35
- let n = Z(o, "options", 12), { loginMethods: e, handleLogin: x, isLoading: d } = n();
36
- var l = R(), p = I(l);
37
- {
38
- var g = (r) => {
39
- Et(r, {
40
- children: (i, t) => {
41
- var s = R(), m = I(s);
42
- {
43
- var T = (_) => {
44
- var v = Bt();
45
- f(_, v);
46
- }, q = (_) => {
47
- var v = R(), A = I(v);
48
- Ht(A, 1, () => e, Nt, (D, c) => {
49
- dt(D, {
50
- handler: () => x(h(c)),
51
- children: (O, U) => {
52
- Lt();
53
- var F = bt();
54
- ot(() => et(F, `Continue with ${h(c), H(() => h(c).text) ?? ""}`)), f(O, F);
55
- },
56
- $$slots: { default: !0 }
57
- });
58
- }), f(_, v);
59
- };
60
- k(m, (_) => {
61
- H(() => e.length === 0) ? _(T) : _(q, !1);
62
- });
63
- }
64
- f(i, s);
65
- },
66
- $$slots: { default: !0 }
67
- });
68
- }, b = (r) => {
69
- var i = Ut(), t = L(i);
70
- lt(t, {}), S(i), f(r, i);
71
- };
72
- k(p, (r) => {
73
- d ? r(b, !1) : r(g);
74
- });
75
- }
76
- return f(a, l), B({
77
- get options() {
78
- return n();
79
- },
80
- set options(r) {
81
- n(r), K();
82
- },
83
- $set: V,
84
- $on: (r, i) => J(o, r, i)
85
- });
86
- }
87
- var Ft = M("<div><!></div>"), Gt = M('<div class="crtw-mt-4"><span class="crtw-text-sm">Cached QR is available. <span class="crtw-cursor-pointer crtw-text-warningTextColor" role="button" tabindex="0"> </span></span> <!></div>');
88
- function ut(a, o) {
89
- if (new.target) return j({ component: ut, ...a });
90
- z(o, !1);
91
- let n = Z(o, "options", 12), { qrCodeSvg: e, showQr: x, hideQr: d } = n();
92
- var l = Gt(), p = L(l), g = N(L(p)), b = L(g, !0);
93
- S(g), S(p);
94
- var r = N(p, 2);
95
- {
96
- var i = (t) => {
97
- var s = Ft(), m = L(s);
98
- jt(m, () => e), S(s), f(t, s);
99
- };
100
- k(r, (t) => {
101
- e && t(i);
102
- });
103
- }
104
- return S(l), ot(() => et(b, e ? "Hide QR!" : "Show QR!")), st("click", g, function(...t) {
105
- (e ? d : x)?.apply(this, t);
106
- }), f(a, l), B({
107
- get options() {
108
- return n();
109
- },
110
- set options(t) {
111
- n(t), K();
112
- },
113
- $set: V,
114
- $on: (t, s) => J(o, t, s)
115
- });
116
- }
117
- var Zt = M('<p class="crtw-text-center crtw-text-xs crtw-text-gray-700"> </p>'), Kt = M('<div class="crtw-flex crtw-flex-col crtw-gap-14 crtw-items-center crtw-w-full"><div class="crtw-flex crtw-flex-col crtw-gap-3 crtw-items-center crtw-w-full"><!> <!></div> <!> <!></div>');
118
- function ft(a, o) {
119
- if (new.target) return j({ component: ft, ...a });
120
- z(o, !1);
121
- const n = tt();
122
- let e = Z(o, "options", 12), { authTitle: x, authDescription: d, qrOptions: l, authOptions: p } = e();
123
- St(() => Y(e()), () => {
124
- P(n, e().isLoading);
125
- }), Ot(), it();
126
- var g = R(), b = I(g);
127
- {
128
- var r = (t) => {
129
- lt(t, {});
130
- }, i = (t) => {
131
- var s = Kt(), m = L(s), T = L(m);
132
- It(T, {
133
- get text() {
134
- return x;
135
- },
136
- get description() {
137
- return d;
138
- }
139
- });
140
- var q = N(T, 2);
141
- {
142
- var _ = (c) => {
143
- var O = Zt(), U = L(O, !0);
144
- S(O), ot(() => et(U, (Y(e()), H(() => e().infoText)))), f(c, O);
145
- };
146
- k(q, (c) => {
147
- Y(e()), H(() => e().infoText) && c(_);
148
- });
149
- }
150
- S(m);
151
- var v = N(m, 2);
152
- {
153
- let c = ct(() => (h(n), H(() => ({ ...p, isLoading: h(n) }))));
154
- vt(v, {
155
- get options() {
156
- return h(c);
157
- }
158
- });
159
- }
160
- var A = N(v, 2);
161
- {
162
- var D = (c) => {
163
- ut(c, {
164
- get options() {
165
- return l;
166
- }
167
- });
168
- };
169
- k(A, (c) => {
170
- l && c(D);
171
- });
172
- }
173
- S(s), f(t, s);
174
- };
175
- k(b, (t) => {
176
- h(n) ? t(r) : t(i, !1);
177
- });
178
- }
179
- return f(a, g), B({
180
- get options() {
181
- return e();
182
- },
183
- set options(t) {
184
- e(t), K();
185
- },
186
- $set: V,
187
- $on: (t, s) => J(o, t, s)
188
- });
189
- }
190
- const Wt = (a) => {
191
- const o = Qt.evm.isEvmProvider();
192
- return {
193
- oauth: {
194
- provider: at.OAUTH,
195
- text: "credenza auth",
196
- condition: a.some((n) => n !== "evm")
197
- },
198
- evm: {
199
- provider: at.EVM,
200
- text: "EVM",
201
- condition: a.includes("evm") && o
202
- }
203
- };
204
- };
205
- function Xt(a, o) {
206
- if (new.target) return j({ component: Xt, ...a });
207
- z(o, !1);
208
- const [n, e] = yt(), x = () => rt(At, "$forcedPage", n), d = () => rt(Dt, "$pageStore", n);
209
- var l = this && this.__awaiter || function(u, w, y, C) {
210
- function _t(E) {
211
- return E instanceof y ? E : new y(function(G) {
212
- G(E);
213
- });
214
- }
215
- return new (y || (y = Promise))(function(E, G) {
216
- function ht(Q) {
217
- try {
218
- W(C.next(Q));
219
- } catch (X) {
220
- G(X);
221
- }
222
- }
223
- function wt(Q) {
224
- try {
225
- W(C.throw(Q));
226
- } catch (X) {
227
- G(X);
228
- }
229
- }
230
- function W(Q) {
231
- Q.done ? E(Q.value) : _t(Q.value).then(ht, wt);
232
- }
233
- W((C = C.apply(u, w || [])).next());
234
- });
235
- }, p, g, b, r, i, t;
236
- const s = localStorage.getItem(Pt.QR_CODE);
237
- let m = tt();
238
- const T = () => {
239
- if (!s) return;
240
- const u = JSON.parse(s), w = Jt(JSON.stringify(u));
241
- P(m, Vt(w, { width: 250, height: 250 }));
242
- }, q = () => P(m, "");
243
- let _ = $(Mt), v = tt(!1);
244
- const { login: A, close: D } = $(Tt), c = (u) => l(void 0, [u], void 0, function* ({ provider: w }) {
245
- try {
246
- P(v, !0), yield A(w), P(v, !1), !x() && !d() && D();
247
- } catch {
248
- P(v, !1);
249
- }
250
- }), O = () => l(void 0, void 0, void 0, function* () {
251
- const u = Wt($(qt).available_login_types);
252
- return Object.entries(u).filter(([y, C]) => C.condition !== void 0 ? C.condition : !0).map(([y, C]) => Object.assign({}, C));
253
- }), U = (b = (g = (p = _.content) === null || p === void 0 ? void 0 : p.auth) === null || g === void 0 ? void 0 : g.title) !== null && b !== void 0 ? b : "Let’s get started", F = (t = (i = (r = _.content) === null || r === void 0 ? void 0 : r.auth) === null || i === void 0 ? void 0 : i.description) !== null && t !== void 0 ? t : "Confirm your account to connect.", gt = kt.subscribe((u) => P(v, u));
254
- Ct(gt), it();
255
- var nt = R(), pt = I(nt);
256
- Rt(pt, O, null, (u, w) => {
257
- {
258
- let y = ct(() => ({
259
- isLoading: h(v),
260
- authTitle: U,
261
- authDescription: F,
262
- qrOptions: { qrCodeSvg: h(m), showQr: T, hideQr: q },
263
- authOptions: { loginMethods: h(w), handleLogin: c }
264
- }));
265
- ft(u, {
266
- get options() {
267
- return h(y);
268
- }
269
- });
270
- }
271
- }), f(a, nt);
272
- var mt = B({
273
- $set: V,
274
- $on: (u, w) => J(o, u, w)
275
- });
276
- return e(), mt;
277
- }
278
- export {
279
- Xt as default
280
- };
281
- //# sourceMappingURL=Login-DRF70gfG.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Login-DRF70gfG.js","sources":["../../ui/main/login/auth-methods/AuthButton.svelte","../../ui/main/login/auth-methods/AuthMethods.svelte","../../ui/main/login/cachedQr/CachedQr.svelte","../../ui/main/login/Login.svelte","../src/app/pages/login/authMethods.helper.ts","../src/app/pages/login/Login.svelte"],"sourcesContent":["<script lang=\"ts\">\n export let handler: () => void\n</script>\n\n<button\n class=\"crtw-w-full crtw-text-center crtw-h-11 crtw-font-medium\n crtw-rounded-sm crtw-text-[13px] sm:crtw-text-sm crtw-items-center crtw-bg-black\ncrtw-text-white crtw-mt-[5px] crtw-justify-center crtw-flex\"\n on:click={handler}\n>\n <slot />\n</button>\n","<script lang=\"ts\">\n import { type TAvailableLoginMethod } from \"../../../../utils/types\";\n import Container from \"../../shared/Container.svelte\";\n import Loader from \"../../shared/Loader.svelte\";\n import AuthButton from \"./AuthButton.svelte\";\n\n export let options: {\n loginMethods: TAvailableLoginMethod[];\n handleLogin: (method: TAvailableLoginMethod) => void;\n isLoading: boolean;\n };\n\n let { loginMethods, handleLogin, isLoading } =\n options;\n</script>\n\n{#if !isLoading}\n <Container>\n {#if loginMethods.length === 0}\n <div class=\"crtw-text-center crtw-text-gray-500 crtw-text-sm\">\n No login methods available for this client.\n </div>\n {:else}\n {#each loginMethods as method}\n <AuthButton handler={() => handleLogin(method)}>\n Continue with {method.text}\n </AuthButton>\n {/each}\n {/if}\n </Container>\n{:else}\n <div class=\"crtw-m-5\">\n <Loader />\n </div>\n{/if}\n","<script lang=\"ts\">\n export let options: {\n qrCodeSvg: string;\n showQr: () => void;\n hideQr: () => void;\n };\n\n let { qrCodeSvg, showQr, hideQr } = options;\n</script>\n\n<div class=\"crtw-mt-4\">\n <span class=\"crtw-text-sm\">\n Cached QR is available.\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <span\n class=\"crtw-cursor-pointer crtw-text-warningTextColor\"\n on:click={qrCodeSvg ? hideQr : showQr}\n role=\"button\"\n tabindex=\"0\"\n >\n {qrCodeSvg ? \"Hide QR!\" : \"Show QR!\"}\n </span>\n </span>\n\n {#if qrCodeSvg}\n <div>{@html qrCodeSvg}</div>\n {/if}\n</div>\n","<script lang=\"ts\">\n import { type TAvailableLoginMethod } from \"../../../utils/types\";\n import ContentHeader from \"../shared/ContentHeader.svelte\";\n import Loader from \"../shared/Loader.svelte\";\n import AuthMethods from \"./auth-methods/AuthMethods.svelte\";\n import CachedQr from \"./cachedQr/CachedQr.svelte\";\n\n export let options: {\n isLoading: boolean;\n authTitle: string;\n authDescription: string;\n infoText?: string;\n qrOptions?: {\n qrCodeSvg: string;\n showQr: () => void;\n hideQr: () => void;\n };\n authOptions: {\n loginMethods: TAvailableLoginMethod[];\n handleLogin: (method: TAvailableLoginMethod) => void;\n };\n };\n\n let { authTitle, authDescription, qrOptions, authOptions } =\n options;\n\n $:isLoading = options.isLoading;\n</script>\n\n{#if isLoading}\n <Loader />\n{:else}\n <div\n class=\"crtw-flex crtw-flex-col crtw-gap-14 crtw-items-center crtw-w-full\"\n >\n <div\n class=\"crtw-flex crtw-flex-col crtw-gap-3 crtw-items-center crtw-w-full\"\n >\n <ContentHeader text={authTitle} description={authDescription} />\n {#if options.infoText}\n <p class=\"crtw-text-center crtw-text-xs crtw-text-gray-700\">\n {options.infoText}\n </p>\n {/if}\n </div>\n <AuthMethods options={{ ...authOptions, isLoading }} />\n\n {#if qrOptions}\n <CachedQr options={qrOptions} />\n {/if}\n </div>\n{/if}\n","import { AUTH_PROVIDERS } from '@packages/utils/enums'\nimport { sdk } from '@lib/sdk/sdk'\n\nexport const getAuthMethodsConfigs = (availableMethods: string[]) => {\n const isEvmCustomProvider = sdk.evm.isEvmProvider()\n return {\n oauth: {\n provider: AUTH_PROVIDERS.OAUTH,\n text: 'credenza auth',\n condition: availableMethods.some(method => method !== 'evm'),\n },\n evm: {\n provider: AUTH_PROVIDERS.EVM,\n text: 'EVM',\n condition: availableMethods.includes('evm') && isEvmCustomProvider,\n },\n }\n}\n","<script lang=\"ts\">\n import { get } from 'svelte/store'\n import { isLoggingInProcessStore, fn, pageStore, clientPublicStore } from '@packages/stores'\n import { configStore, forcedPage } from '@src/stores'\n import { onDestroy } from 'svelte'\n import { Login } from '@packages/ui'\n import {\n AUTH_PROVIDERS,\n PassportLocalStorage,\n } from '@packages/utils/enums'\n import { generate } from 'lean-qr'\n import { toSvgSource } from 'lean-qr/extras/svg'\n import { getAuthMethodsConfigs } from './authMethods.helper'\n import { type TAvailableLoginMethod } from '@packages/utils/types'\n\n const cachedQr = localStorage.getItem(PassportLocalStorage.QR_CODE)\n let qrCodeSvg: string\n const showQr = () => {\n if (!cachedQr) return\n const qrData = JSON.parse(cachedQr)\n const code = generate(JSON.stringify(qrData))\n qrCodeSvg = toSvgSource(code, { width: 250, height: 250 })\n }\n const hideQr = () => (qrCodeSvg = '')\n\n let config = get(configStore)\n let isLoading: boolean = false\n\n const { login, close } = get(fn)\n\n const handleLogin = async ({\n provider,\n }: {\n provider: AUTH_PROVIDERS\n }) => {\n try {\n isLoading = true\n await login(provider)\n isLoading = false\n if (!$forcedPage && !$pageStore) close()\n } catch (err) {\n isLoading = false\n }\n }\n\n const getAvailableLoginMethods = async (): Promise<TAvailableLoginMethod[]> => {\n const methodConfigs = getAuthMethodsConfigs(get(clientPublicStore).available_login_types)\n const availableLoginMethods = Object.entries(methodConfigs)\n .filter(([_, config]) => (config.condition !== undefined ? config.condition : true))\n .map(([_, config]) => ({\n ...config,\n }))\n\n return availableLoginMethods\n }\n\n const authTitle = config.content?.auth?.title ?? 'Let’s get started'\n const authDescription = config.content?.auth?.description ?? 'Confirm your account to connect.'\n\n const loginIndicatorSub = isLoggingInProcessStore.subscribe((val) => (isLoading = val))\n\n onDestroy(loginIndicatorSub)\n</script>\n\n{#await getAvailableLoginMethods() then loginMethods}\n <Login\n options={{\n isLoading,\n authTitle,\n authDescription,\n qrOptions: {\n qrCodeSvg,\n showQr,\n hideQr,\n },\n authOptions: {\n loginMethods,\n handleLogin\n },\n }}\n />\n{/await}\n\n"],"names":["handler","$.prop","$$props","$$args","options","loginMethods","handleLogin","isLoading","$.each","node_2","method","$.untrack","$.get","$$render","consequent","alternate","alternate_1","consequent_1","qrCodeSvg","showQr","hideQr","authTitle","authDescription","qrOptions","authOptions","getAuthMethodsConfigs","availableMethods","isEvmCustomProvider","sdk","AUTH_PROVIDERS","__awaiter","thisArg","_arguments","P","generator","PassportLocalStorage","$.mutable_source","cachedQr","code","generate","qrData","toSvgSource","$.set","config","configStore","login","close","get","fn","_a","provider","$forcedPage","$pageStore","getAvailableLoginMethods","methodConfigs","clientPublicStore","_","_c","_b","loginIndicatorSub","isLoggingInProcessStore","val","onDestroy","$.await","node"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Payment-Bba1DOkI.js","sources":["../../ui/images/lock.svg","../../ui/main/payment/PaymentSwitchButton.svelte","../../ui/main/payment/Payment.svelte","../../ui/main/payment/Stripe.svelte","../../ui/main/payment/CredenzaBalance.svelte","../src/app/pages/payment/stripe/wallet-pay/WalletPay.svelte","../src/app/pages/payment/stripe/Stripe.styles.ts","../../utils/lib/scripts/scripts.ts","../../utils/lib/orders/index.ts","../src/app/pages/payment/Payment.service.ts","../src/app/pages/payment/stripe/Stripe.svelte","../src/app/pages/payment/credenza-balance/CredenzaBalance.svelte","../src/app/pages/payment/Payment.svelte"],"sourcesContent":["export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='22'%20height='22'%20viewBox='0%200%2024%2024'%3e%3cpath%20fill='%23bbb'%20d='M17%209.761v-4.761c0-2.761-2.238-5-5-5-2.763%200-5%202.239-5%205v4.761c-1.827%201.466-3%203.714-3%206.239%200%204.418%203.582%208%208%208s8-3.582%208-8c0-2.525-1.173-4.773-3-6.239zm-8-4.761c0-1.654%201.346-3%203-3s3%201.346%203%203v3.587c-.927-.376-1.938-.587-3-.587s-2.073.211-3%20.587v-3.587zm4%2011.723v2.277h-2v-2.277c-.596-.347-1-.984-1-1.723%200-1.104.896-2%202-2s2%20.896%202%202c0%20.738-.404%201.376-1%201.723z'/%3e%3c/svg%3e\"","<style>\n .active {\n background-color: #ffff;\n font-weight: 500;\n color: #000;\n }\n .btn-disabled {\n pointer-events: none;\n background-color: #d0d2d5;\n }\n</style>\n\n<script lang=\"ts\">\n import Loader from '../shared/Loader.svelte'\n \n export let onClick: (...args: unknown[]) => unknown\n export let text: string\n export let disabled: boolean = false\n export let isLoading: boolean = false\n export let isActive: boolean = false\n</script>\n\n<button\n type=\"submit\"\n class=\"crtw-flex crtw-justify-center crtw-items-center crtw-w-full crtw-h-[50px] crtw-cursor-pointer crtw-border crtw-border-gray-300\n crtw-rounded crtw-font-['poppins'] crtw-text-gray-600\"\n class:btn-disabled={disabled || isLoading}\n class:active={isActive}\n on:click|preventDefault={onClick}\n>\n {#if isLoading}\n <Loader />\n {:else}\n {text}\n {/if}\n</button>","<script lang=\"ts\">\n import { PaymentViews } from '../../../utils/enums';\n import ButtonBack from '../shared/inputs/button-back/ButtonBack.svelte';\n import LockIcon from '../../images/lock.svg'\n import type { TUser } from '../../../utils/types';\n import PaymentSwitchButton from './PaymentSwitchButton.svelte';\n\n export let isLoading: boolean\n export let options: {\n user: TUser| null\n title: string\n subtitle?: string\n onBackClick: () => void\n isStripeDisabled: boolean\n isCredezaValueDisabled: boolean,\n isPriceLoading: boolean\n totalSumCents: number,\n currencySymbol?: string\n }\n\n \n let { user, title, subtitle, onBackClick, isStripeDisabled, currencySymbol = '$' } = options\n let activeTab = isStripeDisabled ? PaymentViews.CREDENZA_BALANCE : PaymentViews.CREDIT_CARD\n\n $: isPriceLoading = options.isPriceLoading\n $: totalSumCents = options.totalSumCents\n $: isCredezaValueDisabled = options.isCredezaValueDisabled\n</script>\n\n<div class=\"cpui-payment crtw-text-left crtw-w-full\" class:crtw-hidden={isLoading}>\n <div class=\"crtw-text-right crtw-text-[13px] crtw-text-gray-400 crtw-mb-6\">\n <div class=\"crtw-break-words\">{user?.email || user?.pending?.email || ''}</div>\n <div>{user?.phone || user?.pending?.phone || ''}</div>\n </div>\n <div class=\"crtw-font-bold crtw-text-xl\">{title}</div>\n <div class=\"crtw-flex crtw-justify-between crtw-mb-3 crtw-text-gray-600 crtw-font-bold\">\n {#if subtitle}\n <div>{subtitle}</div>\n {/if}\n {#if isPriceLoading}\n <div>Getting price...</div>\n {:else if totalSumCents}\n <div>{currencySymbol}{(+totalSumCents / 100).toFixed(2)}</div>\n {/if}\n </div>\n <div class=\"crtw-flex crtw-bg-gray-200 crtw-rounded-md crtw-p-px\">\n <PaymentSwitchButton\n text=\"Credit Card\"\n onClick={() => (activeTab = PaymentViews.CREDIT_CARD)}\n isActive={activeTab === PaymentViews.CREDIT_CARD}\n disabled={isStripeDisabled}\n />\n <PaymentSwitchButton\n text=\"Credenza Balance\"\n onClick={() => (activeTab = PaymentViews.CREDENZA_BALANCE)}\n isActive={activeTab === PaymentViews.CREDENZA_BALANCE}\n disabled={isCredezaValueDisabled}\n />\n </div>\n <hr class=\"crtw-block crtw-border-t-2 crtw-border-gray-200 crtw-w-1/2 crtw-mx-auto crtw-mt-3.5 crtw-mb-[30px]\" />\n {#if activeTab === PaymentViews.CREDIT_CARD}\n <slot name=\"credit-card\" />\n {:else if activeTab === PaymentViews.CREDENZA_BALANCE}\n <slot name=\"cred-balance\" />\n {/if}\n <div class=\"crtw-flex crtw-w-full crtw-justify-center crtw-items-center\">\n <img src={LockIcon} alt=\"\" /><span class=\"crtw-text-sm crtw-text-gray-400 crtw-ml-1\"\n >Payments are secure and encrypted</span\n >\n </div>\n <div class=\"crtw-mt-1.5\">\n <ButtonBack onClick={onBackClick} />\n </div>\n</div>\n","<script lang=\"ts\">\n import Button from \"../shared/inputs/button/Button.svelte\";\n\n export let options: {\n isCardFocused: boolean\n onPay: () => void\n currencySymbol?: string\n }\n export let isPaymentDisabled: boolean\n export let isLoading: boolean\n export let totalToPay: string\n\n let { isCardFocused, onPay, currencySymbol = '$' } = options\n</script>\n\n<div class=\"crtw-text-base crtw-mb-1.5\">Credit card details</div>\n<div\n id=\"cpui-card-element\"\n class=\"crtw-border crtw-border-gray-300 crtw-rounded crtw-px-2.5 crtw-py-4 crtw-mb-2.5 crtw-w-full\"\n style={isCardFocused ? 'border-color: #121e2b' : ''}\n/>\n<!-- Used to display Element errors. -->\n<div id=\"card-errors\" role=\"alert\" />\n<Button\n text={`Pay ${currencySymbol}${totalToPay}`}\n onClick={onPay}\n disabled={isPaymentDisabled}\n bind:isLoading\n/>","<script lang=\"ts\">\n import Button from \"../shared/inputs/button/Button.svelte\";\n\n export let options: {\n formattedBalance: string\n balance: number\n credAlias: string\n onPay: () => void\n onGetCred: () => void\n totalToPay: string\n isLoading: boolean\n isPaymentDisabled: boolean\n }\n\n let { credAlias, onPay, onGetCred } = options\n\n $: isLoading = options.isLoading\n $: isPaymentDisabled = options.isPaymentDisabled\n $: formattedBalance = options.formattedBalance\n $: totalToPay = options.totalToPay\n $: balance = options.balance\n</script>\n\n<div class=\"crtw-w-full crtw-text-center crtw-my-5\">\n <div class=\"crtw-text-3xl crtw-text-black crtw-font-bold\">\n {#if Number(totalToPay) > balance}\n INSUFFICIENT FUNDS\n {:else}\n {formattedBalance}\n {/if}\n \n </div>\n <div class=\"crtw-mb-5 crtw-text-gray-600\">\n {#if Number(totalToPay) > balance}\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n You do not have enough stored value to make this payment. \n <span\n class=\"crtw-text-black crtw-cursor-pointer\"\n role=\"button\"\n tabindex=\"0\"\n on:click={onGetCred}\n >\n Click to get some {credAlias}\n </span>\n {:else}\n Your balance after purchase\n {/if}\n </div>\n\n <Button\n text={`Pay ${totalToPay} ${credAlias}`}\n onClick={onPay}\n disabled={isPaymentDisabled}\n {isLoading}\n />\n</div>","<script lang=\"ts\">\n import { onMount } from 'svelte'\n import { dispatch, PassportEvents } from '@lib/events/events'\n\n export let doPayment: (stripeTokenId: string) => Promise<void>\n export let stripe: Window['Stripe']\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n export let stripeElements: any\n export let priceCents: number\n export let isLoading: boolean\n\n onMount(async () => {\n const paymentRequest = stripe.paymentRequest({\n country: 'US',\n currency: 'usd',\n total: {\n label: 'Apple/Google payment',\n amount: priceCents,\n },\n requestPayerName: true,\n requestPayerEmail: true,\n })\n const canMakePayment = await paymentRequest.canMakePayment()\n if (!canMakePayment) return\n\n const walletPayElement = document.getElementById('ctui-wallet-pay')\n if (walletPayElement) walletPayElement.style.display = 'crtw-block'\n\n const prButton = stripeElements.create('paymentRequestButton', {\n paymentRequest: paymentRequest,\n style: {\n paymentRequestButton: {\n height: '48px',\n },\n },\n })\n prButton.mount('#ctui-payment-request-button')\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n paymentRequest.on('token', async (event: any) => {\n isLoading = true\n try {\n await doPayment(event.token.id)\n await event.complete('success')\n } catch (err) {\n await event.complete('error')\n dispatch(PassportEvents.ERROR, { error: err })\n }\n isLoading = false\n })\n })\n</script>\n\n<div id=\"ctui-wallet-pay\" class=\"crtw-w-full crtw-my-4\" style=\"dispay: none;\">\n <div id=\"ctui-payment-request-button\"></div>\n</div>\n","export const stripeStyles = {\n base: {\n color: '#121e2b',\n fontSize: '12px',\n '::placeholder': {\n color: '#d9d9d9',\n },\n },\n invalid: {\n color: '#fa755a',\n },\n}\n","export const loadScript = (src: string) => {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script')\n script.src = src\n document.body.appendChild(script)\n script.addEventListener('load', () => resolve(script))\n script.addEventListener('error', () => reject(script))\n })\n}\n","import { get } from \"svelte/store\";\nimport { accessTokenStore } from \"../../../stores\";\nimport type { TPaymentReturn } from \"@packages/utils/types\";\n\nexport const getOrderDetails = async (apiUrl: string, orderId: string): Promise<TPaymentReturn> => {\n const res = await fetch(`${apiUrl}/orders/${orderId}`, {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${get(accessTokenStore)}`,\n },\n method: \"GET\",\n });\n if (!res.ok) throw new Error(\"Failed to get order details\");\n return await res.json();\n}\nexport const getCompmletedOrderDetails = async (\n apiUrl: string,\n orderId: string,\n maxRetries = 5\n) => {\n let attempts = 0;\n\n while (attempts < maxRetries) {\n const res = await fetch(`${apiUrl}/orders/completed/${orderId}`, {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${get(accessTokenStore)}`,\n },\n method: \"GET\",\n });\n\n if (res.status === 204) {\n attempts++;\n if (attempts < maxRetries) {\n continue;\n } else {\n throw new Error(\"No content received after multiple attempts\");\n }\n }\n\n if (!res.ok) throw new Error(\"Failed to get order details\");\n return await res.json();\n }\n};\n\nexport const validateOrderItems = (\n txs: string[] | null[],\n orders: TPaymentReturn[\"items\"],\n): string => {\n const errorMessages = orders\n .filter((item) => item.error)\n .map(\n (item) =>\n `Name: ${item.metadata?.name || item.directive.resource_id}, reason: ${item.error}`\n )\n .join(\"\\n\");\n if (txs.every((item) => item === null)) {\n throw new Error(`All transactions failed. \\n${errorMessages}`);\n } else if (orders?.every(item => item.status === \"ERROR\")) {\n throw new Error(`All transactions failed.}`);\n }\n return errorMessages;\n};\n","import { get } from 'svelte/store'\nimport { accessTokenStore, fn } from '@packages/stores'\nimport { ReceiptTarget } from '@packages/utils/enums'\nimport { configStore } from '@src/stores/config'\nimport { getClientConfigByClientId } from '@lib/clients'\nimport type { TMembershipPaymentData, TTokenPaymentData } from './oders.types'\nimport { dispatch, PassportEvents } from '@lib/events/events'\nimport { TransactionTypes } from '@packages/utils/enums'\nimport { pageOptsStore, pageStore, userStore } from '@packages/stores'\nimport { Pages } from '@packages/utils/enums'\nimport { analytics } from '@lib/mixpanel/mixpanel'\nimport { waitVideoEnded } from '@components/progress/ProgressVideo.service'\nimport { getAddress } from '@src/passport/blockchain'\nimport { validateOrderItems } from '@lib/orders'\nimport type { TPaymentReturn } from '@packages/utils/types'\n\n\nexport const requestReceipt = async ({\n hash,\n stripeChargeId,\n title,\n subtitle,\n amount,\n currency,\n}: {\n hash?: string\n stripeChargeId?: string\n title?: string\n subtitle?: string\n amount?: number\n currency?: string\n}) => {\n const { credenza, receiptTarget, clientId } = get(configStore)\n\n const targets = [];\n if (!receiptTarget) {\n targets.push(ReceiptTarget.EMAIL)\n } else {\n targets.push(...receiptTarget)\n }\n\n let successCount = 0;\n \n for (const target of targets) {\n const result = await fetch(`${credenza.evmApiUrl}/contracts/receipt`, {\n method: 'POST',\n body: JSON.stringify({\n ...(hash ? { tx: hash } : { charge_id: stripeChargeId }),\n ...(amount ? { amount } : {}),\n ...(currency ? { currency } : {}),\n target,\n title,\n subtitle,\n source: getClientConfigByClientId(clientId).name,\n }),\n headers: {\n Authorization: `Bearer ${get(accessTokenStore)}`,\n 'Content-Type': 'application/json',\n },\n })\n\n if (result.ok) {\n successCount++;\n } else {\n console.warn(`Failed to send receipt to ${target}:`, result.status)\n }\n }\n\n return successCount > 0\n}\n\nexport const afterPaymentProcess = async (res: TPaymentReturn, priceCents: number, purchaseConfig: {\n title: string\n subtitle: string\n tokens: TTokenPaymentData[]\n memberships: TMembershipPaymentData[]\n}) => {\n const { toastAlert } = get(fn)\n const config = get(configStore)\n \n const { chain_txs, items } = res\n const failedOrdersMessage = validateOrderItems(chain_txs, items)\n dispatch(PassportEvents.PAYMENT, {\n type: TransactionTypes.STRIPE,\n results: { tokens: purchaseConfig.tokens, memberships: purchaseConfig.memberships },\n })\n toastAlert('Your payment was successful')\n dispatch(PassportEvents.RECHECK_BALANCE, chain_txs)\n\n const user = get(userStore)\n if (user) {\n analytics.track('cp_payment_fiat', {\n $email: user.email,\n $phone: user.phone,\n chain: config.chainId,\n clientId: config.clientId,\n address: await getAddress(),\n location: window.location.href,\n tokens: purchaseConfig?.tokens,\n memberships: purchaseConfig?.memberships,\n total: priceCents / 100,\n description: (purchaseConfig?.title ?? '') + `(${purchaseConfig?.subtitle ?? ''})`,\n })\n }\n\n await waitVideoEnded()\n\n if (priceCents === 0) pageOptsStore.set({ subtitle: 'Your claim was successful!', receipt: false })\n\n if (failedOrdersMessage) {\n pageOptsStore.set({\n title: 'Done!',\n subtitle: 'Your payment was partly successful',\n orders: items,\n })\n }\n pageStore.set(Pages.PAYMENT_RESULT)\n}","<script lang=\"ts\">\n import WalletPay from './wallet-pay/WalletPay.svelte'\n import { onMount } from 'svelte'\n import { get } from 'svelte/store'\n import { stripeStyles } from '@pages/payment/stripe/Stripe.styles'\n import { dispatch, PassportEvents } from '@lib/events/events'\n import { loadScript } from '@lib/scripts/scripts'\n import { pageOptsStore, pageStore, fn } from '@packages/stores'\n import { Pages } from '@packages/utils/enums'\n import { Stripe as StripeComponent } from '@packages/ui'\n import { configStore } from '@src/stores/config'\n import { getClientConfigByClientId } from '@lib/clients'\n import { afterPaymentProcess } from '../Payment.service'\n import type { TMembershipPaymentData, TTokenPaymentData } from '../oders.types'\n\n export let priceCents: number\n export let isLoading: boolean\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n export let purchaseConfig: {\n title: string\n subtitle: string\n tokens: TTokenPaymentData[]\n memberships: TMembershipPaymentData[]\n }\n export let isPriceLoading: boolean\n\n const { toastAlert } = get(fn)\n const config = get(configStore)\n\n let Stripe: Window['Stripe']\n let stripe: Window['Stripe']\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let stripeElements: any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let cardElement: any\n let isButtonActive: boolean\n\n let isCardFocused = false\n onMount(async () => {\n try {\n if (!Stripe) {\n if (!window.Stripe) {\n await loadScript('https://js.stripe.com/v3/')\n if (!window.Stripe) throw {}\n }\n Stripe = window.Stripe\n }\n } catch (err) {\n return console.log('Please include stripe to use payments.')\n }\n if (stripe) return\n\n const clientName = getClientConfigByClientId(config.clientId).name\n stripe = Stripe(config.stripe.pk[clientName] ?? config.stripe.pk.DEFAULT)\n stripeElements = stripe.elements()\n cardElement = stripeElements.create('card', { style: stripeStyles })\n cardElement.mount('#cpui-card-element')\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n cardElement.on('change', (event: any) => {\n isButtonActive = event.complete && !event.error\n })\n cardElement.on('focus', () => (isCardFocused = true))\n cardElement.on('blur', () => (isCardFocused = false))\n })\n\n const handleSubmit = async () => {\n try {\n if (!isButtonActive) return\n isLoading = true\n const result = await stripe.createToken(cardElement)\n if (result.error) throw result.error\n await doPayment(result.token.id)\n } catch (err) {\n dispatch(PassportEvents.ERROR, { error: err })\n }\n isLoading = false\n }\n\n const doPayment = async (tokenId: string) => {\n try {\n const { processPayment } = await import('@pages/payment/stripe/Stripe.service')\n\n const res = await processPayment(tokenId)\n await afterPaymentProcess(res, priceCents, purchaseConfig)\n } catch (err) {\n toastAlert(`Payment error: ${err.message || err}`, 'failure')\n pageOptsStore.set({ errorMessage: err.message || err })\n pageStore.set(Pages.ERROR)\n dispatch(PassportEvents.ERROR, { error: err })\n }\n }\n\n $: isPaymentDisabled = !isButtonActive || isLoading || isPriceLoading\n $: totalToPay = (priceCents / 100).toFixed(2)\n</script>\n\n<StripeComponent\n bind:isPaymentDisabled\n bind:isLoading\n bind:totalToPay\n options={{\n isCardFocused,\n onPay: handleSubmit,\n currencySymbol: getClientConfigByClientId(config.clientId).currencySymbol,\n }}\n/>\n\n{#if stripe && stripeElements}\n <WalletPay {doPayment} {stripe} {stripeElements} {priceCents} bind:isLoading />\n{/if}\n","<script lang=\"ts\">\n import { ethers } from '@credenza3/core-web-evm-ext'\n import { get } from 'svelte/store'\n import { onMount } from 'svelte'\n import { Pages } from '@packages/utils/enums'\n import { clientPublicStore, fn, pageOptsStore, pageStore, userStore } from '@packages/stores'\n import { dispatch, PassportEvents } from '@lib/events/events'\n import { TransactionTypes } from '@packages/utils/enums'\n import { sendContractTx, getTxScanAddress } from '@src/lib/tx/tx'\n import { requestReceipt } from '@pages/payment/Payment.service'\n import { analytics } from '@lib/mixpanel/mixpanel'\n import { waitVideoEnded } from '@components/progress/ProgressVideo.service'\n import { type TEvmContract, type TPaymentItem } from '@packages/utils/types'\n import { getCryptoCurrencySymbol } from '@lib/strings/strings'\n import { CredenzaBalance } from '@packages/ui'\n import { getAddress } from '@src/passport/blockchain'\n import { configStore, providerStore } from '@src/stores'\n import Loader from '@packages/ui/main/shared/Loader.svelte'\n\n export let totalPriceToken: number\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n export let purchaseConfig: any\n export let isLoading: boolean\n export let isPriceLoading: boolean\n export let pricesByToken: { [key: string]: number }\n\n const { getCREDContract, toastAlert } = get(fn)\n const { chainId, clientId } = get(configStore)\n\n let isBalanceLoading: boolean = false\n let balance: bigint = BigInt(0)\n let formattedBalance: string\n let symbol: string = ''\n let contract: ethers.Contract\n let decimals: number\n let userAddress: string\n let signer: ethers.Signer\n let credContract: {\n address: string\n decimals: number\n contract: ethers.Contract\n }\n\n const processPaymentItem = async (item: TPaymentItem, index: number) => {\n try {\n const { credenzaSellableMinAbi } = await import('@src/lib/abi')\n const credenzaSellableContract = new ethers.Contract(item.contractAddress, credenzaSellableMinAbi, signer)\n const tokenOrTypeId = item.tokenId ? item.tokenId : (item.typeId as string)\n const priceToken = pricesByToken[`${item.contractAddress}/${tokenOrTypeId}`]\n\n const approveTx = await contract.approve.populateTransaction(\n await credenzaSellableContract.getAddress(),\n priceToken,\n )\n\n await sendContractTx(approveTx, contract)\n const buyTx = await credenzaSellableContract.buyWithToken.populateTransaction(\n tokenOrTypeId,\n item.amount || 1,\n userAddress,\n )\n\n const result = await sendContractTx(buyTx, credenzaSellableContract)\n\n toastAlert(`<a href=\"${getTxScanAddress(result.hash)}\" target=\"_blank\">Purchase TX #${index}</a> was created`)\n dispatch(PassportEvents.PAYMENT, { type: TransactionTypes.ERC20, data: result })\n dispatch(PassportEvents.RECHECK_BALANCE)\n\n await requestReceipt({\n hash: result.hash,\n title: purchaseConfig.title,\n subtitle: purchaseConfig.subtitle,\n currency: 'CRED',\n amount: +ethers.formatUnits(priceToken, decimals),\n })\n dispatch(PassportEvents.RECEIPT, { hash: result.hash })\n } catch (err) {\n toastAlert(`Payment error: ${err.message || err}`, 'failure')\n pageOptsStore.set({ errorMessage: err.message })\n pageStore.set(Pages.ERROR)\n dispatch(PassportEvents.ERROR, { error: err })\n }\n }\n\n const payWithCredenza = async () => {\n try {\n if (BigInt(totalPriceToken) > balance) return\n\n isLoading = true\n const paymentPromises = [...(purchaseConfig.tokens || []), ...(purchaseConfig.memberships || [])].map(\n (item, index) => processPaymentItem(item, index + 1),\n )\n await Promise.all(paymentPromises)\n\n const user = get(userStore)\n if (user) {\n analytics.track('cp_payment_stored_value', {\n $email: user.email,\n $phone: user.phone,\n chain: chainId,\n clientId,\n address: userAddress,\n location: window.location.href,\n tokens: purchaseConfig.tokens,\n memberships: purchaseConfig.memberships,\n total: totalPriceToken,\n description: (purchaseConfig?.title ?? '') + `(${purchaseConfig?.subtitle ?? ''})`,\n })\n }\n\n await waitVideoEnded()\n\n if (totalPriceToken === 0) pageOptsStore.set({ subtitle: 'Your claim was successful!', receipt: false })\n pageStore.set(Pages.PAYMENT_RESULT)\n } catch (err) {\n toastAlert(`Payment error: ${err.message || err}`, 'failure')\n pageOptsStore.set({ errorMessage: err.message })\n pageStore.set(Pages.ERROR)\n dispatch(PassportEvents.ERROR, { error: err })\n } finally {\n isLoading = false\n }\n }\n\n onMount(async () => {\n try {\n isBalanceLoading = true\n credContract = (await getCREDContract()) as TEvmContract\n\n const provider = get(providerStore)\n if(!provider) return\n signer = await provider.getSigner()\n contract = credContract.contract\n decimals = credContract.decimals\n ;[userAddress, symbol] = await Promise.all([getAddress(), contract.symbol()])\n balance = await contract.balanceOf(userAddress)\n\n formattedBalance = `${ethers.formatUnits(BigInt(balance) - BigInt(totalPriceToken), decimals)} ${getCryptoCurrencySymbol(symbol, 'cred')}`\n } catch (err) {\n console.log(err)\n } finally {\n isBalanceLoading = false\n }\n })\n</script>\n\n{#if isBalanceLoading}\n <div class=\"crtw-w-full crtw-justify-items-center crtw-my-5\">\n <Loader />\n </div>\n{:else}\n <CredenzaBalance\n options={{\n formattedBalance,\n balance: Number((+ethers.formatUnits(BigInt(balance), decimals)).toFixed(2)),\n credAlias: $clientPublicStore?.ui_settings.cred_alias,\n onPay: payWithCredenza,\n onGetCred: () => pageStore.set(Pages.WALLET),\n totalToPay: (+ethers.formatUnits(totalPriceToken, decimals)).toFixed(2),\n isLoading,\n isPaymentDisabled: !Number(balance) || BigInt(totalPriceToken) > balance || isPriceLoading,\n }}\n />\n{/if}\n","<script lang=\"ts\">\n import { Pages } from '@packages/utils/enums'\n import { onDestroy } from 'svelte'\n import { get } from 'svelte/store'\n import { ethers } from '@credenza3/core-web-evm-ext'\n\n import { pageOptsStore, userStore, pageStore, fn } from '@packages/stores'\n import { DEFAULT_TOKEN_ID } from '@packages/utils/constants'\n import { dispatch, PassportEvents } from '@lib/events/events'\n import type { TPaymentItem } from '@packages/utils/types'\n import { Payment } from '@packages/ui'\n import Stripe from './stripe/Stripe.svelte'\n import CredenzaBalance from './credenza-balance/CredenzaBalance.svelte'\n import { configStore, providerStore, contractsStore } from '@src/stores'\n\n const { close } = get(fn)\n const chainId = get(configStore).chainId\n\n $: if ($configStore.chainId !== chainId) close()\n\n let totalSumCents: number = 0\n let totalSumToken: number = 0\n let isPriceLoading: boolean = false\n let isLoading: boolean = false\n\n let pricesByToken: { [key: string]: number } = {}\n\n const getTokenPrice = async (sellableContract: ethers.Contract, tokenId: number): Promise<[number, number]> => {\n let priceCents = await sellableContract.getPriceFiat(tokenId).then((result) => Number(result))\n let priceToken = 0\n\n if (priceCents === 0) {\n ;[priceCents, priceToken] = await Promise.all([\n sellableContract.getPriceFiat(DEFAULT_TOKEN_ID).then((result) => Number(result)),\n sellableContract.getPriceToken(DEFAULT_TOKEN_ID).then((result) => Number(result)),\n ])\n } else {\n priceToken = await sellableContract.getPriceToken(tokenId).then((result) => Number(result))\n }\n\n return [priceCents, priceToken]\n }\n\n const calculateTotalPrice = async (items: TPaymentItem[]): Promise<void> => {\n try {\n isPriceLoading = true\n for (const token of items) {\n if (token.contractAddress === $contractsStore.erc20Cred.address) {\n totalSumCents += token.amount * 100\n } else {\n const { credenzaSellableMinAbi } = await import('@src/lib/abi')\n const sellableContract = new ethers.Contract(token.contractAddress, credenzaSellableMinAbi, $providerStore)\n const tokenId = token.tokenId || (token.typeId as string) || DEFAULT_TOKEN_ID\n\n let [priceCents, priceToken] = await getTokenPrice(sellableContract, +tokenId)\n\n if (token?.amount && token?.amount !== 0) {\n priceCents *= token.amount\n priceToken *= token.amount\n }\n\n totalSumCents += priceCents\n totalSumToken += priceToken\n\n pricesByToken[`${token.contractAddress}/${tokenId}`] = priceToken\n }\n }\n } catch (err) {\n dispatch(PassportEvents.ERROR, err)\n } finally {\n isPriceLoading = false\n }\n }\n\n const unsub = pageOptsStore.subscribe(async (store) => {\n if (!store?.tokens?.length && !store?.memberships?.length) return\n\n await calculateTotalPrice([...(store?.tokens || []), ...(store?.memberships || [])])\n })\n\n onDestroy(unsub)\n</script>\n\n{#if isLoading}\n {#await import('@components/progress/ProgressVideo.svelte') then module}\n <svelte:component this={module.default} />\n {/await}\n{/if}\n\n<Payment\n bind:isLoading\n options={{\n user: $userStore,\n title: $pageOptsStore.title || `Order Summary`,\n subtitle: $pageOptsStore.subtitle,\n onBackClick: () => pageStore.set(Pages.WALLET),\n isStripeDisabled: $pageOptsStore.payments?.stripe?.disabled,\n isCredezaValueDisabled: !totalSumCents || $pageOptsStore.payments?.credenzaStoredValue?.disabled,\n isPriceLoading,\n totalSumCents,\n }}\n>\n <div slot=\"credit-card\">\n <Stripe priceCents={totalSumCents} {isPriceLoading} purchaseConfig={$pageOptsStore} bind:isLoading />\n </div>\n <div slot=\"cred-balance\">\n <CredenzaBalance\n {pricesByToken}\n totalPriceToken={totalSumToken}\n {isPriceLoading}\n purchaseConfig={$pageOptsStore}\n bind:isLoading\n />\n </div>\n</Payment>\n"],"names":["LockIcon","onClick","$.prop","$$props","text","disabled","isLoading","$$render","consequent","alternate","isActive","$$args","options","subtitle","onBackClick","isStripeDisabled","currencySymbol","activeTab","PaymentViews","isPriceLoading","totalSumCents","isCredezaValueDisabled","$0","$.untrack","$.get","consequent_2","consequent_1","user","title","isPaymentDisabled","totalToPay","isCardFocused","onPay","credAlias","onGetCred","formattedBalance","balance","__awaiter","thisArg","_arguments","P","generator","onMount","stripe","priceCents","paymentRequest","walletPayElement","stripeElements","event","doPayment","err","dispatch","PassportEvents","stripeStyles","loadScript","src","resolve","reject","script","getCompmletedOrderDetails","apiUrl","orderId","maxRetries","attempts","res","get","accessTokenStore","validateOrderItems","txs","orders","errorMessages","item","requestReceipt","hash","stripeChargeId","amount","currency","credenza","receiptTarget","clientId","configStore","targets","ReceiptTarget","successCount","target","result","getClientConfigByClientId","afterPaymentProcess","purchaseConfig","toastAlert","fn","config","chain_txs","items","failedOrdersMessage","TransactionTypes","userStore","analytics","getAddress","waitVideoEnded","pageOptsStore","pageStore","Pages","Stripe","$.mutable_source","isButtonActive","clientName","$.set","_a","cardElement","handleSubmit","processPayment","tokenId","totalPriceToken","pricesByToken","isBalanceLoading","symbol","contract","decimals","userAddress","signer","credContract","processPaymentItem","index","credenzaSellableMinAbi","credenzaSellableContract","ethers","tokenOrTypeId","priceToken","approveTx","sendContractTx","buyTx","getTxScanAddress","payWithCredenza","paymentPromises","chainId","_b","getCREDContract","provider","providerStore","getCryptoCurrencySymbol","close","totalSumToken","getTokenPrice","sellableContract","DEFAULT_TOKEN_ID","calculateTotalPrice","token","$contractsStore","$providerStore","store","onDestroy","unsub","$configStore","$.await","node_1","module","$.component","node_2","$$anchor","$$component","$userStore","$pageOptsStore"],"mappings":"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"}