@rownd/react-native 0.1.4 → 0.1.7

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 (32) hide show
  1. package/README.md +14 -0
  2. package/lib/commonjs/components/DefaultContext.js +4 -7
  3. package/lib/commonjs/components/DefaultContext.js.map +1 -1
  4. package/lib/commonjs/components/SignIn.js +5 -5
  5. package/lib/commonjs/components/SignIn.js.map +1 -1
  6. package/lib/commonjs/components/images/CheckmarkFilled.js +40 -0
  7. package/lib/commonjs/components/images/CheckmarkFilled.js.map +1 -0
  8. package/lib/commonjs/components/images/EmailVerifyWaiting.js +100 -0
  9. package/lib/commonjs/components/images/EmailVerifyWaiting.js.map +1 -0
  10. package/lib/commonjs/components/images/PhoneVerifyWaiting.js +91 -0
  11. package/lib/commonjs/components/images/PhoneVerifyWaiting.js.map +1 -0
  12. package/lib/module/components/DefaultContext.js +3 -3
  13. package/lib/module/components/DefaultContext.js.map +1 -1
  14. package/lib/module/components/SignIn.js +3 -3
  15. package/lib/module/components/SignIn.js.map +1 -1
  16. package/lib/module/components/images/CheckmarkFilled.js +27 -0
  17. package/lib/module/components/images/CheckmarkFilled.js.map +1 -0
  18. package/lib/module/components/images/EmailVerifyWaiting.js +87 -0
  19. package/lib/module/components/images/EmailVerifyWaiting.js.map +1 -0
  20. package/lib/module/components/images/PhoneVerifyWaiting.js +78 -0
  21. package/lib/module/components/images/PhoneVerifyWaiting.js.map +1 -0
  22. package/lib/package.json +4 -4
  23. package/lib/typescript/src/components/images/CheckmarkFilled.d.ts +4 -0
  24. package/lib/typescript/src/components/images/EmailVerifyWaiting.d.ts +4 -0
  25. package/lib/typescript/src/components/images/PhoneVerifyWaiting.d.ts +4 -0
  26. package/package.json +4 -4
  27. package/src/components/DefaultContext.tsx +3 -3
  28. package/src/components/SignIn.tsx +3 -3
  29. package/src/components/images/CheckmarkFilled.tsx +30 -0
  30. package/src/components/images/EmailVerifyWaiting.tsx +95 -0
  31. package/src/components/images/PhoneVerifyWaiting.tsx +74 -0
  32. package/ios/ReactNative.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -4
package/README.md CHANGED
@@ -7,10 +7,24 @@ You must be using React Native v0.64 or higher.
7
7
 
8
8
  ## Installation
9
9
 
10
+ First, install the Rownd SDK for React Native.
11
+
10
12
  ```sh
11
13
  npm install @rownd/react-native
12
14
  ```
13
15
 
16
+ Due to some native peer-dependencies, you'll also need to run the following command to get modules with native code working properly.
17
+
18
+ ```sh
19
+ npm install @gorhom/bottom-sheet react-native-device-info \ react-native-gesture-handler react-native-mmkv react-native-reanimated \ react-native-sha256 react-native-svg
20
+ ```
21
+
22
+ Once those are installed, run this command to ensure the iOS build can find the native components.
23
+
24
+ ```sh
25
+ npx pod-install
26
+ ```
27
+
14
28
  ## Setup
15
29
  Rownd's React Native library uses several Expo modules to improve the overall experience. Some of these modules
16
30
  have native bindings, so you won't be able to use a fully-managed Expo-based app. If you're running a bare project
@@ -19,7 +19,7 @@ var _actions = require("../data/actions");
19
19
 
20
20
  var _ky = _interopRequireDefault(require("ky"));
21
21
 
22
- var Clipboard = _interopRequireWildcard(require("expo-clipboard"));
22
+ var _clipboard = _interopRequireDefault(require("@react-native-clipboard/clipboard"));
23
23
 
24
24
  var _reactNativeBase = _interopRequireDefault(require("react-native-base64"));
25
25
 
@@ -27,10 +27,6 @@ var _reactNative = require("react-native");
27
27
 
28
28
  var _events = require("../utils/events");
29
29
 
30
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
-
32
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
-
34
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
31
 
36
32
  function DefaultContext(_ref) {
@@ -83,7 +79,7 @@ function DefaultContext(_ref) {
83
79
  (async () => {
84
80
  try {
85
81
  let authData = null;
86
- let authLink = (await _reactNative.Linking.getInitialURL()) || (await Clipboard.getStringAsync());
82
+ let authLink = (await _reactNative.Linking.getInitialURL()) || (await _clipboard.default.getString());
87
83
 
88
84
  if (authLink.includes('rownd.link')) {
89
85
  dispatch({
@@ -108,7 +104,8 @@ function DefaultContext(_ref) {
108
104
  } // Clear the clipboard value so we don't leak any creds
109
105
 
110
106
 
111
- await Clipboard.setStringAsync('');
107
+ _clipboard.default.setString('');
108
+
112
109
  dispatch({
113
110
  type: _actions.ActionType.LOGIN_SUCCESS,
114
111
  payload: authData
@@ -1 +1 @@
1
- {"version":3,"names":["DefaultContext","config","state","dispatch","useGlobalContext","client","api","useApi","useDeviceFingerprint","useEffect","resp","get","headers","appKey","json","app","icon","iconMeta","ky","head","icon_content_type","type","ActionType","SET_APP_CONFIG","payload","err","console","error","auth","access_token","id","authData","authLink","Linking","getInitialURL","Clipboard","getStringAsync","includes","CHANGE_ROUTE","route","opts","DEFAULT_USER_AGENT","startsWith","authStr","split","JSON","parse","base64","decode","setStringAsync","LOGIN_SUCCESS","retrieveUserInfo","useCallback","userInfo","Authorization","LOAD_USER","UPDATE_LOCAL_ACLS","redacted","reduce","acc","field","shared","retrieveAcls","appUserAcls","acls","Error","user","needs_refresh","SET_REFRESH_USER_DATA","saveAclsDebounced","useDebounce","saveAcls","local_acls","put","localAclsRef","useRef","current","isEqual","saveUserDataDebounced","saveUserData","data","SET_IS_SAVING_USER_DATA","saving","eventDetails","events","EventType","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 * as Clipboard from 'expo-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.getStringAsync());\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 await Clipboard.setStringAsync('');\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":["DefaultContext","config","state","dispatch","useGlobalContext","client","api","useApi","useDeviceFingerprint","useEffect","resp","get","headers","appKey","json","app","icon","iconMeta","ky","head","icon_content_type","type","ActionType","SET_APP_CONFIG","payload","err","console","error","auth","access_token","id","authData","authLink","Linking","getInitialURL","Clipboard","getString","includes","CHANGE_ROUTE","route","opts","DEFAULT_USER_AGENT","startsWith","authStr","split","JSON","parse","base64","decode","setString","LOGIN_SUCCESS","retrieveUserInfo","useCallback","userInfo","Authorization","LOAD_USER","UPDATE_LOCAL_ACLS","redacted","reduce","acc","field","shared","retrieveAcls","appUserAcls","acls","Error","user","needs_refresh","SET_REFRESH_USER_DATA","saveAclsDebounced","useDebounce","saveAcls","local_acls","put","localAclsRef","useRef","current","isEqual","saveUserDataDebounced","saveUserData","data","SET_IS_SAVING_USER_DATA","saving","eventDetails","events","EventType","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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"}
@@ -31,11 +31,11 @@ var _actions = require("../data/actions");
31
31
 
32
32
  var _form = require("../utils/form");
33
33
 
34
- var _emailVerifyWaiting = _interopRequireDefault(require("../assets/images/email-verify-waiting.svg"));
34
+ var _EmailVerifyWaiting = _interopRequireDefault(require("./images/EmailVerifyWaiting"));
35
35
 
36
- var _phoneVerifyWaiting = _interopRequireDefault(require("../assets/images/phone-verify-waiting.svg"));
36
+ var _PhoneVerifyWaiting = _interopRequireDefault(require("./images/PhoneVerifyWaiting"));
37
37
 
38
- var _checkmarkFilled = _interopRequireDefault(require("../assets/images/checkmark--filled.svg"));
38
+ var _CheckmarkFilled = _interopRequireDefault(require("./images/CheckmarkFilled"));
39
39
 
40
40
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
41
41
 
@@ -473,7 +473,7 @@ function SignIn() {
473
473
  onPress: () => setStep(LoginStep.INIT)
474
474
  }, "\xA0Re-send message")), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
475
475
  style: styles.signInVerificationImage
476
- }, loginType === 'phone' ? /*#__PURE__*/_react.default.createElement(_phoneVerifyWaiting.default, null) : /*#__PURE__*/_react.default.createElement(_emailVerifyWaiting.default, null)), /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
476
+ }, loginType === 'phone' ? /*#__PURE__*/_react.default.createElement(_PhoneVerifyWaiting.default, null) : /*#__PURE__*/_react.default.createElement(_EmailVerifyWaiting.default, null)), /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
477
477
  style: _ref2 => {
478
478
  let {
479
479
  pressed
@@ -485,7 +485,7 @@ function SignIn() {
485
485
  style: styles.buttonContent
486
486
  }, "Try a different", ' ', loginType === 'phone' ? 'phone number' : 'email'))), step === LoginStep.SUCCESS && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
487
487
  style: styles.signInVerificationImage
488
- }, /*#__PURE__*/_react.default.createElement(_checkmarkFilled.default, null))), step === LoginStep.FAILURE && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
488
+ }, /*#__PURE__*/_react.default.createElement(_CheckmarkFilled.default, null))), step === LoginStep.FAILURE && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
489
489
  style: _tailwind.default.style('text-base')
