react-native-srschat 0.1.13 → 0.1.15

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 (140) hide show
  1. package/lib/commonjs/components/email.js +243 -0
  2. package/lib/commonjs/components/email.js.map +1 -0
  3. package/lib/commonjs/components/feedback.js +115 -0
  4. package/lib/commonjs/components/feedback.js.map +1 -0
  5. package/lib/commonjs/components/header.js +35 -17
  6. package/lib/commonjs/components/header.js.map +1 -1
  7. package/lib/commonjs/components/input.js +106 -0
  8. package/lib/commonjs/components/input.js.map +1 -0
  9. package/lib/commonjs/components/productCard.js +234 -0
  10. package/lib/commonjs/components/productCard.js.map +1 -0
  11. package/lib/commonjs/components/testing.js +19 -6
  12. package/lib/commonjs/components/testing.js.map +1 -1
  13. package/lib/commonjs/{layout/chatIcon.js → components/welcomeButton.js} +40 -37
  14. package/lib/commonjs/components/welcomeButton.js.map +1 -0
  15. package/lib/commonjs/components/welcomeInput.js +87 -0
  16. package/lib/commonjs/components/welcomeInput.js.map +1 -0
  17. package/lib/commonjs/contexts/AppContext.js +272 -56
  18. package/lib/commonjs/contexts/AppContext.js.map +1 -1
  19. package/lib/commonjs/hooks/{Stream.js → stream.js} +107 -39
  20. package/lib/commonjs/hooks/stream.js.map +1 -0
  21. package/lib/commonjs/hooks/useAsyncStorage.js +36 -0
  22. package/lib/commonjs/hooks/useAsyncStorage.js.map +1 -0
  23. package/lib/commonjs/index.js +13 -6
  24. package/lib/commonjs/index.js.map +1 -1
  25. package/lib/commonjs/layout/disclaimer.js +200 -0
  26. package/lib/commonjs/layout/disclaimer.js.map +1 -0
  27. package/lib/commonjs/layout/ex.js +272 -0
  28. package/lib/commonjs/layout/ex.js.map +1 -0
  29. package/lib/commonjs/layout/icon.js +114 -0
  30. package/lib/commonjs/layout/icon.js.map +1 -0
  31. package/lib/commonjs/layout/layout.js +148 -14
  32. package/lib/commonjs/layout/layout.js.map +1 -1
  33. package/lib/commonjs/layout/welcome.js +135 -0
  34. package/lib/commonjs/layout/welcome.js.map +1 -0
  35. package/lib/commonjs/layout/window.js +205 -0
  36. package/lib/commonjs/layout/window.js.map +1 -0
  37. package/lib/module/components/email.js +233 -0
  38. package/lib/module/components/email.js.map +1 -0
  39. package/lib/module/components/feedback.js +105 -0
  40. package/lib/module/components/feedback.js.map +1 -0
  41. package/lib/module/components/header.js +35 -17
  42. package/lib/module/components/header.js.map +1 -1
  43. package/lib/module/components/input.js +96 -0
  44. package/lib/module/components/input.js.map +1 -0
  45. package/lib/module/components/productCard.js +225 -0
  46. package/lib/module/components/productCard.js.map +1 -0
  47. package/lib/module/components/testing.js +20 -7
  48. package/lib/module/components/testing.js.map +1 -1
  49. package/lib/module/components/welcomeButton.js +48 -0
  50. package/lib/module/components/welcomeButton.js.map +1 -0
  51. package/lib/module/components/welcomeInput.js +77 -0
  52. package/lib/module/components/welcomeInput.js.map +1 -0
  53. package/lib/module/contexts/AppContext.js +272 -57
  54. package/lib/module/contexts/AppContext.js.map +1 -1
  55. package/lib/module/hooks/{Stream.js → stream.js} +107 -39
  56. package/lib/module/hooks/stream.js.map +1 -0
  57. package/lib/module/hooks/useAsyncStorage.js +29 -0
  58. package/lib/module/hooks/useAsyncStorage.js.map +1 -0
  59. package/lib/module/index.js +13 -6
  60. package/lib/module/index.js.map +1 -1
  61. package/lib/module/layout/disclaimer.js +190 -0
  62. package/lib/module/layout/disclaimer.js.map +1 -0
  63. package/lib/module/layout/ex.js +262 -0
  64. package/lib/module/layout/ex.js.map +1 -0
  65. package/lib/module/layout/icon.js +104 -0
  66. package/lib/module/layout/icon.js.map +1 -0
  67. package/lib/module/layout/layout.js +150 -16
  68. package/lib/module/layout/layout.js.map +1 -1
  69. package/lib/module/layout/welcome.js +126 -0
  70. package/lib/module/layout/welcome.js.map +1 -0
  71. package/lib/module/layout/window.js +195 -0
  72. package/lib/module/layout/window.js.map +1 -0
  73. package/lib/typescript/components/email.d.ts +5 -0
  74. package/lib/typescript/components/email.d.ts.map +1 -0
  75. package/lib/typescript/components/feedback.d.ts +6 -0
  76. package/lib/typescript/components/feedback.d.ts.map +1 -0
  77. package/lib/typescript/components/header.d.ts.map +1 -1
  78. package/lib/typescript/components/input.d.ts +6 -0
  79. package/lib/typescript/components/input.d.ts.map +1 -0
  80. package/lib/typescript/components/productCard.d.ts +5 -0
  81. package/lib/typescript/components/productCard.d.ts.map +1 -0
  82. package/lib/typescript/components/testing.d.ts.map +1 -1
  83. package/lib/typescript/components/welcomeButton.d.ts +4 -0
  84. package/lib/typescript/components/welcomeButton.d.ts.map +1 -0
  85. package/lib/typescript/components/welcomeInput.d.ts +6 -0
  86. package/lib/typescript/components/welcomeInput.d.ts.map +1 -0
  87. package/lib/typescript/contexts/AppContext.d.ts +5 -1
  88. package/lib/typescript/contexts/AppContext.d.ts.map +1 -1
  89. package/lib/typescript/hooks/{Stream.d.ts → stream.d.ts} +1 -1
  90. package/lib/typescript/hooks/stream.d.ts.map +1 -0
  91. package/lib/typescript/hooks/useAsyncStorage.d.ts +2 -0
  92. package/lib/typescript/hooks/useAsyncStorage.d.ts.map +1 -0
  93. package/lib/typescript/index.d.ts +2 -1
  94. package/lib/typescript/index.d.ts.map +1 -1
  95. package/lib/typescript/layout/disclaimer.d.ts +5 -0
  96. package/lib/typescript/layout/disclaimer.d.ts.map +1 -0
  97. package/lib/typescript/layout/ex.d.ts +3 -0
  98. package/lib/typescript/layout/ex.d.ts.map +1 -0
  99. package/lib/typescript/layout/{chatIcon.d.ts → icon.d.ts} +1 -1
  100. package/lib/typescript/layout/icon.d.ts.map +1 -0
  101. package/lib/typescript/layout/layout.d.ts +1 -4
  102. package/lib/typescript/layout/layout.d.ts.map +1 -1
  103. package/lib/typescript/layout/welcome.d.ts +5 -0
  104. package/lib/typescript/layout/welcome.d.ts.map +1 -0
  105. package/lib/typescript/layout/window.d.ts +5 -0
  106. package/lib/typescript/layout/window.d.ts.map +1 -0
  107. package/package.json +7 -1
  108. package/src/components/email.js +210 -0
  109. package/src/components/feedback.js +114 -0
  110. package/src/components/header.js +32 -17
  111. package/src/components/input.js +95 -0
  112. package/src/components/productCard.js +240 -0
  113. package/src/components/testing.js +17 -4
  114. package/src/components/welcomeButton.js +51 -0
  115. package/src/components/welcomeInput.js +81 -0
  116. package/src/contexts/AppContext.js +237 -52
  117. package/src/hooks/{Stream.js → stream.js} +123 -41
  118. package/src/hooks/useAsyncStorage.js +33 -0
  119. package/src/index.js +7 -3
  120. package/src/layout/disclaimer.js +187 -0
  121. package/src/layout/ex.js +251 -0
  122. package/src/layout/icon.js +96 -0
  123. package/src/layout/layout.js +137 -10
  124. package/src/layout/welcome.js +124 -0
  125. package/src/layout/window.js +194 -0
  126. package/lib/commonjs/hooks/Stream.js.map +0 -1
  127. package/lib/commonjs/layout/chatIcon.js.map +0 -1
  128. package/lib/commonjs/layout/chatWindow.js +0 -214
  129. package/lib/commonjs/layout/chatWindow.js.map +0 -1
  130. package/lib/module/hooks/Stream.js.map +0 -1
  131. package/lib/module/layout/chatIcon.js +0 -44
  132. package/lib/module/layout/chatIcon.js.map +0 -1
  133. package/lib/module/layout/chatWindow.js +0 -204
  134. package/lib/module/layout/chatWindow.js.map +0 -1
  135. package/lib/typescript/hooks/Stream.d.ts.map +0 -1
  136. package/lib/typescript/layout/chatIcon.d.ts.map +0 -1
  137. package/lib/typescript/layout/chatWindow.d.ts +0 -6
  138. package/lib/typescript/layout/chatWindow.d.ts.map +0 -1
  139. package/src/layout/chatIcon.js +0 -38
  140. package/src/layout/chatWindow.js +0 -207
