vdb-ai-chat 1.0.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 (102) hide show
  1. package/README.md +153 -0
  2. package/dist/chat-widget.js +2 -0
  3. package/dist/chat-widget.js.LICENSE.txt +29 -0
  4. package/lib/commonjs/api.js +157 -0
  5. package/lib/commonjs/api.js.map +1 -0
  6. package/lib/commonjs/components/ChatHeader.js +111 -0
  7. package/lib/commonjs/components/ChatHeader.js.map +1 -0
  8. package/lib/commonjs/components/ChatInput.js +144 -0
  9. package/lib/commonjs/components/ChatInput.js.map +1 -0
  10. package/lib/commonjs/components/ChatWidget.js +469 -0
  11. package/lib/commonjs/components/ChatWidget.js.map +1 -0
  12. package/lib/commonjs/components/MessageBubble.js +122 -0
  13. package/lib/commonjs/components/MessageBubble.js.map +1 -0
  14. package/lib/commonjs/components/ProductsList.js +139 -0
  15. package/lib/commonjs/components/ProductsList.js.map +1 -0
  16. package/lib/commonjs/components/SuggestionsRow.js +59 -0
  17. package/lib/commonjs/components/SuggestionsRow.js.map +1 -0
  18. package/lib/commonjs/components/utils.js +37 -0
  19. package/lib/commonjs/components/utils.js.map +1 -0
  20. package/lib/commonjs/index.js +70 -0
  21. package/lib/commonjs/index.js.map +1 -0
  22. package/lib/commonjs/index.native.js +70 -0
  23. package/lib/commonjs/index.native.js.map +1 -0
  24. package/lib/commonjs/index.web.js +30 -0
  25. package/lib/commonjs/index.web.js.map +1 -0
  26. package/lib/commonjs/storage.js +136 -0
  27. package/lib/commonjs/storage.js.map +1 -0
  28. package/lib/commonjs/theme.js +29 -0
  29. package/lib/commonjs/theme.js.map +1 -0
  30. package/lib/commonjs/types.js +2 -0
  31. package/lib/commonjs/types.js.map +1 -0
  32. package/lib/module/api.js +146 -0
  33. package/lib/module/api.js.map +1 -0
  34. package/lib/module/components/ChatHeader.js +105 -0
  35. package/lib/module/components/ChatHeader.js.map +1 -0
  36. package/lib/module/components/ChatInput.js +136 -0
  37. package/lib/module/components/ChatInput.js.map +1 -0
  38. package/lib/module/components/ChatWidget.js +461 -0
  39. package/lib/module/components/ChatWidget.js.map +1 -0
  40. package/lib/module/components/MessageBubble.js +116 -0
  41. package/lib/module/components/MessageBubble.js.map +1 -0
  42. package/lib/module/components/ProductsList.js +133 -0
  43. package/lib/module/components/ProductsList.js.map +1 -0
  44. package/lib/module/components/SuggestionsRow.js +52 -0
  45. package/lib/module/components/SuggestionsRow.js.map +1 -0
  46. package/lib/module/components/utils.js +29 -0
  47. package/lib/module/components/utils.js.map +1 -0
  48. package/lib/module/index.js +7 -0
  49. package/lib/module/index.js.map +1 -0
  50. package/lib/module/index.native.js +7 -0
  51. package/lib/module/index.native.js.map +1 -0
  52. package/lib/module/index.web.js +23 -0
  53. package/lib/module/index.web.js.map +1 -0
  54. package/lib/module/storage.js +129 -0
  55. package/lib/module/storage.js.map +1 -0
  56. package/lib/module/theme.js +22 -0
  57. package/lib/module/theme.js.map +1 -0
  58. package/lib/module/types.js +2 -0
  59. package/lib/module/types.js.map +1 -0
  60. package/lib/typescript/api.d.ts +10 -0
  61. package/lib/typescript/api.d.ts.map +1 -0
  62. package/lib/typescript/components/ChatHeader.d.ts +6 -0
  63. package/lib/typescript/components/ChatHeader.d.ts.map +1 -0
  64. package/lib/typescript/components/ChatInput.d.ts +15 -0
  65. package/lib/typescript/components/ChatInput.d.ts.map +1 -0
  66. package/lib/typescript/components/ChatWidget.d.ts +4 -0
  67. package/lib/typescript/components/ChatWidget.d.ts.map +1 -0
  68. package/lib/typescript/components/MessageBubble.d.ts +13 -0
  69. package/lib/typescript/components/MessageBubble.d.ts.map +1 -0
  70. package/lib/typescript/components/ProductsList.d.ts +9 -0
  71. package/lib/typescript/components/ProductsList.d.ts.map +1 -0
  72. package/lib/typescript/components/SuggestionsRow.d.ts +8 -0
  73. package/lib/typescript/components/SuggestionsRow.d.ts.map +1 -0
  74. package/lib/typescript/components/utils.d.ts +8 -0
  75. package/lib/typescript/components/utils.d.ts.map +1 -0
  76. package/lib/typescript/index.d.ts +6 -0
  77. package/lib/typescript/index.d.ts.map +1 -0
  78. package/lib/typescript/index.native.d.ts +6 -0
  79. package/lib/typescript/index.native.d.ts.map +1 -0
  80. package/lib/typescript/index.web.d.ts +3 -0
  81. package/lib/typescript/index.web.d.ts.map +1 -0
  82. package/lib/typescript/storage.d.ts +28 -0
  83. package/lib/typescript/storage.d.ts.map +1 -0
  84. package/lib/typescript/theme.d.ts +4 -0
  85. package/lib/typescript/theme.d.ts.map +1 -0
  86. package/lib/typescript/types.d.ts +51 -0
  87. package/lib/typescript/types.d.ts.map +1 -0
  88. package/package.json +90 -0
  89. package/src/api.ts +200 -0
  90. package/src/components/ChatHeader.tsx +114 -0
  91. package/src/components/ChatInput.tsx +163 -0
  92. package/src/components/ChatWidget.tsx +679 -0
  93. package/src/components/MessageBubble.tsx +181 -0
  94. package/src/components/ProductsList.tsx +160 -0
  95. package/src/components/SuggestionsRow.tsx +73 -0
  96. package/src/components/utils.ts +43 -0
  97. package/src/index.native.tsx +6 -0
  98. package/src/index.ts +7 -0
  99. package/src/index.web.tsx +33 -0
  100. package/src/storage.ts +142 -0
  101. package/src/theme.ts +21 -0
  102. package/src/types.ts +56 -0
