@credenza3/passport-evm 0.2.19 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/{App-C9I9989L.js → App-CRzqtg0D.js} +405 -402
  2. package/dist/App-CRzqtg0D.js.map +1 -0
  3. package/dist/Button-CZxrrdcl.js +64 -0
  4. package/dist/{Button-D5CGIu8s.js.map → Button-CZxrrdcl.js.map} +1 -1
  5. package/dist/{ButtonBack-DiIG6luz.js → ButtonBack-CcTF2hiR.js} +4 -4
  6. package/dist/{ButtonBack-DiIG6luz.js.map → ButtonBack-CcTF2hiR.js.map} +1 -1
  7. package/dist/{ButtonLink-CujytEgB.js → ButtonLink-B3cTSB_f.js} +16 -17
  8. package/dist/{ButtonLink-CujytEgB.js.map → ButtonLink-B3cTSB_f.js.map} +1 -1
  9. package/dist/ConfirmAccount-BMxaxxuE.js +210 -0
  10. package/dist/{ConfirmAccount-L4VSLm33.js.map → ConfirmAccount-BMxaxxuE.js.map} +1 -1
  11. package/dist/{ContentHeader-DtB3AfgZ.js → ContentHeader-C9ZjxEks.js} +5 -5
  12. package/dist/{ContentHeader-DtB3AfgZ.js.map → ContentHeader-C9ZjxEks.js.map} +1 -1
  13. package/dist/{Error-4PRrZwmC.js → Error-BNFeWG26.js} +113 -113
  14. package/dist/{Error-4PRrZwmC.js.map → Error-BNFeWG26.js.map} +1 -1
  15. package/dist/{Input-B40ySJRz.js → Input-CGvyhwU3.js} +6 -10
  16. package/dist/{Input-B40ySJRz.js.map → Input-CGvyhwU3.js.map} +1 -1
  17. package/dist/{Label-CVUbL1bW.js → Label-wrbO2KWV.js} +5 -10
  18. package/dist/{Label-CVUbL1bW.js.map → Label-wrbO2KWV.js.map} +1 -1
  19. package/dist/{Loader-DWGzCX4y.js → Loader-DxNNTG5t.js} +3 -3
  20. package/dist/{Loader-DWGzCX4y.js.map → Loader-DxNNTG5t.js.map} +1 -1
  21. package/dist/Login-BLzU089t.js +281 -0
  22. package/dist/{Login-CAgCGqA-.js.map → Login-BLzU089t.js.map} +1 -1
  23. package/dist/Logout-6hsVMO7a.js +96 -0
  24. package/dist/{Logout-Cn-fwBb4.js.map → Logout-6hsVMO7a.js.map} +1 -1
  25. package/dist/Nav-BtMAE1f8.js +666 -0
  26. package/dist/{Nav-CuA2pLgM.js.map → Nav-BtMAE1f8.js.map} +1 -1
  27. package/dist/{PassportId-CSTvlPYW.js → PassportId-BIM66rME.js} +91 -93
  28. package/dist/{PassportId-CSTvlPYW.js.map → PassportId-BIM66rME.js.map} +1 -1
  29. package/dist/Payment-DLvPXTu8.js +1036 -0
  30. package/dist/Payment-DLvPXTu8.js.map +1 -0
  31. package/dist/PaymentResult-Ba_fDcXj.js +256 -0
  32. package/dist/{PaymentResult-C5iwUhAQ.js.map → PaymentResult-Ba_fDcXj.js.map} +1 -1
  33. package/dist/{Profile-GkmykWQr.js → Profile-rOzKISMM.js} +157 -165
  34. package/dist/{Profile-GkmykWQr.js.map → Profile-rOzKISMM.js.map} +1 -1
  35. package/dist/ProgressVideo-QfEHz9I6.js +125 -0
  36. package/dist/{ProgressVideo-4SQjAnPJ.js.map → ProgressVideo-QfEHz9I6.js.map} +1 -1
  37. package/dist/RichAlert-BUMPmrkW.js +111 -0
  38. package/dist/{RichAlert-DoQILIMV.js.map → RichAlert-BUMPmrkW.js.map} +1 -1
  39. package/dist/Scanner-hbpnj7Un.js +123 -0
  40. package/dist/{Scanner-BCw9U9L_.js.map → Scanner-hbpnj7Un.js.map} +1 -1
  41. package/dist/SendTokens-DXMch6BI.js +364 -0
  42. package/dist/{SendTokens-D3cXqMmt.js.map → SendTokens-DXMch6BI.js.map} +1 -1
  43. package/dist/Sign-DJN-_MDG.js +109 -0
  44. package/dist/{Sign-IQLTbDiV.js.map → Sign-DJN-_MDG.js.map} +1 -1
  45. package/dist/Stripe.service-D7muWv_f.js +59 -0
  46. package/dist/{Stripe.service-GlcYQnp5.js.map → Stripe.service-D7muWv_f.js.map} +1 -1
  47. package/dist/UpdateProfile-C_d1OWGt.js +525 -0
  48. package/dist/{UpdateProfile-D4bg5GEF.js.map → UpdateProfile-C_d1OWGt.js.map} +1 -1
  49. package/dist/UserInfo-BMvl7_7Z.js +128 -0
  50. package/dist/{UserInfo-DwjE6Ph4.js.map → UserInfo-BMvl7_7Z.js.map} +1 -1
  51. package/dist/Wallet-CcKidq9M.js +263 -0
  52. package/dist/{Wallet-BUV87MlV.js.map → Wallet-CcKidq9M.js.map} +1 -1
  53. package/dist/abi-DIVtyi6o.js.map +1 -1
  54. package/dist/account-BPB9Ucub.js.map +1 -1
  55. package/dist/each-ByCR9jp6.js +266 -0
  56. package/dist/each-ByCR9jp6.js.map +1 -0
  57. package/dist/event-modifiers-D4czZCB6.js +13 -0
  58. package/dist/{event-modifiers-DpFXHa6q.js.map → event-modifiers-D4czZCB6.js.map} +1 -1
  59. package/dist/{html-a8zjkl0d.js → html-VVJg_dPD.js} +16 -16
  60. package/dist/html-VVJg_dPD.js.map +1 -0
  61. package/dist/{index-B0D9qQ_O.js → index-53POqKTn.js} +11779 -11229
  62. package/dist/index-53POqKTn.js.map +1 -0
  63. package/dist/index-client-DgwnQ7pj.js +25 -0
  64. package/dist/index-client-DgwnQ7pj.js.map +1 -0
  65. package/dist/input-CY6a4cHM.js +37 -0
  66. package/dist/input-CY6a4cHM.js.map +1 -0
  67. package/dist/legacy-C8JnmExZ.js +1025 -0
  68. package/dist/legacy-C8JnmExZ.js.map +1 -0
  69. package/dist/passport.es.js +1 -1
  70. package/dist/passport.umd.js +139 -138
  71. package/dist/passport.umd.js.map +1 -1
  72. package/dist/scanner-Bm3Pvpfs.js.map +1 -1
  73. package/dist/{scanner.es-cf-mCExK.js → scanner.es-DK9KxX60.js} +2 -2
  74. package/dist/{scanner.es-cf-mCExK.js.map → scanner.es-DK9KxX60.js.map} +1 -1
  75. package/dist/strings-B-rKL311.js.map +1 -1
  76. package/dist/svg-BwNV4pWZ.js.map +1 -1
  77. package/dist/validation-DaZvZUPL.js.map +1 -1
  78. package/package.json +20 -20
  79. package/dist/App-C9I9989L.js.map +0 -1
  80. package/dist/Button-D5CGIu8s.js +0 -69
  81. package/dist/ConfirmAccount-L4VSLm33.js +0 -210
  82. package/dist/Login-CAgCGqA-.js +0 -294
  83. package/dist/Logout-Cn-fwBb4.js +0 -96
  84. package/dist/Nav-CuA2pLgM.js +0 -688
  85. package/dist/Payment-DVlaKx-E.js +0 -1039
  86. package/dist/Payment-DVlaKx-E.js.map +0 -1
  87. package/dist/PaymentResult-C5iwUhAQ.js +0 -290
  88. package/dist/ProgressVideo-4SQjAnPJ.js +0 -121
  89. package/dist/RichAlert-DoQILIMV.js +0 -119
  90. package/dist/Scanner-BCw9U9L_.js +0 -126
  91. package/dist/SendTokens-D3cXqMmt.js +0 -363
  92. package/dist/Sign-IQLTbDiV.js +0 -107
  93. package/dist/Stripe.service-GlcYQnp5.js +0 -61
  94. package/dist/UpdateProfile-D4bg5GEF.js +0 -522
  95. package/dist/UserInfo-DwjE6Ph4.js +0 -151
  96. package/dist/Wallet-BUV87MlV.js +0 -260
  97. package/dist/each-tAR3XqEj.js +0 -202
  98. package/dist/each-tAR3XqEj.js.map +0 -1
  99. package/dist/event-modifiers-DpFXHa6q.js +0 -13
  100. package/dist/html-a8zjkl0d.js.map +0 -1
  101. package/dist/index-B0D9qQ_O.js.map +0 -1
  102. package/dist/index-client-z9rIkUyw.js +0 -28
  103. package/dist/index-client-z9rIkUyw.js.map +0 -1
  104. package/dist/input-b1D2_f8m.js +0 -30
  105. package/dist/input-b1D2_f8m.js.map +0 -1
  106. package/dist/legacy-C1UsO_tu.js +0 -1039
  107. 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-C8JnmExZ.js";
