UNPKG

@particle-network/connectkit

Version:
8 lines (7 loc) 36.1 kB
{ "version": 3, "sources": ["../../src/components/codeInput/styles.ts", "../../src/components/codeInput/index.tsx", "../../src/components/loadingSpinner/styles.ts", "../../src/components/loadingSpinner/index.tsx", "../../src/components/reSend/styles.ts", "../../src/components/reSend/index.tsx", "../../src/pages/captcha/styles.ts", "../../src/pages/captcha/index.tsx"], "sourcesContent": ["import { styled } from 'styled-components';\n\ninterface StyledInputProps {\n error?: string;\n}\n\nexport const CodeInputContainer = styled.div`\n width: 100%;\n max-width: 340px;\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n display: inline-block;\n margin: auto;\n width: auto;\n position: relative;\n left: 50%;\n transform: translateX(-50%);\n input:-webkit-autofill,\n input:-webkit-autofill:hover,\n input:-webkit-autofill:focus,\n input:-webkit-autofill:active {\n box-shadow: 0 0 0 60px var(--pcm-body-background) inset !important;\n -webkit-text-fill-color: var(--pcm-body-color) !important;\n }\n`;\n\nexport const CodeInputMask = styled.div`\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n z-index: 1;\n cursor: pointer;\n`;\n\nexport const StyleCodeInputItem = styled.input<StyledInputProps>`\n width: 42px;\n height: 42px;\n padding: 0;\n margin-right: 5px;\n margin-left: 5px;\n border: transparent;\n border-radius: var(--pcm-rounded-md);\n font-size: 20px;\n text-align: center;\n text-transform: uppercase;\n background-clip: padding-box;\n caret-color: var(--pcm-primary-color);\n color: ${({ error }) => (error ? 'var(--pcm-error-color)' : 'var(--pcm-body-color)')};\n background-color: ${({ error }) => (error ? 'var(--pcm-error-background)' : 'var(--pcm-body-background-secondary)')};\n\n border: none;\n &:focus,\n &:active,\n &:hover,\n &:visited,\n &:focus-visible {\n appearance: none;\n outline: none !important;\n border: none !important;\n }\n\n &:not(:placeholder-shown) {\n appearance: none;\n outline: 0;\n }\n`;\n\nexport const FocusBorder = styled.div<{ $focusIndex: number; $showFocusBorder: boolean } & StyledInputProps>`\n position: absolute;\n top: 0;\n opacity: ${({ $showFocusBorder }) => ($showFocusBorder ? 1 : 0)};\n left: ${({ $focusIndex }) => 5 + $focusIndex * 52}px;\n width: 42px;\n height: 42px;\n border: 1px solid var(--pcm-accent-color);\n border-radius: var(--pcm-rounded-md);\n transition:\n left 0.3s ease,\n opacity 0.2s ease;\n pointer-events: none;\n z-index: 2;\n`;\n", "import React, { forwardRef, useEffect, useImperativeHandle, useRef } from 'react';\nimport { CodeInputContainer, CodeInputMask, FocusBorder, StyleCodeInputItem } from './styles';\n\nconst allowedCharactersValues = ['alpha', 'numeric', 'alphanumeric'] as const;\n\nexport type AuthCodeProps = {\n allowedCharacters?: (typeof allowedCharactersValues)[number];\n ariaLabel?: string;\n autoFocus?: boolean;\n disabled?: boolean;\n isPassword?: boolean;\n length?: number;\n placeholder?: string;\n error: string;\n onChange: (res: string) => void;\n code?: string;\n};\n\ntype InputMode = 'text' | 'numeric';\n\ntype InputType = 'text' | 'tel' | 'password';\n\ntype InputProps = {\n type: InputType;\n inputMode: InputMode;\n pattern: string;\n min?: string;\n max?: string;\n};\n\nexport type AuthCodeRef = {\n focus: () => void;\n clear: () => void;\n};\n\nconst propsMap: { [key: string]: InputProps } = {\n alpha: {\n type: 'text',\n inputMode: 'text',\n pattern: '[a-zA-Z]{1}',\n },\n\n alphanumeric: {\n type: 'text',\n inputMode: 'text',\n pattern: '[a-zA-Z0-9]{1}',\n },\n\n numeric: {\n type: 'tel',\n inputMode: 'numeric',\n pattern: '[0-9]{1}',\n min: '0',\n max: '9',\n },\n};\n\nconst CodeInput = forwardRef<AuthCodeRef, AuthCodeProps>(\n (\n {\n allowedCharacters = 'alphanumeric',\n ariaLabel,\n autoFocus = true,\n disabled,\n isPassword = false,\n length = 6,\n placeholder,\n onChange,\n code = '',\n error = '',\n },\n ref\n ) => {\n if (isNaN(length) || length < 1) {\n throw new Error('Length should be a number and greater than 0');\n }\n\n if (!allowedCharactersValues.some((value) => value === allowedCharacters)) {\n throw new Error('Invalid value for allowedCharacters. Use alpha, numeric, or alphanumeric');\n }\n\n const [focusIndex, setFocusIndex] = React.useState<number>(0);\n const [showFocusBorder, setShowFocusBorder] = React.useState<boolean>(false);\n\n const inputsRef = useRef<Array<HTMLInputElement>>([]);\n const inputProps = propsMap[allowedCharacters] as InputProps;\n const codeInputContainerRef = useRef<HTMLDivElement>(null);\n\n useImperativeHandle(ref, () => ({\n focus: () => {\n if (inputsRef.current) {\n inputsRef.current[0]?.focus();\n }\n },\n clear: () => {\n if (inputsRef.current) {\n for (let i = 0; i < inputsRef.current.length; i++) {\n if (inputsRef.current?.[i]) {\n (inputsRef.current[i] as HTMLInputElement).value = '';\n }\n }\n (inputsRef.current[0] as HTMLInputElement).focus();\n }\n sendResult();\n },\n }));\n\n // useEffect(() => {\n // if (autoFocus) {\n // (inputsRef.current[0] as HTMLInputElement).focus();\n // }\n // }, []);\n\n useEffect(() => {\n if (code) {\n for (let i = 0; i < inputsRef.current.length; i++) {\n (inputsRef.current[i] as HTMLInputElement).value = '';\n }\n for (let i = 0; i < code.length; i++) {\n if (inputsRef.current?.[i]) {\n (inputsRef.current[i] as HTMLInputElement).value = code[i] || '';\n }\n }\n sendResult();\n }\n }, [code]);\n\n let oldValue = inputsRef.current.map((input) => input.value).join('') || '';\n\n const sendResult = () => {\n const res = inputsRef.current.map((input) => input.value).join('');\n if (oldValue !== res) {\n console.log('sendResult', res);\n\n if (res.length === 6) {\n setTimeout(() => {\n inputsRef.current.forEach((input) => {\n input.blur();\n });\n }, 400);\n }\n\n onChange && onChange(res);\n oldValue = res;\n }\n };\n\n const handleOnChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const {\n target: { value, nextElementSibling },\n } = e;\n\n if (value.length == 1) {\n if (value.match(inputProps.pattern)) {\n if (nextElementSibling !== null) {\n (nextElementSibling as HTMLInputElement).focus();\n }\n } else {\n e.target.value = '';\n }\n } else if (value.length > 1) {\n const pastedValue = value;\n let currentInput: number = Number(e.target.getAttribute('data-index')) || 0;\n for (let i = 0; i < pastedValue.length; i++) {\n const pastedCharacter = pastedValue.charAt(i);\n if (pastedCharacter.match(inputProps.pattern) && inputsRef.current?.[currentInput]) {\n (inputsRef.current[currentInput] as HTMLInputElement).value = pastedCharacter;\n if ((inputsRef.current[currentInput] as HTMLInputElement).nextElementSibling !== null) {\n ((inputsRef.current[currentInput] as HTMLInputElement).nextElementSibling as HTMLInputElement).focus();\n currentInput++;\n }\n }\n }\n }\n setTimeout(() => {\n sendResult();\n });\n };\n\n const handleOnKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const { key } = e;\n const target = e.target as HTMLInputElement;\n if (key === 'Backspace') {\n if (target.value === '') {\n if (target.previousElementSibling !== null) {\n const t = target.previousElementSibling as HTMLInputElement;\n t.value = '';\n t.focus();\n e.preventDefault();\n }\n } else {\n target.value = '';\n }\n setTimeout(() => {\n sendResult();\n });\n }\n };\n\n const handleOnFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n e.target.select();\n };\n\n const handleOnPaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n let pastedValue = e.clipboardData.getData('Text') ?? '';\n pastedValue = pastedValue.replace(/\\s/g, '').substring(0, 6);\n\n let currentInputIndex = focusIndex;\n\n for (let i = 0; i < pastedValue.length; i++) {\n const pastedCharacter = pastedValue.charAt(i);\n const currentInput = inputsRef.current[currentInputIndex] as HTMLInputElement;\n if (!currentInput) {\n break;\n }\n const currentValue = currentInput?.value;\n if (pastedCharacter.match(inputProps.pattern)) {\n if (!currentValue) {\n (inputsRef.current[currentInputIndex] as HTMLInputElement).value = pastedCharacter;\n if ((inputsRef.current[currentInputIndex] as HTMLInputElement).nextElementSibling !== null) {\n (\n (inputsRef.current[currentInputIndex] as HTMLInputElement).nextElementSibling as HTMLInputElement\n ).focus();\n currentInputIndex++;\n }\n }\n }\n }\n sendResult();\n\n e.preventDefault();\n };\n\n return (\n <CodeInputContainer ref={codeInputContainerRef}>\n <FocusBorder $focusIndex={focusIndex} $showFocusBorder={showFocusBorder} />\n {new Array(6).fill(0).map((_, i) => {\n return (\n <StyleCodeInputItem\n key={i}\n data-index={i}\n onChange={handleOnChange}\n onKeyDown={handleOnKeyDown}\n onFocus={(e) => {\n setShowFocusBorder(true);\n setFocusIndex(i);\n handleOnFocus(e);\n }}\n autoFocus={autoFocus && i === 0}\n onBlur={() => {\n setShowFocusBorder(false);\n }}\n onPaste={handleOnPaste}\n {...inputProps}\n type={isPassword ? 'password' : inputProps.type}\n ref={(el: HTMLInputElement) => {\n inputsRef.current[i] = el;\n }}\n autoComplete={i === 0 ? 'one-time-code' : 'off'}\n aria-label={ariaLabel ? `${ariaLabel}. Character ${i + 1}.` : `Character ${i + 1}.`}\n disabled={disabled}\n placeholder={placeholder}\n error={error}\n />\n );\n })}\n <CodeInputMask\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n for (let i = inputsRef.current.length - 1; i >= 0; i--) {\n if (\n (i > 0 &&\n !(inputsRef.current[i] as HTMLInputElement).value &&\n (inputsRef.current[i - 1] as HTMLInputElement).value) ||\n (i === 0 && !(inputsRef.current[i] as HTMLInputElement).value) ||\n (i == inputsRef.current.length - 1 && (inputsRef.current[i] as HTMLInputElement).value)\n ) {\n (inputsRef.current[i] as HTMLInputElement).focus();\n (inputsRef.current[i] as HTMLInputElement).setSelectionRange(\n (inputsRef.current[i] as HTMLInputElement).value.length,\n (inputsRef.current[i] as HTMLInputElement).value.length\n );\n break;\n }\n }\n }}\n />\n </CodeInputContainer>\n );\n }\n);\n\nexport default CodeInput;\n", "import { motion } from 'framer-motion';\nimport { styled } from 'styled-components';\n\ninterface StyledSpinnerContainerProps {\n width: string;\n height: string;\n}\n\nexport const StyledSpinnerContainer = styled(motion.div)`\n position: relative;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nexport const StyledSpinnerCircle = styled(motion.div)<StyledSpinnerContainerProps>`\n box-sizing: border-box;\n display: block;\n position: absolute;\n width: ${(props) => props.width};\n height: ${(props) => props.height};\n margin: 6px;\n border-style: solid;\n border-radius: 50%;\n animation: spin 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n`;\n", "import { StyledSpinnerCircle, StyledSpinnerContainer } from './styles';\n\ninterface StyledSpinnerContainerProps {\n size?: string;\n borderColor?: string;\n borderWidth?: number;\n children?: React.ReactNode;\n spin: boolean;\n}\n\nconst LoadingSpinner = ({\n size = '50%',\n borderColor = '#a748ff',\n borderWidth = 3,\n spin = false,\n children,\n}: StyledSpinnerContainerProps) => {\n return (\n <StyledSpinnerContainer initial={{ opacity: 0 }} animate={{ opacity: 1 }} exit={{ opacity: 0 }}>\n {spin && (\n <>\n {[...Array(4)].map((_, index) => (\n <StyledSpinnerCircle\n key={index}\n width={size}\n height={size}\n style={{\n animationDelay: `-${index * 0.15}s`,\n borderWidth,\n borderColor: `${borderColor} transparent transparent transparent`,\n }}\n />\n ))}\n </>\n )}\n <div\n style={{\n opacity: spin ? 0.05 : 1,\n }}\n >\n {children}\n </div>\n </StyledSpinnerContainer>\n );\n};\n\nexport default LoadingSpinner;\n", "import { styled } from 'styled-components';\n\ninterface ReSendCodeDivProps {\n $pointer?: boolean;\n}\n\nexport const ReSendCodeWrap = styled.div`\n text-align: center;\n margin-top: 40px;\n color: var(--pcm-body-color-secondary);\n font-size: 14px;\n`;\n\nexport const ReSendCodeDiv = styled.div<ReSendCodeDivProps>`\n color: var(--pcm-accent-color);\n margin-top: 6px;\n cursor: ${({ $pointer }) => ($pointer ? 'pointer' : 'default')};\n display: flex;\n gap: 0px;\n align-items: center;\n width: 100%;\n justify-content: center;\n position: relative;\n height: 24px;\n`;\n", "import { useEffect, useRef, useState } from 'react';\nimport useLocales from '../../hooks/useLocales';\nimport { useModalError } from '../../hooks/useModalError';\nimport LoadingSpinner from '../loadingSpinner';\nimport { ReSendCodeDiv, ReSendCodeWrap } from './styles';\n\nenum DownTimeStatus {\n /**\n * Not started\n */\n NotStarted = 0,\n /**\n * In progress\n */\n InProgress = 1,\n /**\n * End\n */\n End = 2,\n /**\n * Stop\n */\n Stop = 3,\n}\n\nconst DownTime = 60;\n\nconst ReSend = ({ reSendCode }: { reSendCode: () => void }) => {\n const locales = useLocales();\n\n const [downTimeStatus, setDownTimeStatus] = useState(DownTimeStatus.NotStarted);\n const { showError } = useModalError();\n const [downTime, setDownTime] = useState(DownTime);\n const [loading, setLoading] = useState(false);\n const timerRef = useRef<NodeJS.Timeout | null>(null);\n\n const downTimeCount = () => {\n setDownTime(DownTime);\n setDownTimeStatus(DownTimeStatus.InProgress);\n timerRef.current = setInterval(() => {\n setDownTime((val) => {\n const newVal = val - 1;\n if (newVal === 0) {\n setDownTimeStatus(DownTimeStatus.End);\n clearInterval(timerRef.current as NodeJS.Timeout);\n }\n return newVal;\n });\n }, 1000);\n };\n\n const reSendCodeHandler = async () => {\n try {\n if (loading) return;\n setLoading(true);\n if (downTimeStatus === DownTimeStatus.End) {\n await reSendCode();\n downTimeCount();\n }\n } catch (error: any) {\n showError(error?.message || '');\n }\n setTimeout(() => {\n setLoading(false);\n }, 100);\n };\n\n useEffect(() => {\n downTimeCount();\n return () => {\n clearInterval(timerRef.current as NodeJS.Timeout);\n };\n }, []);\n\n return (\n <ReSendCodeWrap>\n {downTimeStatus !== DownTimeStatus.NotStarted && (\n <div>\n {locales.didNotReceiveCode}\n <ReSendCodeDiv $pointer={downTimeStatus === DownTimeStatus.End}>\n {downTimeStatus === DownTimeStatus.InProgress || downTimeStatus === DownTimeStatus.Stop ? (\n `${downTime} s`\n ) : downTimeStatus === DownTimeStatus.End ? (\n <>\n {loading && (\n <div\n style={{\n width: '24px',\n height: '24px',\n top: '1px',\n position: 'relative',\n }}\n >\n <LoadingSpinner spin={true} borderWidth={2}></LoadingSpinner>\n </div>\n )}\n <div onClick={reSendCodeHandler}>{locales.resendCode}</div>\n </>\n ) : (\n ''\n )}\n </ReSendCodeDiv>\n </div>\n )}\n </ReSendCodeWrap>\n );\n};\n\nexport default ReSend;\n", "import { styled } from 'styled-components';\n\nexport const EmailCaptchaWrapper = styled.div`\n position: relative;\n padding-top: 10px;\n`;\n\nexport const EmailErrorContent = styled.div`\n position: relative;\n width: 96%;\n left: 2%;\n top: 0;\n margin-bottom: 30px;\n`;\n\nexport const EmailError = styled.div`\n background: var(--pcm-error-background);\n border-radius: 28px;\n line-height: 1;\n display: flex;\n align-items: center;\n color: var(--pcm-error-color);\n padding: 8px 8px;\n line-height: 1.2;\n display: flex;\n`;\n\nexport const EmailErrorLeft = styled.div`\n min-width: 20px;\n width: 20px;\n`;\n\nexport const EmailErrorRight = styled.div`\n flex: 1;\n font-size: 12px;\n`;\n\nexport const EmailCaptchaTip1 = styled.div`\n font-size: 14px;\n`;\n\nexport const EmailText = styled.div`\n font-size: 14px;\n font-weight: bold;\n margin-top: 4px;\n`;\n\nexport const EmailMainIcon = styled.div`\n margin: auto;\n display: flex;\n justify-content: center;\n margin-bottom: 30px;\n height: 80px;\n position: relative;\n`;\n\nexport const EmailInfo = styled.div`\n text-align: center;\n margin-bottom: 30px;\n`;\n\nexport const EmailIconDiv = styled.div`\n position: relative;\n width: 70px;\n height: 70px;\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nexport const Spin = styled.div`\n display: inline-block;\n animation: spin 1.2s linear infinite;\n position: absolute;\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n", "import { isEVMChain } from '@particle-network/connector-core';\nimport { useRef, useState } from 'react';\nimport { RoutePath } from '..';\nimport EmailIcon from '../../assets/icons/EmailIcon';\nimport PhoneIcon from '../../assets/icons/PhoneIcon';\nimport CircleSpinner from '../../components/circleSpinner';\nimport CodeInput from '../../components/codeInput';\nimport { PageContent } from '../../components/modal/styles';\nimport ReSend from '../../components/reSend';\nimport { useContext } from '../../context';\nimport { useAppearance } from '../../hooks/useAppearance';\nimport useConnect from '../../hooks/useConnect';\nimport { useConnector } from '../../hooks/useConnectors';\nimport useLocales from '../../hooks/useLocales';\nimport { useModalError } from '../../hooks/useModalError';\nimport { useRouter } from '../../hooks/useRouter';\nimport { useWalletConnector } from '../../hooks/useWalletConnectors';\nimport { ConnectorType } from '../../types';\nimport { EmailCaptchaTip1, EmailCaptchaWrapper, EmailIconDiv, EmailInfo, EmailMainIcon, EmailText } from './styles';\n\ntype Params =\n | {\n code: string;\n phone: string;\n }\n | {\n code: string;\n email: string;\n };\n\nconst Page = ({ value, type }: { value: string; type: ConnectorType }) => {\n const locales = useLocales();\n const { config } = useContext();\n const { error, showError } = useModalError();\n const connector = useConnector(isEVMChain(config.chains[0]) ? 'particleEVM' : 'particleSolana');\n const { connectAsync } = useConnect();\n const { appearance } = useAppearance();\n\n const [loading, setLoading] = useState(false);\n\n const emailCaptchaWrapperRef = useRef<HTMLDivElement>(null);\n\n const walletConnector = useWalletConnector('particleAuth');\n\n const { navigate } = useRouter();\n\n const loginHandler = async (params: Params) => {\n await connectAsync({ connector, authParams: params });\n };\n\n const onCodeInputChange = async (code) => {\n try {\n if (loading) return;\n\n if (code.length === 6) {\n if (/![^0-9]/.test(code)) {\n throw new Error(locales.incorrectCode);\n } else {\n setLoading(true);\n // \u8BF7\u6C42\u63A5\u53E3\u5F00\u59CB\u767B\u5F55\n const params = {\n code,\n ...(type === ConnectorType.Phone ? { phone: value } : { email: value }),\n };\n if (!params.code) {\n throw new Error('Please enter the verification code');\n // @ts-ignore\n } else if (!params.phone && !params.email) {\n throw new Error('Please enter the phone number or email');\n }\n // \u9A8C\u8BC1\u7801\u767B\u5F55\n await loginHandler(params);\n }\n } else {\n showError('');\n }\n } catch (error: any) {\n let message = error?.extra?.[0] || error.message || (typeof error === 'string' ? error : locales.networkError);\n if (message.includes('Invalid code')) {\n message = locales.invalidCode;\n } else if (message.includes('Code is deleted')) {\n message = locales.codeDeleted;\n } else if (message.includes('Network Error')) {\n message = locales.networkError;\n }\n if (error.code === 4011) {\n navigate(RoutePath.Signup);\n setTimeout(() => showError(message));\n } else {\n showError(message);\n }\n }\n setLoading(false);\n };\n\n const reSendCode = async () => {\n let turnstileToken = '';\n if (type === ConnectorType.Phone) {\n turnstileToken = await walletConnector?.auth.getCloudflareTurnstileResponse({\n // @ts-ignore\n theme: appearance.mode || 'lgiht',\n language: appearance.language || 'en',\n getContainer: emailCaptchaWrapperRef.current as HTMLElement,\n });\n }\n const params =\n type === ConnectorType.Phone\n ? {\n phone: value,\n // eslint-disable-next-line camelcase\n cf_turnstile_response: turnstileToken,\n }\n : { email: value };\n\n await walletConnector?.auth.getConnectCaptcha(params);\n };\n\n return (\n <PageContent\n style={{\n padding: '12px 2px 8px',\n }}\n >\n <EmailCaptchaWrapper ref={emailCaptchaWrapperRef}>\n <EmailMainIcon>\n {/* <EmailIconDiv>{type === 'phone' ? <PhoneIcon /> : <EmailIcon />}</EmailIconDiv> */}\n {/* <Spin>\n <LoadingIcon />\n </Spin> */}\n <CircleSpinner\n width={70}\n height={70}\n inset={2}\n logo={<EmailIconDiv>{type === 'phone' ? <PhoneIcon /> : <EmailIcon />}</EmailIconDiv>}\n />\n </EmailMainIcon>\n <EmailInfo>\n <EmailCaptchaTip1>{locales.verificationCode}</EmailCaptchaTip1>\n <EmailText>{value}</EmailText>\n </EmailInfo>\n <CodeInput\n allowedCharacters='numeric'\n length={6}\n placeholder={' '}\n onChange={onCodeInputChange}\n error={error || ''}\n />\n <ReSend reSendCode={reSendCode} />\n </EmailCaptchaWrapper>\n </PageContent>\n );\n};\n\nexport default Page;\n"], "mappings": "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", "names": ["init_styles", "init_styles", "styled", "init_styles", "jsx", "jsxs", "init_styles", "styled", "init_styles", "useEffect", "useRef", "Fragment", "jsx", "jsxs", "init_styles", "styled", "init_styles", "useRef", "useState", "jsx", "jsxs", "init_styles", "error"] }