@envive-ai/react-hooks 0.3.14 → 0.3.15-beta.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 (82) hide show
  1. package/dist/atoms/app/index.d.cts +1 -1
  2. package/dist/atoms/app/index.d.ts +7 -7
  3. package/dist/atoms/app/variant.d.cts +6 -6
  4. package/dist/atoms/app/variant.d.ts +6 -6
  5. package/dist/atoms/chat/chatState.d.cts +17 -17
  6. package/dist/atoms/chat/chatState.d.ts +18 -18
  7. package/dist/atoms/chat/form.d.cts +3 -3
  8. package/dist/atoms/chat/form.d.ts +3 -3
  9. package/dist/atoms/chat/index.d.cts +3 -3
  10. package/dist/atoms/chat/index.d.ts +3 -3
  11. package/dist/atoms/chat/lastMessage.d.cts +2 -2
  12. package/dist/atoms/chat/lastMessage.d.ts +2 -2
  13. package/dist/atoms/chat/messageQueue.d.cts +6 -6
  14. package/dist/atoms/chat/messageQueue.d.ts +7 -7
  15. package/dist/atoms/chat/performanceMetrics.d.cts +7 -7
  16. package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
  17. package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
  18. package/dist/atoms/chat/renderedWidgetRefs.d.ts +3 -3
  19. package/dist/atoms/chat/replies.d.cts +2 -2
  20. package/dist/atoms/chat/replies.d.ts +3 -3
  21. package/dist/atoms/chat/suggestions.d.cts +2 -2
  22. package/dist/atoms/chat/suggestions.d.ts +3 -3
  23. package/dist/atoms/envive/enviveConfig.d.cts +12 -12
  24. package/dist/atoms/envive/enviveConfig.d.ts +13 -13
  25. package/dist/atoms/globalSearch/globalSearch.d.cts +5 -5
  26. package/dist/atoms/globalSearch/globalSearch.d.ts +5 -5
  27. package/dist/atoms/org/customerService.d.cts +6 -6
  28. package/dist/atoms/org/customerService.d.ts +6 -6
  29. package/dist/atoms/org/graphqlConfig.d.cts +4 -4
  30. package/dist/atoms/org/graphqlConfig.d.ts +4 -4
  31. package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
  32. package/dist/atoms/org/newOrgConfigAtom.d.ts +3 -3
  33. package/dist/atoms/org/orgAnalyticsConfig.d.cts +5 -5
  34. package/dist/atoms/org/orgAnalyticsConfig.d.ts +6 -6
  35. package/dist/atoms/search/chatSearch.d.cts +17 -17
  36. package/dist/atoms/search/chatSearch.d.ts +17 -17
  37. package/dist/atoms/search/searchAPI.d.cts +13 -13
  38. package/dist/atoms/search/searchAPI.d.ts +13 -13
  39. package/dist/atoms/search/types.d.cts +1 -1
  40. package/dist/atoms/search/utils.d.ts +1 -1
  41. package/dist/atoms/widget/chatPreviewLoading.d.cts +2 -2
  42. package/dist/atoms/widget/chatPreviewLoading.d.ts +2 -2
  43. package/dist/contexts/salesAgentContext/chatAPI.cjs +21 -1
  44. package/dist/contexts/salesAgentContext/chatAPI.js +21 -1
  45. package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +2 -2
  46. package/dist/contexts/systemSettingsContext/systemSettingsContext.d.ts +2 -2
  47. package/dist/contexts/types.d.cts +1 -1
  48. package/dist/contexts/types.d.ts +1 -1
  49. package/dist/contexts/typesV3.d.ts +1 -1
  50. package/dist/hooks/ChatToggle/useChatToggle.cjs +47 -17
  51. package/dist/hooks/ChatToggle/useChatToggle.d.cts +2 -1
  52. package/dist/hooks/ChatToggle/useChatToggle.d.ts +2 -1
  53. package/dist/hooks/ChatToggle/useChatToggle.js +48 -18
  54. package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +2 -2
  55. package/dist/hooks/ShopifyUrlOperations/useShopifyUrlOperations.d.cts +2 -2
  56. package/dist/hooks/ShopifyUrlOperations/useShopifyUrlOperations.d.ts +2 -2
  57. package/dist/hooks/SystemSettingsContext/useSystemSettingsContext.d.ts +2 -2
  58. package/dist/hooks/WidgetInteraction/index.cjs +3 -0
  59. package/dist/hooks/WidgetInteraction/index.d.cts +2 -0
  60. package/dist/hooks/WidgetInteraction/index.d.ts +2 -0
  61. package/dist/hooks/WidgetInteraction/index.js +3 -0
  62. package/dist/hooks/WidgetInteraction/types.cjs +47 -0
  63. package/dist/hooks/WidgetInteraction/types.d.cts +110 -0
  64. package/dist/hooks/WidgetInteraction/types.d.ts +110 -0
  65. package/dist/hooks/WidgetInteraction/types.js +44 -0
  66. package/dist/hooks/WidgetInteraction/useWidgetInteraction.cjs +34 -0
  67. package/dist/hooks/WidgetInteraction/useWidgetInteraction.d.cts +10 -0
  68. package/dist/hooks/WidgetInteraction/useWidgetInteraction.d.ts +10 -0
  69. package/dist/hooks/WidgetInteraction/useWidgetInteraction.js +33 -0
  70. package/dist/hooks/WidgetInteraction/utils.cjs +34 -0
  71. package/dist/hooks/WidgetInteraction/utils.d.cts +8 -0
  72. package/dist/hooks/WidgetInteraction/utils.d.ts +8 -0
  73. package/dist/hooks/WidgetInteraction/utils.js +34 -0
  74. package/dist/hooks/utils.d.cts +1 -1
  75. package/dist/hooks/utils.d.ts +1 -1
  76. package/package.json +13 -1
  77. package/src/contexts/salesAgentContext/chatAPI.ts +39 -6
  78. package/src/hooks/ChatToggle/useChatToggle.ts +35 -2
  79. package/src/hooks/WidgetInteraction/index.ts +1 -0
  80. package/src/hooks/WidgetInteraction/types.ts +139 -0
  81. package/src/hooks/WidgetInteraction/useWidgetInteraction.ts +35 -0
  82. package/src/hooks/WidgetInteraction/utils.ts +44 -0
