react-native-unit-components 0.1.0

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 (89) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +2 -0
  3. package/android/build.gradle +145 -0
  4. package/android/gradle.properties +5 -0
  5. package/android/src/main/AndroidManifest.xml +4 -0
  6. package/android/src/main/java/com/unitreactnativecomponents/UnitReactNativeComponentsPackage.kt +16 -0
  7. package/android/src/main/java/com/unitreactnativecomponents/UnitReactNativeComponentsViewManager.kt +19 -0
  8. package/ios/UnitReactNativeComponents-Bridging-Header.h +1 -0
  9. package/ios/UnitReactNativeComponents.xcodeproj/project.pbxproj +283 -0
  10. package/ios/UnitReactNativeComponents.xcodeproj/project.xcworkspace/contents.xcworkspacedata +4 -0
  11. package/ios/UnitReactNativeComponents.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  12. package/ios/UnitReactNativeComponents.xcodeproj/project.xcworkspace/xcuserdata/alonshprung.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  13. package/ios/UnitReactNativeComponents.xcodeproj/xcuserdata/alonshprung.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  14. package/ios/UnitReactNativeComponentsViewManager.m +7 -0
  15. package/ios/UnitReactNativeComponentsViewManager.swift +36 -0
  16. package/lib/commonjs/components/BottomSheet/BottomSheetComponent.js +143 -0
  17. package/lib/commonjs/components/BottomSheet/BottomSheetComponent.js.map +1 -0
  18. package/lib/commonjs/components/Card/CardComponent.js +97 -0
  19. package/lib/commonjs/components/Card/CardComponent.js.map +1 -0
  20. package/lib/commonjs/components/index.js +32 -0
  21. package/lib/commonjs/components/index.js.map +1 -0
  22. package/lib/commonjs/helpers/BottomSheet.js +274 -0
  23. package/lib/commonjs/helpers/BottomSheet.js.map +1 -0
  24. package/lib/commonjs/helpers/EventBus.js +79 -0
  25. package/lib/commonjs/helpers/EventBus.js.map +1 -0
  26. package/lib/commonjs/index.js +19 -0
  27. package/lib/commonjs/index.js.map +1 -0
  28. package/lib/commonjs/nativeComponenet/NativeComponentExample.js +19 -0
  29. package/lib/commonjs/nativeComponenet/NativeComponentExample.js.map +1 -0
  30. package/lib/commonjs/webComponent/WebComponent.js +75 -0
  31. package/lib/commonjs/webComponent/WebComponent.js.map +1 -0
  32. package/lib/commonjs/webComponent/html.js +79 -0
  33. package/lib/commonjs/webComponent/html.js.map +1 -0
  34. package/lib/commonjs/webComponent/webMessages/cardMessage.js +13 -0
  35. package/lib/commonjs/webComponent/webMessages/cardMessage.js.map +1 -0
  36. package/lib/commonjs/webComponent/webMessages/pageMessage.js +14 -0
  37. package/lib/commonjs/webComponent/webMessages/pageMessage.js.map +1 -0
  38. package/lib/commonjs/webComponent/webMessages/unitMessages.js +17 -0
  39. package/lib/commonjs/webComponent/webMessages/unitMessages.js.map +1 -0
  40. package/lib/module/components/BottomSheet/BottomSheetComponent.js +118 -0
  41. package/lib/module/components/BottomSheet/BottomSheetComponent.js.map +1 -0
  42. package/lib/module/components/Card/CardComponent.js +75 -0
  43. package/lib/module/components/Card/CardComponent.js.map +1 -0
  44. package/lib/module/components/index.js +3 -0
  45. package/lib/module/components/index.js.map +1 -0
  46. package/lib/module/helpers/BottomSheet.js +252 -0
  47. package/lib/module/helpers/BottomSheet.js.map +1 -0
  48. package/lib/module/helpers/EventBus.js +69 -0
  49. package/lib/module/helpers/EventBus.js.map +1 -0
  50. package/lib/module/index.js +2 -0
  51. package/lib/module/index.js.map +1 -0
  52. package/lib/module/nativeComponenet/NativeComponentExample.js +10 -0
  53. package/lib/module/nativeComponenet/NativeComponentExample.js.map +1 -0
  54. package/lib/module/webComponent/WebComponent.js +49 -0
  55. package/lib/module/webComponent/WebComponent.js.map +1 -0
  56. package/lib/module/webComponent/html.js +72 -0
  57. package/lib/module/webComponent/html.js.map +1 -0
  58. package/lib/module/webComponent/webMessages/cardMessage.js +6 -0
  59. package/lib/module/webComponent/webMessages/cardMessage.js.map +1 -0
  60. package/lib/module/webComponent/webMessages/pageMessage.js +7 -0
  61. package/lib/module/webComponent/webMessages/pageMessage.js.map +1 -0
  62. package/lib/module/webComponent/webMessages/unitMessages.js +10 -0
  63. package/lib/module/webComponent/webMessages/unitMessages.js.map +1 -0
  64. package/lib/typescript/components/BottomSheet/BottomSheetComponent.d.ts +1 -0
  65. package/lib/typescript/components/Card/CardComponent.d.ts +6 -0
  66. package/lib/typescript/components/index.d.ts +2 -0
  67. package/lib/typescript/helpers/BottomSheet.d.ts +34 -0
  68. package/lib/typescript/helpers/EventBus.d.ts +15 -0
  69. package/lib/typescript/index.d.ts +1 -0
  70. package/lib/typescript/nativeComponenet/NativeComponentExample.d.ts +7 -0
  71. package/lib/typescript/webComponent/WebComponent.d.ts +23 -0
  72. package/lib/typescript/webComponent/html.d.ts +2 -0
  73. package/lib/typescript/webComponent/webMessages/cardMessage.d.ts +7 -0
  74. package/lib/typescript/webComponent/webMessages/pageMessage.d.ts +8 -0
  75. package/lib/typescript/webComponent/webMessages/unitMessages.d.ts +24 -0
  76. package/package.json +152 -0
  77. package/src/components/BottomSheet/BottomSheetComponent.tsx +113 -0
  78. package/src/components/Card/CardComponent.tsx +75 -0
  79. package/src/components/index.ts +2 -0
  80. package/src/helpers/BottomSheet.tsx +277 -0
  81. package/src/helpers/EventBus.ts +58 -0
  82. package/src/index.tsx +1 -0
  83. package/src/nativeComponenet/NativeComponentExample.tsx +26 -0
  84. package/src/webComponent/WebComponent.tsx +75 -0
  85. package/src/webComponent/html.ts +72 -0
  86. package/src/webComponent/webMessages/cardMessage.ts +10 -0
  87. package/src/webComponent/webMessages/pageMessage.ts +11 -0
  88. package/src/webComponent/webMessages/unitMessages.ts +31 -0
  89. package/unit-react-native-components.podspec +35 -0