@@ -0,0 +1,262 @@
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
+ import React, { useState, useEffect, useContext, useRef } from 'react';
3
+ import { Text, StyleSheet, View, TextInput, TouchableOpacity, Platform, KeyboardAvoidingView, Keyboard, Animated, PanResponder, Pressable } from 'react-native';
4
+ import { Header } from '../components/header';
5
+ import { AppContext } from '../contexts/AppContext';
6
+ import Ionicons from 'react-native-vector-icons/Ionicons';
7
+ import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';
8
+ import { Testing } from '../components/testing';
9
+ import { ChatInput } from '../components/input';
10
+ import { useWebSocketMessage } from '../hooks/stream';
11
+ import { ProductCard } from '../components/productCard';
12
+ import Markdown from 'react-native-markdown-display';
13
+ export const ChatWindow = () => {
14
+ const {
15
+ handleSend,
16
+ messages,
17
+ input,
18
+ setInput,
19
+ ghostMessage,
20
+ handleButtonClick,
21
+ setShowModal
22
+ } = useContext(AppContext);
23
+ const scrollViewRef = useRef(null);
24
+ const fadeAnim = useRef(new Animated.Value(0.6)).current;
25
+ const panY = useRef(new Animated.Value(0)).current;
26
+ const isDragging = useRef(false);
27
+ useEffect(() => {
28
+ if (scrollViewRef.current) {
29
+ setTimeout(() => {
30
+ scrollViewRef.current.scrollToEnd({
31
+ animated: false
32
+ });
33
+ }, 100);
34
+ }
35
+ }, []);
36
+ useEffect(() => {
37
+ if (ghostMessage) {
38
+ Animated.loop(Animated.sequence([Animated.timing(fadeAnim, {
39
+ toValue: 1,
40
+ duration: 500,
41
+ useNativeDriver: false
42
+ }), Animated.timing(fadeAnim, {
43
+ toValue: 0.6,
44
+ duration: 500,
45
+ useNativeDriver: false
46
+ })])).start();
47
+ }
48
+ }, [ghostMessage]);
49
+ useWebSocketMessage();
50
+ const headerPanResponder = PanResponder.create({
51
+ onStartShouldSetPanResponder: () => true,
52
+ onMoveShouldSetPanResponder: () => true,
53
+ onPanResponderGrant: () => {
54
+ isDragging.current = true;
55
+ },
56
+ onPanResponderMove: (evt, gestureState) => {
57
+ if (isDragging.current && gestureState.dy > 0) {
58
+ // Downward swipe
59
+ panY.setValue(gestureState.dy);
60
+ }
61
+ },
62
+ onPanResponderRelease: (evt, gestureState) => {
63
+ if (gestureState.dy > 100) {
64
+ // Swiped down enough
65
+ handleClick();
66
+ } else {
67
+ Animated.spring(panY, {
68
+ toValue: 0,
69
+ useNativeDriver: false
70
+ }).start();
71
+ }
72
+ isDragging.current = false;
73
+ }
74
+ });
75
+ const handleClick = () => {
76
+ if ((uiConfig.showIcon ?? true) !== true) {
77
+ setShowModal("Off");
78
+ } else {
79
+ setShowModal("Icon");
80
+ }
81
+ };
82
+ return /*#__PURE__*/React.createElement(View, {
83
+ style: styles.overlay
84
+ }, /*#__PURE__*/React.createElement(Pressable, {
85
+ style: styles.outsideTouchable,
86
+ onPress: () => handleClick()
87
+ }), /*#__PURE__*/React.createElement(Animated.View, {
88
+ style: [styles.container, {
89
+ transform: [{
90
+ translateY: panY
91
+ }]
92
+ }]
93
+ }, /*#__PURE__*/React.createElement(View, _extends({
94
+ style: styles.headerContainer
95
+ }, headerPanResponder.panHandlers), /*#__PURE__*/React.createElement(Header, null)), /*#__PURE__*/React.createElement(KeyboardAwareScrollView, {
96
+ ref: scrollViewRef,
97
+ contentContainerStyle: styles.messagesContent,
98
+ enableOnAndroid: true,
99
+ contentInsetAdjustmentBehavior: "never",
100
+ automaticallyAdjustContentInsets: false,
101
+ contentInset: {
102
+ bottom: 0
103
+ },
104
+ keyboardShouldPersistTaps: "always",
105
+ showsVerticalScrollIndicator: false,
106
+ extraScrollHeight: 0,
107
+ onContentSizeChange: () => {
108
+ var _scrollViewRef$curren;
109
+ (_scrollViewRef$curren = scrollViewRef.current) === null || _scrollViewRef$curren === void 0 || _scrollViewRef$curren.scrollToEnd({
110
+ animated: true
111
+ });
112
+ }
113
+ }, messages.map((msg, i) => /*#__PURE__*/React.createElement(View, {
114
+ key: i,
115
+ style: styles.messageWrapper
116
+ }, msg.type !== "middle" && /*#__PURE__*/React.createElement(View, {
117
+ style: [styles.messageBubble, msg.type === "user" ? styles.userMessage : styles.aiMessage]
118
+ }, /*#__PURE__*/React.createElement(Markdown, {
119
+ style: {
120
+ body: {
121
+ color: msg.type === "user" ? "#ffffff" : "#161616",
122
+ fontSize: 16,
123
+ lineHeight: 22
124
+ }
125
+ }
126
+ }, msg.text)), msg.products && msg.products.length > 0 && msg.products.map((prod, index) => /*#__PURE__*/React.createElement(View, {
127
+ key: index,
128
+ style: styles.productCardWrapper
129
+ }, /*#__PURE__*/React.createElement(ProductCard, {
130
+ prod: prod
131
+ }))), msg.suggested_questions && Array.isArray(msg.questions) && msg.questions.map((question, index) => /*#__PURE__*/React.createElement(TouchableOpacity, {
132
+ key: index,
133
+ style: styles.suggestedQuestionButton,
134
+ onPress: () => handleButtonClick(question)
135
+ }, /*#__PURE__*/React.createElement(Text, {
136
+ style: styles.suggestedQuestionText
137
+ }, question))), ghostMessage && i === messages.length - 1 && /*#__PURE__*/React.createElement(View, {
138
+ style: styles.ghostMessageContainer
139
+ }, /*#__PURE__*/React.createElement(Animated.View, {
140
+ style: [styles.ghostBar, styles.ghostBarShort, {
141
+ opacity: fadeAnim
142
+ }]
143
+ }), /*#__PURE__*/React.createElement(Animated.View, {
144
+ style: [styles.ghostBar, styles.ghostBarLong, {
145
+ opacity: fadeAnim
146
+ }]
147
+ }), /*#__PURE__*/React.createElement(Animated.View, {
148
+ style: [styles.ghostBar, styles.ghostBarMedium, {
149
+ opacity: fadeAnim
150
+ }]
151
+ }))))), /*#__PURE__*/React.createElement(KeyboardAvoidingView, {
152
+ behavior: Platform.OS === 'ios' ? 'padding' : undefined,
153
+ keyboardVerticalOffset: Platform.OS === 'ios' ? 120 : 60
154
+ }, /*#__PURE__*/React.createElement(ChatInput, null))));
155
+ };
156
+ const styles = StyleSheet.create({
157
+ overlay: {
158
+ flex: 1,
159
+ position: 'absolute',
160
+ left: 0,
161
+ right: 0,
162
+ top: 0,
163
+ bottom: 0,
164
+ backgroundColor: 'rgba(0, 0, 0, 0.3)',
165
+ justifyContent: 'flex-end'
166
+ },
167
+ outsideTouchable: {
168
+ flex: 1 // Takes up the space above the chat, allows clicking to close
169
+ },
170
+ container: {
171
+ flex: 1,
172
+ backgroundColor: '#f6f6f6',
173
+ position: 'absolute',
174
+ zIndex: 1000,
175
+ left: 0,
176
+ right: 0,
177
+ bottom: 0,
178
+ top: 140,
179
+ pointerEvents: 'box-none',
180
+ borderTopWidth: 1,
181
+ borderTopColor: '#DDD',
182
+ borderTopLeftRadius: 16,
183
+ borderTopRightRadius: 16,
184
+ overflow: 'hidden'
185
+ },
186
+ headerContainer: {
187
+ alignItems: "center",
188
+ backgroundColor: "#f6f6f6",
189
+ borderTopLeftRadius: 16,
190
+ borderTopRightRadius: 16
191
+ },
192
+ messagesContent: {
193
+ padding: 16,
194
+ justifyContent: 'flex-end'
195
+ },
196
+ messageWrapper: {
197
+ marginBottom: 0
198
+ },
199
+ messageBubble: {
200
+ padding: 6,
201
+ paddingHorizontal: 16,
202
+ borderRadius: 12,
203
+ marginBottom: 5
204
+ },
205
+ userMessage: {
206
+ alignSelf: 'flex-end',
207
+ backgroundColor: "#003764",
208
+ color: "#ffffff"
209
+ },
210
+ aiMessage: {
211
+ alignSelf: 'flex-start',
212
+ backgroundColor: '#FFFFFF',
213
+ width: '100%'
214
+ },
215
+ productCardWrapper: {
216
+ marginTop: 5
217
+ },
218
+ suggestedQuestionButton: {
219
+ backgroundColor: "white",
220
+ borderWidth: 1,
221
+ borderColor: "#004687",
222
+ borderRadius: 18,
223
+ paddingVertical: 10,
224
+ paddingHorizontal: 16,
225
+ marginBottom: 7,
226
+ alignSelf: "flex-start"
227
+ },
228
+ suggestedQuestionText: {
229
+ color: "#004687",
230
+ fontSize: 13,
231
+ textAlign: "left"
232
+ },
233
+ ghostMessageContainer: {
234
+ alignSelf: 'flex-start',
235
+ width: '100%',
236
+ backgroundColor: "#FFFFFF",
237
+ borderRadius: 10,
238
+ borderTopLeftRadius: 0,
239
+ padding: 14,
240
+ marginVertical: 5
241
+ },
242
+ ghostBar: {
243
+ height: 20,
244
+ borderRadius: 10,
245
+ backgroundColor: "#ebebeb",
246
+ marginVertical: 3
247
+ },
248
+ ghostBarShort: {
249
+ width: "50%"
250
+ },
251
+ ghostBarMedium: {
252
+ width: "75%"
253
+ },
254
+ ghostBarLong: {
255
+ width: "100%"
256
+ }
257
+ });
258
+ {/* <Testing
259
+ onProductCardClick={onProductCardClick}
260
+ onAddToCartClick={onAddToCartClick}
261
+ /> */}
262
+ //# sourceMappingURL=ex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useState","useEffect","useContext","useRef","Text","StyleSheet","View","TextInput","TouchableOpacity","Platform","KeyboardAvoidingView","Keyboard","Animated","PanResponder","Pressable","Header","AppContext","Ionicons","KeyboardAwareScrollView","Testing","ChatInput","useWebSocketMessage","ProductCard","Markdown","ChatWindow","handleSend","messages","input","setInput","ghostMessage","handleButtonClick","setShowModal","scrollViewRef","fadeAnim","Value","current","panY","isDragging","setTimeout","scrollToEnd","animated","loop","sequence","timing","toValue","duration","useNativeDriver","start","headerPanResponder","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","onPanResponderGrant","onPanResponderMove","evt","gestureState","dy","setValue","onPanResponderRelease","handleClick","spring","uiConfig","showIcon","createElement","style","styles","overlay","outsideTouchable","onPress","container","transform","translateY","_extends","headerContainer","panHandlers","ref","contentContainerStyle","messagesContent","enableOnAndroid","contentInsetAdjustmentBehavior","automaticallyAdjustContentInsets","contentInset","bottom","keyboardShouldPersistTaps","showsVerticalScrollIndicator","extraScrollHeight","onContentSizeChange","_scrollViewRef$curren","map","msg","i","key","messageWrapper","type","messageBubble","userMessage","aiMessage","body","color","fontSize","lineHeight","text","products","length","prod","index","productCardWrapper","suggested_questions","Array","isArray","questions","question","suggestedQuestionButton","suggestedQuestionText","ghostMessageContainer","ghostBar","ghostBarShort","opacity","ghostBarLong","ghostBarMedium","behavior","OS","undefined","keyboardVerticalOffset","flex","position","left","right","top","backgroundColor","justifyContent","zIndex","pointerEvents","borderTopWidth","borderTopColor","borderTopLeftRadius","borderTopRightRadius","overflow","alignItems","padding","marginBottom","paddingHorizontal","borderRadius","alignSelf","width","marginTop","borderWidth","borderColor","paddingVertical","textAlign","marginVertical","height"],"sourceRoot":"../../../src","sources":["layout/ex.js"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,104 @@
1
+ import React, { useContext } from 'react';
2
+ import { TouchableOpacity, View, StyleSheet, Text } from 'react-native';
3
+ import { AppContext } from '../contexts/AppContext';
4
+ import Ionicons from 'react-native-vector-icons/Ionicons';
5
+ export const ChatIcon = () => {
6
+ var _uiConfig$iconPositio, _uiConfig$iconPositio2;
7
+ const {
8
+ setShowModal,
9
+ messages,
10
+ maintenance,
11
+ disclaimer,
12
+ uiConfig
13
+ } = useContext(AppContext);
14
+
15
+ // Determine position from uiConfig or default
16
+ const iconPosition = {
17
+ bottom: (uiConfig === null || uiConfig === void 0 || (_uiConfig$iconPositio = uiConfig.iconPosition) === null || _uiConfig$iconPositio === void 0 ? void 0 : _uiConfig$iconPositio.bottom) ?? 80,
18
+ right: (uiConfig === null || uiConfig === void 0 || (_uiConfig$iconPositio2 = uiConfig.iconPosition) === null || _uiConfig$iconPositio2 === void 0 ? void 0 : _uiConfig$iconPositio2.right) ?? 20
19
+ };
20
+
21
+ // Determine icon type (bubble or tab)
22
+ const iconType = (uiConfig === null || uiConfig === void 0 ? void 0 : uiConfig.iconType) ?? 'bubble';
23
+ const handleClick = () => {
24
+ if (!disclaimer) {
25
+ setShowModal("Form");
26
+ } else {
27
+ if (messages.length > 1 || maintenance) {
28
+ setShowModal("ChatWindow");
29
+ } else {
30
+ setShowModal("Welcome");
31
+ }
32
+ }
33
+ };
34
+
35
+ // Different styles for bubble and tab
36
+ const containerStyle = iconType === 'tab' ? [styles.tabContainer, iconPosition] : [styles.bubbleContainer, iconPosition];
37
+ return /*#__PURE__*/React.createElement(TouchableOpacity, {
38
+ style: containerStyle,
39
+ onPress: handleClick,
40
+ activeOpacity: 0.7
41
+ }, /*#__PURE__*/React.createElement(View, {
42
+ style: styles.iconContent
43
+ }, /*#__PURE__*/React.createElement(Ionicons, {
44
+ name: "chatbubble-ellipses",
45
+ size: 28,
46
+ color: "white"
47
+ }), iconType === 'tab' && /*#__PURE__*/React.createElement(Text, {
48
+ style: styles.tabText
49
+ }, "Chat with Heritage")));
50
+ };
51
+ const styles = StyleSheet.create({
52
+ // Bubble Style
53
+ bubbleContainer: {
54
+ position: 'absolute',
55
+ width: 60,
56
+ height: 60,
57
+ borderRadius: 30,
58
+ backgroundColor: '#FFA500',
59
+ alignItems: 'center',
60
+ justifyContent: 'center',
61
+ zIndex: 10,
62
+ shadowColor: '#000',
63
+ shadowOffset: {
64
+ width: 0,
65
+ height: 2
66
+ },
67
+ shadowOpacity: 0.2,
68
+ shadowRadius: 3,
69
+ elevation: 5
70
+ },
71
+ // Tab Style
72
+ tabContainer: {
73
+ position: 'absolute',
74
+ width: 130,
75
+ height: 50,
76
+ borderTopLeftRadius: 25,
77
+ borderBottomLeftRadius: 25,
78
+ backgroundColor: '#367CB6',
79
+ flexDirection: 'row',
80
+ alignItems: 'center',
81
+ paddingHorizontal: 15,
82
+ justifyContent: 'flex-start',
83
+ zIndex: 10,
84
+ shadowColor: '#000',
85
+ shadowOffset: {
86
+ width: 0,
87
+ height: 2
88
+ },
89
+ shadowOpacity: 0.2,
90
+ shadowRadius: 3,
91
+ elevation: 5
92
+ },
93
+ iconContent: {
94
+ flexDirection: 'row',
95
+ alignItems: 'center'
96
+ },
97
+ tabText: {
98
+ color: 'white',
99
+ fontSize: 14,
100
+ fontWeight: '500',
101
+ marginLeft: 8
102
+ }
103
+ });
104
+ //# sourceMappingURL=icon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useContext","TouchableOpacity","View","StyleSheet","Text","AppContext","Ionicons","ChatIcon","_uiConfig$iconPositio","_uiConfig$iconPositio2","setShowModal","messages","maintenance","disclaimer","uiConfig","iconPosition","bottom","right","iconType","handleClick","length","containerStyle","styles","tabContainer","bubbleContainer","createElement","style","onPress","activeOpacity","iconContent","name","size","color","tabText","create","position","width","height","borderRadius","backgroundColor","alignItems","justifyContent","zIndex","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation","borderTopLeftRadius","borderBottomLeftRadius","flexDirection","paddingHorizontal","fontSize","fontWeight","marginLeft"],"sourceRoot":"../../../src","sources":["layout/icon.js"],"mappings":"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","ignoreList":[]}
@@ -1,31 +1,165 @@
1
- import React, { useState, useCallback, useContext } from 'react';
2
- import { SafeAreaView, Text, StyleSheet, View, TextInput, ScrollView, KeyboardAvoidingView, Platform, TouchableOpacity, RefreshControl } from 'react-native';
3
- import { ChatWindow } from './chatWindow';
1
+ import React, { useRef, useState, useContext, useEffect } from 'react';
2
+ import { View, Animated, PanResponder, Pressable, StyleSheet } from 'react-native';
4
3
  import { AppContext } from '../contexts/AppContext';
