@rownd/react-native 0.2.0 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +3 -1
  2. package/lib/commonjs/components/AutoSigninDialog.js +10 -4
  3. package/lib/commonjs/components/AutoSigninDialog.js.map +1 -1
  4. package/lib/commonjs/components/BottomSheetTextInput/BottomSheetTextInput.js.map +1 -1
  5. package/lib/commonjs/components/BottomSheetTextInput/index.js +8 -0
  6. package/lib/commonjs/components/BottomSheetTextInput/index.js.map +1 -1
  7. package/lib/commonjs/components/BottomSheetTextInput/types.js.map +1 -1
  8. package/lib/commonjs/components/DefaultContext.js +1 -1
  9. package/lib/commonjs/components/DefaultContext.js.map +1 -1
  10. package/lib/commonjs/components/GlobalContext.js.map +1 -1
  11. package/lib/commonjs/components/RowndComponents.js +0 -2
  12. package/lib/commonjs/components/RowndComponents.js.map +1 -1
  13. package/lib/commonjs/components/SignIn.js +21 -8
  14. package/lib/commonjs/components/SignIn.js.map +1 -1
  15. package/lib/commonjs/types.js.map +1 -1
  16. package/lib/module/components/AutoSigninDialog.js +10 -4
  17. package/lib/module/components/AutoSigninDialog.js.map +1 -1
  18. package/lib/module/components/BottomSheetTextInput/BottomSheetTextInput.js.map +1 -1
  19. package/lib/module/components/BottomSheetTextInput/index.js +2 -0
  20. package/lib/module/components/BottomSheetTextInput/index.js.map +1 -1
  21. package/lib/module/components/BottomSheetTextInput/types.js.map +1 -1
  22. package/lib/module/components/DefaultContext.js +1 -1
  23. package/lib/module/components/DefaultContext.js.map +1 -1
  24. package/lib/module/components/GlobalContext.js.map +1 -1
  25. package/lib/module/components/RowndComponents.js +1 -3
  26. package/lib/module/components/RowndComponents.js.map +1 -1
  27. package/lib/module/components/SignIn.js +21 -7
  28. package/lib/module/components/SignIn.js.map +1 -1
  29. package/lib/module/types.js.map +1 -1
  30. package/lib/package.json +1 -3
  31. package/lib/typescript/src/components/BottomSheetTextInput/BottomSheetTextInput.d.ts +1 -1
  32. package/lib/typescript/src/components/BottomSheetTextInput/index.d.ts +1 -1
  33. package/lib/typescript/src/components/BottomSheetTextInput/types.d.ts +1 -1
  34. package/lib/typescript/src/components/DefaultContext.d.ts +1 -1
  35. package/lib/typescript/src/components/GlobalContext.d.ts +2 -2
  36. package/package.json +1 -3
  37. package/src/components/AutoSigninDialog.tsx +4 -4
  38. package/src/components/BottomSheetTextInput/BottomSheetTextInput.tsx +1 -1
  39. package/src/components/BottomSheetTextInput/index.ts +1 -1
  40. package/src/components/BottomSheetTextInput/types.ts +1 -1
  41. package/src/components/DefaultContext.tsx +2 -2
  42. package/src/components/GlobalContext.tsx +2 -2
  43. package/src/components/RowndComponents.tsx +0 -3
  44. package/src/components/SignIn.tsx +21 -9
  45. package/src/types.ts +1 -1
  46. package/lib/commonjs/tailwind.config.js +0 -17
  47. package/lib/commonjs/tailwind.config.js.map +0 -1
  48. package/lib/commonjs/utils/tailwind.js +0 -17
  49. package/lib/commonjs/utils/tailwind.js.map +0 -1
  50. package/lib/module/tailwind.config.js +0 -10
  51. package/lib/module/tailwind.config.js.map +0 -1
  52. package/lib/module/utils/tailwind.js +0 -5
  53. package/lib/module/utils/tailwind.js.map +0 -1
  54. package/lib/typescript/src/tailwind.config.d.ts +0 -10
  55. package/lib/typescript/src/utils/tailwind.d.ts +0 -2
  56. package/src/tailwind.config.ts +0 -9
  57. package/src/utils/tailwind.ts +0 -6
