@rownd/react-native 0.2.0 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +3 -1
  2. package/lib/commonjs/components/AutoSigninDialog.js +10 -4
  3. package/lib/commonjs/components/AutoSigninDialog.js.map +1 -1
  4. package/lib/commonjs/components/BottomSheetTextInput/BottomSheetTextInput.js.map +1 -1
  5. package/lib/commonjs/components/BottomSheetTextInput/index.js +8 -0
  6. package/lib/commonjs/components/BottomSheetTextInput/index.js.map +1 -1
  7. package/lib/commonjs/components/BottomSheetTextInput/types.js.map +1 -1
  8. package/lib/commonjs/components/DefaultContext.js +1 -1
  9. package/lib/commonjs/components/DefaultContext.js.map +1 -1
  10. package/lib/commonjs/components/GlobalContext.js.map +1 -1
  11. package/lib/commonjs/components/RowndComponents.js +0 -2
  12. package/lib/commonjs/components/RowndComponents.js.map +1 -1
  13. package/lib/commonjs/components/SignIn.js +21 -8
  14. package/lib/commonjs/components/SignIn.js.map +1 -1
  15. package/lib/commonjs/types.js.map +1 -1
  16. package/lib/module/components/AutoSigninDialog.js +10 -4
  17. package/lib/module/components/AutoSigninDialog.js.map +1 -1
  18. package/lib/module/components/BottomSheetTextInput/BottomSheetTextInput.js.map +1 -1
  19. package/lib/module/components/BottomSheetTextInput/index.js +2 -0
  20. package/lib/module/components/BottomSheetTextInput/index.js.map +1 -1
  21. package/lib/module/components/BottomSheetTextInput/types.js.map +1 -1
  22. package/lib/module/components/DefaultContext.js +1 -1
  23. package/lib/module/components/DefaultContext.js.map +1 -1
  24. package/lib/module/components/GlobalContext.js.map +1 -1
  25. package/lib/module/components/RowndComponents.js +1 -3
  26. package/lib/module/components/RowndComponents.js.map +1 -1
  27. package/lib/module/components/SignIn.js +21 -7
  28. package/lib/module/components/SignIn.js.map +1 -1
  29. package/lib/module/types.js.map +1 -1
  30. package/lib/package.json +1 -3
  31. package/lib/typescript/src/components/BottomSheetTextInput/BottomSheetTextInput.d.ts +1 -1
  32. package/lib/typescript/src/components/BottomSheetTextInput/index.d.ts +1 -1
  33. package/lib/typescript/src/components/BottomSheetTextInput/types.d.ts +1 -1
  34. package/lib/typescript/src/components/DefaultContext.d.ts +1 -1
  35. package/lib/typescript/src/components/GlobalContext.d.ts +2 -2
  36. package/package.json +1 -3
  37. package/src/components/AutoSigninDialog.tsx +4 -4
  38. package/src/components/BottomSheetTextInput/BottomSheetTextInput.tsx +1 -1
  39. package/src/components/BottomSheetTextInput/index.ts +1 -1
  40. package/src/components/BottomSheetTextInput/types.ts +1 -1
  41. package/src/components/DefaultContext.tsx +2 -2
  42. package/src/components/GlobalContext.tsx +2 -2
  43. package/src/components/RowndComponents.tsx +0 -3
  44. package/src/components/SignIn.tsx +21 -9
  45. package/src/types.ts +1 -1
  46. package/lib/commonjs/tailwind.config.js +0 -17
  47. package/lib/commonjs/tailwind.config.js.map +0 -1
  48. package/lib/commonjs/utils/tailwind.js +0 -17
  49. package/lib/commonjs/utils/tailwind.js.map +0 -1
  50. package/lib/module/tailwind.config.js +0 -10
  51. package/lib/module/tailwind.config.js.map +0 -1
  52. package/lib/module/utils/tailwind.js +0 -5
  53. package/lib/module/utils/tailwind.js.map +0 -1
  54. package/lib/typescript/src/tailwind.config.d.ts +0 -10
  55. package/lib/typescript/src/utils/tailwind.d.ts +0 -2
  56. package/src/tailwind.config.ts +0 -9
  57. package/src/utils/tailwind.ts +0 -6
package/README.md CHANGED
@@ -16,6 +16,7 @@ npm install @rownd/react-native
16
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
17
 
18
18
  > If you already use `react-native-gesture-handler` and/or `react-native-reanimated` run the following command:
19
+
19
20
  ```sh
20
21
  npm install @gorhom/bottom-sheet@2 @react-native-clipboard/clipboard \
21
22
  react-native-device-info react-native-gesture-handler@1 react-native-mmkv \
@@ -23,7 +24,8 @@ Due to some native peer-dependencies, you'll also need to run the following comm
23
24
  ```
24
25
 
25
26
  > If you **do not** use the aforementioned libraries _or_ are on v2.x, run this command instead:
26
- ```sh
27
+
28
+ ```sh
27
29
  npm install @gorhom/bottom-sheet @react-native-clipboard/clipboard \
28
30
  react-native-device-info react-native-gesture-handler react-native-mmkv \
29
31
  react-native-reanimated react-native-sha256 react-native-svg
@@ -30,13 +30,17 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
30
30
  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); }
31
31
 
32
32
  function AutoSigninDialog() {
33
+ var _state$nav3, _state$nav3$options, _state$nav4, _state$nav4$options;
34
+
33
35
  const navTo = (0, _hooks.useNav)();
34
36
  const {
35
37
  state
36
38
  } = (0, _GlobalContext.useGlobalContext)(); // Let the user know they're auto signing-in, then close when done
37
39
 
38
40
  (0, _usehooksTs.useTimeout)(() => {
39
- if (state.nav.options.type === 'error') {
41
+ var _state$nav, _state$nav$options;
42
+
43
+ if ((state === null || state === void 0 ? void 0 : (_state$nav = state.nav) === null || _state$nav === void 0 ? void 0 : (_state$nav$options = _state$nav.options) === null || _state$nav$options === void 0 ? void 0 : _state$nav$options.type) === 'error') {
40
44
  return;
41
45
  }
42
46
 
@@ -62,9 +66,11 @@ function AutoSigninDialog() {
62
66
  let extraBottomSheetProps = {};
63
67
 
64
68
  if (_package.default.version.startsWith('4')) {
69
+ var _state$nav2, _state$nav2$options;
70
+
65
71
  extraBottomSheetProps.keyboardBehavior = 'fillParent';
66
72
  extraBottomSheetProps.android_keyboardInputMode = 'adjustResize';
67
- extraBottomSheetProps.enablePanDownToClose = state.nav.options.type === 'error';
73
+ extraBottomSheetProps.enablePanDownToClose = (state === null || state === void 0 ? void 0 : (_state$nav2 = state.nav) === null || _state$nav2 === void 0 ? void 0 : (_state$nav2$options = _state$nav2.options) === null || _state$nav2$options === void 0 ? void 0 : _state$nav2$options.type) === 'error';
68
74
  }
69
75
 
70
76
  return /*#__PURE__*/_react.default.createElement(_bottomSheet.BottomSheetModal, _extends({
@@ -76,9 +82,9 @@ function AutoSigninDialog() {
76
82
  ref: bottomSheetModalRef
77
83
  }, extraBottomSheetProps), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
78
84
  style: styles.innerContainer
79
- }, state.nav.options.type === 'error' && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ErrorIcon.default, null), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
85
+ }, (state === null || state === void 0 ? void 0 : (_state$nav3 = state.nav) === null || _state$nav3 === void 0 ? void 0 : (_state$nav3$options = _state$nav3.options) === null || _state$nav3$options === void 0 ? void 0 : _state$nav3$options.type) === 'error' && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ErrorIcon.default, null), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
80
86
  style: styles.errorMessage
81
- }, state.nav.options.message || 'An error occurred. Please try again.')), state.nav.options.type === 'sign-in' && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactNative.ActivityIndicator, {
87
+ }, state.nav.options.message || 'An error occurred. Please try again.')), (state === null || state === void 0 ? void 0 : (_state$nav4 = state.nav) === null || _state$nav4 === void 0 ? void 0 : (_state$nav4$options = _state$nav4.options) === null || _state$nav4$options === void 0 ? void 0 : _state$nav4$options.type) === 'sign-in' && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactNative.ActivityIndicator, {
82
88
  size: "large",
83
89
  color: "#5b0ae0"
84
90
  }), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