5
- import { ChatIcon } from './chatIcon';
6
- export const Layout = ({
7
- onProductCardClick,
8
- onAddToCartClick
9
- }) => {
4
+
5
+ // Pages
6
+ import { ChatWindow } from './window';
7
+ import { ChatIcon } from './icon';
8
+ import { Welcome } from './welcome';
9
+ import { Disclaimer } from './disclaimer';
10
+ import { EmailForm } from '../components/email';
11
+ export const Layout = () => {
10
12
  const {
11
- showModal
13
+ showModal,
14
+ setShowModal,
15
+ uiConfig,
16
+ disclaimer,
17
+ maintenance,
18
+ messages
12
19
  } = useContext(AppContext);
20
+ const panY = useRef(new Animated.Value(0)).current;
21
+ const isDragging = useRef(false);
22
+ const handleClick = () => {
23
+ if ((uiConfig.showIcon ?? true) !== true) {
24
+ setShowModal("Off");
25
+ } else {
26
+ setShowModal("Icon");
27
+ }
28
+ };
29
+ const panResponder = PanResponder.create({
30
+ onStartShouldSetPanResponder: () => true,
31
+ onMoveShouldSetPanResponder: () => true,
32
+ onPanResponderGrant: () => {
33
+ isDragging.current = true;
34
+ },
35
+ onPanResponderMove: (evt, gestureState) => {
36
+ if (isDragging.current && gestureState.dy >= 0) {
37
+ panY.setValue(gestureState.dy);
38
+ }
39
+ },
40
+ onPanResponderRelease: (evt, gestureState) => {
41
+ if (gestureState.dy > 120) {
42
+ // Close if dragged far enough
43
+ Animated.timing(panY, {
44
+ toValue: 600,
45
+ // Off-screen
46
+ duration: 200,
47
+ useNativeDriver: false
48
+ }).start(() => {
49
+ handleClick();
50
+ panY.setValue(0); // Reset for next time
51
+ });
52
+ } else {
53
+ // Snap back to full height
54
+ Animated.spring(panY, {
55
+ toValue: 0,
56
+ friction: 6,
57
+ tension: 80,
58
+ useNativeDriver: false
59
+ }).start();
60
+ }
61
+ isDragging.current = false;
62
+ }
63
+ });
64
+
65
+ // uiConfig.showIcon, uiConfig.toggleChat
66
+
67
+ useEffect(() => {
68
+ if (!disclaimer) {
69
+ setShowModal("Form");
70
+ } else {
71
+ if (messages.length > 1 || maintenance) {
72
+ setShowModal("ChatWindow");
73
+ } else {
74
+ setShowModal("Welcome");
75
+ }
76
+ }
77
+ }, [uiConfig.toggleChat]);
13
78
  return /*#__PURE__*/React.createElement(View, {
14
- style: styles.container,
79
+ style: styles.layout,
15
80
  pointerEvents: "box-none"
16
- }, showModal === "Icon" ? /*#__PURE__*/React.createElement(ChatIcon, null) : /*#__PURE__*/React.createElement(ChatWindow, {
17
- onProductCardClick: onProductCardClick,
18
- onAddToCartClick: onAddToCartClick
19
- }));
81
+ }, showModal === "Icon" && (uiConfig.showIcon ?? true) && /*#__PURE__*/React.createElement(ChatIcon, null), showModal === "ChatWindow" && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Pressable, {
82
+ style: styles.outsideTouchable,
83
+ onPress: () => handleClick()
84
+ }), /*#__PURE__*/React.createElement(Animated.View, {
85
+ style: [styles.container, {
86
+ transform: [{
87
+ translateY: panY
88
+ }]
89
+ }]
90
+ }, /*#__PURE__*/React.createElement(ChatWindow, {
91
+ panHandlers: panResponder.panHandlers
92
+ }))), showModal === "Welcome" && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Pressable, {
93
+ style: styles.outsideTouchable,
94
+ onPress: () => handleClick()
95
+ }), /*#__PURE__*/React.createElement(Animated.View, {
96
+ style: [styles.container, {
97
+ transform: [{
98
+ translateY: panY
99
+ }]
100
+ }]
101
+ }, /*#__PURE__*/React.createElement(Welcome, {
102
+ panHandlers: panResponder.panHandlers
103
+ }))), showModal === "Form" && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Pressable, {
104
+ style: styles.outsideTouchable,
105
+ onPress: () => handleClick()
106
+ }), /*#__PURE__*/React.createElement(Animated.View, {
107
+ style: [styles.container, {
108
+ transform: [{
109
+ translateY: panY
110
+ }]
111
+ }]
112
+ }, /*#__PURE__*/React.createElement(Disclaimer, {
113
+ panHandlers: panResponder.panHandlers
114
+ }))), showModal === "Email" && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Pressable, {
115
+ style: styles.outsideTouchable,
116
+ onPress: () => handleClick()
117
+ }), /*#__PURE__*/React.createElement(Animated.View, {
118
+ style: [styles.container, {
119
+ transform: [{
120
+ translateY: panY
121
+ }]
122
+ }]
123
+ }, /*#__PURE__*/React.createElement(EmailForm, {
124
+ panHandlers: panResponder.panHandlers
125
+ }))));
20
126
  };