490
490
  }, "Whoops, that didn't work!"), /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
491
491
  style: styles.button,
@@ -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","styles","bottomSheet","innerContainer","show_app_icon","icon","icon_content_type","appLogo","uri","dialogHeading","inputLabel","identifierInput","text","trim","map","renderField","pressed","button","buttonDisabled","buttonPressed","buttonSubmitting","buttonText","buttonContent","buttonDisabledText","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","display","justifyContent","opacity","color","paddingLeft","buttonTextInner","loadingIndicator","textAlignVertical","margin"],"sources":["SignIn.tsx"],"sourcesContent":["import * as Linking from 'expo-linking';\nimport 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 Text,\n StyleSheet,\n Pressable,\n Image,\n ActivityIndicator,\n} from 'react-native';\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 BottomSheetTextInput,\n} from '@gorhom/bottom-sheet';\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 '../assets/images/email-verify-waiting.svg';\nimport ImagePhoneVerifyWaiting from '../assets/images/phone-verify-waiting.svg';\nimport ImageCheckmarkFilled from '../assets/images/checkmark--filled.svg';\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 return (\n <BottomSheetModal\n snapPoints={snapPoints}\n index={1}\n backdropComponent={renderBackdrop}\n keyboardBehavior=\"fillParent\"\n android_keyboardInputMode=\"adjustResize\"\n enablePanDownToClose={true}\n onDismiss={handleClose}\n style={styles.bottomSheet}\n ref={bottomSheetModalRef}\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) => 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 <Pressable\n style={({ pressed }: { pressed: boolean }) => [\n styles.button,\n !isValidUserIdentifier && styles.buttonDisabled,\n pressed && styles.buttonPressed,\n isSubmitting && styles.buttonSubmitting,\n ]}\n disabled={!isValidUserIdentifier || isSubmitting}\n onPress={initSignIn}\n >\n <Text>\n {isSubmitting && (\n <ActivityIndicator size=\"small\" color=\"#efefef\" />\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 ? 'Just a sec...' : 'Continue'}\n </Text>\n </View>\n </Text>\n </Pressable>\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 <Pressable\n style={({ pressed }: { pressed: boolean }) => [\n styles.button,\n pressed && styles.buttonPressed,\n ]}\n onPress={() => setStep(LoginStep.INIT)}\n >\n <Text style={styles.buttonContent}>\n Try a different{' '}\n {loginType === 'phone' ? 'phone number' : 'email'}\n </Text>\n </Pressable>\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 <Pressable\n style={styles.button}\n onPress={() => setStep(LoginStep.INIT)}\n >\n <Text style={styles.buttonContent}>Try again</Text>\n </Pressable>\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 <Pressable\n style={styles.button}\n onPress={() => setStep(LoginStep.INIT)}\n >\n <Text style={styles.buttonContent}>Try again</Text>\n </Pressable>\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 display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\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 marginLeft: 10,\n paddingLeft: 10,\n fontSize: 18,\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 textAlignVertical: 'center',\n padding: 20,\n margin: 20,\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","styles","bottomSheet","innerContainer","show_app_icon","icon","icon_content_type","appLogo","uri","dialogHeading","inputLabel","identifierInput","text","trim","map","renderField","pressed","button","buttonDisabled","buttonPressed","buttonSubmitting","buttonText","buttonContent","buttonDisabledText","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","display","justifyContent","opacity","color","paddingLeft","buttonTextInner","loadingIndicator","textAlignVertical","margin"],"sources":["SignIn.tsx"],"sourcesContent":["import * as Linking from 'expo-linking';\nimport 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 Text,\n StyleSheet,\n Pressable,\n Image,\n ActivityIndicator,\n} from 'react-native';\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 BottomSheetTextInput,\n} from '@gorhom/bottom-sheet';\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 return (\n <BottomSheetModal\n snapPoints={snapPoints}\n index={1}\n backdropComponent={renderBackdrop}\n keyboardBehavior=\"fillParent\"\n android_keyboardInputMode=\"adjustResize\"\n enablePanDownToClose={true}\n onDismiss={handleClose}\n style={styles.bottomSheet}\n ref={bottomSheetModalRef}\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) => 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 <Pressable\n style={({ pressed }: { pressed: boolean }) => [\n styles.button,\n !isValidUserIdentifier && styles.buttonDisabled,\n pressed && styles.buttonPressed,\n isSubmitting && styles.buttonSubmitting,\n ]}\n disabled={!isValidUserIdentifier || isSubmitting}\n onPress={initSignIn}\n >\n <Text>\n {isSubmitting && (\n <ActivityIndicator size=\"small\" color=\"#efefef\" />\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 ? 'Just a sec...' : 'Continue'}\n </Text>\n </View>\n </Text>\n </Pressable>\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 <Pressable\n style={({ pressed }: { pressed: boolean }) => [\n styles.button,\n pressed && styles.buttonPressed,\n ]}\n onPress={() => setStep(LoginStep.INIT)}\n >\n <Text style={styles.buttonContent}>\n Try a different{' '}\n {loginType === 'phone' ? 'phone number' : 'email'}\n </Text>\n </Pressable>\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 <Pressable\n style={styles.button}\n onPress={() => setStep(LoginStep.INIT)}\n >\n <Text style={styles.buttonContent}>Try again</Text>\n </Pressable>\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 <Pressable\n style={styles.button}\n onPress={() => setStep(LoginStep.INIT)}\n >\n <Text style={styles.buttonContent}>Try again</Text>\n </Pressable>\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 display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\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 marginLeft: 10,\n paddingLeft: 10,\n fontSize: 18,\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 textAlignVertical: 'center',\n padding: 20,\n margin: 20,\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":";;;;;;;AAAA;;AACA;;AAQA;;AACA;;AAQA;;AACA;;AACA;;AACA;;AACA;;AAOA;;AACA;;AACA;;AACA;;AAGA;;AACA;;AACA;;;;;;;;;;IAEKA,S;;WAAAA,S;EAAAA,S;EAAAA,S;EAAAA,S;EAAAA,S;EAAAA,S;GAAAA,S,KAAAA,S;;IA2BAC,uB;;WAAAA,uB;EAAAA,uB;EAAAA,uB;EAAAA,uB;GAAAA,uB,KAAAA,uB;;AAME,SAASC,MAAT,GAAkB;EAAA;;EACvB,MAAMC,KAAK,GAAG,IAAAC,aAAA,GAAd;EACA,MAAM;IAAEC,cAAF;IAAkBC,qBAAlB;IAAyCC;EAAzC,IACJ,IAAAC,2BAAA,GADF;EAEA,MAAM;IAAEC,KAAF;IAASC;EAAT,IAAsB,IAAAC,+BAAA,GAA5B;EACA,MAAM;IAAEC,MAAF;IAAUC,GAAV;IAAeC,GAAf;IAAoBC;EAApB,IAA6BN,KAAnC;EAEA,IAAIO,kBAAJ;;EACA,IAAIP,KAAK,CAACQ,IAAN,CAAWC,YAAf,EAA6B;IAC3BF,kBAAkB,GAAG,IAAAG,kBAAA,EAAWV,KAAK,CAACQ,IAAN,CAAWC,YAAtB,CAArB;EACD;;EAED,MAAM,CAACE,cAAD,EAAiBC,iBAAjB,IAAsC,IAAAC,eAAA,EAAS,EAAT,CAA5C;EACA,MAAM,CAACC,UAAD,EAAaC,aAAb,IAA8B,IAAAF,eAAA,EAAwB,IAAxB,CAApC;EACA,MAAM,CAACG,IAAD,EAAOC,OAAP,IAAkB,IAAAJ,eAAA,EACtBb,KAAK,CAACQ,IAAN,CAAWC,YAAX,IACE,wBAAAF,kBAAkB,UAAlB,kEAAqB,wCAArB,OAAmE,KADrE,GAEIhB,SAAS,CAAC2B,OAFd,GAGI3B,SAAS,CAAC4B,IAJQ,CAAxB;EAMA,MAAM,CAACC,KAAD,EAAQC,QAAR,IAAoB,IAAAR,eAAA,EAAS,EAAT,CAA1B;EACA,MAAMS,kBAAkB,GAAG,IAAAC,cAAA,EAAQ,MAAM,CAAC,OAAD,EAAU,OAAV,CAAd,EAAkC,EAAlC,CAA3B;EACA,MAAM,CAACC,SAAD,EAAYC,YAAZ,IAA4B,IAAAZ,eAAA,EAAwB,IAAxB,CAAlC;EACA,MAAM,CAACa,cAAD,EAAiBC,iBAAjB,IAAsC,IAAAd,eAAA,EAAwB,IAAxB,CAA5C;EACA,MAAM,CAACe,YAAD,EAAeC,eAAf,IAAkC,IAAAhB,eAAA,EAAS,KAAT,CAAxC;EACA,MAAM,CAACiB,SAAD,EAAYC,YAAZ,IAA4B,IAAAlB,eAAA,EAAmC,IAAnC,CAAlC,CAzBuB,CA0BvB;;EACA,MAAM,CAACmB,aAAD,EAAgBC,eAAhB,IAAmC,IAAApB,eAAA,EAA6B,IAA7B,CAAzC,CA3BuB,CA2BsD;;EAC7E,MAAM,CAACqB,qBAAD,EAAwBC,wBAAxB,IAAoD,IAAAtB,eAAA,EAAS,KAAT,CAA1D;EACA,MAAM,CAACuB,wBAAD,EAA2BC,2BAA3B,IAA0D,IAAAxB,eAAA,EAC9DT,GAD8D,aAC9DA,GAD8D,uCAC9DA,GAAG,CAAEkC,OADyD,iDAC9D,aAAcC,SADgD,CAAhE;EAIA,MAAMC,mBAAmB,GAAG,IAAAC,aAAA,EAAyB,IAAzB,CAA5B;EACA,IAAAC,gBAAA,EAAU,MAAM;IACd,IAAIF,mBAAmB,CAACG,OAAxB,EAAiC;MAC/BH,mBAAmB,CAACG,OAApB,CAA4BC,OAA5B;IACD;EACF,CAJD,EAIG,EAJH;EAMA,MAAMC,aAAa,GAAG,IAAAC,kBAAA,EACnBC,YAAD,IAA0C;IAAA;;IACxC,MAAMC,UAAU,GAAG3C,GAAH,aAAGA,GAAH,sCAAGA,GAAG,CAAEF,MAAR,mEAAG,YAAa8C,GAAhB,4EAAG,gBAAkBzC,IAArB,yDAAG,qBAAwB0C,iBAA3C;IACA,MAAMC,UAAU,GACd,CAAA/C,GAAG,SAAH,IAAAA,GAAG,WAAH,6BAAAA,GAAG,CAAEkC,OAAL,gEAAcC,SAAd,MAA2BnC,GAA3B,aAA2BA,GAA3B,wCAA2BA,GAAG,CAAEkC,OAAhC,kDAA2B,cAAcc,cAAzC,KAA2D,EAD7D;IAGA,MAAMC,QAAgC,GAAG,EAAzC;;IACA,IAAIL,UAAJ,aAAIA,UAAJ,eAAIA,UAAU,CAAEM,MAAhB,EAAwB;MACtB,KAAK,MAAMC,KAAX,IAAoBP,UAApB,EAAgC;QAC9B,IAAIO,KAAJ,aAAIA,KAAJ,eAAIA,KAAK,CAAEjB,OAAX,EAAoB;UAClBe,QAAQ,CAACE,KAAK,CAACC,IAAP,CAAR,GACE,CAAAL,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAGI,KAAK,CAACC,IAAT,CAAV,KAA4BD,KAAK,CAACjB,OAAN,CAAc,CAAd,EAAiBmB,KAD/C;QAED;MACF;IACF;;IAED,OAAO,EACL,GAAGV,YADE;MAEL,GAAGM;IAFE,CAAP;EAID,CApBmB,EAqBpB,CACEhD,GADF,aACEA,GADF,uCACEA,GAAG,CAAEF,MADP,qEACE,aAAa8C,GADf,8EACE,iBAAkBzC,IADpB,0DACE,sBAAwB0C,iBAD1B,EAEE9C,GAFF,aAEEA,GAFF,wCAEEA,GAAG,CAAEkC,OAFP,kDAEE,cAAcc,cAFhB,EAGEhD,GAHF,aAGEA,GAHF,wCAGEA,GAAG,CAAEkC,OAHP,kDAGE,cAAcC,SAHhB,CArBoB,CAAtB;EA4BA,MAAMmB,YAAY,GAAG,IAAAZ,kBAAA,EACnB,CACEC,YADF,EAEEY,MAFF,KAGK;IACHC,OAAO,CAACC,GAAR,CAAY,cAAZ,EAA4BF,MAA5B;;IACA,QAAQA,MAAM,CAACG,IAAf;MACE,KAAK,OAAL;QACE,OAAOjB,aAAa,CAACE,YAAD,CAApB;;MAEF;QACE,OAAO,EACL,GAAGA,YADE;UAEL,GAAGY,MAAM,CAACI;QAFL,CAAP;IALJ;EAUD,CAhBkB,EAiBnB,CAAClB,aAAD,CAjBmB,CAArB;EAoBA,MAAM,CAACmB,eAAD,EAAkBC,iBAAlB,IAAuC,IAAAC,iBAAA,EAC3CR,YAD2C,EAE3C,EAF2C,EAG3Cb,aAH2C,CAA7C;EAMA,MAAM;IAAEsB,MAAM,EAAEC;EAAV,IAAkB,IAAAC,aAAA,GAAxB;;EAEA,SAASC,aAAT,CAAuBC,KAAvB,EAA+C;IAC7C,MAAMC,EAAE,GACN,uJADF;IAEA,MAAMC,OAAO,GAAGD,EAAE,CAACE,IAAH,CAAQC,MAAM,CAACJ,KAAD,CAAN,CAAcK,WAAd,EAAR,CAAhB;;IAEA,IAAI,CAACH,OAAL,EAAc;MACZ1D,aAAa,CAAC,uBAAD,CAAb;MACA,OAAO,KAAP;IACD;;IAEDA,aAAa,CAAC,IAAD,CAAb;IACA,OAAO,IAAP;EACD;;EAED,MAAM8D,YAAY,GAAG,IAAA/B,kBAAA,EAAY,MAAe;IAC9C,MAAMgC,WAAW,GAAG,IAAAC,cAAA,EAAMpE,cAAN,CAApB;;IACA,IAAI,CAACmE,WAAW,CAACL,OAAjB,EAA0B;MACxB1C,YAAY,CAAC,IAAD,CAAZ;MACAE,eAAe,CAAC,IAAD,CAAf;MACA,OAAO,KAAP;IACD;;IAEDF,YAAY,CAAC,OAAD,CAAZ;IACAE,eAAe,CAAC6C,WAAD,CAAf;IACAlE,iBAAiB,CAACkE,WAAW,CAACE,WAAb,CAAjB;IACA,OAAO,IAAP;EACD,CAZoB,EAYlB,CAACrE,cAAD,CAZkB,CAArB;EAcA,MAAMsE,YAAY,GAAG,IAAAnC,kBAAA,EAAY,MAAe;IAC9C,MAAMoC,UAAU,GAAGvE,cAAH,aAAGA,cAAH,uBAAGA,cAAc,CAAEwE,OAAhB,CAAwB,GAAxB,CAAnB;IACA,MAAMC,cAAc,GAAGzE,cAAH,aAAGA,cAAH,uBAAGA,cAAc,CAAE0E,SAAhB,CAA0BH,UAA1B,EAAsCC,OAAtC,CAA8C,GAA9C,CAAvB;;IACA,IACED,UAAU,GAAG,CAAb,IACAE,cAAc,GAAG,CADjB,IAEA,CAAAzE,cAAc,SAAd,IAAAA,cAAc,WAAd,YAAAA,cAAc,CAAE0E,SAAhB,CAA0BH,UAAU,GAAGE,cAAvC,EAAuD9B,MAAvD,KAAiE,CAHnE,EAIE;MACA,OAAOgB,aAAa,CAAC3D,cAAD,CAApB;IACD;;IAED,OAAO,KAAP;EACD,CAZoB,EAYlB,CAACA,cAAD,CAZkB,CAArB;EAcA,MAAM2E,aAAa,GAAG,IAAAxC,kBAAA,EAAY,MAAM;IACtC,MAAMyC,WAAW,GAAG,EAApB;;IACA,IAAIjE,kBAAkB,CAACkE,QAAnB,CAA4B,OAA5B,CAAJ,EAA0C;MACxCD,WAAW,CAACE,IAAZ,CAAiBZ,YAAjB;IACD;;IAED,IAAIvD,kBAAkB,CAACkE,QAAnB,CAA4B,OAA5B,CAAJ,EAA0C;MACxCD,WAAW,CAACE,IAAZ,CAAiBR,YAAjB;IACD;;IAED,IAAI,CAACM,WAAW,CAACG,IAAZ,CAAkBC,EAAD,IAAQA,EAAE,EAA3B,CAAL,EAAqC;MACnCxD,wBAAwB,CAAC,KAAD,CAAxB;IACD,CAFD,MAEO;MACLA,wBAAwB,CAAC,IAAD,CAAxB;IACD;EACF,CAfqB,EAenB,CAACb,kBAAD,EAAqB2D,YAArB,EAAmCJ,YAAnC,CAfmB,CAAtB,CA1IuB,CA2JvB;;EACA,IAAAnC,gBAAA,EAAU4C,aAAV,EAAyB,CAACA,aAAD,CAAzB;EAEA,MAAMM,eAAe,GAAG,IAAA9C,kBAAA,EAAY,YAAY;IAC9C,IAAI;MACF,MAAM+C,IAAsB,GAAG,MAAMzB,GAAG,CACrC0B,IADkC,CAC5B,2BAD4B,EACA;QACjCC,OAAO,EAAE;UACP,mBAAmB5F,MAAnB,aAAmBA,MAAnB,uBAAmBA,MAAM,CAAE6F;QADpB,CADwB;QAIjCC,IAAI,EAAE;UACJC,YAAY,EAAE1E,SADV;UAEJ,CAACM,SAAS,KAAK,OAAd,GAAwB,OAAxB,GAAkC,OAAnC,GAA6CnB;QAFzC;MAJ2B,CADA,EAUlCsF,IAVkC,EAArC;MAYA,IAAIE,GAAJ;;MACA,QAAQN,IAAI,CAACO,MAAb;QACE,KAAK,SAAL;UACED,GAAG,GAAG,IAAIE,KAAJ,CAAU,kCAAV,CAAN;UACAF,GAAG,CAACG,IAAJ,GAAW9G,uBAAuB,CAAC+G,OAAnC;UACA,MAAMJ,GAAN;;QAEF,KAAK,SAAL;UACEA,GAAG,GAAG,IAAIE,KAAJ,CAAU,kCAAV,CAAN;UACAF,GAAG,CAACG,IAAJ,GAAW9G,uBAAuB,CAAC+G,OAAnC;UACA,MAAMJ,GAAN;;QAEF,KAAK,UAAL;UACE;;QAEF;UACEA,GAAG,GAAG,IAAIE,KAAJ,CAAU,gCAAV,CAAN;UACA,MAAMF,GAAN;MAhBJ;;MAmBAlG,QAAQ,CAAC;QACP6D,IAAI,EAAE0C,mBAAA,CAAWC,aADV;QAEP1C,OAAO,EAAE8B;MAFF,CAAD,CAAR;MAKA5E,OAAO,CAAC1B,SAAS,CAAC2B,OAAX,CAAP;IACD,CAvCD,CAuCE,OAAOiF,GAAP,EAAiB;MACjB;MAEA;MACA,IAAI,CAACA,GAAG,CAACG,IAAL,IAAa,IAAAI,4BAAA,EAAoBC,IAAI,CAACC,GAAL,EAApB,EAAgClF,cAAhC,IAAmD,CAApE,EAAuE;QACrET,OAAO,CAAC1B,SAAS,CAACsH,KAAX,CAAP;QACAxF,QAAQ,CAAC,wCAAD,CAAR;QACA;MACD,CARgB,CAUjB;;;MACA,IACE,CAAC8E,GAAG,CAACC,MAAJ,IAAcD,GAAG,CAACG,IAAnB,KACA,IAAAI,4BAAA,EAAoBC,IAAI,CAACC,GAAL,EAApB,EAAgClF,cAAhC,IAAmD,CAFrD,EAGE;QACAT,OAAO,CAAC1B,SAAS,CAACsH,KAAX,CAAP;QACAxF,QAAQ,CAAC,8BAAD,CAAR;QACA;MACD;;MAED,IAAI8E,GAAG,CAACC,MAAJ,IAAcD,GAAG,CAACC,MAAJ,IAAc,GAAhC,EAAqC;QACnCnF,OAAO,CAAC1B,SAAS,CAACuH,OAAX,CAAP;QACAzF,QAAQ,CAAC,uBAAD,CAAR;MACD;IACF;EACF,CAjEuB,EAiErB,CACD+C,GADC,EAEDjE,MAFC,aAEDA,MAFC,uBAEDA,MAAM,CAAE6F,MAFP,EAGD/F,QAHC,EAIDyB,cAJC,EAKDI,SALC,EAMDN,SANC,EAODb,cAPC,CAjEqB,CAAxB,CA9JuB,CAyOvB;;EACA,IAAAoG,kBAAA,EAAYnB,eAAZ,EAA6B5E,IAAI,KAAKzB,SAAS,CAACyH,OAAnB,GAA6B,IAA7B,GAAoC,IAAjE,EA1OuB,CA4OvB;;EACA,IAAAtE,gBAAA,EAAU,MAAM;IACd,IAAI1B,IAAI,KAAKzB,SAAS,CAAC2B,OAAvB,EAAgC;MAAA;;MAC9B,IAAId,GAAG,SAAH,IAAAA,GAAG,WAAH,qBAAAA,GAAG,CAAEkC,OAAL,wDAAc2E,mBAAd,qBAAqCjH,KAAK,CAACG,MAA3C,0CAAqC,cAAc+G,YAAvD,EAAqE;QAAA;;QACnEC,OAAO,CAACC,OAAR,CACE,CAAAhH,GAAG,SAAH,IAAAA,GAAG,WAAH,6BAAAA,GAAG,CAAEkC,OAAL,gEAAc2E,mBAAd,wBAAqCjH,KAAK,CAACG,MAA3C,mDAAqC,eAAc+G,YAAnD,CADF;MAGD;;MAEDjH,QAAQ,CAAC;QACP6D,IAAI,EAAE0C,mBAAA,CAAWa,YADV;QAEPtD,OAAO,EAAE;UACPuD,KAAK,EAAE;QADA;MAFF,CAAD,CAAR,CAP8B,CAc9B;;MACA,IAAI,CAACtH,KAAK,CAACQ,IAAN,CAAW+G,gBAAhB,EAAkC;QAChCtG,OAAO,CAAC1B,SAAS,CAAC4B,IAAX,CAAP;MACD;IACF;EACF,CApBD,EAoBG,CACDlB,QADC,EAEDG,GAFC,aAEDA,GAFC,wCAEDA,GAAG,CAAEkC,OAFJ,kDAED,cAAc2E,mBAFb,EAGDrB,eAHC,EAID5F,KAAK,CAACQ,IAAN,CAAW+G,gBAJV,oBAKDvH,KAAK,CAACG,MALL,mDAKD,eAAc+G,YALb,EAMDlG,IANC,CApBH;EA6BA,MAAMwG,UAAU,GAAG,IAAA1E,kBAAA,EAAY,YAAY;IAAA;;IACzC,IAAI9B,IAAI,KAAKzB,SAAS,CAACyH,OAAvB,EAAgC;MAC9B;IACD,CAHwC,CAKzC;;;IACA,IAAIlG,UAAJ,EAAgB;MACd;IACD;;IAED,MAAMiD,OAAO,GAAG;MACd,CAACjC,SAAS,KAAK,OAAd,GAAwB,OAAxB,GAAkC,OAAnC,GAA6CnB,cAD/B;MAEd8G,UAAU,EACR,CAAArH,GAAG,SAAH,IAAAA,GAAG,WAAH,6BAAAA,GAAG,CAAEkC,OAAL,gEAAc2E,mBAAd,wBAAqCjH,KAAK,CAACG,MAA3C,mDAAqC,eAAc+G,YAAnD,CAHY;MAIdQ,SAAS,EAAEC,MAAM,CAACC,MAAP,CAActH,IAAI,CAACuH,IAAnB,EAAyBnC,IAAzB,CACRoC,CAAD,IAAOA,CAAC,KAAK,IAAN,IAAcA,CAAC,KAAKC,SADlB,IAGPzH,IAAI,CAACuH,IAHE,GAIP,EARU,CAQN;;IARM,CAAhB,CAVyC,CAqBzC;;IACA,oBAAIxH,GAAG,CAACF,MAAR,yCAAI,aAAY6H,sBAAhB,EAAwC;MAAA;;MACtCjE,OAAO,CAACkE,OAAR,mBAAkB5H,GAAG,CAACF,MAAtB,iDAAkB,aAAY6H,sBAA9B;IACD;;IAED,IAAI5F,wBAAJ,EAA8B;MAC5B2B,OAAO,CAAC2D,SAAR,GAAoB,EAClB,GAAG3D,OAAO,CAAC2D,SADO;QAElB,GAAG1D;MAFe,CAApB;IAID,CA/BwC,CAiCzC;;;IACA,IAAI;MAAA;;MACFnC,eAAe,CAAC,IAAD,CAAf,CADE,CAGF;;MACA,MAAMqG,WAAW,GAAG,MAAMtI,cAAc,EAAxC;MACA,MAAMuI,cAAc,GAAG,MAAMtI,qBAAqB,CAACQ,GAAG,CAAC+H,EAAL,EAAS,CACzDzH,cADyD,CAAT,CAAlD;MAGAoD,OAAO,CAACmE,WAAR,GAAsB;QACpBG,IAAI,EAAEH,WAAW,CAACI,SADE;QAEpBC,SAAS,EAAEJ,cAAF,aAAEA,cAAF,uBAAEA,cAAc,CAAE1E;MAFP,CAAtB;MAKA,MAAMoC,IAAmB,GAAG,MAAMzB,GAAG,CAClC0B,IAD+B,CAC1B,eAD0B,EACT;QACrBC,OAAO,EAAE;UACP,mBAAmB5F,MAAnB,aAAmBA,MAAnB,uBAAmBA,MAAM,CAAE6F;QADpB,CADY;QAIrBC,IAAI,EAAElC;MAJe,CADS,EAO/BkC,IAP+B,EAAlC,CAbE,CAsBF;MACA;;MACA,IAAIJ,IAAI,CAAC2C,WAAT,EAAsB;QACpBvI,QAAQ,CAAC;UACP6D,IAAI,EAAE0C,mBAAA,CAAWC,aADV;UAEP1C,OAAO,EAAE,EACP,GAAG8B,IAAI,CAAC2C,WADD;YAEPC,MAAM,EAAEpI,GAAG,CAAC+H;UAFL;QAFF,CAAD,CAAR;QAQAnH,OAAO,CAAC1B,SAAS,CAAC2B,OAAX,CAAP;QACA;MACD,CAXD,MAWO,IAAI6C,OAAJ,aAAIA,OAAJ,uCAAIA,OAAO,CAAEmE,WAAb,iDAAI,qBAAsBK,SAA1B,EAAqC;QAC1C;QACA,IAAI;UACFzI,gBAAgB,CAACiE,OAAO,CAACmE,WAAR,CAAoBK,SAArB,CAAhB;QACD,CAFD,CAEE,OAAOpC,GAAP,EAAY,CACZ;QACD;MACF;;MAED1E,YAAY,CAACoE,IAAI,CAACK,YAAN,CAAZ;MACAjF,OAAO,CAAC1B,SAAS,CAACyH,OAAX,CAAP;MACArF,iBAAiB,CAACgF,IAAI,CAACC,GAAL,EAAD,CAAjB;IACD,CA/CD,CA+CE,OAAOT,GAAP,EAAiB;MACjB;MAEA,IAAIA,GAAG,CAACuC,QAAJ,CAAatC,MAAb,KAAwB,GAA5B,EAAiC;QAC/BnF,OAAO,CAAC1B,SAAS,CAAC4B,IAAX,CAAP;QACAkB,2BAA2B,CAAC,IAAD,CAA3B;QACA;MACD;;MAEDpB,OAAO,CAAC1B,SAAS,CAACsH,KAAX,CAAP;MACAxF,QAAQ,CAAC8E,GAAG,CAACwC,OAAL,CAAR;IACD,CA1DD,SA0DU;MACR9G,eAAe,CAAC,KAAD,CAAf;IACD;EACF,CA/FkB,EA+FhB,CACDb,IADC,EAEDF,UAFC,EAGDgB,SAHC,EAIDnB,cAJC,EAKDP,GALC,aAKDA,GALC,yCAKDA,GAAG,CAAEkC,OALJ,mDAKD,eAAc2E,mBALb,oBAMDjH,KAAK,CAACG,MANL,mDAMD,eAAc+G,YANb,EAOD5G,IAAI,CAACuH,IAPJ,kBAQDxH,GAAG,CAACF,MARH,iDAQD,aAAY6H,sBARX,EASD3H,GAAG,CAAC+H,EATH,EAUDhG,wBAVC,EAWD4B,eAXC,EAYDpE,cAZC,EAaDC,qBAbC,EAcDuE,GAdC,EAeDjE,MAfC,aAeDA,MAfC,uBAeDA,MAAM,CAAE6F,MAfP,EAgBD/F,QAhBC,EAiBDH,gBAjBC,CA/FgB,CAAnB;;EAmHA,MAAM8I,kBAAkB,GAAG,MAAM;IAC/BzB,OAAO,CAACC,OAAR,CAAgB,kBAAhB;EACD,CAFD;;EAIA,MAAMyB,qBAAqB,GAAIC,GAAD,IAAgB;IAC5C,MAAMC,MAAM,GAAGD,GAAG,CAACC,MAAnB;IACA,MAAM;MAAEtF,KAAF;MAASD;IAAT,IAAkBuF,MAAxB;IAEA9E,iBAAiB,CAAC;MAChBH,IAAI,EAAE,SADU;MAEhBC,OAAO,EAAE;QACP,CAACP,IAAD,GAAQC;MADD;IAFO,CAAD,CAAjB;EAMD,CAVD;;EAYA,MAAMuF,WAAW,GAAG,IAAAlG,kBAAA,EAAY,MAAM;IACpCmG,UAAU,CAAC,MAAM;MACfvJ,KAAK,CAAC;QAAEwJ,IAAI,EAAE;MAAR,CAAD,CAAL;IACD,CAFS,EAEP,GAFO,CAAV;EAGD,CAJmB,EAIjB,CAACxJ,KAAD,CAJiB,CAApB;EAMA,MAAMyJ,UAAU,GAAG,IAAA5H,cAAA,EAAQ,MAAM,CAAC,KAAD,EAAQ,KAAR,CAAd,EAA8B,EAA9B,CAAnB;EAEA,MAAM6H,cAAc,GAAG,IAAAtG,kBAAA,EACpBuG,OAAD,iBACE,6BAAC,gCAAD,eAAyBA,OAAzB;IAAkC,aAAa,EAAC;EAAhD,GAFmB,EAIrB,EAJqB,CAAvB;EAOA,oBACE,6BAAC,6BAAD;IACE,UAAU,EAAEF,UADd;IAEE,KAAK,EAAE,CAFT;IAGE,iBAAiB,EAAEC,cAHrB;IAIE,gBAAgB,EAAC,YAJnB;IAKE,yBAAyB,EAAC,cAL5B;IAME,oBAAoB,EAAE,IANxB;IAOE,SAAS,EAAEJ,WAPb;IAQE,KAAK,EAAEM,MAAM,CAACC,WARhB;IASE,GAAG,EAAE/G;EATP,gBAWE,6BAAC,iBAAD;IAAM,KAAK,EAAE8G,MAAM,CAACE;EAApB,GACGxI,IAAI,KAAKzB,SAAS,CAAC4B,IAAnB,iBACC,4DACG,CAAAd,GAAG,SAAH,IAAAA,GAAG,WAAH,4BAAAA,GAAG,CAAEF,MAAL,kFAAa8C,GAAb,+FAAkBzC,IAAlB,gFAAwBiJ,aAAxB,MACCpJ,GADD,aACCA,GADD,uBACCA,GAAG,CAAEqJ,IADN,MAEErJ,GAAG,CAACsJ,iBAAJ,KAA0B,eAA1B,gBACC,6BAAC,yBAAD;IAAW,GAAG,EAAEtJ,GAAG,CAACqJ,IAApB;IAA0B,KAAK,EAAEJ,MAAM,CAACM;EAAxC,EADD,gBAGC,6BAAC,kBAAD;IAAO,KAAK,EAAEN,MAAM,CAACM,OAArB;IAA8B,MAAM,EAAE;MAAEC,GAAG,EAAExJ,GAAG,CAACqJ;IAAX;EAAtC,EALH,CADH,eAQE,6BAAC,iBAAD;IAAM,KAAK,EAAEJ,MAAM,CAACQ;EAApB,wBARF,eASE,6BAAC,iBAAD;IAAM,KAAK,EAAER,MAAM,CAACS;EAApB,2BATF,eAUE,6BAAC,iCAAD;IACE,KAAK,EAAET,MAAM,CAACU,eADhB;IAEE,WAAW,EAAC,YAFd;IAGE,YAAY,EAAC,eAHf;IAIE,eAAe,EAAC,cAJlB;IAKE,cAAc,EAAC,SALjB;IAME,aAAa,EAAC,IANhB;IAOE,6BAA6B,EAAE,IAPjC;IAQE,cAAc,EAAC,MARjB;IASE,YAAY,EAAGC,IAAD,IAAUrJ,iBAAiB,CAACqJ,IAAI,CAACC,IAAL,EAAD,CAT3C;IAUE,MAAM,EAAE5E,aAVV;IAWE,KAAK,EAAE3E,cAXT;IAYE,eAAe,EAAE6G;EAZnB,EAVF,EAwBGpF,wBAAwB,KACvB/B,GADuB,aACvBA,GADuB,uCACvBA,GAAG,CAAEF,MADkB,qEACvB,aAAa8C,GADU,8EACvB,iBAAkBzC,IADK,0DACvB,sBAAwB0C,iBAAxB,CAA0CiH,GAA1C,CAA+C5G,KAAD,IAAW;IACvD,OAAO,IAAA6G,iBAAA,EAAY,EACjB,GAAG7G,KADc;MAEjBE,KAAK,EAAEO,eAAe,CAACT,KAAK,CAACC,IAAP,CAAf,IAA+B,EAFrB;MAGjB,CAAC,CAAC,OAAD,EAAU,MAAV,EAAkB,KAAlB,EAAyB,OAAzB,EAAkCgC,QAAlC,CAA2CjC,KAAK,CAACO,IAAjD,IACG,SADH,GAEG,UAFJ,GAEiB+E;IALA,CAAZ,CAAP;EAOD,CARD,CADuB,CAxB3B,eAkCE,6BAAC,sBAAD;IACE,KAAK,EAAE;MAAA,IAAC;QAAEwB;MAAF,CAAD;MAAA,OAAuC,CAC5Cf,MAAM,CAACgB,MADqC,EAE5C,CAACpI,qBAAD,IAA0BoH,MAAM,CAACiB,cAFW,EAG5CF,OAAO,IAAIf,MAAM,CAACkB,aAH0B,EAI5C5I,YAAY,IAAI0H,MAAM,CAACmB,gBAJqB,CAAvC;IAAA,CADT;IAOE,QAAQ,EAAE,CAACvI,qBAAD,IAA0BN,YAPtC;IAQE,OAAO,EAAE4F;EARX,gBAUE,6BAAC,iBAAD,QACG5F,YAAY,iBACX,6BAAC,8BAAD;IAAmB,IAAI,EAAC,OAAxB;IAAgC,KAAK,EAAC;EAAtC,EAFJ,eAIE,6BAAC,iBAAD;IAAM,KAAK,EAAE0H,MAAM,CAACoB;EAApB,gBACE,6BAAC,iBAAD;IACE,KAAK,EACHxI,qBAAqB,GACjBoH,MAAM,CAACqB,aADU,GAEjB,EACE,GAAGrB,MAAM,CAACqB,aADZ;MAEE,GAAGrB,MAAM,CAACsB;IAFZ;EAJR,GAUGhJ,YAAY,GAAG,eAAH,GAAqB,UAVpC,CADF,CAJF,CAVF,CAlCF,eAgEE,6BAAC,iBAAD;IAAM,KAAK,EAAE0H,MAAM,CAACuB;EAApB,kJAhEF,CAFJ,EA0EG7J,IAAI,KAAKzB,SAAS,CAACyH,OAAnB,iBACC,yEACE,6BAAC,iBAAD;IAAM,KAAK,EAAEsC,MAAM,CAACQ;EAApB,0BACsB,GADtB,EAEGhI,SAAS,KAAK,OAAd,GAAwB,cAAxB,GAAyC,OAF5C,eADF,eAKE,6BAAC,iBAAD;IAAM,KAAK,EAAEgJ,iBAAA,CAAGC,KAAH,CAAS,MAAT;EAAb,oDACgD,GADhD,eAEE,6BAAC,iBAAD;IAAM,KAAK,EAAED,iBAAA,CAAGC,KAAH,CAAS,QAAT;EAAb,GAAkCpK,cAAlC,CAFF,yCAIE,6BAAC,iBAAD;IACE,KAAK,EAAE,CAAC2I,MAAM,CAAC0B,IAAR,CADT;IAEE,OAAO,EAAE,MAAM/J,OAAO,CAAC1B,SAAS,CAAC4B,IAAX;EAFxB,yBAJF,CALF,eAiBE,6BAAC,iBAAD;IAAM,KAAK,EAAEmI,MAAM,CAAC2B;EAApB,GACGnJ,SAAS,KAAK,OAAd,gBACC,6BAAC,2BAAD,OADD,gBAGC,6BAAC,2BAAD,OAJJ,CAjBF,eAyBE,6BAAC,sBAAD;IACE,KAAK,EAAE;MAAA,IAAC;QAAEuI;MAAF,CAAD;MAAA,OAAuC,CAC5Cf,MAAM,CAACgB,MADqC,EAE5CD,OAAO,IAAIf,MAAM,CAACkB,aAF0B,CAAvC;IAAA,CADT;IAKE,OAAO,EAAE,MAAMvJ,OAAO,CAAC1B,SAAS,CAAC4B,IAAX;EALxB,gBAOE,6BAAC,iBAAD;IAAM,KAAK,EAAEmI,MAAM,CAACqB;EAApB,sBACkB,GADlB,EAEG7I,SAAS,KAAK,OAAd,GAAwB,cAAxB,GAAyC,OAF5C,CAPF,CAzBF,CA3EJ,EAmHGd,IAAI,KAAKzB,SAAS,CAAC2B,OAAnB,iBACC,yEACE,6BAAC,iBAAD;IAAM,KAAK,EAAEoI,MAAM,CAAC2B;EAApB,gBACE,6BAAC,wBAAD,OADF,CADF,CApHJ,EA2HGjK,IAAI,KAAKzB,SAAS,CAACuH,OAAnB,iBACC,yEACE,6BAAC,iBAAD;IAAM,KAAK,EAAEgE,iBAAA,CAAGC,KAAH,CAAS,WAAT;EAAb,+BADF,eAEE,6BAAC,sBAAD;IACE,KAAK,EAAEzB,MAAM,CAACgB,MADhB;IAEE,OAAO,EAAE,MAAMrJ,OAAO,CAAC1B,SAAS,CAAC4B,IAAX;EAFxB,gBAIE,6BAAC,iBAAD;IAAM,KAAK,EAAEmI,MAAM,CAACqB;EAApB,eAJF,CAFF,CA5HJ,EAuIG3J,IAAI,KAAKzB,SAAS,CAACsH,KAAnB,iBACC,yEACE,6BAAC,iBAAD;IAAM,KAAK,EAAEiE,iBAAA,CAAGC,KAAH,CAAS,WAAT;EAAb,6CADF,EAIG,CAAC,CAAC3J,KAAF,iBAAW,6BAAC,iBAAD;IAAM,KAAK,EAAE0J,iBAAA,CAAGC,KAAH,CAAS,eAAT;EAAb,GAAyC3J,KAAzC,CAJd,eAKE,6BAAC,sBAAD;IACE,KAAK,EAAEkI,MAAM,CAACgB,MADhB;IAEE,OAAO,EAAE,MAAMrJ,OAAO,CAAC1B,SAAS,CAAC4B,IAAX;EAFxB,gBAIE,6BAAC,iBAAD;IAAM,KAAK,EAAEmI,MAAM,CAACqB;EAApB,eAJF,CALF,CAxIJ,eAqJE,6BAAC,iBAAD,sBACa,GADb,eAEE,6BAAC,iBAAD;IAAM,KAAK,EAAErB,MAAM,CAAC0B,IAApB;IAA0B,OAAO,EAAEpC;EAAnC,WAFF,CArJF,CAXF,CADF;AA0KD;;AAED,MAAMU,MAAM,GAAG4B,uBAAA,CAAWC,MAAX,CAAkB;EAC/BC,KAAK,EAAE,CACL;EADK,CADwB;EAI/B7B,WAAW,EAAE;IACX8B,WAAW,EAAE,MADF;IAEXC,YAAY,EAAE;MACZC,KAAK,EAAE,CADK;MAEZC,MAAM,EAAE;IAFI,CAFH;IAMXC,aAAa,EAAE,IANJ;IAOXC,YAAY,EAAE,IAPH;IASXC,SAAS,EAAE;EATA,CAJkB;EAe/BnC,cAAc,EAAE;IACdoC,YAAY,EAAE,EADA;IAEdC,WAAW,EAAE,aAFC;IAGdC,WAAW,EAAE,CAHC;IAIdC,OAAO,EAAE;EAJK,CAfe;EAqB/BC,SAAS,EAAE;IACTC,IAAI,EAAE,CADG;IAETF,OAAO,EAAE;EAFA,CArBoB;EAyB/BG,MAAM,EAAE;IACNC,UAAU,EAAE,QADN;IAENC,eAAe,EAAE,OAFX;IAGNC,eAAe,EAAE,EAHX;IAINC,mBAAmB,EAAE,EAJf;IAKNC,oBAAoB,EAAE;EALhB,CAzBuB;EAgC/BC,WAAW,EAAE;IACXjB,KAAK,EAAE,EADI;IAEXC,MAAM,EAAE,CAFG;IAGXY,eAAe,EAAE,iBAHN;IAIXR,YAAY,EAAE;EAJH,CAhCkB;EAsC/BhC,OAAO,EAAE;IACPmC,OAAO,EAAE,EADF;IAEPR,KAAK,EAAE,EAFA;IAGPC,MAAM,EAAE,EAHD;IAIPiB,UAAU,EAAE,QAJL;IAKPC,SAAS,EAAE,QALJ;IAMPC,UAAU,EAAE,MANL;IAOPC,WAAW,EAAE,MAPN;IAQPC,YAAY,EAAE;EARP,CAtCsB;EAgD/B/C,aAAa,EAAE;IACbgD,QAAQ,EAAE;EADG,CAhDgB;EAmD/B/C,UAAU,EAAE;IACVgD,SAAS,EAAE,EADD;IAEVF,YAAY,EAAE;EAFJ,CAnDmB;EAuD/B7C,eAAe,EAAE;IACfoC,eAAe,EAAE,MADF;IAEfR,YAAY,EAAE,CAFC;IAGfG,OAAO,EAAE,EAHM;IAIfe,QAAQ,EAAE;EAJK,CAvDc;EA6D/BxC,MAAM,EAAE;IACNsB,YAAY,EAAE,EADR;IAENG,OAAO,EAAE,EAFH;IAGNgB,SAAS,EAAE,EAHL;IAINF,YAAY,EAAE,EAJR;IAKNlB,SAAS,EAAE,CALL;IAMNS,eAAe,EAAE,SANX;IAONY,OAAO,EAAE,MAPH;IAQNb,UAAU,EAAE,QARN;IASNc,cAAc,EAAE;EATV,CA7DuB;EAwE/B1C,cAAc,EAAE;IACd6B,eAAe,EAAE;EADH,CAxEe;EA2E/B5B,aAAa,EAAE;IACb0C,OAAO,EAAE;EADI,CA3EgB;EA8E/BvC,aAAa,EAAE;IACb+B,SAAS,EAAE,QADE;IAEbI,QAAQ,EAAE,EAFG;IAGbK,KAAK,EAAE;EAHM,CA9EgB;EAmF/BzC,UAAU,EAAE;IACViC,UAAU,EAAE,EADF;IAEVS,WAAW,EAAE,EAFH;IAGVN,QAAQ,EAAE;EAHA,CAnFmB;EAwF/BO,eAAe,EAAE;IACfP,QAAQ,EAAE;EADK,CAxFc;EA2F/BlC,kBAAkB,EAAE;IAClBuC,KAAK,EAAE;EADW,CA3FW;EA8F/B1C,gBAAgB,EAAE;IAChB2B,eAAe,EAAE,SADD;IAEhBe,KAAK,EAAE;EAFS,CA9Fa;EAkG/BG,gBAAgB,EAAE;IAChBC,iBAAiB,EAAE,QADH;IAEhBxB,OAAO,EAAE,EAFO;IAGhByB,MAAM,EAAE;EAHQ,CAlGa;EAuG/B3C,gBAAgB,EAAE;IAChBiC,QAAQ,EAAE,EADM;IAEhBD,YAAY,EAAE;EAFE,CAvGa;EA2G/B5B,uBAAuB,EAAE;IACvBkB,UAAU,EAAE;EADW,CA3GM;EA8G/BnB,IAAI,EAAE;IACJmC,KAAK,EAAE;EADH;AA9GyB,CAAlB,CAAf"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var React = _interopRequireWildcard(require("react"));
9
+
10
+ var _reactNativeSvg = _interopRequireWildcard(require("react-native-svg"));
11
+
12
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
+
14
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
+
16
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
17
+
18
+ /* SVGR has dropped some elements not supported by react-native-svg: style */
19
+ const SvgComponent = props => /*#__PURE__*/React.createElement(_reactNativeSvg.default, _extends({
20
+ id: "icon" // @ts-ignore
21
+ ,
22
+ xmlns: "http://www.w3.org/2000/svg",
23
+ width: 32,
24
+ height: 32,
25
+ viewBox: "0 0 32 32"
26
+ }, props), /*#__PURE__*/React.createElement(_reactNativeSvg.Defs, null), /*#__PURE__*/React.createElement(_reactNativeSvg.Path, {
27
+ d: "M16,2A14,14,0,1,0,30,16,14,14,0,0,0,16,2ZM14,21.5908l-5-5L10.5906,15,14,18.4092,21.41,11l1.5957,1.5859Z"
28
+ }), /*#__PURE__*/React.createElement(_reactNativeSvg.Polygon, {
29
+ id: "inner-path",
30
+ points: "14 21.591 9 16.591 10.591 15 14 18.409 21.41 11 23.005 12.585 14 21.591"
31
+ }), /*#__PURE__*/React.createElement(_reactNativeSvg.Rect, {
32
+ id: "_Transparent_Rectangle_",
33
+ "data-name": "<Transparent Rectangle>",
34
+ width: 32,
35
+ height: 32
36
+ }));
37
+
38
+ var _default = SvgComponent;
39
+ exports.default = _default;
40
+ //# sourceMappingURL=CheckmarkFilled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SvgComponent","props"],"sources":["CheckmarkFilled.tsx"],"sourcesContent":["import * as React from 'react';\nimport Svg, { SvgProps, Defs, Path, Polygon, Rect } from 'react-native-svg';\n/* SVGR has dropped some elements not supported by react-native-svg: style */\n\nconst SvgComponent = (props: SvgProps) => (\n <Svg\n id=\"icon\"\n // @ts-ignore\n xmlns=\"http://www.w3.org/2000/svg\"\n width={32}\n height={32}\n viewBox=\"0 0 32 32\"\n {...props}\n >\n <Defs />\n <Path d=\"M16,2A14,14,0,1,0,30,16,14,14,0,0,0,16,2ZM14,21.5908l-5-5L10.5906,15,14,18.4092,21.41,11l1.5957,1.5859Z\" />\n <Polygon\n id=\"inner-path\"\n points=\"14 21.591 9 16.591 10.591 15 14 18.409 21.41 11 23.005 12.585 14 21.591\"\n />\n <Rect\n id=\"_Transparent_Rectangle_\"\n data-name=\"&lt;Transparent Rectangle&gt;\"\n width={32}\n height={32}\n />\n </Svg>\n);\n\nexport default SvgComponent;\n"],"mappings":";;;;;;;AAAA;;AACA;;;;;;;;AACA;AAEA,MAAMA,YAAY,GAAIC,KAAD,iBACnB,oBAAC,uBAAD;EACE,EAAE,EAAC,MADL,CAEE;EAFF;EAGE,KAAK,EAAC,4BAHR;EAIE,KAAK,EAAE,EAJT;EAKE,MAAM,EAAE,EALV;EAME,OAAO,EAAC;AANV,GAOMA,KAPN,gBASE,oBAAC,oBAAD,OATF,eAUE,oBAAC,oBAAD;EAAM,CAAC,EAAC;AAAR,EAVF,eAWE,oBAAC,uBAAD;EACE,EAAE,EAAC,YADL;EAEE,MAAM,EAAC;AAFT,EAXF,eAeE,oBAAC,oBAAD;EACE,EAAE,EAAC,yBADL;EAEE,aAAU,yBAFZ;EAGE,KAAK,EAAE,EAHT;EAIE,MAAM,EAAE;AAJV,EAfF,CADF;;eAyBeD,Y"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var React = _interopRequireWildcard(require("react"));
9
+
10
+ var _reactNativeSvg = _interopRequireWildcard(require("react-native-svg"));
11
+
12
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
+
14
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
+
16
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
17
+
18
+ /* SVGR has dropped some elements not supported by react-native-svg: title, filter */
19
+ const SvgComponent = props => /*#__PURE__*/React.createElement(_reactNativeSvg.default, _extends({
20
+ width: "79px",
21
+ height: "68px",
22
+ viewBox: "0 0 79 68" // @ts-ignore
23
+ ,
24
+ xmlns: "http://www.w3.org/2000/svg",
25
+ xmlnsXlink: "http://www.w3.org/1999/xlink"
26
+ }, props), /*#__PURE__*/React.createElement(_reactNativeSvg.Defs, null, /*#__PURE__*/React.createElement(_reactNativeSvg.Rect, {
27
+ id: "path-1",
28
+ x: 9.69736842,
29
+ y: 6.17105263,
30
+ width: 53.7763158,
31
+ height: 45.8421053,
32
+ rx: 8
33
+ }), /*#__PURE__*/React.createElement(_reactNativeSvg.Path, {
34
+ d: "M1.49198314,22.8826009 L27.3602885,37.5009111 C33.5004408,40.9707422 41.014234,40.9500831 47.1352131,37.4465401 L72.5558685,22.8961951 C73.0351888,22.6218404 73.6461631,22.7879979 73.9205178,23.2673182 C74.007089,23.4185653 74.0526316,23.5898106 74.0526316,23.7640813 L74.0526316,63 C74.0526316,65.209139 72.2617706,67 70.0526316,67 L4,67 C1.790861,67 2.705415e-16,65.209139 0,63 L0,23.7532056 C8.43762138e-16,23.2009209 0.44771525,22.7532056 1,22.7532056 C1.17240673,22.7532056 1.34188502,22.7977797 1.49198314,22.8826009 Z",
35
+ id: "path-3"
36
+ })), /*#__PURE__*/React.createElement(_reactNativeSvg.G, {
37
+ id: "V2-post--feedback",
38
+ stroke: "none",
39
+ strokeWidth: 1,
40
+ fill: "none",
41
+ fillRule: "evenodd"
42
+ }, /*#__PURE__*/React.createElement(_reactNativeSvg.G, {
43
+ id: "xlg-1312px-16-column-copy-96",
44
+ transform: "translate(-616.000000, -265.000000)"
45
+ }, /*#__PURE__*/React.createElement(_reactNativeSvg.G, {
46
+ id: "Group",
47
+ transform: "translate(618.000000, 265.000000)"
48
+ }, /*#__PURE__*/React.createElement(_reactNativeSvg.Path, {
49
+ d: "M1.1333848,21.7417845 L33.0948714,2.49908682 C35.6464021,0.96291506 38.8400625,0.97130271 41.383489,2.52085558 L72.9358668,21.743773 C73.4075139,22.0311185 73.5569199,22.6464036 73.2695744,23.1180507 C73.2235298,23.1936281 73.1676563,23.2627588 73.1034181,23.3236315 L37.2457723,57.3026316 L37.2457723,57.3026316 L0.965647178,23.3284209 C0.562522036,22.9509179 0.54175124,22.3180937 0.919254307,21.9149685 C0.982302388,21.8476412 1.0543624,21.7893607 1.1333848,21.7417845 Z",
50
+ id: "Path-28",
51
+ fill: "#545454"
52
+ }), /*#__PURE__*/React.createElement(_reactNativeSvg.G, {
53
+ id: "Rectangle"
54
+ }, /*#__PURE__*/React.createElement(_reactNativeSvg.Use, {
55
+ fill: "black",
56
+ fillOpacity: 1 // @ts-ignore
57
+ ,
58
+ filter: "url(#filter-2)",
59
+ xlinkHref: "#path-1"
60
+ }), /*#__PURE__*/React.createElement(_reactNativeSvg.Use, {
61
+ fill: "#FFFFFF",
62
+ fillRule: "evenodd",
63
+ xlinkHref: "#path-1"
64
+ })), /*#__PURE__*/React.createElement(_reactNativeSvg.Rect, {
65
+ id: "Rectangle",
66
+ fillOpacity: 0.4,
67
+ fill: "#D8D8D8",
68
+ x: 18.5131579,
69
+ y: 19.3947368,
70
+ width: 36.1447368,
71
+ height: 3.52631579
72
+ }), /*#__PURE__*/React.createElement(_reactNativeSvg.Rect, {
73
+ id: "Rectangle-Copy",
74
+ fillOpacity: 0.4,
75
+ fill: "#D8D8D8",
76
+ x: 18.5131579,
77
+ y: 27.3289474,
78
+ width: 36.1447368,
79
+ height: 26.4473684
80
+ }), /*#__PURE__*/React.createElement(_reactNativeSvg.G, {
81
+ id: "Rectangle"
82
+ }, /*#__PURE__*/React.createElement(_reactNativeSvg.Use, {
83
+ fill: "black",
84
+ fillOpacity: 1 // @ts-ignore
85
+ ,
86
+ filter: "url(#filter-4)",
87
+ xlinkHref: "#path-3"
88
+ }), /*#__PURE__*/React.createElement(_reactNativeSvg.Use, {
89
+ fill: "#646464",
90
+ fillRule: "evenodd",
91
+ xlinkHref: "#path-3"
92
+ })), /*#__PURE__*/React.createElement(_reactNativeSvg.Path, {
93
+ d: "M23.2845382,51.744338 L1.76315789,67 L1.76315789,67 L71.4078947,67 L49.8865144,51.744338 C41.9186006,46.0961966 31.252452,46.0961966 23.2845382,51.744338 Z",
94
+ id: "Path-29",
95
+ fill: "#545454"
96
+ })))));
97
+
98
+ var _default = SvgComponent;
99
+ exports.default = _default;
100
+ //# sourceMappingURL=EmailVerifyWaiting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SvgComponent","props"],"sources":["EmailVerifyWaiting.tsx"],"sourcesContent":["import * as React from 'react';\nimport Svg, { SvgProps, Defs, Rect, Path, G, Use } from 'react-native-svg';\n/* SVGR has dropped some elements not supported by react-native-svg: title, filter */\n\nconst SvgComponent = (props: SvgProps) => (\n <Svg\n width=\"79px\"\n height=\"68px\"\n viewBox=\"0 0 79 68\"\n // @ts-ignore\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <Defs>\n <Rect\n id=\"path-1\"\n x={9.69736842}\n y={6.17105263}\n width={53.7763158}\n height={45.8421053}\n rx={8}\n />\n <Path\n d=\"M1.49198314,22.8826009 L27.3602885,37.5009111 C33.5004408,40.9707422 41.014234,40.9500831 47.1352131,37.4465401 L72.5558685,22.8961951 C73.0351888,22.6218404 73.6461631,22.7879979 73.9205178,23.2673182 C74.007089,23.4185653 74.0526316,23.5898106 74.0526316,23.7640813 L74.0526316,63 C74.0526316,65.209139 72.2617706,67 70.0526316,67 L4,67 C1.790861,67 2.705415e-16,65.209139 0,63 L0,23.7532056 C8.43762138e-16,23.2009209 0.44771525,22.7532056 1,22.7532056 C1.17240673,22.7532056 1.34188502,22.7977797 1.49198314,22.8826009 Z\"\n id=\"path-3\"\n />\n </Defs>\n <G\n id=\"V2-post--feedback\"\n stroke=\"none\"\n strokeWidth={1}\n fill=\"none\"\n fillRule=\"evenodd\"\n >\n <G\n id=\"xlg-1312px-16-column-copy-96\"\n transform=\"translate(-616.000000, -265.000000)\"\n >\n <G id=\"Group\" transform=\"translate(618.000000, 265.000000)\">\n <Path\n d=\"M1.1333848,21.7417845 L33.0948714,2.49908682 C35.6464021,0.96291506 38.8400625,0.97130271 41.383489,2.52085558 L72.9358668,21.743773 C73.4075139,22.0311185 73.5569199,22.6464036 73.2695744,23.1180507 C73.2235298,23.1936281 73.1676563,23.2627588 73.1034181,23.3236315 L37.2457723,57.3026316 L37.2457723,57.3026316 L0.965647178,23.3284209 C0.562522036,22.9509179 0.54175124,22.3180937 0.919254307,21.9149685 C0.982302388,21.8476412 1.0543624,21.7893607 1.1333848,21.7417845 Z\"\n id=\"Path-28\"\n fill=\"#545454\"\n />\n <G id=\"Rectangle\">\n <Use\n fill=\"black\"\n fillOpacity={1}\n // @ts-ignore\n filter=\"url(#filter-2)\"\n xlinkHref=\"#path-1\"\n />\n <Use fill=\"#FFFFFF\" fillRule=\"evenodd\" xlinkHref=\"#path-1\" />\n </G>\n <Rect\n id=\"Rectangle\"\n fillOpacity={0.4}\n fill=\"#D8D8D8\"\n x={18.5131579}\n y={19.3947368}\n width={36.1447368}\n height={3.52631579}\n />\n <Rect\n id=\"Rectangle-Copy\"\n fillOpacity={0.4}\n fill=\"#D8D8D8\"\n x={18.5131579}\n y={27.3289474}\n width={36.1447368}\n height={26.4473684}\n />\n <G id=\"Rectangle\">\n <Use\n fill=\"black\"\n fillOpacity={1}\n // @ts-ignore\n filter=\"url(#filter-4)\"\n xlinkHref=\"#path-3\"\n />\n <Use fill=\"#646464\" fillRule=\"evenodd\" xlinkHref=\"#path-3\" />\n </G>\n <Path\n d=\"M23.2845382,51.744338 L1.76315789,67 L1.76315789,67 L71.4078947,67 L49.8865144,51.744338 C41.9186006,46.0961966 31.252452,46.0961966 23.2845382,51.744338 Z\"\n id=\"Path-29\"\n fill=\"#545454\"\n />\n </G>\n </G>\n </G>\n </Svg>\n);\n\nexport default SvgComponent;\n"],"mappings":";;;;;;;AAAA;;AACA;;;;;;;;AACA;AAEA,MAAMA,YAAY,GAAIC,KAAD,iBACnB,oBAAC,uBAAD;EACE,KAAK,EAAC,MADR;EAEE,MAAM,EAAC,MAFT;EAGE,OAAO,EAAC,WAHV,CAIE;EAJF;EAKE,KAAK,EAAC,4BALR;EAME,UAAU,EAAC;AANb,GAOMA,KAPN,gBASE,oBAAC,oBAAD,qBACE,oBAAC,oBAAD;EACE,EAAE,EAAC,QADL;EAEE,CAAC,EAAE,UAFL;EAGE,CAAC,EAAE,UAHL;EAIE,KAAK,EAAE,UAJT;EAKE,MAAM,EAAE,UALV;EAME,EAAE,EAAE;AANN,EADF,eASE,oBAAC,oBAAD;EACE,CAAC,EAAC,8gBADJ;EAEE,EAAE,EAAC;AAFL,EATF,CATF,eAuBE,oBAAC,iBAAD;EACE,EAAE,EAAC,mBADL;EAEE,MAAM,EAAC,MAFT;EAGE,WAAW,EAAE,CAHf;EAIE,IAAI,EAAC,MAJP;EAKE,QAAQ,EAAC;AALX,gBAOE,oBAAC,iBAAD;EACE,EAAE,EAAC,8BADL;EAEE,SAAS,EAAC;AAFZ,gBAIE,oBAAC,iBAAD;EAAG,EAAE,EAAC,OAAN;EAAc,SAAS,EAAC;AAAxB,gBACE,oBAAC,oBAAD;EACE,CAAC,EAAC,2dADJ;EAEE,EAAE,EAAC,SAFL;EAGE,IAAI,EAAC;AAHP,EADF,eAME,oBAAC,iBAAD;EAAG,EAAE,EAAC;AAAN,gBACE,oBAAC,mBAAD;EACE,IAAI,EAAC,OADP;EAEE,WAAW,EAAE,CAFf,CAGE;EAHF;EAIE,MAAM,EAAC,gBAJT;EAKE,SAAS,EAAC;AALZ,EADF,eAQE,oBAAC,mBAAD;EAAK,IAAI,EAAC,SAAV;EAAoB,QAAQ,EAAC,SAA7B;EAAuC,SAAS,EAAC;AAAjD,EARF,CANF,eAgBE,oBAAC,oBAAD;EACE,EAAE,EAAC,WADL;EAEE,WAAW,EAAE,GAFf;EAGE,IAAI,EAAC,SAHP;EAIE,CAAC,EAAE,UAJL;EAKE,CAAC,EAAE,UALL;EAME,KAAK,EAAE,UANT;EAOE,MAAM,EAAE;AAPV,EAhBF,eAyBE,oBAAC,oBAAD;EACE,EAAE,EAAC,gBADL;EAEE,WAAW,EAAE,GAFf;EAGE,IAAI,EAAC,SAHP;EAIE,CAAC,EAAE,UAJL;EAKE,CAAC,EAAE,UALL;EAME,KAAK,EAAE,UANT;EAOE,MAAM,EAAE;AAPV,EAzBF,eAkCE,oBAAC,iBAAD;EAAG,EAAE,EAAC;AAAN,gBACE,oBAAC,mBAAD;EACE,IAAI,EAAC,OADP;EAEE,WAAW,EAAE,CAFf,CAGE;EAHF;EAIE,MAAM,EAAC,gBAJT;EAKE,SAAS,EAAC;AALZ,EADF,eAQE,oBAAC,mBAAD;EAAK,IAAI,EAAC,SAAV;EAAoB,QAAQ,EAAC,SAA7B;EAAuC,SAAS,EAAC;AAAjD,EARF,CAlCF,eA4CE,oBAAC,oBAAD;EACE,CAAC,EAAC,6JADJ;EAEE,EAAE,EAAC,SAFL;EAGE,IAAI,EAAC;AAHP,EA5CF,CAJF,CAPF,CAvBF,CADF;;eA0FeD,Y"}