2
+ import { a as j } from "./index-client-DgwnQ7pj.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-53POqKTn.js";
4
+ import { C as se } from "./ContentHeader-C9ZjxEks.js";
5
+ import { L as ae } from "./Loader-DxNNTG5t.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-hbpnj7Un.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Scanner-BCw9U9L_.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","onMount","Scanner","once","PassportEvents","$.set","err","expression","$.derived_safe_equal"],"mappings":";;;;;;;;;;MAIaA,IAEVC,EAAAC,GAAA,WAAA,EAAA;;MAEEC,GAAkBH,EAAO,EAAC,eAAe;AAAA;;;;;;;;;;QAKtCG,CAAe,KAAAC,EAAAC,CAAA;AAAA;;;;;;;iCAWCF,CAAe,EAAA;AAAA;;;;;;;;;;;;;;;;ACxBtB,MAAAG,IAAA,QAAA,KAAA,aAAA,SAAAC,GAAAC,GAAAC,GAAAC,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;UAiBP,OAAAC,EAAK,IAAKC,EAAIC,CAAE;MACpBC,GACAX,MAAkB,EAAK;QAErBY,IAAS,CAAGC,MAAyFV,EAAhF,QAAA,CAAAU,CAAA,GAAA,QAAA,WAAA,EAAA,SAAAC,GAAS,KAAAC,GAAK,UAAAC,EAAQ,GAAsD;YACrGL,EAAQ,MAAK,GACLK,GAAQ;AAAA,MACT,KAAAC,EAAU;AAAA,MACV,KAAAA,EAAU,aAAa;AACpB,cAAAC,IAAS,KAAK,MAAMJ,CAAO,KACzB,SAAAK,EAAO,IAAA,MAAWC,GAAoBL,CAAG;AACjD,QAAAM,GAAc;AAAA,UAAG,aAAaF;AAAA,UAAS,QAAQD,KAAM,OAAN,SAAAA,EAAQ;AAAA;;MAEzD;AAAA,MACK,KAAAD,EAAU,iBAAiB;AAC9B,QAAAK,GAAY,KAAK,MAAMR,CAAO,CAAA;;MAEhC;AAAA,MACK,KAAAG,EAAU,gBAAgB;AACvB,cAAAM,EAAe,KAAK,MAAMT,CAAO,CAAA;;MAEzC;AAAA,MACK,KAAAG,EAAU,wBAAwB;AAC/B,cAAAO,EAA4B,KAAK,MAAMV,CAAO,CAAA;;MAEtD;AAAA;AAEE,QAAAN,EAAK,GACLiB,EAAU,IAAI,IAAI;AAAA;GAGvB;AAED,EAAAC,EAAmB,MAAAvB,EAAA,QAAA,QAAA,QAAA,aAAA;AACT,UAAA,EAAA,SAAAwB,EAAO,iBAAkB,0BAAwB;AACzD,IAAAhB,IAAc,IAAAgB,EAAU,EAAA,QAAQ,eAAc,CAAA,GAC9CC,EAAKC,EAAe,WAAgB,MAAA;AAClC,MAAAlB,EAAQ,MAAK,GACbc,EAAU,IAAI,IAAI;AAAA,KACnB,GACK,MAAAd,EAAQ,KAAO,EAAA,eAAe,GAAK,CAAA,GACzCmB,EAAA9B,GAAkB,EAAI,GACtBW,EAAQ,GAAGgB,EAAQ,OAAO,SAASf,CAAS,GAC5CD,EAAQ,GAAGgB,EAAQ,OAAO,OAAQ,CAAAI,MAAO;AAEnC,QADYA,KAAA,gBAAAA,EAAK,YAAWA,GACpB,SAAS,YAAY,KAC/B,MAAM,qFAAqF;AAAA,KAC9F;AAAA,GACF,CAAA;AAG0B,QAAAC,IAAAC,EAAA,OAAA,EAAA,mBAAAjC,CAAe,EAAA,EAAA;;;;;;;;;;"}
1
+ {"version":3,"file":"Scanner-hbpnj7Un.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-C8JnmExZ.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-53POqKTn.js";
3
+ import "./scanner.es-DK9KxX60.js";
4
+ import { C as Ze } from "./ContentHeader-C9ZjxEks.js";
5
+ import { B as et } from "./ButtonBack-CcTF2hiR.js";
6
+ import { B as _e } from "./Button-CZxrrdcl.js";
7
+ import { I as ke } from "./Input-CGvyhwU3.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-DXMch6BI.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-DXMch6BI.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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"}