@@ -1 +1 @@
1
- {"version":3,"names":["AutoSigninDialog","navTo","useNav","state","useGlobalContext","useTimeout","nav","options","type","handleClose","bottomSheetModalRef","useRef","useEffect","current","present","useCallback","setTimeout","hide","snapPoints","useMemo","renderBackdrop","props","extraBottomSheetProps","bottomSheetMeta","version","startsWith","keyboardBehavior","android_keyboardInputMode","enablePanDownToClose","styles","bottomSheet","innerContainer","errorMessage","message","signInMessage","StyleSheet","create","modal","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","borderRadius","borderColor","borderWidth","padding","textAlign","fontSize","errorIcon","color"],"sources":["AutoSigninDialog.tsx"],"sourcesContent":["import React, { useMemo, useCallback, useEffect, useRef } from 'react';\nimport { View, Text, StyleSheet, ActivityIndicator } from 'react-native';\nimport {\n BottomSheetBackdrop,\n BottomSheetBackdropProps,\n BottomSheetModal,\n} from '@gorhom/bottom-sheet';\nimport bottomSheetMeta from '@gorhom/bottom-sheet/package.json';\nimport { useTimeout } from 'usehooks-ts';\n\nimport { useNav } from '../hooks';\nimport { useGlobalContext } from './GlobalContext';\n\nimport ErrorIcon from './images/ErrorIcon';\n\nexport function AutoSigninDialog() {\n const navTo = useNav();\n const { state } = useGlobalContext();\n\n // Let the user know they're auto signing-in, then close when done\n useTimeout(() => {\n if (state.nav.options.type === 'error') {\n return;\n }\n\n handleClose();\n }, 3000);\n\n const bottomSheetModalRef = useRef<BottomSheetModal>(null);\n useEffect(() => {\n if (bottomSheetModalRef.current) {\n bottomSheetModalRef.current.present();\n }\n }, []);\n\n const handleClose = useCallback(() => {\n setTimeout(() => {\n navTo({ hide: true });\n }, 150);\n }, [navTo]);\n\n const snapPoints = useMemo(() => ['30%', '60%'], []);\n\n const renderBackdrop = useCallback(\n (props: BottomSheetBackdropProps) => (\n <BottomSheetBackdrop {...props} pressBehavior=\"none\" />\n ),\n []\n );\n\n let extraBottomSheetProps: any = {};\n if (bottomSheetMeta.version.startsWith('4')) {\n extraBottomSheetProps.keyboardBehavior = 'fillParent';\n extraBottomSheetProps.android_keyboardInputMode = 'adjustResize';\n extraBottomSheetProps.enablePanDownToClose =\n state.nav.options.type === 'error';\n }\n\n return (\n <BottomSheetModal\n snapPoints={snapPoints}\n index={0}\n backdropComponent={renderBackdrop}\n onDismiss={handleClose}\n style={styles.bottomSheet}\n ref={bottomSheetModalRef}\n {...extraBottomSheetProps}\n >\n <View style={styles.innerContainer}>\n {state.nav.options.type === 'error' && (\n <>\n <ErrorIcon />\n <Text style={styles.errorMessage}>\n {state.nav.options.message ||\n 'An error occurred. Please try again.'}\n </Text>\n </>\n )}\n\n {state.nav.options.type === 'sign-in' && (\n <>\n <ActivityIndicator size=\"large\" color=\"#5b0ae0\" />\n <Text style={styles.signInMessage}>\n Automatically signing you in. Just a sec...\n </Text>\n </>\n )}\n </View>\n </BottomSheetModal>\n );\n}\n\nconst styles = StyleSheet.create({\n modal: {\n // flex: 1,\n },\n bottomSheet: {\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 12,\n },\n shadowOpacity: 0.58,\n shadowRadius: 16.0,\n\n elevation: 24,\n },\n innerContainer: {\n borderRadius: 20,\n borderColor: 'transparent',\n borderWidth: 0,\n padding: 25,\n textAlign: 'center',\n },\n signInMessage: {\n textAlign: 'center',\n fontSize: 24,\n padding: 20,\n },\n errorMessage: {\n textAlign: 'center',\n fontSize: 24,\n padding: 20,\n },\n errorIcon: {\n textAlign: 'center',\n color: '#DA1E28',\n height: 24,\n width: 24,\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"names":["AutoSigninDialog","navTo","useNav","state","useGlobalContext","useTimeout","nav","options","type","handleClose","bottomSheetModalRef","useRef","useEffect","current","present","useCallback","setTimeout","hide","snapPoints","useMemo","renderBackdrop","props","extraBottomSheetProps","bottomSheetMeta","version","startsWith","keyboardBehavior","android_keyboardInputMode","enablePanDownToClose","styles","bottomSheet","innerContainer","errorMessage","message","signInMessage","StyleSheet","create","modal","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","borderRadius","borderColor","borderWidth","padding","textAlign","fontSize","errorIcon","color"],"sources":["AutoSigninDialog.tsx"],"sourcesContent":["import React, { useMemo, useCallback, useEffect, useRef } from 'react';\nimport { View, Text, StyleSheet, ActivityIndicator } from 'react-native';\nimport {\n BottomSheetBackdrop,\n BottomSheetBackdropProps,\n BottomSheetModal,\n} from '@gorhom/bottom-sheet';\nimport bottomSheetMeta from '@gorhom/bottom-sheet/package.json';\nimport { useTimeout } from 'usehooks-ts';\n\nimport { useNav } from '../hooks';\nimport { useGlobalContext } from './GlobalContext';\n\nimport ErrorIcon from './images/ErrorIcon';\n\nexport function AutoSigninDialog() {\n const navTo = useNav();\n const { state } = useGlobalContext();\n\n // Let the user know they're auto signing-in, then close when done\n useTimeout(() => {\n if (state?.nav?.options?.type === 'error') {\n return;\n }\n\n handleClose();\n }, 3000);\n\n const bottomSheetModalRef = useRef<BottomSheetModal>(null);\n useEffect(() => {\n if (bottomSheetModalRef.current) {\n bottomSheetModalRef.current.present();\n }\n }, []);\n\n const handleClose = useCallback(() => {\n setTimeout(() => {\n navTo({ hide: true });\n }, 150);\n }, [navTo]);\n\n const snapPoints = useMemo(() => ['30%', '60%'], []);\n\n const renderBackdrop = useCallback(\n (props: BottomSheetBackdropProps) => (\n <BottomSheetBackdrop {...props} pressBehavior=\"none\" />\n ),\n []\n );\n\n let extraBottomSheetProps: any = {};\n if (bottomSheetMeta.version.startsWith('4')) {\n extraBottomSheetProps.keyboardBehavior = 'fillParent';\n extraBottomSheetProps.android_keyboardInputMode = 'adjustResize';\n extraBottomSheetProps.enablePanDownToClose =\n state?.nav?.options?.type === 'error';\n }\n\n return (\n <BottomSheetModal\n snapPoints={snapPoints}\n index={0}\n backdropComponent={renderBackdrop}\n onDismiss={handleClose}\n style={styles.bottomSheet}\n ref={bottomSheetModalRef}\n {...extraBottomSheetProps}\n >\n <View style={styles.innerContainer}>\n {state?.nav?.options?.type === 'error' && (\n <>\n <ErrorIcon />\n <Text style={styles.errorMessage}>\n {state.nav.options.message ||\n 'An error occurred. Please try again.'}\n </Text>\n </>\n )}\n\n {state?.nav?.options?.type === 'sign-in' && (\n <>\n <ActivityIndicator size=\"large\" color=\"#5b0ae0\" />\n <Text style={styles.signInMessage}>\n Automatically signing you in. Just a sec...\n </Text>\n </>\n )}\n </View>\n </BottomSheetModal>\n );\n}\n\nconst styles = StyleSheet.create({\n modal: {\n // flex: 1,\n },\n bottomSheet: {\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 12,\n },\n shadowOpacity: 0.58,\n shadowRadius: 16.0,\n\n elevation: 24,\n },\n innerContainer: {\n borderRadius: 20,\n borderColor: 'transparent',\n borderWidth: 0,\n padding: 25,\n textAlign: 'center',\n },\n signInMessage: {\n textAlign: 'center',\n fontSize: 24,\n padding: 20,\n },\n errorMessage: {\n textAlign: 'center',\n fontSize: 24,\n padding: 20,\n },\n errorIcon: {\n textAlign: 'center',\n color: '#DA1E28',\n height: 24,\n width: 24,\n },\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["useBottomSheetInternal","require","BottomSheetTextInputComponent","forwardRef","ref","onFocus","onBlur","rest","shouldHandleKeyboardEvents","handleOnFocus","useCallback","args","value","handleOnBlur","BottomSheetTextInput","memo","displayName"],"sources":["BottomSheetTextInput.tsx"],"sourcesContent":["import React, { memo, useCallback, forwardRef } from 'react';\nimport { TextInput } from 'react-native-gesture-handler';\nimport type { BottomSheetTextInputProps } from './types';\n\n// @ts-ignore\nconst {\n useBottomSheetInternal,\n} = require('@gorhom/bottom-sheet/src/hooks/useBottomSheetInternal');\n\nconst BottomSheetTextInputComponent = forwardRef<\n TextInput,\n BottomSheetTextInputProps\n>(({ onFocus, onBlur, ...rest }, ref) => {\n //#region hooks\n // @ts-ignore\n let { shouldHandleKeyboardEvents } = useBottomSheetInternal();\n //#endregion\n\n if (!shouldHandleKeyboardEvents) {\n shouldHandleKeyboardEvents = {};\n }\n\n //#region callbacks\n const handleOnFocus = useCallback(\n (args) => {\n shouldHandleKeyboardEvents.value = true;\n if (onFocus) {\n onFocus(args);\n }\n },\n [onFocus, shouldHandleKeyboardEvents]\n );\n const handleOnBlur = useCallback(\n (args) => {\n shouldHandleKeyboardEvents.value = false;\n if (onBlur) {\n onBlur(args);\n }\n },\n [onBlur, shouldHandleKeyboardEvents]\n );\n //#endregion\n\n return (\n <TextInput\n ref={ref}\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n {...rest}\n />\n );\n});\n\nconst BottomSheetTextInput = memo(BottomSheetTextInputComponent);\nBottomSheetTextInput.displayName = 'BottomSheetTextInput';\n\nexport default BottomSheetTextInput;\n"],"mappings":";;;;;;;AAAA;;AACA;;;;;;;;AAGA;AACA,MAAM;EACJA;AADI,IAEFC,OAAO,CAAC,uDAAD,CAFX;;AAIA,MAAMC,6BAA6B,gBAAG,IAAAC,iBAAA,EAGpC,OAA+BC,GAA/B,KAAuC;EAAA,IAAtC;IAAEC,OAAF;IAAWC,MAAX;IAAmB,GAAGC;EAAtB,CAAsC;EACvC;EACA;EACA,IAAI;IAAEC;EAAF,IAAiCR,sBAAsB,EAA3D,CAHuC,CAIvC;;EAEA,IAAI,CAACQ,0BAAL,EAAiC;IAC/BA,0BAA0B,GAAG,EAA7B;EACD,CARsC,CAUvC;;;EACA,MAAMC,aAAa,GAAG,IAAAC,kBAAA,EACnBC,IAAD,IAAU;IACRH,0BAA0B,CAACI,KAA3B,GAAmC,IAAnC;;IACA,IAAIP,OAAJ,EAAa;MACXA,OAAO,CAACM,IAAD,CAAP;IACD;EACF,CANmB,EAOpB,CAACN,OAAD,EAAUG,0BAAV,CAPoB,CAAtB;EASA,MAAMK,YAAY,GAAG,IAAAH,kBAAA,EAClBC,IAAD,IAAU;IACRH,0BAA0B,CAACI,KAA3B,GAAmC,KAAnC;;IACA,IAAIN,MAAJ,EAAY;MACVA,MAAM,CAACK,IAAD,CAAN;IACD;EACF,CANkB,EAOnB,CAACL,MAAD,EAASE,0BAAT,CAPmB,CAArB,CApBuC,CA6BvC;;EAEA,oBACE,6BAAC,oCAAD;IACE,GAAG,EAAEJ,GADP;IAEE,OAAO,EAAEK,aAFX;IAGE,MAAM,EAAEI;EAHV,GAIMN,IAJN,EADF;AAQD,CA1CqC,CAAtC;AA4CA,MAAMO,oBAAoB,gBAAG,IAAAC,WAAA,EAAKb,6BAAL,CAA7B;AACAY,oBAAoB,CAACE,WAArB,GAAmC,sBAAnC;eAEeF,oB"}
1
+ {"version":3,"names":["useBottomSheetInternal","require","BottomSheetTextInputComponent","forwardRef","ref","onFocus","onBlur","rest","shouldHandleKeyboardEvents","handleOnFocus","useCallback","args","value","handleOnBlur","BottomSheetTextInput","memo","displayName"],"sources":["BottomSheetTextInput.tsx"],"sourcesContent":["import React, { memo, useCallback, forwardRef } from 'react';\nimport { TextInput } from 'react-native-gesture-handler';\nimport { BottomSheetTextInputProps } from './types';\n\n// @ts-ignore\nconst {\n useBottomSheetInternal,\n} = require('@gorhom/bottom-sheet/src/hooks/useBottomSheetInternal');\n\nconst BottomSheetTextInputComponent = forwardRef<\n TextInput,\n BottomSheetTextInputProps\n>(({ onFocus, onBlur, ...rest }, ref) => {\n //#region hooks\n // @ts-ignore\n let { shouldHandleKeyboardEvents } = useBottomSheetInternal();\n //#endregion\n\n if (!shouldHandleKeyboardEvents) {\n shouldHandleKeyboardEvents = {};\n }\n\n //#region callbacks\n const handleOnFocus = useCallback(\n (args) => {\n shouldHandleKeyboardEvents.value = true;\n if (onFocus) {\n onFocus(args);\n }\n },\n [onFocus, shouldHandleKeyboardEvents]\n );\n const handleOnBlur = useCallback(\n (args) => {\n shouldHandleKeyboardEvents.value = false;\n if (onBlur) {\n onBlur(args);\n }\n },\n [onBlur, shouldHandleKeyboardEvents]\n );\n //#endregion\n\n return (\n <TextInput\n ref={ref}\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n {...rest}\n />\n );\n});\n\nconst BottomSheetTextInput = memo(BottomSheetTextInputComponent);\nBottomSheetTextInput.displayName = 'BottomSheetTextInput';\n\nexport default BottomSheetTextInput;\n"],"mappings":";;;;;;;AAAA;;AACA;;;;;;;;AAGA;AACA,MAAM;EACJA;AADI,IAEFC,OAAO,CAAC,uDAAD,CAFX;;AAIA,MAAMC,6BAA6B,gBAAG,IAAAC,iBAAA,EAGpC,OAA+BC,GAA/B,KAAuC;EAAA,IAAtC;IAAEC,OAAF;IAAWC,MAAX;IAAmB,GAAGC;EAAtB,CAAsC;EACvC;EACA;EACA,IAAI;IAAEC;EAAF,IAAiCR,sBAAsB,EAA3D,CAHuC,CAIvC;;EAEA,IAAI,CAACQ,0BAAL,EAAiC;IAC/BA,0BAA0B,GAAG,EAA7B;EACD,CARsC,CAUvC;;;EACA,MAAMC,aAAa,GAAG,IAAAC,kBAAA,EACnBC,IAAD,IAAU;IACRH,0BAA0B,CAACI,KAA3B,GAAmC,IAAnC;;IACA,IAAIP,OAAJ,EAAa;MACXA,OAAO,CAACM,IAAD,CAAP;IACD;EACF,CANmB,EAOpB,CAACN,OAAD,EAAUG,0BAAV,CAPoB,CAAtB;EASA,MAAMK,YAAY,GAAG,IAAAH,kBAAA,EAClBC,IAAD,IAAU;IACRH,0BAA0B,CAACI,KAA3B,GAAmC,KAAnC;;IACA,IAAIN,MAAJ,EAAY;MACVA,MAAM,CAACK,IAAD,CAAN;IACD;EACF,CANkB,EAOnB,CAACL,MAAD,EAASE,0BAAT,CAPmB,CAArB,CApBuC,CA6BvC;;EAEA,oBACE,6BAAC,oCAAD;IACE,GAAG,EAAEJ,GADP;IAEE,OAAO,EAAEK,aAFX;IAGE,MAAM,EAAEI;EAHV,GAIMN,IAJN,EADF;AAQD,CA1CqC,CAAtC;AA4CA,MAAMO,oBAAoB,gBAAG,IAAAC,WAAA,EAAKb,6BAAL,CAA7B;AACAY,oBAAoB,CAACE,WAArB,GAAmC,sBAAnC;eAEeF,oB"}
@@ -3,6 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "BottomSheetTextInputProps", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _types.BottomSheetTextInputProps;
10
+ }
11
+ });
6
12
  Object.defineProperty(exports, "default", {
7
13
  enumerable: true,
8
14
  get: function () {
@@ -12,5 +18,7 @@ Object.defineProperty(exports, "default", {
12
18
 
13
19
  var _BottomSheetTextInput = _interopRequireDefault(require("./BottomSheetTextInput"));
14
20
 
21
+ var _types = require("./types");
22
+
15
23
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["// @ts-ignore\nexport { default } from './BottomSheetTextInput';\n\n// @ts-ignore\nexport type { BottomSheetTextInputProps } from './types';\n"],"mappings":";;;;;;;;;;;;AACA"}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["// @ts-ignore\nexport { default } from './BottomSheetTextInput';\n\n// @ts-ignore\nexport { BottomSheetTextInputProps } from './types';\n"],"mappings":";;;;;;;;;;;;;;;;;;AACA;;AAGA"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { TextInputProps } from 'react-native';\n\nexport interface BottomSheetTextInputProps extends TextInputProps {}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import { TextInputProps } from 'react-native';\n\nexport interface BottomSheetTextInputProps extends TextInputProps {}\n"],"mappings":""}
@@ -54,7 +54,7 @@ function DefaultContext(_ref) {
54
54
  }).json();
55
55
 
56
56
  if (resp !== null && resp !== void 0 && (_resp$app = resp.app) !== null && _resp$app !== void 0 && _resp$app.icon) {
57
- const iconMeta = await _ky.default.head(resp.app.icon);
57
+ const iconMeta = await _ky.default.get(resp.app.icon);
58
58
  resp.app.icon_content_type = iconMeta.headers.get('content-type');
59
59
  }
60
60
 
@@ -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","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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"}
1
+ {"version":3,"names":["DefaultContext","config","state","dispatch","useGlobalContext","client","api","useApi","useDeviceFingerprint","useEffect","resp","get","headers","appKey","json","app","icon","iconMeta","ky","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 { IConfig } from '../utils/config';\nimport { useGlobalContext } from './GlobalContext';\nimport { ActionType } from '../data/actions';\nimport ky from 'ky';\nimport Clipboard from '@react-native-clipboard/clipboard';\nimport base64 from 'react-native-base64';\nimport { Linking } from 'react-native';\nimport { events, EventType } from '../utils/events';\n\nexport type UserInfoResp = {\n data: {\n [key: string]: any;\n };\n redacted: string[];\n};\n\ninterface UserAclsResponse {\n acls: Record<string, { shared: boolean }>;\n}\n\ntype DefaultContextProps = {\n config: IConfig;\n};\n\nexport function DefaultContext({ config }: DefaultContextProps) {\n const { state, dispatch } = useGlobalContext();\n const { client: api } = useApi();\n useDeviceFingerprint();\n\n // Fetch app schema and config\n useEffect(() => {\n (async () => {\n try {\n const resp: any = await api\n .get('hub/app-config', {\n headers: {\n 'x-rownd-app-key': config.appKey,\n },\n })\n .json();\n\n if (resp?.app?.icon) {\n const iconMeta = await ky.get(resp.app.icon);\n resp.app.icon_content_type = iconMeta.headers.get('content-type');\n }\n\n dispatch({\n type: ActionType.SET_APP_CONFIG,\n payload: resp.app,\n });\n } catch (err) {\n console.error('Failed to fetch app config:', err);\n }\n })();\n }, [api, config.appKey, dispatch]);\n\n /**\n * If not signed in, check the clipboard for an init hash or auth link we can use to auto-auth the user\n */\n useEffect(() => {\n if (state.auth.access_token || !state.app.id) {\n return;\n }\n\n (async () => {\n try {\n let authData = null;\n\n let authLink =\n (await Linking.getInitialURL()) || (await Clipboard.getString());\n if (authLink.includes('rownd.link')) {\n dispatch({\n type: ActionType.CHANGE_ROUTE,\n payload: {\n route: '/account/auto-signin',\n opts: {\n type: 'sign-in',\n },\n },\n });\n\n authData = await ky\n .get(authLink, {\n headers: {\n 'User-Agent': DEFAULT_USER_AGENT,\n },\n })\n .json();\n } else if (authLink.startsWith('rph_init=')) {\n const authStr = authLink.split('rph_init=')[1];\n authData = JSON.parse(base64.decode(authStr));\n } else {\n return;\n }\n\n // Clear the clipboard value so we don't leak any creds\n Clipboard.setString('');\n\n dispatch({\n type: ActionType.LOGIN_SUCCESS,\n payload: authData,\n });\n } catch (err) {\n console.error(\n 'We found an auth link or string, but failed to authenticate with it because:',\n err\n );\n }\n })();\n }, [state.auth.access_token, state.app.id, dispatch]);\n\n const retrieveUserInfo = useCallback(() => {\n if (!state.auth.access_token || !state.app.id) {\n return;\n }\n\n (async () => {\n const userInfo: UserInfoResp = await api\n .get(`me/applications/${state.app.id}/data`, {\n headers: {\n Authorization: `Bearer ${state.auth.access_token}`,\n },\n })\n .json();\n dispatch({\n type: ActionType.LOAD_USER,\n payload: userInfo,\n });\n\n dispatch({\n type: ActionType.UPDATE_LOCAL_ACLS,\n payload: userInfo.redacted.reduce(\n (acc: Record<string, any>, field: string) => {\n acc[field] = { shared: false };\n return acc;\n },\n {}\n ),\n });\n })();\n }, [api, dispatch, state.app.id, state.auth.access_token]);\n\n const retrieveAcls = useCallback(() => {\n if (!state.app.id || !state.auth.access_token) {\n return;\n }\n\n (async () => {\n try {\n const appUserAcls: UserAclsResponse = await api\n .get(`me/applications/${state.app.id}/acls`, {\n headers: {\n Authorization: `Bearer ${state.auth.access_token}`,\n },\n })\n .json();\n dispatch({\n type: ActionType.UPDATE_LOCAL_ACLS,\n payload: appUserAcls.acls,\n });\n } catch (err) {\n if (err instanceof Error) {\n // const unsharedAcls = reduceSchemaToUnsharedAcls();\n dispatch({\n type: ActionType.UPDATE_LOCAL_ACLS,\n payload: {},\n });\n }\n }\n })();\n }, [api, dispatch, state.app.id, state.auth.access_token]);\n\n useEffect(retrieveUserInfo, [retrieveUserInfo]);\n useEffect(retrieveAcls, [retrieveAcls]);\n\n useEffect(() => {\n if (!state.user.needs_refresh) {\n return;\n }\n retrieveUserInfo();\n dispatch({\n type: ActionType.SET_REFRESH_USER_DATA,\n payload: { needs_refresh: false },\n });\n }, [dispatch, retrieveUserInfo, state.user.needs_refresh]);\n\n const saveAclsDebounced = useDebounce(saveAcls, 2000); // 2s\n\n async function saveAcls() {\n if (state.app.id && state.local_acls) {\n await api\n .put(`me/applications/${state.app.id}/acls`, {\n headers: {\n Authorization: `Bearer ${state.auth.access_token}`,\n },\n json: {\n acls: state.local_acls,\n },\n })\n .json();\n }\n }\n\n const localAclsRef = useRef(state.local_acls);\n useEffect(() => {\n // Don't save acls if they were just loaded for the first time or they haven't changed\n if (\n !localAclsRef.current ||\n isEqual(localAclsRef.current, state.local_acls)\n ) {\n return;\n }\n saveAclsDebounced();\n }, [saveAclsDebounced, state.local_acls]);\n\n const saveUserDataDebounced = useDebounce(saveUserData, 2000); // 2s\n\n // Save user data in the application state to the API server\n async function saveUserData() {\n if (state.app.id && state.user.data && state.auth.access_token) {\n dispatch({\n type: ActionType.SET_IS_SAVING_USER_DATA,\n payload: {\n saving: true,\n },\n });\n\n const eventDetails: Record<string, any> = {};\n try {\n eventDetails.data = await api\n .put(`me/applications/${state.app.id}/data`, {\n headers: {\n Authorization: `Bearer ${state.auth.access_token}`,\n },\n json: {\n data: state.user.data,\n },\n })\n .json();\n } catch (err) {\n eventDetails.error = err;\n // Get the latest user info from Rownd. Something was probably bad\n // with the data we just tried to save.\n // This is a bit hacky. We should be able to reset the state without\n // calling rownd again by rolling back to a previously good state...\n retrieveUserInfo();\n // TODO: Set some error state\n } finally {\n events.dispatch(EventType.USER_DATA_SAVED, eventDetails);\n dispatch({\n type: ActionType.SET_IS_SAVING_USER_DATA,\n payload: {\n saving: false,\n },\n });\n }\n }\n }\n\n const userDataRef = useRef(state.user.data);\n useEffect(() => {\n // Don't update the user data in the API server if the email is unknown or the data hasn't changed\n if (\n (!state.user.data?.email && !state.user.data.phone_number) ||\n isEqual(userDataRef.current, state.user.data)\n ) {\n return;\n }\n saveUserDataDebounced();\n userDataRef.current = state.user.data;\n }, [dispatch, saveUserDataDebounced, state.user.data]);\n\n return null;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["GlobalContext","createContext","undefined","handleStateInit","initialState","storage","contains","state","JSON","parse","getString","GlobalContextProvider","children","config","is_initializing","is_container_visible","use_modal","nav","current_route","route_trigger","event_id","section","options","user","data","email","needs_refresh","redacted","auth","access_token","refresh_token","app_id","app","schema","local_acls","is_saving_user_data","mainReducer","action","decodedToken","newState","type","ActionType","SET_CONTAINER_VISIBLE","payload","isVisible","CHANGE_ROUTE","route","trigger","opts","SET_SECTION","LOGIN_SUCCESS","jwt_decode","id","is_verified_user","app_user_id","SIGN_OUT","REFRESH_TOKEN","LOAD_USER","UPDATE_LOCAL_ACLS","SET_USER_DATA_FIELD","field","value","events","dispatch","EventType","USER_DATA_SAVED","SET_USER_DATA","isEqual","pick","Object","keys","SET_REFRESH_USER_DATA","LOAD_STATE","SET_IS_SAVING_USER_DATA","saving","SET_APP_CONFIG","persistedState","set","stringify","useReducer","useGlobalContext","context","useContext","Error"],"sources":["GlobalContext.tsx"],"sourcesContent":["import React, { createContext, FunctionComponent } from 'react';\nimport { useReducer, useContext } from 'react';\nimport isEqual from 'lodash-es/isEqual';\nimport pick from 'lodash-es/pick';\nimport jwt_decode from 'jwt-decode';\nimport type { IConfig } from '../utils/config';\nimport storage from '../utils/storage';\nimport { events, EventType } from '../utils/events';\n\nimport { type TAction, ActionType } from '../data/actions';\n\ntype Dispatch = (action: TAction) => void;\n\nexport type GlobalState = {\n is_initializing: boolean;\n is_container_visible: boolean;\n use_modal: boolean;\n nav: {\n current_route: string;\n route_trigger: string;\n event_id: string;\n section: string;\n options?: any;\n };\n user: {\n data: {\n id?: string;\n email: string | null;\n [key: string]: any;\n };\n needs_refresh?: boolean;\n redacted: string[];\n };\n auth: {\n access_token: string | null;\n refresh_token: string | null;\n app_id: string | null;\n init_data?: Record<string, any>;\n is_verified_user?: boolean;\n };\n app: {\n id?: string;\n icon?: string;\n icon_content_type?: string;\n config: AppConfig | null;\n schema: AppSchema | null;\n user_verification_field?: string;\n user_verification_fields?: string[];\n };\n local_acls: Record<string, { shared: boolean }> | null;\n is_saving_user_data: boolean;\n config?: IConfig;\n};\n\ntype AppSchema = Record<string, SchemaField>;\n\nexport interface SchemaField {\n display_name: string;\n type: string;\n data_category: string;\n required: boolean;\n owned_by: string;\n user_visible: boolean;\n revoke_after: string;\n required_retention: string;\n collection_justification: string;\n opt_out_warning: string;\n}\n\ninterface AppConfig {\n customizations: {\n primary_color: string;\n };\n default_user_id_format?: string;\n hub: {\n auth: {\n allow_unverified_users?: boolean;\n additional_fields: [\n {\n name: string;\n type: string;\n label: string;\n placeholder?: string;\n options: [\n {\n value: string;\n label: string;\n }\n ];\n }\n ];\n email: {\n from_address: string;\n image: string;\n };\n show_app_icon: boolean;\n };\n customizations: HubCustomizations;\n };\n}\n\nexport interface HubCustomizations {\n rounded_corners: boolean;\n primary_color: string;\n placement: 'bottom-left' | 'hidden';\n offset_x: number;\n offset_y: number;\n property_overrides: Record<string, string>;\n}\n\ntype ContextProps = {\n config: IConfig;\n};\n\nexport const GlobalContext = createContext<\n { state: GlobalState; dispatch: Dispatch } | undefined\n>(undefined);\n\nfunction handleStateInit(initialState: GlobalState) {\n if (storage.contains('state')) {\n const state = JSON.parse(storage.getString('state') || '{}');\n\n return {\n ...initialState,\n ...state,\n };\n }\n\n return initialState;\n}\n\n// async function updateStorage(newState: any) {\n// const oldState = JSON.parse(await storage.getItem('state') || '{}');\n\n// if (!isEqual(oldState, newState)) {\n// console.log('writing new state', newState);\n// await storage.setItem('state', JSON.stringify(newState));\n// }\n// }\n\nconst GlobalContextProvider: FunctionComponent<ContextProps> = ({\n children,\n config,\n}) => {\n const initialState: GlobalState = {\n is_initializing: false,\n is_container_visible: false,\n use_modal: false,\n nav: {\n current_route: '/',\n route_trigger: '',\n event_id: '',\n section: '',\n options: {},\n },\n user: {\n data: {\n email: null,\n },\n needs_refresh: false,\n redacted: [],\n },\n auth: {\n access_token: null,\n refresh_token: null,\n app_id: null,\n },\n app: {\n schema: null,\n config: null,\n },\n local_acls: null,\n is_saving_user_data: false,\n config,\n };\n\n // TODO: There's a better way to do this where we have a set of rules that watch/apply to the state as it changes\n // function dispatchExternalEvents(prevState: GlobalState, nextState: GlobalState) {\n\n // // Log in, get new token, load previous auth state, etc\n // if (prevState.auth.access_token !== nextState.auth.access_token) {\n // events.dispatch(EventType.AUTH, {\n // access_token: nextState.auth.access_token,\n // user_id: nextState.user.data.id,\n // app_id: nextState.auth.app_id,\n // });\n // }\n\n // // User data changes. Also, fire the event when ACLs change since this affects the data\n // // that the application can see.\n // if (!isEqual(prevState.local_acls, nextState.local_acls) ||\n // !isEqual(prevState.user.data, nextState.user.data)) {\n // events.dispatch(EventType.USER_DATA, {\n // // The data is filtered on the local_acls\n // data: redactUserDataWithAcls(nextState.user.data, nextState.local_acls),\n // });\n // }\n\n // // Log out\n // if (nextState.auth.access_token === null) {\n // events.dispatch(EventType.SIGN_OUT, {});\n // }\n // }\n\n function mainReducer(state: GlobalState, action: TAction): GlobalState {\n let decodedToken: any;\n\n let newState;\n // let cachedAuth;\n switch (action.type) {\n case ActionType.SET_CONTAINER_VISIBLE:\n newState = {\n ...state,\n is_container_visible: action.payload.isVisible,\n use_modal:\n action.payload.isVisible === false ? false : state.use_modal,\n nav: {\n ...state.nav,\n current_route: '/',\n },\n };\n break;\n\n case ActionType.CHANGE_ROUTE:\n newState = {\n ...state,\n nav: {\n ...state.nav,\n current_route: action.payload.route,\n route_trigger: action.payload.trigger || '',\n event_id: action.payload.event_id,\n options: action.payload.opts,\n },\n };\n\n break;\n\n case ActionType.SET_SECTION:\n newState = {\n ...state,\n nav: {\n ...state.nav,\n section: action.payload.section,\n },\n };\n break;\n\n case ActionType.LOGIN_SUCCESS:\n // storage.setItem('auth', JSON.stringify(action.payload));\n decodedToken = jwt_decode(action.payload.access_token);\n\n // Ensure this token is for this app\n if (action.payload.app_id !== state.app.id) {\n return {\n ...state,\n };\n }\n\n newState = {\n ...state,\n auth: {\n ...state.auth,\n access_token: action.payload.access_token,\n refresh_token: action.payload.refresh_token,\n app_id: action.payload.app_id,\n is_verified_user:\n decodedToken?.['https://auth.rownd.io/is_verified_user'] !==\n false, // default is `true` if the attribute doesn't exist\n },\n user: {\n ...state.user,\n data: {\n ...state.user.data,\n id: action.payload.app_user_id,\n },\n },\n };\n break;\n\n case ActionType.SIGN_OUT:\n // storage.removeItem('auth');\n newState = {\n ...state,\n user: {\n data: {\n email: null,\n },\n redacted: [],\n },\n auth: {\n access_token: null,\n refresh_token: null,\n app_id: null,\n },\n };\n break;\n\n case ActionType.REFRESH_TOKEN:\n newState = {\n ...state,\n auth: {\n ...state.auth,\n access_token: action.payload.access_token,\n refresh_token: action.payload.refresh_token,\n },\n };\n\n // cachedAuth = storage.getItem('auth');\n // if (cachedAuth) {\n // const cachedAuthObj = JSON.parse(cachedAuth);\n // cachedAuth = {\n // ...cachedAuthObj,\n // ...newState.auth,\n // };\n // storage.setItem('auth', JSON.stringify(newState.auth));\n // }\n\n break;\n\n case ActionType.LOAD_USER:\n newState = {\n ...state,\n user: {\n ...state.user,\n data: {\n ...action.payload.data,\n },\n redacted: action.payload.redacted,\n },\n };\n break;\n\n case ActionType.UPDATE_LOCAL_ACLS:\n newState = {\n ...state,\n local_acls: {\n ...state.local_acls,\n ...action.payload,\n },\n };\n break;\n\n case ActionType.SET_USER_DATA_FIELD:\n // Dispatch a USER_DATA_SAVED event to satisfy event listeners when the data\n // was not changed and no request to Rownd was ever made.\n if (state.user.data[action.payload.field] === action.payload.value) {\n events.dispatch(EventType.USER_DATA_SAVED, state.user.data);\n }\n\n newState = {\n ...state,\n user: {\n ...state.user,\n data: {\n ...state.user.data,\n [action.payload.field]: action.payload.value,\n },\n },\n };\n break;\n\n case ActionType.SET_USER_DATA:\n // Dispatch a USER_DATA_SAVED event to satisfy event listeners when the data\n // was not changed and no request to Rownd was ever made.\n if (\n isEqual(\n pick(state.user.data, Object.keys(action.payload.data)),\n action.payload.data\n )\n ) {\n events.dispatch(EventType.USER_DATA_SAVED, state.user.data);\n }\n\n newState = {\n ...state,\n user: {\n ...state.user,\n data: {\n ...state.user.data,\n ...action.payload.data,\n },\n },\n };\n break;\n\n case ActionType.SET_REFRESH_USER_DATA:\n newState = {\n ...state,\n user: {\n ...state.user,\n needs_refresh: action.payload.needs_refresh,\n },\n };\n break;\n\n case ActionType.LOAD_STATE:\n newState = {\n ...action.payload,\n };\n break;\n\n case ActionType.SET_IS_SAVING_USER_DATA: {\n newState = {\n ...state,\n is_saving_user_data: action.payload.saving,\n };\n break;\n }\n\n case ActionType.SET_APP_CONFIG:\n newState = {\n ...state,\n app: {\n ...state.app,\n ...action.payload,\n },\n };\n break;\n\n default:\n newState = state;\n }\n\n // Write state to local storage, minus a few fields\n const persistedState: any = { ...newState };\n delete persistedState.config;\n delete persistedState.nav;\n delete persistedState.is_container_visible;\n delete persistedState.use_modal;\n delete persistedState.is_initializing;\n delete persistedState.is_saving_user_data;\n\n // updateStorage(persistedState);\n storage.set('state', JSON.stringify(persistedState));\n\n // Fire any events that depend on state updates\n // dispatchExternalEvents(state, newState);\n\n return newState;\n }\n\n const [state, dispatch] = useReducer(\n mainReducer,\n initialState,\n handleStateInit\n );\n\n // Async load cached state from storage\n // useEffect(() => {\n // (async () => {\n // const existingStateStr = await storage.getItem('state');\n\n // if (!existingStateStr) {\n // return;\n // }\n\n // dispatch({\n // type: ActionType.LOAD_STATE,\n // payload: JSON.parse(existingStateStr),\n // });\n // });\n // }, []);\n\n const value = { state, dispatch };\n return (\n <GlobalContext.Provider value={value}>\n {children}\n {/* <ExternalApi config={config} dispatchEvents={(state: GlobalState) => dispatchExternalEvents(initialState, state)} /> */}\n </GlobalContext.Provider>\n );\n};\n\nfunction useGlobalContext() {\n const context = useContext(GlobalContext);\n\n if (context === undefined) {\n throw new Error(\n 'useGlobalContext must be used within a GlobalContext Provider'\n );\n }\n\n return context;\n}\n\nexport { GlobalContextProvider, useGlobalContext };\n"],"mappings":"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"}
1
+ {"version":3,"names":["GlobalContext","createContext","undefined","handleStateInit","initialState","storage","contains","state","JSON","parse","getString","GlobalContextProvider","children","config","is_initializing","is_container_visible","use_modal","nav","current_route","route_trigger","event_id","section","options","user","data","email","needs_refresh","redacted","auth","access_token","refresh_token","app_id","app","schema","local_acls","is_saving_user_data","mainReducer","action","decodedToken","newState","type","ActionType","SET_CONTAINER_VISIBLE","payload","isVisible","CHANGE_ROUTE","route","trigger","opts","SET_SECTION","LOGIN_SUCCESS","jwt_decode","id","is_verified_user","app_user_id","SIGN_OUT","REFRESH_TOKEN","LOAD_USER","UPDATE_LOCAL_ACLS","SET_USER_DATA_FIELD","field","value","events","dispatch","EventType","USER_DATA_SAVED","SET_USER_DATA","isEqual","pick","Object","keys","SET_REFRESH_USER_DATA","LOAD_STATE","SET_IS_SAVING_USER_DATA","saving","SET_APP_CONFIG","persistedState","set","stringify","useReducer","useGlobalContext","context","useContext","Error"],"sources":["GlobalContext.tsx"],"sourcesContent":["import React, { createContext, FunctionComponent } from 'react';\nimport { useReducer, useContext } from 'react';\nimport isEqual from 'lodash-es/isEqual';\nimport pick from 'lodash-es/pick';\nimport jwt_decode from 'jwt-decode';\nimport { IConfig } from '../utils/config';\nimport storage from '../utils/storage';\nimport { events, EventType } from '../utils/events';\n\nimport { TAction, ActionType } from '../data/actions';\n\ntype Dispatch = (action: TAction) => void;\n\nexport type GlobalState = {\n is_initializing: boolean;\n is_container_visible: boolean;\n use_modal: boolean;\n nav: {\n current_route: string;\n route_trigger: string;\n event_id: string;\n section: string;\n options?: any;\n };\n user: {\n data: {\n id?: string;\n email: string | null;\n [key: string]: any;\n };\n needs_refresh?: boolean;\n redacted: string[];\n };\n auth: {\n access_token: string | null;\n refresh_token: string | null;\n app_id: string | null;\n init_data?: Record<string, any>;\n is_verified_user?: boolean;\n };\n app: {\n id?: string;\n icon?: string;\n icon_content_type?: string;\n config: AppConfig | null;\n schema: AppSchema | null;\n user_verification_field?: string;\n user_verification_fields?: string[];\n };\n local_acls: Record<string, { shared: boolean }> | null;\n is_saving_user_data: boolean;\n config?: IConfig;\n};\n\ntype AppSchema = Record<string, SchemaField>;\n\nexport interface SchemaField {\n display_name: string;\n type: string;\n data_category: string;\n required: boolean;\n owned_by: string;\n user_visible: boolean;\n revoke_after: string;\n required_retention: string;\n collection_justification: string;\n opt_out_warning: string;\n}\n\ninterface AppConfig {\n customizations: {\n primary_color: string;\n };\n default_user_id_format?: string;\n hub: {\n auth: {\n allow_unverified_users?: boolean;\n additional_fields: [\n {\n name: string;\n type: string;\n label: string;\n placeholder?: string;\n options: [\n {\n value: string;\n label: string;\n }\n ];\n }\n ];\n email: {\n from_address: string;\n image: string;\n };\n show_app_icon: boolean;\n };\n customizations: HubCustomizations;\n };\n}\n\nexport interface HubCustomizations {\n rounded_corners: boolean;\n primary_color: string;\n placement: 'bottom-left' | 'hidden';\n offset_x: number;\n offset_y: number;\n property_overrides: Record<string, string>;\n}\n\ntype ContextProps = {\n config: IConfig;\n};\n\nexport const GlobalContext = createContext<\n { state: GlobalState; dispatch: Dispatch } | undefined\n>(undefined);\n\nfunction handleStateInit(initialState: GlobalState) {\n if (storage.contains('state')) {\n const state = JSON.parse(storage.getString('state') || '{}');\n\n return {\n ...initialState,\n ...state,\n };\n }\n\n return initialState;\n}\n\n// async function updateStorage(newState: any) {\n// const oldState = JSON.parse(await storage.getItem('state') || '{}');\n\n// if (!isEqual(oldState, newState)) {\n// console.log('writing new state', newState);\n// await storage.setItem('state', JSON.stringify(newState));\n// }\n// }\n\nconst GlobalContextProvider: FunctionComponent<ContextProps> = ({\n children,\n config,\n}) => {\n const initialState: GlobalState = {\n is_initializing: false,\n is_container_visible: false,\n use_modal: false,\n nav: {\n current_route: '/',\n route_trigger: '',\n event_id: '',\n section: '',\n options: {},\n },\n user: {\n data: {\n email: null,\n },\n needs_refresh: false,\n redacted: [],\n },\n auth: {\n access_token: null,\n refresh_token: null,\n app_id: null,\n },\n app: {\n schema: null,\n config: null,\n },\n local_acls: null,\n is_saving_user_data: false,\n config,\n };\n\n // TODO: There's a better way to do this where we have a set of rules that watch/apply to the state as it changes\n // function dispatchExternalEvents(prevState: GlobalState, nextState: GlobalState) {\n\n // // Log in, get new token, load previous auth state, etc\n // if (prevState.auth.access_token !== nextState.auth.access_token) {\n // events.dispatch(EventType.AUTH, {\n // access_token: nextState.auth.access_token,\n // user_id: nextState.user.data.id,\n // app_id: nextState.auth.app_id,\n // });\n // }\n\n // // User data changes. Also, fire the event when ACLs change since this affects the data\n // // that the application can see.\n // if (!isEqual(prevState.local_acls, nextState.local_acls) ||\n // !isEqual(prevState.user.data, nextState.user.data)) {\n // events.dispatch(EventType.USER_DATA, {\n // // The data is filtered on the local_acls\n // data: redactUserDataWithAcls(nextState.user.data, nextState.local_acls),\n // });\n // }\n\n // // Log out\n // if (nextState.auth.access_token === null) {\n // events.dispatch(EventType.SIGN_OUT, {});\n // }\n // }\n\n function mainReducer(state: GlobalState, action: TAction): GlobalState {\n let decodedToken: any;\n\n let newState;\n // let cachedAuth;\n switch (action.type) {\n case ActionType.SET_CONTAINER_VISIBLE:\n newState = {\n ...state,\n is_container_visible: action.payload.isVisible,\n use_modal:\n action.payload.isVisible === false ? false : state.use_modal,\n nav: {\n ...state.nav,\n current_route: '/',\n },\n };\n break;\n\n case ActionType.CHANGE_ROUTE:\n newState = {\n ...state,\n nav: {\n ...state.nav,\n current_route: action.payload.route,\n route_trigger: action.payload.trigger || '',\n event_id: action.payload.event_id,\n options: action.payload.opts,\n },\n };\n\n break;\n\n case ActionType.SET_SECTION:\n newState = {\n ...state,\n nav: {\n ...state.nav,\n section: action.payload.section,\n },\n };\n break;\n\n case ActionType.LOGIN_SUCCESS:\n // storage.setItem('auth', JSON.stringify(action.payload));\n decodedToken = jwt_decode(action.payload.access_token);\n\n // Ensure this token is for this app\n if (action.payload.app_id !== state.app.id) {\n return {\n ...state,\n };\n }\n\n newState = {\n ...state,\n auth: {\n ...state.auth,\n access_token: action.payload.access_token,\n refresh_token: action.payload.refresh_token,\n app_id: action.payload.app_id,\n is_verified_user:\n decodedToken?.['https://auth.rownd.io/is_verified_user'] !==\n false, // default is `true` if the attribute doesn't exist\n },\n user: {\n ...state.user,\n data: {\n ...state.user.data,\n id: action.payload.app_user_id,\n },\n },\n };\n break;\n\n case ActionType.SIGN_OUT:\n // storage.removeItem('auth');\n newState = {\n ...state,\n user: {\n data: {\n email: null,\n },\n redacted: [],\n },\n auth: {\n access_token: null,\n refresh_token: null,\n app_id: null,\n },\n };\n break;\n\n case ActionType.REFRESH_TOKEN:\n newState = {\n ...state,\n auth: {\n ...state.auth,\n access_token: action.payload.access_token,\n refresh_token: action.payload.refresh_token,\n },\n };\n\n // cachedAuth = storage.getItem('auth');\n // if (cachedAuth) {\n // const cachedAuthObj = JSON.parse(cachedAuth);\n // cachedAuth = {\n // ...cachedAuthObj,\n // ...newState.auth,\n // };\n // storage.setItem('auth', JSON.stringify(newState.auth));\n // }\n\n break;\n\n case ActionType.LOAD_USER:\n newState = {\n ...state,\n user: {\n ...state.user,\n data: {\n ...action.payload.data,\n },\n redacted: action.payload.redacted,\n },\n };\n break;\n\n case ActionType.UPDATE_LOCAL_ACLS:\n newState = {\n ...state,\n local_acls: {\n ...state.local_acls,\n ...action.payload,\n },\n };\n break;\n\n case ActionType.SET_USER_DATA_FIELD:\n // Dispatch a USER_DATA_SAVED event to satisfy event listeners when the data\n // was not changed and no request to Rownd was ever made.\n if (state.user.data[action.payload.field] === action.payload.value) {\n events.dispatch(EventType.USER_DATA_SAVED, state.user.data);\n }\n\n newState = {\n ...state,\n user: {\n ...state.user,\n data: {\n ...state.user.data,\n [action.payload.field]: action.payload.value,\n },\n },\n };\n break;\n\n case ActionType.SET_USER_DATA:\n // Dispatch a USER_DATA_SAVED event to satisfy event listeners when the data\n // was not changed and no request to Rownd was ever made.\n if (\n isEqual(\n pick(state.user.data, Object.keys(action.payload.data)),\n action.payload.data\n )\n ) {\n events.dispatch(EventType.USER_DATA_SAVED, state.user.data);\n }\n\n newState = {\n ...state,\n user: {\n ...state.user,\n data: {\n ...state.user.data,\n ...action.payload.data,\n },\n },\n };\n break;\n\n case ActionType.SET_REFRESH_USER_DATA:\n newState = {\n ...state,\n user: {\n ...state.user,\n needs_refresh: action.payload.needs_refresh,\n },\n };\n break;\n\n case ActionType.LOAD_STATE:\n newState = {\n ...action.payload,\n };\n break;\n\n case ActionType.SET_IS_SAVING_USER_DATA: {\n newState = {\n ...state,\n is_saving_user_data: action.payload.saving,\n };\n break;\n }\n\n case ActionType.SET_APP_CONFIG:\n newState = {\n ...state,\n app: {\n ...state.app,\n ...action.payload,\n },\n };\n break;\n\n default:\n newState = state;\n }\n\n // Write state to local storage, minus a few fields\n const persistedState: any = { ...newState };\n delete persistedState.config;\n delete persistedState.nav;\n delete persistedState.is_container_visible;\n delete persistedState.use_modal;\n delete persistedState.is_initializing;\n delete persistedState.is_saving_user_data;\n\n // updateStorage(persistedState);\n storage.set('state', JSON.stringify(persistedState));\n\n // Fire any events that depend on state updates\n // dispatchExternalEvents(state, newState);\n\n return newState;\n }\n\n const [state, dispatch] = useReducer(\n mainReducer,\n initialState,\n handleStateInit\n );\n\n // Async load cached state from storage\n // useEffect(() => {\n // (async () => {\n // const existingStateStr = await storage.getItem('state');\n\n // if (!existingStateStr) {\n // return;\n // }\n\n // dispatch({\n // type: ActionType.LOAD_STATE,\n // payload: JSON.parse(existingStateStr),\n // });\n // });\n // }, []);\n\n const value = { state, dispatch };\n return (\n <GlobalContext.Provider value={value}>\n {children}\n {/* <ExternalApi config={config} dispatchEvents={(state: GlobalState) => dispatchExternalEvents(initialState, state)} /> */}\n </GlobalContext.Provider>\n );\n};\n\nfunction useGlobalContext() {\n const context = useContext(GlobalContext);\n\n if (context === undefined) {\n throw new Error(\n 'useGlobalContext must be used within a GlobalContext Provider'\n );\n }\n\n return context;\n}\n\nexport { GlobalContextProvider, useGlobalContext };\n"],"mappings":";;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AAEA;;AACA;;AAEA;;;;;;;;AAyGO,MAAMA,aAAa,gBAAG,IAAAC,oBAAA,EAE3BC,SAF2B,CAAtB;;;AAIP,SAASC,eAAT,CAAyBC,YAAzB,EAAoD;EAClD,IAAIC,gBAAA,CAAQC,QAAR,CAAiB,OAAjB,CAAJ,EAA+B;IAC7B,MAAMC,KAAK,GAAGC,IAAI,CAACC,KAAL,CAAWJ,gBAAA,CAAQK,SAAR,CAAkB,OAAlB,KAA8B,IAAzC,CAAd;IAEA,OAAO,EACL,GAAGN,YADE;MAEL,GAAGG;IAFE,CAAP;EAID;;EAED,OAAOH,YAAP;AACD,C,CAED;AACA;AAEA;AACA;AACA;AACA;AACA;;;AAEA,MAAMO,qBAAsD,GAAG,QAGzD;EAAA,IAH0D;IAC9DC,QAD8D;IAE9DC;EAF8D,CAG1D;EACJ,MAAMT,YAAyB,GAAG;IAChCU,eAAe,EAAE,KADe;IAEhCC,oBAAoB,EAAE,KAFU;IAGhCC,SAAS,EAAE,KAHqB;IAIhCC,GAAG,EAAE;MACHC,aAAa,EAAE,GADZ;MAEHC,aAAa,EAAE,EAFZ;MAGHC,QAAQ,EAAE,EAHP;MAIHC,OAAO,EAAE,EAJN;MAKHC,OAAO,EAAE;IALN,CAJ2B;IAWhCC,IAAI,EAAE;MACJC,IAAI,EAAE;QACJC,KAAK,EAAE;MADH,CADF;MAIJC,aAAa,EAAE,KAJX;MAKJC,QAAQ,EAAE;IALN,CAX0B;IAkBhCC,IAAI,EAAE;MACJC,YAAY,EAAE,IADV;MAEJC,aAAa,EAAE,IAFX;MAGJC,MAAM,EAAE;IAHJ,CAlB0B;IAuBhCC,GAAG,EAAE;MACHC,MAAM,EAAE,IADL;MAEHpB,MAAM,EAAE;IAFL,CAvB2B;IA2BhCqB,UAAU,EAAE,IA3BoB;IA4BhCC,mBAAmB,EAAE,KA5BW;IA6BhCtB;EA7BgC,CAAlC,CADI,CAiCJ;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;;EAEA,SAASuB,WAAT,CAAqB7B,KAArB,EAAyC8B,MAAzC,EAAuE;IAAA;;IACrE,IAAIC,YAAJ;IAEA,IAAIC,QAAJ,CAHqE,CAIrE;;IACA,QAAQF,MAAM,CAACG,IAAf;MACE,KAAKC,mBAAA,CAAWC,qBAAhB;QACEH,QAAQ,GAAG,EACT,GAAGhC,KADM;UAETQ,oBAAoB,EAAEsB,MAAM,CAACM,OAAP,CAAeC,SAF5B;UAGT5B,SAAS,EACPqB,MAAM,CAACM,OAAP,CAAeC,SAAf,KAA6B,KAA7B,GAAqC,KAArC,GAA6CrC,KAAK,CAACS,SAJ5C;UAKTC,GAAG,EAAE,EACH,GAAGV,KAAK,CAACU,GADN;YAEHC,aAAa,EAAE;UAFZ;QALI,CAAX;QAUA;;MAEF,KAAKuB,mBAAA,CAAWI,YAAhB;QACEN,QAAQ,GAAG,EACT,GAAGhC,KADM;UAETU,GAAG,EAAE,EACH,GAAGV,KAAK,CAACU,GADN;YAEHC,aAAa,EAAEmB,MAAM,CAACM,OAAP,CAAeG,KAF3B;YAGH3B,aAAa,EAAEkB,MAAM,CAACM,OAAP,CAAeI,OAAf,IAA0B,EAHtC;YAIH3B,QAAQ,EAAEiB,MAAM,CAACM,OAAP,CAAevB,QAJtB;YAKHE,OAAO,EAAEe,MAAM,CAACM,OAAP,CAAeK;UALrB;QAFI,CAAX;QAWA;;MAEF,KAAKP,mBAAA,CAAWQ,WAAhB;QACEV,QAAQ,GAAG,EACT,GAAGhC,KADM;UAETU,GAAG,EAAE,EACH,GAAGV,KAAK,CAACU,GADN;YAEHI,OAAO,EAAEgB,MAAM,CAACM,OAAP,CAAetB;UAFrB;QAFI,CAAX;QAOA;;MAEF,KAAKoB,mBAAA,CAAWS,aAAhB;QACE;QACAZ,YAAY,GAAG,IAAAa,kBAAA,EAAWd,MAAM,CAACM,OAAP,CAAed,YAA1B,CAAf,CAFF,CAIE;;QACA,IAAIQ,MAAM,CAACM,OAAP,CAAeZ,MAAf,KAA0BxB,KAAK,CAACyB,GAAN,CAAUoB,EAAxC,EAA4C;UAC1C,OAAO,EACL,GAAG7C;UADE,CAAP;QAGD;;QAEDgC,QAAQ,GAAG,EACT,GAAGhC,KADM;UAETqB,IAAI,EAAE,EACJ,GAAGrB,KAAK,CAACqB,IADL;YAEJC,YAAY,EAAEQ,MAAM,CAACM,OAAP,CAAed,YAFzB;YAGJC,aAAa,EAAEO,MAAM,CAACM,OAAP,CAAeb,aAH1B;YAIJC,MAAM,EAAEM,MAAM,CAACM,OAAP,CAAeZ,MAJnB;YAKJsB,gBAAgB,EACd,kBAAAf,YAAY,UAAZ,sDAAe,wCAAf,OACA,KAPE,CAOK;;UAPL,CAFG;UAWTf,IAAI,EAAE,EACJ,GAAGhB,KAAK,CAACgB,IADL;YAEJC,IAAI,EAAE,EACJ,GAAGjB,KAAK,CAACgB,IAAN,CAAWC,IADV;cAEJ4B,EAAE,EAAEf,MAAM,CAACM,OAAP,CAAeW;YAFf;UAFF;QAXG,CAAX;QAmBA;;MAEF,KAAKb,mBAAA,CAAWc,QAAhB;QACE;QACAhB,QAAQ,GAAG,EACT,GAAGhC,KADM;UAETgB,IAAI,EAAE;YACJC,IAAI,EAAE;cACJC,KAAK,EAAE;YADH,CADF;YAIJE,QAAQ,EAAE;UAJN,CAFG;UAQTC,IAAI,EAAE;YACJC,YAAY,EAAE,IADV;YAEJC,aAAa,EAAE,IAFX;YAGJC,MAAM,EAAE;UAHJ;QARG,CAAX;QAcA;;MAEF,KAAKU,mBAAA,CAAWe,aAAhB;QACEjB,QAAQ,GAAG,EACT,GAAGhC,KADM;UAETqB,IAAI,EAAE,EACJ,GAAGrB,KAAK,CAACqB,IADL;YAEJC,YAAY,EAAEQ,MAAM,CAACM,OAAP,CAAed,YAFzB;YAGJC,aAAa,EAAEO,MAAM,CAACM,OAAP,CAAeb;UAH1B;QAFG,CAAX,CADF,CAUE;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;;MAEF,KAAKW,mBAAA,CAAWgB,SAAhB;QACElB,QAAQ,GAAG,EACT,GAAGhC,KADM;UAETgB,IAAI,EAAE,EACJ,GAAGhB,KAAK,CAACgB,IADL;YAEJC,IAAI,EAAE,EACJ,GAAGa,MAAM,CAACM,OAAP,CAAenB;YADd,CAFF;YAKJG,QAAQ,EAAEU,MAAM,CAACM,OAAP,CAAehB;UALrB;QAFG,CAAX;QAUA;;MAEF,KAAKc,mBAAA,CAAWiB,iBAAhB;QACEnB,QAAQ,GAAG,EACT,GAAGhC,KADM;UAET2B,UAAU,EAAE,EACV,GAAG3B,KAAK,CAAC2B,UADC;YAEV,GAAGG,MAAM,CAACM;UAFA;QAFH,CAAX;QAOA;;MAEF,KAAKF,mBAAA,CAAWkB,mBAAhB;QACE;QACA;QACA,IAAIpD,KAAK,CAACgB,IAAN,CAAWC,IAAX,CAAgBa,MAAM,CAACM,OAAP,CAAeiB,KAA/B,MAA0CvB,MAAM,CAACM,OAAP,CAAekB,KAA7D,EAAoE;UAClEC,cAAA,CAAOC,QAAP,CAAgBC,iBAAA,CAAUC,eAA1B,EAA2C1D,KAAK,CAACgB,IAAN,CAAWC,IAAtD;QACD;;QAEDe,QAAQ,GAAG,EACT,GAAGhC,KADM;UAETgB,IAAI,EAAE,EACJ,GAAGhB,KAAK,CAACgB,IADL;YAEJC,IAAI,EAAE,EACJ,GAAGjB,KAAK,CAACgB,IAAN,CAAWC,IADV;cAEJ,CAACa,MAAM,CAACM,OAAP,CAAeiB,KAAhB,GAAwBvB,MAAM,CAACM,OAAP,CAAekB;YAFnC;UAFF;QAFG,CAAX;QAUA;;MAEF,KAAKpB,mBAAA,CAAWyB,aAAhB;QACE;QACA;QACA,IACE,IAAAC,gBAAA,EACE,IAAAC,aAAA,EAAK7D,KAAK,CAACgB,IAAN,CAAWC,IAAhB,EAAsB6C,MAAM,CAACC,IAAP,CAAYjC,MAAM,CAACM,OAAP,CAAenB,IAA3B,CAAtB,CADF,EAEEa,MAAM,CAACM,OAAP,CAAenB,IAFjB,CADF,EAKE;UACAsC,cAAA,CAAOC,QAAP,CAAgBC,iBAAA,CAAUC,eAA1B,EAA2C1D,KAAK,CAACgB,IAAN,CAAWC,IAAtD;QACD;;QAEDe,QAAQ,GAAG,EACT,GAAGhC,KADM;UAETgB,IAAI,EAAE,EACJ,GAAGhB,KAAK,CAACgB,IADL;YAEJC,IAAI,EAAE,EACJ,GAAGjB,KAAK,CAACgB,IAAN,CAAWC,IADV;cAEJ,GAAGa,MAAM,CAACM,OAAP,CAAenB;YAFd;UAFF;QAFG,CAAX;QAUA;;MAEF,KAAKiB,mBAAA,CAAW8B,qBAAhB;QACEhC,QAAQ,GAAG,EACT,GAAGhC,KADM;UAETgB,IAAI,EAAE,EACJ,GAAGhB,KAAK,CAACgB,IADL;YAEJG,aAAa,EAAEW,MAAM,CAACM,OAAP,CAAejB;UAF1B;QAFG,CAAX;QAOA;;MAEF,KAAKe,mBAAA,CAAW+B,UAAhB;QACEjC,QAAQ,GAAG,EACT,GAAGF,MAAM,CAACM;QADD,CAAX;QAGA;;MAEF,KAAKF,mBAAA,CAAWgC,uBAAhB;QAAyC;UACvClC,QAAQ,GAAG,EACT,GAAGhC,KADM;YAET4B,mBAAmB,EAAEE,MAAM,CAACM,OAAP,CAAe+B;UAF3B,CAAX;UAIA;QACD;;MAED,KAAKjC,mBAAA,CAAWkC,cAAhB;QACEpC,QAAQ,GAAG,EACT,GAAGhC,KADM;UAETyB,GAAG,EAAE,EACH,GAAGzB,KAAK,CAACyB,GADN;YAEH,GAAGK,MAAM,CAACM;UAFP;QAFI,CAAX;QAOA;;MAEF;QACEJ,QAAQ,GAAGhC,KAAX;IAnNJ,CALqE,CA2NrE;;;IACA,MAAMqE,cAAmB,GAAG,EAAE,GAAGrC;IAAL,CAA5B;IACA,OAAOqC,cAAc,CAAC/D,MAAtB;IACA,OAAO+D,cAAc,CAAC3D,GAAtB;IACA,OAAO2D,cAAc,CAAC7D,oBAAtB;IACA,OAAO6D,cAAc,CAAC5D,SAAtB;IACA,OAAO4D,cAAc,CAAC9D,eAAtB;IACA,OAAO8D,cAAc,CAACzC,mBAAtB,CAlOqE,CAoOrE;;IACA9B,gBAAA,CAAQwE,GAAR,CAAY,OAAZ,EAAqBrE,IAAI,CAACsE,SAAL,CAAeF,cAAf,CAArB,EArOqE,CAuOrE;IACA;;;IAEA,OAAOrC,QAAP;EACD;;EAED,MAAM,CAAChC,KAAD,EAAQwD,QAAR,IAAoB,IAAAgB,iBAAA,EACxB3C,WADwB,EAExBhC,YAFwB,EAGxBD,eAHwB,CAA1B,CA1SI,CAgTJ;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;;EAEA,MAAM0D,KAAK,GAAG;IAAEtD,KAAF;IAASwD;EAAT,CAAd;EACA,oBACE,6BAAC,aAAD,CAAe,QAAf;IAAwB,KAAK,EAAEF;EAA/B,GACGjD,QADH,CADF;AAMD,CA1UD;;;;AA4UA,SAASoE,gBAAT,GAA4B;EAC1B,MAAMC,OAAO,GAAG,IAAAC,iBAAA,EAAWlF,aAAX,CAAhB;;EAEA,IAAIiF,OAAO,KAAK/E,SAAhB,EAA2B;IACzB,MAAM,IAAIiF,KAAJ,CACJ,+DADI,CAAN;EAGD;;EAED,OAAOF,OAAP;AACD"}
@@ -15,8 +15,6 @@ var _GlobalContext = require("./GlobalContext");
15
15
 
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
17
 
18
- // import { useDeviceContext } from 'twrnc';
19
- // import tw from '../utils/tailwind';
20
18
  function RowndComponents() {
21
19
  const {
22
20
  state
@@ -1 +1 @@
1
- {"version":3,"names":["RowndComponents","state","useGlobalContext","nav","current_route"],"sources":["RowndComponents.tsx"],"sourcesContent":["import React from 'react';\n// import { useDeviceContext } from 'twrnc';\n\n// import tw from '../utils/tailwind';\nimport { SignIn } from './SignIn';\nimport { AutoSigninDialog } from './AutoSigninDialog';\nimport { useGlobalContext } from './GlobalContext';\n\nexport function RowndComponents() {\n const { state } = useGlobalContext();\n // useDeviceContext(tw);\n\n return (\n <>\n {state.nav.current_route === '/account/login' && <SignIn />}\n {state.nav.current_route === '/account/auto-signin' && (\n <AutoSigninDialog />\n )}\n </>\n );\n}\n"],"mappings":";;;;;;;AAAA;;AAIA;;AACA;;AACA;;;;AALA;AAEA;AAKO,SAASA,eAAT,GAA2B;EAChC,MAAM;IAAEC;EAAF,IAAY,IAAAC,+BAAA,GAAlB,CADgC,CAEhC;;EAEA,oBACE,4DACGD,KAAK,CAACE,GAAN,CAAUC,aAAV,KAA4B,gBAA5B,iBAAgD,6BAAC,cAAD,OADnD,EAEGH,KAAK,CAACE,GAAN,CAAUC,aAAV,KAA4B,sBAA5B,iBACC,6BAAC,kCAAD,OAHJ,CADF;AAQD"}
1
+ {"version":3,"names":["RowndComponents","state","useGlobalContext","nav","current_route"],"sources":["RowndComponents.tsx"],"sourcesContent":["import React from 'react';\nimport { SignIn } from './SignIn';\nimport { AutoSigninDialog } from './AutoSigninDialog';\nimport { useGlobalContext } from './GlobalContext';\n\nexport function RowndComponents() {\n const { state } = useGlobalContext();\n // useDeviceContext(tw);\n\n return (\n <>\n {state.nav.current_route === '/account/login' && <SignIn />}\n {state.nav.current_route === '/account/auto-signin' && (\n <AutoSigninDialog />\n )}\n </>\n );\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;AAEO,SAASA,eAAT,GAA2B;EAChC,MAAM;IAAEC;EAAF,IAAY,IAAAC,+BAAA,GAAlB,CADgC,CAEhC;;EAEA,oBACE,4DACGD,KAAK,CAACE,GAAN,CAAUC,aAAV,KAA4B,gBAA5B,iBAAgD,6BAAC,cAAD,OADnD,EAEGH,KAAK,CAACE,GAAN,CAAUC,aAAV,KAA4B,sBAA5B,iBACC,6BAAC,kCAAD,OAHJ,CADF;AAQD"}
@@ -13,8 +13,6 @@ var _reactNative = require("react-native");
13
13
 
14
14
  var _reactNativeSvg = require("react-native-svg");
15
15
 
16
- var _tailwind = _interopRequireDefault(require("../utils/tailwind"));
17
-
18
16
  var _phone = _interopRequireDefault(require("phone"));
19
17
 
20
18
  var _jwtDecode = _interopRequireDefault(require("jwt-decode"));
@@ -405,9 +403,11 @@ function SignIn() {
405
403
  let extraBottomSheetProps = {};
406
404
 
407
405
  if (_package.default.version.startsWith('4')) {
406
+ var _state$nav, _state$nav$options;
407
+
408
408
  extraBottomSheetProps.keyboardBehavior = 'fillParent';
409
409
  extraBottomSheetProps.android_keyboardInputMode = 'adjustResize';
410
- extraBottomSheetProps.enablePanDownToClose = state.nav.options.type === 'error';
410
+ extraBottomSheetProps.enablePanDownToClose = (state === null || state === void 0 ? void 0 : (_state$nav = state.nav) === null || _state$nav === void 0 ? void 0 : (_state$nav$options = _state$nav.options) === null || _state$nav$options === void 0 ? void 0 : _state$nav$options.type) === 'error';
411
411
  }
412
412
 
413
413
  return /*#__PURE__*/_react.default.createElement(_bottomSheet.BottomSheetModal, _extends({
@@ -472,9 +472,9 @@ function SignIn() {
472
472
  }, "By continuing, you're agreeing to the terms of service that govern this app and to receive email or text messages for verification purposes.")), step === LoginStep.WAITING && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
473
473
  style: styles.dialogHeading
474
474
  }, "Thanks! Verify your", ' ', loginType === 'phone' ? 'phone number' : 'email', " to finish"), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
475
- style: _tailwind.default.style('py-6')
475
+ style: styles.py6
476
476
  }, "Click the link in the message we just sent to", ' ', /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
477
- style: _tailwind.default.style('italic')
477
+ style: styles.italic
478
478
  }, userIdentifier), " to verify and finish.", /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
479
479
  style: [styles.link],
480
480
  onPress: () => setStep(LoginStep.INIT)
@@ -488,16 +488,16 @@ function SignIn() {
488
488
  }, "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, {
489
489
  style: styles.signInVerificationImage
490
490
  }, /*#__PURE__*/_react.default.createElement(_CheckmarkFilled.default, null))), step === LoginStep.FAILURE && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
491
- style: _tailwind.default.style('text-base')
491
+ style: styles.textBase
492
492
  }, "Whoops, that didn't work!"), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
493
493
  style: styles.button,
494
494
  onPress: () => setStep(LoginStep.INIT)
495
495
  }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
496
496
  style: styles.buttonContent
497
497
  }, "Try again"))), step === LoginStep.ERROR && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
498
- style: _tailwind.default.style('text-base')
498
+ style: styles.textBase
499
499
  }, "An error occurred while signing you in."), !!error && /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
500
- style: _tailwind.default.style('text-rose-800')
500
+ style: styles.textRose800
501
501
  }, error), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
502
502
  style: styles.button,
503
503
  onPress: () => setStep(LoginStep.INIT)
@@ -619,6 +619,19 @@ const styles = _reactNative.StyleSheet.create({
619
619
  },
620
620
  link: {
621
621
  color: '#6114e1'
622
+ },
623
+ py6: {
624
+ paddingVertical: 6
625
+ },
626
+ italic: {
627
+ fontStyle: 'italic'
628
+ },
629
+ textBase: {
630
+ fontSize: 16,
631
+ lineHeight: 24
632
+ },
633
+ textRose800: {
634
+ color: 'rgb(159, 18, 57)'
622
635
  }
623
636
  });
624
637
  //# sourceMappingURL=SignIn.js.map