@@ -0,0 +1,44 @@
1
+ //#region src/hooks/WidgetInteraction/types.ts
2
+ let WidgetInteractionPageType = /* @__PURE__ */ function(WidgetInteractionPageType$1) {
3
+ WidgetInteractionPageType$1["PDP"] = "pdp";
4
+ WidgetInteractionPageType$1["PLP"] = "plp";
5
+ WidgetInteractionPageType$1["HOMEPAGE"] = "homepage";
6
+ WidgetInteractionPageType$1["SEARCH"] = "search";
7
+ WidgetInteractionPageType$1["OTHER"] = "other";
8
+ WidgetInteractionPageType$1["FULL_PAGE"] = "full_page";
9
+ return WidgetInteractionPageType$1;
10
+ }({});
11
+ let WidgetInteractionComponent = /* @__PURE__ */ function(WidgetInteractionComponent$1) {
12
+ WidgetInteractionComponent$1["EMBEDDED_WIDGET"] = "embedded_widget";
13
+ WidgetInteractionComponent$1["SUGGESTION_BAR"] = "suggestion_bar";
14
+ WidgetInteractionComponent$1["FLOATING_BUTTON"] = "floating_button";
15
+ WidgetInteractionComponent$1["SOCIAL_PROOF"] = "social_proof";
16
+ WidgetInteractionComponent$1["CHAT_PREVIEW"] = "chat_preview";
17
+ WidgetInteractionComponent$1["FLOATING_CHAT"] = "floating_chat";
18
+ WidgetInteractionComponent$1["SINGLE_IMAGE_PROMPT"] = "single_image_prompt";
19
+ WidgetInteractionComponent$1["IMAGE_PROMPT_CARD"] = "image_prompt_card";
20
+ WidgetInteractionComponent$1["POST_INTERACTION_COMPARISON"] = "post_interaction_comparison";
21
+ WidgetInteractionComponent$1["POST_INTERACTION_EMBEDDED"] = "post_interaction_embedded";
22
+ return WidgetInteractionComponent$1;
23
+ }({});
24
+ let WidgetInteractionType = /* @__PURE__ */ function(WidgetInteractionType$1) {
25
+ WidgetInteractionType$1["QUERY_INPUT_CLICKED"] = "query_input_clicked";
26
+ WidgetInteractionType$1["SUGGESTION_CLICKED"] = "suggestion_clicked";
27
+ WidgetInteractionType$1["WIDGET_CLICKED"] = "widget_clicked";
28
+ WidgetInteractionType$1["WIDGET_HOVERED"] = "widget_hovered";
29
+ WidgetInteractionType$1["WIDGET_EXPANDED"] = "widget_expanded";
30
+ WidgetInteractionType$1["WIDGET_COLLAPSED"] = "widget_collapsed";
31
+ WidgetInteractionType$1["SUGGESTION_SCROLLED"] = "suggestion_scrolled";
32
+ WidgetInteractionType$1["LINK_CLICKED"] = "link_clicked";
33
+ WidgetInteractionType$1["PRODUCT_CARD_CLICKED"] = "product_card_clicked";
34
+ WidgetInteractionType$1["TEXT_LINK_CLICKED"] = "text_link_clicked";
35
+ WidgetInteractionType$1["ARTICLE_LINK_CLICKED"] = "article_link_clicked";
36
+ WidgetInteractionType$1["REVIEW_CARD_CLICKED"] = "review_card_clicked";
37
+ WidgetInteractionType$1["MESSAGE_SUBMITTED"] = "message_submitted";
38
+ WidgetInteractionType$1["MANUAL_SCROLL_TO_BOTTOM"] = "manual_scroll_to_bottom";
39
+ return WidgetInteractionType$1;
40
+ }({});
41
+
42
+ //#endregion
43
+ export { WidgetInteractionComponent, WidgetInteractionPageType, WidgetInteractionType };
44
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL1dpZGdldEludGVyYWN0aW9uL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfSBmcm9tICcuLi8uLi9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0JztcblxuZXhwb3J0IGludGVyZmFjZSBXaWRnZXRJbnRlcmFjdGlvbkNvbnRleHQge1xuICBwYWdlX3R5cGU6IFdpZGdldEludGVyYWN0aW9uUGFnZVR5cGU7XG4gIHBhZ2VfaWQ6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFdpZGdldEludGVyYWN0aW9uVHJpZ2dlciB7XG4gIGludGVyYWN0aW9uX2lkPzogc3RyaW5nO1xuICB3aWRnZXQ6IFdpZGdldEludGVyYWN0aW9uQ29tcG9uZW50O1xuICB3aWRnZXRfaW50ZXJhY3Rpb246IFdpZGdldEludGVyYWN0aW9uVHlwZTtcbiAgd2lkZ2V0X2ludGVyYWN0aW9uX2RhdGE/OiBXaWRnZXRJbnRlcmFjdGlvbkRhdGEgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVybmFsV2lkZ2V0SW50ZXJhY3Rpb24ge1xuICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfCBFbnZpdmVNZXRyaWNzRXZlbnROYW1lO1xuICBjb250ZXh0OiBXaWRnZXRJbnRlcmFjdGlvbkNvbnRleHQ7XG4gIHRyaWdnZXI6IFdpZGdldEludGVyYWN0aW9uVHJpZ2dlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXaWRnZXRJbnRlcmFjdGlvbiB7XG4gIGV2ZW50TmFtZTogSW50ZXJuYWxXaWRnZXRJbnRlcmFjdGlvblsnZXZlbnROYW1lJ107XG4gIHRyaWdnZXI6IEludGVybmFsV2lkZ2V0SW50ZXJhY3Rpb25bJ3RyaWdnZXInXTtcbn1cblxuZXhwb3J0IGVudW0gV2lkZ2V0SW50ZXJhY3Rpb25QYWdlVHlwZSB7XG4gIFBEUCA9ICdwZHAnLFxuICBQTFAgPSAncGxwJyxcbiAgSE9NRVBBR0UgPSAnaG9tZXBhZ2UnLFxuICBTRUFSQ0ggPSAnc2VhcmNoJyxcbiAgT1RIRVIgPSAnb3RoZXInLFxuICBGVUxMX1BBR0UgPSAnZnVsbF9wYWdlJyxcbn1cblxuZXhwb3J0IGVudW0gV2lkZ2V0SW50ZXJhY3Rpb25Db21wb25lbnQge1xuICBFTUJFRERFRF9XSURHRVQgPSAnZW1iZWRkZWRfd2lkZ2V0JyxcbiAgU1VHR0VTVElPTl9CQVIgPSAnc3VnZ2VzdGlvbl9iYXInLFxuICBGTE9BVElOR19CVVRUT04gPSAnZmxvYXRpbmdfYnV0dG9uJyxcbiAgU09DSUFMX1BST09GID0gJ3NvY2lhbF9wcm9vZicsXG4gIENIQVRfUFJFVklFVyA9ICdjaGF0X3ByZXZpZXcnLFxuICBGTE9BVElOR19DSEFUID0gJ2Zsb2F0aW5nX2NoYXQnLFxuICBTSU5HTEVfSU1BR0VfUFJPTVBUID0gJ3NpbmdsZV9pbWFnZV9wcm9tcHQnLFxuICBJTUFHRV9QUk9NUFRfQ0FSRCA9ICdpbWFnZV9wcm9tcHRfY2FyZCcsXG4gIFBPU1RfSU5URVJBQ1RJT05fQ09NUEFSSVNPTiA9ICdwb3N0X2ludGVyYWN0aW9uX2NvbXBhcmlzb24nLFxuICBQT1NUX0lOVEVSQUNUSU9OX0VNQkVEREVEID0gJ3Bvc3RfaW50ZXJhY3Rpb25fZW1iZWRkZWQnLFxufVxuXG5leHBvcnQgZW51bSBXaWRnZXRJbnRlcmFjdGlvblR5cGUge1xuICBRVUVSWV9JTlBVVF9DTElDS0VEID0gJ3F1ZXJ5X2lucHV0X2NsaWNrZWQnLFxuICBTVUdHRVNUSU9OX0NMSUNLRUQgPSAnc3VnZ2VzdGlvbl9jbGlja2VkJyxcbiAgV0lER0VUX0NMSUNLRUQgPSAnd2lkZ2V0X2NsaWNrZWQnLFxuICBXSURHRVRfSE9WRVJFRCA9ICd3aWRnZXRfaG92ZXJlZCcsXG4gIFdJREdFVF9FWFBBTkRFRCA9ICd3aWRnZXRfZXhwYW5kZWQnLFxuICBXSURHRVRfQ09MTEFQU0VEID0gJ3dpZGdldF9jb2xsYXBzZWQnLFxuICBTVUdHRVNUSU9OX1NDUk9MTEVEID0gJ3N1Z2dlc3Rpb25fc2Nyb2xsZWQnLFxuICBMSU5LX0NMSUNLRUQgPSAnbGlua19jbGlja2VkJyxcbiAgUFJPRFVDVF9DQVJEX0NMSUNLRUQgPSAncHJvZHVjdF9jYXJkX2NsaWNrZWQnLFxuICBURVhUX0xJTktfQ0xJQ0tFRCA9ICd0ZXh0X2xpbmtfY2xpY2tlZCcsXG4gIEFSVElDTEVfTElOS19DTElDS0VEID0gJ2FydGljbGVfbGlua19jbGlja2VkJyxcbiAgUkVWSUVXX0NBUkRfQ0xJQ0tFRCA9ICdyZXZpZXdfY2FyZF9jbGlja2VkJyxcbiAgTUVTU0FHRV9TVUJNSVRURUQgPSAnbWVzc2FnZV9zdWJtaXR0ZWQnLFxuICBNQU5VQUxfU0NST0xMX1RPX0JPVFRPTSA9ICdtYW51YWxfc2Nyb2xsX3RvX2JvdHRvbScsXG59XG5cbmV4cG9ydCB0eXBlIFVSTCA9IHtcbiAgdXJsOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBQcm9kdWN0ID0ge1xuICBwcm9kdWN0X2lkOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBSZXZpZXcgPSB7XG4gIHJldmlld19pZDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgU3VnZ2VzdGlvbiA9IHtcbiAgc3VnZ2VzdGlvbl9pZDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgUmVxdWVzdCA9IHtcbiAgcmVxdWVzdF90ZXh0OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBDb2xsYXBzZSA9IHtcbiAgY29sbGFwc2Vfc291cmNlOiAnY2xvc2VfYnV0dG9uJyB8ICdzd2lwZScgfCAnYm9keV9jbGljayc7XG59O1xuXG5leHBvcnQgdHlwZSBTdWdnZXN0aW9uU2Nyb2xsZWQgPSB7XG4gIHN1Z2dlc3Rpb25fc2Nyb2xsZWQ6IFN1Z2dlc3Rpb247XG59O1xuXG5leHBvcnQgdHlwZSBTdWdnZXN0aW9uQ2xpY2tlZCA9IHtcbiAgc3VnZ2VzdGlvbl9jbGlja2VkOiBTdWdnZXN0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgU3VnZ2VzdGlvbkhvdmVyZWQgPSB7XG4gIHN1Z2dlc3Rpb25faG92ZXJlZDogU3VnZ2VzdGlvbjtcbn07XG5cbmV4cG9ydCB0eXBlIExpbmtDbGlja2VkID0ge1xuICBsaW5rX2NsaWNrZWQ6IFVSTDtcbn07XG5cbmV4cG9ydCB0eXBlIFdpZGdldENvbGxhcHNlZCA9IHtcbiAgd2lkZ2V0X2NvbGxhcHNlZDogQ29sbGFwc2U7XG59O1xuXG5leHBvcnQgdHlwZSBUZXh0TGlua0NsaWNrZWQgPSB7XG4gIHRleHRfbGlua19jbGlja2VkOiBVUkw7XG59O1xuXG5leHBvcnQgdHlwZSBBcnRpY2xlTGlua0NsaWNrZWQgPSB7XG4gIGFydGljbGVfbGlua19jbGlja2VkOiBVUkw7XG59O1xuXG5leHBvcnQgdHlwZSBQcm9kdWN0Q2FyZENsaWNrZWQgPSB7XG4gIHByb2R1Y3RfY2FyZF9jbGlja2VkOiBQcm9kdWN0O1xufTtcblxuZXhwb3J0IHR5cGUgUmV2aWV3Q2FyZENsaWNrZWQgPSB7XG4gIHJldmlld19jYXJkX2NsaWNrZWQ6IFJldmlldztcbn07XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2VTdWJtaXR0ZWQgPSB7XG4gIG1lc3NhZ2Vfc3VibWl0dGVkOiBSZXF1ZXN0O1xufTtcblxuZXhwb3J0IHR5cGUgV2lkZ2V0SW50ZXJhY3Rpb25EYXRhID1cbiAgfCBTdWdnZXN0aW9uU2Nyb2xsZWRcbiAgfCBTdWdnZXN0aW9uQ2xpY2tlZFxuICB8IFN1Z2dlc3Rpb25Ib3ZlcmVkXG4gIHwgTGlua0NsaWNrZWRcbiAgfCBXaWRnZXRDb2xsYXBzZWRcbiAgfCBUZXh0TGlua0NsaWNrZWRcbiAgfCBBcnRpY2xlTGlua0NsaWNrZWRcbiAgfCBQcm9kdWN0Q2FyZENsaWNrZWRcbiAgfCBSZXZpZXdDYXJkQ2xpY2tlZFxuICB8IE1lc3NhZ2VTdWJtaXR0ZWQ7XG4iXSwibWFwcGluZ3MiOiI7QUF5QkEsSUFBWSxrRkFBTDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0YsSUFBWSxvRkFBTDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHRixJQUFZLDBFQUFMO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSJ9
@@ -0,0 +1,34 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ const require_variant = require('../../atoms/app/variant.cjs');
3
+ require('../../atoms/app/index.cjs');
4
+ const require_amplitudeContext = require('../../contexts/amplitudeContext/amplitudeContext.cjs');
5
+ require('../../contexts/amplitudeContext/index.cjs');
6
+ const require_hooks_WidgetInteraction_utils = require('./utils.cjs');
7
+ let jotai = require("jotai");
8
+ let uuid = require("uuid");
9
+
10
+ //#region src/hooks/WidgetInteraction/useWidgetInteraction.ts
11
+ const useWidgetInteraction = () => {
12
+ const { trackEvent } = require_amplitudeContext.useAmplitude();
13
+ const variantInfo = (0, jotai.useAtomValue)(require_variant.pageVariantInfoAtom);
14
+ const trackWidgetInteraction = (props) => {
15
+ if (props.trigger) props.trigger.interaction_id = props.trigger.interaction_id || getInteractionId();
16
+ const eventProps = {
17
+ ...props,
18
+ context: require_hooks_WidgetInteraction_utils.extractPageContext(variantInfo)
19
+ };
20
+ trackEvent({
21
+ eventName: props.eventName,
22
+ eventProps: { ...eventProps }
23
+ });
24
+ };
25
+ const getInteractionId = () => (0, uuid.v4)();
26
+ return {
27
+ trackWidgetInteraction,
28
+ getInteractionId
29
+ };
30
+ };
31
+
32
+ //#endregion
33
+ exports.useWidgetInteraction = useWidgetInteraction;
34
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlV2lkZ2V0SW50ZXJhY3Rpb24uY2pzIiwibmFtZXMiOlsidXNlQW1wbGl0dWRlIiwicGFnZVZhcmlhbnRJbmZvQXRvbSIsImV4dHJhY3RQYWdlQ29udGV4dCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy9XaWRnZXRJbnRlcmFjdGlvbi91c2VXaWRnZXRJbnRlcmFjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VBdG9tVmFsdWUgfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgeyBwYWdlVmFyaWFudEluZm9BdG9tIH0gZnJvbSAnc3JjL2F0b21zL2FwcCc7XG5pbXBvcnQgeyB1c2VBbXBsaXR1ZGUgfSBmcm9tICdzcmMvY29udGV4dHMvYW1wbGl0dWRlQ29udGV4dCc7XG5pbXBvcnQgeyBQYWdlVmFyaWFudEluZm8gfSBmcm9tICdzcmMvY29udGV4dHMvcGFnZUNvbnRleHQvdHlwZXMnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgSW50ZXJuYWxXaWRnZXRJbnRlcmFjdGlvbiwgV2lkZ2V0SW50ZXJhY3Rpb24gfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGV4dHJhY3RQYWdlQ29udGV4dCB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgdXNlV2lkZ2V0SW50ZXJhY3Rpb24gPSAoKSA9PiB7XG4gIGNvbnN0IHsgdHJhY2tFdmVudCB9ID0gdXNlQW1wbGl0dWRlKCk7XG4gIGNvbnN0IHZhcmlhbnRJbmZvID0gdXNlQXRvbVZhbHVlKHBhZ2VWYXJpYW50SW5mb0F0b20pO1xuXG4gIGNvbnN0IHRyYWNrV2lkZ2V0SW50ZXJhY3Rpb24gPSAocHJvcHM6IFdpZGdldEludGVyYWN0aW9uKSA9PiB7XG4gICAgaWYgKHByb3BzLnRyaWdnZXIpIHtcbiAgICAgIHByb3BzLnRyaWdnZXIuaW50ZXJhY3Rpb25faWQgPSBwcm9wcy50cmlnZ2VyLmludGVyYWN0aW9uX2lkIHx8IGdldEludGVyYWN0aW9uSWQoKTtcbiAgICB9XG5cbiAgICBjb25zdCBldmVudFByb3BzID0ge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBjb250ZXh0OiBleHRyYWN0UGFnZUNvbnRleHQodmFyaWFudEluZm8gYXMgUGFnZVZhcmlhbnRJbmZvKSxcbiAgICB9IGFzIEludGVybmFsV2lkZ2V0SW50ZXJhY3Rpb247XG5cbiAgICB0cmFja0V2ZW50KHtcbiAgICAgIGV2ZW50TmFtZTogcHJvcHMuZXZlbnROYW1lLFxuICAgICAgZXZlbnRQcm9wczogeyAuLi5ldmVudFByb3BzIH0sXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgZ2V0SW50ZXJhY3Rpb25JZCA9ICgpID0+IHV1aWQoKTtcblxuICByZXR1cm4ge1xuICAgIHRyYWNrV2lkZ2V0SW50ZXJhY3Rpb24sXG4gICAgZ2V0SW50ZXJhY3Rpb25JZCxcbiAgfTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFRQSxNQUFhLDZCQUE2QjtDQUN4QyxNQUFNLEVBQUUsZUFBZUEsdUNBQWM7Q0FDckMsTUFBTSxzQ0FBMkJDLG9DQUFvQjtDQUVyRCxNQUFNLDBCQUEwQixVQUE2QjtBQUMzRCxNQUFJLE1BQU0sUUFDUixPQUFNLFFBQVEsaUJBQWlCLE1BQU0sUUFBUSxrQkFBa0Isa0JBQWtCO0VBR25GLE1BQU0sYUFBYTtHQUNqQixHQUFHO0dBQ0gsU0FBU0MseURBQW1CLFlBQStCO0dBQzVEO0FBRUQsYUFBVztHQUNULFdBQVcsTUFBTTtHQUNqQixZQUFZLEVBQUUsR0FBRyxZQUFZO0dBQzlCLENBQUM7O0NBR0osTUFBTSx1Q0FBK0I7QUFFckMsUUFBTztFQUNMO0VBQ0E7RUFDRCJ9
@@ -0,0 +1,10 @@
1
+ import { WidgetInteraction } from "./types.cjs";
2
+
3
+ //#region src/hooks/WidgetInteraction/useWidgetInteraction.d.ts
4
+ declare const useWidgetInteraction: () => {
5
+ trackWidgetInteraction: (props: WidgetInteraction) => void;
6
+ getInteractionId: () => string;
7
+ };
8
+ //#endregion
9
+ export { useWidgetInteraction };
10
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlV2lkZ2V0SW50ZXJhY3Rpb24uZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL1dpZGdldEludGVyYWN0aW9uL3VzZVdpZGdldEludGVyYWN0aW9uLmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV2lkZ2V0SW50ZXJhY3Rpb24gfSBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHVzZVdpZGdldEludGVyYWN0aW9uOiAoKSA9PiB7XG4gICAgdHJhY2tXaWRnZXRJbnRlcmFjdGlvbjogKHByb3BzOiBXaWRnZXRJbnRlcmFjdGlvbikgPT4gdm9pZDtcbiAgICBnZXRJbnRlcmFjdGlvbklkOiAoKSA9PiBzdHJpbmc7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFDQSxJQUFXLHVCQUF1QixDQUFDLFdBQVcsa0JBQUcifQ==
@@ -0,0 +1,10 @@
1
+ import { WidgetInteraction } from "./types.js";
2
+
3
+ //#region src/hooks/WidgetInteraction/useWidgetInteraction.d.ts
4
+ declare const useWidgetInteraction: () => {
5
+ trackWidgetInteraction: (props: WidgetInteraction) => void;
6
+ getInteractionId: () => string;
7
+ };
8
+ //#endregion
9
+ export { useWidgetInteraction };
10
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlV2lkZ2V0SW50ZXJhY3Rpb24uZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvV2lkZ2V0SW50ZXJhY3Rpb24vdXNlV2lkZ2V0SW50ZXJhY3Rpb24uZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXaWRnZXRJbnRlcmFjdGlvbiB9IGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdXNlV2lkZ2V0SW50ZXJhY3Rpb246ICgpID0+IHtcbiAgICB0cmFja1dpZGdldEludGVyYWN0aW9uOiAocHJvcHM6IFdpZGdldEludGVyYWN0aW9uKSA9PiB2b2lkO1xuICAgIGdldEludGVyYWN0aW9uSWQ6ICgpID0+IHN0cmluZztcbn07XG4iXSwibWFwcGluZ3MiOiI7OztBQUNBLElBQVcsdUJBQXVCLENBQUMsV0FBVyxrQkFBRyJ9
@@ -0,0 +1,33 @@
1
+ import { pageVariantInfoAtom } from "../../atoms/app/variant.js";
2
+ import "../../atoms/app/index.js";
3
+ import { useAmplitude } from "../../contexts/amplitudeContext/amplitudeContext.js";
4
+ import "../../contexts/amplitudeContext/index.js";
5
+ import { extractPageContext } from "./utils.js";
6
+ import { useAtomValue } from "jotai";
7
+ import { v4 } from "uuid";
8
+
9
+ //#region src/hooks/WidgetInteraction/useWidgetInteraction.ts
10
+ const useWidgetInteraction = () => {
11
+ const { trackEvent } = useAmplitude();
12
+ const variantInfo = useAtomValue(pageVariantInfoAtom);
13
+ const trackWidgetInteraction = (props) => {
14
+ if (props.trigger) props.trigger.interaction_id = props.trigger.interaction_id || getInteractionId();
15
+ const eventProps = {
16
+ ...props,
17
+ context: extractPageContext(variantInfo)
18
+ };
19
+ trackEvent({
20
+ eventName: props.eventName,
21
+ eventProps: { ...eventProps }
22
+ });
23
+ };
24
+ const getInteractionId = () => v4();
25
+ return {
26
+ trackWidgetInteraction,
27
+ getInteractionId
28
+ };
29
+ };
30
+
31
+ //#endregion
32
+ export { useWidgetInteraction };
33
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlV2lkZ2V0SW50ZXJhY3Rpb24uanMiLCJuYW1lcyI6WyJ1dWlkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL1dpZGdldEludGVyYWN0aW9uL3VzZVdpZGdldEludGVyYWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUF0b21WYWx1ZSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IHBhZ2VWYXJpYW50SW5mb0F0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwJztcbmltcG9ydCB7IHVzZUFtcGxpdHVkZSB9IGZyb20gJ3NyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0JztcbmltcG9ydCB7IFBhZ2VWYXJpYW50SW5mbyB9IGZyb20gJ3NyYy9jb250ZXh0cy9wYWdlQ29udGV4dC90eXBlcyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBJbnRlcm5hbFdpZGdldEludGVyYWN0aW9uLCBXaWRnZXRJbnRlcmFjdGlvbiB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgZXh0cmFjdFBhZ2VDb250ZXh0IH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjb25zdCB1c2VXaWRnZXRJbnRlcmFjdGlvbiA9ICgpID0+IHtcbiAgY29uc3QgeyB0cmFja0V2ZW50IH0gPSB1c2VBbXBsaXR1ZGUoKTtcbiAgY29uc3QgdmFyaWFudEluZm8gPSB1c2VBdG9tVmFsdWUocGFnZVZhcmlhbnRJbmZvQXRvbSk7XG5cbiAgY29uc3QgdHJhY2tXaWRnZXRJbnRlcmFjdGlvbiA9IChwcm9wczogV2lkZ2V0SW50ZXJhY3Rpb24pID0+IHtcbiAgICBpZiAocHJvcHMudHJpZ2dlcikge1xuICAgICAgcHJvcHMudHJpZ2dlci5pbnRlcmFjdGlvbl9pZCA9IHByb3BzLnRyaWdnZXIuaW50ZXJhY3Rpb25faWQgfHwgZ2V0SW50ZXJhY3Rpb25JZCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGV2ZW50UHJvcHMgPSB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNvbnRleHQ6IGV4dHJhY3RQYWdlQ29udGV4dCh2YXJpYW50SW5mbyBhcyBQYWdlVmFyaWFudEluZm8pLFxuICAgIH0gYXMgSW50ZXJuYWxXaWRnZXRJbnRlcmFjdGlvbjtcblxuICAgIHRyYWNrRXZlbnQoe1xuICAgICAgZXZlbnROYW1lOiBwcm9wcy5ldmVudE5hbWUsXG4gICAgICBldmVudFByb3BzOiB7IC4uLmV2ZW50UHJvcHMgfSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBnZXRJbnRlcmFjdGlvbklkID0gKCkgPT4gdXVpZCgpO1xuXG4gIHJldHVybiB7XG4gICAgdHJhY2tXaWRnZXRJbnRlcmFjdGlvbixcbiAgICBnZXRJbnRlcmFjdGlvbklkLFxuICB9O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBUUEsTUFBYSw2QkFBNkI7Q0FDeEMsTUFBTSxFQUFFLGVBQWUsY0FBYztDQUNyQyxNQUFNLGNBQWMsYUFBYSxvQkFBb0I7Q0FFckQsTUFBTSwwQkFBMEIsVUFBNkI7QUFDM0QsTUFBSSxNQUFNLFFBQ1IsT0FBTSxRQUFRLGlCQUFpQixNQUFNLFFBQVEsa0JBQWtCLGtCQUFrQjtFQUduRixNQUFNLGFBQWE7R0FDakIsR0FBRztHQUNILFNBQVMsbUJBQW1CLFlBQStCO0dBQzVEO0FBRUQsYUFBVztHQUNULFdBQVcsTUFBTTtHQUNqQixZQUFZLEVBQUUsR0FBRyxZQUFZO0dBQzlCLENBQUM7O0NBR0osTUFBTSx5QkFBeUJBLElBQU07QUFFckMsUUFBTztFQUNMO0VBQ0E7RUFDRCJ9
@@ -0,0 +1,34 @@
1
+ const require_variantInfo = require('../../application/models/variantInfo/variantInfo.cjs');
2
+ require('../../application/models/index.cjs');
3
+ const require_hooks_WidgetInteraction_types = require('./types.cjs');
4
+
5
+ //#region src/hooks/WidgetInteraction/utils.ts
6
+ const extractPageContext = (pageVariant) => {
7
+ switch (pageVariant.variantType) {
8
+ case require_variantInfo.VariantTypeEnum.Pdp: return {
9
+ page_id: pageVariant.productId,
10
+ page_type: require_hooks_WidgetInteraction_types.WidgetInteractionPageType.PDP
11
+ };
12
+ case require_variantInfo.VariantTypeEnum.Plp: return {
13
+ page_id: pageVariant.plpId,
14
+ page_type: require_hooks_WidgetInteraction_types.WidgetInteractionPageType.PLP
15
+ };
16
+ case require_variantInfo.VariantTypeEnum.Home: return {
17
+ page_id: pageVariant.url,
18
+ page_type: require_hooks_WidgetInteraction_types.WidgetInteractionPageType.HOMEPAGE
19
+ };
20
+ case require_variantInfo.VariantTypeEnum.Other: return {
21
+ page_id: pageVariant.url,
22
+ page_type: require_hooks_WidgetInteraction_types.WidgetInteractionPageType.OTHER
23
+ };
24
+ case require_variantInfo.VariantTypeEnum.FullPageSalesAgent: return {
25
+ page_id: pageVariant.url,
26
+ page_type: require_hooks_WidgetInteraction_types.WidgetInteractionPageType.FULL_PAGE
27
+ };
28
+ }
29
+ return null;
30
+ };
31
+
32
+ //#endregion
33
+ exports.extractPageContext = extractPageContext;
34
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuY2pzIiwibmFtZXMiOlsiVmFyaWFudFR5cGVFbnVtIiwiV2lkZ2V0SW50ZXJhY3Rpb25QYWdlVHlwZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy9XaWRnZXRJbnRlcmFjdGlvbi91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYXJpYW50VHlwZUVudW0gfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7XG4gIEZ1bGxQYWdlU2FsZXNBZ2VudFZhcmlhbnRJbmZvLFxuICBIb21lVmFyaWFudEluZm8sXG4gIE90aGVyVmFyaWFudEluZm8sXG4gIFBhZ2VWYXJpYW50SW5mbyxcbiAgUERQUGFnZVZhcmlhbnRJbmZvLFxuICBQTFBQYWdlVmFyaWFudEluZm8sXG59IGZyb20gJy4uLy4uL2NvbnRleHRzL3BhZ2VDb250ZXh0L3R5cGVzJztcbmltcG9ydCB7IFdpZGdldEludGVyYWN0aW9uQ29udGV4dCwgV2lkZ2V0SW50ZXJhY3Rpb25QYWdlVHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgZXh0cmFjdFBhZ2VDb250ZXh0ID0gKFxuICBwYWdlVmFyaWFudDogUGFnZVZhcmlhbnRJbmZvLFxuKTogV2lkZ2V0SW50ZXJhY3Rpb25Db250ZXh0IHwgbnVsbCA9PiB7XG4gIHN3aXRjaCAocGFnZVZhcmlhbnQudmFyaWFudFR5cGUpIHtcbiAgICBjYXNlIFZhcmlhbnRUeXBlRW51bS5QZHA6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYWdlX2lkOiAocGFnZVZhcmlhbnQgYXMgUERQUGFnZVZhcmlhbnRJbmZvKS5wcm9kdWN0SWQsXG4gICAgICAgIHBhZ2VfdHlwZTogV2lkZ2V0SW50ZXJhY3Rpb25QYWdlVHlwZS5QRFAsXG4gICAgICB9O1xuICAgIGNhc2UgVmFyaWFudFR5cGVFbnVtLlBscDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhZ2VfaWQ6IChwYWdlVmFyaWFudCBhcyBQTFBQYWdlVmFyaWFudEluZm8pLnBscElkLFxuICAgICAgICBwYWdlX3R5cGU6IFdpZGdldEludGVyYWN0aW9uUGFnZVR5cGUuUExQLFxuICAgICAgfTtcbiAgICBjYXNlIFZhcmlhbnRUeXBlRW51bS5Ib21lOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGFnZV9pZDogKHBhZ2VWYXJpYW50IGFzIEhvbWVWYXJpYW50SW5mbykudXJsLFxuICAgICAgICBwYWdlX3R5cGU6IFdpZGdldEludGVyYWN0aW9uUGFnZVR5cGUuSE9NRVBBR0UsXG4gICAgICB9O1xuICAgIGNhc2UgVmFyaWFudFR5cGVFbnVtLk90aGVyOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGFnZV9pZDogKHBhZ2VWYXJpYW50IGFzIE90aGVyVmFyaWFudEluZm8pLnVybCxcbiAgICAgICAgcGFnZV90eXBlOiBXaWRnZXRJbnRlcmFjdGlvblBhZ2VUeXBlLk9USEVSLFxuICAgICAgfTtcbiAgICBjYXNlIFZhcmlhbnRUeXBlRW51bS5GdWxsUGFnZVNhbGVzQWdlbnQ6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYWdlX2lkOiAocGFnZVZhcmlhbnQgYXMgRnVsbFBhZ2VTYWxlc0FnZW50VmFyaWFudEluZm8pLnVybCxcbiAgICAgICAgcGFnZV90eXBlOiBXaWRnZXRJbnRlcmFjdGlvblBhZ2VUeXBlLkZVTExfUEFHRSxcbiAgICAgIH07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBV0EsTUFBYSxzQkFDWCxnQkFDb0M7QUFDcEMsU0FBUSxZQUFZLGFBQXBCO0VBQ0UsS0FBS0Esb0NBQWdCLElBQ25CLFFBQU87R0FDTCxTQUFVLFlBQW1DO0dBQzdDLFdBQVdDLGdFQUEwQjtHQUN0QztFQUNILEtBQUtELG9DQUFnQixJQUNuQixRQUFPO0dBQ0wsU0FBVSxZQUFtQztHQUM3QyxXQUFXQyxnRUFBMEI7R0FDdEM7RUFDSCxLQUFLRCxvQ0FBZ0IsS0FDbkIsUUFBTztHQUNMLFNBQVUsWUFBZ0M7R0FDMUMsV0FBV0MsZ0VBQTBCO0dBQ3RDO0VBQ0gsS0FBS0Qsb0NBQWdCLE1BQ25CLFFBQU87R0FDTCxTQUFVLFlBQWlDO0dBQzNDLFdBQVdDLGdFQUEwQjtHQUN0QztFQUNILEtBQUtELG9DQUFnQixtQkFDbkIsUUFBTztHQUNMLFNBQVUsWUFBOEM7R0FDeEQsV0FBV0MsZ0VBQTBCO0dBQ3RDOztBQUdMLFFBQU8ifQ==
@@ -0,0 +1,8 @@
1
+ import { PageVariantInfo } from "../../contexts/pageContext/types.cjs";
2
+ import { WidgetInteractionContext } from "./types.cjs";
3
+
4
+ //#region src/hooks/WidgetInteraction/utils.d.ts
5
+ declare const extractPageContext: (pageVariant: PageVariantInfo) => WidgetInteractionContext | null;
6
+ //#endregion
7
+ export { extractPageContext };
8
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL1dpZGdldEludGVyYWN0aW9uL3V0aWxzLmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFnZVZhcmlhbnRJbmZvIH0gZnJvbSAnLi4vLi4vY29udGV4dHMvcGFnZUNvbnRleHQvdHlwZXMnO1xuaW1wb3J0IHsgV2lkZ2V0SW50ZXJhY3Rpb25Db250ZXh0IH0gZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBleHRyYWN0UGFnZUNvbnRleHQ6IChwYWdlVmFyaWFudDogUGFnZVZhcmlhbnRJbmZvKSA9PiBXaWRnZXRJbnRlcmFjdGlvbkNvbnRleHQgfCBudWxsO1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBRUEsSUFBVyxxQkFBcUI7Q0FBQztPQUFXO09BQXVCO0NBQXlCIn0=
@@ -0,0 +1,8 @@
1
+ import { PageVariantInfo } from "../../contexts/pageContext/types.js";
2
+ import { WidgetInteractionContext } from "./types.js";
3
+
4
+ //#region src/hooks/WidgetInteraction/utils.d.ts
5
+ declare const extractPageContext: (pageVariant: PageVariantInfo) => WidgetInteractionContext | null;
6
+ //#endregion
7
+ export { extractPageContext };
8
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvV2lkZ2V0SW50ZXJhY3Rpb24vdXRpbHMuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYWdlVmFyaWFudEluZm8gfSBmcm9tICcuLi8uLi9jb250ZXh0cy9wYWdlQ29udGV4dC90eXBlcyc7XG5pbXBvcnQgeyBXaWRnZXRJbnRlcmFjdGlvbkNvbnRleHQgfSBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGV4dHJhY3RQYWdlQ29udGV4dDogKHBhZ2VWYXJpYW50OiBQYWdlVmFyaWFudEluZm8pID0+IFdpZGdldEludGVyYWN0aW9uQ29udGV4dCB8IG51bGw7XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSxJQUFXLHFCQUFxQjtDQUFDO09BQVc7T0FBdUI7Q0FBeUIifQ==
@@ -0,0 +1,34 @@
1
+ import { VariantTypeEnum } from "../../application/models/variantInfo/variantInfo.js";
2
+ import "../../application/models/index.js";
3
+ import { WidgetInteractionPageType } from "./types.js";
4
+
5
+ //#region src/hooks/WidgetInteraction/utils.ts
6
+ const extractPageContext = (pageVariant) => {
7
+ switch (pageVariant.variantType) {
8
+ case VariantTypeEnum.Pdp: return {
9
+ page_id: pageVariant.productId,
10
+ page_type: WidgetInteractionPageType.PDP
11
+ };
12
+ case VariantTypeEnum.Plp: return {
13
+ page_id: pageVariant.plpId,
14
+ page_type: WidgetInteractionPageType.PLP
15
+ };
16
+ case VariantTypeEnum.Home: return {
17
+ page_id: pageVariant.url,
18
+ page_type: WidgetInteractionPageType.HOMEPAGE
19
+ };
20
+ case VariantTypeEnum.Other: return {
21
+ page_id: pageVariant.url,
22
+ page_type: WidgetInteractionPageType.OTHER
23
+ };
24
+ case VariantTypeEnum.FullPageSalesAgent: return {
25
+ page_id: pageVariant.url,
26
+ page_type: WidgetInteractionPageType.FULL_PAGE
27
+ };
28
+ }
29
+ return null;
30
+ };
31
+
32
+ //#endregion
33
+ export { extractPageContext };
34
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL1dpZGdldEludGVyYWN0aW9uL3V0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhcmlhbnRUeXBlRW51bSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgRnVsbFBhZ2VTYWxlc0FnZW50VmFyaWFudEluZm8sXG4gIEhvbWVWYXJpYW50SW5mbyxcbiAgT3RoZXJWYXJpYW50SW5mbyxcbiAgUGFnZVZhcmlhbnRJbmZvLFxuICBQRFBQYWdlVmFyaWFudEluZm8sXG4gIFBMUFBhZ2VWYXJpYW50SW5mbyxcbn0gZnJvbSAnLi4vLi4vY29udGV4dHMvcGFnZUNvbnRleHQvdHlwZXMnO1xuaW1wb3J0IHsgV2lkZ2V0SW50ZXJhY3Rpb25Db250ZXh0LCBXaWRnZXRJbnRlcmFjdGlvblBhZ2VUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBleHRyYWN0UGFnZUNvbnRleHQgPSAoXG4gIHBhZ2VWYXJpYW50OiBQYWdlVmFyaWFudEluZm8sXG4pOiBXaWRnZXRJbnRlcmFjdGlvbkNvbnRleHQgfCBudWxsID0+IHtcbiAgc3dpdGNoIChwYWdlVmFyaWFudC52YXJpYW50VHlwZSkge1xuICAgIGNhc2UgVmFyaWFudFR5cGVFbnVtLlBkcDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhZ2VfaWQ6IChwYWdlVmFyaWFudCBhcyBQRFBQYWdlVmFyaWFudEluZm8pLnByb2R1Y3RJZCxcbiAgICAgICAgcGFnZV90eXBlOiBXaWRnZXRJbnRlcmFjdGlvblBhZ2VUeXBlLlBEUCxcbiAgICAgIH07XG4gICAgY2FzZSBWYXJpYW50VHlwZUVudW0uUGxwOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGFnZV9pZDogKHBhZ2VWYXJpYW50IGFzIFBMUFBhZ2VWYXJpYW50SW5mbykucGxwSWQsXG4gICAgICAgIHBhZ2VfdHlwZTogV2lkZ2V0SW50ZXJhY3Rpb25QYWdlVHlwZS5QTFAsXG4gICAgICB9O1xuICAgIGNhc2UgVmFyaWFudFR5cGVFbnVtLkhvbWU6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYWdlX2lkOiAocGFnZVZhcmlhbnQgYXMgSG9tZVZhcmlhbnRJbmZvKS51cmwsXG4gICAgICAgIHBhZ2VfdHlwZTogV2lkZ2V0SW50ZXJhY3Rpb25QYWdlVHlwZS5IT01FUEFHRSxcbiAgICAgIH07XG4gICAgY2FzZSBWYXJpYW50VHlwZUVudW0uT3RoZXI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYWdlX2lkOiAocGFnZVZhcmlhbnQgYXMgT3RoZXJWYXJpYW50SW5mbykudXJsLFxuICAgICAgICBwYWdlX3R5cGU6IFdpZGdldEludGVyYWN0aW9uUGFnZVR5cGUuT1RIRVIsXG4gICAgICB9O1xuICAgIGNhc2UgVmFyaWFudFR5cGVFbnVtLkZ1bGxQYWdlU2FsZXNBZ2VudDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhZ2VfaWQ6IChwYWdlVmFyaWFudCBhcyBGdWxsUGFnZVNhbGVzQWdlbnRWYXJpYW50SW5mbykudXJsLFxuICAgICAgICBwYWdlX3R5cGU6IFdpZGdldEludGVyYWN0aW9uUGFnZVR5cGUuRlVMTF9QQUdFLFxuICAgICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFXQSxNQUFhLHNCQUNYLGdCQUNvQztBQUNwQyxTQUFRLFlBQVksYUFBcEI7RUFDRSxLQUFLLGdCQUFnQixJQUNuQixRQUFPO0dBQ0wsU0FBVSxZQUFtQztHQUM3QyxXQUFXLDBCQUEwQjtHQUN0QztFQUNILEtBQUssZ0JBQWdCLElBQ25CLFFBQU87R0FDTCxTQUFVLFlBQW1DO0dBQzdDLFdBQVcsMEJBQTBCO0dBQ3RDO0VBQ0gsS0FBSyxnQkFBZ0IsS0FDbkIsUUFBTztHQUNMLFNBQVUsWUFBZ0M7R0FDMUMsV0FBVywwQkFBMEI7R0FDdEM7RUFDSCxLQUFLLGdCQUFnQixNQUNuQixRQUFPO0dBQ0wsU0FBVSxZQUFpQztHQUMzQyxXQUFXLDBCQUEwQjtHQUN0QztFQUNILEtBQUssZ0JBQWdCLG1CQUNuQixRQUFPO0dBQ0wsU0FBVSxZQUE4QztHQUN4RCxXQUFXLDBCQUEwQjtHQUN0Qzs7QUFHTCxRQUFPIn0=
@@ -19,4 +19,4 @@ declare enum SearchResultsState {
19
19
  declare const getSearchResultsState: (isLoadingSearch: boolean, searchData: SearchResult | null) => SearchResultsState;
20
20
  //#endregion
21
21
  export { SearchResultsState, createAppLoadedEvent, createVisitUserEvent, getSearchResultsState, isElementPartiallyVisible, isWithinBusinessHours };
22
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3V0aWxzLmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VhcmNoUmVzdWx0IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvc2VhcmNoJztcbmltcG9ydCB7IFVzZXJFdmVudCwgVmFyaWFudEluZm8gfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzRWxlbWVudFBhcnRpYWxseVZpc2libGU6IChlbD86IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4gYm9vbGVhbjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGNyZWF0ZUFwcExvYWRlZEV2ZW50OiAoKSA9PiBVc2VyRXZlbnQ7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBjcmVhdGVWaXNpdFVzZXJFdmVudDogKHsgdmFyaWFudEluZm8sIH06IHtcbiAgICB2YXJpYW50SW5mbzogVmFyaWFudEluZm87XG59KSA9PiBVc2VyRXZlbnQgfCB1bmRlZmluZWQ7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc1dpdGhpbkJ1c2luZXNzSG91cnM6IChzdGFydFRpbWU6IHN0cmluZywgZW5kVGltZTogc3RyaW5nLCB0aW1lWm9uZTogc3RyaW5nKSA9PiBib29sZWFuO1xuZXhwb3J0IGRlY2xhcmUgZW51bSBTZWFyY2hSZXN1bHRzU3RhdGUge1xuICAgIExvYWRpbmcgPSAwLFxuICAgIFJlc3VsdHMgPSAxLFxuICAgIE5vUmVzdWx0cyA9IDJcbn1cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGdldFNlYXJjaFJlc3VsdHNTdGF0ZTogKGlzTG9hZGluZ1NlYXJjaDogYm9vbGVhbiwgc2VhcmNoRGF0YTogU2VhcmNoUmVzdWx0IHwgbnVsbCkgPT4gU2VhcmNoUmVzdWx0c1N0YXRlO1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUVBLElBQVcsNEJBQTRCLENBQUMsU0FBUyxlQUFlO0FBQ2hFLElBQVcsdUJBQXVCLENBQUMsU0FBUyxVQUFVO0FBQ3RELElBQVcsdUJBQXVCO0NBQUM7T0FBUztPQUFrQjtPQUFBO0NBQUE7QUFDOUQsSUFBVyx3QkFBaUIsQ0FBQSxFQUFBO0FBQzVCLElBQVcscUJBQWdCLENBQUEsRUFBQTtBQUMzQixJQUFXLHdCQUF3QjtDQUFDO09BQVM7T0FBb0I7Q0FBbUIifQ==
22
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3V0aWxzLmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VhcmNoUmVzdWx0IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvc2VhcmNoJztcbmltcG9ydCB7IFVzZXJFdmVudCwgVmFyaWFudEluZm8gfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzRWxlbWVudFBhcnRpYWxseVZpc2libGU6IChlbD86IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4gYm9vbGVhbjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGNyZWF0ZUFwcExvYWRlZEV2ZW50OiAoKSA9PiBVc2VyRXZlbnQ7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBjcmVhdGVWaXNpdFVzZXJFdmVudDogKHsgdmFyaWFudEluZm8sIH06IHtcbiAgICB2YXJpYW50SW5mbzogVmFyaWFudEluZm87XG59KSA9PiBVc2VyRXZlbnQgfCB1bmRlZmluZWQ7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc1dpdGhpbkJ1c2luZXNzSG91cnM6IChzdGFydFRpbWU6IHN0cmluZywgZW5kVGltZTogc3RyaW5nLCB0aW1lWm9uZTogc3RyaW5nKSA9PiBib29sZWFuO1xuZXhwb3J0IGRlY2xhcmUgZW51bSBTZWFyY2hSZXN1bHRzU3RhdGUge1xuICAgIExvYWRpbmcgPSAwLFxuICAgIFJlc3VsdHMgPSAxLFxuICAgIE5vUmVzdWx0cyA9IDJcbn1cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGdldFNlYXJjaFJlc3VsdHNTdGF0ZTogKGlzTG9hZGluZ1NlYXJjaDogYm9vbGVhbiwgc2VhcmNoRGF0YTogU2VhcmNoUmVzdWx0IHwgbnVsbCkgPT4gU2VhcmNoUmVzdWx0c1N0YXRlO1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUVBLElBQVcsNEJBQTRCLENBQUMsV0FBVyxlQUFlO0FBQ2xFLElBQVcsdUJBQXVCLENBQUMsV0FBVyxVQUFVO0FBQ3hELElBQVcsdUJBQXVCO0NBQUM7T0FBVztPQUFnQjtPQUFBO0NBQUE7QUFDOUQsSUFBVyx3QkFBaUIsQ0FBQSxJQUFBO0FBQzVCLElBQVcscUJBQWdCLENBQUEsSUFBQTtBQUMzQixJQUFXLHdCQUF3QjtDQUFDO09BQVc7T0FBb0I7Q0FBbUIifQ==
@@ -19,4 +19,4 @@ declare enum SearchResultsState {
19
19
  declare const getSearchResultsState: (isLoadingSearch: boolean, searchData: SearchResult | null) => SearchResultsState;
20
20
  //#endregion
21
21
  export { SearchResultsState, createAppLoadedEvent, createVisitUserEvent, getSearchResultsState, isElementPartiallyVisible, isWithinBusinessHours };
22
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXRpbHMuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWFyY2hSZXN1bHQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9zZWFyY2gnO1xuaW1wb3J0IHsgVXNlckV2ZW50LCBWYXJpYW50SW5mbyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNFbGVtZW50UGFydGlhbGx5VmlzaWJsZTogKGVsPzogSFRNTERpdkVsZW1lbnQgfCBudWxsKSA9PiBib29sZWFuO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgY3JlYXRlQXBwTG9hZGVkRXZlbnQ6ICgpID0+IFVzZXJFdmVudDtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGNyZWF0ZVZpc2l0VXNlckV2ZW50OiAoeyB2YXJpYW50SW5mbywgfToge1xuICAgIHZhcmlhbnRJbmZvOiBWYXJpYW50SW5mbztcbn0pID0+IFVzZXJFdmVudCB8IHVuZGVmaW5lZDtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzV2l0aGluQnVzaW5lc3NIb3VyczogKHN0YXJ0VGltZTogc3RyaW5nLCBlbmRUaW1lOiBzdHJpbmcsIHRpbWVab25lOiBzdHJpbmcpID0+IGJvb2xlYW47XG5leHBvcnQgZGVjbGFyZSBlbnVtIFNlYXJjaFJlc3VsdHNTdGF0ZSB7XG4gICAgTG9hZGluZyA9IDAsXG4gICAgUmVzdWx0cyA9IDEsXG4gICAgTm9SZXN1bHRzID0gMlxufVxuZXhwb3J0IGRlY2xhcmUgY29uc3QgZ2V0U2VhcmNoUmVzdWx0c1N0YXRlOiAoaXNMb2FkaW5nU2VhcmNoOiBib29sZWFuLCBzZWFyY2hEYXRhOiBTZWFyY2hSZXN1bHQgfCBudWxsKSA9PiBTZWFyY2hSZXN1bHRzU3RhdGU7XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsSUFBVyw0QkFBNEIsQ0FBQyxVQUFVLGVBQWU7QUFDakUsSUFBVyx1QkFBdUIsQ0FBQyxVQUFVLFVBQVU7QUFDdkQsSUFBVyx1QkFBdUI7Q0FBQztPQUFVO09BQWlCO09BQUE7Q0FBQTtBQUM5RCxJQUFXLHdCQUFpQixDQUFBLEdBQUE7QUFDNUIsSUFBVyxxQkFBZ0IsQ0FBQSxHQUFBO0FBQzNCLElBQVcsd0JBQXdCO0NBQUM7T0FBVTtPQUFvQjtDQUFtQiJ9
22
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXRpbHMuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWFyY2hSZXN1bHQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9zZWFyY2gnO1xuaW1wb3J0IHsgVXNlckV2ZW50LCBWYXJpYW50SW5mbyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNFbGVtZW50UGFydGlhbGx5VmlzaWJsZTogKGVsPzogSFRNTERpdkVsZW1lbnQgfCBudWxsKSA9PiBib29sZWFuO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgY3JlYXRlQXBwTG9hZGVkRXZlbnQ6ICgpID0+IFVzZXJFdmVudDtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGNyZWF0ZVZpc2l0VXNlckV2ZW50OiAoeyB2YXJpYW50SW5mbywgfToge1xuICAgIHZhcmlhbnRJbmZvOiBWYXJpYW50SW5mbztcbn0pID0+IFVzZXJFdmVudCB8IHVuZGVmaW5lZDtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzV2l0aGluQnVzaW5lc3NIb3VyczogKHN0YXJ0VGltZTogc3RyaW5nLCBlbmRUaW1lOiBzdHJpbmcsIHRpbWVab25lOiBzdHJpbmcpID0+IGJvb2xlYW47XG5leHBvcnQgZGVjbGFyZSBlbnVtIFNlYXJjaFJlc3VsdHNTdGF0ZSB7XG4gICAgTG9hZGluZyA9IDAsXG4gICAgUmVzdWx0cyA9IDEsXG4gICAgTm9SZXN1bHRzID0gMlxufVxuZXhwb3J0IGRlY2xhcmUgY29uc3QgZ2V0U2VhcmNoUmVzdWx0c1N0YXRlOiAoaXNMb2FkaW5nU2VhcmNoOiBib29sZWFuLCBzZWFyY2hEYXRhOiBTZWFyY2hSZXN1bHQgfCBudWxsKSA9PiBTZWFyY2hSZXN1bHRzU3RhdGU7XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsSUFBVyw0QkFBNEIsQ0FBQyxTQUFTLGVBQWU7QUFDaEUsSUFBVyx1QkFBdUIsQ0FBQyxTQUFTLFVBQVU7QUFDdEQsSUFBVyx1QkFBdUI7Q0FBQztPQUFTO09BQWtCO09BQUE7Q0FBQTtBQUM5RCxJQUFXLHdCQUFpQixDQUFBLEVBQUE7QUFDNUIsSUFBVyxxQkFBZ0IsQ0FBQSxFQUFBO0FBQzNCLElBQVcsd0JBQXdCO0NBQUM7T0FBUztPQUFvQjtDQUFtQiJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@envive-ai/react-hooks",
3
- "version": "0.3.14",
3
+ "version": "0.3.15-beta.0",
4
4
  "description": "React hooks for connecting to Envive AI services.",
5
5
  "keywords": [
6
6
  "react",
@@ -378,6 +378,18 @@
378
378
  "import": "./dist/hooks/utils.js",
379
379
  "require": "./dist/hooks/utils.cjs"
380
380
  },
381
+ "./hooks/WidgetInteraction": {
382
+ "import": "./dist/hooks/WidgetInteraction/index.js",
383
+ "require": "./dist/hooks/WidgetInteraction/index.cjs"
384
+ },
385
+ "./hooks/WidgetInteraction/types": {
386
+ "import": "./dist/hooks/WidgetInteraction/types.js",
387
+ "require": "./dist/hooks/WidgetInteraction/types.cjs"
388
+ },
389
+ "./hooks/WidgetInteraction/utils": {
390
+ "import": "./dist/hooks/WidgetInteraction/utils.js",
391
+ "require": "./dist/hooks/WidgetInteraction/utils.cjs"
392
+ },
381
393
  "./interceptors": {
382
394
  "import": "./dist/interceptors/index.js",
383
395
  "require": "./dist/interceptors/index.cjs"
@@ -1,6 +1,8 @@
1
1
  // This component will interact with the backend API to get the responses from the sales agent.
2
- import Logger from 'src/application/logging/logger';
3
2
  import { PageVisitCategory, UserEventCategory } from '@spiffy-ai/commerce-api-client';
3
+ import { useAtomValue, useSetAtom } from 'jotai';
4
+ import { useCallback } from 'react';
5
+ import Logger from 'src/application/logging/logger';
4
6
  import {
5
7
  ChatElementDisplayLocationV3,
6
8
  FormSubmittedAttributes,
@@ -9,14 +11,17 @@ import {
9
11
  Suggestion,
10
12
  UserEvent,
11
13
  } from 'src/application/models';
12
- import { useAtomValue, useSetAtom } from 'jotai';
13
- import { useCallback } from 'react';
14
- import { v4 as uuid } from 'uuid';
14
+ import { hasParsedVariantInfoAtom } from 'src/atoms/app';
15
+ import { analyticsContextAtom } from 'src/atoms/app/variant';
15
16
  import { formSubmitAtom, replyEventCategoryAtom } from 'src/atoms/chat';
16
17
  import { queueUserEventAtom } from 'src/atoms/chat/messageQueue';
18
+ import { useWidgetInteraction } from 'src/hooks/WidgetInteraction';
19
+ import {
20
+ WidgetInteractionComponent,
21
+ WidgetInteractionType,
22
+ } from 'src/hooks/WidgetInteraction/types';
17
23
  import { EnviveMetricsEventName } from 'src/services/amplitudeService/amplitudeService';
18
- import { analyticsContextAtom } from 'src/atoms/app/variant';
19
- import { hasParsedVariantInfoAtom } from 'src/atoms/app';
24
+ import { v4 as uuid } from 'uuid';
20
25
  import { SpiffyMetricsEventName, useAmplitude } from '../amplitudeContext';
21
26
 
22
27
  const TRACKED_USER_EVENTS = [
@@ -52,6 +57,7 @@ export const useSalesAgentChatAPI = () => {
52
57
  const setReplyEventCategory = useSetAtom(replyEventCategoryAtom);
53
58
  const setFormSubmit = useSetAtom(formSubmitAtom);
54
59
  const { trackEvent } = useAmplitude();
60
+ const { trackWidgetInteraction } = useWidgetInteraction();
55
61
 
56
62
  const logPageVisit = useCallback(
57
63
  ({ pageVisitCategory }: { pageVisitCategory: PageVisitCategory }) => {
@@ -104,6 +110,19 @@ export const useSalesAgentChatAPI = () => {
104
110
  );
105
111
  const onSuggestionClicked = useCallback(
106
112
  (suggestion: Suggestion, displayLocation: ChatElementDisplayLocationV3) => {
113
+ trackWidgetInteraction({
114
+ eventName: EnviveMetricsEventName.WidgetInteraction,
115
+ trigger: {
116
+ widget: WidgetInteractionComponent.FLOATING_CHAT,
117
+ widget_interaction: WidgetInteractionType.SUGGESTION_CLICKED,
118
+ widget_interaction_data: {
119
+ suggestion_clicked: {
120
+ suggestion_id: suggestion.id,
121
+ },
122
+ },
123
+ },
124
+ });
125
+
107
126
  trackEvent({
108
127
  eventName: SpiffyMetricsEventName.ChatSuggestionClicked,
109
128
  eventProps: {
@@ -159,6 +178,20 @@ export const useSalesAgentChatAPI = () => {
159
178
  displayLocation: ChatElementDisplayLocationV3;
160
179
  }) => {
161
180
  const eventId = uuid();
181
+
182
+ trackWidgetInteraction({
183
+ eventName: EnviveMetricsEventName.WidgetInteraction,
184
+ trigger: {
185
+ widget: WidgetInteractionComponent.FLOATING_CHAT,
186
+ widget_interaction: WidgetInteractionType.MESSAGE_SUBMITTED,
187
+ widget_interaction_data: {
188
+ message_submitted: {
189
+ request_text: query,
190
+ },
191
+ },
192
+ },
193
+ });
194
+
162
195
  trackEvent({
163
196
  eventName: SpiffyMetricsEventName.ChatUserMessageInput,
164
197
  eventProps: {
@@ -1,16 +1,30 @@
1
1
  import { useAtomValue, useSetAtom } from 'jotai';
2
2
  import { ChatElementDisplayLocationV3 } from 'src/application/models';
3
3
  import { chatAtom, chatOnToggleAtom } from 'src/atoms/chat';
4
- import { useAmplitude } from 'src/contexts/amplitudeContext/amplitudeContext';
5
- import { SpiffyMetricsEventName } from 'src/services/amplitudeService/amplitudeService';
4
+ import {
5
+ EnviveMetricsEventName,
6
+ SpiffyMetricsEventName,
7
+ useAmplitude,
8
+ } from 'src/contexts/amplitudeContext/amplitudeContext';
9
+ import { useWidgetInteraction } from '../WidgetInteraction';
10
+ import { WidgetInteractionComponent, WidgetInteractionType } from '../WidgetInteraction/types';
6
11
 
7
12
  export const useChatToggle = () => {
8
13
  const onToggle = useSetAtom(chatOnToggleAtom);
9
14
  const { isOpen } = useAtomValue(chatAtom);
10
15
  const { trackEvent } = useAmplitude();
16
+ const { trackWidgetInteraction } = useWidgetInteraction();
11
17
 
12
18
  const toggle = (triggerLocation: ChatElementDisplayLocationV3, triggerId?: string) => {
13
19
  if (!isOpen) {
20
+ trackWidgetInteraction({
21
+ eventName: EnviveMetricsEventName.WidgetInteraction,
22
+ trigger: {
23
+ widget: WidgetInteractionComponent.FLOATING_BUTTON,
24
+ widget_interaction: WidgetInteractionType.WIDGET_CLICKED,
25
+ },
26
+ });
27
+
14
28
  trackEvent({
15
29
  eventName: SpiffyMetricsEventName.ChatComponentExpanded,
16
30
  eventProps: {
@@ -21,6 +35,14 @@ export const useChatToggle = () => {
21
35
  },
22
36
  });
23
37
  } else {
38
+ trackWidgetInteraction({
39
+ eventName: EnviveMetricsEventName.WidgetInteraction,
40
+ trigger: {
41
+ widget: WidgetInteractionComponent.FLOATING_BUTTON,
42
+ widget_interaction: WidgetInteractionType.WIDGET_COLLAPSED,
43
+ },
44
+ });
45
+
24
46
  trackEvent({
25
47
  eventName: SpiffyMetricsEventName.ChatComponentCollapsed,
26
48
  eventProps: {
@@ -47,10 +69,21 @@ export const useChatToggle = () => {
47
69
  }
48
70
  };
49
71
 
72
+ const onHover = () => {
73
+ trackWidgetInteraction({
74
+ eventName: EnviveMetricsEventName.WidgetInteraction,
75
+ trigger: {
76
+ widget: WidgetInteractionComponent.FLOATING_BUTTON,
77
+ widget_interaction: WidgetInteractionType.WIDGET_HOVERED,
78
+ },
79
+ });
80
+ };
81
+
50
82
  return {
51
83
  toggle,
52
84
  isOpen,
53
85
  openChat,
54
86
  closeChat,
87
+ onHover,
55
88
  };
56
89
  };
@@ -0,0 +1 @@
1
+ export * from './useWidgetInteraction';
@@ -0,0 +1,139 @@
1
+ import { EnviveMetricsEventName, SpiffyMetricsEventName } from '../../contexts/amplitudeContext';
2
+
3
+ export interface WidgetInteractionContext {
4
+ page_type: WidgetInteractionPageType;
5
+ page_id: string;
6
+ }
7
+
8
+ interface WidgetInteractionTrigger {
9
+ interaction_id?: string;
10
+ widget: WidgetInteractionComponent;
11
+ widget_interaction: WidgetInteractionType;
12
+ widget_interaction_data?: WidgetInteractionData | null;
13
+ }
14
+
15
+ export interface InternalWidgetInteraction {
16
+ eventName: SpiffyMetricsEventName | EnviveMetricsEventName;
17
+ context: WidgetInteractionContext;
18
+ trigger: WidgetInteractionTrigger;
19
+ }
20
+
21
+ export interface WidgetInteraction {
22
+ eventName: InternalWidgetInteraction['eventName'];
23
+ trigger: InternalWidgetInteraction['trigger'];
24
+ }
25
+
26
+ export enum WidgetInteractionPageType {
27
+ PDP = 'pdp',
28
+ PLP = 'plp',
29
+ HOMEPAGE = 'homepage',
30
+ SEARCH = 'search',
31
+ OTHER = 'other',
32
+ FULL_PAGE = 'full_page',
33
+ }
34
+
35
+ export enum WidgetInteractionComponent {
36
+ EMBEDDED_WIDGET = 'embedded_widget',
37
+ SUGGESTION_BAR = 'suggestion_bar',
38
+ FLOATING_BUTTON = 'floating_button',
39
+ SOCIAL_PROOF = 'social_proof',
40
+ CHAT_PREVIEW = 'chat_preview',
41
+ FLOATING_CHAT = 'floating_chat',
42
+ SINGLE_IMAGE_PROMPT = 'single_image_prompt',
43
+ IMAGE_PROMPT_CARD = 'image_prompt_card',
44
+ POST_INTERACTION_COMPARISON = 'post_interaction_comparison',
45
+ POST_INTERACTION_EMBEDDED = 'post_interaction_embedded',
46
+ }
47
+
48
+ export enum WidgetInteractionType {
49
+ QUERY_INPUT_CLICKED = 'query_input_clicked',
50
+ SUGGESTION_CLICKED = 'suggestion_clicked',
51
+ WIDGET_CLICKED = 'widget_clicked',
52
+ WIDGET_HOVERED = 'widget_hovered',
53
+ WIDGET_EXPANDED = 'widget_expanded',
54
+ WIDGET_COLLAPSED = 'widget_collapsed',
55
+ SUGGESTION_SCROLLED = 'suggestion_scrolled',
56
+ LINK_CLICKED = 'link_clicked',
57
+ PRODUCT_CARD_CLICKED = 'product_card_clicked',
58
+ TEXT_LINK_CLICKED = 'text_link_clicked',
59
+ ARTICLE_LINK_CLICKED = 'article_link_clicked',
60
+ REVIEW_CARD_CLICKED = 'review_card_clicked',
61
+ MESSAGE_SUBMITTED = 'message_submitted',
62
+ MANUAL_SCROLL_TO_BOTTOM = 'manual_scroll_to_bottom',
63
+ }
64
+
65
+ export type URL = {
66
+ url: string;
67
+ };
68
+
69
+ export type Product = {
70
+ product_id: string;
71
+ };
72
+
73
+ export type Review = {
74
+ review_id: string;
75
+ };
76
+
77
+ export type Suggestion = {
78
+ suggestion_id: string;
79
+ };
80
+
81
+ export type Request = {
82
+ request_text: string;
83
+ };
84
+
85
+ export type Collapse = {
86
+ collapse_source: 'close_button' | 'swipe' | 'body_click';
87
+ };
88
+
89
+ export type SuggestionScrolled = {
90
+ suggestion_scrolled: Suggestion;
91
+ };
92
+
93
+ export type SuggestionClicked = {
94
+ suggestion_clicked: Suggestion;
95
+ };
96
+
97
+ export type SuggestionHovered = {
98
+ suggestion_hovered: Suggestion;
99
+ };
100
+
101
+ export type LinkClicked = {
102
+ link_clicked: URL;
103
+ };
104
+
105
+ export type WidgetCollapsed = {
106
+ widget_collapsed: Collapse;
107
+ };
108
+
109
+ export type TextLinkClicked = {
110
+ text_link_clicked: URL;
111
+ };
112
+
113
+ export type ArticleLinkClicked = {
114
+ article_link_clicked: URL;
115
+ };
116
+
117
+ export type ProductCardClicked = {
118
+ product_card_clicked: Product;
119
+ };
120
+
121
+ export type ReviewCardClicked = {
122
+ review_card_clicked: Review;
123
+ };
124
+
125
+ export type MessageSubmitted = {
126
+ message_submitted: Request;
127
+ };
128
+
129
+ export type WidgetInteractionData =
130
+ | SuggestionScrolled
131
+ | SuggestionClicked
132
+ | SuggestionHovered
133
+ | LinkClicked
134
+ | WidgetCollapsed
135
+ | TextLinkClicked
136
+ | ArticleLinkClicked
137
+ | ProductCardClicked
138
+ | ReviewCardClicked
139
+ | MessageSubmitted;
@@ -0,0 +1,35 @@
1
+ import { useAtomValue } from 'jotai';
2
+ import { pageVariantInfoAtom } from 'src/atoms/app';
3
+ import { useAmplitude } from 'src/contexts/amplitudeContext';
4
+ import { PageVariantInfo } from 'src/contexts/pageContext/types';
5
+ import { v4 as uuid } from 'uuid';
6
+ import { InternalWidgetInteraction, WidgetInteraction } from './types';
7
+ import { extractPageContext } from './utils';
8
+
9
+ export const useWidgetInteraction = () => {
10
+ const { trackEvent } = useAmplitude();
11
+ const variantInfo = useAtomValue(pageVariantInfoAtom);
12
+
13
+ const trackWidgetInteraction = (props: WidgetInteraction) => {
14
+ if (props.trigger) {
15
+ props.trigger.interaction_id = props.trigger.interaction_id || getInteractionId();
16
+ }
17
+
18
+ const eventProps = {
19
+ ...props,
20
+ context: extractPageContext(variantInfo as PageVariantInfo),
21
+ } as InternalWidgetInteraction;
22
+
23
+ trackEvent({
24
+ eventName: props.eventName,
25
+ eventProps: { ...eventProps },
26
+ });
27
+ };
28
+
29
+ const getInteractionId = () => uuid();
30
+
31
+ return {
32
+ trackWidgetInteraction,
33
+ getInteractionId,
34
+ };
35
+ };