vdb-ai-chat 1.0.1 → 1.0.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.
- package/dist/10.chat-widget.js +2 -0
- package/dist/10.chat-widget.js.LICENSE.txt +1 -0
- package/dist/104.chat-widget.js +1 -0
- package/dist/50.chat-widget.js +1 -0
- package/dist/521.chat-widget.js +1 -0
- package/dist/538.chat-widget.js +1 -1
- package/dist/572.chat-widget.js +1 -0
- package/dist/694.chat-widget.js +1 -0
- package/dist/chat-widget.js +1 -1
- package/lib/commonjs/api.js +4 -3
- package/lib/commonjs/api.js.map +1 -1
- package/lib/commonjs/components/BetaNotice.js +38 -0
- package/lib/commonjs/components/BetaNotice.js.map +1 -0
- package/lib/commonjs/components/ChatHeader.js +27 -20
- package/lib/commonjs/components/ChatHeader.js.map +1 -1
- package/lib/commonjs/components/ChatInput.js +20 -21
- package/lib/commonjs/components/ChatInput.js.map +1 -1
- package/lib/commonjs/components/ChatWidget.js +165 -92
- package/lib/commonjs/components/ChatWidget.js.map +1 -1
- package/lib/commonjs/components/LazyProductsFetcher.js +47 -0
- package/lib/commonjs/components/LazyProductsFetcher.js.map +1 -0
- package/lib/commonjs/components/MessageBubble.js +26 -90
- package/lib/commonjs/components/MessageBubble.js.map +1 -1
- package/lib/commonjs/components/MessageMetaRow.js +113 -0
- package/lib/commonjs/components/MessageMetaRow.js.map +1 -0
- package/lib/commonjs/components/ProductsGrid.js +139 -0
- package/lib/commonjs/components/ProductsGrid.js.map +1 -0
- package/lib/commonjs/components/ProductsList.js +22 -126
- package/lib/commonjs/components/ProductsList.js.map +1 -1
- package/lib/commonjs/components/ProductsListView.js +139 -0
- package/lib/commonjs/components/ProductsListView.js.map +1 -0
- package/lib/commonjs/components/SuggestionsRow.js +50 -27
- package/lib/commonjs/components/SuggestionsRow.js.map +1 -1
- package/lib/commonjs/components/utils.js +4 -3
- package/lib/commonjs/components/utils.js.map +1 -1
- package/lib/commonjs/hooks/useInViewport.js +42 -0
- package/lib/commonjs/hooks/useInViewport.js.map +1 -0
- package/lib/commonjs/index.web.js +86 -29
- package/lib/commonjs/index.web.js.map +1 -1
- package/lib/commonjs/theme.js +4 -4
- package/lib/commonjs/theme.js.map +1 -1
- package/lib/module/api.js +4 -3
- package/lib/module/api.js.map +1 -1
- package/lib/module/components/BetaNotice.js +30 -0
- package/lib/module/components/BetaNotice.js.map +1 -0
- package/lib/module/components/ChatHeader.js +27 -20
- package/lib/module/components/ChatHeader.js.map +1 -1
- package/lib/module/components/ChatInput.js +20 -21
- package/lib/module/components/ChatInput.js.map +1 -1
- package/lib/module/components/ChatWidget.js +166 -93
- package/lib/module/components/ChatWidget.js.map +1 -1
- package/lib/module/components/LazyProductsFetcher.js +40 -0
- package/lib/module/components/LazyProductsFetcher.js.map +1 -0
- package/lib/module/components/MessageBubble.js +26 -92
- package/lib/module/components/MessageBubble.js.map +1 -1
- package/lib/module/components/MessageMetaRow.js +105 -0
- package/lib/module/components/MessageMetaRow.js.map +1 -0
- package/lib/module/components/ProductsGrid.js +133 -0
- package/lib/module/components/ProductsGrid.js.map +1 -0
- package/lib/module/components/ProductsList.js +21 -126
- package/lib/module/components/ProductsList.js.map +1 -1
- package/lib/module/components/ProductsListView.js +132 -0
- package/lib/module/components/ProductsListView.js.map +1 -0
- package/lib/module/components/SuggestionsRow.js +51 -28
- package/lib/module/components/SuggestionsRow.js.map +1 -1
- package/lib/module/components/utils.js +4 -3
- package/lib/module/components/utils.js.map +1 -1
- package/lib/module/hooks/useInViewport.js +36 -0
- package/lib/module/hooks/useInViewport.js.map +1 -0
- package/lib/module/index.web.js +86 -29
- package/lib/module/index.web.js.map +1 -1
- package/lib/module/theme.js +4 -4
- package/lib/module/theme.js.map +1 -1
- package/lib/typescript/api.d.ts.map +1 -1
- package/lib/typescript/components/BetaNotice.d.ts +5 -0
- package/lib/typescript/components/BetaNotice.d.ts.map +1 -0
- package/lib/typescript/components/ChatHeader.d.ts +5 -2
- package/lib/typescript/components/ChatHeader.d.ts.map +1 -1
- package/lib/typescript/components/ChatInput.d.ts.map +1 -1
- package/lib/typescript/components/ChatWidget.d.ts.map +1 -1
- package/lib/typescript/components/LazyProductsFetcher.d.ts +9 -0
- package/lib/typescript/components/LazyProductsFetcher.d.ts.map +1 -0
- package/lib/typescript/components/MessageBubble.d.ts +7 -3
- package/lib/typescript/components/MessageBubble.d.ts.map +1 -1
- package/lib/typescript/components/MessageMetaRow.d.ts +14 -0
- package/lib/typescript/components/MessageMetaRow.d.ts.map +1 -0
- package/lib/typescript/components/ProductsGrid.d.ts +10 -0
- package/lib/typescript/components/ProductsGrid.d.ts.map +1 -0
- package/lib/typescript/components/ProductsList.d.ts +4 -2
- package/lib/typescript/components/ProductsList.d.ts.map +1 -1
- package/lib/typescript/components/ProductsListView.d.ts +10 -0
- package/lib/typescript/components/ProductsListView.d.ts.map +1 -0
- package/lib/typescript/components/SuggestionsRow.d.ts +2 -0
- package/lib/typescript/components/SuggestionsRow.d.ts.map +1 -1
- package/lib/typescript/components/utils.d.ts +1 -0
- package/lib/typescript/components/utils.d.ts.map +1 -1
- package/lib/typescript/hooks/useInViewport.d.ts +5 -0
- package/lib/typescript/hooks/useInViewport.d.ts.map +1 -0
- package/lib/typescript/index.web.d.ts +1 -1
- package/lib/typescript/index.web.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +3 -1
- package/lib/typescript/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/api.ts +4 -3
- package/src/components/BetaNotice.tsx +32 -0
- package/src/components/ChatHeader.tsx +32 -18
- package/src/components/ChatInput.tsx +23 -21
- package/src/components/ChatWidget.tsx +249 -159
- package/src/components/LazyProductsFetcher.tsx +41 -0
- package/src/components/MessageBubble.tsx +46 -148
- package/src/components/MessageMetaRow.tsx +199 -0
- package/src/components/ProductsGrid.tsx +163 -0
- package/src/components/ProductsList.tsx +20 -146
- package/src/components/ProductsListView.tsx +149 -0
- package/src/components/SuggestionsRow.tsx +61 -32
- package/src/components/utils.ts +6 -4
- package/src/hooks/useInViewport.ts +38 -0
- package/src/index.web.tsx +87 -32
- package/src/theme.ts +4 -4
- package/src/types.ts +3 -2
- package/dist/751.chat-widget.js +0 -1
- package/lib/commonjs/contexts/SegmentClientContext.js +0 -19
- package/lib/commonjs/contexts/SegmentClientContext.js.map +0 -1
- package/lib/module/contexts/SegmentClientContext.js +0 -10
- package/lib/module/contexts/SegmentClientContext.js.map +0 -1
- package/lib/typescript/contexts/SegmentClientContext.d.ts +0 -9
- package/lib/typescript/contexts/SegmentClientContext.d.ts.map +0 -1
- package/src/contexts/SegmentClientContext.tsx +0 -20
|
@@ -6,38 +6,32 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.MessageBubble = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
|
-
var
|
|
9
|
+
var _SuggestionsRow = _interopRequireDefault(require("./SuggestionsRow"));
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
11
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
11
|
-
// Use expo-image on native if available, fallback to RN Image
|
|
12
|
-
let ImageComponent = _reactNative.Image;
|
|
13
|
-
if (_reactNative.Platform.OS !== "web") {
|
|
14
|
-
try {
|
|
15
|
-
const ExpoImage = require("expo-image").Image;
|
|
16
|
-
if (ExpoImage) ImageComponent = ExpoImage;
|
|
17
|
-
} catch {
|
|
18
|
-
// expo-image not installed, use React Native Image
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
12
|
const MessageBubbleComponent = ({
|
|
22
13
|
message,
|
|
23
14
|
theme,
|
|
24
|
-
|
|
15
|
+
priceMode,
|
|
25
16
|
handleFeedbackAction,
|
|
26
17
|
onReloadResults,
|
|
27
18
|
reloading,
|
|
28
|
-
hasResults
|
|
19
|
+
hasResults,
|
|
20
|
+
totalResults,
|
|
21
|
+
shownResults,
|
|
22
|
+
onSuggestionSelect,
|
|
23
|
+
isLatest,
|
|
24
|
+
isTyping
|
|
29
25
|
}) => {
|
|
30
26
|
const isUser = message.role === "user";
|
|
31
|
-
const isValidMessageId = typeof message.id === "string" && message.id.length > 0 && !message.id.startsWith("bot-loading-");
|
|
32
|
-
const canFeedback = message.role === "assistant" && !message.isLoading && isValidMessageId && !!conversationId;
|
|
33
27
|
return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
34
28
|
style: [styles.container, isUser ? styles.alignRight : styles.alignLeft]
|
|
35
29
|
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
36
30
|
style: [styles.bubble, {
|
|
37
31
|
backgroundColor: isUser ? theme.userBubbleColor : theme.botBubbleColor,
|
|
38
|
-
borderRadius: theme.borderRadius ||
|
|
39
|
-
|
|
40
|
-
|
|
32
|
+
borderRadius: theme.borderRadius || 8,
|
|
33
|
+
borderBottomRightRadius: isUser ? 0 : theme.borderRadius,
|
|
34
|
+
borderBottomLeftRadius: isUser ? theme.borderRadius : 0
|
|
41
35
|
}]
|
|
42
36
|
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
43
37
|
style: [styles.text, {
|
|
@@ -45,61 +39,13 @@ const MessageBubbleComponent = ({
|
|
|
45
39
|
fontFamily: theme.fontFamily,
|
|
46
40
|
fontSize: theme.fontSize
|
|
47
41
|
}]
|
|
48
|
-
}, message.text || "")), (
|
|
49
|
-
style: styles.
|
|
50
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
alignItems: "center",
|
|
56
|
-
gap: 6
|
|
57
|
-
}
|
|
58
|
-
}, /*#__PURE__*/_react.default.createElement(_reactNative.ActivityIndicator, {
|
|
59
|
-
size: "small",
|
|
60
|
-
color: "#1a73e8"
|
|
61
|
-
}), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
62
|
-
style: {
|
|
63
|
-
fontSize: 12,
|
|
64
|
-
color: "#1a73e8",
|
|
65
|
-
textDecorationLine: "underline"
|
|
66
|
-
}
|
|
67
|
-
}, "Loading\u2026")) : /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
68
|
-
onPress: () => onReloadResults?.(message),
|
|
69
|
-
disabled: reloading
|
|
70
|
-
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
71
|
-
style: {
|
|
72
|
-
fontSize: 12,
|
|
73
|
-
color: "#1a73e8",
|
|
74
|
-
textDecorationLine: "underline"
|
|
75
|
-
}
|
|
76
|
-
}, "Reload Results"))), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
77
|
-
style: styles.likeDislikeContainer
|
|
78
|
-
}, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
79
|
-
onPress: () => handleFeedbackAction(_utils.FeedbackAction.LIKE, String(conversationId), message.id),
|
|
80
|
-
disabled: !canFeedback
|
|
81
|
-
}, /*#__PURE__*/_react.default.createElement(ImageComponent, {
|
|
82
|
-
source: {
|
|
83
|
-
uri: message.reaction === _utils.FeedbackAction.LIKE ? "https://cdn.vdbapp.com/ai/chat-widget/assets/img/like-filled.svg" : "https://cdn.vdbapp.com/ai/chat-widget/assets/img/like.svg"
|
|
84
|
-
},
|
|
85
|
-
resizeMode: "contain",
|
|
86
|
-
style: {
|
|
87
|
-
width: 16,
|
|
88
|
-
height: 16
|
|
89
|
-
}
|
|
90
|
-
})), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
91
|
-
onPress: () => handleFeedbackAction(_utils.FeedbackAction.DISLIKE, String(conversationId), message.id),
|
|
92
|
-
disabled: !canFeedback
|
|
93
|
-
}, /*#__PURE__*/_react.default.createElement(ImageComponent, {
|
|
94
|
-
source: {
|
|
95
|
-
uri: message.reaction === _utils.FeedbackAction.DISLIKE ? "https://cdn.vdbapp.com/ai/chat-widget/assets/img/dislike-filled.svg" : "https://cdn.vdbapp.com/ai/chat-widget/assets/img/dislike.svg"
|
|
96
|
-
},
|
|
97
|
-
resizeMode: "contain",
|
|
98
|
-
style: {
|
|
99
|
-
width: 16,
|
|
100
|
-
height: 16
|
|
101
|
-
}
|
|
102
|
-
})))));
|
|
42
|
+
}, message.text || "", message.role === "assistant" && hasResults && typeof totalResults === "number" ? ` Found ${Number(totalResults).toLocaleString()} diamonds (showing first ${shownResults})` : null), message.role === "assistant" && Array.isArray(message.suggestions) && message.suggestions.length > 0 && isLatest && !isTyping && !(message.search_payload && typeof message.search_payload === "object" && Object.keys(message.search_payload).length > 0) && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
43
|
+
style: styles.suggestionsWrapper
|
|
44
|
+
}, /*#__PURE__*/_react.default.createElement(_SuggestionsRow.default, {
|
|
45
|
+
suggestions: message.suggestions,
|
|
46
|
+
onSelect: v => onSuggestionSelect?.(v),
|
|
47
|
+
variant: "inline"
|
|
48
|
+
}))));
|
|
103
49
|
};
|
|
104
50
|
|
|
105
51
|
// Memoize to prevent re-renders when parent re-renders
|
|
@@ -107,21 +53,9 @@ const MessageBubble = exports.MessageBubble = /*#__PURE__*/(0, _react.memo)(Mess
|
|
|
107
53
|
const styles = _reactNative.StyleSheet.create({
|
|
108
54
|
container: {
|
|
109
55
|
paddingHorizontal: 8,
|
|
110
|
-
marginVertical:
|
|
56
|
+
marginVertical: 0,
|
|
111
57
|
width: "100%"
|
|
112
58
|
},
|
|
113
|
-
rowContainer: {
|
|
114
|
-
flexDirection: "row",
|
|
115
|
-
justifyContent: "space-between",
|
|
116
|
-
alignItems: "center",
|
|
117
|
-
gap: 12,
|
|
118
|
-
marginTop: 8,
|
|
119
|
-
marginBottom: 8
|
|
120
|
-
},
|
|
121
|
-
likeDislikeContainer: {
|
|
122
|
-
flexDirection: "row",
|
|
123
|
-
gap: 12
|
|
124
|
-
},
|
|
125
59
|
alignRight: {
|
|
126
60
|
alignItems: "flex-end"
|
|
127
61
|
},
|
|
@@ -136,11 +70,13 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
136
70
|
text: {
|
|
137
71
|
lineHeight: 20
|
|
138
72
|
},
|
|
139
|
-
|
|
140
|
-
fontSize: 12,
|
|
141
|
-
color: "#666",
|
|
73
|
+
resultsInfo: {
|
|
142
74
|
marginTop: 4,
|
|
143
|
-
|
|
75
|
+
fontSize: 12,
|
|
76
|
+
color: "#666"
|
|
77
|
+
},
|
|
78
|
+
suggestionsWrapper: {
|
|
79
|
+
marginTop: 8
|
|
144
80
|
}
|
|
145
81
|
});
|
|
146
82
|
//# sourceMappingURL=MessageBubble.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_SuggestionsRow","_interopRequireDefault","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","MessageBubbleComponent","message","theme","priceMode","handleFeedbackAction","onReloadResults","reloading","hasResults","totalResults","shownResults","onSuggestionSelect","isLatest","isTyping","isUser","role","createElement","View","style","styles","container","alignRight","alignLeft","bubble","backgroundColor","userBubbleColor","botBubbleColor","borderRadius","borderBottomRightRadius","borderBottomLeftRadius","Text","text","color","userTextColor","botTextColor","fontFamily","fontSize","Number","toLocaleString","Array","isArray","suggestions","length","search_payload","keys","suggestionsWrapper","onSelect","v","variant","MessageBubble","exports","memo","StyleSheet","create","paddingHorizontal","marginVertical","width","alignItems","maxWidth","paddingVertical","lineHeight","resultsInfo","marginTop"],"sourceRoot":"../../../src","sources":["components/MessageBubble.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.MessageMetaRow = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _utils = require("./utils");
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
let ImageComponent = _reactNative.Image;
|
|
12
|
+
if (_reactNative.Platform.OS !== "web") {
|
|
13
|
+
try {
|
|
14
|
+
const ExpoImage = require("expo-image").Image;
|
|
15
|
+
if (ExpoImage) ImageComponent = ExpoImage;
|
|
16
|
+
} catch {}
|
|
17
|
+
}
|
|
18
|
+
const MessageMetaRow = ({
|
|
19
|
+
message,
|
|
20
|
+
priceMode,
|
|
21
|
+
handleFeedbackAction,
|
|
22
|
+
onReloadResults,
|
|
23
|
+
reloading,
|
|
24
|
+
hasResults
|
|
25
|
+
}) => {
|
|
26
|
+
const isUser = message.role === "user";
|
|
27
|
+
const [conversationId, setConversationId] = _react.default.useState(null);
|
|
28
|
+
_react.default.useEffect(() => {
|
|
29
|
+
const fetchId = async () => {
|
|
30
|
+
const id = await (0, _utils.fetchConversationId)(priceMode);
|
|
31
|
+
setConversationId(id);
|
|
32
|
+
};
|
|
33
|
+
fetchId();
|
|
34
|
+
}, [priceMode]);
|
|
35
|
+
const isValidMessageId = typeof message.id === "string" && message.id.length > 0 && !message.id.startsWith("bot-loading-");
|
|
36
|
+
const canFeedback = message.role === "assistant" && !message.isLoading && isValidMessageId && !!conversationId;
|
|
37
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
38
|
+
style: [styles.rowContainer, isUser ? styles.alignRight : styles.alignLeft]
|
|
39
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
40
|
+
style: styles.timeContainer
|
|
41
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
42
|
+
style: styles.timeText
|
|
43
|
+
}, (0, _utils.formatToTime)(message.createdAt))), canFeedback ? /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
44
|
+
style: styles.likeDislikeContainer
|
|
45
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
|
|
46
|
+
style: state => [styles.borderButton, state?.hovered && styles.borderButtonHover],
|
|
47
|
+
onPress: () => handleFeedbackAction(_utils.FeedbackAction.LIKE, String(conversationId), message.id),
|
|
48
|
+
disabled: !canFeedback
|
|
49
|
+
}, /*#__PURE__*/_react.default.createElement(ImageComponent, {
|
|
50
|
+
source: {
|
|
51
|
+
uri: message.reaction === _utils.FeedbackAction.LIKE ? "https://cdn.vdbapp.com/ai/chat-widget/assets/img/like-filled.svg" : "https://cdn.vdbapp.com/ai/chat-widget/assets/img/like.svg"
|
|
52
|
+
},
|
|
53
|
+
resizeMode: "contain",
|
|
54
|
+
style: {
|
|
55
|
+
width: 16,
|
|
56
|
+
height: 16
|
|
57
|
+
}
|
|
58
|
+
})), /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
|
|
59
|
+
style: state => [styles.borderButton, state?.hovered && styles.borderButtonHover],
|
|
60
|
+
onPress: () => handleFeedbackAction(_utils.FeedbackAction.DISLIKE, String(conversationId), message.id),
|
|
61
|
+
disabled: !canFeedback
|
|
62
|
+
}, /*#__PURE__*/_react.default.createElement(ImageComponent, {
|
|
63
|
+
source: {
|
|
64
|
+
uri: message.reaction === _utils.FeedbackAction.DISLIKE ? "https://cdn.vdbapp.com/ai/chat-widget/assets/img/dislike-filled.svg" : "https://cdn.vdbapp.com/ai/chat-widget/assets/img/dislike.svg"
|
|
65
|
+
},
|
|
66
|
+
resizeMode: "contain",
|
|
67
|
+
style: {
|
|
68
|
+
width: 16,
|
|
69
|
+
height: 16
|
|
70
|
+
}
|
|
71
|
+
}))) : null);
|
|
72
|
+
};
|
|
73
|
+
exports.MessageMetaRow = MessageMetaRow;
|
|
74
|
+
const styles = _reactNative.StyleSheet.create({
|
|
75
|
+
rowContainer: {
|
|
76
|
+
flexDirection: "row",
|
|
77
|
+
justifyContent: "space-between",
|
|
78
|
+
alignItems: "center",
|
|
79
|
+
gap: 6,
|
|
80
|
+
marginHorizontal: 8,
|
|
81
|
+
marginTop: 0,
|
|
82
|
+
marginBottom: 12
|
|
83
|
+
},
|
|
84
|
+
alignRight: {
|
|
85
|
+
alignSelf: "flex-end"
|
|
86
|
+
},
|
|
87
|
+
alignLeft: {
|
|
88
|
+
alignSelf: "flex-start"
|
|
89
|
+
},
|
|
90
|
+
likeDislikeContainer: {
|
|
91
|
+
flexDirection: "row",
|
|
92
|
+
gap: 6
|
|
93
|
+
},
|
|
94
|
+
timeContainer: {
|
|
95
|
+
margin: 0
|
|
96
|
+
},
|
|
97
|
+
borderButton: {
|
|
98
|
+
borderWidth: 1,
|
|
99
|
+
borderColor: "#D5D5DC",
|
|
100
|
+
borderRadius: 8,
|
|
101
|
+
paddingHorizontal: 4,
|
|
102
|
+
paddingVertical: 4
|
|
103
|
+
},
|
|
104
|
+
borderButtonHover: {
|
|
105
|
+
backgroundColor: "#EDEDF2"
|
|
106
|
+
},
|
|
107
|
+
timeText: {
|
|
108
|
+
fontSize: 12,
|
|
109
|
+
color: "#666"
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
var _default = exports.default = MessageMetaRow;
|
|
113
|
+
//# sourceMappingURL=MessageMetaRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_utils","e","__esModule","default","ImageComponent","Image","Platform","OS","ExpoImage","MessageMetaRow","message","priceMode","handleFeedbackAction","onReloadResults","reloading","hasResults","isUser","role","conversationId","setConversationId","React","useState","useEffect","fetchId","id","fetchConversationId","isValidMessageId","length","startsWith","canFeedback","isLoading","createElement","View","style","styles","rowContainer","alignRight","alignLeft","timeContainer","Text","timeText","formatToTime","createdAt","likeDislikeContainer","Pressable","state","borderButton","hovered","borderButtonHover","onPress","FeedbackAction","LIKE","String","disabled","source","uri","reaction","resizeMode","width","height","DISLIKE","exports","StyleSheet","create","flexDirection","justifyContent","alignItems","gap","marginHorizontal","marginTop","marginBottom","alignSelf","margin","borderWidth","borderColor","borderRadius","paddingHorizontal","paddingVertical","backgroundColor","fontSize","color","_default"],"sourceRoot":"../../../src","sources":["components/MessageMetaRow.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
10
|
+
// Use expo-image on native if available, fallback to RN Image
|
|
11
|
+
let ImageComponent = _reactNative.Image;
|
|
12
|
+
if (_reactNative.Platform.OS !== "web") {
|
|
13
|
+
try {
|
|
14
|
+
const ExpoImage = require("expo-image").Image;
|
|
15
|
+
if (ExpoImage) ImageComponent = ExpoImage;
|
|
16
|
+
} catch {
|
|
17
|
+
// expo-image not installed, use React Native Image
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const ProductsGridComponent = ({
|
|
21
|
+
data,
|
|
22
|
+
onViewAll,
|
|
23
|
+
onItemPress
|
|
24
|
+
}) => {
|
|
25
|
+
if (!data || !data.length) return null;
|
|
26
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
27
|
+
style: styles.wrapper
|
|
28
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.ScrollView, {
|
|
29
|
+
horizontal: true,
|
|
30
|
+
showsHorizontalScrollIndicator: false,
|
|
31
|
+
contentContainerStyle: styles.listContent
|
|
32
|
+
}, data.map(item => /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
33
|
+
key: item.id,
|
|
34
|
+
onPress: () => {
|
|
35
|
+
onItemPress?.(item);
|
|
36
|
+
}
|
|
37
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
38
|
+
key: item.id,
|
|
39
|
+
style: styles.card
|
|
40
|
+
}, item.image_thumb_url ? /*#__PURE__*/_react.default.createElement(ImageComponent, {
|
|
41
|
+
style: styles.image,
|
|
42
|
+
source: {
|
|
43
|
+
uri: item.image_thumb_url
|
|
44
|
+
}
|
|
45
|
+
}) : null, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
46
|
+
style: styles.content
|
|
47
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
48
|
+
numberOfLines: 2,
|
|
49
|
+
style: styles.title
|
|
50
|
+
}, item.short_title), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
51
|
+
style: styles.price
|
|
52
|
+
}, "$", item.total_sales_price)))))), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
53
|
+
style: styles.button,
|
|
54
|
+
activeOpacity: 0.8,
|
|
55
|
+
onPress: onViewAll
|
|
56
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
57
|
+
style: styles.buttonText
|
|
58
|
+
}, "View All ", ">>")));
|
|
59
|
+
};
|
|
60
|
+
const styles = _reactNative.StyleSheet.create({
|
|
61
|
+
wrapper: {
|
|
62
|
+
paddingHorizontal: 12,
|
|
63
|
+
marginHorizontal: 12,
|
|
64
|
+
marginBottom: 12,
|
|
65
|
+
paddingTop: 6,
|
|
66
|
+
paddingBottom: 14,
|
|
67
|
+
backgroundColor: "#fff",
|
|
68
|
+
borderRadius: 8,
|
|
69
|
+
borderWidth: 1,
|
|
70
|
+
borderColor: "#e8e8e8",
|
|
71
|
+
elevation: 3,
|
|
72
|
+
shadowColor: "#000",
|
|
73
|
+
shadowOpacity: 0.08,
|
|
74
|
+
shadowOffset: {
|
|
75
|
+
width: 0,
|
|
76
|
+
height: 2
|
|
77
|
+
},
|
|
78
|
+
shadowRadius: 6
|
|
79
|
+
},
|
|
80
|
+
listContent: {
|
|
81
|
+
gap: 12,
|
|
82
|
+
paddingVertical: 6
|
|
83
|
+
},
|
|
84
|
+
card: {
|
|
85
|
+
width: 150,
|
|
86
|
+
backgroundColor: "#fff",
|
|
87
|
+
borderRadius: 14,
|
|
88
|
+
overflow: "hidden",
|
|
89
|
+
borderColor: "#e8e8e8",
|
|
90
|
+
borderWidth: 1,
|
|
91
|
+
elevation: 3,
|
|
92
|
+
shadowColor: "#000",
|
|
93
|
+
shadowOpacity: 0.08,
|
|
94
|
+
shadowOffset: {
|
|
95
|
+
width: 0,
|
|
96
|
+
height: 2
|
|
97
|
+
},
|
|
98
|
+
shadowRadius: 6
|
|
99
|
+
},
|
|
100
|
+
image: {
|
|
101
|
+
width: "100%",
|
|
102
|
+
height: 120,
|
|
103
|
+
borderBottomWidth: 1,
|
|
104
|
+
borderBottomColor: "#e8e8e8"
|
|
105
|
+
},
|
|
106
|
+
content: {
|
|
107
|
+
padding: 10,
|
|
108
|
+
gap: 4
|
|
109
|
+
},
|
|
110
|
+
title: {
|
|
111
|
+
fontSize: 13,
|
|
112
|
+
color: "#222",
|
|
113
|
+
fontWeight: "500"
|
|
114
|
+
},
|
|
115
|
+
price: {
|
|
116
|
+
marginTop: 4,
|
|
117
|
+
fontSize: 14,
|
|
118
|
+
fontWeight: "700",
|
|
119
|
+
color: "#000"
|
|
120
|
+
},
|
|
121
|
+
button: {
|
|
122
|
+
marginTop: 12,
|
|
123
|
+
alignSelf: "center",
|
|
124
|
+
paddingHorizontal: 20,
|
|
125
|
+
paddingVertical: 8,
|
|
126
|
+
backgroundColor: "#804195",
|
|
127
|
+
borderRadius: 20,
|
|
128
|
+
width: 300,
|
|
129
|
+
alignItems: "center"
|
|
130
|
+
},
|
|
131
|
+
buttonText: {
|
|
132
|
+
color: "#fff",
|
|
133
|
+
fontSize: 14,
|
|
134
|
+
fontWeight: "600"
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
const ProductsGrid = /*#__PURE__*/(0, _react.memo)(ProductsGridComponent);
|
|
138
|
+
var _default = exports.default = ProductsGrid;
|
|
139
|
+
//# sourceMappingURL=ProductsGrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_react","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ImageComponent","Image","Platform","OS","ExpoImage","ProductsGridComponent","data","onViewAll","onItemPress","length","createElement","View","style","styles","wrapper","ScrollView","horizontal","showsHorizontalScrollIndicator","contentContainerStyle","listContent","map","item","TouchableOpacity","key","id","onPress","card","image_thumb_url","image","source","uri","content","Text","numberOfLines","title","short_title","price","total_sales_price","button","activeOpacity","buttonText","StyleSheet","create","paddingHorizontal","marginHorizontal","marginBottom","paddingTop","paddingBottom","backgroundColor","borderRadius","borderWidth","borderColor","elevation","shadowColor","shadowOpacity","shadowOffset","width","height","shadowRadius","gap","paddingVertical","overflow","borderBottomWidth","borderBottomColor","padding","fontSize","color","fontWeight","marginTop","alignSelf","alignItems","ProductsGrid","memo","_default","exports"],"sourceRoot":"../../../src","sources":["components/ProductsGrid.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,136 +4,32 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (_reactNative.Platform.OS !== "web") {
|
|
13
|
-
try {
|
|
14
|
-
const ExpoImage = require("expo-image").Image;
|
|
15
|
-
if (ExpoImage) ImageComponent = ExpoImage;
|
|
16
|
-
} catch {
|
|
17
|
-
// expo-image not installed, use React Native Image
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
const ProductsListComponent = ({
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _ProductsGrid = _interopRequireDefault(require("./ProductsGrid"));
|
|
9
|
+
var _ProductsListView = _interopRequireDefault(require("./ProductsListView"));
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
const ProductsList = ({
|
|
21
12
|
data,
|
|
22
13
|
onViewAll,
|
|
23
|
-
onItemPress
|
|
14
|
+
onItemPress,
|
|
15
|
+
variant = "list",
|
|
16
|
+
totalResults
|
|
24
17
|
}) => {
|
|
25
18
|
if (!data || !data.length) return null;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
key: item.id,
|
|
34
|
-
onPress: () => {
|
|
35
|
-
onItemPress?.(item);
|
|
36
|
-
}
|
|
37
|
-
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
38
|
-
key: item.id,
|
|
39
|
-
style: styles.card
|
|
40
|
-
}, item.image_thumb_url ? /*#__PURE__*/_react.default.createElement(ImageComponent, {
|
|
41
|
-
style: styles.image,
|
|
42
|
-
source: {
|
|
43
|
-
uri: item.image_thumb_url
|
|
44
|
-
}
|
|
45
|
-
}) : null, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
46
|
-
style: styles.content
|
|
47
|
-
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
48
|
-
numberOfLines: 2,
|
|
49
|
-
style: styles.title
|
|
50
|
-
}, item.short_title), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
51
|
-
style: styles.price
|
|
52
|
-
}, "$", item.total_sales_price)))))), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
53
|
-
style: styles.button,
|
|
54
|
-
activeOpacity: 0.8,
|
|
55
|
-
onPress: onViewAll
|
|
56
|
-
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
57
|
-
style: styles.buttonText
|
|
58
|
-
}, "View All ", ">>")));
|
|
59
|
-
};
|
|
60
|
-
const styles = _reactNative.StyleSheet.create({
|
|
61
|
-
wrapper: {
|
|
62
|
-
paddingHorizontal: 12,
|
|
63
|
-
marginHorizontal: 12,
|
|
64
|
-
marginBottom: 12,
|
|
65
|
-
paddingTop: 6,
|
|
66
|
-
paddingBottom: 14,
|
|
67
|
-
backgroundColor: "#fff",
|
|
68
|
-
borderRadius: 8,
|
|
69
|
-
borderWidth: 1,
|
|
70
|
-
borderColor: "#e8e8e8",
|
|
71
|
-
elevation: 3,
|
|
72
|
-
shadowColor: "#000",
|
|
73
|
-
shadowOpacity: 0.08,
|
|
74
|
-
shadowOffset: {
|
|
75
|
-
width: 0,
|
|
76
|
-
height: 2
|
|
77
|
-
},
|
|
78
|
-
shadowRadius: 6
|
|
79
|
-
},
|
|
80
|
-
listContent: {
|
|
81
|
-
gap: 12,
|
|
82
|
-
paddingVertical: 6
|
|
83
|
-
},
|
|
84
|
-
card: {
|
|
85
|
-
width: 150,
|
|
86
|
-
backgroundColor: "#fff",
|
|
87
|
-
borderRadius: 14,
|
|
88
|
-
overflow: "hidden",
|
|
89
|
-
borderColor: "#e8e8e8",
|
|
90
|
-
borderWidth: 1,
|
|
91
|
-
elevation: 3,
|
|
92
|
-
shadowColor: "#000",
|
|
93
|
-
shadowOpacity: 0.08,
|
|
94
|
-
shadowOffset: {
|
|
95
|
-
width: 0,
|
|
96
|
-
height: 2
|
|
97
|
-
},
|
|
98
|
-
shadowRadius: 6
|
|
99
|
-
},
|
|
100
|
-
image: {
|
|
101
|
-
width: "100%",
|
|
102
|
-
height: 120,
|
|
103
|
-
borderBottomWidth: 1,
|
|
104
|
-
borderBottomColor: "#e8e8e8"
|
|
105
|
-
},
|
|
106
|
-
content: {
|
|
107
|
-
padding: 10,
|
|
108
|
-
gap: 4
|
|
109
|
-
},
|
|
110
|
-
title: {
|
|
111
|
-
fontSize: 13,
|
|
112
|
-
color: "#222",
|
|
113
|
-
fontWeight: "500"
|
|
114
|
-
},
|
|
115
|
-
price: {
|
|
116
|
-
marginTop: 4,
|
|
117
|
-
fontSize: 14,
|
|
118
|
-
fontWeight: "700",
|
|
119
|
-
color: "#000"
|
|
120
|
-
},
|
|
121
|
-
button: {
|
|
122
|
-
marginTop: 12,
|
|
123
|
-
alignSelf: "center",
|
|
124
|
-
paddingHorizontal: 20,
|
|
125
|
-
paddingVertical: 8,
|
|
126
|
-
backgroundColor: "#804195",
|
|
127
|
-
borderRadius: 20,
|
|
128
|
-
width: 300,
|
|
129
|
-
alignItems: "center"
|
|
130
|
-
},
|
|
131
|
-
buttonText: {
|
|
132
|
-
color: "#fff",
|
|
133
|
-
fontSize: 14,
|
|
134
|
-
fontWeight: "600"
|
|
19
|
+
if (variant === "list") {
|
|
20
|
+
return /*#__PURE__*/_react.default.createElement(_ProductsListView.default, {
|
|
21
|
+
data: data,
|
|
22
|
+
onViewAll: onViewAll,
|
|
23
|
+
onItemPress: onItemPress,
|
|
24
|
+
totalResults: totalResults
|
|
25
|
+
});
|
|
135
26
|
}
|
|
136
|
-
|
|
137
|
-
|
|
27
|
+
return /*#__PURE__*/_react.default.createElement(_ProductsGrid.default, {
|
|
28
|
+
data: data,
|
|
29
|
+
onViewAll: onViewAll,
|
|
30
|
+
onItemPress: onItemPress,
|
|
31
|
+
totalResults: totalResults
|
|
32
|
+
});
|
|
33
|
+
};
|
|
138
34
|
var _default = exports.default = ProductsList;
|
|
139
35
|
//# sourceMappingURL=ProductsList.js.map
|