mirror of
https://github.com/danog/telegram-tt.git
synced 2024-11-27 04:45:08 +01:00
1 line
54 KiB
Plaintext
1 line
54 KiB
Plaintext
{"version":3,"file":"133.e050778acd78ac17365a.js","mappings":"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","sources":["webpack://telegram-t/./src/components/common/TrackingMonkey.tsx","webpack://telegram-t/./src/components/auth/AuthCode.tsx","webpack://telegram-t/./src/components/auth/AuthPassword.tsx","webpack://telegram-t/./src/components/auth/AuthRegister.tsx","webpack://telegram-t/./src/components/common/AnimatedSticker.tsx","webpack://telegram-t/./src/components/common/PasswordForm.tsx","webpack://telegram-t/./src/components/common/PasswordMonkey.tsx","webpack://telegram-t/./src/components/common/helpers/animatedAssets.ts","webpack://telegram-t/./src/components/ui/CropModal.tsx","webpack://telegram-t/./src/components/ui/AvatarEditable.tsx","webpack://telegram-t/./src/components/ui/Modal.tsx","webpack://telegram-t/./src/util/trapFocus.ts","webpack://telegram-t/./src/components/ui/Portal.ts","webpack://telegram-t/./src/hooks/useBackgroundMode.ts"],"sourcesContent":["import React, {\n FC, useState, useEffect, useCallback, memo,\n} from '../../lib/teact/teact';\n\nimport { STICKER_SIZE_AUTH, STICKER_SIZE_AUTH_MOBILE, STICKER_SIZE_TWO_FA } from '../../config';\nimport { IS_SINGLE_COLUMN_LAYOUT } from '../../util/environment';\nimport getAnimationData from './helpers/animatedAssets';\n\nimport AnimatedSticker from './AnimatedSticker';\n\nimport './PasswordMonkey.scss';\n\ntype OwnProps = {\n code: string;\n codeLength: number;\n trackingDirection: number;\n isTracking: boolean;\n isBig?: boolean;\n};\n\nconst TRACKING_START_FRAME = 15;\nconst TRACKING_END_FRAME = 180;\nconst STICKER_SIZE = IS_SINGLE_COLUMN_LAYOUT ? STICKER_SIZE_AUTH_MOBILE : STICKER_SIZE_AUTH;\n\nconst TrackingMonkey: FC<OwnProps> = ({\n code,\n codeLength,\n trackingDirection,\n isTracking,\n isBig,\n}) => {\n const [idleMonkeyData, setIdleMonkeyData] = useState<string>();\n const [trackingMonkeyData, setTrackingMonkeyData] = useState<string>();\n const [isFirstMonkeyLoaded, setIsFirstMonkeyLoaded] = useState(false);\n const TRACKING_FRAMES_PER_SYMBOL = (TRACKING_END_FRAME - TRACKING_START_FRAME) / codeLength;\n\n useEffect(() => {\n if (!idleMonkeyData) {\n getAnimationData('MonkeyIdle').then(setIdleMonkeyData);\n }\n }, [idleMonkeyData]);\n\n useEffect(() => {\n if (!trackingMonkeyData) {\n getAnimationData('MonkeyTracking').then(setTrackingMonkeyData);\n }\n }, [trackingMonkeyData]);\n\n const handleFirstMonkeyLoad = useCallback(() => setIsFirstMonkeyLoaded(true), []);\n\n function getTrackingFrames(): [number, number] {\n const startFrame = (code && code.length > 1) || trackingDirection < 0\n ? TRACKING_START_FRAME + TRACKING_FRAMES_PER_SYMBOL * (code.length - 1)\n : 0;\n const endFrame = code.length === codeLength\n ? TRACKING_END_FRAME\n : TRACKING_START_FRAME + TRACKING_FRAMES_PER_SYMBOL * code.length;\n\n if (trackingDirection < 1) {\n return [\n endFrame,\n startFrame,\n ];\n }\n\n return [\n startFrame,\n endFrame,\n ];\n }\n\n return (\n <div id=\"monkey\" className={isBig ? 'big' : ''}>\n {!isFirstMonkeyLoaded && (\n <div className=\"monkey-preview\" />\n )}\n {idleMonkeyData && (\n <AnimatedSticker\n id=\"idleMonkey\"\n size={isBig ? STICKER_SIZE_TWO_FA : STICKER_SIZE}\n className={isTracking ? 'hidden' : undefined}\n animationData={idleMonkeyData}\n play={!isTracking}\n onLoad={handleFirstMonkeyLoad}\n />\n )}\n {trackingMonkeyData && (\n <AnimatedSticker\n id=\"trackingMonkey\"\n size={isBig ? STICKER_SIZE_TWO_FA : STICKER_SIZE}\n className={!isTracking ? 'hidden' : 'shown'}\n animationData={trackingMonkeyData}\n playSegment={isTracking ? getTrackingFrames() : undefined}\n speed={2}\n noLoop\n />\n )}\n </div>\n );\n};\n\nexport default memo(TrackingMonkey);\n","import { FormEvent } from 'react';\nimport React, {\n FC, useState, useEffect, useCallback, memo, useRef,\n} from '../../lib/teact/teact';\nimport { getActions, withGlobal } from '../../global';\nimport { GlobalState } from '../../global/types';\n\nimport { IS_TOUCH_ENV } from '../../util/environment';\nimport { pick } from '../../util/iteratees';\nimport renderText from '../common/helpers/renderText';\nimport useHistoryBack from '../../hooks/useHistoryBack';\nimport useLang from '../../hooks/useLang';\n\nimport InputText from '../ui/InputText';\nimport Loading from '../ui/Loading';\nimport TrackingMonkey from '../common/TrackingMonkey';\n\ntype StateProps = Pick<GlobalState, 'authPhoneNumber' | 'authIsCodeViaApp' | 'authIsLoading' | 'authError'>;\n\nconst CODE_LENGTH = 5;\n\nconst AuthCode: FC<StateProps> = ({\n authPhoneNumber,\n authIsCodeViaApp,\n authIsLoading,\n authError,\n}) => {\n const {\n setAuthCode,\n returnToAuthPhoneNumber,\n clearAuthError,\n } = getActions();\n\n const lang = useLang();\n // eslint-disable-next-line no-null/no-null\n const inputRef = useRef<HTMLInputElement>(null);\n\n const [code, setCode] = useState<string>('');\n const [isTracking, setIsTracking] = useState(false);\n const [trackingDirection, setTrackingDirection] = useState(1);\n\n useEffect(() => {\n if (!IS_TOUCH_ENV) {\n inputRef.current!.focus();\n }\n }, []);\n\n useHistoryBack(true, returnToAuthPhoneNumber);\n\n const onCodeChange = useCallback((e: FormEvent<HTMLInputElement>) => {\n if (authError) {\n clearAuthError();\n }\n\n const { currentTarget: target } = e;\n target.value = target.value.replace(/[^\\d]+/, '').substr(0, CODE_LENGTH);\n\n if (target.value === code) {\n return;\n }\n\n setCode(target.value);\n\n if (!isTracking) {\n setIsTracking(true);\n } else if (!target.value.length) {\n setIsTracking(false);\n }\n\n if (code && code.length > target.value.length) {\n setTrackingDirection(-1);\n } else {\n setTrackingDirection(1);\n }\n\n if (target.value.length === CODE_LENGTH) {\n setAuthCode({ code: target.value });\n }\n }, [authError, clearAuthError, code, isTracking, setAuthCode]);\n\n return (\n <div id=\"auth-code-form\" className=\"custom-scroll\">\n <div className=\"auth-form\">\n <TrackingMonkey\n code={code}\n codeLength={CODE_LENGTH}\n isTracking={isTracking}\n trackingDirection={trackingDirection}\n />\n <h2>\n {authPhoneNumber}\n <div\n className=\"auth-number-edit\"\n onClick={returnToAuthPhoneNumber}\n role=\"button\"\n tabIndex={0}\n title={lang('WrongNumber')}\n >\n <i className=\"icon-edit\" />\n </div>\n </h2>\n <p className=\"note\">\n {renderText(lang(authIsCodeViaApp ? 'SentAppCode' : 'Login.JustSentSms'), ['simple_markdown'])}\n </p>\n <InputText\n ref={inputRef}\n id=\"sign-in-code\"\n label={lang('Code')}\n onInput={onCodeChange}\n value={code}\n error={authError && lang(authError)}\n autoComplete=\"off\"\n inputMode=\"numeric\"\n />\n {authIsLoading && <Loading />}\n </div>\n </div>\n );\n};\n\nexport default memo(withGlobal(\n (global): StateProps => pick(global, ['authPhoneNumber', 'authIsCodeViaApp', 'authIsLoading', 'authError']),\n)(AuthCode));\n","import React, {\n FC, memo, useCallback, useState,\n} from '../../lib/teact/teact';\nimport { getActions, withGlobal } from '../../global';\n\nimport { GlobalState } from '../../global/types';\n\nimport { pick } from '../../util/iteratees';\nimport useLang from '../../hooks/useLang';\n\nimport MonkeyPassword from '../common/PasswordMonkey';\nimport PasswordForm from '../common/PasswordForm';\n\ntype StateProps = Pick<GlobalState, 'authIsLoading' | 'authError' | 'authHint'>;\n\nconst AuthPassword: FC<StateProps> = ({\n authIsLoading, authError, authHint,\n}) => {\n const { setAuthPassword, clearAuthError } = getActions();\n\n const lang = useLang();\n const [showPassword, setShowPassword] = useState(false);\n\n const handleChangePasswordVisibility = useCallback((isVisible) => {\n setShowPassword(isVisible);\n }, []);\n\n const handleSubmit = useCallback((password: string) => {\n setAuthPassword({ password });\n }, [setAuthPassword]);\n\n return (\n <div id=\"auth-password-form\" className=\"custom-scroll\">\n <div className=\"auth-form\">\n <MonkeyPassword isPasswordVisible={showPassword} />\n <h2>{lang('Login.Header.Password')}</h2>\n <p className=\"note\">{lang('Login.EnterPasswordDescription')}</p>\n <PasswordForm\n clearError={clearAuthError}\n error={authError && lang(authError)}\n hint={authHint}\n isLoading={authIsLoading}\n isPasswordVisible={showPassword}\n onChangePasswordVisibility={handleChangePasswordVisibility}\n onSubmit={handleSubmit}\n />\n </div>\n </div>\n );\n};\n\nexport default memo(withGlobal(\n (global): StateProps => pick(global, ['authIsLoading', 'authError', 'authHint']),\n)(AuthPassword));\n","import { ChangeEvent } from 'react';\nimport React, { FC, useState, memo } from '../../lib/teact/teact';\nimport { getActions, withGlobal } from '../../global';\n\nimport { GlobalState } from '../../global/types';\n\nimport { pick } from '../../util/iteratees';\nimport useLang from '../../hooks/useLang';\n\nimport Button from '../ui/Button';\nimport InputText from '../ui/InputText';\nimport AvatarEditable from '../ui/AvatarEditable';\n\ntype StateProps = Pick<GlobalState, 'authIsLoading' | 'authError'>;\n\nconst AuthRegister: FC<StateProps> = ({\n authIsLoading, authError,\n}) => {\n const { signUp, clearAuthError, uploadProfilePhoto } = getActions();\n\n const lang = useLang();\n const [isButtonShown, setIsButtonShown] = useState(false);\n const [croppedFile, setCroppedFile] = useState<File | undefined>();\n const [firstName, setFirstName] = useState('');\n const [lastName, setLastName] = useState('');\n\n function handleFirstNameChange(event: ChangeEvent<HTMLInputElement>) {\n if (authError) {\n clearAuthError();\n }\n\n const { target } = event;\n\n setFirstName(target.value);\n setIsButtonShown(target.value.length > 0);\n }\n\n function handleLastNameChange(event: ChangeEvent<HTMLInputElement>) {\n const { target } = event;\n\n setLastName(target.value);\n }\n\n function handleSubmit(event: React.FormEvent<HTMLFormElement>) {\n event.preventDefault();\n\n signUp({ firstName, lastName });\n\n if (croppedFile) {\n uploadProfilePhoto({ file: croppedFile });\n }\n }\n\n return (\n <div id=\"auth-registration-form\" className=\"custom-scroll\">\n <div className=\"auth-form\">\n <form action=\"\" method=\"post\" onSubmit={handleSubmit}>\n <AvatarEditable onChange={setCroppedFile} />\n <h2>{lang('YourName')}</h2>\n <p className=\"note\">{lang('Login.Register.Desc')}</p>\n <InputText\n id=\"registration-first-name\"\n label={lang('Login.Register.FirstName.Placeholder')}\n onChange={handleFirstNameChange}\n value={firstName}\n error={authError && lang(authError)}\n autoComplete=\"given-name\"\n />\n <InputText\n id=\"registration-last-name\"\n label={lang('Login.Register.LastName.Placeholder')}\n onChange={handleLastNameChange}\n value={lastName}\n autoComplete=\"family-name\"\n />\n {isButtonShown && (\n <Button type=\"submit\" ripple isLoading={authIsLoading}>{lang('Next')}</Button>\n )}\n </form>\n </div>\n </div>\n );\n};\n\nexport default memo(withGlobal(\n (global): StateProps => pick(global, ['authIsLoading', 'authError']),\n)(AuthRegister));\n","import React, {\n FC, useEffect, useRef, memo, useCallback, useState,\n} from '../../lib/teact/teact';\n\nimport { fastRaf } from '../../util/schedulers';\nimport buildClassName from '../../util/buildClassName';\nimport useHeavyAnimationCheck from '../../hooks/useHeavyAnimationCheck';\nimport useBackgroundMode from '../../hooks/useBackgroundMode';\n\ntype OwnProps = {\n className?: string;\n id: string;\n animationData?: string;\n play?: boolean | string;\n playSegment?: [number, number];\n speed?: number;\n noLoop?: boolean;\n size: number;\n quality?: number;\n isLowPriority?: boolean;\n onLoad?: NoneToVoidFunction;\n forceOnHeavyAnimation?: boolean;\n color?: [number, number, number];\n onEnded?: NoneToVoidFunction;\n};\n\ntype RLottieClass = typeof import('../../lib/rlottie/RLottie').default;\ntype RLottieInstance = import('../../lib/rlottie/RLottie').default;\nlet lottiePromise: Promise<RLottieClass>;\nlet RLottie: RLottieClass;\n\n// Time for the main interface to completely load\nconst LOTTIE_LOAD_DELAY = 3000;\n\nasync function ensureLottie() {\n if (!lottiePromise) {\n lottiePromise = import('../../lib/rlottie/RLottie') as unknown as Promise<RLottieClass>;\n RLottie = (await lottiePromise as any).default;\n }\n\n return lottiePromise;\n}\n\nsetTimeout(ensureLottie, LOTTIE_LOAD_DELAY);\n\nconst AnimatedSticker: FC<OwnProps> = ({\n className,\n id,\n animationData,\n play,\n playSegment,\n speed,\n noLoop,\n size,\n quality,\n isLowPriority,\n color,\n forceOnHeavyAnimation,\n onLoad,\n onEnded,\n}) => {\n const [animation, setAnimation] = useState<RLottieInstance>();\n // eslint-disable-next-line no-null/no-null\n const container = useRef<HTMLDivElement>(null);\n const wasPlaying = useRef(false);\n const isFrozen = useRef(false);\n const isFirstRender = useRef(true);\n\n const playRef = useRef();\n playRef.current = play;\n const playSegmentRef = useRef<[number, number]>();\n playSegmentRef.current = playSegment;\n\n useEffect(() => {\n if (animation || !animationData) {\n return;\n }\n\n const exec = () => {\n if (!container.current) {\n return;\n }\n\n const newAnimation = new RLottie(\n id,\n container.current,\n animationData,\n {\n noLoop,\n size,\n quality,\n isLowPriority,\n },\n onLoad,\n color,\n onEnded,\n );\n\n if (speed) {\n newAnimation.setSpeed(speed);\n }\n\n setAnimation(newAnimation);\n };\n\n if (RLottie) {\n exec();\n } else {\n ensureLottie().then(() => {\n fastRaf(() => {\n if (container.current) {\n exec();\n }\n });\n });\n }\n }, [color, animation, animationData, id, isLowPriority, noLoop, onLoad, quality, size, speed, onEnded]);\n\n useEffect(() => {\n if (!animation) return;\n\n animation.setColor(color);\n }, [color, animation]);\n\n useEffect(() => {\n return () => {\n if (animation) {\n animation.destroy();\n }\n };\n }, [animation]);\n\n const playAnimation = useCallback((shouldRestart = false) => {\n if (animation && (playRef.current || playSegmentRef.current)) {\n if (playSegmentRef.current) {\n animation.playSegment(playSegmentRef.current);\n } else if (shouldRestart) {\n animation.goToAndPlay(0);\n } else {\n animation.play();\n }\n }\n }, [animation]);\n\n const pauseAnimation = useCallback(() => {\n if (!animation) {\n return;\n }\n\n animation.pause();\n }, [animation]);\n\n const freezeAnimation = useCallback(() => {\n isFrozen.current = true;\n\n if (!animation) {\n return;\n }\n\n if (!wasPlaying.current) {\n wasPlaying.current = animation.isPlaying();\n }\n\n pauseAnimation();\n }, [animation, pauseAnimation]);\n\n const unfreezeAnimation = useCallback(() => {\n if (wasPlaying.current) {\n playAnimation();\n }\n\n wasPlaying.current = false;\n isFrozen.current = false;\n }, [playAnimation]);\n\n const unfreezeAnimationOnRaf = useCallback(() => {\n fastRaf(unfreezeAnimation);\n }, [unfreezeAnimation]);\n\n useEffect(() => {\n if (!animation) {\n return;\n }\n\n if (play || playSegment) {\n if (isFrozen.current) {\n wasPlaying.current = true;\n } else {\n playAnimation(noLoop);\n }\n } else {\n // eslint-disable-next-line no-lonely-if\n if (isFrozen.current) {\n wasPlaying.current = false;\n } else {\n pauseAnimation();\n }\n }\n }, [animation, play, playSegment, noLoop, playAnimation, pauseAnimation]);\n\n useEffect(() => {\n if (animation) {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n } else if (animationData) {\n animation.changeData(animationData);\n playAnimation();\n }\n }\n }, [playAnimation, animation, animationData]);\n\n useHeavyAnimationCheck(freezeAnimation, unfreezeAnimation, forceOnHeavyAnimation);\n // Pausing frame may not happen in background\n // so we need to make sure it happens right after focusing,\n // then we can play again.\n useBackgroundMode(freezeAnimation, unfreezeAnimationOnRaf);\n\n const fullClassName = buildClassName('AnimatedSticker', className);\n\n const style = size ? `width: ${size}px; height: ${size}px;` : undefined;\n\n return (\n <div\n ref={container}\n className={fullClassName}\n style={style}\n />\n );\n};\n\nexport default memo(AnimatedSticker);\n","import { ChangeEvent } from 'react';\nimport React, {\n FC, memo, useEffect, useRef, useState,\n} from '../../lib/teact/teact';\n\nimport { MIN_PASSWORD_LENGTH } from '../../config';\nimport { IS_TOUCH_ENV, IS_SINGLE_COLUMN_LAYOUT } from '../../util/environment';\nimport buildClassName from '../../util/buildClassName';\nimport useLang from '../../hooks/useLang';\n\nimport Button from '../ui/Button';\n\ntype OwnProps = {\n submitLabel?: string;\n error?: string;\n hint?: string;\n placeholder?: string;\n isLoading?: boolean;\n isPasswordVisible?: boolean;\n clearError: NoneToVoidFunction;\n onChangePasswordVisibility: (state: boolean) => void;\n onInputChange?: (password: string) => void;\n onSubmit: (password: string) => void;\n};\n\nconst FOCUS_DELAY_TIMEOUT_MS = IS_SINGLE_COLUMN_LAYOUT ? 550 : 400;\n\nconst PasswordForm: FC<OwnProps> = ({\n isLoading = false,\n isPasswordVisible,\n error,\n hint,\n placeholder = 'Password',\n submitLabel = 'Next',\n clearError,\n onChangePasswordVisibility,\n onInputChange,\n onSubmit,\n}) => {\n // eslint-disable-next-line no-null/no-null\n const inputRef = useRef<HTMLInputElement>(null);\n const lang = useLang();\n\n const [password, setPassword] = useState('');\n const [canSubmit, setCanSubmit] = useState(false);\n\n useEffect(() => {\n if (!IS_TOUCH_ENV) {\n setTimeout(() => {\n inputRef.current!.focus();\n }, FOCUS_DELAY_TIMEOUT_MS);\n }\n }, []);\n\n useEffect(() => {\n if (error) {\n requestAnimationFrame(() => {\n inputRef.current!.focus();\n inputRef.current!.select();\n });\n }\n }, [error]);\n\n function onPasswordChange(e: ChangeEvent<HTMLInputElement>) {\n if (error) {\n clearError();\n }\n\n const { target } = e;\n setPassword(target.value);\n setCanSubmit(target.value.length >= MIN_PASSWORD_LENGTH);\n if (onInputChange) {\n onInputChange(target.value);\n }\n }\n\n function togglePasswordVisibility() {\n onChangePasswordVisibility(!isPasswordVisible);\n }\n\n function handleSubmit(event: React.FormEvent<HTMLFormElement>) {\n event.preventDefault();\n\n if (isLoading) {\n return;\n }\n\n if (canSubmit) {\n onSubmit(password);\n }\n }\n\n return (\n <form action=\"\" onSubmit={handleSubmit} autoComplete=\"off\">\n <div\n className={buildClassName('input-group password-input', password && 'touched', error && 'error')}\n dir={lang.isRtl ? 'rtl' : undefined}\n >\n <input\n ref={inputRef}\n className=\"form-control\"\n type={isPasswordVisible ? 'text' : 'password'}\n id=\"sign-in-password\"\n value={password || ''}\n autoComplete=\"current-password\"\n onChange={onPasswordChange}\n dir=\"auto\"\n />\n <label>{error || hint || placeholder}</label>\n <div\n className=\"toggle-password\"\n onClick={togglePasswordVisibility}\n role=\"button\"\n tabIndex={0}\n title=\"Toggle password visibility\"\n >\n <i className={isPasswordVisible ? 'icon-eye' : 'icon-eye-closed'} />\n </div>\n </div>\n {canSubmit && (\n <Button type=\"submit\" ripple isLoading={isLoading}>\n {submitLabel}\n </Button>\n )}\n </form>\n );\n};\n\nexport default memo(PasswordForm);\n","import React, {\n FC, useState, useEffect, useCallback, memo,\n} from '../../lib/teact/teact';\n\nimport { STICKER_SIZE_AUTH, STICKER_SIZE_AUTH_MOBILE, STICKER_SIZE_TWO_FA } from '../../config';\nimport { IS_SINGLE_COLUMN_LAYOUT } from '../../util/environment';\nimport getAnimationData from './helpers/animatedAssets';\n\nimport AnimatedSticker from './AnimatedSticker';\n\nimport './PasswordMonkey.scss';\n\ntype OwnProps = {\n isPasswordVisible: boolean;\n isBig?: boolean;\n};\n\nconst PEEK_MONKEY_SHOW_DELAY = 2000;\nconst SEGMENT_COVER_EYES: [number, number] = [0, 50];\nconst SEGMENT_UNCOVER_EYE: [number, number] = [0, 20];\nconst SEGMENT_COVER_EYE: [number, number] = [20, 0];\nconst STICKER_SIZE = IS_SINGLE_COLUMN_LAYOUT ? STICKER_SIZE_AUTH_MOBILE : STICKER_SIZE_AUTH;\n\nconst PasswordMonkey: FC<OwnProps> = ({ isPasswordVisible, isBig }) => {\n const [closeMonkeyData, setCloseMonkeyData] = useState<string>();\n const [peekMonkeyData, setPeekMonkeyData] = useState<string>();\n const [isFirstMonkeyLoaded, setIsFirstMonkeyLoaded] = useState(false);\n const [isPeekShown, setIsPeekShown] = useState(false);\n\n useEffect(() => {\n if (!closeMonkeyData) {\n getAnimationData('MonkeyClose').then(setCloseMonkeyData);\n } else {\n setTimeout(() => setIsPeekShown(true), PEEK_MONKEY_SHOW_DELAY);\n }\n }, [closeMonkeyData]);\n\n useEffect(() => {\n if (!peekMonkeyData) {\n getAnimationData('MonkeyPeek').then(setPeekMonkeyData);\n }\n }, [peekMonkeyData]);\n\n const handleFirstMonkeyLoad = useCallback(() => setIsFirstMonkeyLoaded(true), []);\n\n return (\n <div id=\"monkey\" className={isBig ? 'big' : ''}>\n {!isFirstMonkeyLoaded && (\n <div className=\"monkey-preview\" />\n )}\n {closeMonkeyData && (\n <AnimatedSticker\n id=\"closeMonkey\"\n size={isBig ? STICKER_SIZE_TWO_FA : STICKER_SIZE}\n className={isPeekShown ? 'hidden' : 'shown'}\n animationData={closeMonkeyData}\n playSegment={SEGMENT_COVER_EYES}\n noLoop\n onLoad={handleFirstMonkeyLoad}\n />\n )}\n {peekMonkeyData && (\n <AnimatedSticker\n id=\"peekMonkey\"\n size={isBig ? STICKER_SIZE_TWO_FA : STICKER_SIZE}\n className={isPeekShown ? 'shown' : 'hidden'}\n animationData={peekMonkeyData}\n playSegment={isPasswordVisible ? SEGMENT_UNCOVER_EYE : SEGMENT_COVER_EYE}\n noLoop\n />\n )}\n </div>\n );\n};\n\nexport default memo(PasswordMonkey);\n","import { ApiMediaFormat } from '../../../api/types';\n\nimport * as mediaLoader from '../../../util/mediaLoader';\n\nimport MonkeyIdle from '../../../assets/tgs/monkeys/TwoFactorSetupMonkeyIdle.tgs';\nimport MonkeyTracking from '../../../assets/tgs/monkeys/TwoFactorSetupMonkeyTracking.tgs';\nimport MonkeyClose from '../../../assets/tgs/monkeys/TwoFactorSetupMonkeyClose.tgs';\nimport MonkeyPeek from '../../../assets/tgs/monkeys/TwoFactorSetupMonkeyPeek.tgs';\n\nimport FoldersAll from '../../../assets/tgs/settings/FoldersAll.tgs';\nimport FoldersNew from '../../../assets/tgs/settings/FoldersNew.tgs';\nimport DiscussionGroups from '../../../assets/tgs/settings/DiscussionGroupsDucks.tgs';\n\nimport CameraFlip from '../../../assets/tgs/calls/CameraFlip.tgs';\nimport HandFilled from '../../../assets/tgs/calls/HandFilled.tgs';\nimport HandOutline from '../../../assets/tgs/calls/HandOutline.tgs';\nimport Speaker from '../../../assets/tgs/calls/Speaker.tgs';\nimport VoiceAllowTalk from '../../../assets/tgs/calls/VoiceAllowTalk.tgs';\nimport VoiceMini from '../../../assets/tgs/calls/VoiceMini.tgs';\nimport VoiceMuted from '../../../assets/tgs/calls/VoiceMuted.tgs';\nimport VoiceOutlined from '../../../assets/tgs/calls/VoiceOutlined.tgs';\n\nimport Peach from '../../../assets/tgs/animatedEmojis/Peach.tgs';\nimport Eggplant from '../../../assets/tgs/animatedEmojis/Eggplant.tgs';\nimport Cumshot from '../../../assets/tgs/animatedEmojis/Cumshot.tgs';\n\nimport JoinRequest from '../../../assets/tgs/invites/Requests.tgs';\nimport Invite from '../../../assets/tgs/invites/Invite.tgs';\n\nexport const ANIMATED_STICKERS_PATHS = {\n MonkeyIdle,\n MonkeyTracking,\n MonkeyClose,\n MonkeyPeek,\n FoldersAll,\n FoldersNew,\n DiscussionGroups,\n CameraFlip,\n HandFilled,\n HandOutline,\n Speaker,\n VoiceAllowTalk,\n VoiceMini,\n VoiceMuted,\n VoiceOutlined,\n Peach,\n Eggplant,\n Cumshot,\n JoinRequest,\n Invite,\n};\n\nexport default function getAnimationData(name: keyof typeof ANIMATED_STICKERS_PATHS) {\n const path = ANIMATED_STICKERS_PATHS[name].replace(window.location.origin, '');\n\n return mediaLoader.fetch(`file${path}`, ApiMediaFormat.Lottie);\n}\n","import React, {\n FC, useEffect, useState, memo,\n} from '../../lib/teact/teact';\n\nimport { DEBUG } from '../../config';\nimport { blobToFile, blobToDataUri } from '../../util/files';\nimport useLang from '../../hooks/useLang';\n\nimport Button from './Button';\nimport Modal from './Modal';\nimport Loading from './Loading';\n\nimport './CropModal.scss';\n\n// Change to 'base64' to get base64-encoded string\nconst cropperResultOptions: Croppie.ResultOptions & { type: 'blob' } = {\n type: 'blob',\n quality: 1,\n format: 'jpeg',\n circle: false,\n size: { width: 1024, height: 1024 },\n};\n\ntype ICroppie = typeof import('croppie');\nlet Croppie: ICroppie;\nlet croppiePromise: Promise<{ default: ICroppie }>;\n\nasync function ensureCroppie() {\n if (!croppiePromise) {\n croppiePromise = import('../../lib/croppie') as unknown as Promise<{ default: ICroppie }>;\n Croppie = (await croppiePromise).default;\n }\n\n return croppiePromise;\n}\n\nlet cropper: Croppie;\n\nasync function initCropper(imgFile: File) {\n try {\n const cropContainer = document.getElementById('avatar-crop');\n if (!cropContainer) {\n return;\n }\n\n const { offsetWidth, offsetHeight } = cropContainer;\n\n cropper = new Croppie(cropContainer, {\n enableZoom: true,\n boundary: {\n width: offsetWidth,\n height: offsetHeight,\n },\n viewport: {\n width: offsetWidth - 16,\n height: offsetHeight - 16,\n type: 'circle',\n },\n });\n\n const dataUri = await blobToDataUri(imgFile);\n await cropper.bind({ url: dataUri });\n } catch (err) {\n if (DEBUG) {\n // eslint-disable-next-line no-console\n console.error(err);\n }\n }\n}\n\ntype OwnProps = {\n file?: File;\n onChange: (file: File) => void;\n onClose: () => void;\n};\n\nconst CropModal: FC<OwnProps> = ({ file, onChange, onClose }: OwnProps) => {\n const [isCroppieReady, setIsCroppieReady] = useState(false);\n\n useEffect(() => {\n if (!file) {\n return;\n }\n\n if (!isCroppieReady) {\n ensureCroppie().then(() => setIsCroppieReady(true));\n\n return;\n }\n\n initCropper(file);\n }, [file, isCroppieReady]);\n\n const lang = useLang();\n\n async function handleCropClick() {\n if (!cropper) {\n return;\n }\n\n const result: Blob | string = await cropper.result(cropperResultOptions);\n const croppedImg = typeof result === 'string' ? result : blobToFile(result, 'avatar.jpg');\n\n onChange(croppedImg);\n }\n\n return (\n <Modal\n isOpen={Boolean(file)}\n onClose={onClose}\n title=\"Drag to reposition\"\n className=\"CropModal\"\n hasCloseButton\n >\n {isCroppieReady ? (\n <div id=\"avatar-crop\" />\n ) : (\n <Loading />\n )}\n <Button\n className=\"confirm-button\"\n round\n color=\"primary\"\n onClick={handleCropClick}\n ariaLabel={lang('CropImage')}\n >\n <i className=\"icon-check\" />\n </Button>\n </Modal>\n );\n};\n\nexport default memo(CropModal);\n","import { ChangeEvent } from 'react';\nimport React, {\n FC, useState, useEffect, memo,\n} from '../../lib/teact/teact';\n\nimport buildClassName from '../../util/buildClassName';\n\nimport CropModal from './CropModal';\n\nimport './AvatarEditable.scss';\n\ninterface OwnProps {\n title?: string;\n disabled?: boolean;\n currentAvatarBlobUrl?: string;\n onChange: (file: File) => void;\n}\n\nconst AvatarEditable: FC<OwnProps> = ({\n title = 'Change your profile picture',\n disabled,\n currentAvatarBlobUrl,\n onChange,\n}) => {\n const [selectedFile, setSelectedFile] = useState<File | undefined>();\n const [croppedBlobUrl, setCroppedBlobUrl] = useState<string | undefined>(currentAvatarBlobUrl);\n\n useEffect(() => {\n setCroppedBlobUrl(currentAvatarBlobUrl);\n }, [currentAvatarBlobUrl]);\n\n function handleSelectFile(event: ChangeEvent<HTMLInputElement>) {\n const target = event.target as HTMLInputElement;\n\n if (!target || !target.files || !target.files[0]) {\n return;\n }\n\n setSelectedFile(target.files[0]);\n target.value = '';\n }\n\n function handleAvatarCrop(croppedImg: File) {\n setSelectedFile(undefined);\n onChange(croppedImg);\n\n if (croppedBlobUrl) {\n URL.revokeObjectURL(croppedBlobUrl);\n }\n setCroppedBlobUrl(URL.createObjectURL(croppedImg));\n }\n\n function handleModalClose() {\n setSelectedFile(undefined);\n }\n\n const labelClassName = buildClassName(\n croppedBlobUrl && 'filled',\n disabled && 'disabled',\n );\n\n return (\n <div className=\"AvatarEditable\">\n <label\n className={labelClassName}\n role=\"button\"\n tabIndex={0}\n title={title}\n >\n <input\n type=\"file\"\n onChange={handleSelectFile}\n accept=\"image/png, image/jpeg\"\n />\n <i className=\"icon-camera-add\" />\n {croppedBlobUrl && <img src={croppedBlobUrl} alt=\"Avatar\" />}\n </label>\n <CropModal file={selectedFile} onClose={handleModalClose} onChange={handleAvatarCrop} />\n </div>\n );\n};\n\nexport default memo(AvatarEditable);\n","import { RefObject } from 'react';\nimport React, {\n FC, useEffect, useRef,\n} from '../../lib/teact/teact';\n\nimport { TextPart } from '../common/helpers/renderMessageText';\n\nimport captureKeyboardListeners from '../../util/captureKeyboardListeners';\nimport trapFocus from '../../util/trapFocus';\nimport buildClassName from '../../util/buildClassName';\nimport { dispatchHeavyAnimationEvent } from '../../hooks/useHeavyAnimationCheck';\nimport useShowTransition from '../../hooks/useShowTransition';\nimport useEffectWithPrevDeps from '../../hooks/useEffectWithPrevDeps';\nimport useLang from '../../hooks/useLang';\nimport useHistoryBack from '../../hooks/useHistoryBack';\n\nimport Button from './Button';\nimport Portal from './Portal';\n\nimport './Modal.scss';\n\nconst ANIMATION_DURATION = 200;\n\ntype OwnProps = {\n title?: string | TextPart[];\n className?: string;\n isOpen?: boolean;\n header?: any;\n hasCloseButton?: boolean;\n noBackdrop?: boolean;\n children: React.ReactNode;\n onClose: () => void;\n onCloseAnimationEnd?: () => void;\n onEnter?: () => void;\n dialogRef?: RefObject<HTMLDivElement>;\n};\n\ntype StateProps = {\n shouldSkipHistoryAnimations?: boolean;\n};\n\nconst Modal: FC<OwnProps & StateProps> = ({\n dialogRef,\n title,\n className,\n isOpen,\n header,\n hasCloseButton,\n noBackdrop,\n children,\n onClose,\n onCloseAnimationEnd,\n onEnter,\n shouldSkipHistoryAnimations,\n}) => {\n const {\n shouldRender,\n transitionClassNames,\n } = useShowTransition(\n isOpen, onCloseAnimationEnd, shouldSkipHistoryAnimations, undefined, shouldSkipHistoryAnimations,\n );\n // eslint-disable-next-line no-null/no-null\n const modalRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => (isOpen\n ? captureKeyboardListeners({ onEsc: onClose, onEnter })\n : undefined), [isOpen, onClose, onEnter]);\n useEffect(() => (isOpen && modalRef.current ? trapFocus(modalRef.current) : undefined), [isOpen]);\n\n const { forceClose } = useHistoryBack(isOpen, onClose);\n\n // For modals that are closed by unmounting without changing `isOpen` to `false`\n useEffect(() => {\n return () => {\n if (isOpen) {\n forceClose();\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffectWithPrevDeps(([prevIsOpen]) => {\n document.body.classList.toggle('has-open-dialog', isOpen);\n if (isOpen || (!isOpen && prevIsOpen !== undefined)) {\n dispatchHeavyAnimationEvent(ANIMATION_DURATION);\n }\n\n return () => {\n document.body.classList.remove('has-open-dialog');\n };\n }, [isOpen]);\n\n const lang = useLang();\n\n if (!shouldRender) {\n return undefined;\n }\n\n function renderHeader() {\n if (header) {\n return header;\n }\n\n if (!title) {\n return undefined;\n }\n\n return (\n <div className=\"modal-header\">\n {hasCloseButton && (\n <Button\n round\n color=\"translucent\"\n size=\"smaller\"\n ariaLabel={lang('Close')}\n onClick={onClose}\n >\n <i className=\"icon-close\" />\n </Button>\n )}\n <div className=\"modal-title\">{title}</div>\n </div>\n );\n }\n\n const fullClassName = buildClassName(\n 'Modal',\n className,\n transitionClassNames,\n noBackdrop && 'transparent-backdrop',\n );\n\n return (\n <Portal>\n <div\n ref={modalRef}\n className={fullClassName}\n tabIndex={-1}\n role=\"dialog\"\n >\n <div className=\"modal-container\">\n <div className=\"modal-backdrop\" onClick={onClose} />\n <div className=\"modal-dialog\" ref={dialogRef}>\n {renderHeader()}\n <div className=\"modal-content custom-scroll\">\n {children}\n </div>\n </div>\n </div>\n </div>\n </Portal>\n );\n};\n\nexport default Modal;\n","export default function trapFocus(element: HTMLElement) {\n function handleKeyDown(e: KeyboardEvent) {\n if (e.key !== 'Tab') {\n return;\n }\n\n e.preventDefault();\n e.stopPropagation();\n\n const focusableElements = Array.from(\n element.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'),\n ) as HTMLElement[];\n if (!focusableElements.length) {\n return;\n }\n\n const currentFocusedIndex = focusableElements.findIndex((em) => em.isSameNode(document.activeElement));\n let newFocusedIndex = 0;\n if (currentFocusedIndex >= 0) {\n if (e.shiftKey) {\n newFocusedIndex = currentFocusedIndex > 0\n ? currentFocusedIndex - 1\n : focusableElements.length - 1;\n } else {\n newFocusedIndex = currentFocusedIndex < focusableElements.length - 1\n ? currentFocusedIndex + 1\n : 0;\n }\n }\n\n focusableElements[newFocusedIndex].focus();\n }\n\n document.addEventListener('keydown', handleKeyDown, false);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown, false);\n };\n}\n","import {\n FC, useRef, useLayoutEffect, VirtualElement,\n} from '../../lib/teact/teact';\nimport TeactDOM from '../../lib/teact/teact-dom';\n\ntype OwnProps = {\n containerId?: string;\n className?: string;\n children: React.ReactNode;\n};\n\nconst Portal: FC<OwnProps> = ({ containerId, className, children }) => {\n const elementRef = useRef<HTMLDivElement>();\n if (!elementRef.current) {\n elementRef.current = document.createElement('div');\n }\n\n useLayoutEffect(() => {\n const container = document.querySelector<HTMLDivElement>(containerId || '#portals');\n if (!container) {\n return undefined;\n }\n\n const element = elementRef.current!;\n if (className) {\n element.classList.add(className);\n }\n\n container.appendChild(element);\n\n return () => {\n TeactDOM.render(undefined, element);\n container.removeChild(element);\n };\n }, [className, containerId]);\n\n return TeactDOM.render(children as VirtualElement, elementRef.current);\n};\n\nexport default Portal;\n","import { useEffect } from '../lib/teact/teact';\n\nexport default function useBackgroundMode(\n onBlur?: AnyToVoidFunction,\n onFocus?: AnyToVoidFunction,\n) {\n useEffect(() => {\n if (onBlur && !document.hasFocus()) {\n onBlur();\n }\n\n if (onBlur) {\n window.addEventListener('blur', onBlur);\n }\n\n if (onFocus) {\n window.addEventListener('focus', onFocus);\n }\n\n return () => {\n if (onFocus) {\n window.removeEventListener('focus', onFocus);\n }\n\n if (onBlur) {\n window.removeEventListener('blur', onBlur);\n }\n };\n }, [onBlur, onFocus]);\n}\n"],"names":["STICKER_SIZE","IS_SINGLE_COLUMN_LAYOUT","STICKER_SIZE_AUTH_MOBILE","STICKER_SIZE_AUTH","memo","code","codeLength","trackingDirection","isTracking","isBig","idleMonkeyData","setIdleMonkeyData","useState","trackingMonkeyData","setTrackingMonkeyData","isFirstMonkeyLoaded","setIsFirstMonkeyLoaded","TRACKING_FRAMES_PER_SYMBOL","useEffect","getAnimationData","then","handleFirstMonkeyLoad","useCallback","id","className","AnimatedSticker","size","STICKER_SIZE_TWO_FA","undefined","animationData","play","onLoad","playSegment","startFrame","length","endFrame","getTrackingFrames","speed","noLoop","withGlobal","global","pick","authPhoneNumber","authIsCodeViaApp","authIsLoading","authError","setAuthCode","returnToAuthPhoneNumber","clearAuthError","getActions","lang","useLang","inputRef","useRef","setCode","setIsTracking","setTrackingDirection","IS_TOUCH_ENV","current","focus","useHistoryBack","onCodeChange","e","currentTarget","target","value","replace","substr","onClick","role","tabIndex","title","renderText","InputText","ref","label","onInput","error","autoComplete","inputMode","Loading","authHint","setAuthPassword","showPassword","setShowPassword","handleChangePasswordVisibility","isVisible","handleSubmit","password","isPasswordVisible","PasswordForm","clearError","hint","isLoading","onChangePasswordVisibility","onSubmit","signUp","uploadProfilePhoto","isButtonShown","setIsButtonShown","croppedFile","setCroppedFile","firstName","setFirstName","lastName","setLastName","action","method","event","preventDefault","file","AvatarEditable","onChange","Button","type","ripple","lottiePromise","RLottie","async","ensureLottie","default","setTimeout","quality","isLowPriority","color","forceOnHeavyAnimation","onEnded","animation","setAnimation","container","wasPlaying","isFrozen","isFirstRender","playRef","playSegmentRef","exec","newAnimation","setSpeed","fastRaf","setColor","destroy","playAnimation","shouldRestart","goToAndPlay","pauseAnimation","pause","freezeAnimation","isPlaying","unfreezeAnimation","unfreezeAnimationOnRaf","changeData","useHeavyAnimationCheck","useBackgroundMode","fullClassName","buildClassName","style","FOCUS_DELAY_TIMEOUT_MS","placeholder","submitLabel","onInputChange","setPassword","canSubmit","setCanSubmit","requestAnimationFrame","select","dir","isRtl","MIN_PASSWORD_LENGTH","SEGMENT_COVER_EYES","SEGMENT_UNCOVER_EYE","SEGMENT_COVER_EYE","closeMonkeyData","setCloseMonkeyData","peekMonkeyData","setPeekMonkeyData","isPeekShown","setIsPeekShown","ANIMATED_STICKERS_PATHS","MonkeyIdle","MonkeyTracking","MonkeyClose","MonkeyPeek","FoldersAll","FoldersNew","DiscussionGroups","CameraFlip","HandFilled","HandOutline","Speaker","VoiceAllowTalk","VoiceMini","VoiceMuted","VoiceOutlined","Peach","Eggplant","Cumshot","JoinRequest","Invite","name","path","window","location","origin","mediaLoader","ApiMediaFormat","cropperResultOptions","format","circle","width","height","Croppie","croppiePromise","cropper","onClose","isCroppieReady","setIsCroppieReady","imgFile","cropContainer","document","getElementById","offsetWidth","offsetHeight","enableZoom","boundary","viewport","dataUri","blobToDataUri","bind","url","err","DEBUG","console","initCropper","ensureCroppie","Modal","isOpen","Boolean","hasCloseButton","round","result","croppedImg","blobToFile","ariaLabel","disabled","currentAvatarBlobUrl","selectedFile","setSelectedFile","croppedBlobUrl","setCroppedBlobUrl","labelClassName","files","accept","src","alt","URL","revokeObjectURL","createObjectURL","dialogRef","header","noBackdrop","children","onCloseAnimationEnd","onEnter","shouldSkipHistoryAnimations","shouldRender","transitionClassNames","useShowTransition","modalRef","captureKeyboardListeners","onEsc","element","handleKeyDown","key","stopPropagation","focusableElements","Array","from","querySelectorAll","currentFocusedIndex","findIndex","em","isSameNode","activeElement","newFocusedIndex","shiftKey","addEventListener","removeEventListener","trapFocus","forceClose","useEffectWithPrevDeps","prevIsOpen","body","classList","toggle","dispatchHeavyAnimationEvent","remove","Portal","containerId","elementRef","createElement","useLayoutEffect","querySelector","add","appendChild","TeactDOM","removeChild","onBlur","onFocus","hasFocus"],"sourceRoot":""} |