21
127
  const styles = StyleSheet.create({
22
- container: {
128
+ layout: {
23
129
  flex: 1,
24
130
  position: 'absolute',
25
131
  top: 0,
26
132
  left: 0,
27
133
  right: 0,
28
- bottom: 0
134
+ bottom: 0,
135
+ backgroundColor: 'rgba(0, 0, 0, 0)',
136
+ justifyContent: 'flex-end'
137
+ },
138
+ container: {
139
+ flex: 1,
140
+ backgroundColor: '#f6f6f6',
141
+ position: 'absolute',
142
+ zIndex: 1000,
143
+ left: 0,
144
+ right: 0,
145
+ bottom: 0,
146
+ top: 140,
147
+ pointerEvents: 'box-none',
148
+ borderTopWidth: 1,
149
+ borderTopColor: '#DDD',
150
+ borderTopLeftRadius: 16,
151
+ borderTopRightRadius: 16,
152
+ overflow: 'hidden'
153
+ },
154
+ outsideTouchable: {
155
+ flex: 1
156
+ },
157
+ dragHandle: {
158
+ height: 20,
159
+ width: '100%',
160
+ backgroundColor: '#DDD',
161
+ borderTopLeftRadius: 16,
162
+ borderTopRightRadius: 16
29
163
  }
30
164
  });
31
165
  //# sourceMappingURL=layout.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","useCallback","useContext","SafeAreaView","Text","StyleSheet","View","TextInput","ScrollView","KeyboardAvoidingView","Platform","TouchableOpacity","RefreshControl","ChatWindow","AppContext","ChatIcon","Layout","onProductCardClick","onAddToCartClick","showModal","createElement","style","styles","container","pointerEvents","create","flex","position","top","left","right","bottom"],"sourceRoot":"../../../src","sources":["layout/layout.js"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,WAAW,EAAEC,UAAU,QAAQ,OAAO;AAChE,SAASC,YAAY,EAAEC,IAAI,EAAEC,UAAU,EAAEC,IAAI,EAAEC,SAAS,EAAEC,UAAU,EAAEC,oBAAoB,EACxFC,QAAQ,EAAEC,gBAAgB,EAAEC,cAAc,QAAS,cAAc;AACnE,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,UAAU,QAAQ,wBAAwB;AACnD,SAASC,QAAQ,QAAQ,YAAY;AAErC,OAAO,MAAMC,MAAM,GAAGA,CAAC;EAAEC,kBAAkB;EAAEC;AAAiB,CAAC,KAAK;EAChE,MAAM;IAAEC;EAAU,CAAC,GAAGjB,UAAU,CAACY,UAAU,CAAC;EAE5C,oBACEf,KAAA,CAAAqB,aAAA,CAACd,IAAI;IAACe,KAAK,EAAEC,MAAM,CAACC,SAAU;IAACC,aAAa,EAAC;EAAU,GACpDL,SAAS,KAAK,MAAM,gBAAGpB,KAAA,CAAAqB,aAAA,CAACL,QAAQ,MAAE,CAAC,gBAAGhB,KAAA,CAAAqB,aAAA,CAACP,UAAU;IAACI,kBAAkB,EAAEA,kBAAmB;IAACC,gBAAgB,EAAEA;EAAiB,CAAC,CAC3H,CAAC;AAEb,CAAC;AAED,MAAMI,MAAM,GAAGjB,UAAU,CAACoB,MAAM,CAAC;EAC/BF,SAAS,EAAE;IACTG,IAAI,EAAE,CAAC;IACPC,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE;EACV;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useRef","useState","useContext","useEffect","View","Animated","PanResponder","Pressable","StyleSheet","AppContext","ChatWindow","ChatIcon","Welcome","Disclaimer","EmailForm","Layout","showModal","setShowModal","uiConfig","disclaimer","maintenance","messages","panY","Value","current","isDragging","handleClick","showIcon","panResponder","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","onPanResponderGrant","onPanResponderMove","evt","gestureState","dy","setValue","onPanResponderRelease","timing","toValue","duration","useNativeDriver","start","spring","friction","tension","length","toggleChat","createElement","style","styles","layout","pointerEvents","Fragment","outsideTouchable","onPress","container","transform","translateY","panHandlers","flex","position","top","left","right","bottom","backgroundColor","justifyContent","zIndex","borderTopWidth","borderTopColor","borderTopLeftRadius","borderTopRightRadius","overflow","dragHandle","height","width"],"sourceRoot":"../../../src","sources":["layout/layout.js"],"mappings":"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","ignoreList":[]}