@@ -1 +1 @@
1
- {"version":3,"names":["LoginStep","LoginVerificationStatus","SignIn","navTo","useNav","getFingerprint","getChallengeIfPresent","clearFingerprint","useDeviceFingerprint","state","dispatch","useGlobalContext","config","nav","app","user","decodedAccessToken","auth","access_token","jwt_decode","userIdentifier","setUserIdentifier","useState","fieldError","setFieldError","step","setStep","SUCCESS","INIT","error","setError","allowedIdentifiers","useMemo","requestId","setRequestId","loginPollStart","setLoginPollStart","isSubmitting","setIsSubmitting","loginType","setLoginType","_phoneDetails","setPhoneDetails","isValidUserIdentifier","setIsValidUserIdentifier","requiresAdditionalFields","setRequiresAdditionalFields","options","init_data","bottomSheetModalRef","useRef","useEffect","current","present","addlFieldInit","useCallback","currentState","addlFields","hub","additional_fields","addlInputs","default_values","newState","length","field","name","value","fieldReducer","action","console","log","type","payload","addlFieldValues","addlFieldDispatch","useReducer","client","api","useApi","validateEmail","email","re","isValid","test","String","toLowerCase","isValidPhone","phoneResult","phone","phoneNumber","isValidEmail","emailAtIdx","indexOf","emailSuffixIdx","substring","validateInput","validations","includes","push","some","fn","pollLoginStatus","resp","post","headers","appKey","json","challenge_id","err","status","Error","code","PENDING","ActionType","LOGIN_SUCCESS","differenceInMinutes","Date","now","ERROR","FAILURE","useInterval","WAITING","post_login_redirect","postLoginUrl","Linking","openURL","CHANGE_ROUTE","route","is_verified_user","initSignIn","return_url","user_data","Object","values","data","f","undefined","default_user_id_format","user_id","fingerprint","challengeEntry","id","hash","visitorId","challenge","auth_tokens","app_id","response","message","launchRowndWebsite","handleAddlFieldChange","evt","target","handleClose","setTimeout","hide","snapPoints","renderBackdrop","cbProps","extraBottomSheetProps","bottomSheetMeta","version","startsWith","keyboardBehavior","android_keyboardInputMode","enablePanDownToClose","styles","bottomSheet","innerContainer","show_app_icon","icon","icon_content_type","appLogo","uri","dialogHeading","inputLabel","identifierInput","text","trim","map","renderField","button","buttonDisabled","buttonSubmitting","buttonText","buttonContent","buttonDisabledText","loadingIndicator","signInNoticeText","tw","style","link","signInVerificationImage","StyleSheet","create","modal","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","borderRadius","borderColor","borderWidth","padding","container","flex","header","alignItems","backgroundColor","paddingVertical","borderTopLeftRadius","borderTopRightRadius","panelHandle","resizeMode","textAlign","marginLeft","marginRight","marginBottom","fontSize","marginTop","color","display","justifyContent","buttonPressed","opacity","buttonTextInner"],"sources":["SignIn.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react';\nimport { differenceInMinutes } from 'date-fns';\nimport {\n View,\n StyleSheet,\n TouchableOpacity,\n Image,\n ActivityIndicator,\n Linking,\n Text,\n} from 'react-native';\n// import Text from './DarkText';\nimport { SvgCssUri } from 'react-native-svg';\nimport tw from '../utils/tailwind';\nimport phone, { type PhoneResult } from 'phone';\nimport jwt_decode from 'jwt-decode';\nimport {\n BottomSheetBackdrop,\n BottomSheetBackdropProps,\n BottomSheetModal,\n} from '@gorhom/bottom-sheet';\nimport BottomSheetTextInput from './BottomSheetTextInput';\nimport bottomSheetMeta from '@gorhom/bottom-sheet/package.json';\n\nimport { useApi, useInterval, useNav, useDeviceFingerprint } from '../hooks';\nimport { useGlobalContext } from './GlobalContext';\nimport { ActionType } from '../data/actions';\nimport { renderField } from '../utils/form';\n\n// Image imports\nimport ImageEmailVerifyWaiting from './images/EmailVerifyWaiting';\nimport ImagePhoneVerifyWaiting from './images/PhoneVerifyWaiting';\nimport ImageCheckmarkFilled from './images/CheckmarkFilled';\n\nenum LoginStep {\n INIT = 'init',\n WAITING = 'waiting',\n SUCCESS = 'success',\n FAILURE = 'failure',\n ERROR = 'error',\n}\n\ntype LoginInitBody = {\n challenge_id: string;\n message: string;\n auth_tokens?: {\n access_token: string;\n refresh_token: string;\n };\n registration_status: string;\n init_data?: Record<string, any>;\n};\n\ntype LoginSuccessBody = {\n access_token: string;\n refresh_token: string;\n app_user_id: string;\n app_id: string;\n status: string;\n};\n\nenum LoginVerificationStatus {\n PENDING = 'pending',\n EXPIRED = 'expired',\n VERIFIED = 'verified',\n}\n\nexport function SignIn() {\n const navTo = useNav();\n const { getFingerprint, getChallengeIfPresent, clearFingerprint } =\n useDeviceFingerprint();\n const { state, dispatch } = useGlobalContext();\n const { config, nav, app, user } = state;\n\n let decodedAccessToken: any;\n if (state.auth.access_token) {\n decodedAccessToken = jwt_decode(state.auth.access_token);\n }\n\n const [userIdentifier, setUserIdentifier] = useState('');\n const [fieldError, setFieldError] = useState<string | null>(null);\n const [step, setStep] = useState(\n state.auth.access_token &&\n decodedAccessToken?.['https://auth.rownd.io/is_verified_user'] !== false\n ? LoginStep.SUCCESS\n : LoginStep.INIT\n );\n const [error, setError] = useState('');\n const allowedIdentifiers = useMemo(() => ['email', 'phone'], []);\n const [requestId, setRequestId] = useState<string | null>(null);\n const [loginPollStart, setLoginPollStart] = useState<number | null>(null);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [loginType, setLoginType] = useState<'email' | 'phone' | null>(null);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_phoneDetails, setPhoneDetails] = useState<PhoneResult | null>(null); // TODO: For parity with web, need to use `phoneDetails` to update the input visuals\n const [isValidUserIdentifier, setIsValidUserIdentifier] = useState(false);\n const [requiresAdditionalFields, setRequiresAdditionalFields] = useState(\n nav?.options?.init_data\n );\n\n const bottomSheetModalRef = useRef<BottomSheetModal>(null);\n useEffect(() => {\n if (bottomSheetModalRef.current) {\n bottomSheetModalRef.current.present();\n }\n }, []);\n\n const addlFieldInit = useCallback(\n (currentState: Record<string, string>) => {\n const addlFields = app?.config?.hub?.auth?.additional_fields;\n const addlInputs =\n nav?.options?.init_data || nav?.options?.default_values || {};\n\n const newState: Record<string, string> = {};\n if (addlFields?.length) {\n for (const field of addlFields) {\n if (field?.options) {\n newState[field.name] =\n addlInputs?.[field.name] || field.options[0].value;\n }\n }\n }\n\n return {\n ...currentState,\n ...newState,\n };\n },\n [\n app?.config?.hub?.auth?.additional_fields,\n nav?.options?.default_values,\n nav?.options?.init_data,\n ]\n );\n\n const fieldReducer = useCallback(\n (\n currentState: any,\n action: { type: string; payload?: Record<string, string> }\n ) => {\n console.log('fieldReducer', action);\n switch (action.type) {\n case 'reset':\n return addlFieldInit(currentState);\n\n default:\n return {\n ...currentState,\n ...action.payload,\n };\n }\n },\n [addlFieldInit]\n );\n\n const [addlFieldValues, addlFieldDispatch] = useReducer(\n fieldReducer,\n {},\n addlFieldInit\n );\n\n const { client: api } = useApi();\n\n function validateEmail(email: string): boolean {\n const re =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n const isValid = re.test(String(email).toLowerCase());\n\n if (!isValid) {\n setFieldError('Invalid email address');\n return false;\n }\n\n setFieldError(null);\n return true;\n }\n\n const isValidPhone = useCallback((): boolean => {\n const phoneResult = phone(userIdentifier);\n if (!phoneResult.isValid) {\n setLoginType(null);\n setPhoneDetails(null);\n return false;\n }\n\n setLoginType('phone');\n setPhoneDetails(phoneResult);\n setUserIdentifier(phoneResult.phoneNumber);\n return true;\n }, [userIdentifier]);\n\n const isValidEmail = useCallback((): boolean => {\n const emailAtIdx = userIdentifier?.indexOf('@');\n const emailSuffixIdx = userIdentifier?.substring(emailAtIdx).indexOf('.');\n if (\n emailAtIdx > 0 &&\n emailSuffixIdx > 0 &&\n userIdentifier?.substring(emailAtIdx + emailSuffixIdx).length >= 3\n ) {\n return validateEmail(userIdentifier);\n }\n\n return false;\n }, [userIdentifier]);\n\n const validateInput = useCallback(() => {\n const validations = [];\n if (allowedIdentifiers.includes('phone')) {\n validations.push(isValidPhone);\n }\n\n if (allowedIdentifiers.includes('email')) {\n validations.push(isValidEmail);\n }\n\n if (!validations.some((fn) => fn())) {\n setIsValidUserIdentifier(false);\n } else {\n setIsValidUserIdentifier(true);\n }\n }, [allowedIdentifiers, isValidEmail, isValidPhone]);\n\n // Fire validation as data changes in field\n useEffect(validateInput, [validateInput]);\n\n const pollLoginStatus = useCallback(async () => {\n try {\n const resp: LoginSuccessBody = await api\n .post(`hub/auth/challenge_status`, {\n headers: {\n 'x-rownd-app-key': config?.appKey,\n },\n json: {\n challenge_id: requestId,\n [loginType === 'phone' ? 'phone' : 'email']: userIdentifier,\n },\n })\n .json();\n\n let err: any;\n switch (resp.status) {\n case 'pending':\n err = new Error('Login challenge is still pending');\n err.code = LoginVerificationStatus.PENDING;\n throw err;\n\n case 'expired':\n err = new Error('Login challenge is still pending');\n err.code = LoginVerificationStatus.PENDING;\n throw err;\n\n case 'verified':\n break;\n\n default:\n err = new Error('Unknown login challenge status');\n throw err;\n }\n\n dispatch({\n type: ActionType.LOGIN_SUCCESS,\n payload: resp,\n });\n\n setStep(LoginStep.SUCCESS);\n } catch (err: any) {\n // logger.log('login poll error', err);\n\n // If network error, try again up to 1 minute, else fail\n if (!err.code && differenceInMinutes(Date.now(), loginPollStart!) > 0) {\n setStep(LoginStep.ERROR);\n setError('Network error. Please try again later.');\n return;\n }\n\n // If request expires, then fail (assume > 6 mins is a failure/expiration)\n if (\n (err.status || err.code) &&\n differenceInMinutes(Date.now(), loginPollStart!) > 6\n ) {\n setStep(LoginStep.ERROR);\n setError('The sign in request expired.');\n return;\n }\n\n if (err.status && err.status >= 400) {\n setStep(LoginStep.FAILURE);\n setError('Sign in unsuccessful.');\n }\n }\n }, [\n api,\n config?.appKey,\n dispatch,\n loginPollStart,\n loginType,\n requestId,\n userIdentifier,\n ]);\n\n // Polling when a login flow is in progress\n useInterval(pollLoginStatus, step === LoginStep.WAITING ? 5000 : null);\n\n // login polling manager\n useEffect(() => {\n if (step === LoginStep.SUCCESS) {\n if (nav?.options?.post_login_redirect || state.config?.postLoginUrl) {\n Linking.openURL(\n nav?.options?.post_login_redirect || state.config?.postLoginUrl\n );\n }\n\n dispatch({\n type: ActionType.CHANGE_ROUTE,\n payload: {\n route: '/',\n },\n });\n\n // Reset modal state if this user is unverified, since we'll need to re-submit at some point\n if (!state.auth.is_verified_user) {\n setStep(LoginStep.INIT);\n }\n }\n }, [\n dispatch,\n nav?.options?.post_login_redirect,\n pollLoginStatus,\n state.auth.is_verified_user,\n state.config?.postLoginUrl,\n step,\n ]);\n\n const initSignIn = useCallback(async () => {\n if (step === LoginStep.WAITING) {\n return;\n }\n\n // Validation\n if (fieldError) {\n return;\n }\n\n const payload = {\n [loginType === 'phone' ? 'phone' : 'email']: userIdentifier,\n return_url:\n nav?.options?.post_login_redirect || state.config?.postLoginUrl,\n user_data: Object.values(user.data).some(\n (f) => f !== null && f !== undefined\n )\n ? user.data\n : {}, // Include user.data if at least one field is defined\n };\n\n // Set the user_id to the application's default user id format if it is defined\n if (app.config?.default_user_id_format) {\n payload.user_id = app.config?.default_user_id_format;\n }\n\n if (requiresAdditionalFields) {\n payload.user_data = {\n ...payload.user_data,\n ...addlFieldValues,\n };\n }\n\n // Submission\n try {\n setIsSubmitting(true);\n\n // Get the browser fingerprint for future sign-ins that don't require re-verification\n const fingerprint = await getFingerprint();\n const challengeEntry = await getChallengeIfPresent(app.id, [\n userIdentifier,\n ]);\n payload.fingerprint = {\n hash: fingerprint.visitorId,\n challenge: challengeEntry?.value,\n };\n\n const resp: LoginInitBody = await api\n .post('hub/auth/init', {\n headers: {\n 'x-rownd-app-key': config?.appKey,\n },\n json: payload,\n })\n .json();\n\n // This will only be true when a user is signing in for the very first time and\n // the app allows unverified users OR the user was successfully fingerprinted.\n if (resp.auth_tokens) {\n dispatch({\n type: ActionType.LOGIN_SUCCESS,\n payload: {\n ...resp.auth_tokens,\n app_id: app.id,\n },\n });\n\n setStep(LoginStep.SUCCESS);\n return;\n } else if (payload?.fingerprint?.challenge) {\n // The fingerprint is probably expired, so delete the challenge for re-registration\n try {\n clearFingerprint(payload.fingerprint.challenge);\n } catch (err) {\n // no-op, but not likely to throw anyway\n }\n }\n\n setRequestId(resp.challenge_id);\n setStep(LoginStep.WAITING);\n setLoginPollStart(Date.now());\n } catch (err: any) {\n // logger.error(err);\n\n if (err.response.status === 400) {\n setStep(LoginStep.INIT);\n setRequiresAdditionalFields(true);\n return;\n }\n\n setStep(LoginStep.ERROR);\n setError(err.message);\n } finally {\n setIsSubmitting(false);\n }\n }, [\n step,\n fieldError,\n loginType,\n userIdentifier,\n nav?.options?.post_login_redirect,\n state.config?.postLoginUrl,\n user.data,\n app.config?.default_user_id_format,\n app.id,\n requiresAdditionalFields,\n addlFieldValues,\n getFingerprint,\n getChallengeIfPresent,\n api,\n config?.appKey,\n dispatch,\n clearFingerprint,\n ]);\n\n const launchRowndWebsite = () => {\n Linking.openURL('https://rownd.io');\n };\n\n const handleAddlFieldChange = (evt: Event) => {\n const target = evt.target as HTMLInputElement;\n const { value, name } = target;\n\n addlFieldDispatch({\n type: 'default',\n payload: {\n [name]: value,\n },\n });\n };\n\n const handleClose = useCallback(() => {\n setTimeout(() => {\n navTo({ hide: true });\n }, 150);\n }, [navTo]);\n\n const snapPoints = useMemo(() => ['25%', '70%'], []);\n\n const renderBackdrop = useCallback(\n (cbProps: BottomSheetBackdropProps) => (\n <BottomSheetBackdrop {...cbProps} pressBehavior=\"close\" />\n ),\n []\n );\n\n let extraBottomSheetProps: any = {};\n if (bottomSheetMeta.version.startsWith('4')) {\n extraBottomSheetProps.keyboardBehavior = 'fillParent';\n extraBottomSheetProps.android_keyboardInputMode = 'adjustResize';\n extraBottomSheetProps.enablePanDownToClose =\n state.nav.options.type === 'error';\n }\n\n return (\n <BottomSheetModal\n snapPoints={snapPoints}\n index={1}\n backdropComponent={renderBackdrop}\n onDismiss={handleClose}\n style={styles.bottomSheet}\n ref={bottomSheetModalRef}\n {...extraBottomSheetProps}\n >\n <View style={styles.innerContainer}>\n {step === LoginStep.INIT && (\n <>\n {app?.config?.hub?.auth?.show_app_icon &&\n app?.icon &&\n (app.icon_content_type === 'image/svg+xml' ? (\n <SvgCssUri uri={app.icon} style={styles.appLogo} />\n ) : (\n <Image style={styles.appLogo} source={{ uri: app.icon }} />\n ))}\n <Text style={styles.dialogHeading}>Sign in or sign up</Text>\n <Text style={styles.inputLabel}>Email or phone number</Text>\n <BottomSheetTextInput\n style={styles.identifierInput}\n placeholder=\"Enter here\"\n keyboardType=\"email-address\"\n textContentType=\"emailAddress\"\n returnKeyLabel=\"Sign in\"\n returnKeyType=\"go\"\n enablesReturnKeyAutomatically={true}\n autoCapitalize=\"none\"\n onChangeText={(text: string) => setUserIdentifier(text.trim())}\n onBlur={validateInput}\n value={userIdentifier}\n onSubmitEditing={initSignIn}\n />\n {requiresAdditionalFields &&\n app?.config?.hub?.auth?.additional_fields.map((field) => {\n return renderField({\n ...field,\n value: addlFieldValues[field.name] || '',\n [['input', 'text', 'tel', 'email'].includes(field.type)\n ? 'onInput'\n : 'onChange']: handleAddlFieldChange,\n });\n })}\n <TouchableOpacity\n disabled={!isValidUserIdentifier || isSubmitting}\n onPress={initSignIn}\n >\n <View\n style={{\n ...styles.button,\n ...(!isValidUserIdentifier && styles.buttonDisabled),\n ...(isSubmitting && styles.buttonSubmitting),\n }}\n >\n <View style={styles.buttonText}>\n <Text\n style={\n isValidUserIdentifier\n ? styles.buttonContent\n : {\n ...styles.buttonContent,\n ...styles.buttonDisabledText,\n }\n }\n >\n {isSubmitting && (\n <ActivityIndicator\n size=\"small\"\n color=\"#efefef\"\n style={styles.loadingIndicator}\n />\n )}\n {isSubmitting ? 'Just a sec...' : 'Continue'}\n </Text>\n </View>\n </View>\n </TouchableOpacity>\n <Text style={styles.signInNoticeText}>\n By continuing, you're agreeing to the terms of service that govern\n this app and to receive email or text messages for verification\n purposes.\n </Text>\n </>\n )}\n\n {step === LoginStep.WAITING && (\n <>\n <Text style={styles.dialogHeading}>\n Thanks! Verify your{' '}\n {loginType === 'phone' ? 'phone number' : 'email'} to finish\n </Text>\n <Text style={tw.style('py-6')}>\n Click the link in the message we just sent to{' '}\n <Text style={tw.style('italic')}>{userIdentifier}</Text> to verify\n and finish.\n <Text\n style={[styles.link]}\n onPress={() => setStep(LoginStep.INIT)}\n >\n &nbsp;Re-send message\n </Text>\n </Text>\n\n <View style={styles.signInVerificationImage}>\n {loginType === 'phone' ? (\n <ImagePhoneVerifyWaiting />\n ) : (\n <ImageEmailVerifyWaiting />\n )}\n </View>\n\n <TouchableOpacity\n style={[styles.button]}\n onPress={() => setStep(LoginStep.INIT)}\n >\n <Text style={styles.buttonContent}>\n Try a different{' '}\n {loginType === 'phone' ? 'phone number' : 'email'}\n </Text>\n </TouchableOpacity>\n </>\n )}\n\n {step === LoginStep.SUCCESS && (\n <>\n <View style={styles.signInVerificationImage}>\n <ImageCheckmarkFilled />\n </View>\n </>\n )}\n\n {step === LoginStep.FAILURE && (\n <>\n <Text style={tw.style('text-base')}>Whoops, that didn't work!</Text>\n <TouchableOpacity\n style={styles.button}\n onPress={() => setStep(LoginStep.INIT)}\n >\n <Text style={styles.buttonContent}>Try again</Text>\n </TouchableOpacity>\n </>\n )}\n\n {step === LoginStep.ERROR && (\n <>\n <Text style={tw.style('text-base')}>\n An error occurred while signing you in.\n </Text>\n {!!error && <Text style={tw.style('text-rose-800')}>{error}</Text>}\n <TouchableOpacity\n style={styles.button}\n onPress={() => setStep(LoginStep.INIT)}\n >\n <Text style={styles.buttonContent}>Try again</Text>\n </TouchableOpacity>\n </>\n )}\n <Text>\n Powered by{' '}\n <Text style={styles.link} onPress={launchRowndWebsite}>\n Rownd\n </Text>\n </Text>\n </View>\n </BottomSheetModal>\n );\n}\n\nconst styles = StyleSheet.create({\n modal: {\n // flex: 1,\n },\n bottomSheet: {\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 12,\n },\n shadowOpacity: 0.58,\n shadowRadius: 16.0,\n\n elevation: 24,\n },\n innerContainer: {\n borderRadius: 20,\n borderColor: 'transparent',\n borderWidth: 0,\n padding: 25,\n },\n container: {\n flex: 1,\n padding: 24,\n },\n header: {\n alignItems: 'center',\n backgroundColor: 'white',\n paddingVertical: 20,\n borderTopLeftRadius: 20,\n borderTopRightRadius: 20,\n },\n panelHandle: {\n width: 40,\n height: 2,\n backgroundColor: 'rgba(0,0,0,0.3)',\n borderRadius: 4,\n },\n appLogo: {\n padding: 50,\n width: 75,\n height: 75,\n resizeMode: 'center',\n textAlign: 'center',\n marginLeft: 'auto',\n marginRight: 'auto',\n marginBottom: 20,\n },\n dialogHeading: {\n fontSize: 24,\n },\n inputLabel: {\n marginTop: 20,\n marginBottom: 5,\n },\n identifierInput: {\n backgroundColor: '#eee',\n borderRadius: 8,\n padding: 10,\n fontSize: 18,\n },\n button: {\n borderRadius: 10,\n padding: 10,\n marginTop: 20,\n marginBottom: 30,\n elevation: 0,\n backgroundColor: '#5b0ae0',\n color: '#fff',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n // height: 45,\n },\n buttonDisabled: {\n backgroundColor: '#eee',\n },\n buttonPressed: {\n opacity: 0.5,\n },\n buttonContent: {\n textAlign: 'center',\n fontSize: 18,\n color: '#fff',\n },\n buttonText: {\n // marginHorizontal: 10,\n // paddingHorizontal: 10,\n // fontSize: 18,\n // color: '#fff',\n },\n buttonTextInner: {\n fontSize: 18,\n },\n buttonDisabledText: {\n color: '#8e8e8e',\n },\n buttonSubmitting: {\n backgroundColor: '#2f0492',\n color: '#c7c7c7',\n },\n loadingIndicator: {\n marginRight: 10,\n },\n signInNoticeText: {\n fontSize: 12,\n marginBottom: 20,\n },\n signInVerificationImage: {\n alignItems: 'center',\n },\n link: {\n color: '#6114e1',\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"names":["LoginStep","LoginVerificationStatus","SignIn","navTo","useNav","getFingerprint","getChallengeIfPresent","clearFingerprint","useDeviceFingerprint","state","dispatch","useGlobalContext","config","nav","app","user","decodedAccessToken","auth","access_token","jwt_decode","userIdentifier","setUserIdentifier","useState","fieldError","setFieldError","step","setStep","SUCCESS","INIT","error","setError","allowedIdentifiers","useMemo","requestId","setRequestId","loginPollStart","setLoginPollStart","isSubmitting","setIsSubmitting","loginType","setLoginType","_phoneDetails","setPhoneDetails","isValidUserIdentifier","setIsValidUserIdentifier","requiresAdditionalFields","setRequiresAdditionalFields","options","init_data","bottomSheetModalRef","useRef","useEffect","current","present","addlFieldInit","useCallback","currentState","addlFields","hub","additional_fields","addlInputs","default_values","newState","length","field","name","value","fieldReducer","action","console","log","type","payload","addlFieldValues","addlFieldDispatch","useReducer","client","api","useApi","validateEmail","email","re","isValid","test","String","toLowerCase","isValidPhone","phoneResult","phone","phoneNumber","isValidEmail","emailAtIdx","indexOf","emailSuffixIdx","substring","validateInput","validations","includes","push","some","fn","pollLoginStatus","resp","post","headers","appKey","json","challenge_id","err","status","Error","code","PENDING","ActionType","LOGIN_SUCCESS","differenceInMinutes","Date","now","ERROR","FAILURE","useInterval","WAITING","post_login_redirect","postLoginUrl","Linking","openURL","CHANGE_ROUTE","route","is_verified_user","initSignIn","return_url","user_data","Object","values","data","f","undefined","default_user_id_format","user_id","fingerprint","challengeEntry","id","hash","visitorId","challenge","auth_tokens","app_id","response","message","launchRowndWebsite","handleAddlFieldChange","evt","target","handleClose","setTimeout","hide","snapPoints","renderBackdrop","cbProps","extraBottomSheetProps","bottomSheetMeta","version","startsWith","keyboardBehavior","android_keyboardInputMode","enablePanDownToClose","styles","bottomSheet","innerContainer","show_app_icon","icon","icon_content_type","appLogo","uri","dialogHeading","inputLabel","identifierInput","text","trim","map","renderField","button","buttonDisabled","buttonSubmitting","buttonText","buttonContent","buttonDisabledText","loadingIndicator","signInNoticeText","py6","italic","link","signInVerificationImage","textBase","textRose800","StyleSheet","create","modal","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","borderRadius","borderColor","borderWidth","padding","container","flex","header","alignItems","backgroundColor","paddingVertical","borderTopLeftRadius","borderTopRightRadius","panelHandle","resizeMode","textAlign","marginLeft","marginRight","marginBottom","fontSize","marginTop","color","display","justifyContent","buttonPressed","opacity","buttonTextInner","fontStyle","lineHeight"],"sources":["SignIn.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react';\nimport { differenceInMinutes } from 'date-fns';\nimport {\n View,\n StyleSheet,\n TouchableOpacity,\n Image,\n ActivityIndicator,\n Linking,\n Text,\n} from 'react-native';\n// import Text from './DarkText';\nimport { SvgCssUri } from 'react-native-svg';\nimport phone, { PhoneResult } from 'phone';\nimport jwt_decode from 'jwt-decode';\nimport {\n BottomSheetBackdrop,\n BottomSheetBackdropProps,\n BottomSheetModal,\n} from '@gorhom/bottom-sheet';\nimport BottomSheetTextInput from './BottomSheetTextInput';\nimport bottomSheetMeta from '@gorhom/bottom-sheet/package.json';\n\nimport { useApi, useInterval, useNav, useDeviceFingerprint } from '../hooks';\nimport { useGlobalContext } from './GlobalContext';\nimport { ActionType } from '../data/actions';\nimport { renderField } from '../utils/form';\n\n// Image imports\nimport ImageEmailVerifyWaiting from './images/EmailVerifyWaiting';\nimport ImagePhoneVerifyWaiting from './images/PhoneVerifyWaiting';\nimport ImageCheckmarkFilled from './images/CheckmarkFilled';\n\nenum LoginStep {\n INIT = 'init',\n WAITING = 'waiting',\n SUCCESS = 'success',\n FAILURE = 'failure',\n ERROR = 'error',\n}\n\ntype LoginInitBody = {\n challenge_id: string;\n message: string;\n auth_tokens?: {\n access_token: string;\n refresh_token: string;\n };\n registration_status: string;\n init_data?: Record<string, any>;\n};\n\ntype LoginSuccessBody = {\n access_token: string;\n refresh_token: string;\n app_user_id: string;\n app_id: string;\n status: string;\n};\n\nenum LoginVerificationStatus {\n PENDING = 'pending',\n EXPIRED = 'expired',\n VERIFIED = 'verified',\n}\n\nexport function SignIn() {\n const navTo = useNav();\n const { getFingerprint, getChallengeIfPresent, clearFingerprint } =\n useDeviceFingerprint();\n const { state, dispatch } = useGlobalContext();\n const { config, nav, app, user } = state;\n\n let decodedAccessToken: any;\n if (state.auth.access_token) {\n decodedAccessToken = jwt_decode(state.auth.access_token);\n }\n\n const [userIdentifier, setUserIdentifier] = useState('');\n const [fieldError, setFieldError] = useState<string | null>(null);\n const [step, setStep] = useState(\n state.auth.access_token &&\n decodedAccessToken?.['https://auth.rownd.io/is_verified_user'] !== false\n ? LoginStep.SUCCESS\n : LoginStep.INIT\n );\n const [error, setError] = useState('');\n const allowedIdentifiers = useMemo(() => ['email', 'phone'], []);\n const [requestId, setRequestId] = useState<string | null>(null);\n const [loginPollStart, setLoginPollStart] = useState<number | null>(null);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [loginType, setLoginType] = useState<'email' | 'phone' | null>(null);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_phoneDetails, setPhoneDetails] = useState<PhoneResult | null>(null); // TODO: For parity with web, need to use `phoneDetails` to update the input visuals\n const [isValidUserIdentifier, setIsValidUserIdentifier] = useState(false);\n const [requiresAdditionalFields, setRequiresAdditionalFields] = useState(\n nav?.options?.init_data\n );\n\n const bottomSheetModalRef = useRef<BottomSheetModal>(null);\n useEffect(() => {\n if (bottomSheetModalRef.current) {\n bottomSheetModalRef.current.present();\n }\n }, []);\n\n const addlFieldInit = useCallback(\n (currentState: Record<string, string>) => {\n const addlFields = app?.config?.hub?.auth?.additional_fields;\n const addlInputs =\n nav?.options?.init_data || nav?.options?.default_values || {};\n\n const newState: Record<string, string> = {};\n if (addlFields?.length) {\n for (const field of addlFields) {\n if (field?.options) {\n newState[field.name] =\n addlInputs?.[field.name] || field.options[0].value;\n }\n }\n }\n\n return {\n ...currentState,\n ...newState,\n };\n },\n [\n app?.config?.hub?.auth?.additional_fields,\n nav?.options?.default_values,\n nav?.options?.init_data,\n ]\n );\n\n const fieldReducer = useCallback(\n (\n currentState: any,\n action: { type: string; payload?: Record<string, string> }\n ) => {\n console.log('fieldReducer', action);\n switch (action.type) {\n case 'reset':\n return addlFieldInit(currentState);\n\n default:\n return {\n ...currentState,\n ...action.payload,\n };\n }\n },\n [addlFieldInit]\n );\n\n const [addlFieldValues, addlFieldDispatch] = useReducer(\n fieldReducer,\n {},\n addlFieldInit\n );\n\n const { client: api } = useApi();\n\n function validateEmail(email: string): boolean {\n const re =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n const isValid = re.test(String(email).toLowerCase());\n\n if (!isValid) {\n setFieldError('Invalid email address');\n return false;\n }\n\n setFieldError(null);\n return true;\n }\n\n const isValidPhone = useCallback((): boolean => {\n const phoneResult = phone(userIdentifier);\n if (!phoneResult.isValid) {\n setLoginType(null);\n setPhoneDetails(null);\n return false;\n }\n\n setLoginType('phone');\n setPhoneDetails(phoneResult);\n setUserIdentifier(phoneResult.phoneNumber);\n return true;\n }, [userIdentifier]);\n\n const isValidEmail = useCallback((): boolean => {\n const emailAtIdx = userIdentifier?.indexOf('@');\n const emailSuffixIdx = userIdentifier?.substring(emailAtIdx).indexOf('.');\n if (\n emailAtIdx > 0 &&\n emailSuffixIdx > 0 &&\n userIdentifier?.substring(emailAtIdx + emailSuffixIdx).length >= 3\n ) {\n return validateEmail(userIdentifier);\n }\n\n return false;\n }, [userIdentifier]);\n\n const validateInput = useCallback(() => {\n const validations = [];\n if (allowedIdentifiers.includes('phone')) {\n validations.push(isValidPhone);\n }\n\n if (allowedIdentifiers.includes('email')) {\n validations.push(isValidEmail);\n }\n\n if (!validations.some((fn) => fn())) {\n setIsValidUserIdentifier(false);\n } else {\n setIsValidUserIdentifier(true);\n }\n }, [allowedIdentifiers, isValidEmail, isValidPhone]);\n\n // Fire validation as data changes in field\n useEffect(validateInput, [validateInput]);\n\n const pollLoginStatus = useCallback(async () => {\n try {\n const resp: LoginSuccessBody = await api\n .post(`hub/auth/challenge_status`, {\n headers: {\n 'x-rownd-app-key': config?.appKey,\n },\n json: {\n challenge_id: requestId,\n [loginType === 'phone' ? 'phone' : 'email']: userIdentifier,\n },\n })\n .json();\n\n let err: any;\n switch (resp.status) {\n case 'pending':\n err = new Error('Login challenge is still pending');\n err.code = LoginVerificationStatus.PENDING;\n throw err;\n\n case 'expired':\n err = new Error('Login challenge is still pending');\n err.code = LoginVerificationStatus.PENDING;\n throw err;\n\n case 'verified':\n break;\n\n default:\n err = new Error('Unknown login challenge status');\n throw err;\n }\n\n dispatch({\n type: ActionType.LOGIN_SUCCESS,\n payload: resp,\n });\n\n setStep(LoginStep.SUCCESS);\n } catch (err: any) {\n // logger.log('login poll error', err);\n\n // If network error, try again up to 1 minute, else fail\n if (!err.code && differenceInMinutes(Date.now(), loginPollStart!) > 0) {\n setStep(LoginStep.ERROR);\n setError('Network error. Please try again later.');\n return;\n }\n\n // If request expires, then fail (assume > 6 mins is a failure/expiration)\n if (\n (err.status || err.code) &&\n differenceInMinutes(Date.now(), loginPollStart!) > 6\n ) {\n setStep(LoginStep.ERROR);\n setError('The sign in request expired.');\n return;\n }\n\n if (err.status && err.status >= 400) {\n setStep(LoginStep.FAILURE);\n setError('Sign in unsuccessful.');\n }\n }\n }, [\n api,\n config?.appKey,\n dispatch,\n loginPollStart,\n loginType,\n requestId,\n userIdentifier,\n ]);\n\n // Polling when a login flow is in progress\n useInterval(pollLoginStatus, step === LoginStep.WAITING ? 5000 : null);\n\n // login polling manager\n useEffect(() => {\n if (step === LoginStep.SUCCESS) {\n if (nav?.options?.post_login_redirect || state.config?.postLoginUrl) {\n Linking.openURL(\n nav?.options?.post_login_redirect || state.config?.postLoginUrl\n );\n }\n\n dispatch({\n type: ActionType.CHANGE_ROUTE,\n payload: {\n route: '/',\n },\n });\n\n // Reset modal state if this user is unverified, since we'll need to re-submit at some point\n if (!state.auth.is_verified_user) {\n setStep(LoginStep.INIT);\n }\n }\n }, [\n dispatch,\n nav?.options?.post_login_redirect,\n pollLoginStatus,\n state.auth.is_verified_user,\n state.config?.postLoginUrl,\n step,\n ]);\n\n const initSignIn = useCallback(async () => {\n if (step === LoginStep.WAITING) {\n return;\n }\n\n // Validation\n if (fieldError) {\n return;\n }\n\n const payload = {\n [loginType === 'phone' ? 'phone' : 'email']: userIdentifier,\n return_url:\n nav?.options?.post_login_redirect || state.config?.postLoginUrl,\n user_data: Object.values(user.data).some(\n (f) => f !== null && f !== undefined\n )\n ? user.data\n : {}, // Include user.data if at least one field is defined\n };\n\n // Set the user_id to the application's default user id format if it is defined\n if (app.config?.default_user_id_format) {\n payload.user_id = app.config?.default_user_id_format;\n }\n\n if (requiresAdditionalFields) {\n payload.user_data = {\n ...payload.user_data,\n ...addlFieldValues,\n };\n }\n\n // Submission\n try {\n setIsSubmitting(true);\n\n // Get the browser fingerprint for future sign-ins that don't require re-verification\n const fingerprint = await getFingerprint();\n const challengeEntry = await getChallengeIfPresent(app.id, [\n userIdentifier,\n ]);\n payload.fingerprint = {\n hash: fingerprint.visitorId,\n challenge: challengeEntry?.value,\n };\n\n const resp: LoginInitBody = await api\n .post('hub/auth/init', {\n headers: {\n 'x-rownd-app-key': config?.appKey,\n },\n json: payload,\n })\n .json();\n\n // This will only be true when a user is signing in for the very first time and\n // the app allows unverified users OR the user was successfully fingerprinted.\n if (resp.auth_tokens) {\n dispatch({\n type: ActionType.LOGIN_SUCCESS,\n payload: {\n ...resp.auth_tokens,\n app_id: app.id,\n },\n });\n\n setStep(LoginStep.SUCCESS);\n return;\n } else if (payload?.fingerprint?.challenge) {\n // The fingerprint is probably expired, so delete the challenge for re-registration\n try {\n clearFingerprint(payload.fingerprint.challenge);\n } catch (err) {\n // no-op, but not likely to throw anyway\n }\n }\n\n setRequestId(resp.challenge_id);\n setStep(LoginStep.WAITING);\n setLoginPollStart(Date.now());\n } catch (err: any) {\n // logger.error(err);\n\n if (err.response.status === 400) {\n setStep(LoginStep.INIT);\n setRequiresAdditionalFields(true);\n return;\n }\n\n setStep(LoginStep.ERROR);\n setError(err.message);\n } finally {\n setIsSubmitting(false);\n }\n }, [\n step,\n fieldError,\n loginType,\n userIdentifier,\n nav?.options?.post_login_redirect,\n state.config?.postLoginUrl,\n user.data,\n app.config?.default_user_id_format,\n app.id,\n requiresAdditionalFields,\n addlFieldValues,\n getFingerprint,\n getChallengeIfPresent,\n api,\n config?.appKey,\n dispatch,\n clearFingerprint,\n ]);\n\n const launchRowndWebsite = () => {\n Linking.openURL('https://rownd.io');\n };\n\n const handleAddlFieldChange = (evt: Event) => {\n const target = evt.target as HTMLInputElement;\n const { value, name } = target;\n\n addlFieldDispatch({\n type: 'default',\n payload: {\n [name]: value,\n },\n });\n };\n\n const handleClose = useCallback(() => {\n setTimeout(() => {\n navTo({ hide: true });\n }, 150);\n }, [navTo]);\n\n const snapPoints = useMemo(() => ['25%', '70%'], []);\n\n const renderBackdrop = useCallback(\n (cbProps: BottomSheetBackdropProps) => (\n <BottomSheetBackdrop {...cbProps} pressBehavior=\"close\" />\n ),\n []\n );\n\n let extraBottomSheetProps: any = {};\n if (bottomSheetMeta.version.startsWith('4')) {\n extraBottomSheetProps.keyboardBehavior = 'fillParent';\n extraBottomSheetProps.android_keyboardInputMode = 'adjustResize';\n extraBottomSheetProps.enablePanDownToClose =\n state?.nav?.options?.type === 'error';\n }\n\n return (\n <BottomSheetModal\n snapPoints={snapPoints}\n index={1}\n backdropComponent={renderBackdrop}\n onDismiss={handleClose}\n style={styles.bottomSheet}\n ref={bottomSheetModalRef}\n {...extraBottomSheetProps}\n >\n <View style={styles.innerContainer}>\n {step === LoginStep.INIT && (\n <>\n {app?.config?.hub?.auth?.show_app_icon &&\n app?.icon &&\n (app.icon_content_type === 'image/svg+xml' ? (\n <SvgCssUri uri={app.icon} style={styles.appLogo} />\n ) : (\n <Image style={styles.appLogo} source={{ uri: app.icon }} />\n ))}\n <Text style={styles.dialogHeading}>Sign in or sign up</Text>\n <Text style={styles.inputLabel}>Email or phone number</Text>\n <BottomSheetTextInput\n style={styles.identifierInput}\n placeholder=\"Enter here\"\n keyboardType=\"email-address\"\n textContentType=\"emailAddress\"\n returnKeyLabel=\"Sign in\"\n returnKeyType=\"go\"\n enablesReturnKeyAutomatically={true}\n autoCapitalize=\"none\"\n onChangeText={(text: string) => setUserIdentifier(text.trim())}\n onBlur={validateInput}\n value={userIdentifier}\n onSubmitEditing={initSignIn}\n />\n {requiresAdditionalFields &&\n app?.config?.hub?.auth?.additional_fields.map((field) => {\n return renderField({\n ...field,\n value: addlFieldValues[field.name] || '',\n [['input', 'text', 'tel', 'email'].includes(field.type)\n ? 'onInput'\n : 'onChange']: handleAddlFieldChange,\n });\n })}\n <TouchableOpacity\n disabled={!isValidUserIdentifier || isSubmitting}\n onPress={initSignIn}\n >\n <View\n style={{\n ...styles.button,\n ...(!isValidUserIdentifier && styles.buttonDisabled),\n ...(isSubmitting && styles.buttonSubmitting),\n }}\n >\n <View style={styles.buttonText}>\n <Text\n style={\n isValidUserIdentifier\n ? styles.buttonContent\n : {\n ...styles.buttonContent,\n ...styles.buttonDisabledText,\n }\n }\n >\n {isSubmitting && (\n <ActivityIndicator\n size=\"small\"\n color=\"#efefef\"\n style={styles.loadingIndicator}\n />\n )}\n {isSubmitting ? 'Just a sec...' : 'Continue'}\n </Text>\n </View>\n </View>\n </TouchableOpacity>\n <Text style={styles.signInNoticeText}>\n By continuing, you're agreeing to the terms of service that govern\n this app and to receive email or text messages for verification\n purposes.\n </Text>\n </>\n )}\n\n {step === LoginStep.WAITING && (\n <>\n <Text style={styles.dialogHeading}>\n Thanks! Verify your{' '}\n {loginType === 'phone' ? 'phone number' : 'email'} to finish\n </Text>\n <Text style={styles.py6}>\n Click the link in the message we just sent to{' '}\n <Text style={styles.italic}>{userIdentifier}</Text> to verify and\n finish.\n <Text\n style={[styles.link]}\n onPress={() => setStep(LoginStep.INIT)}\n >\n &nbsp;Re-send message\n </Text>\n </Text>\n\n <View style={styles.signInVerificationImage}>\n {loginType === 'phone' ? (\n <ImagePhoneVerifyWaiting />\n ) : (\n <ImageEmailVerifyWaiting />\n )}\n </View>\n\n <TouchableOpacity\n style={[styles.button]}\n onPress={() => setStep(LoginStep.INIT)}\n >\n <Text style={styles.buttonContent}>\n Try a different{' '}\n {loginType === 'phone' ? 'phone number' : 'email'}\n </Text>\n </TouchableOpacity>\n </>\n )}\n\n {step === LoginStep.SUCCESS && (\n <>\n <View style={styles.signInVerificationImage}>\n <ImageCheckmarkFilled />\n </View>\n </>\n )}\n\n {step === LoginStep.FAILURE && (\n <>\n <Text style={styles.textBase}>Whoops, that didn't work!</Text>\n <TouchableOpacity\n style={styles.button}\n onPress={() => setStep(LoginStep.INIT)}\n >\n <Text style={styles.buttonContent}>Try again</Text>\n </TouchableOpacity>\n </>\n )}\n\n {step === LoginStep.ERROR && (\n <>\n <Text style={styles.textBase}>\n An error occurred while signing you in.\n </Text>\n {!!error && <Text style={styles.textRose800}>{error}</Text>}\n <TouchableOpacity\n style={styles.button}\n onPress={() => setStep(LoginStep.INIT)}\n >\n <Text style={styles.buttonContent}>Try again</Text>\n </TouchableOpacity>\n </>\n )}\n <Text>\n Powered by{' '}\n <Text style={styles.link} onPress={launchRowndWebsite}>\n Rownd\n </Text>\n </Text>\n </View>\n </BottomSheetModal>\n );\n}\n\nconst styles = StyleSheet.create({\n modal: {\n // flex: 1,\n },\n bottomSheet: {\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 12,\n },\n shadowOpacity: 0.58,\n shadowRadius: 16.0,\n\n elevation: 24,\n },\n innerContainer: {\n borderRadius: 20,\n borderColor: 'transparent',\n borderWidth: 0,\n padding: 25,\n },\n container: {\n flex: 1,\n padding: 24,\n },\n header: {\n alignItems: 'center',\n backgroundColor: 'white',\n paddingVertical: 20,\n borderTopLeftRadius: 20,\n borderTopRightRadius: 20,\n },\n panelHandle: {\n width: 40,\n height: 2,\n backgroundColor: 'rgba(0,0,0,0.3)',\n borderRadius: 4,\n },\n appLogo: {\n padding: 50,\n width: 75,\n height: 75,\n resizeMode: 'center',\n textAlign: 'center',\n marginLeft: 'auto',\n marginRight: 'auto',\n marginBottom: 20,\n },\n dialogHeading: {\n fontSize: 24,\n },\n inputLabel: {\n marginTop: 20,\n marginBottom: 5,\n },\n identifierInput: {\n backgroundColor: '#eee',\n borderRadius: 8,\n padding: 10,\n fontSize: 18,\n },\n button: {\n borderRadius: 10,\n padding: 10,\n marginTop: 20,\n marginBottom: 30,\n elevation: 0,\n backgroundColor: '#5b0ae0',\n color: '#fff',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n // height: 45,\n },\n buttonDisabled: {\n backgroundColor: '#eee',\n },\n buttonPressed: {\n opacity: 0.5,\n },\n buttonContent: {\n textAlign: 'center',\n fontSize: 18,\n color: '#fff',\n },\n buttonText: {\n // marginHorizontal: 10,\n // paddingHorizontal: 10,\n // fontSize: 18,\n // color: '#fff',\n },\n buttonTextInner: {\n fontSize: 18,\n },\n buttonDisabledText: {\n color: '#8e8e8e',\n },\n buttonSubmitting: {\n backgroundColor: '#2f0492',\n color: '#c7c7c7',\n },\n loadingIndicator: {\n marginRight: 10,\n },\n signInNoticeText: {\n fontSize: 12,\n marginBottom: 20,\n },\n signInVerificationImage: {\n alignItems: 'center',\n },\n link: {\n color: '#6114e1',\n },\n py6: {\n paddingVertical: 6,\n },\n italic: {\n fontStyle: 'italic',\n },\n textBase: {\n fontSize: 16,\n lineHeight: 24,\n },\n textRose800: {\n color: 'rgb(159, 18, 57)',\n },\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export type TRowndContext = {\n requestSignIn: Function;\n signOut: Function;\n getAccessToken: Function;\n is_authenticated: boolean;\n is_initializing: boolean;\n access_token: string | null;\n auth: AuthContext;\n user: UserContext;\n};\n\ntype AuthContext = {\n access_token: string | null;\n app_id?: string;\n is_authenticated: boolean;\n is_verified_user?: boolean;\n};\n\ntype UserContext = {\n data: {\n id?: string;\n email?: string | null;\n phone?: string | null;\n [key: string]: any;\n };\n redacted_fields: string[];\n};"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export type TRowndContext = {\n requestSignIn: Function;\n signOut: Function;\n getAccessToken: Function;\n is_authenticated: boolean;\n is_initializing: boolean;\n access_token: string | null;\n auth: AuthContext;\n user: UserContext;\n};\n\ntype AuthContext = {\n access_token: string | null;\n app_id?: string;\n is_authenticated: boolean;\n is_verified_user?: boolean;\n};\n\ntype UserContext = {\n data: {\n id?: string;\n email?: string | null;\n phone?: string | null;\n [key: string]: any;\n };\n redacted_fields: string[];\n};\n"],"mappings":""}
@@ -9,13 +9,17 @@ import { useNav } from '../hooks';
9
9
  import { useGlobalContext } from './GlobalContext';
10
10
  import ErrorIcon from './images/ErrorIcon';
11
11
  export function AutoSigninDialog() {
12
+ var _state$nav3, _state$nav3$options, _state$nav4, _state$nav4$options;
13
+
12
14
  const navTo = useNav();
13
15
  const {
14
16
  state
15
17
  } = useGlobalContext(); // Let the user know they're auto signing-in, then close when done
16
18
 
17
19
  useTimeout(() => {
18
- if (state.nav.options.type === 'error') {
20
+ var _state$nav, _state$nav$options;
21
+
22
+ if ((state === null || state === void 0 ? void 0 : (_state$nav = state.nav) === null || _state$nav === void 0 ? void 0 : (_state$nav$options = _state$nav.options) === null || _state$nav$options === void 0 ? void 0 : _state$nav$options.type) === 'error') {
19
23
  return;
20
24
  }
21
25
 
@@ -41,9 +45,11 @@ export function AutoSigninDialog() {
41
45
  let extraBottomSheetProps = {};
42
46
 
43
47
  if (bottomSheetMeta.version.startsWith('4')) {
48
+ var _state$nav2, _state$nav2$options;
49
+
44
50
  extraBottomSheetProps.keyboardBehavior = 'fillParent';
45
51
  extraBottomSheetProps.android_keyboardInputMode = 'adjustResize';
46
- extraBottomSheetProps.enablePanDownToClose = state.nav.options.type === 'error';
52
+ extraBottomSheetProps.enablePanDownToClose = (state === null || state === void 0 ? void 0 : (_state$nav2 = state.nav) === null || _state$nav2 === void 0 ? void 0 : (_state$nav2$options = _state$nav2.options) === null || _state$nav2$options === void 0 ? void 0 : _state$nav2$options.type) === 'error';
47
53
  }
48
54
 
49
55
  return /*#__PURE__*/React.createElement(BottomSheetModal, _extends({
@@ -55,9 +61,9 @@ export function AutoSigninDialog() {
55
61
  ref: bottomSheetModalRef
56
62
  }, extraBottomSheetProps), /*#__PURE__*/React.createElement(View, {
57
63
  style: styles.innerContainer
58
- }, state.nav.options.type === 'error' && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ErrorIcon, null), /*#__PURE__*/React.createElement(Text, {
64
+ }, (state === null || state === void 0 ? void 0 : (_state$nav3 = state.nav) === null || _state$nav3 === void 0 ? void 0 : (_state$nav3$options = _state$nav3.options) === null || _state$nav3$options === void 0 ? void 0 : _state$nav3$options.type) === 'error' && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ErrorIcon, null), /*#__PURE__*/React.createElement(Text, {
59
65
  style: styles.errorMessage
60
- }, state.nav.options.message || 'An error occurred. Please try again.')), state.nav.options.type === 'sign-in' && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ActivityIndicator, {
66
+ }, state.nav.options.message || 'An error occurred. Please try again.')), (state === null || state === void 0 ? void 0 : (_state$nav4 = state.nav) === null || _state$nav4 === void 0 ? void 0 : (_state$nav4$options = _state$nav4.options) === null || _state$nav4$options === void 0 ? void 0 : _state$nav4$options.type) === 'sign-in' && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ActivityIndicator, {
61
67
  size: "large",
62
68
  color: "#5b0ae0"
63
69
  }), /*#__PURE__*/React.createElement(Text, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMemo","useCallback","useEffect","useRef","View","Text","StyleSheet","ActivityIndicator","BottomSheetBackdrop","BottomSheetModal","bottomSheetMeta","useTimeout","useNav","useGlobalContext","ErrorIcon","AutoSigninDialog","navTo","state","nav","options","type","handleClose","bottomSheetModalRef","current","present","setTimeout","hide","snapPoints","renderBackdrop","props","extraBottomSheetProps","version","startsWith","keyboardBehavior","android_keyboardInputMode","enablePanDownToClose","styles","bottomSheet","innerContainer","errorMessage","message","signInMessage","create","modal","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","borderRadius","borderColor","borderWidth","padding","textAlign","fontSize","errorIcon","color"],"sources":["AutoSigninDialog.tsx"],"sourcesContent":["import React, { useMemo, useCallback, useEffect, useRef } from 'react';\nimport { View, Text, StyleSheet, ActivityIndicator } from 'react-native';\nimport {\n BottomSheetBackdrop,\n BottomSheetBackdropProps,\n BottomSheetModal,\n} from '@gorhom/bottom-sheet';\nimport bottomSheetMeta from '@gorhom/bottom-sheet/package.json';\nimport { useTimeout } from 'usehooks-ts';\n\nimport { useNav } from '../hooks';\nimport { useGlobalContext } from './GlobalContext';\n\nimport ErrorIcon from './images/ErrorIcon';\n\nexport function AutoSigninDialog() {\n const navTo = useNav();\n const { state } = useGlobalContext();\n\n // Let the user know they're auto signing-in, then close when done\n useTimeout(() => {\n if (state.nav.options.type === 'error') {\n return;\n }\n\n handleClose();\n }, 3000);\n\n const bottomSheetModalRef = useRef<BottomSheetModal>(null);\n useEffect(() => {\n if (bottomSheetModalRef.current) {\n bottomSheetModalRef.current.present();\n }\n }, []);\n\n const handleClose = useCallback(() => {\n setTimeout(() => {\n navTo({ hide: true });\n }, 150);\n }, [navTo]);\n\n const snapPoints = useMemo(() => ['30%', '60%'], []);\n\n const renderBackdrop = useCallback(\n (props: BottomSheetBackdropProps) => (\n <BottomSheetBackdrop {...props} pressBehavior=\"none\" />\n ),\n []\n );\n\n let extraBottomSheetProps: any = {};\n if (bottomSheetMeta.version.startsWith('4')) {\n extraBottomSheetProps.keyboardBehavior = 'fillParent';\n extraBottomSheetProps.android_keyboardInputMode = 'adjustResize';\n extraBottomSheetProps.enablePanDownToClose =\n state.nav.options.type === 'error';\n }\n\n return (\n <BottomSheetModal\n snapPoints={snapPoints}\n index={0}\n backdropComponent={renderBackdrop}\n onDismiss={handleClose}\n style={styles.bottomSheet}\n ref={bottomSheetModalRef}\n {...extraBottomSheetProps}\n >\n <View style={styles.innerContainer}>\n {state.nav.options.type === 'error' && (\n <>\n <ErrorIcon />\n <Text style={styles.errorMessage}>\n {state.nav.options.message ||\n 'An error occurred. Please try again.'}\n </Text>\n </>\n )}\n\n {state.nav.options.type === 'sign-in' && (\n <>\n <ActivityIndicator size=\"large\" color=\"#5b0ae0\" />\n <Text style={styles.signInMessage}>\n Automatically signing you in. Just a sec...\n </Text>\n </>\n )}\n </View>\n </BottomSheetModal>\n );\n}\n\nconst styles = StyleSheet.create({\n modal: {\n // flex: 1,\n },\n bottomSheet: {\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 12,\n },\n shadowOpacity: 0.58,\n shadowRadius: 16.0,\n\n elevation: 24,\n },\n innerContainer: {\n borderRadius: 20,\n borderColor: 'transparent',\n borderWidth: 0,\n padding: 25,\n textAlign: 'center',\n },\n signInMessage: {\n textAlign: 'center',\n fontSize: 24,\n padding: 20,\n },\n errorMessage: {\n textAlign: 'center',\n fontSize: 24,\n padding: 20,\n },\n errorIcon: {\n textAlign: 'center',\n color: '#DA1E28',\n height: 24,\n width: 24,\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useMemo","useCallback","useEffect","useRef","View","Text","StyleSheet","ActivityIndicator","BottomSheetBackdrop","BottomSheetModal","bottomSheetMeta","useTimeout","useNav","useGlobalContext","ErrorIcon","AutoSigninDialog","navTo","state","nav","options","type","handleClose","bottomSheetModalRef","current","present","setTimeout","hide","snapPoints","renderBackdrop","props","extraBottomSheetProps","version","startsWith","keyboardBehavior","android_keyboardInputMode","enablePanDownToClose","styles","bottomSheet","innerContainer","errorMessage","message","signInMessage","create","modal","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","borderRadius","borderColor","borderWidth","padding","textAlign","fontSize","errorIcon","color"],"sources":["AutoSigninDialog.tsx"],"sourcesContent":["import React, { useMemo, useCallback, useEffect, useRef } from 'react';\nimport { View, Text, StyleSheet, ActivityIndicator } from 'react-native';\nimport {\n BottomSheetBackdrop,\n BottomSheetBackdropProps,\n BottomSheetModal,\n} from '@gorhom/bottom-sheet';\nimport bottomSheetMeta from '@gorhom/bottom-sheet/package.json';\nimport { useTimeout } from 'usehooks-ts';\n\nimport { useNav } from '../hooks';\nimport { useGlobalContext } from './GlobalContext';\n\nimport ErrorIcon from './images/ErrorIcon';\n\nexport function AutoSigninDialog() {\n const navTo = useNav();\n const { state } = useGlobalContext();\n\n // Let the user know they're auto signing-in, then close when done\n useTimeout(() => {\n if (state?.nav?.options?.type === 'error') {\n return;\n }\n\n handleClose();\n }, 3000);\n\n const bottomSheetModalRef = useRef<BottomSheetModal>(null);\n useEffect(() => {\n if (bottomSheetModalRef.current) {\n bottomSheetModalRef.current.present();\n }\n }, []);\n\n const handleClose = useCallback(() => {\n setTimeout(() => {\n navTo({ hide: true });\n }, 150);\n }, [navTo]);\n\n const snapPoints = useMemo(() => ['30%', '60%'], []);\n\n const renderBackdrop = useCallback(\n (props: BottomSheetBackdropProps) => (\n <BottomSheetBackdrop {...props} pressBehavior=\"none\" />\n ),\n []\n );\n\n let extraBottomSheetProps: any = {};\n if (bottomSheetMeta.version.startsWith('4')) {\n extraBottomSheetProps.keyboardBehavior = 'fillParent';\n extraBottomSheetProps.android_keyboardInputMode = 'adjustResize';\n extraBottomSheetProps.enablePanDownToClose =\n state?.nav?.options?.type === 'error';\n }\n\n return (\n <BottomSheetModal\n snapPoints={snapPoints}\n index={0}\n backdropComponent={renderBackdrop}\n onDismiss={handleClose}\n style={styles.bottomSheet}\n ref={bottomSheetModalRef}\n {...extraBottomSheetProps}\n >\n <View style={styles.innerContainer}>\n {state?.nav?.options?.type === 'error' && (\n <>\n <ErrorIcon />\n <Text style={styles.errorMessage}>\n {state.nav.options.message ||\n 'An error occurred. Please try again.'}\n </Text>\n </>\n )}\n\n {state?.nav?.options?.type === 'sign-in' && (\n <>\n <ActivityIndicator size=\"large\" color=\"#5b0ae0\" />\n <Text style={styles.signInMessage}>\n Automatically signing you in. Just a sec...\n </Text>\n </>\n )}\n </View>\n </BottomSheetModal>\n );\n}\n\nconst styles = StyleSheet.create({\n modal: {\n // flex: 1,\n },\n bottomSheet: {\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 12,\n },\n shadowOpacity: 0.58,\n shadowRadius: 16.0,\n\n elevation: 24,\n },\n innerContainer: {\n borderRadius: 20,\n borderColor: 'transparent',\n borderWidth: 0,\n padding: 25,\n textAlign: 'center',\n },\n signInMessage: {\n textAlign: 'center',\n fontSize: 24,\n padding: 20,\n },\n errorMessage: {\n textAlign: 'center',\n fontSize: 24,\n padding: 20,\n },\n errorIcon: {\n textAlign: 'center',\n color: '#DA1E28',\n height: 24,\n width: 24,\n },\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","memo","useCallback","forwardRef","TextInput","useBottomSheetInternal","require","BottomSheetTextInputComponent","ref","onFocus","onBlur","rest","shouldHandleKeyboardEvents","handleOnFocus","args","value","handleOnBlur","BottomSheetTextInput","displayName"],"sources":["BottomSheetTextInput.tsx"],"sourcesContent":["import React, { memo, useCallback, forwardRef } from 'react';\nimport { TextInput } from 'react-native-gesture-handler';\nimport type { BottomSheetTextInputProps } from './types';\n\n// @ts-ignore\nconst {\n useBottomSheetInternal,\n} = require('@gorhom/bottom-sheet/src/hooks/useBottomSheetInternal');\n\nconst BottomSheetTextInputComponent = forwardRef<\n TextInput,\n BottomSheetTextInputProps\n>(({ onFocus, onBlur, ...rest }, ref) => {\n //#region hooks\n // @ts-ignore\n let { shouldHandleKeyboardEvents } = useBottomSheetInternal();\n //#endregion\n\n if (!shouldHandleKeyboardEvents) {\n shouldHandleKeyboardEvents = {};\n }\n\n //#region callbacks\n const handleOnFocus = useCallback(\n (args) => {\n shouldHandleKeyboardEvents.value = true;\n if (onFocus) {\n onFocus(args);\n }\n },\n [onFocus, shouldHandleKeyboardEvents]\n );\n const handleOnBlur = useCallback(\n (args) => {\n shouldHandleKeyboardEvents.value = false;\n if (onBlur) {\n onBlur(args);\n }\n },\n [onBlur, shouldHandleKeyboardEvents]\n );\n //#endregion\n\n return (\n <TextInput\n ref={ref}\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n {...rest}\n />\n );\n});\n\nconst BottomSheetTextInput = memo(BottomSheetTextInputComponent);\nBottomSheetTextInput.displayName = 'BottomSheetTextInput';\n\nexport default BottomSheetTextInput;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,IAAhB,EAAsBC,WAAtB,EAAmCC,UAAnC,QAAqD,OAArD;AACA,SAASC,SAAT,QAA0B,8BAA1B;;AAGA;AACA,MAAM;EACJC;AADI,IAEFC,OAAO,CAAC,uDAAD,CAFX;;AAIA,MAAMC,6BAA6B,gBAAGJ,UAAU,CAG9C,OAA+BK,GAA/B,KAAuC;EAAA,IAAtC;IAAEC,OAAF;IAAWC,MAAX;IAAmB,GAAGC;EAAtB,CAAsC;EACvC;EACA;EACA,IAAI;IAAEC;EAAF,IAAiCP,sBAAsB,EAA3D,CAHuC,CAIvC;;EAEA,IAAI,CAACO,0BAAL,EAAiC;IAC/BA,0BAA0B,GAAG,EAA7B;EACD,CARsC,CAUvC;;;EACA,MAAMC,aAAa,GAAGX,WAAW,CAC9BY,IAAD,IAAU;IACRF,0BAA0B,CAACG,KAA3B,GAAmC,IAAnC;;IACA,IAAIN,OAAJ,EAAa;MACXA,OAAO,CAACK,IAAD,CAAP;IACD;EACF,CAN8B,EAO/B,CAACL,OAAD,EAAUG,0BAAV,CAP+B,CAAjC;EASA,MAAMI,YAAY,GAAGd,WAAW,CAC7BY,IAAD,IAAU;IACRF,0BAA0B,CAACG,KAA3B,GAAmC,KAAnC;;IACA,IAAIL,MAAJ,EAAY;MACVA,MAAM,CAACI,IAAD,CAAN;IACD;EACF,CAN6B,EAO9B,CAACJ,MAAD,EAASE,0BAAT,CAP8B,CAAhC,CApBuC,CA6BvC;;EAEA,oBACE,oBAAC,SAAD;IACE,GAAG,EAAEJ,GADP;IAEE,OAAO,EAAEK,aAFX;IAGE,MAAM,EAAEG;EAHV,GAIML,IAJN,EADF;AAQD,CA1C+C,CAAhD;AA4CA,MAAMM,oBAAoB,gBAAGhB,IAAI,CAACM,6BAAD,CAAjC;AACAU,oBAAoB,CAACC,WAArB,GAAmC,sBAAnC;AAEA,eAAeD,oBAAf"}
1
+ {"version":3,"names":["React","memo","useCallback","forwardRef","TextInput","useBottomSheetInternal","require","BottomSheetTextInputComponent","ref","onFocus","onBlur","rest","shouldHandleKeyboardEvents","handleOnFocus","args","value","handleOnBlur","BottomSheetTextInput","displayName"],"sources":["BottomSheetTextInput.tsx"],"sourcesContent":["import React, { memo, useCallback, forwardRef } from 'react';\nimport { TextInput } from 'react-native-gesture-handler';\nimport { BottomSheetTextInputProps } from './types';\n\n// @ts-ignore\nconst {\n useBottomSheetInternal,\n} = require('@gorhom/bottom-sheet/src/hooks/useBottomSheetInternal');\n\nconst BottomSheetTextInputComponent = forwardRef<\n TextInput,\n BottomSheetTextInputProps\n>(({ onFocus, onBlur, ...rest }, ref) => {\n //#region hooks\n // @ts-ignore\n let { shouldHandleKeyboardEvents } = useBottomSheetInternal();\n //#endregion\n\n if (!shouldHandleKeyboardEvents) {\n shouldHandleKeyboardEvents = {};\n }\n\n //#region callbacks\n const handleOnFocus = useCallback(\n (args) => {\n shouldHandleKeyboardEvents.value = true;\n if (onFocus) {\n onFocus(args);\n }\n },\n [onFocus, shouldHandleKeyboardEvents]\n );\n const handleOnBlur = useCallback(\n (args) => {\n shouldHandleKeyboardEvents.value = false;\n if (onBlur) {\n onBlur(args);\n }\n },\n [onBlur, shouldHandleKeyboardEvents]\n );\n //#endregion\n\n return (\n <TextInput\n ref={ref}\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n {...rest}\n />\n );\n});\n\nconst BottomSheetTextInput = memo(BottomSheetTextInputComponent);\nBottomSheetTextInput.displayName = 'BottomSheetTextInput';\n\nexport default BottomSheetTextInput;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,IAAhB,EAAsBC,WAAtB,EAAmCC,UAAnC,QAAqD,OAArD;AACA,SAASC,SAAT,QAA0B,8BAA1B;;AAGA;AACA,MAAM;EACJC;AADI,IAEFC,OAAO,CAAC,uDAAD,CAFX;;AAIA,MAAMC,6BAA6B,gBAAGJ,UAAU,CAG9C,OAA+BK,GAA/B,KAAuC;EAAA,IAAtC;IAAEC,OAAF;IAAWC,MAAX;IAAmB,GAAGC;EAAtB,CAAsC;EACvC;EACA;EACA,IAAI;IAAEC;EAAF,IAAiCP,sBAAsB,EAA3D,CAHuC,CAIvC;;EAEA,IAAI,CAACO,0BAAL,EAAiC;IAC/BA,0BAA0B,GAAG,EAA7B;EACD,CARsC,CAUvC;;;EACA,MAAMC,aAAa,GAAGX,WAAW,CAC9BY,IAAD,IAAU;IACRF,0BAA0B,CAACG,KAA3B,GAAmC,IAAnC;;IACA,IAAIN,OAAJ,EAAa;MACXA,OAAO,CAACK,IAAD,CAAP;IACD;EACF,CAN8B,EAO/B,CAACL,OAAD,EAAUG,0BAAV,CAP+B,CAAjC;EASA,MAAMI,YAAY,GAAGd,WAAW,CAC7BY,IAAD,IAAU;IACRF,0BAA0B,CAACG,KAA3B,GAAmC,KAAnC;;IACA,IAAIL,MAAJ,EAAY;MACVA,MAAM,CAACI,IAAD,CAAN;IACD;EACF,CAN6B,EAO9B,CAACJ,MAAD,EAASE,0BAAT,CAP8B,CAAhC,CApBuC,CA6BvC;;EAEA,oBACE,oBAAC,SAAD;IACE,GAAG,EAAEJ,GADP;IAEE,OAAO,EAAEK,aAFX;IAGE,MAAM,EAAEG;EAHV,GAIML,IAJN,EADF;AAQD,CA1C+C,CAAhD;AA4CA,MAAMM,oBAAoB,gBAAGhB,IAAI,CAACM,6BAAD,CAAjC;AACAU,oBAAoB,CAACC,WAArB,GAAmC,sBAAnC;AAEA,eAAeD,oBAAf"}
@@ -1,3 +1,5 @@
1
1
  // @ts-ignore
2
2
  export { default } from './BottomSheetTextInput'; // @ts-ignore
3
+
4
+ export { BottomSheetTextInputProps } from './types';
3
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["default"],"sources":["index.ts"],"sourcesContent":["// @ts-ignore\nexport { default } from './BottomSheetTextInput';\n\n// @ts-ignore\nexport type { BottomSheetTextInputProps } from './types';\n"],"mappings":"AAAA;AACA,SAASA,OAAT,QAAwB,wBAAxB,C,CAEA"}
1
+ {"version":3,"names":["default","BottomSheetTextInputProps"],"sources":["index.ts"],"sourcesContent":["// @ts-ignore\nexport { default } from './BottomSheetTextInput';\n\n// @ts-ignore\nexport { BottomSheetTextInputProps } from './types';\n"],"mappings":"AAAA;AACA,SAASA,OAAT,QAAwB,wBAAxB,C,CAEA;;AACA,SAASC,yBAAT,QAA0C,SAA1C"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { TextInputProps } from 'react-native';\n\nexport interface BottomSheetTextInputProps extends TextInputProps {}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import { TextInputProps } from 'react-native';\n\nexport interface BottomSheetTextInputProps extends TextInputProps {}\n"],"mappings":""}
@@ -34,7 +34,7 @@ export function DefaultContext(_ref) {
34
34
  }).json();
35
35
 
36
36
  if (resp !== null && resp !== void 0 && (_resp$app = resp.app) !== null && _resp$app !== void 0 && _resp$app.icon) {
37
- const iconMeta = await ky.head(resp.app.icon);
37
+ const iconMeta = await ky.get(resp.app.icon);
38
38
  resp.app.icon_content_type = iconMeta.headers.get('content-type');
39
39
  }
40
40
 
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useCallback","useRef","isEqual","useDebounce","useApi","useDeviceFingerprint","DEFAULT_USER_AGENT","useGlobalContext","ActionType","ky","Clipboard","base64","Linking","events","EventType","DefaultContext","config","state","dispatch","client","api","resp","get","headers","appKey","json","app","icon","iconMeta","head","icon_content_type","type","SET_APP_CONFIG","payload","err","console","error","auth","access_token","id","authData","authLink","getInitialURL","getString","includes","CHANGE_ROUTE","route","opts","startsWith","authStr","split","JSON","parse","decode","setString","LOGIN_SUCCESS","retrieveUserInfo","userInfo","Authorization","LOAD_USER","UPDATE_LOCAL_ACLS","redacted","reduce","acc","field","shared","retrieveAcls","appUserAcls","acls","Error","user","needs_refresh","SET_REFRESH_USER_DATA","saveAclsDebounced","saveAcls","local_acls","put","localAclsRef","current","saveUserDataDebounced","saveUserData","data","SET_IS_SAVING_USER_DATA","saving","eventDetails","USER_DATA_SAVED","userDataRef","email","phone_number"],"sources":["DefaultContext.tsx"],"sourcesContent":["import { useEffect, useCallback, useRef } from 'react';\nimport isEqual from 'lodash-es/isEqual';\nimport { useDebounce, useApi, useDeviceFingerprint } from '../hooks';\nimport { DEFAULT_USER_AGENT } from '../hooks/api';\nimport type { IConfig } from '../utils/config';\nimport { useGlobalContext } from './GlobalContext';\nimport { ActionType } from '../data/actions';\nimport ky from 'ky';\nimport Clipboard from '@react-native-clipboard/clipboard';\nimport base64 from 'react-native-base64';\nimport { Linking } from 'react-native';\nimport { events, EventType } from '../utils/events';\n\nexport type UserInfoResp = {\n data: {\n [key: string]: any;\n };\n redacted: string[];\n};\n\ninterface UserAclsResponse {\n acls: Record<string, { shared: boolean }>;\n}\n\ntype DefaultContextProps = {\n config: IConfig;\n};\n\nexport function DefaultContext({ config }: DefaultContextProps) {\n const { state, dispatch } = useGlobalContext();\n const { client: api } = useApi();\n useDeviceFingerprint();\n\n // Fetch app schema and config\n useEffect(() => {\n (async () => {\n try {\n const resp: any = await api\n .get('hub/app-config', {\n headers: {\n 'x-rownd-app-key': config.appKey,\n },\n })\n .json();\n\n if (resp?.app?.icon) {\n const iconMeta = await ky.head(resp.app.icon);\n resp.app.icon_content_type = iconMeta.headers.get('content-type');\n }\n\n dispatch({\n type: ActionType.SET_APP_CONFIG,\n payload: resp.app,\n });\n } catch (err) {\n console.error('Failed to fetch app config:', err);\n }\n })();\n }, [api, config.appKey, dispatch]);\n\n /**\n * If not signed in, check the clipboard for an init hash or auth link we can use to auto-auth the user\n */\n useEffect(() => {\n if (state.auth.access_token || !state.app.id) {\n return;\n }\n\n (async () => {\n try {\n let authData = null;\n\n let authLink =\n (await Linking.getInitialURL()) || (await Clipboard.getString());\n if (authLink.includes('rownd.link')) {\n dispatch({\n type: ActionType.CHANGE_ROUTE,\n payload: {\n route: '/account/auto-signin',\n opts: {\n type: 'sign-in',\n },\n },\n });\n\n authData = await ky\n .get(authLink, {\n headers: {\n 'User-Agent': DEFAULT_USER_AGENT,\n },\n })\n .json();\n } else if (authLink.startsWith('rph_init=')) {\n const authStr = authLink.split('rph_init=')[1];\n authData = JSON.parse(base64.decode(authStr));\n } else {\n return;\n }\n\n // Clear the clipboard value so we don't leak any creds\n Clipboard.setString('');\n\n dispatch({\n type: ActionType.LOGIN_SUCCESS,\n payload: authData,\n });\n } catch (err) {\n console.error(\n 'We found an auth link or string, but failed to authenticate with it because:',\n err\n );\n }\n })();\n }, [state.auth.access_token, state.app.id, dispatch]);\n\n const retrieveUserInfo = useCallback(() => {\n if (!state.auth.access_token || !state.app.id) {\n return;\n }\n\n (async () => {\n const userInfo: UserInfoResp = await api\n .get(`me/applications/${state.app.id}/data`, {\n headers: {\n Authorization: `Bearer ${state.auth.access_token}`,\n },\n })\n .json();\n dispatch({\n type: ActionType.LOAD_USER,\n payload: userInfo,\n });\n\n dispatch({\n type: ActionType.UPDATE_LOCAL_ACLS,\n payload: userInfo.redacted.reduce(\n (acc: Record<string, any>, field: string) => {\n acc[field] = { shared: false };\n return acc;\n },\n {}\n ),\n });\n })();\n }, [api, dispatch, state.app.id, state.auth.access_token]);\n\n const retrieveAcls = useCallback(() => {\n if (!state.app.id || !state.auth.access_token) {\n return;\n }\n\n (async () => {\n try {\n const appUserAcls: UserAclsResponse = await api\n .get(`me/applications/${state.app.id}/acls`, {\n headers: {\n Authorization: `Bearer ${state.auth.access_token}`,\n },\n })\n .json();\n dispatch({\n type: ActionType.UPDATE_LOCAL_ACLS,\n payload: appUserAcls.acls,\n });\n } catch (err) {\n if (err instanceof Error) {\n // const unsharedAcls = reduceSchemaToUnsharedAcls();\n dispatch({\n type: ActionType.UPDATE_LOCAL_ACLS,\n payload: {},\n });\n }\n }\n })();\n }, [api, dispatch, state.app.id, state.auth.access_token]);\n\n useEffect(retrieveUserInfo, [retrieveUserInfo]);\n useEffect(retrieveAcls, [retrieveAcls]);\n\n useEffect(() => {\n if (!state.user.needs_refresh) {\n return;\n }\n retrieveUserInfo();\n dispatch({\n type: ActionType.SET_REFRESH_USER_DATA,\n payload: { needs_refresh: false },\n });\n }, [dispatch, retrieveUserInfo, state.user.needs_refresh]);\n\n const saveAclsDebounced = useDebounce(saveAcls, 2000); // 2s\n\n async function saveAcls() {\n if (state.app.id && state.local_acls) {\n await api\n .put(`me/applications/${state.app.id}/acls`, {\n headers: {\n Authorization: `Bearer ${state.auth.access_token}`,\n },\n json: {\n acls: state.local_acls,\n },\n })\n .json();\n }\n }\n\n const localAclsRef = useRef(state.local_acls);\n useEffect(() => {\n // Don't save acls if they were just loaded for the first time or they haven't changed\n if (\n !localAclsRef.current ||\n isEqual(localAclsRef.current, state.local_acls)\n ) {\n return;\n }\n saveAclsDebounced();\n }, [saveAclsDebounced, state.local_acls]);\n\n const saveUserDataDebounced = useDebounce(saveUserData, 2000); // 2s\n\n // Save user data in the application state to the API server\n async function saveUserData() {\n if (state.app.id && state.user.data && state.auth.access_token) {\n dispatch({\n type: ActionType.SET_IS_SAVING_USER_DATA,\n payload: {\n saving: true,\n },\n });\n\n const eventDetails: Record<string, any> = {};\n try {\n eventDetails.data = await api\n .put(`me/applications/${state.app.id}/data`, {\n headers: {\n Authorization: `Bearer ${state.auth.access_token}`,\n },\n json: {\n data: state.user.data,\n },\n })\n .json();\n } catch (err) {\n eventDetails.error = err;\n // Get the latest user info from Rownd. Something was probably bad\n // with the data we just tried to save.\n // This is a bit hacky. We should be able to reset the state without\n // calling rownd again by rolling back to a previously good state...\n retrieveUserInfo();\n // TODO: Set some error state\n } finally {\n events.dispatch(EventType.USER_DATA_SAVED, eventDetails);\n dispatch({\n type: ActionType.SET_IS_SAVING_USER_DATA,\n payload: {\n saving: false,\n },\n });\n }\n }\n }\n\n const userDataRef = useRef(state.user.data);\n useEffect(() => {\n // Don't update the user data in the API server if the email is unknown or the data hasn't changed\n if (\n (!state.user.data?.email && !state.user.data.phone_number) ||\n isEqual(userDataRef.current, state.user.data)\n ) {\n return;\n }\n saveUserDataDebounced();\n userDataRef.current = state.user.data;\n }, [dispatch, saveUserDataDebounced, state.user.data]);\n\n return null;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["useEffect","useCallback","useRef","isEqual","useDebounce","useApi","useDeviceFingerprint","DEFAULT_USER_AGENT","useGlobalContext","ActionType","ky","Clipboard","base64","Linking","events","EventType","DefaultContext","config","state","dispatch","client","api","resp","get","headers","appKey","json","app","icon","iconMeta","icon_content_type","type","SET_APP_CONFIG","payload","err","console","error","auth","access_token","id","authData","authLink","getInitialURL","getString","includes","CHANGE_ROUTE","route","opts","startsWith","authStr","split","JSON","parse","decode","setString","LOGIN_SUCCESS","retrieveUserInfo","userInfo","Authorization","LOAD_USER","UPDATE_LOCAL_ACLS","redacted","reduce","acc","field","shared","retrieveAcls","appUserAcls","acls","Error","user","needs_refresh","SET_REFRESH_USER_DATA","saveAclsDebounced","saveAcls","local_acls","put","localAclsRef","current","saveUserDataDebounced","saveUserData","data","SET_IS_SAVING_USER_DATA","saving","eventDetails","USER_DATA_SAVED","userDataRef","email","phone_number"],"sources":["DefaultContext.tsx"],"sourcesContent":["import { useEffect, useCallback, useRef } from 'react';\nimport isEqual from 'lodash-es/isEqual';\nimport { useDebounce, useApi, useDeviceFingerprint } from '../hooks';\nimport { DEFAULT_USER_AGENT } from '../hooks/api';\nimport { IConfig } from '../utils/config';\nimport { useGlobalContext } from './GlobalContext';\nimport { ActionType } from '../data/actions';\nimport ky from 'ky';\nimport Clipboard from '@react-native-clipboard/clipboard';\nimport base64 from 'react-native-base64';\nimport { Linking } from 'react-native';\nimport { events, EventType } from '../utils/events';\n\nexport type UserInfoResp = {\n data: {\n [key: string]: any;\n };\n redacted: string[];\n};\n\ninterface UserAclsResponse {\n acls: Record<string, { shared: boolean }>;\n}\n\ntype DefaultContextProps = {\n config: IConfig;\n};\n\nexport function DefaultContext({ config }: DefaultContextProps) {\n const { state, dispatch } = useGlobalContext();\n const { client: api } = useApi();\n useDeviceFingerprint();\n\n // Fetch app schema and config\n useEffect(() => {\n (async () => {\n try {\n const resp: any = await api\n .get('hub/app-config', {\n headers: {\n 'x-rownd-app-key': config.appKey,\n },\n })\n .json();\n\n if (resp?.app?.icon) {\n const iconMeta = await ky.get(resp.app.icon);\n resp.app.icon_content_type = iconMeta.headers.get('content-type');\n }\n\n dispatch({\n type: ActionType.SET_APP_CONFIG,\n payload: resp.app,\n });\n } catch (err) {\n console.error('Failed to fetch app config:', err);\n }\n })();\n }, [api, config.appKey, dispatch]);\n\n /**\n * If not signed in, check the clipboard for an init hash or auth link we can use to auto-auth the user\n */\n useEffect(() => {\n if (state.auth.access_token || !state.app.id) {\n return;\n }\n\n (async () => {\n try {\n let authData = null;\n\n let authLink =\n (await Linking.getInitialURL()) || (await Clipboard.getString());\n if (authLink.includes('rownd.link')) {\n dispatch({\n type: ActionType.CHANGE_ROUTE,\n payload: {\n route: '/account/auto-signin',\n opts: {\n type: 'sign-in',\n },\n },\n });\n\n authData = await ky\n .get(authLink, {\n headers: {\n 'User-Agent': DEFAULT_USER_AGENT,\n },\n })\n .json();\n } else if (authLink.startsWith('rph_init=')) {\n const authStr = authLink.split('rph_init=')[1];\n authData = JSON.parse(base64.decode(authStr));\n } else {\n return;\n }\n\n // Clear the clipboard value so we don't leak any creds\n Clipboard.setString('');\n\n dispatch({\n type: ActionType.LOGIN_SUCCESS,\n payload: authData,\n });\n } catch (err) {\n console.error(\n 'We found an auth link or string, but failed to authenticate with it because:',\n err\n );\n }\n })();\n }, [state.auth.access_token, state.app.id, dispatch]);\n\n const retrieveUserInfo = useCallback(() => {\n if (!state.auth.access_token || !state.app.id) {\n return;\n }\n\n (async () => {\n const userInfo: UserInfoResp = await api\n .get(`me/applications/${state.app.id}/data`, {\n headers: {\n Authorization: `Bearer ${state.auth.access_token}`,\n },\n })\n .json();\n dispatch({\n type: ActionType.LOAD_USER,\n payload: userInfo,\n });\n\n dispatch({\n type: ActionType.UPDATE_LOCAL_ACLS,\n payload: userInfo.redacted.reduce(\n (acc: Record<string, any>, field: string) => {\n acc[field] = { shared: false };\n return acc;\n },\n {}\n ),\n });\n })();\n }, [api, dispatch, state.app.id, state.auth.access_token]);\n\n const retrieveAcls = useCallback(() => {\n if (!state.app.id || !state.auth.access_token) {\n return;\n }\n\n (async () => {\n try {\n const appUserAcls: UserAclsResponse = await api\n .get(`me/applications/${state.app.id}/acls`, {\n headers: {\n Authorization: `Bearer ${state.auth.access_token}`,\n },\n })\n .json();\n dispatch({\n type: ActionType.UPDATE_LOCAL_ACLS,\n payload: appUserAcls.acls,\n });\n } catch (err) {\n if (err instanceof Error) {\n // const unsharedAcls = reduceSchemaToUnsharedAcls();\n dispatch({\n type: ActionType.UPDATE_LOCAL_ACLS,\n payload: {},\n });\n }\n }\n })();\n }, [api, dispatch, state.app.id, state.auth.access_token]);\n\n useEffect(retrieveUserInfo, [retrieveUserInfo]);\n useEffect(retrieveAcls, [retrieveAcls]);\n\n useEffect(() => {\n if (!state.user.needs_refresh) {\n return;\n }\n retrieveUserInfo();\n dispatch({\n type: ActionType.SET_REFRESH_USER_DATA,\n payload: { needs_refresh: false },\n });\n }, [dispatch, retrieveUserInfo, state.user.needs_refresh]);\n\n const saveAclsDebounced = useDebounce(saveAcls, 2000); // 2s\n\n async function saveAcls() {\n if (state.app.id && state.local_acls) {\n await api\n .put(`me/applications/${state.app.id}/acls`, {\n headers: {\n Authorization: `Bearer ${state.auth.access_token}`,\n },\n json: {\n acls: state.local_acls,\n },\n })\n .json();\n }\n }\n\n const localAclsRef = useRef(state.local_acls);\n useEffect(() => {\n // Don't save acls if they were just loaded for the first time or they haven't changed\n if (\n !localAclsRef.current ||\n isEqual(localAclsRef.current, state.local_acls)\n ) {\n return;\n }\n saveAclsDebounced();\n }, [saveAclsDebounced, state.local_acls]);\n\n const saveUserDataDebounced = useDebounce(saveUserData, 2000); // 2s\n\n // Save user data in the application state to the API server\n async function saveUserData() {\n if (state.app.id && state.user.data && state.auth.access_token) {\n dispatch({\n type: ActionType.SET_IS_SAVING_USER_DATA,\n payload: {\n saving: true,\n },\n });\n\n const eventDetails: Record<string, any> = {};\n try {\n eventDetails.data = await api\n .put(`me/applications/${state.app.id}/data`, {\n headers: {\n Authorization: `Bearer ${state.auth.access_token}`,\n },\n json: {\n data: state.user.data,\n },\n })\n .json();\n } catch (err) {\n eventDetails.error = err;\n // Get the latest user info from Rownd. Something was probably bad\n // with the data we just tried to save.\n // This is a bit hacky. We should be able to reset the state without\n // calling rownd again by rolling back to a previously good state...\n retrieveUserInfo();\n // TODO: Set some error state\n } finally {\n events.dispatch(EventType.USER_DATA_SAVED, eventDetails);\n dispatch({\n type: ActionType.SET_IS_SAVING_USER_DATA,\n payload: {\n saving: false,\n },\n });\n }\n }\n }\n\n const userDataRef = useRef(state.user.data);\n useEffect(() => {\n // Don't update the user data in the API server if the email is unknown or the data hasn't changed\n if (\n (!state.user.data?.email && !state.user.data.phone_number) ||\n isEqual(userDataRef.current, state.user.data)\n ) {\n return;\n }\n saveUserDataDebounced();\n userDataRef.current = state.user.data;\n }, [dispatch, saveUserDataDebounced, state.user.data]);\n\n return null;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","createContext","useReducer","useContext","isEqual","pick","jwt_decode","storage","events","EventType","ActionType","GlobalContext","undefined","handleStateInit","initialState","contains","state","JSON","parse","getString","GlobalContextProvider","children","config","is_initializing","is_container_visible","use_modal","nav","current_route","route_trigger","event_id","section","options","user","data","email","needs_refresh","redacted","auth","access_token","refresh_token","app_id","app","schema","local_acls","is_saving_user_data","mainReducer","action","decodedToken","newState","type","SET_CONTAINER_VISIBLE","payload","isVisible","CHANGE_ROUTE","route","trigger","opts","SET_SECTION","LOGIN_SUCCESS","id","is_verified_user","app_user_id","SIGN_OUT","REFRESH_TOKEN","LOAD_USER","UPDATE_LOCAL_ACLS","SET_USER_DATA_FIELD","field","value","dispatch","USER_DATA_SAVED","SET_USER_DATA","Object","keys","SET_REFRESH_USER_DATA","LOAD_STATE","SET_IS_SAVING_USER_DATA","saving","SET_APP_CONFIG","persistedState","set","stringify","useGlobalContext","context","Error"],"sources":["GlobalContext.tsx"],"sourcesContent":["import React, { createContext, FunctionComponent } from 'react';\nimport { useReducer, useContext } from 'react';\nimport isEqual from 'lodash-es/isEqual';\nimport pick from 'lodash-es/pick';\nimport jwt_decode from 'jwt-decode';\nimport type { IConfig } from '../utils/config';\nimport storage from '../utils/storage';\nimport { events, EventType } from '../utils/events';\n\nimport { type TAction, ActionType } from '../data/actions';\n\ntype Dispatch = (action: TAction) => void;\n\nexport type GlobalState = {\n is_initializing: boolean;\n is_container_visible: boolean;\n use_modal: boolean;\n nav: {\n current_route: string;\n route_trigger: string;\n event_id: string;\n section: string;\n options?: any;\n };\n user: {\n data: {\n id?: string;\n email: string | null;\n [key: string]: any;\n };\n needs_refresh?: boolean;\n redacted: string[];\n };\n auth: {\n access_token: string | null;\n refresh_token: string | null;\n app_id: string | null;\n init_data?: Record<string, any>;\n is_verified_user?: boolean;\n };\n app: {\n id?: string;\n icon?: string;\n icon_content_type?: string;\n config: AppConfig | null;\n schema: AppSchema | null;\n user_verification_field?: string;\n user_verification_fields?: string[];\n };\n local_acls: Record<string, { shared: boolean }> | null;\n is_saving_user_data: boolean;\n config?: IConfig;\n};\n\ntype AppSchema = Record<string, SchemaField>;\n\nexport interface SchemaField {\n display_name: string;\n type: string;\n data_category: string;\n required: boolean;\n owned_by: string;\n user_visible: boolean;\n revoke_after: string;\n required_retention: string;\n collection_justification: string;\n opt_out_warning: string;\n}\n\ninterface AppConfig {\n customizations: {\n primary_color: string;\n };\n default_user_id_format?: string;\n hub: {\n auth: {\n allow_unverified_users?: boolean;\n additional_fields: [\n {\n name: string;\n type: string;\n label: string;\n placeholder?: string;\n options: [\n {\n value: string;\n label: string;\n }\n ];\n }\n ];\n email: {\n from_address: string;\n image: string;\n };\n show_app_icon: boolean;\n };\n customizations: HubCustomizations;\n };\n}\n\nexport interface HubCustomizations {\n rounded_corners: boolean;\n primary_color: string;\n placement: 'bottom-left' | 'hidden';\n offset_x: number;\n offset_y: number;\n property_overrides: Record<string, string>;\n}\n\ntype ContextProps = {\n config: IConfig;\n};\n\nexport const GlobalContext = createContext<\n { state: GlobalState; dispatch: Dispatch } | undefined\n>(undefined);\n\nfunction handleStateInit(initialState: GlobalState) {\n if (storage.contains('state')) {\n const state = JSON.parse(storage.getString('state') || '{}');\n\n return {\n ...initialState,\n ...state,\n };\n }\n\n return initialState;\n}\n\n// async function updateStorage(newState: any) {\n// const oldState = JSON.parse(await storage.getItem('state') || '{}');\n\n// if (!isEqual(oldState, newState)) {\n// console.log('writing new state', newState);\n// await storage.setItem('state', JSON.stringify(newState));\n// }\n// }\n\nconst GlobalContextProvider: FunctionComponent<ContextProps> = ({\n children,\n config,\n}) => {\n const initialState: GlobalState = {\n is_initializing: false,\n is_container_visible: false,\n use_modal: false,\n nav: {\n current_route: '/',\n route_trigger: '',\n event_id: '',\n section: '',\n options: {},\n },\n user: {\n data: {\n email: null,\n },\n needs_refresh: false,\n redacted: [],\n },\n auth: {\n access_token: null,\n refresh_token: null,\n app_id: null,\n },\n app: {\n schema: null,\n config: null,\n },\n local_acls: null,\n is_saving_user_data: false,\n config,\n };\n\n // TODO: There's a better way to do this where we have a set of rules that watch/apply to the state as it changes\n // function dispatchExternalEvents(prevState: GlobalState, nextState: GlobalState) {\n\n // // Log in, get new token, load previous auth state, etc\n // if (prevState.auth.access_token !== nextState.auth.access_token) {\n // events.dispatch(EventType.AUTH, {\n // access_token: nextState.auth.access_token,\n // user_id: nextState.user.data.id,\n // app_id: nextState.auth.app_id,\n // });\n // }\n\n // // User data changes. Also, fire the event when ACLs change since this affects the data\n // // that the application can see.\n // if (!isEqual(prevState.local_acls, nextState.local_acls) ||\n // !isEqual(prevState.user.data, nextState.user.data)) {\n // events.dispatch(EventType.USER_DATA, {\n // // The data is filtered on the local_acls\n // data: redactUserDataWithAcls(nextState.user.data, nextState.local_acls),\n // });\n // }\n\n // // Log out\n // if (nextState.auth.access_token === null) {\n // events.dispatch(EventType.SIGN_OUT, {});\n // }\n // }\n\n function mainReducer(state: GlobalState, action: TAction): GlobalState {\n let decodedToken: any;\n\n let newState;\n // let cachedAuth;\n switch (action.type) {\n case ActionType.SET_CONTAINER_VISIBLE:\n newState = {\n ...state,\n is_container_visible: action.payload.isVisible,\n use_modal:\n action.payload.isVisible === false ? false : state.use_modal,\n nav: {\n ...state.nav,\n current_route: '/',\n },\n };\n break;\n\n case ActionType.CHANGE_ROUTE:\n newState = {\n ...state,\n nav: {\n ...state.nav,\n current_route: action.payload.route,\n route_trigger: action.payload.trigger || '',\n event_id: action.payload.event_id,\n options: action.payload.opts,\n },\n };\n\n break;\n\n case ActionType.SET_SECTION:\n newState = {\n ...state,\n nav: {\n ...state.nav,\n section: action.payload.section,\n },\n };\n break;\n\n case ActionType.LOGIN_SUCCESS:\n // storage.setItem('auth', JSON.stringify(action.payload));\n decodedToken = jwt_decode(action.payload.access_token);\n\n // Ensure this token is for this app\n if (action.payload.app_id !== state.app.id) {\n return {\n ...state,\n };\n }\n\n newState = {\n ...state,\n auth: {\n ...state.auth,\n access_token: action.payload.access_token,\n refresh_token: action.payload.refresh_token,\n app_id: action.payload.app_id,\n is_verified_user:\n decodedToken?.['https://auth.rownd.io/is_verified_user'] !==\n false, // default is `true` if the attribute doesn't exist\n },\n user: {\n ...state.user,\n data: {\n ...state.user.data,\n id: action.payload.app_user_id,\n },\n },\n };\n break;\n\n case ActionType.SIGN_OUT:\n // storage.removeItem('auth');\n newState = {\n ...state,\n user: {\n data: {\n email: null,\n },\n redacted: [],\n },\n auth: {\n access_token: null,\n refresh_token: null,\n app_id: null,\n },\n };\n break;\n\n case ActionType.REFRESH_TOKEN:\n newState = {\n ...state,\n auth: {\n ...state.auth,\n access_token: action.payload.access_token,\n refresh_token: action.payload.refresh_token,\n },\n };\n\n // cachedAuth = storage.getItem('auth');\n // if (cachedAuth) {\n // const cachedAuthObj = JSON.parse(cachedAuth);\n // cachedAuth = {\n // ...cachedAuthObj,\n // ...newState.auth,\n // };\n // storage.setItem('auth', JSON.stringify(newState.auth));\n // }\n\n break;\n\n case ActionType.LOAD_USER:\n newState = {\n ...state,\n user: {\n ...state.user,\n data: {\n ...action.payload.data,\n },\n redacted: action.payload.redacted,\n },\n };\n break;\n\n case ActionType.UPDATE_LOCAL_ACLS:\n newState = {\n ...state,\n local_acls: {\n ...state.local_acls,\n ...action.payload,\n },\n };\n break;\n\n case ActionType.SET_USER_DATA_FIELD:\n // Dispatch a USER_DATA_SAVED event to satisfy event listeners when the data\n // was not changed and no request to Rownd was ever made.\n if (state.user.data[action.payload.field] === action.payload.value) {\n events.dispatch(EventType.USER_DATA_SAVED, state.user.data);\n }\n\n newState = {\n ...state,\n user: {\n ...state.user,\n data: {\n ...state.user.data,\n [action.payload.field]: action.payload.value,\n },\n },\n };\n break;\n\n case ActionType.SET_USER_DATA:\n // Dispatch a USER_DATA_SAVED event to satisfy event listeners when the data\n // was not changed and no request to Rownd was ever made.\n if (\n isEqual(\n pick(state.user.data, Object.keys(action.payload.data)),\n action.payload.data\n )\n ) {\n events.dispatch(EventType.USER_DATA_SAVED, state.user.data);\n }\n\n newState = {\n ...state,\n user: {\n ...state.user,\n data: {\n ...state.user.data,\n ...action.payload.data,\n },\n },\n };\n break;\n\n case ActionType.SET_REFRESH_USER_DATA:\n newState = {\n ...state,\n user: {\n ...state.user,\n needs_refresh: action.payload.needs_refresh,\n },\n };\n break;\n\n case ActionType.LOAD_STATE:\n newState = {\n ...action.payload,\n };\n break;\n\n case ActionType.SET_IS_SAVING_USER_DATA: {\n newState = {\n ...state,\n is_saving_user_data: action.payload.saving,\n };\n break;\n }\n\n case ActionType.SET_APP_CONFIG:\n newState = {\n ...state,\n app: {\n ...state.app,\n ...action.payload,\n },\n };\n break;\n\n default:\n newState = state;\n }\n\n // Write state to local storage, minus a few fields\n const persistedState: any = { ...newState };\n delete persistedState.config;\n delete persistedState.nav;\n delete persistedState.is_container_visible;\n delete persistedState.use_modal;\n delete persistedState.is_initializing;\n delete persistedState.is_saving_user_data;\n\n // updateStorage(persistedState);\n storage.set('state', JSON.stringify(persistedState));\n\n // Fire any events that depend on state updates\n // dispatchExternalEvents(state, newState);\n\n return newState;\n }\n\n const [state, dispatch] = useReducer(\n mainReducer,\n initialState,\n handleStateInit\n );\n\n // Async load cached state from storage\n // useEffect(() => {\n // (async () => {\n // const existingStateStr = await storage.getItem('state');\n\n // if (!existingStateStr) {\n // return;\n // }\n\n // dispatch({\n // type: ActionType.LOAD_STATE,\n // payload: JSON.parse(existingStateStr),\n // });\n // });\n // }, []);\n\n const value = { state, dispatch };\n return (\n <GlobalContext.Provider value={value}>\n {children}\n {/* <ExternalApi config={config} dispatchEvents={(state: GlobalState) => dispatchExternalEvents(initialState, state)} /> */}\n </GlobalContext.Provider>\n );\n};\n\nfunction useGlobalContext() {\n const context = useContext(GlobalContext);\n\n if (context === undefined) {\n throw new Error(\n 'useGlobalContext must be used within a GlobalContext Provider'\n );\n }\n\n return context;\n}\n\nexport { GlobalContextProvider, useGlobalContext };\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","createContext","useReducer","useContext","isEqual","pick","jwt_decode","storage","events","EventType","ActionType","GlobalContext","undefined","handleStateInit","initialState","contains","state","JSON","parse","getString","GlobalContextProvider","children","config","is_initializing","is_container_visible","use_modal","nav","current_route","route_trigger","event_id","section","options","user","data","email","needs_refresh","redacted","auth","access_token","refresh_token","app_id","app","schema","local_acls","is_saving_user_data","mainReducer","action","decodedToken","newState","type","SET_CONTAINER_VISIBLE","payload","isVisible","CHANGE_ROUTE","route","trigger","opts","SET_SECTION","LOGIN_SUCCESS","id","is_verified_user","app_user_id","SIGN_OUT","REFRESH_TOKEN","LOAD_USER","UPDATE_LOCAL_ACLS","SET_USER_DATA_FIELD","field","value","dispatch","USER_DATA_SAVED","SET_USER_DATA","Object","keys","SET_REFRESH_USER_DATA","LOAD_STATE","SET_IS_SAVING_USER_DATA","saving","SET_APP_CONFIG","persistedState","set","stringify","useGlobalContext","context","Error"],"sources":["GlobalContext.tsx"],"sourcesContent":["import React, { createContext, FunctionComponent } from 'react';\nimport { useReducer, useContext } from 'react';\nimport isEqual from 'lodash-es/isEqual';\nimport pick from 'lodash-es/pick';\nimport jwt_decode from 'jwt-decode';\nimport { IConfig } from '../utils/config';\nimport storage from '../utils/storage';\nimport { events, EventType } from '../utils/events';\n\nimport { TAction, ActionType } from '../data/actions';\n\ntype Dispatch = (action: TAction) => void;\n\nexport type GlobalState = {\n is_initializing: boolean;\n is_container_visible: boolean;\n use_modal: boolean;\n nav: {\n current_route: string;\n route_trigger: string;\n event_id: string;\n section: string;\n options?: any;\n };\n user: {\n data: {\n id?: string;\n email: string | null;\n [key: string]: any;\n };\n needs_refresh?: boolean;\n redacted: string[];\n };\n auth: {\n access_token: string | null;\n refresh_token: string | null;\n app_id: string | null;\n init_data?: Record<string, any>;\n is_verified_user?: boolean;\n };\n app: {\n id?: string;\n icon?: string;\n icon_content_type?: string;\n config: AppConfig | null;\n schema: AppSchema | null;\n user_verification_field?: string;\n user_verification_fields?: string[];\n };\n local_acls: Record<string, { shared: boolean }> | null;\n is_saving_user_data: boolean;\n config?: IConfig;\n};\n\ntype AppSchema = Record<string, SchemaField>;\n\nexport interface SchemaField {\n display_name: string;\n type: string;\n data_category: string;\n required: boolean;\n owned_by: string;\n user_visible: boolean;\n revoke_after: string;\n required_retention: string;\n collection_justification: string;\n opt_out_warning: string;\n}\n\ninterface AppConfig {\n customizations: {\n primary_color: string;\n };\n default_user_id_format?: string;\n hub: {\n auth: {\n allow_unverified_users?: boolean;\n additional_fields: [\n {\n name: string;\n type: string;\n label: string;\n placeholder?: string;\n options: [\n {\n value: string;\n label: string;\n }\n ];\n }\n ];\n email: {\n from_address: string;\n image: string;\n };\n show_app_icon: boolean;\n };\n customizations: HubCustomizations;\n };\n}\n\nexport interface HubCustomizations {\n rounded_corners: boolean;\n primary_color: string;\n placement: 'bottom-left' | 'hidden';\n offset_x: number;\n offset_y: number;\n property_overrides: Record<string, string>;\n}\n\ntype ContextProps = {\n config: IConfig;\n};\n\nexport const GlobalContext = createContext<\n { state: GlobalState; dispatch: Dispatch } | undefined\n>(undefined);\n\nfunction handleStateInit(initialState: GlobalState) {\n if (storage.contains('state')) {\n const state = JSON.parse(storage.getString('state') || '{}');\n\n return {\n ...initialState,\n ...state,\n };\n }\n\n return initialState;\n}\n\n// async function updateStorage(newState: any) {\n// const oldState = JSON.parse(await storage.getItem('state') || '{}');\n\n// if (!isEqual(oldState, newState)) {\n// console.log('writing new state', newState);\n// await storage.setItem('state', JSON.stringify(newState));\n// }\n// }\n\nconst GlobalContextProvider: FunctionComponent<ContextProps> = ({\n children,\n config,\n}) => {\n const initialState: GlobalState = {\n is_initializing: false,\n is_container_visible: false,\n use_modal: false,\n nav: {\n current_route: '/',\n route_trigger: '',\n event_id: '',\n section: '',\n options: {},\n },\n user: {\n data: {\n email: null,\n },\n needs_refresh: false,\n redacted: [],\n },\n auth: {\n access_token: null,\n refresh_token: null,\n app_id: null,\n },\n app: {\n schema: null,\n config: null,\n },\n local_acls: null,\n is_saving_user_data: false,\n config,\n };\n\n // TODO: There's a better way to do this where we have a set of rules that watch/apply to the state as it changes\n // function dispatchExternalEvents(prevState: GlobalState, nextState: GlobalState) {\n\n // // Log in, get new token, load previous auth state, etc\n // if (prevState.auth.access_token !== nextState.auth.access_token) {\n // events.dispatch(EventType.AUTH, {\n // access_token: nextState.auth.access_token,\n // user_id: nextState.user.data.id,\n // app_id: nextState.auth.app_id,\n // });\n // }\n\n // // User data changes. Also, fire the event when ACLs change since this affects the data\n // // that the application can see.\n // if (!isEqual(prevState.local_acls, nextState.local_acls) ||\n // !isEqual(prevState.user.data, nextState.user.data)) {\n // events.dispatch(EventType.USER_DATA, {\n // // The data is filtered on the local_acls\n // data: redactUserDataWithAcls(nextState.user.data, nextState.local_acls),\n // });\n // }\n\n // // Log out\n // if (nextState.auth.access_token === null) {\n // events.dispatch(EventType.SIGN_OUT, {});\n // }\n // }\n\n function mainReducer(state: GlobalState, action: TAction): GlobalState {\n let decodedToken: any;\n\n let newState;\n // let cachedAuth;\n switch (action.type) {\n case ActionType.SET_CONTAINER_VISIBLE:\n newState = {\n ...state,\n is_container_visible: action.payload.isVisible,\n use_modal:\n action.payload.isVisible === false ? false : state.use_modal,\n nav: {\n ...state.nav,\n current_route: '/',\n },\n };\n break;\n\n case ActionType.CHANGE_ROUTE:\n newState = {\n ...state,\n nav: {\n ...state.nav,\n current_route: action.payload.route,\n route_trigger: action.payload.trigger || '',\n event_id: action.payload.event_id,\n options: action.payload.opts,\n },\n };\n\n break;\n\n case ActionType.SET_SECTION:\n newState = {\n ...state,\n nav: {\n ...state.nav,\n section: action.payload.section,\n },\n };\n break;\n\n case ActionType.LOGIN_SUCCESS:\n // storage.setItem('auth', JSON.stringify(action.payload));\n decodedToken = jwt_decode(action.payload.access_token);\n\n // Ensure this token is for this app\n if (action.payload.app_id !== state.app.id) {\n return {\n ...state,\n };\n }\n\n newState = {\n ...state,\n auth: {\n ...state.auth,\n access_token: action.payload.access_token,\n refresh_token: action.payload.refresh_token,\n app_id: action.payload.app_id,\n is_verified_user:\n decodedToken?.['https://auth.rownd.io/is_verified_user'] !==\n false, // default is `true` if the attribute doesn't exist\n },\n user: {\n ...state.user,\n data: {\n ...state.user.data,\n id: action.payload.app_user_id,\n },\n },\n };\n break;\n\n case ActionType.SIGN_OUT:\n // storage.removeItem('auth');\n newState = {\n ...state,\n user: {\n data: {\n email: null,\n },\n redacted: [],\n },\n auth: {\n access_token: null,\n refresh_token: null,\n app_id: null,\n },\n };\n break;\n\n case ActionType.REFRESH_TOKEN:\n newState = {\n ...state,\n auth: {\n ...state.auth,\n access_token: action.payload.access_token,\n refresh_token: action.payload.refresh_token,\n },\n };\n\n // cachedAuth = storage.getItem('auth');\n // if (cachedAuth) {\n // const cachedAuthObj = JSON.parse(cachedAuth);\n // cachedAuth = {\n // ...cachedAuthObj,\n // ...newState.auth,\n // };\n // storage.setItem('auth', JSON.stringify(newState.auth));\n // }\n\n break;\n\n case ActionType.LOAD_USER:\n newState = {\n ...state,\n user: {\n ...state.user,\n data: {\n ...action.payload.data,\n },\n redacted: action.payload.redacted,\n },\n };\n break;\n\n case ActionType.UPDATE_LOCAL_ACLS:\n newState = {\n ...state,\n local_acls: {\n ...state.local_acls,\n ...action.payload,\n },\n };\n break;\n\n case ActionType.SET_USER_DATA_FIELD:\n // Dispatch a USER_DATA_SAVED event to satisfy event listeners when the data\n // was not changed and no request to Rownd was ever made.\n if (state.user.data[action.payload.field] === action.payload.value) {\n events.dispatch(EventType.USER_DATA_SAVED, state.user.data);\n }\n\n newState = {\n ...state,\n user: {\n ...state.user,\n data: {\n ...state.user.data,\n [action.payload.field]: action.payload.value,\n },\n },\n };\n break;\n\n case ActionType.SET_USER_DATA:\n // Dispatch a USER_DATA_SAVED event to satisfy event listeners when the data\n // was not changed and no request to Rownd was ever made.\n if (\n isEqual(\n pick(state.user.data, Object.keys(action.payload.data)),\n action.payload.data\n )\n ) {\n events.dispatch(EventType.USER_DATA_SAVED, state.user.data);\n }\n\n newState = {\n ...state,\n user: {\n ...state.user,\n data: {\n ...state.user.data,\n ...action.payload.data,\n },\n },\n };\n break;\n\n case ActionType.SET_REFRESH_USER_DATA:\n newState = {\n ...state,\n user: {\n ...state.user,\n needs_refresh: action.payload.needs_refresh,\n },\n };\n break;\n\n case ActionType.LOAD_STATE:\n newState = {\n ...action.payload,\n };\n break;\n\n case ActionType.SET_IS_SAVING_USER_DATA: {\n newState = {\n ...state,\n is_saving_user_data: action.payload.saving,\n };\n break;\n }\n\n case ActionType.SET_APP_CONFIG:\n newState = {\n ...state,\n app: {\n ...state.app,\n ...action.payload,\n },\n };\n break;\n\n default:\n newState = state;\n }\n\n // Write state to local storage, minus a few fields\n const persistedState: any = { ...newState };\n delete persistedState.config;\n delete persistedState.nav;\n delete persistedState.is_container_visible;\n delete persistedState.use_modal;\n delete persistedState.is_initializing;\n delete persistedState.is_saving_user_data;\n\n // updateStorage(persistedState);\n storage.set('state', JSON.stringify(persistedState));\n\n // Fire any events that depend on state updates\n // dispatchExternalEvents(state, newState);\n\n return newState;\n }\n\n const [state, dispatch] = useReducer(\n mainReducer,\n initialState,\n handleStateInit\n );\n\n // Async load cached state from storage\n // useEffect(() => {\n // (async () => {\n // const existingStateStr = await storage.getItem('state');\n\n // if (!existingStateStr) {\n // return;\n // }\n\n // dispatch({\n // type: ActionType.LOAD_STATE,\n // payload: JSON.parse(existingStateStr),\n // });\n // });\n // }, []);\n\n const value = { state, dispatch };\n return (\n <GlobalContext.Provider value={value}>\n {children}\n {/* <ExternalApi config={config} dispatchEvents={(state: GlobalState) => dispatchExternalEvents(initialState, state)} /> */}\n </GlobalContext.Provider>\n );\n};\n\nfunction useGlobalContext() {\n const context = useContext(GlobalContext);\n\n if (context === undefined) {\n throw new Error(\n 'useGlobalContext must be used within a GlobalContext Provider'\n );\n }\n\n return context;\n}\n\nexport { GlobalContextProvider, useGlobalContext };\n"],"mappings":"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"}
@@ -1,6 +1,4 @@
1
- import React from 'react'; // import { useDeviceContext } from 'twrnc';
2
- // import tw from '../utils/tailwind';
3
-
1
+ import React from 'react';
4
2
  import { SignIn } from './SignIn';
5
3
  import { AutoSigninDialog } from './AutoSigninDialog';
6
4
  import { useGlobalContext } from './GlobalContext';
@@ -1 +1 @@
1
- {"version":3,"names":["React","SignIn","AutoSigninDialog","useGlobalContext","RowndComponents","state","nav","current_route"],"sources":["RowndComponents.tsx"],"sourcesContent":["import React from 'react';\n// import { useDeviceContext } from 'twrnc';\n\n// import tw from '../utils/tailwind';\nimport { SignIn } from './SignIn';\nimport { AutoSigninDialog } from './AutoSigninDialog';\nimport { useGlobalContext } from './GlobalContext';\n\nexport function RowndComponents() {\n const { state } = useGlobalContext();\n // useDeviceContext(tw);\n\n return (\n <>\n {state.nav.current_route === '/account/login' && <SignIn />}\n {state.nav.current_route === '/account/auto-signin' && (\n <AutoSigninDialog />\n )}\n </>\n );\n}\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB,C,CACA;AAEA;;AACA,SAASC,MAAT,QAAuB,UAAvB;AACA,SAASC,gBAAT,QAAiC,oBAAjC;AACA,SAASC,gBAAT,QAAiC,iBAAjC;AAEA,OAAO,SAASC,eAAT,GAA2B;EAChC,MAAM;IAAEC;EAAF,IAAYF,gBAAgB,EAAlC,CADgC,CAEhC;;EAEA,oBACE,0CACGE,KAAK,CAACC,GAAN,CAAUC,aAAV,KAA4B,gBAA5B,iBAAgD,oBAAC,MAAD,OADnD,EAEGF,KAAK,CAACC,GAAN,CAAUC,aAAV,KAA4B,sBAA5B,iBACC,oBAAC,gBAAD,OAHJ,CADF;AAQD"}
1
+ {"version":3,"names":["React","SignIn","AutoSigninDialog","useGlobalContext","RowndComponents","state","nav","current_route"],"sources":["RowndComponents.tsx"],"sourcesContent":["import React from 'react';\nimport { SignIn } from './SignIn';\nimport { AutoSigninDialog } from './AutoSigninDialog';\nimport { useGlobalContext } from './GlobalContext';\n\nexport function RowndComponents() {\n const { state } = useGlobalContext();\n // useDeviceContext(tw);\n\n return (\n <>\n {state.nav.current_route === '/account/login' && <SignIn />}\n {state.nav.current_route === '/account/auto-signin' && (\n <AutoSigninDialog />\n )}\n </>\n );\n}\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,MAAT,QAAuB,UAAvB;AACA,SAASC,gBAAT,QAAiC,oBAAjC;AACA,SAASC,gBAAT,QAAiC,iBAAjC;AAEA,OAAO,SAASC,eAAT,GAA2B;EAChC,MAAM;IAAEC;EAAF,IAAYF,gBAAgB,EAAlC,CADgC,CAEhC;;EAEA,oBACE,0CACGE,KAAK,CAACC,GAAN,CAAUC,aAAV,KAA4B,gBAA5B,iBAAgD,oBAAC,MAAD,OADnD,EAEGF,KAAK,CAACC,GAAN,CAAUC,aAAV,KAA4B,sBAA5B,iBACC,oBAAC,gBAAD,OAHJ,CADF;AAQD"}