@credenza3/passport-evm 0.2.19 → 0.2.20
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/dist/{App-C9I9989L.js → App-CVL5rG_7.js} +405 -402
- package/dist/App-CVL5rG_7.js.map +1 -0
- package/dist/Button-DqEdQlgP.js +64 -0
- package/dist/{Button-D5CGIu8s.js.map → Button-DqEdQlgP.js.map} +1 -1
- package/dist/{ButtonBack-DiIG6luz.js → ButtonBack-vxTGGwU6.js} +4 -4
- package/dist/{ButtonBack-DiIG6luz.js.map → ButtonBack-vxTGGwU6.js.map} +1 -1
- package/dist/{ButtonLink-CujytEgB.js → ButtonLink-Dbc5ZFe5.js} +16 -17
- package/dist/{ButtonLink-CujytEgB.js.map → ButtonLink-Dbc5ZFe5.js.map} +1 -1
- package/dist/ConfirmAccount-CzJ-4HcH.js +210 -0
- package/dist/{ConfirmAccount-L4VSLm33.js.map → ConfirmAccount-CzJ-4HcH.js.map} +1 -1
- package/dist/{ContentHeader-DtB3AfgZ.js → ContentHeader-BL6VCaOC.js} +5 -5
- package/dist/{ContentHeader-DtB3AfgZ.js.map → ContentHeader-BL6VCaOC.js.map} +1 -1
- package/dist/{Error-4PRrZwmC.js → Error-cuDoKeUy.js} +113 -113
- package/dist/{Error-4PRrZwmC.js.map → Error-cuDoKeUy.js.map} +1 -1
- package/dist/{Input-B40ySJRz.js → Input-CwK6i9kK.js} +6 -10
- package/dist/{Input-B40ySJRz.js.map → Input-CwK6i9kK.js.map} +1 -1
- package/dist/{Label-CVUbL1bW.js → Label-DZWmB1jC.js} +5 -10
- package/dist/{Label-CVUbL1bW.js.map → Label-DZWmB1jC.js.map} +1 -1
- package/dist/{Loader-DWGzCX4y.js → Loader-CR_PsWeQ.js} +3 -3
- package/dist/{Loader-DWGzCX4y.js.map → Loader-CR_PsWeQ.js.map} +1 -1
- package/dist/Login-BLxKy2wr.js +281 -0
- package/dist/{Login-CAgCGqA-.js.map → Login-BLxKy2wr.js.map} +1 -1
- package/dist/Logout-DMSGdeJk.js +96 -0
- package/dist/{Logout-Cn-fwBb4.js.map → Logout-DMSGdeJk.js.map} +1 -1
- package/dist/Nav-WMkbBHYm.js +666 -0
- package/dist/{Nav-CuA2pLgM.js.map → Nav-WMkbBHYm.js.map} +1 -1
- package/dist/{PassportId-CSTvlPYW.js → PassportId-Drg1oJ8k.js} +91 -93
- package/dist/{PassportId-CSTvlPYW.js.map → PassportId-Drg1oJ8k.js.map} +1 -1
- package/dist/Payment-BGGkR1cJ.js +1030 -0
- package/dist/{Payment-DVlaKx-E.js.map → Payment-BGGkR1cJ.js.map} +1 -1
- package/dist/PaymentResult-Vxz68gmZ.js +256 -0
- package/dist/{PaymentResult-C5iwUhAQ.js.map → PaymentResult-Vxz68gmZ.js.map} +1 -1
- package/dist/{Profile-GkmykWQr.js → Profile-D5OVDyh3.js} +157 -165
- package/dist/{Profile-GkmykWQr.js.map → Profile-D5OVDyh3.js.map} +1 -1
- package/dist/ProgressVideo-htlN2ByZ.js +125 -0
- package/dist/{ProgressVideo-4SQjAnPJ.js.map → ProgressVideo-htlN2ByZ.js.map} +1 -1
- package/dist/RichAlert-DezBlHxy.js +111 -0
- package/dist/{RichAlert-DoQILIMV.js.map → RichAlert-DezBlHxy.js.map} +1 -1
- package/dist/Scanner-Cl31otyX.js +123 -0
- package/dist/{Scanner-BCw9U9L_.js.map → Scanner-Cl31otyX.js.map} +1 -1
- package/dist/SendTokens-BGGPj_e_.js +364 -0
- package/dist/{SendTokens-D3cXqMmt.js.map → SendTokens-BGGPj_e_.js.map} +1 -1
- package/dist/Sign-n6MGx-1d.js +109 -0
- package/dist/{Sign-IQLTbDiV.js.map → Sign-n6MGx-1d.js.map} +1 -1
- package/dist/Stripe.service-K8Nm72sZ.js +59 -0
- package/dist/{Stripe.service-GlcYQnp5.js.map → Stripe.service-K8Nm72sZ.js.map} +1 -1
- package/dist/UpdateProfile-BbMPWUyU.js +525 -0
- package/dist/{UpdateProfile-D4bg5GEF.js.map → UpdateProfile-BbMPWUyU.js.map} +1 -1
- package/dist/UserInfo-htUCiyHe.js +128 -0
- package/dist/{UserInfo-DwjE6Ph4.js.map → UserInfo-htUCiyHe.js.map} +1 -1
- package/dist/Wallet-BHxkNNa4.js +263 -0
- package/dist/{Wallet-BUV87MlV.js.map → Wallet-BHxkNNa4.js.map} +1 -1
- package/dist/abi-DIVtyi6o.js.map +1 -1
- package/dist/account-BPB9Ucub.js.map +1 -1
- package/dist/each-CxApMty7.js +266 -0
- package/dist/each-CxApMty7.js.map +1 -0
- package/dist/event-modifiers-D4czZCB6.js +13 -0
- package/dist/{event-modifiers-DpFXHa6q.js.map → event-modifiers-D4czZCB6.js.map} +1 -1
- package/dist/{html-a8zjkl0d.js → html-BynZ0QgP.js} +16 -16
- package/dist/html-BynZ0QgP.js.map +1 -0
- package/dist/{index-B0D9qQ_O.js → index-QYUycBJ8.js} +11779 -11229
- package/dist/index-QYUycBJ8.js.map +1 -0
- package/dist/index-client-BZifBt-8.js +25 -0
- package/dist/index-client-BZifBt-8.js.map +1 -0
- package/dist/input-2LrEHvzA.js +37 -0
- package/dist/input-2LrEHvzA.js.map +1 -0
- package/dist/legacy-ShShb87f.js +1025 -0
- package/dist/legacy-ShShb87f.js.map +1 -0
- package/dist/passport.es.js +1 -1
- package/dist/passport.umd.js +139 -138
- package/dist/passport.umd.js.map +1 -1
- package/dist/scanner-Bm3Pvpfs.js.map +1 -1
- package/dist/{scanner.es-cf-mCExK.js → scanner.es-DK9KxX60.js} +2 -2
- package/dist/{scanner.es-cf-mCExK.js.map → scanner.es-DK9KxX60.js.map} +1 -1
- package/dist/strings-B-rKL311.js.map +1 -1
- package/dist/svg-BwNV4pWZ.js.map +1 -1
- package/dist/validation-DaZvZUPL.js.map +1 -1
- package/package.json +20 -20
- package/dist/App-C9I9989L.js.map +0 -1
- package/dist/Button-D5CGIu8s.js +0 -69
- package/dist/ConfirmAccount-L4VSLm33.js +0 -210
- package/dist/Login-CAgCGqA-.js +0 -294
- package/dist/Logout-Cn-fwBb4.js +0 -96
- package/dist/Nav-CuA2pLgM.js +0 -688
- package/dist/Payment-DVlaKx-E.js +0 -1039
- package/dist/PaymentResult-C5iwUhAQ.js +0 -290
- package/dist/ProgressVideo-4SQjAnPJ.js +0 -121
- package/dist/RichAlert-DoQILIMV.js +0 -119
- package/dist/Scanner-BCw9U9L_.js +0 -126
- package/dist/SendTokens-D3cXqMmt.js +0 -363
- package/dist/Sign-IQLTbDiV.js +0 -107
- package/dist/Stripe.service-GlcYQnp5.js +0 -61
- package/dist/UpdateProfile-D4bg5GEF.js +0 -522
- package/dist/UserInfo-DwjE6Ph4.js +0 -151
- package/dist/Wallet-BUV87MlV.js +0 -260
- package/dist/each-tAR3XqEj.js +0 -202
- package/dist/each-tAR3XqEj.js.map +0 -1
- package/dist/event-modifiers-DpFXHa6q.js +0 -13
- package/dist/html-a8zjkl0d.js.map +0 -1
- package/dist/index-B0D9qQ_O.js.map +0 -1
- package/dist/index-client-z9rIkUyw.js +0 -28
- package/dist/index-client-z9rIkUyw.js.map +0 -1
- package/dist/input-b1D2_f8m.js +0 -30
- package/dist/input-b1D2_f8m.js.map +0 -1
- package/dist/legacy-C1UsO_tu.js +0 -1039
- package/dist/legacy-C1UsO_tu.js.map +0 -1
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { c as T, p as J, h as A, f as C, i as U, k as B, b as y, d as O, u as E } from "./legacy-ShShb87f.js";
|
|
2
|
+
import { a as j } from "./index-client-BZifBt-8.js";
|
|
3
|
+
import { z as R, v as q, I as L, m as k, A as H, w as Q, x as Y, E as b, B as g, J as S, C as h, D as z, y as x, u as F, N as K, Q as M, bh as Z, T as P, P as G, Z as V, bb as _, bC as W, bD as X, bE as $, bi as ee, bF as te } from "./index-QYUycBJ8.js";
|
|
4
|
+
import { C as se } from "./ContentHeader-BL6VCaOC.js";
|
|
5
|
+
import { L as ae } from "./Loader-CR_PsWeQ.js";
|
|
6
|
+
var ne = C('<div class="crtw-w-full crtw-h-64 crtw-rounded-[10px] crtw-flex crtw-items-center crtw-justify-center" style="background-color: rgb(238, 238, 238)"><!></div>'), re = C('<!> <div class="crtw-w-full"><!> <div id="cpuiScanner" style="background-color: rgb(238, 238, 238)"></div></div>', 1);
|
|
7
|
+
function D(f, i) {
|
|
8
|
+
if (new.target) return T({ component: D, ...f });
|
|
9
|
+
R(i, !1);
|
|
10
|
+
const d = k();
|
|
11
|
+
let l = J(i, "options", 12);
|
|
12
|
+
q(() => H(l()), () => {
|
|
13
|
+
L(d, l().isScannerLoaded);
|
|
14
|
+
}), Q(), A();
|
|
15
|
+
var n = re(), p = Y(n);
|
|
16
|
+
se(p, { text: "Scan PassScan Code" });
|
|
17
|
+
var v = b(p, 2), s = g(v);
|
|
18
|
+
{
|
|
19
|
+
var e = (t) => {
|
|
20
|
+
var a = ne(), u = g(a);
|
|
21
|
+
ae(u, {}), h(a), y(t, a);
|
|
22
|
+
};
|
|
23
|
+
U(s, (t) => {
|
|
24
|
+
S(d) || t(e);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
var r = b(s, 2);
|
|
28
|
+
let o;
|
|
29
|
+
return h(v), z((t) => o = B(r, 1, "crtw-w-full crtw-h-64 crtw-rounded-lg crtw-flex crtw-items-center crtw-justify-center", null, o, t), [() => ({ "crtw-hidden": !S(d) })]), y(f, n), x({
|
|
30
|
+
get options() {
|
|
31
|
+
return l();
|
|
32
|
+
},
|
|
33
|
+
set options(t) {
|
|
34
|
+
l(t), F();
|
|
35
|
+
},
|
|
36
|
+
$set: E,
|
|
37
|
+
$on: (t, a) => O(i, t, a)
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
function oe(f, i) {
|
|
41
|
+
if (new.target) return T({ component: oe, ...f });
|
|
42
|
+
R(i, !1);
|
|
43
|
+
var d = this && this.__awaiter || function(s, e, r, o) {
|
|
44
|
+
function t(a) {
|
|
45
|
+
return a instanceof r ? a : new r(function(u) {
|
|
46
|
+
u(a);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return new (r || (r = Promise))(function(a, u) {
|
|
50
|
+
function I(c) {
|
|
51
|
+
try {
|
|
52
|
+
m(o.next(c));
|
|
53
|
+
} catch (w) {
|
|
54
|
+
u(w);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function N(c) {
|
|
58
|
+
try {
|
|
59
|
+
m(o.throw(c));
|
|
60
|
+
} catch (w) {
|
|
61
|
+
u(w);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function m(c) {
|
|
65
|
+
c.done ? a(c.value) : t(c.value).then(I, N);
|
|
66
|
+
}
|
|
67
|
+
m((o = o.apply(s, e || [])).next());
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
const { close: l } = K(M);
|
|
71
|
+
let n, p = k(!1);
|
|
72
|
+
const v = (s) => d(void 0, [s], void 0, function* ({ message: e, sub: r, scanType: o }) {
|
|
73
|
+
switch (n.close(), o) {
|
|
74
|
+
case _.PASSPORT_ID_PASS:
|
|
75
|
+
case _.PASSPORT_ID: {
|
|
76
|
+
const t = JSON.parse(e), { address: a } = yield ee(r);
|
|
77
|
+
te({
|
|
78
|
+
userAddress: a,
|
|
79
|
+
amount: t?.amount
|
|
80
|
+
});
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
case _.TOKENS_PURCHASE: {
|
|
84
|
+
$(JSON.parse(e));
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
case _.AIR_DROP_ASSET: {
|
|
88
|
+
yield X(JSON.parse(e));
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
case _.REQUEST_LOYALTY_POINTS: {
|
|
92
|
+
yield W(JSON.parse(e));
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
default:
|
|
96
|
+
l(), P.set(null);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
j(() => d(void 0, void 0, void 0, function* () {
|
|
100
|
+
const { Scanner: s } = yield import("./scanner.es-DK9KxX60.js");
|
|
101
|
+
n = new s({ target: "#cpuiScanner" }), Z(G.UI_CLOSED, () => {
|
|
102
|
+
n.close(), P.set(null);
|
|
103
|
+
}), yield n.scan({ isCloseButton: !1 }), L(p, !0), n.on(s.events.CAPTURE, v), n.on(s.events.ERROR, (e) => {
|
|
104
|
+
(e?.message || e).includes("Permission") && alert("In order to scan please allow the current page to access your camera and try again.");
|
|
105
|
+
});
|
|
106
|
+
})), A();
|
|
107
|
+
{
|
|
108
|
+
let s = V(() => ({ isScannerLoaded: S(p) }));
|
|
109
|
+
D(f, {
|
|
110
|
+
get options() {
|
|
111
|
+
return S(s);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
return x({
|
|
116
|
+
$set: E,
|
|
117
|
+
$on: (s, e) => O(i, s, e)
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
export {
|
|
121
|
+
oe as default
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=Scanner-Cl31otyX.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scanner-
|
|
1
|
+
{"version":3,"file":"Scanner-Cl31otyX.js","sources":["../../ui/main/scanner/Scanner.svelte","../src/app/pages/scanner/Scanner.svelte"],"sourcesContent":["<script lang=\"ts\">\n import ContentHeader from \"../shared/ContentHeader.svelte\";\n import Loader from \"../shared/Loader.svelte\";\n\n export let options: {\n isScannerLoaded: boolean\n }\n\n $: isScannerLoaded = options.isScannerLoaded\n</script>\n\n<ContentHeader text=\"Scan PassScan Code\" />\n<div class=\"crtw-w-full\">\n {#if !isScannerLoaded}\n <div\n class=\"crtw-w-full crtw-h-64 crtw-rounded-[10px] crtw-flex crtw-items-center crtw-justify-center\"\n style=\"background-color: rgb(238, 238, 238)\"\n >\n <Loader />\n </div>\n {/if}\n <div\n id=\"cpuiScanner\"\n class=\"crtw-w-full crtw-h-64 crtw-rounded-lg crtw-flex crtw-items-center crtw-justify-center\"\n class:crtw-hidden={!isScannerLoaded}\n style=\"background-color: rgb(238, 238, 238)\"\n />\n</div>\n ","<script lang=\"ts\">\n import { onMount } from 'svelte'\n import { get } from 'svelte/store'\n import type { Scanner } from '@credenza3/scanner-lib'\n\n import { pageStore, fn } from '@packages/stores'\n import { ScanTypes } from '@packages/utils/enums'\n import { once, PassportEvents } from '@lib/events/events'\n import {\n goToPayment,\n goToSendTokens,\n processAirDrop,\n processRequestLoyaltyPoints,\n } from '@pages/scanner/Scanner.service'\n import { Scanner as ScannerComponent } from '@packages/ui'\n import { getUserAddressBySub } from '@src/Passport.service'\n\n const { close } = get(fn)\n let scanner: Scanner\n let isScannerLoaded = false\n\n const onCapture = async ({ message, sub, scanType }: { sub: string; message: string; scanType: string }) => {\n scanner.close()\n switch (scanType) {\n case ScanTypes.PASSPORT_ID_PASS:\n case ScanTypes.PASSPORT_ID: {\n const parsed = JSON.parse(message)\n const { address } = await getUserAddressBySub(sub)\n goToSendTokens({ userAddress: address, amount: parsed?.amount })\n break\n }\n case ScanTypes.TOKENS_PURCHASE: {\n goToPayment(JSON.parse(message))\n break\n }\n case ScanTypes.AIR_DROP_ASSET: {\n await processAirDrop(JSON.parse(message))\n break\n }\n case ScanTypes.REQUEST_LOYALTY_POINTS: {\n await processRequestLoyaltyPoints(JSON.parse(message))\n break\n }\n default: {\n close()\n pageStore.set(null)\n }\n }\n }\n\n onMount(async () => {\n const { Scanner } = await import('@credenza3/scanner-lib')\n scanner = new Scanner({ target: '#cpuiScanner' })\n once(PassportEvents.UI_CLOSED, () => {\n scanner.close()\n pageStore.set(null)\n })\n await scanner.scan({ isCloseButton: false })\n isScannerLoaded = true\n scanner.on(Scanner.events.CAPTURE, onCapture)\n scanner.on(Scanner.events.ERROR, (err) => {\n const message = err?.message || err\n if (message.includes('Permission'))\n alert('In order to scan please allow the current page to access your camera and try again.')\n })\n })\n</script>\n\n<ScannerComponent options={{ isScannerLoaded }} />\n"],"names":["options","$.prop","$$props","isScannerLoaded","$$render","consequent","__awaiter","thisArg","_arguments","P","generator","close","get","fn","scanner","onCapture","_a","message","sub","scanType","ScanTypes","parsed","address","getUserAddressBySub","goToSendTokens","goToPayment","processAirDrop","processRequestLoyaltyPoints","pageStore","Scanner","once","PassportEvents","$.set"],"mappings":";;;;;;iBAAA;;;;MASQA,IAEPC,EAAAC,GAAA,WAAA,EAAA;;MAEGC,GAAmBH,EAAA,EAAA,eAAA;AAAA;;;;;;;;;;QAKhBG,CAAQ,KAAAC,EAAAC,CAAA;AAAA;;;;;;;;;;;;;;AAJf;kBCdA;;;AAAiB,MAAAC,IAAA,QAAA,KAAA,aAAA,SAAAC,GAAAC,GAAAC,GAAAC,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;UAiBP,OAAAC,EAAO,IAAGC,EAAMC,CAAC;MACrBC,GACAX,MAAkB,EAAK;QAGzBY,IAAa,CAAEC,MAAAV,EAAA,QAAA,CAAAU,CAAA,GAAA,QAAA,WAAA,EAAA,SAAAC,GAAA,KAAAC,GAAA,UAAAC,EAAA,GAAA;YACfL,EAAQ,SACNK,GAAK;AAAA,MACL,KAAAC,EAAK;AAAA,MACH,KAAAA,eAAoB;AACpB,cAAAC,SAAe,OAAW,KAC1B,SAAAC,EAAA,IAAA,MAAiBC,GAAsBL,CAAM;AAC7C,QAAAM,GAAA;AAAA,UAAA,aAAAF;AAAA,UAAA,QAAAD,GAAA;AAAA;;MAEF;AAAA,MACE,KAAAD,EAAA,iBAAuB;AACvB,QAAAK,EAAA,KAAA,MAAAR,CAAA,CAAA;;MAEF;AAAA,aACQ,gBAAmB;AACzB,cAAAS,EAAA,KAAA,MAAAT,CAAA,CAAA;;MAEF;AAAA,aACQ,wBAA2B;AACjC,cAAAU,EAAA,KAAA,MAAAV,CAAA,CAAA;;MAEF;AAAA;AAEE,QAAAN,EAAA,GACFiB,EAAA,IAAA,IAAA;AAAA;EAIJ,CAAA;IAEE,MAActB,EAAA,QAAA,QAAA,QAAA,aAAA;AACT,UAAA,EAAA,SAAAuB,EAAA,2CAA+B;QAClC,MAAe,EAAA,QAAA,eAAA,CAAA,GACfC,EAAAC,EAAc,WAAK,MAAA;AACnB,MAAAjB,EAAA,MAAA,GACFc,EAAM,IAAQ;IACd,CAAA,GACA,MAAAd,EAAW,KAAO,iBAAiB,GAAA,CAAA,GACnCkB,EAAA7B,GAAkB,EAAC,KACjB,GAAM0B,EAAO,OAAM,SAAAd,IACnBD,EAAI,GAAAe,EAAQ,qBAAsB;AAElC,wBAAA,SAAA,YAAA,KACF,MAAA,qFAAA;AAAA,IACF,CAAA;AAAA;;;;;;;;;;;;;AAEF;"}
|
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
import { c as $e, p as ue, h as Be, f as ce, i as se, k as Me, r as me, s as Ve, e as je, b as ee, d as Te, u as Re, t as Fe, o as pe, n as ze } from "./legacy-ShShb87f.js";
|
|
2
|
+
import { z as Ee, v as g, I as n, m as s, A as y, J as e, w as Ie, x as Xe, Z as J, E as m, B as _, C as b, D as fe, G as oe, y as De, u as ge, N as ie, M as Se, Q as qe, a3 as G, a1 as Ce, R as Ge, a2 as Je, T as he, V as Ae, a5 as Ke, bg as Qe, O as xe, P as we, bh as We, bi as Ye } from "./index-QYUycBJ8.js";
|
|
3
|
+
import "./scanner.es-DK9KxX60.js";
|
|
4
|
+
import { C as Ze } from "./ContentHeader-BL6VCaOC.js";
|
|
5
|
+
import { B as et } from "./ButtonBack-vxTGGwU6.js";
|
|
6
|
+
import { B as _e } from "./Button-DqEdQlgP.js";
|
|
7
|
+
import { I as ke } from "./Input-CwK6i9kK.js";
|
|
8
|
+
import { S as tt } from "./scanner-Bm3Pvpfs.js";
|
|
9
|
+
import { g as be } from "./strings-B-rKL311.js";
|
|
10
|
+
var nt = ce('<div>ChainId: <span class="crtw-font-bold"> </span></div>'), rt = ce('<label class="crtw-text-[10px] crtw-text-warningTextColor cpui-send-tokens-validation-message" for="recipientAddress">Provided address is not valid.</label>'), at = ce('<div class="crtw-ml-2.5 crtw-w-16 crtw-min-w-16"><!></div>'), st = ce('<!> <div class="crtw-w-full crtw-p-0 crtw-relative"><div id="cpuiCredScanner"></div> <!> <div>Your balance: <span class="crtw-font-bold"><!> </span></div> <div class="crtw-mb-2.5 crtw-flex crtw-items-start crtw-justify-between crtw-w-full"><div class="crtw-flex crtw-flex-col crtw-w-full"><!> <!></div> <div class="crtw-ml-2.5 crtw-cursor-pointer"><img width="53px" alt="" class="crtw-h-[53px]"/></div></div> <div class="crtw-mb-2.5 crtw-flex crtw-items-start crtw-justify-between crtw-w-full"><!> <div class="crtw-ml-2.5 crtw-w-16 crtw-min-w-16"><!></div> <!></div> <!></div> <div class="crtw-mt-0.5 crtw-mb-3 crtw-w-full"><!></div>', 1);
|
|
11
|
+
function Le(K, E) {
|
|
12
|
+
if (new.target) return $e({ component: Le, ...K });
|
|
13
|
+
Ee(E, !1);
|
|
14
|
+
const I = s(), te = s(), U = s(), Q = s(), H = s(), h = s(), N = s(), M = s(), j = s(), F = s();
|
|
15
|
+
let V = ue(E, "recipientAddress", 12), D = ue(E, "amount", 12), a = ue(E, "options", 12), {
|
|
16
|
+
onChangeCurrency: A,
|
|
17
|
+
onSetMaxAmount: l,
|
|
18
|
+
onBackClicked: p,
|
|
19
|
+
onSendTokens: z,
|
|
20
|
+
title: w,
|
|
21
|
+
chainId: x,
|
|
22
|
+
onScannerClicked: X,
|
|
23
|
+
credAlias: B,
|
|
24
|
+
isNativeCurrecyTransferAllowed: k = !0
|
|
25
|
+
} = a();
|
|
26
|
+
const L = (t) => Math.floor(t * 100) / 100;
|
|
27
|
+
g(() => y(a()), () => {
|
|
28
|
+
n(I, a().balance);
|
|
29
|
+
}), g(() => y(a()), () => {
|
|
30
|
+
n(te, a().isLoading);
|
|
31
|
+
}), g(() => y(a()), () => {
|
|
32
|
+
n(U, a().isSubmitDisabled);
|
|
33
|
+
}), g(() => y(a()), () => {
|
|
34
|
+
n(Q, a().isRecipientAddressValid);
|
|
35
|
+
}), g(() => y(a()), () => {
|
|
36
|
+
n(H, a().isScannerHidden);
|
|
37
|
+
}), g(() => y(a()), () => {
|
|
38
|
+
n(h, a().activeCurrency);
|
|
39
|
+
}), g(() => y(a()), () => {
|
|
40
|
+
n(N, a().symbol);
|
|
41
|
+
}), g(() => y(a()), () => {
|
|
42
|
+
n(M, a().nativeSymbol);
|
|
43
|
+
}), g(() => y(a()), () => {
|
|
44
|
+
n(j, a().nativeBalance);
|
|
45
|
+
}), g(() => e(h), () => {
|
|
46
|
+
n(F, be(e(h), B));
|
|
47
|
+
}), Ie(), Be();
|
|
48
|
+
var T = st(), P = Xe(T);
|
|
49
|
+
{
|
|
50
|
+
let t = J(() => e(H) ? "" : "Scan Passport Id");
|
|
51
|
+
Ze(P, {
|
|
52
|
+
get text() {
|
|
53
|
+
return w;
|
|
54
|
+
},
|
|
55
|
+
get description() {
|
|
56
|
+
return e(t);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
var q = m(P, 2), $ = _(q);
|
|
61
|
+
let ne;
|
|
62
|
+
var re = m($, 2);
|
|
63
|
+
{
|
|
64
|
+
var de = (t) => {
|
|
65
|
+
var o = nt(), O = m(_(o)), ve = _(O, !0);
|
|
66
|
+
b(O), b(o), fe(() => me(ve, x)), ee(t, o);
|
|
67
|
+
};
|
|
68
|
+
se(re, (t) => {
|
|
69
|
+
x && t(de);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
var W = m(re, 2), i = m(_(W)), r = _(i);
|
|
73
|
+
{
|
|
74
|
+
var c = (t) => {
|
|
75
|
+
var o = Fe();
|
|
76
|
+
fe((O) => me(o, `${O ?? ""} ${e(M) ?? ""} /`), [
|
|
77
|
+
() => (e(j), oe(() => L(+e(j))))
|
|
78
|
+
]), ee(t, o);
|
|
79
|
+
};
|
|
80
|
+
se(r, (t) => {
|
|
81
|
+
k && t(c);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
var v = m(r);
|
|
85
|
+
b(i), b(W);
|
|
86
|
+
var S = m(W, 2), f = _(S), u = _(f);
|
|
87
|
+
ke(u, {
|
|
88
|
+
name: "recipientAddress",
|
|
89
|
+
type: "text",
|
|
90
|
+
placeholder: "Address 0x...",
|
|
91
|
+
get value() {
|
|
92
|
+
return V();
|
|
93
|
+
},
|
|
94
|
+
set value(t) {
|
|
95
|
+
V(t);
|
|
96
|
+
},
|
|
97
|
+
$$legacy: !0
|
|
98
|
+
});
|
|
99
|
+
var Y = m(u, 2);
|
|
100
|
+
{
|
|
101
|
+
var Z = (t) => {
|
|
102
|
+
var o = rt();
|
|
103
|
+
ee(t, o);
|
|
104
|
+
};
|
|
105
|
+
se(Y, (t) => {
|
|
106
|
+
V() && !e(Q) && t(Z);
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
b(f);
|
|
110
|
+
var R = m(f, 2), d = _(R);
|
|
111
|
+
b(R), b(S);
|
|
112
|
+
var C = m(S, 2), ae = _(C);
|
|
113
|
+
{
|
|
114
|
+
let t = J(() => `${e(F)} amount`);
|
|
115
|
+
ke(ae, {
|
|
116
|
+
type: "number",
|
|
117
|
+
min: "0",
|
|
118
|
+
step: "0.001",
|
|
119
|
+
get placeholder() {
|
|
120
|
+
return e(t);
|
|
121
|
+
},
|
|
122
|
+
get value() {
|
|
123
|
+
return D();
|
|
124
|
+
},
|
|
125
|
+
set value(o) {
|
|
126
|
+
D(o);
|
|
127
|
+
},
|
|
128
|
+
$$legacy: !0
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
var le = m(ae, 2), Pe = _(le);
|
|
132
|
+
{
|
|
133
|
+
let t = J(() => +e(I) <= 0);
|
|
134
|
+
_e(Pe, {
|
|
135
|
+
get onClick() {
|
|
136
|
+
return l;
|
|
137
|
+
},
|
|
138
|
+
text: "MAX",
|
|
139
|
+
get disabled() {
|
|
140
|
+
return e(t);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
b(le);
|
|
145
|
+
var Oe = m(le, 2);
|
|
146
|
+
{
|
|
147
|
+
var Ue = (t) => {
|
|
148
|
+
var o = at(), O = _(o);
|
|
149
|
+
{
|
|
150
|
+
let ve = J(() => !e(h));
|
|
151
|
+
_e(O, {
|
|
152
|
+
get onClick() {
|
|
153
|
+
return A;
|
|
154
|
+
},
|
|
155
|
+
get text() {
|
|
156
|
+
return e(F);
|
|
157
|
+
},
|
|
158
|
+
get disabled() {
|
|
159
|
+
return e(ve);
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
b(o), ee(t, o);
|
|
164
|
+
};
|
|
165
|
+
se(Oe, (t) => {
|
|
166
|
+
k && t(Ue);
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
b(C);
|
|
170
|
+
var He = m(C, 2);
|
|
171
|
+
{
|
|
172
|
+
let t = J(() => `Send ${D() || ""} ${e(F)}`);
|
|
173
|
+
_e(He, {
|
|
174
|
+
get onClick() {
|
|
175
|
+
return z;
|
|
176
|
+
},
|
|
177
|
+
get text() {
|
|
178
|
+
return e(t);
|
|
179
|
+
},
|
|
180
|
+
get isLoading() {
|
|
181
|
+
return e(te);
|
|
182
|
+
},
|
|
183
|
+
get disabled() {
|
|
184
|
+
return e(U);
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
b(q);
|
|
189
|
+
var ye = m(q, 2), Ne = _(ye);
|
|
190
|
+
return et(Ne, {
|
|
191
|
+
get onClick() {
|
|
192
|
+
return p;
|
|
193
|
+
}
|
|
194
|
+
}), b(ye), fe(
|
|
195
|
+
(t, o, O) => {
|
|
196
|
+
ne = Me($, 1, "crtw-absolute crtw-top-0 crtw-bottom-0 crtw-left-0 crtw-right-0 crtw-z-10 crtw-border crtw-border-gray-300 crtw-rounded-lg crtw-backdrop-blur-lg", null, ne, t), me(v, ` ${o ?? ""} ${O ?? ""}`), Ve(d, "src", tt);
|
|
197
|
+
},
|
|
198
|
+
[
|
|
199
|
+
() => ({
|
|
200
|
+
"crtw-hidden": e(H),
|
|
201
|
+
"crtw-z-[-1]": e(H)
|
|
202
|
+
}),
|
|
203
|
+
() => (e(I), oe(() => L(+e(I)))),
|
|
204
|
+
() => (y(be), e(N), oe(() => be(e(N), B)))
|
|
205
|
+
]
|
|
206
|
+
), je("click", d, X), ee(K, T), De({
|
|
207
|
+
get recipientAddress() {
|
|
208
|
+
return V();
|
|
209
|
+
},
|
|
210
|
+
set recipientAddress(t) {
|
|
211
|
+
V(t), ge();
|
|
212
|
+
},
|
|
213
|
+
get amount() {
|
|
214
|
+
return D();
|
|
215
|
+
},
|
|
216
|
+
set amount(t) {
|
|
217
|
+
D(t), ge();
|
|
218
|
+
},
|
|
219
|
+
get options() {
|
|
220
|
+
return a();
|
|
221
|
+
},
|
|
222
|
+
set options(t) {
|
|
223
|
+
a(t), ge();
|
|
224
|
+
},
|
|
225
|
+
$set: Re,
|
|
226
|
+
$on: (t, o) => Te(E, t, o)
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
function it(K, E) {
|
|
230
|
+
if (new.target) return $e({ component: it, ...K });
|
|
231
|
+
Ee(E, !1);
|
|
232
|
+
const [I, te] = ze(), U = () => pe(Se, "$configStore", I), Q = () => pe(Ce, "$providerStore", I), H = () => pe(Ke, "$clientPublicStore", I), h = s(), N = s();
|
|
233
|
+
var M = this && this.__awaiter || function(i, r, c, v) {
|
|
234
|
+
function S(f) {
|
|
235
|
+
return f instanceof c ? f : new c(function(u) {
|
|
236
|
+
u(f);
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
return new (c || (c = Promise))(function(f, u) {
|
|
240
|
+
function Y(d) {
|
|
241
|
+
try {
|
|
242
|
+
R(v.next(d));
|
|
243
|
+
} catch (C) {
|
|
244
|
+
u(C);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
function Z(d) {
|
|
248
|
+
try {
|
|
249
|
+
R(v.throw(d));
|
|
250
|
+
} catch (C) {
|
|
251
|
+
u(C);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
function R(d) {
|
|
255
|
+
d.done ? f(d.value) : S(d.value).then(Y, Z);
|
|
256
|
+
}
|
|
257
|
+
R((v = v.apply(i, r || [])).next());
|
|
258
|
+
});
|
|
259
|
+
};
|
|
260
|
+
const j = ie(Se), { sendTokens: F, getCREDContract: V, toastAlert: D } = ie(qe);
|
|
261
|
+
let a = "", A = s(""), l = s(), p = s(""), z = 18, w = s("-"), x = s(""), X = 18, B = s("-"), k = s(""), L = s(!0), T = s(!1), P, q, $;
|
|
262
|
+
const ne = () => M(void 0, void 0, void 0, function* () {
|
|
263
|
+
const { Scanner: i } = yield import("./scanner.es-DK9KxX60.js");
|
|
264
|
+
$ = new i({ target: "#cpuiCredScanner" }), We(we.UI_CLOSED, $.close), yield $.scan(), $.on(i.events.CAPTURE, (r) => M(void 0, [r], void 0, function* ({ sub: c }) {
|
|
265
|
+
const { address: v } = yield Ye(c);
|
|
266
|
+
n(A, v), $.close();
|
|
267
|
+
})), $.on(i.events.CANCEL, () => n(L, !0)), $.on(i.events.ERROR, (r) => {
|
|
268
|
+
(r?.message || r).includes("Permission") && alert("In order to scan please allow the current page to access your camera and try again."), n(L, !0);
|
|
269
|
+
}), n(L, !1);
|
|
270
|
+
}), re = () => M(void 0, void 0, void 0, function* () {
|
|
271
|
+
const i = e(p) === e(w);
|
|
272
|
+
n(T, !0);
|
|
273
|
+
try {
|
|
274
|
+
const r = G.parseUnits(String(e(l)), i ? z : X), c = yield F({
|
|
275
|
+
address: e(A),
|
|
276
|
+
amount: r,
|
|
277
|
+
instance: i ? P : void 0
|
|
278
|
+
});
|
|
279
|
+
D(`<a href="${Qe(c.hash)}" target="_blank">Send TX</a> was created`), n(A, ""), n(l, void 0);
|
|
280
|
+
const [v, S] = yield Promise.all([
|
|
281
|
+
P.balanceOf(a),
|
|
282
|
+
q.provider.getBalance(a)
|
|
283
|
+
]);
|
|
284
|
+
n(x, G.formatUnits(v, z)), n(k, parseFloat(G.formatUnits(S, X)).toFixed(4)), xe(we.RECHECK_BALANCE, [c.hash]);
|
|
285
|
+
} catch (r) {
|
|
286
|
+
D(r?.message || r || "An error occurred while sending tokens", "failure"), xe(we.ERROR, { error: r });
|
|
287
|
+
}
|
|
288
|
+
n(T, !1);
|
|
289
|
+
}), de = () => M(void 0, void 0, void 0, function* () {
|
|
290
|
+
var i, r, c, v, S, f;
|
|
291
|
+
const u = ie(Ge);
|
|
292
|
+
n(A, u?.to || ""), n(l, u?.amount || void 0);
|
|
293
|
+
const { decimals: Y, contract: Z } = yield V();
|
|
294
|
+
z = Y, P = Z;
|
|
295
|
+
const R = ie(Ce);
|
|
296
|
+
q = yield R.getSigner(), a = yield Je();
|
|
297
|
+
const d = yield Promise.all([
|
|
298
|
+
P.symbol(),
|
|
299
|
+
P.balanceOf(a),
|
|
300
|
+
R.getBalance(a),
|
|
301
|
+
fetch("https://chainid.network/chains.json").then((C) => C.json()).then((C) => C.find((ae) => String(ae.chainId) === j.chainId))
|
|
302
|
+
]);
|
|
303
|
+
n(w, d[0]), n(x, G.formatUnits(d[1], z)), X = (c = (r = (i = d[3]) === null || i === void 0 ? void 0 : i.nativeCurrency) === null || r === void 0 ? void 0 : r.decimals) !== null && c !== void 0 ? c : 18, n(k, parseFloat(G.formatUnits(d[2], X)).toFixed(4)), n(B, (f = (S = (v = d[3]) === null || v === void 0 ? void 0 : v.nativeCurrency) === null || S === void 0 ? void 0 : S.symbol) !== null && f !== void 0 ? f : "ETH"), n(p, e(w));
|
|
304
|
+
});
|
|
305
|
+
g(() => (U(), Q()), () => {
|
|
306
|
+
U().chainId && Q() && de();
|
|
307
|
+
}), g(() => e(A), () => {
|
|
308
|
+
n(h, !!G.isAddress(e(A)));
|
|
309
|
+
}), g(
|
|
310
|
+
() => (e(T), e(l), e(h), e(p), e(w), e(x), e(B), e(k)),
|
|
311
|
+
() => {
|
|
312
|
+
n(N, e(T) || !e(l) || !e(h) || e(p) === e(w) && e(l) > +e(x) || e(p) === e(B) && e(l) > +e(k));
|
|
313
|
+
}
|
|
314
|
+
), Ie(), Be();
|
|
315
|
+
{
|
|
316
|
+
let i = J(() => (U(), e(L), e(x), e(h), y(he), y(Ae), e(p), e(w), e(B), e(l), e(k), e(T), e(N), H(), oe(() => ({
|
|
317
|
+
title: "Send stored value",
|
|
318
|
+
isNativeCurrecyTransferAllowed: U().transferTokens?.nativeCurrency !== !1,
|
|
319
|
+
isScannerHidden: e(L),
|
|
320
|
+
balance: e(x),
|
|
321
|
+
chainId: j.chainId,
|
|
322
|
+
isRecipientAddressValid: e(h),
|
|
323
|
+
onScannerClicked: ne,
|
|
324
|
+
onSendTokens: re,
|
|
325
|
+
onBackClicked: () => he.set(Ae.WALLET),
|
|
326
|
+
onChangeCurrency: () => e(p) === e(w) ? n(p, e(B)) : n(p, e(w)),
|
|
327
|
+
onSetMaxAmount: () => e(p) === e(w) ? n(l, +e(x)) : n(l, +e(k)),
|
|
328
|
+
isLoading: e(T),
|
|
329
|
+
isSubmitDisabled: e(N),
|
|
330
|
+
credAlias: H()?.ui_settings.cred_alias,
|
|
331
|
+
activeCurrency: e(p),
|
|
332
|
+
symbol: e(w),
|
|
333
|
+
nativeSymbol: e(B),
|
|
334
|
+
nativeBalance: e(k)
|
|
335
|
+
}))));
|
|
336
|
+
Le(K, {
|
|
337
|
+
get options() {
|
|
338
|
+
return e(i);
|
|
339
|
+
},
|
|
340
|
+
get recipientAddress() {
|
|
341
|
+
return e(A);
|
|
342
|
+
},
|
|
343
|
+
set recipientAddress(r) {
|
|
344
|
+
n(A, r);
|
|
345
|
+
},
|
|
346
|
+
get amount() {
|
|
347
|
+
return e(l);
|
|
348
|
+
},
|
|
349
|
+
set amount(r) {
|
|
350
|
+
n(l, r);
|
|
351
|
+
},
|
|
352
|
+
$$legacy: !0
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
var W = De({
|
|
356
|
+
$set: Re,
|
|
357
|
+
$on: (i, r) => Te(E, i, r)
|
|
358
|
+
});
|
|
359
|
+
return te(), W;
|
|
360
|
+
}
|
|
361
|
+
export {
|
|
362
|
+
it as default
|
|
363
|
+
};
|
|
364
|
+
//# sourceMappingURL=SendTokens-BGGPj_e_.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SendTokens-D3cXqMmt.js","sources":["../../ui/main/send-tokens/SendTokens.svelte","../src/app/pages/send-tokens/SendTokens.svelte"],"sourcesContent":["<script lang=\"ts\">\n import ContentHeader from \"../shared/ContentHeader.svelte\";\n import ButtonBack from \"../shared/inputs/button-back/ButtonBack.svelte\";\n import Button from \"../shared/inputs/button/Button.svelte\";\n import Input from \"../shared/inputs/input/Input.svelte\";\n import ScanIcon from \"../../images/scanner.svg\";\n\n import { getCryptoCurrencySymbol } from \"../../../utils/lib/strings/strings\";\n\n export let recipientAddress: string;\n export let amount: number | undefined;\n\n export let options: {\n title: string;\n isScannerHidden: boolean;\n balance: string;\n chainId?: string;\n isRecipientAddressValid: boolean;\n onScannerClicked: () => void;\n onSendTokens: () => void;\n onBackClicked: () => void;\n onChangeCurrency: () => void;\n onSetMaxAmount: () => void;\n isLoading: boolean;\n isSubmitDisabled: boolean;\n credAlias: string;\n activeCurrency: string;\n symbol: string;\n nativeSymbol: string;\n nativeBalance: string;\n isNativeCurrecyTransferAllowed?: boolean;\n };\n\n let {\n onChangeCurrency,\n onSetMaxAmount,\n onBackClicked,\n onSendTokens,\n title,\n chainId,\n onScannerClicked,\n credAlias,\n isNativeCurrecyTransferAllowed = true\n } = options;\n\n $: balance = options.balance;\n $: isLoading = options.isLoading;\n $: isSubmitDisabled = options.isSubmitDisabled;\n $: isRecipientAddressValid = options.isRecipientAddressValid;\n $: isScannerHidden = options.isScannerHidden;\n $: activeCurrency = options.activeCurrency;\n $: symbol = options.symbol;\n $: nativeSymbol = options.nativeSymbol;\n $: nativeBalance = options.nativeBalance;\n\n $: activeCurrencySymbol = getCryptoCurrencySymbol(activeCurrency, credAlias);\n const round = (num: number) => Math.floor(num * 100) / 100\n</script>\n\n<ContentHeader\n text={title}\n description={isScannerHidden\n ? ``\n : \"Scan Passport Id\"}\n/>\n<div class=\"crtw-w-full crtw-p-0 crtw-relative\">\n <div\n id=\"cpuiCredScanner\"\n class=\"crtw-absolute crtw-top-0 crtw-bottom-0 crtw-left-0 crtw-right-0 crtw-z-10 crtw-border crtw-border-gray-300 crtw-rounded-lg crtw-backdrop-blur-lg\"\n class:crtw-hidden={isScannerHidden}\n class:crtw-z-[-1]={isScannerHidden}\n ></div>\n {#if chainId}\n <div>ChainId: <span class=\"crtw-font-bold\">{chainId}</span></div>\n {/if}\n <div>\n Your balance: \n <span class=\"crtw-font-bold\">\n {#if isNativeCurrecyTransferAllowed}\n {round(+nativeBalance)} {nativeSymbol} / \n {/if}\n\n {round(+balance)} {getCryptoCurrencySymbol(symbol, credAlias)}\n </span>\n </div>\n <div\n class=\"crtw-mb-2.5 crtw-flex crtw-items-start crtw-justify-between crtw-w-full\"\n >\n <div class=\"crtw-flex crtw-flex-col crtw-w-full\">\n <Input\n name=\"recipientAddress\"\n type=\"text\"\n placeholder=\"Address 0x...\"\n bind:value={recipientAddress}\n />\n {#if recipientAddress && !isRecipientAddressValid}\n <label\n class=\"crtw-text-[10px] crtw-text-warningTextColor cpui-send-tokens-validation-message\"\n for=\"recipientAddress\">Provided address is not valid.</label\n >\n {/if}\n </div>\n\n <div class=\"crtw-ml-2.5 crtw-cursor-pointer\">\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <!-- svelte-ignore a11y-no-noninteractive-element-interactions -->\n <img\n src={ScanIcon}\n on:click={onScannerClicked}\n width=\"53px\"\n alt=\"\"\n class=\"crtw-h-[53px]\"\n />\n </div>\n </div>\n\n <div\n class=\"crtw-mb-2.5 crtw-flex crtw-items-start crtw-justify-between crtw-w-full\"\n >\n <Input\n type=\"number\"\n min=\"0\"\n step=\"0.001\"\n placeholder={`${activeCurrencySymbol} amount`}\n bind:value={amount}\n />\n <div class=\"crtw-ml-2.5 crtw-w-16 crtw-min-w-16\">\n <Button onClick={onSetMaxAmount} text={`MAX`} disabled={+balance <= 0} />\n </div>\n\n {#if isNativeCurrecyTransferAllowed}\n <div class=\"crtw-ml-2.5 crtw-w-16 crtw-min-w-16\">\n <Button\n onClick={onChangeCurrency}\n text={activeCurrencySymbol}\n disabled={!activeCurrency}\n />\n </div>\n {/if}\n </div>\n <Button\n onClick={onSendTokens}\n text={`Send ${amount || \"\"} ${activeCurrencySymbol}`}\n {isLoading}\n disabled={isSubmitDisabled}\n />\n</div>\n<div class=\"crtw-mt-0.5 crtw-mb-3 crtw-w-full\">\n <ButtonBack onClick={onBackClicked} />\n</div>\n","<script lang=\"ts\">\n import { ethers } from '@credenza3/core-web-evm-ext'\n import { get } from 'svelte/store'\n import { type Scanner } from '@credenza3/scanner-lib'\n\n import { clientPublicStore, fn, pageOptsStore, pageStore } from '@packages/stores'\n import { dispatch, once, PassportEvents } from '@lib/events/events'\n import { Pages } from '@packages/utils/enums'\n import { getTxScanAddress } from '@src/lib/tx/tx'\n import { SendTokens } from '@packages/ui'\n import { getAddress } from '@src/passport/blockchain'\n import { configStore } from '@src/stores/config'\n import type { TEvmContract } from '@packages/utils/types'\n import { providerStore } from '@src/stores'\n import { getUserAddressBySub } from '@src/Passport.service'\n\n const config = get(configStore)\n const { sendTokens, getCREDContract, toastAlert } = get(fn)\n\n let userAddress = ''\n let recipientAddress = ''\n let amount: number | undefined\n\n let activeCurrency = ''\n\n let decimals = 18\n let symbol = '-'\n let balance = ''\n\n let nativeDecimals = 18\n let nativeSymbol = '-'\n let nativeBalance = ''\n\n let isScannerHidden = true\n let isLoading = false\n\n let contract: ethers.Contract\n let signer: ethers.JsonRpcSigner\n let scanner: Scanner\n\n const onScannerClicked = async () => {\n const { Scanner } = await import('@credenza3/scanner-lib')\n scanner = new Scanner({ target: '#cpuiCredScanner' })\n once(PassportEvents.UI_CLOSED, scanner.close)\n await scanner.scan()\n scanner.on(Scanner.events.CAPTURE, async ({ sub }: { sub: string }) => {\n const { address } = await getUserAddressBySub(sub)\n recipientAddress = address\n scanner.close()\n })\n scanner.on(Scanner.events.CANCEL, () => (isScannerHidden = true))\n scanner.on(Scanner.events.ERROR, (err) => {\n const message = err?.message || err\n if (message.includes('Permission'))\n alert('In order to scan please allow the current page to access your camera and try again.')\n isScannerHidden = true\n })\n isScannerHidden = false\n }\n\n const sendTokensToRecipient = async () => {\n const isTCRED = activeCurrency === symbol\n isLoading = true\n try {\n const weiBn = ethers.parseUnits(String(amount), isTCRED ? decimals : nativeDecimals)\n const result = (await sendTokens({\n address: recipientAddress,\n amount: weiBn,\n instance: isTCRED ? contract : undefined,\n })) as { hash: string; wait: () => Promise<void> }\n toastAlert(\n `<a href=\"${getTxScanAddress(result.hash)}\" target=\"_blank\">Send TX</a> was created`,\n )\n recipientAddress = ''\n amount = undefined\n\n const [weiBalance, weiNativeBalance] = await Promise.all([\n contract.balanceOf(userAddress),\n signer.provider.getBalance(userAddress),\n ])\n\n balance = ethers.formatUnits(weiBalance, decimals)\n nativeBalance = parseFloat(ethers.formatUnits(weiNativeBalance, nativeDecimals)).toFixed(4)\n dispatch(PassportEvents.RECHECK_BALANCE, [result.hash])\n } catch (err) {\n toastAlert(err?.message || err || 'An error occurred while sending tokens', 'failure')\n dispatch(PassportEvents.ERROR, { error: err })\n }\n isLoading = false\n }\n\n const init = async () => {\n const pageOpts = get(pageOptsStore)\n recipientAddress = pageOpts?.to || ''\n amount = pageOpts?.amount || undefined\n const { decimals: contractDecimals, contract: credContract } = (await getCREDContract()) as TEvmContract\n decimals = contractDecimals\n contract = credContract\n const provider = get(providerStore)\n signer = await provider.getSigner()\n userAddress = await getAddress()\n const results = await Promise.all([\n contract.symbol(),\n contract.balanceOf(userAddress),\n provider.getBalance(userAddress),\n fetch('https://chainid.network/chains.json')\n .then((result) => result.json())\n .then((networks) =>\n networks.find((network: { chainId: number }) => String(network.chainId) === config.chainId),\n ),\n ])\n symbol = results[0]\n balance = ethers.formatUnits(results[1], decimals)\n nativeDecimals = results[3]?.nativeCurrency?.decimals ?? 18\n nativeBalance = parseFloat(ethers.formatUnits(results[2], nativeDecimals)).toFixed(4)\n nativeSymbol = results[3]?.nativeCurrency?.symbol ?? 'ETH'\n activeCurrency = symbol\n }\n\n $: $configStore.chainId && $providerStore && init()\n $: isRecipientAddressValid = !!ethers.isAddress(recipientAddress)\n $: isSubmitDisabled =\n isLoading ||\n !amount ||\n !isRecipientAddressValid ||\n (activeCurrency === symbol && amount > +balance) ||\n (activeCurrency === nativeSymbol && amount > +nativeBalance)\n</script>\n\n<SendTokens\n bind:recipientAddress\n bind:amount\n options={{\n title: `Send stored value`,\n isNativeCurrecyTransferAllowed: $configStore.transferTokens?.nativeCurrency !== false,\n isScannerHidden,\n balance,\n chainId: config.chainId,\n isRecipientAddressValid,\n onScannerClicked,\n onSendTokens: sendTokensToRecipient,\n onBackClicked: () => pageStore.set(Pages.WALLET),\n onChangeCurrency: () => (activeCurrency === symbol ? (activeCurrency = nativeSymbol) : (activeCurrency = symbol)),\n onSetMaxAmount: () => (activeCurrency === symbol ? (amount = +balance) : (amount = +nativeBalance)),\n isLoading,\n isSubmitDisabled,\n credAlias: $clientPublicStore?.ui_settings.cred_alias,\n activeCurrency,\n symbol,\n nativeSymbol,\n nativeBalance,\n }}\n/>\n"],"names":["recipientAddress","$.prop","$$props","amount","options","onChangeCurrency","onSetMaxAmount","onBackClicked","onSendTokens","title","chainId","onScannerClicked","credAlias","isNativeCurrecyTransferAllowed","round","num","balance","isLoading","isSubmitDisabled","isRecipientAddressValid","isScannerHidden","activeCurrency","symbol","nativeSymbol","nativeBalance","$.set","activeCurrencySymbol","getCryptoCurrencySymbol","$.get","expression","$.derived_safe_equal","$$render","consequent","$.untrack","consequent_1","$$value","consequent_2","expression_2","consequent_3","ScanIcon","__awaiter","thisArg","_arguments","P","generator","config","get","configStore","sendTokens","getCREDContract","toastAlert","fn","userAddress","$.mutable_source","decimals","nativeDecimals","contract","signer","scanner","Scanner","once","PassportEvents","_a","sub","address","getUserAddressBySub","err","sendTokensToRecipient","isTCRED","weiBn","ethers","result","getTxScanAddress","weiBalance","weiNativeBalance","dispatch","init","pageOpts","pageOptsStore","contractDecimals","credContract","provider","providerStore","getAddress","results","networks","network","_c","_b","_f","_e","_d","$configStore","$providerStore","pageStore","Pages","$clientPublicStore"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SendTokens-BGGPj_e_.js","sources":["../../ui/main/send-tokens/SendTokens.svelte","../src/app/pages/send-tokens/SendTokens.svelte"],"sourcesContent":["<script lang=\"ts\">\n import ContentHeader from \"../shared/ContentHeader.svelte\";\n import ButtonBack from \"../shared/inputs/button-back/ButtonBack.svelte\";\n import Button from \"../shared/inputs/button/Button.svelte\";\n import Input from \"../shared/inputs/input/Input.svelte\";\n import ScanIcon from \"../../images/scanner.svg\";\n\n import { getCryptoCurrencySymbol } from \"../../../utils/lib/strings/strings\";\n\n export let recipientAddress: string;\n export let amount: number | undefined;\n\n export let options: {\n title: string;\n isScannerHidden: boolean;\n balance: string;\n chainId?: string;\n isRecipientAddressValid: boolean;\n onScannerClicked: () => void;\n onSendTokens: () => void;\n onBackClicked: () => void;\n onChangeCurrency: () => void;\n onSetMaxAmount: () => void;\n isLoading: boolean;\n isSubmitDisabled: boolean;\n credAlias: string;\n activeCurrency: string;\n symbol: string;\n nativeSymbol: string;\n nativeBalance: string;\n isNativeCurrecyTransferAllowed?: boolean;\n };\n\n let {\n onChangeCurrency,\n onSetMaxAmount,\n onBackClicked,\n onSendTokens,\n title,\n chainId,\n onScannerClicked,\n credAlias,\n isNativeCurrecyTransferAllowed = true\n } = options;\n\n $: balance = options.balance;\n $: isLoading = options.isLoading;\n $: isSubmitDisabled = options.isSubmitDisabled;\n $: isRecipientAddressValid = options.isRecipientAddressValid;\n $: isScannerHidden = options.isScannerHidden;\n $: activeCurrency = options.activeCurrency;\n $: symbol = options.symbol;\n $: nativeSymbol = options.nativeSymbol;\n $: nativeBalance = options.nativeBalance;\n\n $: activeCurrencySymbol = getCryptoCurrencySymbol(activeCurrency, credAlias);\n const round = (num: number) => Math.floor(num * 100) / 100\n</script>\n\n<ContentHeader\n text={title}\n description={isScannerHidden\n ? ``\n : \"Scan Passport Id\"}\n/>\n<div class=\"crtw-w-full crtw-p-0 crtw-relative\">\n <div\n id=\"cpuiCredScanner\"\n class=\"crtw-absolute crtw-top-0 crtw-bottom-0 crtw-left-0 crtw-right-0 crtw-z-10 crtw-border crtw-border-gray-300 crtw-rounded-lg crtw-backdrop-blur-lg\"\n class:crtw-hidden={isScannerHidden}\n class:crtw-z-[-1]={isScannerHidden}\n ></div>\n {#if chainId}\n <div>ChainId: <span class=\"crtw-font-bold\">{chainId}</span></div>\n {/if}\n <div>\n Your balance: \n <span class=\"crtw-font-bold\">\n {#if isNativeCurrecyTransferAllowed}\n {round(+nativeBalance)} {nativeSymbol} / \n {/if}\n\n {round(+balance)} {getCryptoCurrencySymbol(symbol, credAlias)}\n </span>\n </div>\n <div\n class=\"crtw-mb-2.5 crtw-flex crtw-items-start crtw-justify-between crtw-w-full\"\n >\n <div class=\"crtw-flex crtw-flex-col crtw-w-full\">\n <Input\n name=\"recipientAddress\"\n type=\"text\"\n placeholder=\"Address 0x...\"\n bind:value={recipientAddress}\n />\n {#if recipientAddress && !isRecipientAddressValid}\n <label\n class=\"crtw-text-[10px] crtw-text-warningTextColor cpui-send-tokens-validation-message\"\n for=\"recipientAddress\">Provided address is not valid.</label\n >\n {/if}\n </div>\n\n <div class=\"crtw-ml-2.5 crtw-cursor-pointer\">\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <!-- svelte-ignore a11y-no-noninteractive-element-interactions -->\n <img\n src={ScanIcon}\n on:click={onScannerClicked}\n width=\"53px\"\n alt=\"\"\n class=\"crtw-h-[53px]\"\n />\n </div>\n </div>\n\n <div\n class=\"crtw-mb-2.5 crtw-flex crtw-items-start crtw-justify-between crtw-w-full\"\n >\n <Input\n type=\"number\"\n min=\"0\"\n step=\"0.001\"\n placeholder={`${activeCurrencySymbol} amount`}\n bind:value={amount}\n />\n <div class=\"crtw-ml-2.5 crtw-w-16 crtw-min-w-16\">\n <Button onClick={onSetMaxAmount} text={`MAX`} disabled={+balance <= 0} />\n </div>\n\n {#if isNativeCurrecyTransferAllowed}\n <div class=\"crtw-ml-2.5 crtw-w-16 crtw-min-w-16\">\n <Button\n onClick={onChangeCurrency}\n text={activeCurrencySymbol}\n disabled={!activeCurrency}\n />\n </div>\n {/if}\n </div>\n <Button\n onClick={onSendTokens}\n text={`Send ${amount || \"\"} ${activeCurrencySymbol}`}\n {isLoading}\n disabled={isSubmitDisabled}\n />\n</div>\n<div class=\"crtw-mt-0.5 crtw-mb-3 crtw-w-full\">\n <ButtonBack onClick={onBackClicked} />\n</div>\n","<script lang=\"ts\">\n import { ethers } from '@credenza3/core-web-evm-ext'\n import { get } from 'svelte/store'\n import { type Scanner } from '@credenza3/scanner-lib'\n\n import { clientPublicStore, fn, pageOptsStore, pageStore } from '@packages/stores'\n import { dispatch, once, PassportEvents } from '@lib/events/events'\n import { Pages } from '@packages/utils/enums'\n import { getTxScanAddress } from '@src/lib/tx/tx'\n import { SendTokens } from '@packages/ui'\n import { getAddress } from '@src/passport/blockchain'\n import { configStore } from '@src/stores/config'\n import type { TEvmContract } from '@packages/utils/types'\n import { providerStore } from '@src/stores'\n import { getUserAddressBySub } from '@src/Passport.service'\n\n const config = get(configStore)\n const { sendTokens, getCREDContract, toastAlert } = get(fn)\n\n let userAddress = ''\n let recipientAddress = ''\n let amount: number | undefined\n\n let activeCurrency = ''\n\n let decimals = 18\n let symbol = '-'\n let balance = ''\n\n let nativeDecimals = 18\n let nativeSymbol = '-'\n let nativeBalance = ''\n\n let isScannerHidden = true\n let isLoading = false\n\n let contract: ethers.Contract\n let signer: ethers.JsonRpcSigner\n let scanner: Scanner\n\n const onScannerClicked = async () => {\n const { Scanner } = await import('@credenza3/scanner-lib')\n scanner = new Scanner({ target: '#cpuiCredScanner' })\n once(PassportEvents.UI_CLOSED, scanner.close)\n await scanner.scan()\n scanner.on(Scanner.events.CAPTURE, async ({ sub }: { sub: string }) => {\n const { address } = await getUserAddressBySub(sub)\n recipientAddress = address\n scanner.close()\n })\n scanner.on(Scanner.events.CANCEL, () => (isScannerHidden = true))\n scanner.on(Scanner.events.ERROR, (err) => {\n const message = err?.message || err\n if (message.includes('Permission'))\n alert('In order to scan please allow the current page to access your camera and try again.')\n isScannerHidden = true\n })\n isScannerHidden = false\n }\n\n const sendTokensToRecipient = async () => {\n const isTCRED = activeCurrency === symbol\n isLoading = true\n try {\n const weiBn = ethers.parseUnits(String(amount), isTCRED ? decimals : nativeDecimals)\n const result = (await sendTokens({\n address: recipientAddress,\n amount: weiBn,\n instance: isTCRED ? contract : undefined,\n })) as { hash: string; wait: () => Promise<void> }\n toastAlert(\n `<a href=\"${getTxScanAddress(result.hash)}\" target=\"_blank\">Send TX</a> was created`,\n )\n recipientAddress = ''\n amount = undefined\n\n const [weiBalance, weiNativeBalance] = await Promise.all([\n contract.balanceOf(userAddress),\n signer.provider.getBalance(userAddress),\n ])\n\n balance = ethers.formatUnits(weiBalance, decimals)\n nativeBalance = parseFloat(ethers.formatUnits(weiNativeBalance, nativeDecimals)).toFixed(4)\n dispatch(PassportEvents.RECHECK_BALANCE, [result.hash])\n } catch (err) {\n toastAlert(err?.message || err || 'An error occurred while sending tokens', 'failure')\n dispatch(PassportEvents.ERROR, { error: err })\n }\n isLoading = false\n }\n\n const init = async () => {\n const pageOpts = get(pageOptsStore)\n recipientAddress = pageOpts?.to || ''\n amount = pageOpts?.amount || undefined\n const { decimals: contractDecimals, contract: credContract } = (await getCREDContract()) as TEvmContract\n decimals = contractDecimals\n contract = credContract\n const provider = get(providerStore)\n signer = await provider.getSigner()\n userAddress = await getAddress()\n const results = await Promise.all([\n contract.symbol(),\n contract.balanceOf(userAddress),\n provider.getBalance(userAddress),\n fetch('https://chainid.network/chains.json')\n .then((result) => result.json())\n .then((networks) =>\n networks.find((network: { chainId: number }) => String(network.chainId) === config.chainId),\n ),\n ])\n symbol = results[0]\n balance = ethers.formatUnits(results[1], decimals)\n nativeDecimals = results[3]?.nativeCurrency?.decimals ?? 18\n nativeBalance = parseFloat(ethers.formatUnits(results[2], nativeDecimals)).toFixed(4)\n nativeSymbol = results[3]?.nativeCurrency?.symbol ?? 'ETH'\n activeCurrency = symbol\n }\n\n $: $configStore.chainId && $providerStore && init()\n $: isRecipientAddressValid = !!ethers.isAddress(recipientAddress)\n $: isSubmitDisabled =\n isLoading ||\n !amount ||\n !isRecipientAddressValid ||\n (activeCurrency === symbol && amount > +balance) ||\n (activeCurrency === nativeSymbol && amount > +nativeBalance)\n</script>\n\n<SendTokens\n bind:recipientAddress\n bind:amount\n options={{\n title: `Send stored value`,\n isNativeCurrecyTransferAllowed: $configStore.transferTokens?.nativeCurrency !== false,\n isScannerHidden,\n balance,\n chainId: config.chainId,\n isRecipientAddressValid,\n onScannerClicked,\n onSendTokens: sendTokensToRecipient,\n onBackClicked: () => pageStore.set(Pages.WALLET),\n onChangeCurrency: () => (activeCurrency === symbol ? (activeCurrency = nativeSymbol) : (activeCurrency = symbol)),\n onSetMaxAmount: () => (activeCurrency === symbol ? (amount = +balance) : (amount = +nativeBalance)),\n isLoading,\n isSubmitDisabled,\n credAlias: $clientPublicStore?.ui_settings.cred_alias,\n activeCurrency,\n symbol,\n nativeSymbol,\n nativeBalance,\n }}\n/>\n"],"names":["$.prop","$$props","amount","options","onChangeCurrency","onSetMaxAmount","onBackClicked","onSendTokens","title","chainId","onScannerClicked","credAlias","isNativeCurrecyTransferAllowed","round","num","isLoading","isSubmitDisabled","isRecipientAddressValid","isScannerHidden","activeCurrency","symbol","nativeSymbol","nativeBalance","$.set","activeCurrencySymbol","getCryptoCurrencySymbol","$.get","$0","$.derived_safe_equal","$$render","consequent","consequent_1","recipientAddress","consequent_2","ScanIcon","balance","__awaiter","thisArg","_arguments","P","generator","config","get","configStore","sendTokens","getCREDContract","toastAlert","fn","userAddress","$.mutable_source","decimals","nativeDecimals","contract","signer","scanner","Scanner","once","PassportEvents","_a","sub","address","getUserAddressBySub","sendTokensToRecipient","isTCRED","weiBn","ethers","result","getTxScanAddress","weiBalance","weiNativeBalance","dispatch","err","init","pageOpts","pageOptsStore","contractDecimals","credContract","provider","providerStore","getAddress","networks","network","results","_c","_b","_f","_e","_d","pageStore","Pages"],"mappings":"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"}
|