@@ -0,0 +1,252 @@
1
+ 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); }
2
+
3
+ import React, { useEffect, useRef, useState } from 'react';
4
+ import { Animated, BackHandler, Dimensions, Easing, PanResponder, StyleSheet, TouchableOpacity, View } from 'react-native';
5
+ import PropTypes from 'prop-types';
6
+
7
+ const BottomSheet = props => {
8
+ const panelHeightValue = useRef(new Animated.Value(props.sliderMaxHeight)).current;
9
+ const fadeAnim = useRef(new Animated.Value(0)).current;
10
+ const [isPanelOpened, setIsPanelOpened] = useState(props.isOpen);
11
+ const [contentHeight, setContentHeight] = useState(undefined);
12
+ const [currentHeight, setCurrentHeight] = useState(props.sliderMaxHeight);
13
+ const [dy, setDy] = useState(0);
14
+
15
+ const _parentPanResponder = PanResponder.create({
16
+ onMoveShouldSetPanResponderCapture: (_, gestureState) => {
17
+ return Math.abs(gestureState.dy) > 10;
18
+ },
19
+
20
+ onPanResponderMove(_, gestureState) {
21
+ if (currentHeight + gestureState.dy < 0) return;
22
+ if (!props.expandToMaxHeightEnabled && currentHeight + gestureState.dy < sliderMaxHeight - contentHeight) return;
23
+ panelHeightValue.setValue(currentHeight + gestureState.dy);
24
+ setDy(gestureState.dy);
25
+ },
26
+
27
+ onPanResponderRelease: () => {
28
+ if (dy > 0) {
29
+ collapse();
30
+ } else if (!props.expandToMaxHeightEnabled) {
31
+ setToContentHeight(contentHeight);
32
+ } else if (dy < 0) {
33
+ expand();
34
+ } else {
35
+ expand();
36
+ }
37
+ }
38
+ });
39
+
40
+ useEffect(() => {
41
+ if (props.isOpen && !isPanelOpened) {
42
+ fadeIn();
43
+ } else if (isPanelOpened) {
44
+ setContentHeight(0);
45
+
46
+ _dismiss();
47
+ }
48
+ }, [props.isOpen]);
49
+ useEffect(() => {
50
+ BackHandler.addEventListener('hardwareBackPress', _onBackPress);
51
+ const id = panelHeightValue.addListener(e => setCurrentHeight(e.value));
52
+ return () => {
53
+ BackHandler.removeEventListener('hardwareBackPress', _onBackPress);
54
+ panelHeightValue.removeListener(id);
55
+ };
56
+ }, []);
57
+
58
+ const fadeIn = () => {
59
+ Animated.timing(fadeAnim, {
60
+ toValue: 0.3,
61
+ duration: 500,
62
+ useNativeDriver: false
63
+ }).start(() => {
64
+ setIsPanelOpened(true);
65
+ });
66
+ };
67
+
68
+ const fadeOut = () => {
69
+ Animated.timing(fadeAnim, {
70
+ toValue: 0,
71
+ duration: 500,
72
+ useNativeDriver: false
73
+ }).start(() => {
74
+ setIsPanelOpened(false);
75
+ props.onClose();
76
+ });
77
+ };
78
+
79
+ const setToContentHeight = contentHeight => {
80
+ Animated.timing(panelHeightValue, {
81
+ duration: props.animationDuration,
82
+ easing: Easing.quad,
83
+ toValue: sliderMaxHeight - contentHeight,
84
+ useNativeDriver: false
85
+ }).start();
86
+ };
87
+
88
+ const expand = () => {
89
+ const {
90
+ animationDuration
91
+ } = props;
92
+
93
+ if (currentHeight > sliderMaxHeight - contentHeight) {
94
+ setToContentHeight(contentHeight);
95
+ return;
96
+ }
97
+
98
+ Animated.timing(panelHeightValue, {
99
+ duration: animationDuration,
100
+ easing: Easing.quad,
101
+ toValue: 0,
102
+ useNativeDriver: false
103
+ }).start();
104
+ };
105
+
106
+ const collapse = () => {
107
+ if (currentHeight > sliderMaxHeight - contentHeight) {
108
+ _dismiss();
109
+
110
+ return;
111
+ }
112
+
113
+ setToContentHeight(contentHeight); // Animated.timing(panelHeightValue, {
114
+ // duration: animationDuration,
115
+ // easing: Easing.quad,
116
+ // toValue: sliderMaxHeight - contentHeight!,
117
+ // useNativeDriver: false,
118
+ // }).start(() => {
119
+ // const isPanelOpenedNewValue = !isPanelOpened
120
+ // setIsPanelOpened(isPanelOpenedNewValue)
121
+ // if (isPanelOpenedNewValue) {
122
+ // // onOpen();
123
+ // } else {
124
+ // // onClose();
125
+ // Keyboard.dismiss();
126
+ // }
127
+ // });
128
+ };
129
+
130
+ const _onBackPress = () => {
131
+ isPanelOpened && collapse();
132
+ return isPanelOpened;
133
+ };
134
+
135
+ const _setSize = e => {
136
+ let newContentHeight = e.nativeEvent.layout.height;
137
+ if (newContentHeight !== 0) newContentHeight += 42;
138
+ setContentHeight(newContentHeight);
139
+ setToContentHeight(newContentHeight);
140
+ };
141
+
142
+ const _dismiss = () => {
143
+ const {
144
+ animationDuration
145
+ } = props;
146
+ Animated.timing(panelHeightValue, {
147
+ duration: animationDuration,
148
+ easing: Easing.quad,
149
+ toValue: sliderMaxHeight,
150
+ useNativeDriver: false
151
+ }).start(() => {});
152
+ fadeOut();
153
+ };
154
+
155
+ const {
156
+ sliderMaxHeight,
157
+ children
158
+ } = props;
159
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TouchableOpacity, {
160
+ style: {
161
+ position: 'absolute',
162
+ top: 0,
163
+ bottom: 0,
164
+ right: 0,
165
+ left: 0
166
+ },
167
+ activeOpacity: 1,
168
+ onPress: _dismiss
169
+ }, /*#__PURE__*/React.createElement(Animated.View, {
170
+ style: {
171
+ backgroundColor: 'black',
172
+ flex: 1,
173
+ opacity: fadeAnim
174
+ }
175
+ })), /*#__PURE__*/React.createElement(Animated.View, _extends({}, _parentPanResponder.panHandlers, {
176
+ style: { ...styles.container,
177
+ height: sliderMaxHeight,
178
+ transform: [{
179
+ translateY: panelHeightValue
180
+ }]
181
+ }
182
+ }), /*#__PURE__*/React.createElement(View, {
183
+ style: styles.outerContent
184
+ }, /*#__PURE__*/React.createElement(TouchableOpacity, {
185
+ activeOpacity: 1
186
+ }, /*#__PURE__*/React.createElement(View, {
187
+ style: styles.lineContainer
188
+ }, /*#__PURE__*/React.createElement(View, {
189
+ style: styles.line
190
+ }))), /*#__PURE__*/React.createElement(View, {
191
+ onLayout: _setSize,
192
+ style: [styles.innerContent]
193
+ }, children))));
194
+ };
195
+
196
+ BottomSheet.propTypes = {
197
+ children: PropTypes.oneOfType([PropTypes.node]),
198
+ isOpen: PropTypes.bool,
199
+ sliderMaxHeight: PropTypes.number,
200
+ animation: PropTypes.func,
201
+ animationDuration: PropTypes.number,
202
+ onOpen: PropTypes.func,
203
+ onClose: PropTypes.func,
204
+ expandToMaxHeightEnabled: PropTypes.bool
205
+ };
206
+ BottomSheet.defaultProps = {
207
+ children: /*#__PURE__*/React.createElement(View, null),
208
+ isOpen: true,
209
+ sliderMaxHeight: Dimensions.get('window').height * 0.95,
210
+ animationDuration: 200,
211
+ onOpen: () => null,
212
+ onClose: () => null,
213
+ expandToMaxHeightEnabled: false
214
+ };
215
+ const styles = StyleSheet.create({
216
+ container: {
217
+ flex: 1,
218
+ marginTop: 60,
219
+ paddingHorizontal: 12,
220
+ shadowColor: '#000000',
221
+ shadowOffset: {
222
+ width: 0,
223
+ height: 6
224
+ },
225
+ shadowOpacity: 0.37,
226
+ shadowRadius: 7.49,
227
+ elevation: 12,
228
+ borderTopLeftRadius: 15,
229
+ borderTopRightRadius: 15,
230
+ backgroundColor: '#ffffff'
231
+ },
232
+ lineContainer: {
233
+ borderTopLeftRadius: 30,
234
+ borderTopRightRadius: 30,
235
+ alignItems: 'center'
236
+ },
237
+ line: {
238
+ width: 35,
239
+ height: 4,
240
+ borderRadius: 2,
241
+ marginTop: 18,
242
+ backgroundColor: '#D5DDE0'
243
+ },
244
+ outerContent: {
245
+ flex: -1
246
+ },
247
+ innerContent: {
248
+ flex: -1
249
+ }
250
+ });
251
+ export default BottomSheet;
252
+ //# sourceMappingURL=BottomSheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useRef","useState","Animated","BackHandler","Dimensions","Easing","PanResponder","StyleSheet","TouchableOpacity","View","PropTypes","BottomSheet","props","panelHeightValue","Value","sliderMaxHeight","current","fadeAnim","isPanelOpened","setIsPanelOpened","isOpen","contentHeight","setContentHeight","undefined","currentHeight","setCurrentHeight","dy","setDy","_parentPanResponder","create","onMoveShouldSetPanResponderCapture","_","gestureState","Math","abs","onPanResponderMove","expandToMaxHeightEnabled","setValue","onPanResponderRelease","collapse","setToContentHeight","expand","fadeIn","_dismiss","addEventListener","_onBackPress","id","addListener","e","value","removeEventListener","removeListener","timing","toValue","duration","useNativeDriver","start","fadeOut","onClose","animationDuration","easing","quad","_setSize","newContentHeight","nativeEvent","layout","height","children","position","top","bottom","right","left","backgroundColor","flex","opacity","panHandlers","styles","container","transform","translateY","outerContent","lineContainer","line","innerContent","propTypes","oneOfType","node","bool","number","animation","func","onOpen","defaultProps","get","marginTop","paddingHorizontal","shadowColor","shadowOffset","width","shadowOpacity","shadowRadius","elevation","borderTopLeftRadius","borderTopRightRadius","alignItems","borderRadius"],"sources":["BottomSheet.tsx"],"sourcesContent":["import React, { ReactNode, useEffect, useRef, useState } from 'react';\nimport {\n Animated,\n BackHandler,\n Dimensions,\n Easing,\n // Keyboard,\n LayoutChangeEvent,\n PanResponder,\n StyleSheet,\n TouchableOpacity,\n View,\n} from 'react-native';\nimport PropTypes from 'prop-types';\n\nexport interface BottomSheetProps {\n isOpen: boolean\n children: ReactNode\n sliderMaxHeight: number\n onOpen: () => void\n onClose: () => void\n animationDuration: number,\n expandToMaxHeightEnabled: boolean\n}\n\nconst BottomSheet = (props: BottomSheetProps) => {\n const panelHeightValue = useRef(new Animated.Value(props.sliderMaxHeight)).current;\n const fadeAnim = useRef(new Animated.Value(0)).current;\n\n const [isPanelOpened, setIsPanelOpened] = useState(props.isOpen)\n const [contentHeight, setContentHeight] = useState<number | undefined>(undefined)\n\n const [currentHeight, setCurrentHeight] = useState<number>(props.sliderMaxHeight)\n\n const [dy, setDy] = useState(0)\n\n const _parentPanResponder = PanResponder.create({\n onMoveShouldSetPanResponderCapture: (_, gestureState) => {\n return Math.abs(gestureState.dy) > 10\n },\n onPanResponderMove(_, gestureState) {\n if (currentHeight + gestureState.dy < 0) return\n if (!props.expandToMaxHeightEnabled && currentHeight + gestureState.dy < sliderMaxHeight - contentHeight!) return\n panelHeightValue.setValue(currentHeight + gestureState.dy)\n setDy(gestureState.dy)\n },\n onPanResponderRelease: () => {\n if (dy > 0) {\n collapse()\n } else if (!props.expandToMaxHeightEnabled) {\n setToContentHeight(contentHeight!)\n } else if (dy < 0) {\n expand()\n } else {\n expand()\n }\n }\n });\n\n useEffect(() => {\n if (props.isOpen && !isPanelOpened) {\n fadeIn()\n } else if (isPanelOpened) {\n setContentHeight(0)\n _dismiss()\n }\n }, [props.isOpen])\n\n useEffect(() => {\n BackHandler.addEventListener('hardwareBackPress', _onBackPress);\n const id = panelHeightValue.addListener(e => setCurrentHeight(e.value))\n\n return (() => {\n BackHandler.removeEventListener('hardwareBackPress', _onBackPress);\n panelHeightValue.removeListener(id)\n })\n }, [])\n\n const fadeIn = () => {\n Animated.timing(fadeAnim, {\n toValue: 0.3,\n duration: 500,\n useNativeDriver: false\n }).start(() => { setIsPanelOpened(true) });\n };\n\n const fadeOut = () => {\n Animated.timing(fadeAnim, {\n toValue: 0,\n duration: 500,\n useNativeDriver: false\n }).start(() => {\n setIsPanelOpened(false)\n props.onClose()\n });\n };\n\n const setToContentHeight = (contentHeight: number) => {\n Animated.timing(panelHeightValue, {\n duration: props.animationDuration,\n easing: Easing.quad,\n toValue: sliderMaxHeight - contentHeight!,\n useNativeDriver: false,\n }).start()\n }\n\n const expand = () => {\n const { animationDuration } = props;\n\n if (currentHeight > (sliderMaxHeight - contentHeight!)) {\n setToContentHeight(contentHeight!)\n return\n }\n\n Animated.timing(panelHeightValue, {\n duration: animationDuration,\n easing: Easing.quad,\n toValue: 0,\n useNativeDriver: false,\n }).start()\n }\n\n const collapse = () => {\n if (currentHeight > (sliderMaxHeight - contentHeight!)) {\n _dismiss()\n return\n }\n\n setToContentHeight(contentHeight!)\n\n // Animated.timing(panelHeightValue, {\n // duration: animationDuration,\n // easing: Easing.quad,\n // toValue: sliderMaxHeight - contentHeight!,\n // useNativeDriver: false,\n // }).start(() => {\n // const isPanelOpenedNewValue = !isPanelOpened\n // setIsPanelOpened(isPanelOpenedNewValue)\n // if (isPanelOpenedNewValue) {\n // // onOpen();\n // } else {\n // // onClose();\n // Keyboard.dismiss();\n // }\n // });\n };\n\n const _onBackPress = () => {\n isPanelOpened && collapse();\n return isPanelOpened;\n };\n\n const _setSize = (e: LayoutChangeEvent) => {\n let newContentHeight = e.nativeEvent.layout.height\n if (newContentHeight !== 0) newContentHeight += 42;\n\n setContentHeight(newContentHeight)\n setToContentHeight(newContentHeight)\n };\n\n const _dismiss = () => {\n const { animationDuration } = props\n Animated.timing(panelHeightValue, {\n duration: animationDuration,\n easing: Easing.quad,\n toValue: sliderMaxHeight,\n useNativeDriver: false,\n }).start(() => {\n })\n fadeOut()\n }\n\n const {\n sliderMaxHeight,\n children,\n } = props;\n\n return (\n <>\n <TouchableOpacity\n style={{ position: 'absolute', top: 0, bottom: 0, right: 0, left: 0 }} activeOpacity={1}\n onPress={_dismiss}\n >\n <Animated.View\n style={{ backgroundColor: 'black', flex: 1, opacity: fadeAnim }}\n >\n </Animated.View>\n </TouchableOpacity>\n <Animated.View\n {..._parentPanResponder.panHandlers}\n style={{\n ...styles.container,\n height: sliderMaxHeight,\n transform: [\n { translateY: panelHeightValue },\n ],\n }}\n >\n <View\n style={styles.outerContent}\n >\n <TouchableOpacity activeOpacity={1}>\n <View style={styles.lineContainer}>\n <View style={styles.line} />\n </View>\n </TouchableOpacity>\n <View\n onLayout={_setSize}\n style={[styles.innerContent]}\n >\n {children}\n </View>\n </View>\n </Animated.View>\n </>\n );\n}\n\nBottomSheet.propTypes = {\n children: PropTypes.oneOfType([PropTypes.node]),\n isOpen: PropTypes.bool,\n sliderMaxHeight: PropTypes.number,\n animation: PropTypes.func,\n animationDuration: PropTypes.number,\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n expandToMaxHeightEnabled: PropTypes.bool\n};\n\nBottomSheet.defaultProps = {\n children: <View />,\n isOpen: true,\n sliderMaxHeight: Dimensions.get('window').height * 0.95,\n animationDuration: 200,\n onOpen: () => null,\n onClose: () => null,\n expandToMaxHeightEnabled: false\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n marginTop: 60,\n paddingHorizontal: 12,\n shadowColor: '#000000',\n shadowOffset: {\n width: 0,\n height: 6,\n },\n shadowOpacity: 0.37,\n shadowRadius: 7.49,\n elevation: 12,\n borderTopLeftRadius: 15,\n borderTopRightRadius: 15,\n backgroundColor: '#ffffff',\n },\n lineContainer: {\n borderTopLeftRadius: 30,\n borderTopRightRadius: 30,\n alignItems: 'center'\n },\n line: {\n width: 35,\n height: 4,\n borderRadius: 2,\n marginTop: 18,\n backgroundColor: '#D5DDE0',\n },\n outerContent: {\n flex: -1,\n },\n innerContent: {\n flex: -1,\n },\n});\n\nexport default BottomSheet;\n"],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
3
+ export let BusEvent;
4
+
5
+ (function (BusEvent) {
6
+ BusEvent["REQUEST_RENDERING"] = "unitRequestRendering";
7
+ BusEvent["CARD_STATUS_CHANGED"] = "cardStatusChanged";
8
+ BusEvent["REQUEST_REFRESH"] = "requestRefresh";
9
+ })(BusEvent || (BusEvent = {}));
10
+
11
+ export default class EventBus {
12
+ constructor() {
13
+ _defineProperty(this, "eventListeners", {});
14
+
15
+ this.eventListeners = {};
16
+ }
17
+
18
+ static get Instance() {
19
+ return this._instance || (this._instance = new this());
20
+ }
21
+
22
+ event(event, data) {
23
+ let listeners = this.eventListeners[event.valueOf()];
24
+
25
+ if (Array.isArray(listeners)) {
26
+ listeners.map(listener => {
27
+ if (typeof listener === 'function') {
28
+ listener(data);
29
+ }
30
+ });
31
+ }
32
+ }
33
+
34
+ addListener(event, listener) {
35
+ let listeners = this.eventListeners[event.valueOf()];
36
+
37
+ if (Array.isArray(listeners)) {
38
+ listeners.push(listener);
39
+ } else {
40
+ this.eventListeners[event.valueOf()] = [listener];
41
+ }
42
+ }
43
+
44
+ removeListener(listener) {
45
+ Object.keys(this.eventListeners).map(eventName => {
46
+ let listeners = this.eventListeners[eventName];
47
+
48
+ if (listeners) {
49
+ this._remove(listeners, listener);
50
+
51
+ if (listeners.length === 0) {
52
+ delete this.eventListeners[eventName];
53
+ }
54
+ }
55
+ });
56
+ }
57
+
58
+ _remove(array, item) {
59
+ if (!array) return;
60
+
61
+ for (let i = 0, l = array.length; i < l; i++) {
62
+ if (item === array[i]) array.splice(i, 1);
63
+ }
64
+ }
65
+
66
+ }
67
+
68
+ _defineProperty(EventBus, "_instance", void 0);
69
+ //# sourceMappingURL=EventBus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BusEvent","EventBus","constructor","eventListeners","Instance","_instance","event","data","listeners","valueOf","Array","isArray","map","listener","addListener","push","removeListener","Object","keys","eventName","_remove","length","array","item","i","l","splice"],"sources":["EventBus.ts"],"sourcesContent":["export enum BusEvent {\n REQUEST_RENDERING = 'unitRequestRendering',\n CARD_STATUS_CHANGED = 'cardStatusChanged',\n REQUEST_REFRESH = 'requestRefresh'\n}\n\nexport default class EventBus {\n private static _instance: EventBus;\n\n private eventListeners: { [name: string]: Array<(data: any) => void> } = {}\n\n private constructor() {\n this.eventListeners = {};\n }\n\n public static get Instance() {\n return this._instance || (this._instance = new this());\n }\n\n public event(event: BusEvent, data: any) {\n let listeners = this.eventListeners[event.valueOf()];\n if (Array.isArray(listeners)) {\n listeners.map(listener => {\n if (typeof listener === 'function') {\n listener(data);\n }\n })\n }\n }\n\n public addListener(event: BusEvent, listener: (data: any) => void) {\n let listeners = this.eventListeners[event.valueOf()];\n if (Array.isArray(listeners)) {\n listeners.push(listener);\n } else {\n this.eventListeners[event.valueOf()] = [listener];\n }\n }\n\n public removeListener(listener: (data: any) => void) {\n Object.keys(this.eventListeners).map(eventName => {\n let listeners = this.eventListeners[eventName];\n if (listeners) {\n this._remove(listeners, listener);\n if (listeners.length === 0) {\n delete this.eventListeners[eventName];\n }\n }\n })\n }\n\n private _remove(array: Array<(data: any) => void>, item: (data: string) => void) {\n if (!array) return;\n for (let i = 0, l = array.length; i < l; i++) {\n if (item === array[i]) array.splice(i, 1);\n }\n }\n}\n"],"mappings":";;AAAA,WAAYA,QAAZ;;WAAYA,Q;EAAAA,Q;EAAAA,Q;EAAAA,Q;GAAAA,Q,KAAAA,Q;;AAMZ,eAAe,MAAMC,QAAN,CAAe;EAKpBC,WAAW,GAAG;IAAA,wCAFmD,EAEnD;;IACpB,KAAKC,cAAL,GAAsB,EAAtB;EACD;;EAEyB,WAARC,QAAQ,GAAG;IAC3B,OAAO,KAAKC,SAAL,KAAmB,KAAKA,SAAL,GAAiB,IAAI,IAAJ,EAApC,CAAP;EACD;;EAEMC,KAAK,CAACA,KAAD,EAAkBC,IAAlB,EAA6B;IACvC,IAAIC,SAAS,GAAG,KAAKL,cAAL,CAAoBG,KAAK,CAACG,OAAN,EAApB,CAAhB;;IACA,IAAIC,KAAK,CAACC,OAAN,CAAcH,SAAd,CAAJ,EAA8B;MAC5BA,SAAS,CAACI,GAAV,CAAcC,QAAQ,IAAI;QACxB,IAAI,OAAOA,QAAP,KAAoB,UAAxB,EAAoC;UAClCA,QAAQ,CAACN,IAAD,CAAR;QACD;MACF,CAJD;IAKD;EACF;;EAEMO,WAAW,CAACR,KAAD,EAAkBO,QAAlB,EAAiD;IACjE,IAAIL,SAAS,GAAG,KAAKL,cAAL,CAAoBG,KAAK,CAACG,OAAN,EAApB,CAAhB;;IACA,IAAIC,KAAK,CAACC,OAAN,CAAcH,SAAd,CAAJ,EAA8B;MAC5BA,SAAS,CAACO,IAAV,CAAeF,QAAf;IACD,CAFD,MAEO;MACL,KAAKV,cAAL,CAAoBG,KAAK,CAACG,OAAN,EAApB,IAAuC,CAACI,QAAD,CAAvC;IACD;EACF;;EAEMG,cAAc,CAACH,QAAD,EAAgC;IACnDI,MAAM,CAACC,IAAP,CAAY,KAAKf,cAAjB,EAAiCS,GAAjC,CAAqCO,SAAS,IAAI;MAChD,IAAIX,SAAS,GAAG,KAAKL,cAAL,CAAoBgB,SAApB,CAAhB;;MACA,IAAIX,SAAJ,EAAe;QACb,KAAKY,OAAL,CAAaZ,SAAb,EAAwBK,QAAxB;;QACA,IAAIL,SAAS,CAACa,MAAV,KAAqB,CAAzB,EAA4B;UAC1B,OAAO,KAAKlB,cAAL,CAAoBgB,SAApB,CAAP;QACD;MACF;IACF,CARD;EASD;;EAEOC,OAAO,CAACE,KAAD,EAAoCC,IAApC,EAAkE;IAC/E,IAAI,CAACD,KAAL,EAAY;;IACZ,KAAK,IAAIE,CAAC,GAAG,CAAR,EAAWC,CAAC,GAAGH,KAAK,CAACD,MAA1B,EAAkCG,CAAC,GAAGC,CAAtC,EAAyCD,CAAC,EAA1C,EAA8C;MAC5C,IAAID,IAAI,KAAKD,KAAK,CAACE,CAAD,CAAlB,EAAuBF,KAAK,CAACI,MAAN,CAAaF,CAAb,EAAgB,CAAhB;IACxB;EACF;;AAlD2B;;gBAATvB,Q"}
@@ -0,0 +1,2 @@
1
+ export * from './components';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["index.tsx"],"sourcesContent":["export * from './components'\n"],"mappings":"AAAA,cAAc,cAAd"}
@@ -0,0 +1,10 @@
1
+ import { requireNativeComponent, UIManager, Platform } from 'react-native';
2
+ const LINKING_ERROR = `The package 'unit-react-native-components' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
3
+ ios: "- You have run 'pod install'\n",
4
+ default: ''
5
+ }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo managed workflow\n';
6
+ const ComponentName = 'UnitReactNativeComponentsView';
7
+ export const UnitReactNativeComponentsView = UIManager.getViewManagerConfig(ComponentName) != null ? requireNativeComponent(ComponentName) : () => {
8
+ throw new Error(LINKING_ERROR);
9
+ };
10
+ //# sourceMappingURL=NativeComponentExample.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["requireNativeComponent","UIManager","Platform","LINKING_ERROR","select","ios","default","ComponentName","UnitReactNativeComponentsView","getViewManagerConfig","Error"],"sources":["NativeComponentExample.tsx"],"sourcesContent":["import {\n requireNativeComponent,\n UIManager,\n Platform,\n ViewStyle,\n} from 'react-native';\n\nconst LINKING_ERROR =\n `The package 'unit-react-native-components' doesn't seem to be linked. Make sure: \\n\\n` +\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\n '- You rebuilt the app after installing the package\\n' +\n '- You are not using Expo managed workflow\\n';\n\ntype UnitReactNativeComponentsProps = {\n color: string;\n style: ViewStyle;\n};\n\nconst ComponentName = 'UnitReactNativeComponentsView';\n\nexport const UnitReactNativeComponentsView =\n UIManager.getViewManagerConfig(ComponentName) != null\n ? requireNativeComponent<UnitReactNativeComponentsProps>(ComponentName)\n : () => {\n throw new Error(LINKING_ERROR);\n };\n"],"mappings":"AAAA,SACEA,sBADF,EAEEC,SAFF,EAGEC,QAHF,QAKO,cALP;AAOA,MAAMC,aAAa,GAChB,uFAAD,GACAD,QAAQ,CAACE,MAAT,CAAgB;EAAEC,GAAG,EAAE,gCAAP;EAAyCC,OAAO,EAAE;AAAlD,CAAhB,CADA,GAEA,sDAFA,GAGA,6CAJF;AAWA,MAAMC,aAAa,GAAG,+BAAtB;AAEA,OAAO,MAAMC,6BAA6B,GACxCP,SAAS,CAACQ,oBAAV,CAA+BF,aAA/B,KAAiD,IAAjD,GACIP,sBAAsB,CAAiCO,aAAjC,CAD1B,GAEI,MAAM;EACN,MAAM,IAAIG,KAAJ,CAAUP,aAAV,CAAN;AACD,CALE"}
@@ -0,0 +1,49 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { Dimensions } from 'react-native';
3
+ import { WebView } from 'react-native-webview';
4
+ import EventBus, { BusEvent } from '../helpers/EventBus';
5
+ import html from './html';
6
+ import { UnitMessage } from './webMessages/unitMessages';
7
+ export let WebComponentType;
8
+
9
+ (function (WebComponentType) {
10
+ WebComponentType["card"] = "unit-elements-card";
11
+ WebComponentType["slot"] = "unit-elements-sdk-slot";
12
+ })(WebComponentType || (WebComponentType = {}));
13
+
14
+ export const WebComponent = /*#__PURE__*/React.forwardRef((props, webRef) => {
15
+ const [sourceHtml, setSourceHtml] = useState(null);
16
+ const windowWidth = Dimensions.get('window').width;
17
+ useEffect(() => {
18
+ const component = props.type.valueOf();
19
+ let newHtml = html.replace('<COMPONENT>', `<${component} ${props.params || ''}> </${component}>`);
20
+ newHtml = newHtml.replace('<SCRIPT_FROM_NATIVE>', props.script || '');
21
+ setSourceHtml(newHtml);
22
+ }, [props.params]);
23
+
24
+ const onMessage = e => {
25
+ const message = JSON.parse(e.nativeEvent.data);
26
+
27
+ if (message.type == UnitMessage.UNIT_REQUEST_REFRESH && message.details) {
28
+ EventBus.Instance.event(BusEvent.REQUEST_REFRESH, message.details);
29
+ } else {
30
+ props.onMessage(message);
31
+ }
32
+ };
33
+
34
+ if (!sourceHtml) return null;
35
+ return /*#__PURE__*/React.createElement(WebView, {
36
+ ref: webRef,
37
+ cacheEnabled: false,
38
+ scrollEnabled: false,
39
+ overScrollMode: "never",
40
+ style: {
41
+ width: windowWidth
42
+ },
43
+ source: {
44
+ html: sourceHtml
45
+ },
46
+ onMessage: onMessage
47
+ });
48
+ });
49
+ //# sourceMappingURL=WebComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useState","Dimensions","WebView","EventBus","BusEvent","html","UnitMessage","WebComponentType","WebComponent","forwardRef","props","webRef","sourceHtml","setSourceHtml","windowWidth","get","width","component","type","valueOf","newHtml","replace","params","script","onMessage","e","message","JSON","parse","nativeEvent","data","UNIT_REQUEST_REFRESH","details","Instance","event","REQUEST_REFRESH"],"sources":["WebComponent.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { Dimensions } from 'react-native';\nimport {\n WebView,\n WebViewMessageEvent\n} from 'react-native-webview'\nimport EventBus, { BusEvent } from '../helpers/EventBus';\n\nimport html from './html';\nimport type { CardEvent, CardMessage } from './webMessages/cardMessage';\nimport type { PageEvent, PageMessage } from './webMessages/pageMessage';\nimport { RequestRefreshEvent, UnitEvent, UnitMessage } from './webMessages/unitMessages';\n\nexport type WebViewMessageType =\n | PageMessage\n | CardMessage\n | UnitMessage\n\ntype WebViewEvent =\n | PageEvent\n | UnitEvent\n | CardEvent\n\nexport interface WebViewMessage {\n type: WebViewMessageType,\n details?: WebViewEvent\n}\n\nexport interface WebComponentProps {\n type: WebComponentType;\n params?: string;\n onMessage: (message: WebViewMessage) => void;\n script?: string;\n}\n\nexport enum WebComponentType {\n card = 'unit-elements-card',\n slot = 'unit-elements-sdk-slot'\n}\n\nexport const WebComponent = React.forwardRef<WebView, WebComponentProps>((props, webRef) => {\n const [sourceHtml, setSourceHtml] = useState<string | null>(null)\n\n const windowWidth = Dimensions.get('window').width;\n\n useEffect(() => {\n const component: string = props.type.valueOf()\n let newHtml = html.replace('<COMPONENT>', `<${component} ${props.params || ''}> </${component}>`)\n newHtml = newHtml.replace('<SCRIPT_FROM_NATIVE>', props.script || '')\n setSourceHtml(newHtml)\n }, [props.params])\n\n const onMessage = (e: WebViewMessageEvent) => {\n const message = JSON.parse(e.nativeEvent.data) as WebViewMessage\n\n if (message.type == UnitMessage.UNIT_REQUEST_REFRESH && message.details) {\n EventBus.Instance.event(BusEvent.REQUEST_REFRESH, message.details as RequestRefreshEvent)\n } else {\n props.onMessage(message)\n }\n }\n\n if (!sourceHtml) return null\n\n return (\n <WebView\n ref={webRef}\n cacheEnabled={false}\n scrollEnabled={false}\n overScrollMode=\"never\"\n style={{ width: windowWidth }}\n source={{ html: sourceHtml }}\n onMessage={onMessage} />\n )\n})\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,EAA2BC,QAA3B,QAA2C,OAA3C;AACA,SAASC,UAAT,QAA2B,cAA3B;AACA,SACEC,OADF,QAGO,sBAHP;AAIA,OAAOC,QAAP,IAAmBC,QAAnB,QAAmC,qBAAnC;AAEA,OAAOC,IAAP,MAAiB,QAAjB;AAGA,SAAyCC,WAAzC,QAA4D,4BAA5D;AAwBA,WAAYC,gBAAZ;;WAAYA,gB;EAAAA,gB;EAAAA,gB;GAAAA,gB,KAAAA,gB;;AAKZ,OAAO,MAAMC,YAAY,gBAAGV,KAAK,CAACW,UAAN,CAA6C,CAACC,KAAD,EAAQC,MAAR,KAAmB;EAC1F,MAAM,CAACC,UAAD,EAAaC,aAAb,IAA8Bb,QAAQ,CAAgB,IAAhB,CAA5C;EAEA,MAAMc,WAAW,GAAGb,UAAU,CAACc,GAAX,CAAe,QAAf,EAAyBC,KAA7C;EAEAjB,SAAS,CAAC,MAAM;IACd,MAAMkB,SAAiB,GAAGP,KAAK,CAACQ,IAAN,CAAWC,OAAX,EAA1B;IACA,IAAIC,OAAO,GAAGf,IAAI,CAACgB,OAAL,CAAa,aAAb,EAA6B,IAAGJ,SAAU,IAAGP,KAAK,CAACY,MAAN,IAAgB,EAAG,OAAML,SAAU,GAAhF,CAAd;IACAG,OAAO,GAAGA,OAAO,CAACC,OAAR,CAAgB,sBAAhB,EAAwCX,KAAK,CAACa,MAAN,IAAgB,EAAxD,CAAV;IACAV,aAAa,CAACO,OAAD,CAAb;EACD,CALQ,EAKN,CAACV,KAAK,CAACY,MAAP,CALM,CAAT;;EAOA,MAAME,SAAS,GAAIC,CAAD,IAA4B;IAC5C,MAAMC,OAAO,GAAGC,IAAI,CAACC,KAAL,CAAWH,CAAC,CAACI,WAAF,CAAcC,IAAzB,CAAhB;;IAEA,IAAIJ,OAAO,CAACR,IAAR,IAAgBZ,WAAW,CAACyB,oBAA5B,IAAoDL,OAAO,CAACM,OAAhE,EAAyE;MACvE7B,QAAQ,CAAC8B,QAAT,CAAkBC,KAAlB,CAAwB9B,QAAQ,CAAC+B,eAAjC,EAAkDT,OAAO,CAACM,OAA1D;IACD,CAFD,MAEO;MACLtB,KAAK,CAACc,SAAN,CAAgBE,OAAhB;IACD;EACF,CARD;;EAUA,IAAI,CAACd,UAAL,EAAiB,OAAO,IAAP;EAEjB,oBACE,oBAAC,OAAD;IACE,GAAG,EAAED,MADP;IAEE,YAAY,EAAE,KAFhB;IAGE,aAAa,EAAE,KAHjB;IAIE,cAAc,EAAC,OAJjB;IAKE,KAAK,EAAE;MAAEK,KAAK,EAAEF;IAAT,CALT;IAME,MAAM,EAAE;MAAET,IAAI,EAAEO;IAAR,CANV;IAOE,SAAS,EAAEY;EAPb,EADF;AAUD,CAlC2B,CAArB"}
@@ -0,0 +1,72 @@
1
+ const htmlText = `
2
+ <!DOCTYPE html>
3
+ <html lang="en">
4
+
5
+ <head lang="en">
6
+ <title>Unit Web SDK Demo</title>
7
+ <script>
8
+ window.UnitMobileSDK = true
9
+ </script>
10
+ <script src="https://unit-white-labeled-banking.netlify.app/client-events.js"></script>
11
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0">
12
+ </html>
13
+
14
+ <body style="margin: 0">
15
+ <COMPONENT>
16
+
17
+ <script>
18
+ const postMessageToSDK = (message) => {
19
+ if ('ReactNativeWebView' in window) {
20
+ const messageString = JSON.stringify(message)
21
+ window['ReactNativeWebView'].postMessage(messageString)
22
+ }
23
+ }
24
+
25
+ const postHeight = () => {
26
+ setTimeout(() => {
27
+ const height = window.document.documentElement.getBoundingClientRect().height + 36
28
+ postMessageToSDK({ type: "pageHeight", details: { height } })
29
+ })
30
+ }
31
+
32
+ window.addEventListener('DOMContentLoaded', e => {
33
+ postMessageToSDK({ type: "pageLoaded" })
34
+ });
35
+
36
+ window.addEventListener("unitRequestRendering", (e) => {
37
+ postMessageToSDK({ type: "unitRequestRendering", details: { data: JSON.stringify(e.detail) }})
38
+ });
39
+
40
+ window.addEventListener("unitOnLoad", (e) => {
41
+ postHeight()
42
+ postMessageToSDK({ type: "unitOnLoad" })
43
+ });
44
+
45
+ window.addEventListener("unitRequestCloseFlow", (e) => {
46
+ postMessageToSDK({ type: "unitRequestCloseFlow" })
47
+ });
48
+
49
+ window.addEventListener("unitRequestOpenLink", (e) => {
50
+ postMessageToSDK({ type: "unitRequestOpenLink", details: e.detail })
51
+ });
52
+
53
+ window.addEventListener("unitCardStatusChanged", (e) => {
54
+ const response = e.detail
55
+ response.then((data) => {
56
+ postMessageToSDK({ type: "cardStatusChanged", details: { card: JSON.stringify(data.data) }})
57
+ }).catch((e) => {
58
+ console.log(e)
59
+ })
60
+ });
61
+
62
+ const dispatchRenderingEvent = (details) => {
63
+ const event = new CustomEvent("unitRequestRendering",{ detail: JSON.parse(details) })
64
+ window.dispatchEvent(event)
65
+ }
66
+
67
+ <SCRIPT_FROM_NATIVE>
68
+ </script>
69
+ </body>
70
+ `;
71
+ export default htmlText;
72
+ //# sourceMappingURL=html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["htmlText"],"sources":["html.ts"],"sourcesContent":["const htmlText = `\n <!DOCTYPE html>\n <html lang=\"en\">\n\n <head lang=\"en\">\n <title>Unit Web SDK Demo</title>\n <script>\n window.UnitMobileSDK = true\n </script>\n <script src=\"https://unit-white-labeled-banking.netlify.app/client-events.js\"></script>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=0\">\n </html>\n\n <body style=\"margin: 0\">\n <COMPONENT>\n\n <script>\n const postMessageToSDK = (message) => {\n if ('ReactNativeWebView' in window) {\n const messageString = JSON.stringify(message)\n window['ReactNativeWebView'].postMessage(messageString)\n }\n }\n\n const postHeight = () => {\n setTimeout(() => {\n const height = window.document.documentElement.getBoundingClientRect().height + 36\n postMessageToSDK({ type: \"pageHeight\", details: { height } })\n })\n }\n\n window.addEventListener('DOMContentLoaded', e => {\n postMessageToSDK({ type: \"pageLoaded\" })\n });\n\n window.addEventListener(\"unitRequestRendering\", (e) => {\n postMessageToSDK({ type: \"unitRequestRendering\", details: { data: JSON.stringify(e.detail) }})\n });\n\n window.addEventListener(\"unitOnLoad\", (e) => {\n postHeight()\n postMessageToSDK({ type: \"unitOnLoad\" })\n });\n\n window.addEventListener(\"unitRequestCloseFlow\", (e) => {\n postMessageToSDK({ type: \"unitRequestCloseFlow\" })\n });\n\n window.addEventListener(\"unitRequestOpenLink\", (e) => {\n postMessageToSDK({ type: \"unitRequestOpenLink\", details: e.detail })\n });\n\n window.addEventListener(\"unitCardStatusChanged\", (e) => {\n const response = e.detail\n response.then((data) => {\n postMessageToSDK({ type: \"cardStatusChanged\", details: { card: JSON.stringify(data.data) }})\n }).catch((e) => {\n console.log(e)\n })\n });\n\n const dispatchRenderingEvent = (details) => {\n const event = new CustomEvent(\"unitRequestRendering\",{ detail: JSON.parse(details) })\n window.dispatchEvent(event)\n }\n\n <SCRIPT_FROM_NATIVE>\n </script>\n </body>\n`\n\nexport default htmlText\n"],"mappings":"AAAA,MAAMA,QAAQ,GAAI;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CArEA;AAuEA,eAAeA,QAAf"}
@@ -0,0 +1,6 @@
1
+ export let CardMessage;
2
+
3
+ (function (CardMessage) {
4
+ CardMessage["CARD_STATUS_CHANGE"] = "cardStatusChanged";
5
+ })(CardMessage || (CardMessage = {}));
6
+ //# sourceMappingURL=cardMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CardMessage"],"sources":["cardMessage.ts"],"sourcesContent":["export enum CardMessage {\n CARD_STATUS_CHANGE = 'cardStatusChanged'\n}\n\nexport interface CardStatusChangedEvent {\n card: any;\n}\n\nexport type CardEvent =\n | CardStatusChangedEvent\n"],"mappings":"AAAA,WAAYA,WAAZ;;WAAYA,W;EAAAA,W;GAAAA,W,KAAAA,W"}
@@ -0,0 +1,7 @@
1
+ export let PageMessage;
2
+
3
+ (function (PageMessage) {
4
+ PageMessage["PAGE_LOADED"] = "pageLoaded";
5
+ PageMessage["PAGE_HEIGHT"] = "pageHeight";
6
+ })(PageMessage || (PageMessage = {}));
7
+ //# sourceMappingURL=pageMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PageMessage"],"sources":["pageMessage.ts"],"sourcesContent":["export enum PageMessage {\n PAGE_LOADED = 'pageLoaded',\n PAGE_HEIGHT = 'pageHeight'\n}\n\nexport interface HeightEvent {\n height: number;\n}\n\nexport type PageEvent =\n | HeightEvent\n"],"mappings":"AAAA,WAAYA,WAAZ;;WAAYA,W;EAAAA,W;EAAAA,W;GAAAA,W,KAAAA,W"}
@@ -0,0 +1,10 @@
1
+ export let UnitMessage;
2
+
3
+ (function (UnitMessage) {
4
+ UnitMessage["UNIT_REQUEST_RENDERING"] = "unitRequestRendering";
5
+ UnitMessage["UNIT_REQUEST_REFRESH"] = "unitRequestRefresh";
6
+ UnitMessage["UNIT_REQUEST_CLOSE_FLOW"] = "unitRequestCloseFlow";
7
+ UnitMessage["UNIT_REQUEST_OPEN_LINK"] = "unitRequestOpenLink";
8
+ UnitMessage["UNIT_ON_LOAD"] = "unitOnLoad";
9
+ })(UnitMessage || (UnitMessage = {}));
10
+ //# sourceMappingURL=unitMessages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["UnitMessage"],"sources":["unitMessages.ts"],"sourcesContent":["export enum UnitMessage {\n UNIT_REQUEST_RENDERING = 'unitRequestRendering',\n UNIT_REQUEST_REFRESH = 'unitRequestRefresh',\n UNIT_REQUEST_CLOSE_FLOW = 'unitRequestCloseFlow',\n UNIT_REQUEST_OPEN_LINK = 'unitRequestOpenLink',\n UNIT_ON_LOAD = 'unitOnLoad'\n}\n\nexport interface RequestRenderingData {\n nativePlace: string;\n nativeComponent: string;\n}\nexport interface RequestRenderingEvent {\n data: string;\n}\n\nexport interface RequestRefreshEvent {\n refEvent: string;\n dependencies: string[];\n resourceId: string;\n}\n\nexport interface RequestOpenLinkEvent {\n href: string;\n target: string\n}\n\nexport type UnitEvent =\n | RequestRenderingEvent\n | RequestRefreshEvent\n | RequestOpenLinkEvent\n"],"mappings":"AAAA,WAAYA,WAAZ;;WAAYA,W;EAAAA,W;EAAAA,W;EAAAA,W;EAAAA,W;EAAAA,W;GAAAA,W,KAAAA,W"}
@@ -0,0 +1 @@
1
+ export declare const UNBottomSheetComponent: () => JSX.Element;
@@ -0,0 +1,6 @@
1
+ export interface UNCardComponentProps {
2
+ cardId: string;
3
+ customerToken: string;
4
+ onStatusChanged?: (card: any) => void;
5
+ }
6
+ export declare const UNCardComponent: (props: UNCardComponentProps) => JSX.Element;
@@ -0,0 +1,2 @@
1
+ export * from './Card/CardComponent';
2
+ export * from './BottomSheet/BottomSheetComponent';
@@ -0,0 +1,34 @@
1
+ import { ReactNode } from 'react';
2
+ import PropTypes from 'prop-types';
3
+ export interface BottomSheetProps {
4
+ isOpen: boolean;
5
+ children: ReactNode;
6
+ sliderMaxHeight: number;
7
+ onOpen: () => void;
8
+ onClose: () => void;
9
+ animationDuration: number;
10
+ expandToMaxHeightEnabled: boolean;
11
+ }
12
+ declare const BottomSheet: {
13
+ (props: BottomSheetProps): JSX.Element;
14
+ propTypes: {
15
+ children: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
16
+ isOpen: PropTypes.Requireable<boolean>;
17
+ sliderMaxHeight: PropTypes.Requireable<number>;
18
+ animation: PropTypes.Requireable<(...args: any[]) => any>;
19
+ animationDuration: PropTypes.Requireable<number>;
20
+ onOpen: PropTypes.Requireable<(...args: any[]) => any>;
21
+ onClose: PropTypes.Requireable<(...args: any[]) => any>;
22
+ expandToMaxHeightEnabled: PropTypes.Requireable<boolean>;
23
+ };
24
+ defaultProps: {
25
+ children: JSX.Element;
26
+ isOpen: boolean;
27
+ sliderMaxHeight: number;
28
+ animationDuration: number;
29
+ onOpen: () => null;
30
+ onClose: () => null;
31
+ expandToMaxHeightEnabled: boolean;
32
+ };
33
+ };
34
+ export default BottomSheet;
@@ -0,0 +1,15 @@
1
+ export declare enum BusEvent {
2
+ REQUEST_RENDERING = "unitRequestRendering",
3
+ CARD_STATUS_CHANGED = "cardStatusChanged",
4
+ REQUEST_REFRESH = "requestRefresh"
5
+ }
6
+ export default class EventBus {
7
+ private static _instance;
8
+ private eventListeners;
9
+ private constructor();
10
+ static get Instance(): EventBus;
11
+ event(event: BusEvent, data: any): void;
12
+ addListener(event: BusEvent, listener: (data: any) => void): void;
13
+ removeListener(listener: (data: any) => void): void;
14
+ private _remove;
15
+ }
@@ -0,0 +1 @@
1
+ export * from './components';
@@ -0,0 +1,7 @@
1
+ import { ViewStyle } from 'react-native';
2
+ declare type UnitReactNativeComponentsProps = {
3
+ color: string;
4
+ style: ViewStyle;
5
+ };
6
+ export declare const UnitReactNativeComponentsView: import("react-native").HostComponent<UnitReactNativeComponentsProps> | (() => never);
7
+ export {};