@shapeshiftoss/swap-widget 0.0.2
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/Dockerfile +87 -0
- package/README.md +519 -0
- package/dist/assets/PhArrowCircleDown-B305t-Sh.js +14 -0
- package/dist/assets/PhArrowClockwise-CJPxQhr_.js +14 -0
- package/dist/assets/PhArrowDown-C4hT9BVu.js +14 -0
- package/dist/assets/PhArrowLeft-Way4Cu-r.js +14 -0
- package/dist/assets/PhArrowRight-Cp5ZME0F.js +14 -0
- package/dist/assets/PhArrowSquareOut-NnrK69c5.js +14 -0
- package/dist/assets/PhArrowUp-Dph6j8rm.js +14 -0
- package/dist/assets/PhArrowUpRight-BpJjRRRh.js +14 -0
- package/dist/assets/PhArrowsClockwise-CFUT8X7R.js +14 -0
- package/dist/assets/PhArrowsDownUp-BjBI4ckC.js +14 -0
- package/dist/assets/PhArrowsLeftRight-CuLpbKRk.js +14 -0
- package/dist/assets/PhBank-Dchr4XQJ.js +14 -0
- package/dist/assets/PhBrowser-dUu2TrC1.js +14 -0
- package/dist/assets/PhCaretDown-78IuKU3V.js +14 -0
- package/dist/assets/PhCaretLeft-_aiyH7n1.js +14 -0
- package/dist/assets/PhCaretRight-8zJQEuDX.js +14 -0
- package/dist/assets/PhCaretUp-CiCxKWwN.js +14 -0
- package/dist/assets/PhCheck-CcADx8br.js +14 -0
- package/dist/assets/PhCircleHalf-BYzSzd2h.js +14 -0
- package/dist/assets/PhClock-UItiXeJq.js +14 -0
- package/dist/assets/PhCompass-CUy3uA7t.js +14 -0
- package/dist/assets/PhCopy-C-PDgSlZ.js +14 -0
- package/dist/assets/PhCreditCard-CWRaUT6F.js +14 -0
- package/dist/assets/PhCurrencyDollar-Cqla3AXT.js +14 -0
- package/dist/assets/PhDesktop-BBIPrYLl.js +14 -0
- package/dist/assets/PhDeviceMobile-BdsPaATg.js +14 -0
- package/dist/assets/PhDotsThree-BMXCQl-0.js +14 -0
- package/dist/assets/PhEnvelope-yUsis6yU.js +14 -0
- package/dist/assets/PhFunnelSimple-Ba7BbWTp.js +14 -0
- package/dist/assets/PhGlobe-DgLxBk5U.js +14 -0
- package/dist/assets/PhIdentificationCard-Czjmq9Z3.js +14 -0
- package/dist/assets/PhImage-BAJ_erz6.js +14 -0
- package/dist/assets/PhInfo-Cr4DhVUE.js +14 -0
- package/dist/assets/PhLightbulb-BX_7duTr.js +14 -0
- package/dist/assets/PhMagnifyingGlass-Mygfryvz.js +14 -0
- package/dist/assets/PhPaperPlaneRight-BeuCA660.js +14 -0
- package/dist/assets/PhPlus-BMjcHjsT.js +14 -0
- package/dist/assets/PhPower-CGffGmdb.js +14 -0
- package/dist/assets/PhPuzzlePiece-wm_GpVSi.js +14 -0
- package/dist/assets/PhQrCode-DRwRzXCH.js +14 -0
- package/dist/assets/PhQuestion-M09j2U0T.js +14 -0
- package/dist/assets/PhQuestionMark-BP9EMB6h.js +14 -0
- package/dist/assets/PhSealCheck-BfG80yKn.js +14 -0
- package/dist/assets/PhSignOut-C5YOWlPT.js +14 -0
- package/dist/assets/PhSpinner-BXooDYzU.js +14 -0
- package/dist/assets/PhTrash-Biq6rmmL.js +14 -0
- package/dist/assets/PhUser-CAgZSpGe.js +14 -0
- package/dist/assets/PhVault-l2PHF38a.js +14 -0
- package/dist/assets/PhWallet-w25D16It.js +14 -0
- package/dist/assets/PhWarning-DPEydIPw.js +14 -0
- package/dist/assets/PhWarningCircle-BqjT745H.js +14 -0
- package/dist/assets/PhX-s-SmVExa.js +14 -0
- package/dist/assets/SwapController-If0bFrNc.js +1 -0
- package/dist/assets/ccip-BBB7uCdL.js +1 -0
- package/dist/assets/ccip-CkkdfKKI.js +1 -0
- package/dist/assets/data-capture-D4gAy-Yc.js +242 -0
- package/dist/assets/email-B1AJehis.js +90 -0
- package/dist/assets/embedded-wallet-Q6DQopDk.js +410 -0
- package/dist/assets/features-B6JAPAFb.js +5 -0
- package/dist/assets/index-5jd8RPN9.js +7428 -0
- package/dist/assets/index-B4kNtSTk.js +1080 -0
- package/dist/assets/index-B753eAob.js +1 -0
- package/dist/assets/index-BZoLTv77.js +3 -0
- package/dist/assets/index-Bcw9UURX.js +3 -0
- package/dist/assets/index-BkrV-ahK.js +2 -0
- package/dist/assets/index-CRQzQ_up.js +9 -0
- package/dist/assets/index-CSW0Gt5y.js +132 -0
- package/dist/assets/index-CZ4jTIsk.js +138 -0
- package/dist/assets/index-Cwa8SB3h.js +61 -0
- package/dist/assets/index-DEwQgT4r.js +78 -0
- package/dist/assets/index-DVfQiQ1d.js +1 -0
- package/dist/assets/index-cV3UdaMs.css +1 -0
- package/dist/assets/index-hAmu622O.js +43 -0
- package/dist/assets/onramp-XcPNCLRU.js +422 -0
- package/dist/assets/pay-with-exchange-BeHt4OF4.js +280 -0
- package/dist/assets/property-C9JG5tag.js +27 -0
- package/dist/assets/receive-7ff4he2S.js +131 -0
- package/dist/assets/send-CkMBIRXT.js +554 -0
- package/dist/assets/socials-DmmxuLrP.js +250 -0
- package/dist/assets/swaps-IHAYRQ0x.js +1050 -0
- package/dist/assets/transactions-9Cxdk7o9.js +16 -0
- package/dist/assets/v4-BOvFkHkt.js +1 -0
- package/dist/assets/w3m-modal-kJzFnBfB.js +891 -0
- package/dist/assets/wallet-standard-Dv8LMoUB.js +1 -0
- package/dist/favicon.png +0 -0
- package/dist/favicon.svg +11 -0
- package/dist/icon-192x192.png +0 -0
- package/dist/icon-512x512.png +0 -0
- package/dist/index.html +33 -0
- package/index.html +32 -0
- package/package.json +59 -0
- package/public/favicon.png +0 -0
- package/public/favicon.svg +11 -0
- package/public/icon-192x192.png +0 -0
- package/public/icon-512x512.png +0 -0
- package/railway.toml +10 -0
- package/src/api/client.ts +95 -0
- package/src/components/AddressInputModal.css +173 -0
- package/src/components/AddressInputModal.tsx +250 -0
- package/src/components/ApprovalStep.tsx +92 -0
- package/src/components/ExecutionStep.tsx +27 -0
- package/src/components/InputStep.tsx +431 -0
- package/src/components/QuoteSelector.css +146 -0
- package/src/components/QuoteSelector.tsx +137 -0
- package/src/components/QuotesModal.css +250 -0
- package/src/components/QuotesModal.tsx +182 -0
- package/src/components/SettingsModal.css +145 -0
- package/src/components/SettingsModal.tsx +180 -0
- package/src/components/StatusStep.tsx +139 -0
- package/src/components/SwapWidget.css +713 -0
- package/src/components/SwapWidget.tsx +607 -0
- package/src/components/TokenSelectModal.css +438 -0
- package/src/components/TokenSelectModal.tsx +487 -0
- package/src/components/WalletProvider.tsx +92 -0
- package/src/config/appkit.ts +104 -0
- package/src/config/wagmi.ts +27 -0
- package/src/constants/chains.ts +72 -0
- package/src/constants/defaults.ts +28 -0
- package/src/constants/swappers.ts +48 -0
- package/src/constants/viemChains.ts +69 -0
- package/src/contexts/SwapWalletContext.tsx +25 -0
- package/src/demo/App.css +458 -0
- package/src/demo/App.tsx +481 -0
- package/src/demo/main.tsx +25 -0
- package/src/hooks/useAssets.ts +180 -0
- package/src/hooks/useBalances.ts +822 -0
- package/src/hooks/useBitcoinSigning.ts +276 -0
- package/src/hooks/useMarketData.ts +169 -0
- package/src/hooks/useSolanaSigning.ts +275 -0
- package/src/hooks/useStatusPolling.ts +137 -0
- package/src/hooks/useSwapApproval.ts +106 -0
- package/src/hooks/useSwapDisplayValues.ts +157 -0
- package/src/hooks/useSwapExecution.ts +199 -0
- package/src/hooks/useSwapHandlers.ts +119 -0
- package/src/hooks/useSwapQuote.ts +71 -0
- package/src/hooks/useSwapQuoting.ts +102 -0
- package/src/hooks/useSwapRates.ts +61 -0
- package/src/index.ts +43 -0
- package/src/machines/SwapMachineContext.ts +5 -0
- package/src/machines/__tests__/guards.test.ts +228 -0
- package/src/machines/__tests__/setup.test.ts +7 -0
- package/src/machines/__tests__/swapMachine.test.ts +544 -0
- package/src/machines/__tests__/types.test.ts +124 -0
- package/src/machines/guards.ts +33 -0
- package/src/machines/swapMachine.ts +288 -0
- package/src/machines/types.ts +54 -0
- package/src/services/transactionStatus.ts +322 -0
- package/src/types/index.ts +361 -0
- package/src/utils/addressValidation.ts +201 -0
- package/src/utils/redirect.ts +45 -0
- package/src/vite-env.d.ts +10 -0
- package/tsconfig.json +23 -0
- package/tsconfig.node.json +10 -0
- package/vite.config.ts +101 -0
- package/vitest.config.ts +18 -0
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import{O as y,I as $,J as l,F as S,G as x,af as m,R as p,k as f,S as h,a4 as u,U as _,ag as E,ah as R}from"./index-5jd8RPN9.js";import{W as C}from"./index-CSW0Gt5y.js";import{ReownAuthentication as v}from"./features-B6JAPAFb.js";const I=y`
|
|
2
|
+
.email-sufixes {
|
|
3
|
+
display: flex;
|
|
4
|
+
flex-direction: row;
|
|
5
|
+
gap: var(--wui-spacing-3xs);
|
|
6
|
+
overflow-x: auto;
|
|
7
|
+
max-width: 100%;
|
|
8
|
+
margin-top: var(--wui-spacing-s);
|
|
9
|
+
margin-bottom: calc(-1 * var(--wui-spacing-m));
|
|
10
|
+
padding-bottom: var(--wui-spacing-m);
|
|
11
|
+
margin-left: calc(-1 * var(--wui-spacing-m));
|
|
12
|
+
margin-right: calc(-1 * var(--wui-spacing-m));
|
|
13
|
+
padding-left: var(--wui-spacing-m);
|
|
14
|
+
padding-right: var(--wui-spacing-m);
|
|
15
|
+
|
|
16
|
+
&::-webkit-scrollbar {
|
|
17
|
+
display: none;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
`;var O=function(o,t,i,a){var n=arguments.length,e=n<3?t:a===null?a=Object.getOwnPropertyDescriptor(t,i):a,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")e=Reflect.decorate(o,t,i,a);else for(var s=o.length-1;s>=0;s--)(r=o[s])&&(e=(n<3?r(e):n>3?r(t,i,e):r(t,i))||e);return n>3&&e&&Object.defineProperty(t,i,e),e};const D=["@gmail.com","@outlook.com","@yahoo.com","@hotmail.com","@aol.com","@icloud.com","@zoho.com"];let g=class extends ${constructor(){super(...arguments),this.email=""}render(){const t=D.filter(this.filter.bind(this)).map(this.item.bind(this));return t.length===0?null:l`<div class="email-sufixes">${t}</div>`}filter(t){if(!this.email)return!1;const i=this.email.split("@");if(i.length<2)return!0;const a=i.pop();return t.includes(a)&&t!==`@${a}`}item(t){return l`<wui-button variant="neutral" size="sm" @click=${()=>{const a=this.email.split("@");a.length>1&&a.pop();const n=a[0]+t;this.dispatchEvent(new CustomEvent("change",{detail:n,bubbles:!0,composed:!0}))}}
|
|
21
|
+
>${t}</wui-button
|
|
22
|
+
>`}};g.styles=[I];O([S()],g.prototype,"email",void 0);g=O([x("w3m-email-suffixes-widget")],g);const j=y`
|
|
23
|
+
.recent-emails {
|
|
24
|
+
display: flex;
|
|
25
|
+
flex-direction: column;
|
|
26
|
+
padding: var(--wui-spacing-s) 0;
|
|
27
|
+
border-top: 1px solid var(--wui-color-gray-glass-005);
|
|
28
|
+
border-bottom: 1px solid var(--wui-color-gray-glass-005);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.recent-emails-heading {
|
|
32
|
+
margin-bottom: var(--wui-spacing-s);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.recent-emails-list-item {
|
|
36
|
+
--wui-color-gray-glass-002: transparent;
|
|
37
|
+
}
|
|
38
|
+
`;var W=function(o,t,i,a){var n=arguments.length,e=n<3?t:a===null?a=Object.getOwnPropertyDescriptor(t,i):a,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")e=Reflect.decorate(o,t,i,a);else for(var s=o.length-1;s>=0;s--)(r=o[s])&&(e=(n<3?r(e):n>3?r(t,i,e):r(t,i))||e);return n>3&&e&&Object.defineProperty(t,i,e),e};let w=class extends ${constructor(){super(...arguments),this.emails=[]}render(){return this.emails.length===0?null:l`<div class="recent-emails">
|
|
39
|
+
<wui-text variant="micro-600" color="fg-200" class="recent-emails-heading"
|
|
40
|
+
>Recently used emails</wui-text
|
|
41
|
+
>
|
|
42
|
+
${this.emails.map(this.item.bind(this))}
|
|
43
|
+
</div>`}item(t){return l`<wui-list-item
|
|
44
|
+
@click=${()=>{this.dispatchEvent(new CustomEvent("select",{detail:t,bubbles:!0,composed:!0}))}}
|
|
45
|
+
?chevron=${!0}
|
|
46
|
+
icon="mail"
|
|
47
|
+
iconVariant="overlay"
|
|
48
|
+
class="recent-emails-list-item"
|
|
49
|
+
>
|
|
50
|
+
<wui-text variant="paragraph-500" color="fg-100">${t}</wui-text>
|
|
51
|
+
</wui-list-item>`}};w.styles=[j];W([S()],w.prototype,"emails",void 0);w=W([x("w3m-recent-emails-widget")],w);var A=function(o,t,i,a){var n=arguments.length,e=n<3?t:a===null?a=Object.getOwnPropertyDescriptor(t,i):a,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")e=Reflect.decorate(o,t,i,a);else for(var s=o.length-1;s>=0;s--)(r=o[s])&&(e=(n<3?r(e):n>3?r(t,i,e):r(t,i))||e);return n>3&&e&&Object.defineProperty(t,i,e),e};let b=class extends C{constructor(){super(...arguments),this.siwx=m.state.siwx,this.onOtpSubmit=async t=>{await this.siwx.confirmEmailOtp({code:t}),p.replace("SIWXSignMessage")},this.onOtpResend=async t=>{const i=f.getAccountData();if(!(i!=null&&i.caipAddress))throw new Error("No account data found");await this.siwx.requestEmailOtp({email:t,account:i.caipAddress})}}connectedCallback(){(!this.siwx||!(this.siwx instanceof v))&&h.showError("ReownAuthentication is not initialized."),super.connectedCallback()}shouldSubmitOnOtpChange(){return this.otp.length===C.OTP_LENGTH}};A([u()],b.prototype,"siwx",void 0);b=A([x("w3m-data-capture-otp-confirm-view")],b);const k=y`
|
|
52
|
+
.hero {
|
|
53
|
+
display: flex;
|
|
54
|
+
flex-direction: column;
|
|
55
|
+
align-items: center;
|
|
56
|
+
justify-content: center;
|
|
57
|
+
gap: var(--wui-spacing-3xs);
|
|
58
|
+
|
|
59
|
+
transition-property: margin, height;
|
|
60
|
+
transition-duration: var(--wui-duration-md);
|
|
61
|
+
transition-timing-function: var(--wui-ease-out-power-1);
|
|
62
|
+
margin-top: -100px;
|
|
63
|
+
|
|
64
|
+
&[data-state='loading'] {
|
|
65
|
+
margin-top: 0px;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
position: relative;
|
|
69
|
+
&:after {
|
|
70
|
+
content: '';
|
|
71
|
+
position: absolute;
|
|
72
|
+
bottom: 0;
|
|
73
|
+
height: 252px;
|
|
74
|
+
width: 360px;
|
|
75
|
+
background: radial-gradient(
|
|
76
|
+
96.11% 53.95% at 50% 51.28%,
|
|
77
|
+
transparent 0%,
|
|
78
|
+
color-mix(in srgb, var(--wui-color-bg-100) 5%, transparent) 49%,
|
|
79
|
+
color-mix(in srgb, var(--wui-color-bg-100) 65%, transparent) 99.43%
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.hero-main-icon {
|
|
85
|
+
width: 176px;
|
|
86
|
+
transition-property: background-color;
|
|
87
|
+
transition-duration: var(--wui-duration-lg);
|
|
88
|
+
transition-timing-function: var(--wui-ease-out-power-1);
|
|
89
|
+
|
|
90
|
+
&[data-state='loading'] {
|
|
91
|
+
width: 56px;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.hero-row {
|
|
96
|
+
display: flex;
|
|
97
|
+
flex-direction: row;
|
|
98
|
+
align-items: center;
|
|
99
|
+
justify-content: center;
|
|
100
|
+
gap: var(--wui-spacing-3xs);
|
|
101
|
+
flex-wrap: nowrap;
|
|
102
|
+
min-width: fit-content;
|
|
103
|
+
|
|
104
|
+
&:nth-child(1) {
|
|
105
|
+
transform: translateX(-30px);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
&:nth-child(2) {
|
|
109
|
+
transform: translateX(30px);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
&:nth-child(4) {
|
|
113
|
+
transform: translateX(40px);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
transition-property: height;
|
|
117
|
+
transition-duration: var(--wui-duration-md);
|
|
118
|
+
transition-timing-function: var(--wui-ease-out-power-1);
|
|
119
|
+
height: 68px;
|
|
120
|
+
|
|
121
|
+
&[data-state='loading'] {
|
|
122
|
+
height: 0px;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.hero-row-icon {
|
|
127
|
+
opacity: 0.1;
|
|
128
|
+
transition-property: opacity;
|
|
129
|
+
transition-duration: var(--wui-duration-md);
|
|
130
|
+
transition-timing-function: var(--wui-ease-out-power-1);
|
|
131
|
+
|
|
132
|
+
&[data-state='loading'] {
|
|
133
|
+
opacity: 0;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
`;var d=function(o,t,i,a){var n=arguments.length,e=n<3?t:a===null?a=Object.getOwnPropertyDescriptor(t,i):a,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")e=Reflect.decorate(o,t,i,a);else for(var s=o.length-1;s>=0;s--)(r=o[s])&&(e=(n<3?r(e):n>3?r(t,i,e):r(t,i))||e);return n>3&&e&&Object.defineProperty(t,i,e),e};let c=class extends ${constructor(){var t,i,a,n,e,r,s;super(...arguments),this.email=((t=p.state.data)==null?void 0:t.email)??((a=(i=f.getAccountData())==null?void 0:i.user)==null?void 0:a.email)??"",this.address=((n=f.getAccountData())==null?void 0:n.address)??"",this.loading=!1,this.appName=((e=m.state.metadata)==null?void 0:e.name)??"AppKit",this.siwx=m.state.siwx,this.isRequired=Array.isArray((r=m.state.remoteFeatures)==null?void 0:r.emailCapture)&&((s=m.state.remoteFeatures)==null?void 0:s.emailCapture.includes("required")),this.recentEmails=this.getRecentEmails()}connectedCallback(){(!this.siwx||!(this.siwx instanceof v))&&h.showError("ReownAuthentication is not initialized. Please contact support."),super.connectedCallback()}firstUpdated(){this.loading=!1,this.recentEmails=this.getRecentEmails(),this.email&&this.onSubmit()}render(){return l`
|
|
137
|
+
<wui-flex flexDirection="column" .padding=${["3xs","m","m","m"]} gap="l">
|
|
138
|
+
${this.hero()} ${this.paragraph()} ${this.emailInput()} ${this.recentEmailsWidget()}
|
|
139
|
+
${this.footerActions()}
|
|
140
|
+
</wui-flex>
|
|
141
|
+
`}hero(){return l`
|
|
142
|
+
<div class="hero" data-state=${this.loading?"loading":"default"}>
|
|
143
|
+
${this.heroRow(["id","mail","wallet","x","solana","qrCode"])}
|
|
144
|
+
${this.heroRow(["mail","farcaster","wallet","discord","mobile","qrCode"])}
|
|
145
|
+
<div class="hero-row">
|
|
146
|
+
${this.heroIcon("github")} ${this.heroIcon("bank")}
|
|
147
|
+
<wui-icon-box
|
|
148
|
+
size="xl"
|
|
149
|
+
iconSize="xxl"
|
|
150
|
+
iconColor=${this.loading?"fg-100":"accent-100"}
|
|
151
|
+
backgroundColor=${this.loading?"fg-100":"accent-100"}
|
|
152
|
+
icon=${this.loading?"id":"user"}
|
|
153
|
+
isOpaque
|
|
154
|
+
class="hero-main-icon"
|
|
155
|
+
data-state=${this.loading?"loading":"default"}
|
|
156
|
+
>
|
|
157
|
+
</wui-icon-box>
|
|
158
|
+
${this.heroIcon("id")} ${this.heroIcon("card")}
|
|
159
|
+
</div>
|
|
160
|
+
${this.heroRow(["google","id","github","verify","apple","mobile"])}
|
|
161
|
+
</div>
|
|
162
|
+
`}heroRow(t){return l`
|
|
163
|
+
<div class="hero-row" data-state=${this.loading?"loading":"default"}>
|
|
164
|
+
${t.map(this.heroIcon.bind(this))}
|
|
165
|
+
</div>
|
|
166
|
+
`}heroIcon(t){return l`
|
|
167
|
+
<wui-icon-box
|
|
168
|
+
size="xl"
|
|
169
|
+
iconSize="xxl"
|
|
170
|
+
iconColor="fg-100"
|
|
171
|
+
backgroundColor="fg-100"
|
|
172
|
+
icon=${t}
|
|
173
|
+
data-state=${this.loading?"loading":"default"}
|
|
174
|
+
isOpaque
|
|
175
|
+
class="hero-row-icon"
|
|
176
|
+
>
|
|
177
|
+
</wui-icon-box>
|
|
178
|
+
`}paragraph(){return this.loading?l`
|
|
179
|
+
<wui-text variant="paragraph-400" color="fg-200" align="center"
|
|
180
|
+
>We are verifying your account with email
|
|
181
|
+
<wui-text variant="paragraph-600" color="accent-100">${this.email}</wui-text> and address
|
|
182
|
+
<wui-text variant="paragraph-600" color="fg-100">
|
|
183
|
+
${_.getTruncateString({string:this.address,charsEnd:4,charsStart:4,truncate:"middle"})} </wui-text
|
|
184
|
+
>, please wait a moment.</wui-text
|
|
185
|
+
>
|
|
186
|
+
`:this.isRequired?l`
|
|
187
|
+
<wui-text variant="paragraph-600" color="fg-100" align="center">
|
|
188
|
+
${this.appName} requires your email for authentication.
|
|
189
|
+
</wui-text>
|
|
190
|
+
`:l`
|
|
191
|
+
<wui-flex flexDirection="column" gap="xs" alignItems="center">
|
|
192
|
+
<wui-text variant="paragraph-600" color="fg-100" align="center" size>
|
|
193
|
+
${this.appName} would like to collect your email.
|
|
194
|
+
</wui-text>
|
|
195
|
+
|
|
196
|
+
<wui-text variant="small-400" color="fg-200" align="center">
|
|
197
|
+
Don't worry, it's optional—you can skip this step.
|
|
198
|
+
</wui-text>
|
|
199
|
+
</wui-flex>
|
|
200
|
+
`}emailInput(){if(this.loading)return null;const t=a=>{a.key==="Enter"&&this.onSubmit()},i=a=>{this.email=a.detail};return l`
|
|
201
|
+
<wui-flex flexDirection="column">
|
|
202
|
+
<wui-email-input
|
|
203
|
+
.value=${this.email}
|
|
204
|
+
.disabled=${this.loading}
|
|
205
|
+
@inputChange=${i}
|
|
206
|
+
@keydown=${t}
|
|
207
|
+
></wui-email-input>
|
|
208
|
+
|
|
209
|
+
<w3m-email-suffixes-widget
|
|
210
|
+
.email=${this.email}
|
|
211
|
+
@change=${i}
|
|
212
|
+
></w3m-email-suffixes-widget>
|
|
213
|
+
</wui-flex>
|
|
214
|
+
`}recentEmailsWidget(){if(this.recentEmails.length===0||this.loading)return null;const t=i=>{this.email=i.detail,this.onSubmit()};return l`
|
|
215
|
+
<w3m-recent-emails-widget
|
|
216
|
+
.emails=${this.recentEmails}
|
|
217
|
+
@select=${t}
|
|
218
|
+
></w3m-recent-emails-widget>
|
|
219
|
+
`}footerActions(){return l`
|
|
220
|
+
<wui-flex flexDirection="row" fullWidth gap="s">
|
|
221
|
+
${this.isRequired?null:l`<wui-button
|
|
222
|
+
size="lg"
|
|
223
|
+
variant="neutral"
|
|
224
|
+
fullWidth
|
|
225
|
+
.disabled=${this.loading}
|
|
226
|
+
@click=${this.onSkip.bind(this)}
|
|
227
|
+
>Skip this step</wui-button
|
|
228
|
+
>`}
|
|
229
|
+
|
|
230
|
+
<wui-button
|
|
231
|
+
size="lg"
|
|
232
|
+
variant="main"
|
|
233
|
+
type="submit"
|
|
234
|
+
fullWidth
|
|
235
|
+
.disabled=${!this.email||!this.isValidEmail(this.email)}
|
|
236
|
+
.loading=${this.loading}
|
|
237
|
+
@click=${this.onSubmit.bind(this)}
|
|
238
|
+
>
|
|
239
|
+
Continue
|
|
240
|
+
</wui-button>
|
|
241
|
+
</wui-flex>
|
|
242
|
+
`}async onSubmit(){if(!(this.siwx instanceof v)){h.showError("ReownAuthentication is not initialized. Please contact support.");return}const t=f.getActiveCaipAddress();if(!t)throw new Error("Account is not connected.");if(!this.isValidEmail(this.email)){h.showError("Please provide a valid email.");return}try{this.loading=!0;const i=await this.siwx.requestEmailOtp({email:this.email,account:t});this.pushRecentEmail(this.email),i.uuid===null?p.replace("SIWXSignMessage"):p.replace("DataCaptureOtpConfirm",{email:this.email})}catch{h.showError("Failed to send email OTP"),this.loading=!1}}onSkip(){p.replace("SIWXSignMessage")}getRecentEmails(){const t=E.getItem(R.RECENT_EMAILS);return(t?t.split(","):[]).filter(this.isValidEmail.bind(this)).slice(0,3)}pushRecentEmail(t){const i=this.getRecentEmails(),a=Array.from(new Set([t,...i])).slice(0,3);E.setItem(R.RECENT_EMAILS,a.join(","))}isValidEmail(t){return/^\S+@\S+\.\S+$/u.test(t)}};c.styles=[k];d([u()],c.prototype,"email",void 0);d([u()],c.prototype,"address",void 0);d([u()],c.prototype,"loading",void 0);d([u()],c.prototype,"appName",void 0);d([u()],c.prototype,"siwx",void 0);d([u()],c.prototype,"isRequired",void 0);d([u()],c.prototype,"recentEmails",void 0);c=d([x("w3m-data-capture-view")],c);export{b as W3mDataCaptureOtpConfirmView,c as W3mDataCaptureView,g as W3mEmailSuffixesWidget,w as W3mRecentEmailsWidget};
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import{k as S,C as g,af as p,E as c,as as _,R as s,S as f,n as C,G as d,y as D,I as y,u,J as m,a4 as E,O as $,at as W,au as P,av as N,h as T}from"./index-5jd8RPN9.js";import{W as b}from"./index-CSW0Gt5y.js";var F=function(r,e,t,a){var n=arguments.length,i=n<3?e:a===null?a=Object.getOwnPropertyDescriptor(e,t):a,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,a);else for(var l=r.length-1;l>=0;l--)(o=r[l])&&(i=(n<3?o(i):n>3?o(e,t,i):o(e,t))||i);return n>3&&i&&Object.defineProperty(e,t,i),i};let I=class extends b{constructor(){super(...arguments),this.onOtpSubmit=async e=>{var t,a;try{if(this.authConnector){const n=S.state.activeChain,i=g.getConnections(n),o=(t=p.state.remoteFeatures)==null?void 0:t.multiWallet,l=i.length>0;if(await this.authConnector.provider.connectOtp({otp:e}),c.sendEvent({type:"track",event:"EMAIL_VERIFICATION_CODE_PASS"}),n)await g.connectExternal(this.authConnector,n);else throw new Error("Active chain is not set on ChainController");if((a=p.state.remoteFeatures)!=null&&a.emailCapture)return;if(p.state.siwx){_.close();return}if(l&&o){s.replace("ProfileWallets"),f.showSuccess("New Wallet Added");return}_.close()}}catch(n){throw c.sendEvent({type:"track",event:"EMAIL_VERIFICATION_CODE_FAIL",properties:{message:C.parseError(n)}}),n}},this.onOtpResend=async e=>{this.authConnector&&(await this.authConnector.provider.connectEmail({email:e}),c.sendEvent({type:"track",event:"EMAIL_VERIFICATION_CODE_SENT"}))}}};I=F([d("w3m-email-verify-otp-view")],I);const U=D`
|
|
2
|
+
wui-icon-box {
|
|
3
|
+
height: ${({spacing:r})=>r[16]};
|
|
4
|
+
width: ${({spacing:r})=>r[16]};
|
|
5
|
+
}
|
|
6
|
+
`;var x=function(r,e,t,a){var n=arguments.length,i=n<3?e:a===null?a=Object.getOwnPropertyDescriptor(e,t):a,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,a);else for(var l=r.length-1;l>=0;l--)(o=r[l])&&(i=(n<3?o(i):n>3?o(e,t,i):o(e,t))||i);return n>3&&i&&Object.defineProperty(e,t,i),i};let w=class extends y{constructor(){var e;super(),this.email=(e=s.state.data)==null?void 0:e.email,this.authConnector=u.getAuthConnector(),this.loading=!1,this.listenForDeviceApproval()}render(){if(!this.email)throw new Error("w3m-email-verify-device-view: No email provided");if(!this.authConnector)throw new Error("w3m-email-verify-device-view: No auth connector provided");return m`
|
|
7
|
+
<wui-flex
|
|
8
|
+
flexDirection="column"
|
|
9
|
+
alignItems="center"
|
|
10
|
+
.padding=${["6","3","6","3"]}
|
|
11
|
+
gap="4"
|
|
12
|
+
>
|
|
13
|
+
<wui-icon-box size="xl" color="accent-primary" icon="sealCheck"></wui-icon-box>
|
|
14
|
+
|
|
15
|
+
<wui-flex flexDirection="column" alignItems="center" gap="3">
|
|
16
|
+
<wui-flex flexDirection="column" alignItems="center">
|
|
17
|
+
<wui-text variant="md-regular" color="primary">
|
|
18
|
+
Approve the login link we sent to
|
|
19
|
+
</wui-text>
|
|
20
|
+
<wui-text variant="md-regular" color="primary"><b>${this.email}</b></wui-text>
|
|
21
|
+
</wui-flex>
|
|
22
|
+
|
|
23
|
+
<wui-text variant="sm-regular" color="secondary" align="center">
|
|
24
|
+
The code expires in 20 minutes
|
|
25
|
+
</wui-text>
|
|
26
|
+
|
|
27
|
+
<wui-flex alignItems="center" id="w3m-resend-section" gap="2">
|
|
28
|
+
<wui-text variant="sm-regular" color="primary" align="center">
|
|
29
|
+
Didn't receive it?
|
|
30
|
+
</wui-text>
|
|
31
|
+
<wui-link @click=${this.onResendCode.bind(this)} .disabled=${this.loading}>
|
|
32
|
+
Resend email
|
|
33
|
+
</wui-link>
|
|
34
|
+
</wui-flex>
|
|
35
|
+
</wui-flex>
|
|
36
|
+
</wui-flex>
|
|
37
|
+
`}async listenForDeviceApproval(){if(this.authConnector)try{await this.authConnector.provider.connectDevice(),c.sendEvent({type:"track",event:"DEVICE_REGISTERED_FOR_EMAIL"}),c.sendEvent({type:"track",event:"EMAIL_VERIFICATION_CODE_SENT"}),s.replace("EmailVerifyOtp",{email:this.email})}catch{s.goBack()}}async onResendCode(){try{if(!this.loading){if(!this.authConnector||!this.email)throw new Error("w3m-email-login-widget: Unable to resend email");this.loading=!0,await this.authConnector.provider.connectEmail({email:this.email}),this.listenForDeviceApproval(),f.showSuccess("Code email resent")}}catch(e){f.showError(e)}finally{this.loading=!1}}};w.styles=U;x([E()],w.prototype,"loading",void 0);w=x([d("w3m-email-verify-device-view")],w);const j=$`
|
|
38
|
+
wui-email-input {
|
|
39
|
+
width: 100%;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
form {
|
|
43
|
+
width: 100%;
|
|
44
|
+
display: block;
|
|
45
|
+
position: relative;
|
|
46
|
+
}
|
|
47
|
+
`;var O=function(r,e,t,a){var n=arguments.length,i=n<3?e:a===null?a=Object.getOwnPropertyDescriptor(e,t):a,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,a);else for(var l=r.length-1;l>=0;l--)(o=r[l])&&(i=(n<3?o(i):n>3?o(e,t,i):o(e,t))||i);return n>3&&i&&Object.defineProperty(e,t,i),i};let h=class extends y{constructor(){var e,t;super(...arguments),this.formRef=W(),this.initialEmail=((e=s.state.data)==null?void 0:e.email)??"",this.redirectView=(t=s.state.data)==null?void 0:t.redirectView,this.email="",this.loading=!1}firstUpdated(){var e;(e=this.formRef.value)==null||e.addEventListener("keydown",t=>{t.key==="Enter"&&this.onSubmitEmail(t)})}render(){return m`
|
|
48
|
+
<wui-flex flexDirection="column" padding="4" gap="4">
|
|
49
|
+
<form ${P(this.formRef)} @submit=${this.onSubmitEmail.bind(this)}>
|
|
50
|
+
<wui-email-input
|
|
51
|
+
value=${this.initialEmail}
|
|
52
|
+
.disabled=${this.loading}
|
|
53
|
+
@inputChange=${this.onEmailInputChange.bind(this)}
|
|
54
|
+
>
|
|
55
|
+
</wui-email-input>
|
|
56
|
+
<input type="submit" hidden />
|
|
57
|
+
</form>
|
|
58
|
+
${this.buttonsTemplate()}
|
|
59
|
+
</wui-flex>
|
|
60
|
+
`}onEmailInputChange(e){this.email=e.detail}async onSubmitEmail(e){try{if(this.loading)return;this.loading=!0,e.preventDefault();const t=u.getAuthConnector();if(!t)throw new Error("w3m-update-email-wallet: Auth connector not found");const a=await t.provider.updateEmail({email:this.email});c.sendEvent({type:"track",event:"EMAIL_EDIT"}),a.action==="VERIFY_SECONDARY_OTP"?s.push("UpdateEmailSecondaryOtp",{email:this.initialEmail,newEmail:this.email,redirectView:this.redirectView}):s.push("UpdateEmailPrimaryOtp",{email:this.initialEmail,newEmail:this.email,redirectView:this.redirectView})}catch(t){f.showError(t),this.loading=!1}}buttonsTemplate(){const e=!this.loading&&this.email.length>3&&this.email!==this.initialEmail;return this.redirectView?m`
|
|
61
|
+
<wui-flex gap="3">
|
|
62
|
+
<wui-button size="md" variant="neutral" fullWidth @click=${s.goBack}>
|
|
63
|
+
Cancel
|
|
64
|
+
</wui-button>
|
|
65
|
+
|
|
66
|
+
<wui-button
|
|
67
|
+
size="md"
|
|
68
|
+
variant="accent-primary"
|
|
69
|
+
fullWidth
|
|
70
|
+
@click=${this.onSubmitEmail.bind(this)}
|
|
71
|
+
.disabled=${!e}
|
|
72
|
+
.loading=${this.loading}
|
|
73
|
+
>
|
|
74
|
+
Save
|
|
75
|
+
</wui-button>
|
|
76
|
+
</wui-flex>
|
|
77
|
+
`:m`
|
|
78
|
+
<wui-button
|
|
79
|
+
size="md"
|
|
80
|
+
variant="accent-primary"
|
|
81
|
+
fullWidth
|
|
82
|
+
@click=${this.onSubmitEmail.bind(this)}
|
|
83
|
+
.disabled=${!e}
|
|
84
|
+
.loading=${this.loading}
|
|
85
|
+
>
|
|
86
|
+
Save
|
|
87
|
+
</wui-button>
|
|
88
|
+
`}};h.styles=j;O([E()],h.prototype,"email",void 0);O([E()],h.prototype,"loading",void 0);h=O([d("w3m-update-email-wallet-view")],h);var L=function(r,e,t,a){var n=arguments.length,i=n<3?e:a===null?a=Object.getOwnPropertyDescriptor(e,t):a,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,a);else for(var l=r.length-1;l>=0;l--)(o=r[l])&&(i=(n<3?o(i):n>3?o(e,t,i):o(e,t))||i);return n>3&&i&&Object.defineProperty(e,t,i),i};let A=class extends b{constructor(){var e;super(),this.email=(e=s.state.data)==null?void 0:e.email,this.onOtpSubmit=async t=>{try{this.authConnector&&(await this.authConnector.provider.updateEmailPrimaryOtp({otp:t}),c.sendEvent({type:"track",event:"EMAIL_VERIFICATION_CODE_PASS"}),s.replace("UpdateEmailSecondaryOtp",s.state.data))}catch(a){throw c.sendEvent({type:"track",event:"EMAIL_VERIFICATION_CODE_FAIL",properties:{message:C.parseError(a)}}),a}},this.onStartOver=()=>{s.replace("UpdateEmailWallet",s.state.data)}}};A=L([d("w3m-update-email-primary-otp-view")],A);var M=function(r,e,t,a){var n=arguments.length,i=n<3?e:a===null?a=Object.getOwnPropertyDescriptor(e,t):a,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,a);else for(var l=r.length-1;l>=0;l--)(o=r[l])&&(i=(n<3?o(i):n>3?o(e,t,i):o(e,t))||i);return n>3&&i&&Object.defineProperty(e,t,i),i};let R=class extends b{constructor(){var e,t;super(),this.email=(e=s.state.data)==null?void 0:e.newEmail,this.redirectView=(t=s.state.data)==null?void 0:t.redirectView,this.onOtpSubmit=async a=>{try{this.authConnector&&(await this.authConnector.provider.updateEmailSecondaryOtp({otp:a}),c.sendEvent({type:"track",event:"EMAIL_VERIFICATION_CODE_PASS"}),this.redirectView&&s.reset(this.redirectView))}catch(n){throw c.sendEvent({type:"track",event:"EMAIL_VERIFICATION_CODE_FAIL",properties:{message:C.parseError(n)}}),n}},this.onStartOver=()=>{s.replace("UpdateEmailWallet",s.state.data)}}};R=M([d("w3m-update-email-secondary-otp-view")],R);var V=function(r,e,t,a){var n=arguments.length,i=n<3?e:a===null?a=Object.getOwnPropertyDescriptor(e,t):a,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,a);else for(var l=r.length-1;l>=0;l--)(o=r[l])&&(i=(n<3?o(i):n>3?o(e,t,i):o(e,t))||i);return n>3&&i&&Object.defineProperty(e,t,i),i};let v=class extends y{constructor(){var e;super(),this.authConnector=u.getAuthConnector(),this.isEmailEnabled=(e=p.state.remoteFeatures)==null?void 0:e.email,this.isAuthEnabled=this.checkIfAuthEnabled(u.state.connectors),this.connectors=u.state.connectors,u.subscribeKey("connectors",t=>{this.connectors=t,this.isAuthEnabled=this.checkIfAuthEnabled(this.connectors)})}render(){if(!this.isEmailEnabled)throw new Error("w3m-email-login-view: Email is not enabled");if(!this.isAuthEnabled)throw new Error("w3m-email-login-view: No auth connector provided");return m`<wui-flex flexDirection="column" .padding=${["1","3","3","3"]} gap="4">
|
|
89
|
+
<w3m-email-login-widget></w3m-email-login-widget>
|
|
90
|
+
</wui-flex> `}checkIfAuthEnabled(e){const t=e.filter(n=>n.type===N.CONNECTOR_TYPE_AUTH).map(n=>n.chain);return T.AUTH_CONNECTOR_SUPPORTED_CHAINS.some(n=>t.includes(n))}};V([E()],v.prototype,"connectors",void 0);v=V([d("w3m-email-login-view")],v);export{v as W3mEmailLoginView,b as W3mEmailOtpWidget,w as W3mEmailVerifyDeviceView,I as W3mEmailVerifyOtpView,A as W3mUpdateEmailPrimaryOtpView,R as W3mUpdateEmailSecondaryOtpView,h as W3mUpdateEmailWalletView};
|