@@ -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 ProductsListComponent = ({
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
+ }, /*#__PURE__*/_react.default.createElement(ImageComponent, {
41
+ style: styles.image,
42
+ source: {
43
+ uri: item.image_thumb_url
44
+ }
45
+ }), /*#__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 ProductsList = /*#__PURE__*/(0, _react.memo)(ProductsListComponent);
138
+ var _default = exports.default = ProductsList;
139
+ //# sourceMappingURL=ProductsList.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","ProductsListComponent","data","onViewAll","onItemPress","length","createElement","View","style","styles","wrapper","ScrollView","horizontal","showsHorizontalScrollIndicator","contentContainerStyle","listContent","map","item","TouchableOpacity","key","id","onPress","card","image","source","uri","image_thumb_url","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","ProductsList","memo","_default","exports"],"sourceRoot":"../../../src","sources":["components/ProductsList.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
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
+ const SuggestionsRowComponent = ({
11
+ suggestions,
12
+ onSelect
13
+ }) => {
14
+ if (!suggestions.length) return null;
15
+ return /*#__PURE__*/_react.default.createElement(_reactNative.ScrollView, {
16
+ horizontal: true,
17
+ showsHorizontalScrollIndicator: false,
18
+ contentContainerStyle: styles.container
19
+ }, suggestions.map(s => /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
20
+ key: s,
21
+ style: styles.chip,
22
+ onPress: () => onSelect(s),
23
+ activeOpacity: 0.75
24
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
25
+ style: styles.chipText
26
+ }, s))));
27
+ };
28
+ const styles = _reactNative.StyleSheet.create({
29
+ container: {
30
+ paddingHorizontal: 12,
31
+ paddingBottom: 8,
32
+ flexDirection: "row",
33
+ gap: 10
34
+ },
35
+ chip: {
36
+ backgroundColor: "#ffffff",
37
+ paddingHorizontal: 16,
38
+ paddingVertical: 8,
39
+ borderRadius: 18,
40
+ // Modern soft shadow (Material 3 / iOS style)
41
+ shadowColor: "#000",
42
+ shadowOpacity: 0.07,
43
+ shadowRadius: 4,
44
+ shadowOffset: {
45
+ width: 0,
46
+ height: 2
47
+ },
48
+ elevation: 2
49
+ },
50
+ chipText: {
51
+ fontSize: 14,
52
+ color: "#1A1A1A",
53
+ fontWeight: "500",
54
+ letterSpacing: 0.3
55
+ }
56
+ });
57
+ const SuggestionsRow = /*#__PURE__*/(0, _react.memo)(SuggestionsRowComponent);
58
+ var _default = exports.default = SuggestionsRow;
59
+ //# sourceMappingURL=SuggestionsRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SuggestionsRowComponent","suggestions","onSelect","length","createElement","ScrollView","horizontal","showsHorizontalScrollIndicator","contentContainerStyle","styles","container","map","s","TouchableOpacity","key","style","chip","onPress","activeOpacity","Text","chipText","StyleSheet","create","paddingHorizontal","paddingBottom","flexDirection","gap","backgroundColor","paddingVertical","borderRadius","shadowColor","shadowOpacity","shadowRadius","shadowOffset","width","height","elevation","fontSize","color","fontWeight","letterSpacing","SuggestionsRow","memo","_default","exports"],"sourceRoot":"../../../src","sources":["components/SuggestionsRow.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.fetchConversationId = exports.FeedbackAction = void 0;
7
+ exports.formatToTime = formatToTime;
8
+ var _storage = require("../storage");
9
+ function formatToTime(timestamp) {
10
+ const date = new Date(timestamp);
11
+ let hours = date.getHours();
12
+ const minutes = date.getMinutes();
13
+ const ampm = hours >= 12 ? "pm" : "am";
14
+ hours = hours % 12;
15
+ hours = hours ? hours : 12; // 0 → 12
16
+
17
+ const mins = minutes < 10 ? `0${minutes}` : minutes;
18
+ return `${hours}:${mins} ${ampm}`;
19
+ }
20
+ let FeedbackAction = exports.FeedbackAction = /*#__PURE__*/function (FeedbackAction) {
21
+ FeedbackAction["LIKE"] = "1";
22
+ FeedbackAction["DISLIKE"] = "2";
23
+ FeedbackAction["UNSET"] = "0";
24
+ return FeedbackAction;
25
+ }({});
26
+ const fetchConversationId = async _priceMode => {
27
+ const conversations = await _storage.Storage.getJSON("vdbchat_conversations", {});
28
+ if (!conversations) return null;
29
+ let priceMode = _priceMode;
30
+ if (!priceMode) {
31
+ const userData = await _storage.Storage.getJSON("userData", {});
32
+ priceMode = userData?.price_mode || "";
33
+ }
34
+ return conversations[priceMode]?.conversation_id || null;
35
+ };
36
+ exports.fetchConversationId = fetchConversationId;
37
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_storage","require","formatToTime","timestamp","date","Date","hours","getHours","minutes","getMinutes","ampm","mins","FeedbackAction","exports","fetchConversationId","_priceMode","conversations","Storage","getJSON","priceMode","userData","price_mode","conversation_id"],"sourceRoot":"../../../src","sources":["components/utils.ts"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAEO,SAASC,YAAYA,CAACC,SAAiB,EAAU;EACtD,MAAMC,IAAI,GAAG,IAAIC,IAAI,CAACF,SAAS,CAAC;EAEhC,IAAIG,KAAK,GAAGF,IAAI,CAACG,QAAQ,CAAC,CAAC;EAC3B,MAAMC,OAAO,GAAGJ,IAAI,CAACK,UAAU,CAAC,CAAC;EACjC,MAAMC,IAAI,GAAGJ,KAAK,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI;EAEtCA,KAAK,GAAGA,KAAK,GAAG,EAAE;EAClBA,KAAK,GAAGA,KAAK,GAAGA,KAAK,GAAG,EAAE,CAAC,CAAC;;EAE5B,MAAMK,IAAI,GAAGH,OAAO,GAAG,EAAE,GAAG,IAAIA,OAAO,EAAE,GAAGA,OAAO;EAEnD,OAAO,GAAGF,KAAK,IAAIK,IAAI,IAAID,IAAI,EAAE;AACnC;AAAC,IAEWE,cAAc,GAAAC,OAAA,CAAAD,cAAA,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA;AAMnB,MAAME,mBAAmB,GAAG,MACjCC,UAAkB,IACS;EAC3B,MAAMC,aAAa,GAAG,MAAMC,gBAAO,CAACC,OAAO,CACzC,uBAAuB,EACvB,CAAC,CACH,CAAC;EACD,IAAI,CAACF,aAAa,EAAE,OAAO,IAAI;EAE/B,IAAIG,SAAS,GAAGJ,UAAU;EAC1B,IAAI,CAACI,SAAS,EAAE;IACd,MAAMC,QAAQ,GAAG,MAAMH,gBAAO,CAACC,OAAO,CACpC,UAAU,EACV,CAAC,CACH,CAAC;IACDC,SAAS,GAAGC,QAAQ,EAAEC,UAAU,IAAI,EAAE;EACxC;EAEA,OAAOL,aAAa,CAACG,SAAS,CAAC,EAAEG,eAAe,IAAI,IAAI;AAC1D,CAAC;AAACT,OAAA,CAAAC,mBAAA,GAAAA,mBAAA","ignoreList":[]}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {
7
+ ChatWidget: true,
8
+ normaliseMessages: true,
9
+ initStorage: true,
10
+ isStorageInitialized: true,
11
+ Storage: true
12
+ };
13
+ Object.defineProperty(exports, "ChatWidget", {
14
+ enumerable: true,
15
+ get: function () {
16
+ return _ChatWidget.ChatWidget;
17
+ }
18
+ });
19
+ Object.defineProperty(exports, "Storage", {
20
+ enumerable: true,
21
+ get: function () {
22
+ return _storage.Storage;
23
+ }
24
+ });
25
+ Object.defineProperty(exports, "initStorage", {
26
+ enumerable: true,
27
+ get: function () {
28
+ return _storage.initStorage;
29
+ }
30
+ });
31
+ Object.defineProperty(exports, "isStorageInitialized", {
32
+ enumerable: true,
33
+ get: function () {
34
+ return _storage.isStorageInitialized;
35
+ }
36
+ });
37
+ Object.defineProperty(exports, "normaliseMessages", {
38
+ enumerable: true,
39
+ get: function () {
40
+ return _api.normaliseMessages;
41
+ }
42
+ });
43
+ var _ChatWidget = require("./components/ChatWidget");
44
+ var _types = require("./types");
45
+ Object.keys(_types).forEach(function (key) {
46
+ if (key === "default" || key === "__esModule") return;
47
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
48
+ if (key in exports && exports[key] === _types[key]) return;
49
+ Object.defineProperty(exports, key, {
50
+ enumerable: true,
51
+ get: function () {
52
+ return _types[key];
53
+ }
54
+ });
55
+ });
56
+ var _theme = require("./theme");
57
+ Object.keys(_theme).forEach(function (key) {
58
+ if (key === "default" || key === "__esModule") return;
59
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
60
+ if (key in exports && exports[key] === _theme[key]) return;
61
+ Object.defineProperty(exports, key, {
62
+ enumerable: true,
63
+ get: function () {
64
+ return _theme[key];
65
+ }
66
+ });
67
+ });
68
+ var _api = require("./api");
69
+ var _storage = require("./storage");
70
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_ChatWidget","require","_types","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_theme","_api","_storage"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,MAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,MAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,MAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,MAAA,GAAAd,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAW,MAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,MAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,MAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,IAAA,GAAAf,OAAA;AACA,IAAAgB,QAAA,GAAAhB,OAAA","ignoreList":[]}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {
7
+ ChatWidget: true,
8
+ normaliseMessages: true,
9
+ initStorage: true,
10
+ isStorageInitialized: true,
11
+ Storage: true
12
+ };
13
+ Object.defineProperty(exports, "ChatWidget", {
14
+ enumerable: true,
15
+ get: function () {
16
+ return _ChatWidget.ChatWidget;
17
+ }
18
+ });
19
+ Object.defineProperty(exports, "Storage", {
20
+ enumerable: true,
21
+ get: function () {
22
+ return _storage.Storage;
23
+ }
24
+ });
25
+ Object.defineProperty(exports, "initStorage", {
26
+ enumerable: true,
27
+ get: function () {
28
+ return _storage.initStorage;
29
+ }
30
+ });
31
+ Object.defineProperty(exports, "isStorageInitialized", {
32
+ enumerable: true,
33
+ get: function () {
34
+ return _storage.isStorageInitialized;
35
+ }
36
+ });
37
+ Object.defineProperty(exports, "normaliseMessages", {
38
+ enumerable: true,
39
+ get: function () {
40
+ return _api.normaliseMessages;
41
+ }
42
+ });
43
+ var _ChatWidget = require("./components/ChatWidget");
44
+ var _types = require("./types");
45
+ Object.keys(_types).forEach(function (key) {
46
+ if (key === "default" || key === "__esModule") return;
47
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
48
+ if (key in exports && exports[key] === _types[key]) return;
49
+ Object.defineProperty(exports, key, {
50
+ enumerable: true,
51
+ get: function () {
52
+ return _types[key];
53
+ }
54
+ });
55
+ });
56
+ var _theme = require("./theme");
57
+ Object.keys(_theme).forEach(function (key) {
58
+ if (key === "default" || key === "__esModule") return;
59
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
60
+ if (key in exports && exports[key] === _theme[key]) return;
61
+ Object.defineProperty(exports, key, {
62
+ enumerable: true,
63
+ get: function () {
64
+ return _theme[key];
65
+ }
66
+ });
67
+ });
68
+ var _api = require("./api");
69
+ var _storage = require("./storage");
70
+ //# sourceMappingURL=index.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_ChatWidget","require","_types","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_theme","_api","_storage"],"sourceRoot":"../../src","sources":["index.native.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,MAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,MAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,MAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,MAAA,GAAAd,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAW,MAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,MAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,MAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,IAAA,GAAAf,OAAA;AACA,IAAAgB,QAAA,GAAAhB,OAAA","ignoreList":[]}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.renderChatApp = renderChatApp;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _client = require("react-dom/client");
9
+ var _reactNative = require("react-native");
10
+ var _ChatWidget = require("./components/ChatWidget");
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); }
12
+ function renderChatApp(domElement, apiUrl, theme, onClose, onClearChat) {
13
+ const root = (0, _client.createRoot)(domElement);
14
+ root.render(/*#__PURE__*/React.createElement(_reactNative.View, {
15
+ style: styles.root
16
+ }, /*#__PURE__*/React.createElement(_ChatWidget.ChatWidget, {
17
+ apiUrl: apiUrl,
18
+ theme: theme,
19
+ onClose: onClose,
20
+ onClearChat: onClearChat
21
+ })));
22
+ }
23
+ const styles = _reactNative.StyleSheet.create({
24
+ root: {
25
+ flex: 1,
26
+ height: "100%",
27
+ width: "100%"
28
+ }
29
+ });
30
+ //# sourceMappingURL=index.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","_interopRequireWildcard","require","_client","_reactNative","_ChatWidget","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","renderChatApp","domElement","apiUrl","theme","onClose","onClearChat","root","createRoot","render","createElement","View","style","styles","ChatWidget","StyleSheet","create","flex","height","width"],"sourceRoot":"../../src","sources":["index.web.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAAqD,SAAAD,wBAAAK,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAP,uBAAA,YAAAA,CAAAK,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAG9C,SAASkB,aAAaA,CAC3BC,UAAuB,EACvBC,MAAc,EACdC,KAA0B,EAC1BC,OAAoB,EACpBC,WAAwB,EACxB;EACA,MAAMC,IAAI,GAAG,IAAAC,kBAAU,EAACN,UAAU,CAAC;EACnCK,IAAI,CAACE,MAAM,cACTjC,KAAA,CAAAkC,aAAA,CAAC9B,YAAA,CAAA+B,IAAI;IAACC,KAAK,EAAEC,MAAM,CAACN;EAAK,gBACvB/B,KAAA,CAAAkC,aAAA,CAAC7B,WAAA,CAAAiC,UAAU;IACTX,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAEA,KAAM;IACbC,OAAO,EAAEA,OAAQ;IACjBC,WAAW,EAAEA;EAAY,CAC1B,CACG,CACR,CAAC;AACH;AAEA,MAAMO,MAAM,GAAGE,uBAAU,CAACC,MAAM,CAAC;EAC/BT,IAAI,EAAE;IACJU,IAAI,EAAE,CAAC;IACPC,MAAM,EAAE,MAAM;IACdC,KAAK,EAAE;EACT;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.Storage = void 0;
7
+ exports.initStorage = initStorage;
8
+ exports.isStorageInitialized = isStorageInitialized;
9
+ var _reactNative = require("react-native");
10
+ // Storage interface that works across platforms
11
+
12
+ // Helper to safely get localStorage (only available on web)
13
+ function getLocalStorage() {
14
+ if (typeof window !== 'undefined' && window.localStorage) {
15
+ return window.localStorage;
16
+ }
17
+ return null;
18
+ }
19
+
20
+ // Web storage implementation using localStorage (lazy access)
21
+ const webStorage = {
22
+ getItem: async key => {
23
+ try {
24
+ const storage = getLocalStorage();
25
+ return storage ? storage.getItem(key) : null;
26
+ } catch {
27
+ return null;
28
+ }
29
+ },
30
+ setItem: async (key, value) => {
31
+ try {
32
+ const storage = getLocalStorage();
33
+ if (storage) {
34
+ storage.setItem(key, value);
35
+ }
36
+ } catch {
37
+ // ignore
38
+ }
39
+ },
40
+ removeItem: async key => {
41
+ try {
42
+ const storage = getLocalStorage();
43
+ if (storage) {
44
+ storage.removeItem(key);
45
+ }
46
+ } catch {
47
+ // ignore
48
+ }
49
+ }
50
+ };
51
+
52
+ // Native storage - will be set by the app
53
+ let nativeStorage = null;
54
+ let hasWarnedAboutStorage = false;
55
+
56
+ /**
57
+ * Initialize storage with AsyncStorage for React Native.
58
+ * Call this once at app startup before using ChatWidget.
59
+ *
60
+ * @example
61
+ * import AsyncStorage from '@react-native-async-storage/async-storage';
62
+ * import { initStorage } from 'vdb-ai-chat';
63
+ * initStorage(AsyncStorage);
64
+ */
65
+ function initStorage(asyncStorage) {
66
+ nativeStorage = asyncStorage;
67
+ hasWarnedAboutStorage = false;
68
+ }
69
+
70
+ /**
71
+ * Check if storage is properly initialized for the current platform
72
+ */
73
+ function isStorageInitialized() {
74
+ if (_reactNative.Platform.OS === 'web') {
75
+ return getLocalStorage() !== null;
76
+ }
77
+ return nativeStorage !== null;
78
+ }
79
+
80
+ // No-op storage for when native storage isn't initialized
81
+ const noopStorage = {
82
+ getItem: async () => null,
83
+ setItem: async () => {},
84
+ removeItem: async () => {}
85
+ };
86
+
87
+ // Get the appropriate storage based on platform
88
+ function getStorage() {
89
+ if (_reactNative.Platform.OS === 'web') {
90
+ return webStorage;
91
+ }
92
+ if (!nativeStorage) {
93
+ // Only warn once to avoid console spam
94
+ if (!hasWarnedAboutStorage) {
95
+ console.warn('[vdb-ai-chat] AsyncStorage not initialized. Call initStorage(AsyncStorage) at app startup.');
96
+ hasWarnedAboutStorage = true;
97
+ }
98
+ return noopStorage;
99
+ }
100
+ return nativeStorage;
101
+ }
102
+
103
+ // Exported storage methods
104
+ const Storage = exports.Storage = {
105
+ getItem: async key => {
106
+ return getStorage().getItem(key);
107
+ },
108
+ setItem: async (key, value) => {
109
+ return getStorage().setItem(key, value);
110
+ },
111
+ removeItem: async key => {
112
+ return getStorage().removeItem(key);
113
+ },
114
+ // Convenience method to get and parse JSON
115
+ getJSON: async (key, defaultValue = null) => {
116
+ try {
117
+ const value = await getStorage().getItem(key);
118
+ if (value) {
119
+ return JSON.parse(value);
120
+ }
121
+ return defaultValue;
122
+ } catch {
123
+ return defaultValue;
124
+ }
125
+ },
126
+ // Convenience method to stringify and set JSON
127
+ setJSON: async (key, value) => {
128
+ try {
129
+ await getStorage().setItem(key, JSON.stringify(value));
130
+ } catch {
131
+ // ignore
132
+ }
133
+ }
134
+ };
135
+ var _default = exports.default = Storage;
136
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","getLocalStorage","window","localStorage","webStorage","getItem","key","storage","setItem","value","removeItem","nativeStorage","hasWarnedAboutStorage","initStorage","asyncStorage","isStorageInitialized","Platform","OS","noopStorage","getStorage","console","warn","Storage","exports","getJSON","defaultValue","JSON","parse","setJSON","stringify","_default","default"],"sourceRoot":"../../src","sources":["storage.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.defaultTheme = void 0;
7
+ exports.mergeTheme = mergeTheme;
8
+ const defaultTheme = exports.defaultTheme = {
9
+ primaryColor: "#0b93f6",
10
+ backgroundColor: "#ffffff",
11
+ inputColor: "#FFF",
12
+ inputBackgroundColor: "#f5f5f5",
13
+ inputBorderRadius: 8,
14
+ inputTextColor: "#000000",
15
+ userBubbleColor: "#804195",
16
+ userTextColor: "#ffffff",
17
+ botBubbleColor: "#e5e5ea",
18
+ botTextColor: "#000000",
19
+ borderRadius: 18,
20
+ fontFamily: undefined,
21
+ fontSize: 16
22
+ };
23
+ function mergeTheme(overrides) {
24
+ return {
25
+ ...defaultTheme,
26
+ ...(overrides || {})
27
+ };
28
+ }
29
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["defaultTheme","exports","primaryColor","backgroundColor","inputColor","inputBackgroundColor","inputBorderRadius","inputTextColor","userBubbleColor","userTextColor","botBubbleColor","botTextColor","borderRadius","fontFamily","undefined","fontSize","mergeTheme","overrides"],"sourceRoot":"../../src","sources":["theme.ts"],"mappings":";;;;;;;AAEO,MAAMA,YAAuB,GAAAC,OAAA,CAAAD,YAAA,GAAG;EACrCE,YAAY,EAAE,SAAS;EACvBC,eAAe,EAAE,SAAS;EAC1BC,UAAU,EAAE,MAAM;EAClBC,oBAAoB,EAAE,SAAS;EAC/BC,iBAAiB,EAAE,CAAC;EACpBC,cAAc,EAAE,SAAS;EACzBC,eAAe,EAAE,SAAS;EAC1BC,aAAa,EAAE,SAAS;EACxBC,cAAc,EAAE,SAAS;EACzBC,YAAY,EAAE,SAAS;EACvBC,YAAY,EAAE,EAAE;EAChBC,UAAU,EAAEC,SAAS;EACrBC,QAAQ,EAAE;AACZ,CAAC;AAEM,SAASC,UAAUA,CAACC,SAA8B,EAAa;EACpE,OAAO;IAAE,GAAGjB,YAAY;IAAE,IAAIiB,SAAS,IAAI,CAAC,CAAC;EAAE,CAAC;AAClD","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"","ignoreList":[]}