@safe-stars/components
Version:
React component library for buying Telegram Stars in Telegram Mini Apps via Safe Stars.
1 lines • 58.2 kB
Source Map (JSON)
{"version":3,"file":"email-C79xtX7E.cjs","sources":["../node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-input-numeric/styles.js","../node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-input-numeric/index.js","../node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-otp/styles.js","../node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-otp/index.js","../node_modules/@reown/appkit-scaffold-ui/dist/esm/src/utils/w3m-email-otp-widget/styles.js","../node_modules/@reown/appkit-scaffold-ui/dist/esm/src/utils/w3m-email-otp-widget/index.js","../node_modules/@reown/appkit-scaffold-ui/dist/esm/src/views/w3m-email-verify-otp-view/index.js","../node_modules/@reown/appkit-scaffold-ui/dist/esm/src/views/w3m-email-verify-device-view/styles.js","../node_modules/@reown/appkit-scaffold-ui/dist/esm/src/views/w3m-email-verify-device-view/index.js","../node_modules/@reown/appkit-scaffold-ui/dist/esm/src/views/w3m-update-email-wallet-view/styles.js","../node_modules/@reown/appkit-scaffold-ui/dist/esm/src/views/w3m-update-email-wallet-view/index.js","../node_modules/@reown/appkit-scaffold-ui/dist/esm/src/views/w3m-update-email-primary-otp-view/index.js","../node_modules/@reown/appkit-scaffold-ui/dist/esm/src/views/w3m-update-email-secondary-otp-view/index.js","../node_modules/@reown/appkit-scaffold-ui/dist/esm/src/views/w3m-email-login-view/index.js"],"sourcesContent":["import { css } from 'lit';\nexport default css `\n :host {\n position: relative;\n display: inline-block;\n }\n\n input {\n width: 50px;\n height: 50px;\n background: var(--wui-color-gray-glass-010);\n border-radius: var(--wui-border-radius-xs);\n border: 1px solid var(--wui-color-gray-glass-005);\n font-family: var(--wui-font-family);\n font-size: var(--wui-font-size-large);\n font-weight: var(--wui-font-weight-regular);\n letter-spacing: var(--wui-letter-spacing-large);\n text-align: center;\n color: var(--wui-color-fg-100);\n caret-color: var(--wui-color-accent-100);\n transition:\n background-color var(--wui-ease-inout-power-1) var(--wui-duration-md),\n border-color var(--wui-ease-inout-power-1) var(--wui-duration-md),\n box-shadow var(--wui-ease-inout-power-1) var(--wui-duration-md);\n will-change: background-color, border-color, box-shadow;\n box-sizing: border-box;\n -webkit-appearance: none;\n -moz-appearance: textfield;\n padding: 0px;\n }\n\n input::-webkit-outer-spin-button,\n input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n\n input[type='number'] {\n -moz-appearance: textfield;\n }\n\n input:disabled {\n cursor: not-allowed;\n border: 1px solid var(--wui-color-gray-glass-010);\n background: var(--wui-color-gray-glass-005);\n }\n\n input:focus:enabled {\n background-color: var(--wui-color-gray-glass-015);\n border: 1px solid var(--wui-color-accent-100);\n -webkit-box-shadow: 0px 0px 0px 4px var(--wui-box-shadow-blue);\n -moz-box-shadow: 0px 0px 0px 4px var(--wui-box-shadow-blue);\n box-shadow: 0px 0px 0px 4px var(--wui-box-shadow-blue);\n }\n\n @media (hover: hover) and (pointer: fine) {\n input:hover:enabled {\n background-color: var(--wui-color-gray-glass-015);\n }\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { elementStyles, resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiInputNumeric = class WuiInputNumeric extends LitElement {\n constructor() {\n super(...arguments);\n this.disabled = false;\n this.value = '';\n }\n render() {\n return html `<input\n type=\"number\"\n maxlength=\"1\"\n inputmode=\"numeric\"\n autofocus\n ?disabled=${this.disabled}\n value=${this.value}\n /> `;\n }\n};\nWuiInputNumeric.styles = [resetStyles, elementStyles, styles];\n__decorate([\n property({ type: Boolean })\n], WuiInputNumeric.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: String })\n], WuiInputNumeric.prototype, \"value\", void 0);\nWuiInputNumeric = __decorate([\n customElement('wui-input-numeric')\n], WuiInputNumeric);\nexport { WuiInputNumeric };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n position: relative;\n display: block;\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport '../../layout/wui-flex/index.js';\nimport { resetStyles } from '../../utils/ThemeUtil.js';\nimport { UiHelperUtil } from '../../utils/UiHelperUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport '../wui-input-numeric/index.js';\nimport { WuiInputNumeric } from '../wui-input-numeric/index.js';\nimport styles from './styles.js';\nlet WuiOtp = class WuiOtp extends LitElement {\n constructor() {\n super(...arguments);\n this.length = 6;\n this.otp = '';\n this.values = Array.from({ length: this.length }).map(() => '');\n this.numerics = [];\n this.shouldInputBeEnabled = (index) => {\n const previousInputs = this.values.slice(0, index);\n return previousInputs.every(input => input !== '');\n };\n this.handleKeyDown = (e, index) => {\n const inputElement = e.target;\n const input = this.getInputElement(inputElement);\n const keyArr = ['ArrowLeft', 'ArrowRight', 'Shift', 'Delete'];\n if (!input) {\n return;\n }\n if (keyArr.includes(e.key)) {\n e.preventDefault();\n }\n const currentCaretPos = input.selectionStart;\n switch (e.key) {\n case 'ArrowLeft':\n if (currentCaretPos) {\n input.setSelectionRange(currentCaretPos + 1, currentCaretPos + 1);\n }\n this.focusInputField('prev', index);\n break;\n case 'ArrowRight':\n this.focusInputField('next', index);\n break;\n case 'Shift':\n this.focusInputField('next', index);\n break;\n case 'Delete':\n if (input.value === '') {\n this.focusInputField('prev', index);\n }\n else {\n this.updateInput(input, index, '');\n }\n break;\n case 'Backspace':\n if (input.value === '') {\n this.focusInputField('prev', index);\n }\n else {\n this.updateInput(input, index, '');\n }\n break;\n default:\n }\n };\n this.focusInputField = (dir, index) => {\n if (dir === 'next') {\n const nextIndex = index + 1;\n if (!this.shouldInputBeEnabled(nextIndex)) {\n return;\n }\n const numeric = this.numerics[nextIndex < this.length ? nextIndex : index];\n const input = numeric ? this.getInputElement(numeric) : undefined;\n if (input) {\n input.disabled = false;\n input.focus();\n }\n }\n if (dir === 'prev') {\n const nextIndex = index - 1;\n const numeric = this.numerics[nextIndex > -1 ? nextIndex : index];\n const input = numeric ? this.getInputElement(numeric) : undefined;\n if (input) {\n input.focus();\n }\n }\n };\n }\n firstUpdated() {\n if (this.otp) {\n this.values = this.otp.split('');\n }\n const numericElements = this.shadowRoot?.querySelectorAll('wui-input-numeric');\n if (numericElements) {\n this.numerics = Array.from(numericElements);\n }\n this.numerics[0]?.focus();\n }\n render() {\n return html `\n <wui-flex gap=\"xxs\" data-testid=\"wui-otp-input\">\n ${Array.from({ length: this.length }).map((_, index) => html `\n <wui-input-numeric\n @input=${(e) => this.handleInput(e, index)}\n @click=${(e) => this.selectInput(e)}\n @keydown=${(e) => this.handleKeyDown(e, index)}\n .disabled=${!this.shouldInputBeEnabled(index)}\n .value=${this.values[index] || ''}\n >\n </wui-input-numeric>\n `)}\n </wui-flex>\n `;\n }\n updateInput(element, index, value) {\n const numeric = this.numerics[index];\n const input = element || (numeric ? this.getInputElement(numeric) : undefined);\n if (input) {\n input.value = value;\n this.values = this.values.map((val, i) => (i === index ? value : val));\n }\n }\n selectInput(e) {\n const targetElement = e.target;\n if (targetElement) {\n const inputElement = this.getInputElement(targetElement);\n inputElement?.select();\n }\n }\n handleInput(e, index) {\n const inputElement = e.target;\n const input = this.getInputElement(inputElement);\n if (input) {\n const inputValue = input.value;\n if (e.inputType === 'insertFromPaste') {\n this.handlePaste(input, inputValue, index);\n }\n else {\n const isValid = UiHelperUtil.isNumber(inputValue);\n if (isValid && e.data) {\n this.updateInput(input, index, e.data);\n this.focusInputField('next', index);\n }\n else {\n this.updateInput(input, index, '');\n }\n }\n }\n this.dispatchInputChangeEvent();\n }\n handlePaste(input, inputValue, index) {\n const value = inputValue[0];\n const isValid = value && UiHelperUtil.isNumber(value);\n if (isValid) {\n this.updateInput(input, index, value);\n const inputString = inputValue.substring(1);\n if (index + 1 < this.length && inputString.length) {\n const nextNumeric = this.numerics[index + 1];\n const nextInput = nextNumeric ? this.getInputElement(nextNumeric) : undefined;\n if (nextInput) {\n this.handlePaste(nextInput, inputString, index + 1);\n }\n }\n else {\n this.focusInputField('next', index);\n }\n }\n else {\n this.updateInput(input, index, '');\n }\n }\n getInputElement(el) {\n if (el.shadowRoot?.querySelector('input')) {\n return el.shadowRoot.querySelector('input');\n }\n return null;\n }\n dispatchInputChangeEvent() {\n const value = this.values.join('');\n this.dispatchEvent(new CustomEvent('inputChange', {\n detail: value,\n bubbles: true,\n composed: true\n }));\n }\n};\nWuiOtp.styles = [resetStyles, styles];\n__decorate([\n property({ type: Number })\n], WuiOtp.prototype, \"length\", void 0);\n__decorate([\n property({ type: String })\n], WuiOtp.prototype, \"otp\", void 0);\n__decorate([\n state()\n], WuiOtp.prototype, \"values\", void 0);\nWuiOtp = __decorate([\n customElement('wui-otp')\n], WuiOtp);\nexport { WuiOtp };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n wui-loading-spinner {\n margin: 9px auto;\n }\n\n .email-display,\n .email-display wui-text {\n max-width: 100%;\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { state } from 'lit/decorators.js';\nimport { ConnectorController, CoreHelperUtil, RouterController, SnackController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-flex';\nimport '@reown/appkit-ui/wui-link';\nimport '@reown/appkit-ui/wui-loading-spinner';\nimport '@reown/appkit-ui/wui-otp';\nimport '@reown/appkit-ui/wui-text';\nimport { W3mFrameHelpers } from '@reown/appkit-wallet';\nimport styles from './styles.js';\nconst OTP_LENGTH = 6;\nlet W3mEmailOtpWidget = class W3mEmailOtpWidget extends LitElement {\n firstUpdated() {\n this.startOTPTimeout();\n }\n disconnectedCallback() {\n clearTimeout(this.OTPTimeout);\n }\n constructor() {\n super();\n this.loading = false;\n this.timeoutTimeLeft = W3mFrameHelpers.getTimeToNextEmailLogin();\n this.error = '';\n this.otp = '';\n this.email = RouterController.state.data?.email;\n this.authConnector = ConnectorController.getAuthConnector();\n }\n render() {\n if (!this.email) {\n throw new Error('w3m-email-otp-widget: No email provided');\n }\n const isResendDisabled = Boolean(this.timeoutTimeLeft);\n const footerLabels = this.getFooterLabels(isResendDisabled);\n return html `\n <wui-flex\n flexDirection=\"column\"\n alignItems=\"center\"\n .padding=${['l', '0', 'l', '0']}\n gap=\"l\"\n >\n <wui-flex\n class=\"email-display\"\n flexDirection=\"column\"\n alignItems=\"center\"\n .padding=${['0', 'xl', '0', 'xl']}\n >\n <wui-text variant=\"paragraph-400\" color=\"fg-100\" align=\"center\">\n Enter the code we sent to\n </wui-text>\n <wui-text variant=\"paragraph-500\" color=\"fg-100\" lineClamp=\"1\" align=\"center\">\n ${this.email}\n </wui-text>\n </wui-flex>\n\n <wui-text variant=\"small-400\" color=\"fg-200\">The code expires in 20 minutes</wui-text>\n\n ${this.loading\n ? html `<wui-loading-spinner size=\"xl\" color=\"accent-100\"></wui-loading-spinner>`\n : html ` <wui-flex flexDirection=\"column\" alignItems=\"center\" gap=\"xs\">\n <wui-otp\n dissabled\n length=\"6\"\n @inputChange=${this.onOtpInputChange.bind(this)}\n .otp=${this.otp}\n ></wui-otp>\n ${this.error\n ? html `\n <wui-text variant=\"small-400\" align=\"center\" color=\"error-100\">\n ${this.error}. Try Again\n </wui-text>\n `\n : null}\n </wui-flex>`}\n\n <wui-flex alignItems=\"center\" gap=\"xs\">\n <wui-text variant=\"small-400\" color=\"fg-200\">${footerLabels.title}</wui-text>\n <wui-link @click=${this.onResendCode.bind(this)} .disabled=${isResendDisabled}>\n ${footerLabels.action}\n </wui-link>\n </wui-flex>\n </wui-flex>\n `;\n }\n startOTPTimeout() {\n this.timeoutTimeLeft = W3mFrameHelpers.getTimeToNextEmailLogin();\n this.OTPTimeout = setInterval(() => {\n if (this.timeoutTimeLeft > 0) {\n this.timeoutTimeLeft = W3mFrameHelpers.getTimeToNextEmailLogin();\n }\n else {\n clearInterval(this.OTPTimeout);\n }\n }, 1000);\n }\n async onOtpInputChange(event) {\n try {\n if (!this.loading) {\n this.otp = event.detail;\n if (this.authConnector && this.otp.length === OTP_LENGTH) {\n this.loading = true;\n await this.onOtpSubmit?.(this.otp);\n }\n }\n }\n catch (error) {\n this.error = CoreHelperUtil.parseError(error);\n this.loading = false;\n }\n }\n async onResendCode() {\n try {\n if (this.onOtpResend) {\n if (!this.loading && !this.timeoutTimeLeft) {\n this.error = '';\n this.otp = '';\n const authConnector = ConnectorController.getAuthConnector();\n if (!authConnector || !this.email) {\n throw new Error('w3m-email-otp-widget: Unable to resend email');\n }\n this.loading = true;\n await this.onOtpResend(this.email);\n this.startOTPTimeout();\n SnackController.showSuccess('Code email resent');\n }\n }\n else if (this.onStartOver) {\n this.onStartOver();\n }\n }\n catch (error) {\n SnackController.showError(error);\n }\n finally {\n this.loading = false;\n }\n }\n getFooterLabels(isResendDisabled) {\n if (this.onStartOver) {\n return {\n title: 'Something wrong?',\n action: `Try again ${isResendDisabled ? `in ${this.timeoutTimeLeft}s` : ''}`\n };\n }\n return {\n title: `Didn't receive it?`,\n action: `Resend ${isResendDisabled ? `in ${this.timeoutTimeLeft}s` : 'Code'}`\n };\n }\n};\nW3mEmailOtpWidget.styles = styles;\n__decorate([\n state()\n], W3mEmailOtpWidget.prototype, \"loading\", void 0);\n__decorate([\n state()\n], W3mEmailOtpWidget.prototype, \"timeoutTimeLeft\", void 0);\n__decorate([\n state()\n], W3mEmailOtpWidget.prototype, \"error\", void 0);\nW3mEmailOtpWidget = __decorate([\n customElement('w3m-email-otp-widget')\n], W3mEmailOtpWidget);\nexport { W3mEmailOtpWidget };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChainController, ConnectionController, CoreHelperUtil, EventsController, ModalController, OptionsController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport { W3mEmailOtpWidget } from '../../utils/w3m-email-otp-widget/index.js';\nlet W3mEmailVerifyOtpView = class W3mEmailVerifyOtpView extends W3mEmailOtpWidget {\n constructor() {\n super(...arguments);\n this.onOtpSubmit = async (otp) => {\n try {\n if (this.authConnector) {\n await this.authConnector.provider.connectOtp({ otp });\n EventsController.sendEvent({ type: 'track', event: 'EMAIL_VERIFICATION_CODE_PASS' });\n if (ChainController.state.activeChain) {\n await ConnectionController.connectExternal(this.authConnector, ChainController.state.activeChain);\n }\n else {\n throw new Error('Active chain is not set on ChainControll');\n }\n EventsController.sendEvent({\n type: 'track',\n event: 'CONNECT_SUCCESS',\n properties: { method: 'email', name: this.authConnector.name || 'Unknown' }\n });\n if (!OptionsController.state.siwx) {\n ModalController.close();\n }\n }\n }\n catch (error) {\n EventsController.sendEvent({\n type: 'track',\n event: 'EMAIL_VERIFICATION_CODE_FAIL',\n properties: { message: CoreHelperUtil.parseError(error) }\n });\n throw error;\n }\n };\n this.onOtpResend = async (email) => {\n if (this.authConnector) {\n await this.authConnector.provider.connectEmail({ email });\n EventsController.sendEvent({ type: 'track', event: 'EMAIL_VERIFICATION_CODE_SENT' });\n }\n };\n }\n};\nW3mEmailVerifyOtpView = __decorate([\n customElement('w3m-email-verify-otp-view')\n], W3mEmailVerifyOtpView);\nexport { W3mEmailVerifyOtpView };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n wui-icon-box {\n height: var(--wui-icon-box-size-xl);\n width: var(--wui-icon-box-size-xl);\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { state } from 'lit/decorators.js';\nimport { ConnectorController, EventsController, RouterController, SnackController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-flex';\nimport '@reown/appkit-ui/wui-icon-box';\nimport '@reown/appkit-ui/wui-link';\nimport '@reown/appkit-ui/wui-text';\nimport styles from './styles.js';\nlet W3mEmailVerifyDeviceView = class W3mEmailVerifyDeviceView extends LitElement {\n constructor() {\n super();\n this.email = RouterController.state.data?.email;\n this.authConnector = ConnectorController.getAuthConnector();\n this.loading = false;\n this.listenForDeviceApproval();\n }\n render() {\n if (!this.email) {\n throw new Error('w3m-email-verify-device-view: No email provided');\n }\n if (!this.authConnector) {\n throw new Error('w3m-email-verify-device-view: No auth connector provided');\n }\n return html `\n <wui-flex\n flexDirection=\"column\"\n alignItems=\"center\"\n .padding=${['xxl', 's', 'xxl', 's']}\n gap=\"l\"\n >\n <wui-icon-box\n size=\"xl\"\n iconcolor=\"accent-100\"\n backgroundcolor=\"accent-100\"\n icon=\"verify\"\n background=\"opaque\"\n ></wui-icon-box>\n\n <wui-flex flexDirection=\"column\" alignItems=\"center\" gap=\"s\">\n <wui-flex flexDirection=\"column\" alignItems=\"center\">\n <wui-text variant=\"paragraph-400\" color=\"fg-100\">\n Approve the login link we sent to\n </wui-text>\n <wui-text variant=\"paragraph-400\" color=\"fg-100\"><b>${this.email}</b></wui-text>\n </wui-flex>\n\n <wui-text variant=\"small-400\" color=\"fg-200\" align=\"center\">\n The code expires in 20 minutes\n </wui-text>\n\n <wui-flex alignItems=\"center\" id=\"w3m-resend-section\" gap=\"xs\">\n <wui-text variant=\"small-400\" color=\"fg-100\" align=\"center\">\n Didn't receive it?\n </wui-text>\n <wui-link @click=${this.onResendCode.bind(this)} .disabled=${this.loading}>\n Resend email\n </wui-link>\n </wui-flex>\n </wui-flex>\n </wui-flex>\n `;\n }\n async listenForDeviceApproval() {\n if (this.authConnector) {\n try {\n await this.authConnector.provider.connectDevice();\n EventsController.sendEvent({ type: 'track', event: 'DEVICE_REGISTERED_FOR_EMAIL' });\n EventsController.sendEvent({ type: 'track', event: 'EMAIL_VERIFICATION_CODE_SENT' });\n RouterController.replace('EmailVerifyOtp', { email: this.email });\n }\n catch (error) {\n RouterController.goBack();\n }\n }\n }\n async onResendCode() {\n try {\n if (!this.loading) {\n if (!this.authConnector || !this.email) {\n throw new Error('w3m-email-login-widget: Unable to resend email');\n }\n this.loading = true;\n await this.authConnector.provider.connectEmail({ email: this.email });\n this.listenForDeviceApproval();\n SnackController.showSuccess('Code email resent');\n }\n }\n catch (error) {\n SnackController.showError(error);\n }\n finally {\n this.loading = false;\n }\n }\n};\nW3mEmailVerifyDeviceView.styles = styles;\n__decorate([\n state()\n], W3mEmailVerifyDeviceView.prototype, \"loading\", void 0);\nW3mEmailVerifyDeviceView = __decorate([\n customElement('w3m-email-verify-device-view')\n], W3mEmailVerifyDeviceView);\nexport { W3mEmailVerifyDeviceView };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n wui-email-input {\n width: 100%;\n }\n\n form {\n width: 100%;\n display: block;\n position: relative;\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { state } from 'lit/decorators.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { ConnectorController } from '@reown/appkit-controllers';\nimport { EventsController, RouterController, SnackController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-button';\nimport '@reown/appkit-ui/wui-email-input';\nimport '@reown/appkit-ui/wui-flex';\nimport styles from './styles.js';\nlet W3mUpdateEmailWalletView = class W3mUpdateEmailWalletView extends LitElement {\n constructor() {\n super(...arguments);\n this.formRef = createRef();\n this.initialEmail = RouterController.state.data?.email ?? '';\n this.redirectView = RouterController.state.data?.redirectView;\n this.email = '';\n this.loading = false;\n }\n firstUpdated() {\n this.formRef.value?.addEventListener('keydown', event => {\n if (event.key === 'Enter') {\n this.onSubmitEmail(event);\n }\n });\n }\n render() {\n return html `\n <wui-flex flexDirection=\"column\" padding=\"m\" gap=\"m\">\n <form ${ref(this.formRef)} @submit=${this.onSubmitEmail.bind(this)}>\n <wui-email-input\n value=${this.initialEmail}\n .disabled=${this.loading}\n @inputChange=${this.onEmailInputChange.bind(this)}\n >\n </wui-email-input>\n <input type=\"submit\" hidden />\n </form>\n ${this.buttonsTemplate()}\n </wui-flex>\n `;\n }\n onEmailInputChange(event) {\n this.email = event.detail;\n }\n async onSubmitEmail(event) {\n try {\n if (this.loading) {\n return;\n }\n this.loading = true;\n event.preventDefault();\n const authConnector = ConnectorController.getAuthConnector();\n if (!authConnector) {\n throw new Error('w3m-update-email-wallet: Auth connector not found');\n }\n const response = await authConnector.provider.updateEmail({ email: this.email });\n EventsController.sendEvent({ type: 'track', event: 'EMAIL_EDIT' });\n if (response.action === 'VERIFY_SECONDARY_OTP') {\n RouterController.push('UpdateEmailSecondaryOtp', {\n email: this.initialEmail,\n newEmail: this.email,\n redirectView: this.redirectView\n });\n }\n else {\n RouterController.push('UpdateEmailPrimaryOtp', {\n email: this.initialEmail,\n newEmail: this.email,\n redirectView: this.redirectView\n });\n }\n }\n catch (error) {\n SnackController.showError(error);\n this.loading = false;\n }\n }\n buttonsTemplate() {\n const showSubmit = !this.loading && this.email.length > 3 && this.email !== this.initialEmail;\n if (!this.redirectView) {\n return html `\n <wui-button\n size=\"md\"\n variant=\"main\"\n fullWidth\n @click=${this.onSubmitEmail.bind(this)}\n .disabled=${!showSubmit}\n .loading=${this.loading}\n >\n Save\n </wui-button>\n `;\n }\n return html `\n <wui-flex gap=\"s\">\n <wui-button size=\"md\" variant=\"neutral\" fullWidth @click=${RouterController.goBack}>\n Cancel\n </wui-button>\n\n <wui-button\n size=\"md\"\n variant=\"main\"\n fullWidth\n @click=${this.onSubmitEmail.bind(this)}\n .disabled=${!showSubmit}\n .loading=${this.loading}\n >\n Save\n </wui-button>\n </wui-flex>\n `;\n }\n};\nW3mUpdateEmailWalletView.styles = styles;\n__decorate([\n state()\n], W3mUpdateEmailWalletView.prototype, \"email\", void 0);\n__decorate([\n state()\n], W3mUpdateEmailWalletView.prototype, \"loading\", void 0);\nW3mUpdateEmailWalletView = __decorate([\n customElement('w3m-update-email-wallet-view')\n], W3mUpdateEmailWalletView);\nexport { W3mUpdateEmailWalletView };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CoreHelperUtil, EventsController, RouterController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport { W3mEmailOtpWidget } from '../../utils/w3m-email-otp-widget/index.js';\nlet W3mUpdateEmailPrimaryOtpView = class W3mUpdateEmailPrimaryOtpView extends W3mEmailOtpWidget {\n constructor() {\n super();\n this.email = RouterController.state.data?.email;\n this.onOtpSubmit = async (otp) => {\n try {\n if (this.authConnector) {\n await this.authConnector.provider.updateEmailPrimaryOtp({ otp });\n EventsController.sendEvent({ type: 'track', event: 'EMAIL_VERIFICATION_CODE_PASS' });\n RouterController.replace('UpdateEmailSecondaryOtp', RouterController.state.data);\n }\n }\n catch (error) {\n EventsController.sendEvent({\n type: 'track',\n event: 'EMAIL_VERIFICATION_CODE_FAIL',\n properties: { message: CoreHelperUtil.parseError(error) }\n });\n throw error;\n }\n };\n this.onStartOver = () => {\n RouterController.replace('UpdateEmailWallet', RouterController.state.data);\n };\n }\n};\nW3mUpdateEmailPrimaryOtpView = __decorate([\n customElement('w3m-update-email-primary-otp-view')\n], W3mUpdateEmailPrimaryOtpView);\nexport { W3mUpdateEmailPrimaryOtpView };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CoreHelperUtil, EventsController, RouterController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport { W3mEmailOtpWidget } from '../../utils/w3m-email-otp-widget/index.js';\nlet W3mUpdateEmailSecondaryOtpView = class W3mUpdateEmailSecondaryOtpView extends W3mEmailOtpWidget {\n constructor() {\n super();\n this.email = RouterController.state.data?.newEmail;\n this.redirectView = RouterController.state.data?.redirectView;\n this.onOtpSubmit = async (otp) => {\n try {\n if (this.authConnector) {\n await this.authConnector.provider.updateEmailSecondaryOtp({ otp });\n EventsController.sendEvent({ type: 'track', event: 'EMAIL_VERIFICATION_CODE_PASS' });\n if (this.redirectView) {\n RouterController.reset(this.redirectView);\n }\n }\n }\n catch (error) {\n EventsController.sendEvent({\n type: 'track',\n event: 'EMAIL_VERIFICATION_CODE_FAIL',\n properties: { message: CoreHelperUtil.parseError(error) }\n });\n throw error;\n }\n };\n this.onStartOver = () => {\n RouterController.replace('UpdateEmailWallet', RouterController.state.data);\n };\n }\n};\nW3mUpdateEmailSecondaryOtpView = __decorate([\n customElement('w3m-update-email-secondary-otp-view')\n], W3mUpdateEmailSecondaryOtpView);\nexport { W3mUpdateEmailSecondaryOtpView };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { state } from 'lit/decorators.js';\nimport { ConstantsUtil as CommonConstantsUtil } from '@reown/appkit-common';\nimport { ConnectorController, OptionsController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport { ConstantsUtil as AppKitConstantsUtil } from '@reown/appkit-utils';\nlet W3mEmailLoginView = class W3mEmailLoginView extends LitElement {\n constructor() {\n super();\n this.authConnector = ConnectorController.getAuthConnector();\n this.isEmailEnabled = OptionsController.state.features?.email;\n this.isAuthEnabled = this.checkIfAuthEnabled(ConnectorController.state.connectors);\n this.connectors = ConnectorController.state.connectors;\n ConnectorController.subscribeKey('connectors', val => {\n this.connectors = val;\n this.isAuthEnabled = this.checkIfAuthEnabled(this.connectors);\n });\n }\n render() {\n if (!this.isEmailEnabled) {\n throw new Error('w3m-email-login-view: Email is not enabled');\n }\n if (!this.isAuthEnabled) {\n throw new Error('w3m-email-login-view: No auth connector provided');\n }\n return html `<wui-flex\n flexDirection=\"column\"\n .padding=${['3xs', 'm', 'm', 'm']}\n gap=\"l\"\n >\n <w3m-email-login-widget></w3m-email-login-widget>\n </wui-flex> `;\n }\n checkIfAuthEnabled(connectors) {\n const namespacesWithAuthConnector = connectors\n .filter(c => c.type === AppKitConstantsUtil.CONNECTOR_TYPE_AUTH)\n .map(i => i.chain);\n const authSupportedNamespaces = CommonConstantsUtil.AUTH_CONNECTOR_SUPPORTED_CHAINS;\n return authSupportedNamespaces.some(ns => namespacesWithAuthConnector.includes(ns));\n }\n};\n__decorate([\n state()\n], W3mEmailLoginView.prototype, \"connectors\", void 0);\nW3mEmailLoginView = __decorate([\n customElement('w3m-email-login-view')\n], W3mEmailLoginView);\nexport { W3mEmailLoginView };\n//# sourceMappingURL=index.js.map"],"names":["css","__decorate","decorators","target","key","desc","c","r","d","i","WuiInputNumeric","LitElement","html","resetStyles","elementStyles","styles","property","customElement","WuiOtp","index","input","inputElement","keyArr","currentCaretPos","dir","nextIndex","numeric","numericElements","_a","_b","_","e","element","value","val","targetElement","inputValue","UiHelperUtil","inputString","nextNumeric","nextInput","el","state","OTP_LENGTH","W3mEmailOtpWidget","W3mFrameHelpers","RouterController","ConnectorController","isResendDisabled","footerLabels","event","error","CoreHelperUtil","SnackController","W3mEmailVerifyOtpView","otp","EventsController","ChainController","ConnectionController","OptionsController","ModalController","email","W3mEmailVerifyDeviceView","W3mUpdateEmailWalletView","createRef","ref","authConnector","response","showSubmit","W3mUpdateEmailPrimaryOtpView","W3mUpdateEmailSecondaryOtpView","W3mEmailLoginView","connectors","namespacesWithAuthConnector","AppKitConstantsUtil","CommonConstantsUtil","ns"],"mappings":"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