@envive-ai/react-toolkit-v3 0.3.6 → 0.3.8

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 (538) hide show
  1. package/dist/AnimatedText/AnimatedText.cjs +19 -4
  2. package/dist/AnimatedText/AnimatedText.d.cts +3 -3
  3. package/dist/AnimatedText/AnimatedText.d.ts +3 -3
  4. package/dist/AnimatedText/AnimatedText.js +20 -5
  5. package/dist/AnimatedText/types/types.d.cts +0 -4
  6. package/dist/AnimatedText/types/types.d.ts +0 -4
  7. package/dist/CSSVariablesEditor/CssVariablesEditorComponent.d.cts +2 -2
  8. package/dist/CSSVariablesEditor/CssVariablesEditorComponent.d.ts +2 -2
  9. package/dist/CSSVariablesEditor/hooks/useGetCssVariablesOptions.cjs +3 -3
  10. package/dist/CSSVariablesEditor/hooks/useGetCssVariablesOptions.js +3 -3
  11. package/dist/CSSVariablesEditor/hooks/useGetCurrentMerchantColors.cjs +1 -1
  12. package/dist/CSSVariablesEditor/hooks/useGetCurrentMerchantColors.js +1 -1
  13. package/dist/CSSVariablesEditor/hooks/useGetDefaultCssVariables.cjs +10 -10
  14. package/dist/CSSVariablesEditor/hooks/useGetDefaultCssVariables.js +10 -10
  15. package/dist/CSSVariablesEditor/hooks/useHandleUpdateCssVars.cjs +9 -9
  16. package/dist/CSSVariablesEditor/hooks/useHandleUpdateCssVars.js +9 -9
  17. package/dist/CSSVariablesEditor/utils/functions.cjs +2 -2
  18. package/dist/CSSVariablesEditor/utils/functions.js +2 -2
  19. package/dist/Carousel/Carousel.cjs +2 -2
  20. package/dist/Carousel/Carousel.d.cts +2 -2
  21. package/dist/Carousel/Carousel.d.ts +2 -2
  22. package/dist/Carousel/Carousel.js +2 -2
  23. package/dist/Carousel/components/Container.cjs +2 -2
  24. package/dist/Carousel/components/Container.js +2 -2
  25. package/dist/Carousel/hooks/useGetBadgeProperties.cjs +1 -1
  26. package/dist/Carousel/hooks/useGetBadgeProperties.js +1 -1
  27. package/dist/Carousel/types/types.d.ts +1 -1
  28. package/dist/ChatFooter/ChatFooter.cjs +2 -2
  29. package/dist/ChatFooter/ChatFooter.d.cts +2 -2
  30. package/dist/ChatFooter/ChatFooter.js +2 -2
  31. package/dist/ChatFooter/components/Layout.cjs +2 -2
  32. package/dist/ChatFooter/components/Layout.d.ts +1 -1
  33. package/dist/ChatFooter/components/Layout.js +2 -2
  34. package/dist/ChatFooter/components/PromptSuggestions.d.ts +1 -1
  35. package/dist/ChatFooter/components/index.d.cts +5 -5
  36. package/dist/ChatFooter/components/index.d.ts +5 -5
  37. package/dist/ChatFooter/hooks/useGetChatScrollProperties.cjs +1 -1
  38. package/dist/ChatFooter/hooks/useGetChatScrollProperties.js +1 -1
  39. package/dist/ChatFooter/hooks/useGetContainerProperties.cjs +10 -9
  40. package/dist/ChatFooter/hooks/useGetContainerProperties.js +10 -9
  41. package/dist/ChatFooter/types/types.d.ts +1 -1
  42. package/dist/ChatHeader/ChatHeader.cjs +4 -3
  43. package/dist/ChatHeader/ChatHeader.d.cts +3 -2
  44. package/dist/ChatHeader/ChatHeader.d.ts +3 -2
  45. package/dist/ChatHeader/ChatHeader.js +4 -3
  46. package/dist/ChatHeader/components/CloseButton.cjs +1 -1
  47. package/dist/ChatHeader/components/CloseButton.js +1 -1
  48. package/dist/ChatHeader/components/Handle.cjs +38 -4
  49. package/dist/ChatHeader/components/Handle.js +38 -4
  50. package/dist/ChatHeader/components/Toggle.cjs +4 -4
  51. package/dist/ChatHeader/components/Toggle.js +4 -4
  52. package/dist/ChatHeader/hooks/useGetCloseButtonProperties.cjs +1 -1
  53. package/dist/ChatHeader/hooks/useGetCloseButtonProperties.js +1 -1
  54. package/dist/ChatHeader/hooks/useGetHandleProperties.cjs +17 -17
  55. package/dist/ChatHeader/hooks/useGetHandleProperties.js +17 -17
  56. package/dist/ChatHeader/hooks/useGetLayoutProperties.cjs +8 -8
  57. package/dist/ChatHeader/hooks/useGetLayoutProperties.js +8 -8
  58. package/dist/ChatHeader/hooks/useGetToggleOptionProperties.cjs +17 -17
  59. package/dist/ChatHeader/hooks/useGetToggleOptionProperties.js +17 -17
  60. package/dist/ChatHeader/hooks/useGetToggleProperties.cjs +3 -3
  61. package/dist/ChatHeader/hooks/useGetToggleProperties.js +3 -3
  62. package/dist/ChatHeader/hooks/useToggleLogoSelector.cjs +1 -1
  63. package/dist/ChatHeader/hooks/useToggleLogoSelector.js +1 -1
  64. package/dist/ChatHeader/types/index.d.cts +2 -0
  65. package/dist/ChatHeader/types/index.d.ts +4 -2
  66. package/dist/ChatPreview/ChatPreview.cjs +2 -2
  67. package/dist/ChatPreview/ChatPreview.d.ts +2 -2
  68. package/dist/ChatPreview/ChatPreview.js +2 -2
  69. package/dist/ChatPreview/components/Message.cjs +4 -3
  70. package/dist/ChatPreview/components/Message.js +4 -3
  71. package/dist/ChatPreview/types/types.d.ts +1 -1
  72. package/dist/ChatPreviewComparison/ChatPreviewComparison.cjs +2 -2
  73. package/dist/ChatPreviewComparison/ChatPreviewComparison.d.cts +2 -2
  74. package/dist/ChatPreviewComparison/ChatPreviewComparison.d.ts +2 -2
  75. package/dist/ChatPreviewComparison/ChatPreviewComparison.js +2 -2
  76. package/dist/ChatPreviewComparison/components/Headline.cjs +3 -3
  77. package/dist/ChatPreviewComparison/components/Headline.js +3 -3
  78. package/dist/ChatPreviewComparison/components/Layout.cjs +7 -7
  79. package/dist/ChatPreviewComparison/components/Layout.js +7 -7
  80. package/dist/ChatPreviewComparison/components/Message.cjs +7 -6
  81. package/dist/ChatPreviewComparison/components/Message.js +7 -6
  82. package/dist/ChatPreviewComparison/types/types.d.ts +1 -1
  83. package/dist/ChatPreviewLoading/ChatPreviewLoading.d.cts +2 -2
  84. package/dist/ChatPreviewLoading/ChatPreviewLoading.d.ts +2 -2
  85. package/dist/Container/Container.d.cts +174 -174
  86. package/dist/Container/Container.d.ts +174 -174
  87. package/dist/DesignTokens/DesignTokensComponent.d.cts +2 -2
  88. package/dist/DesignTokens/DesignTokensComponent.d.ts +2 -2
  89. package/dist/DesignTokens/components/Typography.cjs +1 -1
  90. package/dist/DesignTokens/components/Typography.js +1 -1
  91. package/dist/Disclaimer/Disclaimer.cjs +23 -0
  92. package/dist/Disclaimer/Disclaimer.d.cts +19 -0
  93. package/dist/Disclaimer/Disclaimer.d.ts +19 -0
  94. package/dist/Disclaimer/Disclaimer.js +22 -0
  95. package/dist/Disclaimer/components/Container.cjs +26 -0
  96. package/dist/Disclaimer/components/Container.js +24 -0
  97. package/dist/Disclaimer/components/DisclaimerContent.cjs +19 -0
  98. package/dist/Disclaimer/components/DisclaimerContent.js +18 -0
  99. package/dist/Disclaimer/components/index.cjs +11 -0
  100. package/dist/Disclaimer/components/index.js +11 -0
  101. package/dist/Disclaimer/index.cjs +3 -0
  102. package/dist/Disclaimer/index.d.cts +2 -0
  103. package/dist/Disclaimer/index.d.ts +2 -0
  104. package/dist/Disclaimer/index.js +3 -0
  105. package/dist/Disclaimer/types/types.d.cts +30 -0
  106. package/dist/Disclaimer/types/types.d.ts +30 -0
  107. package/dist/DocumentRetrievalCard/DocumentRetrievalCard.d.cts +2 -2
  108. package/dist/DocumentRetrievalCard/DocumentRetrievalCard.d.ts +2 -2
  109. package/dist/DocumentRetrievalCard/components/Layout.cjs +2 -2
  110. package/dist/DocumentRetrievalCard/components/Layout.js +2 -2
  111. package/dist/DocumentRetrievalCard/components/ViewArticleButton/components/Icon.cjs +1 -1
  112. package/dist/DocumentRetrievalCard/components/ViewArticleButton/components/Icon.js +1 -1
  113. package/dist/DocumentRetrievalCard/hooks/useGetBackgroundColorsProperties.cjs +1 -1
  114. package/dist/DocumentRetrievalCard/hooks/useGetBackgroundColorsProperties.js +1 -1
  115. package/dist/DocumentRetrievalCard/hooks/useGetBorderProperties.cjs +1 -1
  116. package/dist/DocumentRetrievalCard/hooks/useGetBorderProperties.js +1 -1
  117. package/dist/DocumentRetrievalCard/hooks/useGetBorderRadiusProperties.cjs +1 -1
  118. package/dist/DocumentRetrievalCard/hooks/useGetBorderRadiusProperties.js +1 -1
  119. package/dist/DocumentRetrievalCard/hooks/useGetIconBackgroundProperties.cjs +1 -1
  120. package/dist/DocumentRetrievalCard/hooks/useGetIconBackgroundProperties.js +1 -1
  121. package/dist/DocumentRetrievalCard/hooks/useGetIconColorProperties.cjs +1 -1
  122. package/dist/DocumentRetrievalCard/hooks/useGetIconColorProperties.js +1 -1
  123. package/dist/DocumentRetrievalCard/hooks/useGetLabelTextCaseProperties.cjs +1 -1
  124. package/dist/DocumentRetrievalCard/hooks/useGetLabelTextCaseProperties.js +1 -1
  125. package/dist/DocumentRetrievalCard/hooks/useGetLabelTypographyProperties.cjs +1 -1
  126. package/dist/DocumentRetrievalCard/hooks/useGetLabelTypographyProperties.js +1 -1
  127. package/dist/DocumentRetrievalCard/index.cjs +1 -1
  128. package/dist/DocumentRetrievalCard/index.d.ts +1 -1
  129. package/dist/DocumentRetrievalCard/index.js +1 -1
  130. package/dist/DocumentRetrievalCard/types/index.d.ts +1 -1
  131. package/dist/DocumentRetrievalCard/utils/functions.cjs +1 -1
  132. package/dist/DocumentRetrievalCard/utils/functions.js +1 -1
  133. package/dist/FloatingButton/FloatingButton.cjs +2 -1
  134. package/dist/FloatingButton/FloatingButton.d.cts +4 -3
  135. package/dist/FloatingButton/FloatingButton.d.ts +4 -3
  136. package/dist/FloatingButton/FloatingButton.js +2 -1
  137. package/dist/FloatingButton/components/Container.cjs +2 -2
  138. package/dist/FloatingButton/components/Container.js +2 -2
  139. package/dist/FloatingButton/hooks/useGetButtonProperties.cjs +2 -2
  140. package/dist/FloatingButton/hooks/useGetButtonProperties.js +2 -2
  141. package/dist/FloatingButton/hooks/useGetContainerProperties.cjs +2 -2
  142. package/dist/FloatingButton/hooks/useGetContainerProperties.js +2 -2
  143. package/dist/FloatingButton/types/types.cjs +4 -4
  144. package/dist/FloatingButton/types/types.d.cts +8 -4
  145. package/dist/FloatingButton/types/types.d.ts +9 -5
  146. package/dist/FloatingButton/types/types.js +4 -4
  147. package/dist/FloatingChat/FloatingChat.cjs +121 -44
  148. package/dist/FloatingChat/FloatingChat.d.cts +4 -2
  149. package/dist/FloatingChat/FloatingChat.d.ts +4 -2
  150. package/dist/FloatingChat/FloatingChat.js +123 -46
  151. package/dist/FloatingChat/components/AgentMessage.cjs +49 -24
  152. package/dist/FloatingChat/components/AgentMessage.js +49 -24
  153. package/dist/FloatingChat/components/ChatMessages.cjs +63 -44
  154. package/dist/FloatingChat/components/ChatMessages.js +62 -43
  155. package/dist/FloatingChat/components/DocumentRetrievalCardsCarousel.cjs +2 -1
  156. package/dist/FloatingChat/components/DocumentRetrievalCardsCarousel.js +2 -1
  157. package/dist/FloatingChat/components/Layout.cjs +20 -16
  158. package/dist/FloatingChat/components/Layout.js +20 -16
  159. package/dist/FloatingChat/components/MessageDivider.cjs +8 -2
  160. package/dist/FloatingChat/components/MessageDivider.js +8 -2
  161. package/dist/FloatingChat/components/ModalSheet.cjs +184 -0
  162. package/dist/FloatingChat/components/ModalSheet.js +182 -0
  163. package/dist/FloatingChat/components/SalesAgentProductCardsCarousel.cjs +3 -2
  164. package/dist/FloatingChat/components/SalesAgentProductCardsCarousel.js +3 -2
  165. package/dist/FloatingChat/components/index.cjs +1 -0
  166. package/dist/FloatingChat/components/index.js +1 -0
  167. package/dist/FloatingChat/hooks/useChatSuggestions.cjs +25 -0
  168. package/dist/FloatingChat/hooks/useChatSuggestions.js +24 -0
  169. package/dist/FloatingChat/hooks/useFilteredChatMessages.cjs +24 -0
  170. package/dist/FloatingChat/hooks/useFilteredChatMessages.js +23 -0
  171. package/dist/FloatingChat/hooks/usePreventScroll.cjs +117 -0
  172. package/dist/FloatingChat/hooks/usePreventScroll.js +116 -0
  173. package/dist/FloatingChat/hooks/useScrollToBottom.cjs +109 -11
  174. package/dist/FloatingChat/hooks/useScrollToBottom.js +110 -12
  175. package/dist/FloatingChat/hooks/useSnapCalculator.cjs +37 -0
  176. package/dist/FloatingChat/hooks/useSnapCalculator.js +35 -0
  177. package/dist/FloatingChat/hooks/useSnapControl.cjs +82 -0
  178. package/dist/FloatingChat/hooks/useSnapControl.js +81 -0
  179. package/dist/FloatingChat/hooks/useSnapSetup.cjs +56 -0
  180. package/dist/FloatingChat/hooks/useSnapSetup.js +55 -0
  181. package/dist/FloatingChat/types/types.d.cts +9 -5
  182. package/dist/FloatingChat/types/types.d.ts +10 -6
  183. package/dist/FloatingChat/utils/functions.cjs +1 -0
  184. package/dist/FloatingChat/utils/functions.js +1 -0
  185. package/dist/Image/Image.d.cts +2 -2
  186. package/dist/Image/Image.d.ts +2 -2
  187. package/dist/ImageGallery/ImageGallery.cjs +1 -1
  188. package/dist/ImageGallery/ImageGallery.d.cts +2 -2
  189. package/dist/ImageGallery/ImageGallery.d.ts +2 -2
  190. package/dist/ImageGallery/ImageGallery.js +1 -1
  191. package/dist/ImageGallery/components/Layout.cjs +2 -2
  192. package/dist/ImageGallery/components/Layout.js +2 -2
  193. package/dist/ImageGallery/types/types.d.ts +1 -1
  194. package/dist/ImageGallery/utils/functions.cjs +1 -1
  195. package/dist/ImageGallery/utils/functions.js +1 -1
  196. package/dist/MarkdownProcessor/MarkdownProcessor.d.cts +2 -2
  197. package/dist/MarkdownProcessor/MarkdownProcessor.d.ts +2 -2
  198. package/dist/MarkdownProcessor/components/MarkdownLink.cjs +4 -1
  199. package/dist/MarkdownProcessor/components/MarkdownLink.js +4 -1
  200. package/dist/Message/components/AgentContent.cjs +6 -2
  201. package/dist/Message/components/AgentContent.js +6 -2
  202. package/dist/Message/components/LinkButton.cjs +3 -3
  203. package/dist/Message/components/LinkButton.d.cts +5 -1
  204. package/dist/Message/components/LinkButton.d.ts +5 -1
  205. package/dist/Message/components/LinkButton.js +3 -3
  206. package/dist/Message/hooks/useGetLinkButtonProperties.cjs +1 -1
  207. package/dist/Message/hooks/useGetLinkButtonProperties.js +1 -1
  208. package/dist/OrderLookupCard/OrderLookupCard.cjs +2 -2
  209. package/dist/OrderLookupCard/OrderLookupCard.js +2 -2
  210. package/dist/OrderLookupCard/hooks/useGetContainerProperties.cjs +1 -1
  211. package/dist/OrderLookupCard/hooks/useGetContainerProperties.js +1 -1
  212. package/dist/OrderLookupCard/hooks/useGetImageBorderRadiusProperties.cjs +1 -1
  213. package/dist/OrderLookupCard/hooks/useGetImageBorderRadiusProperties.js +1 -1
  214. package/dist/OrderLookupCard/hooks/useGetStatusLabelProperties.cjs +1 -1
  215. package/dist/OrderLookupCard/hooks/useGetStatusLabelProperties.js +1 -1
  216. package/dist/OrderLookupCard/hooks/useGetTrackOrderLinkProperties.cjs +1 -1
  217. package/dist/OrderLookupCard/hooks/useGetTrackOrderLinkProperties.js +1 -1
  218. package/dist/OrderLookupCard/types/index.d.ts +1 -1
  219. package/dist/ProductCard/ProductCard.cjs +43 -0
  220. package/dist/ProductCard/ProductCard.d.cts +23 -0
  221. package/dist/ProductCard/ProductCard.d.ts +23 -0
  222. package/dist/ProductCard/ProductCard.js +42 -0
  223. package/dist/ProductCard/components/Carousel.cjs +25 -0
  224. package/dist/ProductCard/components/Carousel.js +24 -0
  225. package/dist/ProductCard/components/Header.cjs +42 -0
  226. package/dist/ProductCard/components/Header.js +41 -0
  227. package/dist/ProductCard/components/Poster.cjs +18 -0
  228. package/dist/ProductCard/components/Poster.js +17 -0
  229. package/dist/ProductCard/components/index.cjs +13 -0
  230. package/dist/ProductCard/components/index.js +13 -0
  231. package/dist/ProductCard/hooks/useGetCarouselProperties.cjs +8 -0
  232. package/dist/ProductCard/hooks/useGetCarouselProperties.js +7 -0
  233. package/dist/ProductCard/hooks/useGetHeaderProperties.cjs +11 -0
  234. package/dist/ProductCard/hooks/useGetHeaderProperties.js +10 -0
  235. package/dist/ProductCard/hooks/useGetPosterProperties.cjs +13 -0
  236. package/dist/ProductCard/hooks/useGetPosterProperties.js +12 -0
  237. package/dist/ProductCard/index.cjs +3 -0
  238. package/dist/ProductCard/index.d.cts +3 -0
  239. package/dist/ProductCard/index.d.ts +3 -0
  240. package/dist/ProductCard/index.js +3 -0
  241. package/dist/ProductCard/types/index.d.cts +74 -0
  242. package/dist/ProductCard/types/index.d.ts +74 -0
  243. package/dist/PromptButton/PromptButton.cjs +1 -1
  244. package/dist/PromptButton/PromptButton.d.cts +2 -2
  245. package/dist/PromptButton/PromptButton.d.ts +2 -2
  246. package/dist/PromptButton/PromptButton.js +1 -1
  247. package/dist/PromptButton/hooks/useGetIconColorsProperties.cjs +1 -1
  248. package/dist/PromptButton/hooks/useGetIconColorsProperties.js +1 -1
  249. package/dist/PromptButton/types/index.d.ts +1 -1
  250. package/dist/PromptButtonCarouselWithImage/PromptButtonCarouselWithImage.cjs +1 -1
  251. package/dist/PromptButtonCarouselWithImage/PromptButtonCarouselWithImage.d.cts +2 -2
  252. package/dist/PromptButtonCarouselWithImage/PromptButtonCarouselWithImage.js +1 -1
  253. package/dist/PromptButtonCarouselWithImage/types/types.d.ts +1 -1
  254. package/dist/PromptCarousel/PromptCarousel.cjs +2 -3
  255. package/dist/PromptCarousel/PromptCarousel.d.cts +2 -2
  256. package/dist/PromptCarousel/PromptCarousel.d.ts +2 -2
  257. package/dist/PromptCarousel/PromptCarousel.js +2 -3
  258. package/dist/PromptCarousel/hooks/useCarouselRefs.cjs +1 -1
  259. package/dist/PromptCarousel/hooks/useCarouselRefs.js +2 -2
  260. package/dist/PromptCarousel/types/types.d.ts +1 -1
  261. package/dist/ReviewCard/ReviewCard.cjs +1 -1
  262. package/dist/ReviewCard/ReviewCard.d.cts +2 -2
  263. package/dist/ReviewCard/ReviewCard.d.ts +2 -2
  264. package/dist/ReviewCard/ReviewCard.js +1 -1
  265. package/dist/ReviewCard/components/Container.cjs +2 -2
  266. package/dist/ReviewCard/components/Container.d.ts +1 -1
  267. package/dist/ReviewCard/components/Container.js +2 -2
  268. package/dist/ReviewCard/components/Rating.d.ts +1 -1
  269. package/dist/ReviewCard/components/ReadMoreButton.cjs +2 -2
  270. package/dist/ReviewCard/components/ReadMoreButton.d.ts +1 -1
  271. package/dist/ReviewCard/components/ReadMoreButton.js +2 -2
  272. package/dist/ReviewCard/components/index.d.cts +6 -6
  273. package/dist/ReviewCard/components/index.d.ts +5 -5
  274. package/dist/ReviewCard/hooks/useGetBackgroundColorsProperties.cjs +1 -1
  275. package/dist/ReviewCard/hooks/useGetBackgroundColorsProperties.js +1 -1
  276. package/dist/ReviewCard/hooks/useGetBorderProperties.cjs +1 -1
  277. package/dist/ReviewCard/hooks/useGetBorderProperties.js +1 -1
  278. package/dist/ReviewCard/hooks/useGetBorderRadiusProperties.cjs +1 -1
  279. package/dist/ReviewCard/hooks/useGetBorderRadiusProperties.js +1 -1
  280. package/dist/ReviewCard/hooks/useGetRatingBackgroundProperties.cjs +1 -1
  281. package/dist/ReviewCard/hooks/useGetRatingBackgroundProperties.js +1 -1
  282. package/dist/ReviewCard/hooks/useGetReadMoreTypographyProperties.cjs +1 -1
  283. package/dist/ReviewCard/hooks/useGetReadMoreTypographyProperties.js +1 -1
  284. package/dist/ReviewCard/hooks/useGetStarIconProperties.cjs +1 -1
  285. package/dist/ReviewCard/hooks/useGetStarIconProperties.js +1 -1
  286. package/dist/ReviewCard/types/types.d.ts +1 -1
  287. package/dist/SalesAgentProductCard/SalesAgentProductCard.cjs +1 -1
  288. package/dist/SalesAgentProductCard/SalesAgentProductCard.d.cts +2 -2
  289. package/dist/SalesAgentProductCard/SalesAgentProductCard.d.ts +2 -2
  290. package/dist/SalesAgentProductCard/SalesAgentProductCard.js +1 -1
  291. package/dist/SalesAgentProductCard/components/Container.cjs +3 -3
  292. package/dist/SalesAgentProductCard/components/Container.d.ts +1 -1
  293. package/dist/SalesAgentProductCard/components/Container.js +3 -3
  294. package/dist/SalesAgentProductCard/components/ProductName.cjs +1 -1
  295. package/dist/SalesAgentProductCard/components/ProductName.d.ts +1 -1
  296. package/dist/SalesAgentProductCard/components/ProductName.js +1 -1
  297. package/dist/SalesAgentProductCard/components/Rate.cjs +1 -1
  298. package/dist/SalesAgentProductCard/components/Rate.d.ts +1 -1
  299. package/dist/SalesAgentProductCard/components/Rate.js +1 -1
  300. package/dist/SalesAgentProductCard/components/index.d.cts +2 -2
  301. package/dist/SalesAgentProductCard/components/index.d.ts +7 -7
  302. package/dist/SalesAgentProductCard/hooks/useGetContainerProperties.cjs +1 -1
  303. package/dist/SalesAgentProductCard/hooks/useGetContainerProperties.js +1 -1
  304. package/dist/SalesAgentProductCard/hooks/useGetProductDescriptionProperties.cjs +1 -1
  305. package/dist/SalesAgentProductCard/hooks/useGetProductDescriptionProperties.js +1 -1
  306. package/dist/SalesAgentProductCard/hooks/useGetProductNameProperties.cjs +1 -1
  307. package/dist/SalesAgentProductCard/hooks/useGetProductNameProperties.js +1 -1
  308. package/dist/SalesAgentProductCard/hooks/useGetStarIconProperties.cjs +1 -1
  309. package/dist/SalesAgentProductCard/hooks/useGetStarIconProperties.js +1 -1
  310. package/dist/SalesAgentProductCard/types/types.d.ts +1 -1
  311. package/dist/SocialProof/SocialProof.cjs +23 -11
  312. package/dist/SocialProof/SocialProof.d.cts +2 -2
  313. package/dist/SocialProof/SocialProof.d.ts +2 -2
  314. package/dist/SocialProof/SocialProof.js +22 -10
  315. package/dist/SocialProof/components/Headline.cjs +4 -4
  316. package/dist/SocialProof/components/Headline.js +4 -4
  317. package/dist/SocialProof/components/LayoutFourHorizontal.cjs +2 -2
  318. package/dist/SocialProof/components/LayoutFourHorizontal.js +2 -2
  319. package/dist/SocialProof/components/Subheadline.cjs +2 -2
  320. package/dist/SocialProof/components/Subheadline.js +2 -2
  321. package/dist/SocialProof/components/Textfield.cjs +4 -2
  322. package/dist/SocialProof/components/Textfield.js +4 -2
  323. package/dist/SocialProof/hooks/index.cjs +1 -0
  324. package/dist/SocialProof/hooks/index.js +3 -0
  325. package/dist/SocialProof/hooks/useSocialProofCount.cjs +48 -0
  326. package/dist/SocialProof/hooks/useSocialProofCount.d.cts +15 -0
  327. package/dist/SocialProof/hooks/useSocialProofCount.d.ts +15 -0
  328. package/dist/SocialProof/hooks/useSocialProofCount.js +46 -0
  329. package/dist/SocialProof/index.cjs +6 -1
  330. package/dist/SocialProof/index.d.cts +3 -2
  331. package/dist/SocialProof/index.d.ts +3 -2
  332. package/dist/SocialProof/index.js +4 -2
  333. package/dist/SocialProof/types/types.cjs +14 -1
  334. package/dist/SocialProof/types/types.d.cts +26 -6
  335. package/dist/SocialProof/types/types.d.ts +27 -7
  336. package/dist/SocialProof/types/types.js +12 -1
  337. package/dist/SocialProof/utils/functions.cjs +1 -1
  338. package/dist/SocialProof/utils/functions.js +1 -1
  339. package/dist/Stack/Stack.d.cts +2 -2
  340. package/dist/TextField/TextField.cjs +1 -1
  341. package/dist/TextField/TextField.js +1 -1
  342. package/dist/TextField/components/Input.cjs +1 -1
  343. package/dist/TextField/components/Input.js +1 -1
  344. package/dist/TextField/hooks/useGetContainerProperties.cjs +5 -5
  345. package/dist/TextField/hooks/useGetContainerProperties.js +5 -5
  346. package/dist/TextField/types/index.d.ts +1 -1
  347. package/dist/TextField/utils/getInputClasses.cjs +1 -1
  348. package/dist/TextField/utils/getInputClasses.js +1 -1
  349. package/dist/TextField/utils/getSendIconElement.cjs +1 -1
  350. package/dist/TextField/utils/getSendIconElement.js +1 -1
  351. package/dist/TitledPromptCarousel/TitledPromptCarousel.cjs +2 -2
  352. package/dist/TitledPromptCarousel/TitledPromptCarousel.d.cts +2 -2
  353. package/dist/TitledPromptCarousel/TitledPromptCarousel.d.ts +2 -2
  354. package/dist/TitledPromptCarousel/TitledPromptCarousel.js +2 -2
  355. package/dist/TitledPromptCarousel/types/index.d.ts +1 -1
  356. package/dist/Tokens/index.cjs +13 -13
  357. package/dist/Tokens/index.d.ts +13 -13
  358. package/dist/Tokens/index.js +13 -13
  359. package/dist/TypingAnimation/TypingAnimation.cjs +2 -2
  360. package/dist/TypingAnimation/TypingAnimation.d.cts +2 -2
  361. package/dist/TypingAnimation/TypingAnimation.d.ts +2 -2
  362. package/dist/TypingAnimation/TypingAnimation.js +2 -2
  363. package/dist/TypingAnimation/hooks/useGetTypographyVariant.cjs +2 -2
  364. package/dist/TypingAnimation/hooks/useGetTypographyVariant.js +2 -2
  365. package/dist/TypingAnimation/types/index.d.ts +1 -1
  366. package/dist/Typography/Typography.d.cts +4 -4
  367. package/dist/Typography/Typography.d.ts +4 -4
  368. package/dist/WelcomeMessage/WelcomeMessage.cjs +1 -1
  369. package/dist/WelcomeMessage/WelcomeMessage.js +1 -1
  370. package/dist/WelcomeMessage/components/Container.cjs +2 -2
  371. package/dist/WelcomeMessage/components/Container.js +2 -2
  372. package/dist/WelcomeMessage/hooks/useGetContainerProperties.cjs +1 -1
  373. package/dist/WelcomeMessage/hooks/useGetContainerProperties.js +1 -1
  374. package/dist/WelcomeMessage/hooks/useGetSparkleIconProperties.cjs +3 -1
  375. package/dist/WelcomeMessage/hooks/useGetSparkleIconProperties.js +3 -1
  376. package/dist/WelcomeMessage/types/types.cjs +1 -1
  377. package/dist/WelcomeMessage/types/types.d.ts +1 -1
  378. package/dist/WelcomeMessage/types/types.js +1 -1
  379. package/dist/WidgetTextField/WidgetTextField.cjs +7 -3
  380. package/dist/WidgetTextField/WidgetTextField.d.cts +3 -2
  381. package/dist/WidgetTextField/WidgetTextField.d.ts +3 -2
  382. package/dist/WidgetTextField/WidgetTextField.js +7 -3
  383. package/dist/WidgetTextField/components/Container.cjs +9 -3
  384. package/dist/WidgetTextField/components/Container.js +9 -3
  385. package/dist/WidgetTextField/components/Icon.cjs +45 -14
  386. package/dist/WidgetTextField/components/Icon.js +43 -14
  387. package/dist/WidgetTextField/components/Skeleton.cjs +1 -1
  388. package/dist/WidgetTextField/components/Skeleton.js +1 -1
  389. package/dist/WidgetTextField/hooks/useGetContainerProperties.cjs +5 -4
  390. package/dist/WidgetTextField/hooks/useGetContainerProperties.js +5 -4
  391. package/dist/WidgetTextField/types/types.cjs +10 -0
  392. package/dist/WidgetTextField/types/types.d.cts +9 -0
  393. package/dist/WidgetTextField/types/types.d.ts +10 -1
  394. package/dist/WidgetTextField/types/types.js +9 -0
  395. package/dist/WidgetWrapper/WidgetWrapper.d.cts +2 -2
  396. package/dist/WidgetWrapper/WidgetWrapper.d.ts +2 -2
  397. package/dist/WidgetWrapperWithTitle/WidgetWrapperWithTitle.d.cts +2 -2
  398. package/dist/WidgetWrapperWithTitle/WidgetWrapperWithTitle.d.ts +2 -2
  399. package/dist/node_modules/jotai/esm/react.cjs +44 -0
  400. package/dist/node_modules/jotai/esm/react.js +42 -0
  401. package/dist/node_modules/jotai/esm/vanilla/internals.cjs +523 -0
  402. package/dist/node_modules/jotai/esm/vanilla/internals.js +522 -0
  403. package/dist/node_modules/jotai/esm/vanilla.cjs +22 -0
  404. package/dist/node_modules/jotai/esm/vanilla.js +22 -0
  405. package/dist/{src → packages/components-v3/src}/models/colorsConfig.cjs +1 -3
  406. package/dist/{src → packages/components-v3/src}/models/colorsConfig.js +1 -2
  407. package/dist/packages/components-v3/tokens/utils.cjs +14 -0
  408. package/dist/packages/components-v3/tokens/utils.js +12 -0
  409. package/dist/styles.css +1 -1
  410. package/dist/utils/resolveTheme.cjs +1 -1
  411. package/dist/utils/resolveTheme.js +1 -1
  412. package/dist/utils/useCheckIsMobile.cjs +1 -1
  413. package/dist/utils/useCheckIsMobile.js +1 -1
  414. package/dist/utils/useResponsiveValue.cjs +1 -1
  415. package/dist/utils/useResponsiveValue.d.ts +1 -1
  416. package/dist/utils/useResponsiveValue.js +1 -1
  417. package/package.json +9 -1
  418. package/src/components/AnimatedText/AnimatedText.tsx +25 -6
  419. package/src/components/AnimatedText/types/types.ts +0 -4
  420. package/src/components/ChatFooter/hooks/useGetContainerProperties.ts +3 -4
  421. package/src/components/ChatHeader/ChatHeader.tsx +2 -0
  422. package/src/components/ChatHeader/components/Handle.tsx +37 -3
  423. package/src/components/ChatHeader/hooks/useGetHandleProperties.ts +16 -16
  424. package/src/components/ChatHeader/hooks/useGetLayoutProperties.ts +8 -10
  425. package/src/components/ChatHeader/hooks/useGetToggleOptionProperties.ts +16 -16
  426. package/src/components/ChatHeader/hooks/useGetToggleProperties.ts +2 -2
  427. package/src/components/ChatHeader/types/index.ts +3 -0
  428. package/src/components/ChatPreview/__tests__/ChatPreview.test.tsx +17 -8
  429. package/src/components/ChatPreview/components/Message.tsx +13 -7
  430. package/src/components/ChatPreviewComparison/__tests__/ChatPreviewComparison.test.tsx +16 -6
  431. package/src/components/ChatPreviewComparison/components/Message.tsx +13 -7
  432. package/src/components/DesignTokens/components/Typography.tsx +1 -1
  433. package/src/components/Disclaimer/Disclaimer.tsx +27 -0
  434. package/src/components/Disclaimer/components/Container.tsx +35 -0
  435. package/src/components/Disclaimer/components/DisclaimerContent.tsx +18 -0
  436. package/src/components/Disclaimer/components/index.ts +7 -0
  437. package/src/components/Disclaimer/index.ts +1 -0
  438. package/src/components/Disclaimer/types/types.ts +27 -0
  439. package/src/components/FloatingButton/FloatingButton.tsx +2 -0
  440. package/src/components/FloatingButton/components/Container.tsx +3 -0
  441. package/src/components/FloatingButton/hooks/useGetButtonProperties.ts +4 -3
  442. package/src/components/FloatingButton/hooks/useGetContainerProperties.ts +2 -1
  443. package/src/components/FloatingButton/types/types.ts +9 -4
  444. package/src/components/FloatingChat/FloatingChat.tsx +186 -64
  445. package/src/components/FloatingChat/components/AgentMessage.tsx +51 -19
  446. package/src/components/FloatingChat/components/ChatMessages.tsx +35 -2
  447. package/src/components/FloatingChat/components/DocumentRetrievalCardsCarousel.tsx +3 -0
  448. package/src/components/FloatingChat/components/Layout.tsx +28 -6
  449. package/src/components/FloatingChat/components/MessageDivider.tsx +8 -2
  450. package/src/components/FloatingChat/components/ModalSheet.tsx +288 -0
  451. package/src/components/FloatingChat/components/SalesAgentProductCardsCarousel.tsx +7 -2
  452. package/src/components/FloatingChat/components/index.ts +3 -0
  453. package/src/components/FloatingChat/hooks/useChatSuggestions.ts +49 -0
  454. package/src/components/FloatingChat/hooks/useFilteredChatMessages.ts +43 -0
  455. package/src/components/FloatingChat/hooks/usePreventScroll.ts +207 -0
  456. package/src/components/FloatingChat/hooks/useScrollToBottom.ts +153 -11
  457. package/src/components/FloatingChat/hooks/useSnapCalculator.ts +41 -0
  458. package/src/components/FloatingChat/hooks/useSnapControl.ts +131 -0
  459. package/src/components/FloatingChat/hooks/useSnapSetup.ts +103 -0
  460. package/src/components/FloatingChat/types/types.ts +9 -5
  461. package/src/components/FloatingChat/utils/functions.ts +1 -0
  462. package/src/components/MarkdownProcessor/components/MarkdownLink.tsx +2 -0
  463. package/src/components/Message/__tests__/Message.test.tsx +40 -2
  464. package/src/components/Message/components/AgentContent.tsx +10 -2
  465. package/src/components/Message/components/LinkButton.tsx +3 -2
  466. package/src/components/Message/hooks/useGetLinkButtonProperties.ts +1 -1
  467. package/src/components/ProductCard/ProductCard.tsx +54 -0
  468. package/src/components/ProductCard/__tests__/ProductCard.test.tsx +191 -0
  469. package/src/components/ProductCard/components/Carousel.tsx +26 -0
  470. package/src/components/ProductCard/components/Header.tsx +53 -0
  471. package/src/components/ProductCard/components/Poster.tsx +15 -0
  472. package/src/components/ProductCard/components/index.ts +9 -0
  473. package/src/components/ProductCard/hooks/useGetCarouselProperties.ts +7 -0
  474. package/src/components/ProductCard/hooks/useGetHeaderProperties.ts +9 -0
  475. package/src/components/ProductCard/hooks/useGetInputProperties.ts +22 -0
  476. package/src/components/ProductCard/hooks/useGetPosterProperties.ts +19 -0
  477. package/src/components/ProductCard/index.ts +2 -0
  478. package/src/components/ProductCard/types/index.ts +79 -0
  479. package/src/components/PromptCarousel/PromptCarousel.tsx +0 -1
  480. package/src/components/PromptCarousel/hooks/useCarouselRefs.ts +5 -4
  481. package/src/components/SocialProof/SocialProof.tsx +25 -12
  482. package/src/components/SocialProof/__tests__/SocialProof.test.tsx +66 -17
  483. package/src/components/SocialProof/components/Textfield.tsx +4 -0
  484. package/src/components/SocialProof/hooks/index.ts +2 -0
  485. package/src/components/SocialProof/hooks/useSocialProofCount.ts +67 -0
  486. package/src/components/SocialProof/index.ts +2 -1
  487. package/src/components/SocialProof/types/types.ts +30 -6
  488. package/src/components/TextField/components/Input.tsx +6 -1
  489. package/src/components/TextField/hooks/useGetContainerProperties.ts +4 -4
  490. package/src/components/WelcomeMessage/hooks/useGetSparkleIconProperties.ts +5 -2
  491. package/src/components/WidgetTextField/WidgetTextField.tsx +8 -2
  492. package/src/components/WidgetTextField/__tests__/WidgetTextField.test.tsx +54 -0
  493. package/src/components/WidgetTextField/components/Container.tsx +2 -2
  494. package/src/components/WidgetTextField/components/Icon.tsx +50 -7
  495. package/src/components/WidgetTextField/hooks/useGetContainerProperties.ts +5 -3
  496. package/src/components/WidgetTextField/types/types.ts +10 -0
  497. package/dist/tokens/utils.cjs +0 -6
  498. package/dist/tokens/utils.js +0 -5
  499. /package/dist/{src → packages/components-v3/src}/models/colorsConfig.d.ts +0 -0
  500. /package/dist/{tokens → packages/components-v3/tokens}/aspectRatio/aspectRatio.cjs +0 -0
  501. /package/dist/{tokens → packages/components-v3/tokens}/aspectRatio/aspectRatio.d.ts +0 -0
  502. /package/dist/{tokens → packages/components-v3/tokens}/aspectRatio/aspectRatio.js +0 -0
  503. /package/dist/{tokens → packages/components-v3/tokens}/breakpoints/breakpoints.cjs +0 -0
  504. /package/dist/{tokens → packages/components-v3/tokens}/breakpoints/breakpoints.d.ts +0 -0
  505. /package/dist/{tokens → packages/components-v3/tokens}/breakpoints/breakpoints.js +0 -0
  506. /package/dist/{tokens → packages/components-v3/tokens}/colors/colors.cjs +0 -0
  507. /package/dist/{tokens → packages/components-v3/tokens}/colors/colors.d.ts +0 -0
  508. /package/dist/{tokens → packages/components-v3/tokens}/colors/colors.js +0 -0
  509. /package/dist/{tokens → packages/components-v3/tokens}/montion/motion.cjs +0 -0
  510. /package/dist/{tokens → packages/components-v3/tokens}/montion/motion.d.ts +0 -0
  511. /package/dist/{tokens → packages/components-v3/tokens}/montion/motion.js +0 -0
  512. /package/dist/{tokens → packages/components-v3/tokens}/radius/radius.cjs +0 -0
  513. /package/dist/{tokens → packages/components-v3/tokens}/radius/radius.d.ts +0 -0
  514. /package/dist/{tokens → packages/components-v3/tokens}/radius/radius.js +0 -0
  515. /package/dist/{tokens → packages/components-v3/tokens}/spacing/spacing.cjs +0 -0
  516. /package/dist/{tokens → packages/components-v3/tokens}/spacing/spacing.d.ts +0 -0
  517. /package/dist/{tokens → packages/components-v3/tokens}/spacing/spacing.js +0 -0
  518. /package/dist/{tokens → packages/components-v3/tokens}/theme/theme.cjs +0 -0
  519. /package/dist/{tokens → packages/components-v3/tokens}/theme/theme.d.ts +0 -0
  520. /package/dist/{tokens → packages/components-v3/tokens}/theme/theme.js +0 -0
  521. /package/dist/{tokens → packages/components-v3/tokens}/typography/fontFamily.cjs +0 -0
  522. /package/dist/{tokens → packages/components-v3/tokens}/typography/fontFamily.d.ts +0 -0
  523. /package/dist/{tokens → packages/components-v3/tokens}/typography/fontFamily.js +0 -0
  524. /package/dist/{tokens → packages/components-v3/tokens}/typography/fontSize.cjs +0 -0
  525. /package/dist/{tokens → packages/components-v3/tokens}/typography/fontSize.d.ts +0 -0
  526. /package/dist/{tokens → packages/components-v3/tokens}/typography/fontSize.js +0 -0
  527. /package/dist/{tokens → packages/components-v3/tokens}/typography/fontWeight.cjs +0 -0
  528. /package/dist/{tokens → packages/components-v3/tokens}/typography/fontWeight.d.ts +0 -0
  529. /package/dist/{tokens → packages/components-v3/tokens}/typography/fontWeight.js +0 -0
  530. /package/dist/{tokens → packages/components-v3/tokens}/typography/letterSpacing.cjs +0 -0
  531. /package/dist/{tokens → packages/components-v3/tokens}/typography/letterSpacing.d.ts +0 -0
  532. /package/dist/{tokens → packages/components-v3/tokens}/typography/letterSpacing.js +0 -0
  533. /package/dist/{tokens → packages/components-v3/tokens}/typography/lineHeight.cjs +0 -0
  534. /package/dist/{tokens → packages/components-v3/tokens}/typography/lineHeight.d.ts +0 -0
  535. /package/dist/{tokens → packages/components-v3/tokens}/typography/lineHeight.js +0 -0
  536. /package/dist/{tokens → packages/components-v3/tokens}/typography/typography.cjs +0 -0
  537. /package/dist/{tokens → packages/components-v3/tokens}/typography/typography.d.ts +0 -0
  538. /package/dist/{tokens → packages/components-v3/tokens}/typography/typography.js +0 -0
@@ -0,0 +1,184 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ const require_useSnapControl = require('../hooks/useSnapControl.cjs');
3
+ const require_usePreventScroll = require('../hooks/usePreventScroll.cjs');
4
+ let react = require("react");
5
+ react = require_rolldown_runtime.__toESM(react);
6
+ let react_jsx_runtime = require("react/jsx-runtime");
7
+ let framer_motion = require("framer-motion");
8
+
9
+ //#region src/components/FloatingChat/components/ModalSheet.tsx
10
+ const BOTTOM_OFFSET = 100;
11
+ const ModalSheet = ({ animationKey, children, open, height, unit, snaps = [], initSnap = 0, handler, animation = {
12
+ type: "spring",
13
+ stiffness: 300,
14
+ damping: 30
15
+ }, controlRef, onClose, onSnap, disableDrag = false }) => {
16
+ const [layerRef] = (0, framer_motion.useAnimate)();
17
+ const [containerRef] = (0, framer_motion.useAnimate)();
18
+ const { gestureRef, isScrollableArea, getScrollParent, getGestureDirection, getScrollDirections } = require_usePreventScroll.usePreventScroll();
19
+ const onSnapComplete = (currentSnap$1, nextSnap, collapsed) => {
20
+ if (collapsed) {
21
+ onClose?.();
22
+ return;
23
+ }
24
+ if (currentSnap$1 !== nextSnap) onSnap?.(nextSnap);
25
+ };
26
+ const { scope, animatedY, swipeviewHeightPx, initSnapInPixels, contentHeight, currentSnap, displayOverlay, opacityOverlay, jumpTo, defineNextSnapByPosition, resetControls, getSnapToPixel } = require_useSnapControl.useSnapControl({
27
+ animationKey,
28
+ animation,
29
+ height,
30
+ unit,
31
+ snaps,
32
+ initSnap,
33
+ overlayOpacity: .5,
34
+ onSnapComplete
35
+ });
36
+ (0, react.useImperativeHandle)(controlRef, () => ({ jumpToSnap: (snapIndex) => {
37
+ jumpTo(getSnapToPixel(snaps[snapIndex]));
38
+ } }));
39
+ const expandToFullView = () => {
40
+ if (snaps.indexOf(currentSnap) === 1) jumpTo(getSnapToPixel(2));
41
+ };
42
+ const notifySnapChanges = (isModalOpen) => {
43
+ if (isModalOpen) {
44
+ onSnap?.(currentSnap);
45
+ return;
46
+ }
47
+ const snap = resetControls();
48
+ onSnap?.(snap);
49
+ };
50
+ (0, react.useEffect)(() => {
51
+ const preventDefault = (event) => event.preventDefault();
52
+ layerRef?.current?.addEventListener("touchmove", preventDefault, { passive: false });
53
+ return () => {
54
+ layerRef?.current?.removeEventListener("touchmove", preventDefault);
55
+ };
56
+ }, [layerRef?.current]);
57
+ (0, react.useEffect)(() => {
58
+ const preventScroll = (event) => {
59
+ if (!isScrollableArea(getGestureDirection(event.touches[0].clientX, event.touches[0].clientY))) {
60
+ event.preventDefault();
61
+ event.stopPropagation();
62
+ }
63
+ };
64
+ containerRef?.current?.addEventListener("touchmove", preventScroll, { passive: false });
65
+ notifySnapChanges(open);
66
+ return () => {
67
+ containerRef?.current?.removeEventListener("touchmove", preventScroll);
68
+ };
69
+ }, [open]);
70
+ const handleDragEnd = () => {
71
+ jumpTo(defineNextSnapByPosition());
72
+ };
73
+ const handleTouchStart = (event) => {
74
+ const scrollableElement = getScrollParent(event.target);
75
+ const scrollableDirections = getScrollDirections(scrollableElement);
76
+ const parentScrollableElement = getScrollParent(scrollableElement, true);
77
+ const parentScrollableDirections = getScrollDirections(parentScrollableElement);
78
+ const grandparentScrollableElement = getScrollParent(parentScrollableElement, true);
79
+ const grandparentScrollableDirections = getScrollDirections(grandparentScrollableElement);
80
+ gestureRef.current = {
81
+ event: event.touches?.[0],
82
+ scrollableElements: [
83
+ {
84
+ element: scrollableElement,
85
+ scrollableDirections
86
+ },
87
+ {
88
+ element: parentScrollableElement,
89
+ scrollableDirections: parentScrollableDirections
90
+ },
91
+ {
92
+ element: grandparentScrollableElement,
93
+ scrollableDirections: grandparentScrollableDirections
94
+ }
95
+ ]
96
+ };
97
+ };
98
+ const handleTouchEnd = () => {
99
+ handleDragEnd();
100
+ gestureRef.current = {
101
+ scrollableElements: [],
102
+ event: null
103
+ };
104
+ };
105
+ const handleContentGesture = (fingerX, fingerY) => {
106
+ if (!gestureRef.current?.event) return;
107
+ const pointerDistance = (gestureRef.current?.event?.clientY || 0) - fingerY;
108
+ const distanceToTravel = getSnapToPixel(currentSnap) - pointerDistance;
109
+ const gestureDirection = getGestureDirection(fingerX, fingerY);
110
+ if (!(isScrollableArea(gestureDirection) || gestureDirection !== "down" && currentSnap === 100)) animatedY.set(distanceToTravel);
111
+ };
112
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(framer_motion.AnimatePresence, { children: open && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
113
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(framer_motion.motion.div, {
114
+ ref: layerRef,
115
+ style: {
116
+ display: displayOverlay,
117
+ position: "fixed",
118
+ top: 0,
119
+ left: 0,
120
+ right: 0,
121
+ bottom: 0,
122
+ opacity: opacityOverlay,
123
+ background: "black"
124
+ }
125
+ }),
126
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(framer_motion.motion.div, {
127
+ ref: scope,
128
+ drag: "y",
129
+ dragConstraints: {
130
+ top: 0,
131
+ bottom: swipeviewHeightPx
132
+ },
133
+ initial: { y: swipeviewHeightPx },
134
+ animate: { y: initSnapInPixels },
135
+ exit: { y: swipeviewHeightPx + BOTTOM_OFFSET },
136
+ transition: animation,
137
+ onDragEnd: handleDragEnd,
138
+ onClick: expandToFullView,
139
+ style: {
140
+ y: animatedY,
141
+ bottom: swipeviewHeightPx,
142
+ right: 0,
143
+ position: "fixed",
144
+ width: "100%",
145
+ zIndex: 2147483647
146
+ },
147
+ children: handler
148
+ }),
149
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(framer_motion.motion.div, {
150
+ ref: scope,
151
+ onTouchStart: handleTouchStart,
152
+ onTouchEnd: handleTouchEnd,
153
+ onTouchMove: (event) => handleContentGesture(event.touches[0].clientX, event.touches[0].clientY),
154
+ onPointerMove: disableDrag ? void 0 : (event) => handleContentGesture(event.clientX, event.clientY),
155
+ initial: { y: swipeviewHeightPx + BOTTOM_OFFSET },
156
+ animate: { y: initSnapInPixels },
157
+ exit: { y: swipeviewHeightPx + BOTTOM_OFFSET },
158
+ transition: animation,
159
+ style: {
160
+ y: animatedY,
161
+ width: "100%",
162
+ height: swipeviewHeightPx + BOTTOM_OFFSET,
163
+ position: "fixed",
164
+ bottom: -BOTTOM_OFFSET + 2,
165
+ right: 0,
166
+ boxSizing: "content-box",
167
+ zIndex: 2147483646
168
+ },
169
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(framer_motion.motion.div, {
170
+ ref: containerRef,
171
+ initial: { height: 0 },
172
+ style: {
173
+ width: "100%",
174
+ height: contentHeight,
175
+ userSelect: "none"
176
+ },
177
+ children
178
+ })
179
+ })
180
+ ] }) });
181
+ };
182
+
183
+ //#endregion
184
+ exports.ModalSheet = ModalSheet;
@@ -0,0 +1,182 @@
1
+ import { useSnapControl } from "../hooks/useSnapControl.js";
2
+ import { usePreventScroll } from "../hooks/usePreventScroll.js";
3
+ import React, { useEffect, useImperativeHandle } from "react";
4
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
+ import { AnimatePresence, motion, useAnimate } from "framer-motion";
6
+
7
+ //#region src/components/FloatingChat/components/ModalSheet.tsx
8
+ const BOTTOM_OFFSET = 100;
9
+ const ModalSheet = ({ animationKey, children, open, height, unit, snaps = [], initSnap = 0, handler, animation = {
10
+ type: "spring",
11
+ stiffness: 300,
12
+ damping: 30
13
+ }, controlRef, onClose, onSnap, disableDrag = false }) => {
14
+ const [layerRef] = useAnimate();
15
+ const [containerRef] = useAnimate();
16
+ const { gestureRef, isScrollableArea, getScrollParent, getGestureDirection, getScrollDirections } = usePreventScroll();
17
+ const onSnapComplete = (currentSnap$1, nextSnap, collapsed) => {
18
+ if (collapsed) {
19
+ onClose?.();
20
+ return;
21
+ }
22
+ if (currentSnap$1 !== nextSnap) onSnap?.(nextSnap);
23
+ };
24
+ const { scope, animatedY, swipeviewHeightPx, initSnapInPixels, contentHeight, currentSnap, displayOverlay, opacityOverlay, jumpTo, defineNextSnapByPosition, resetControls, getSnapToPixel } = useSnapControl({
25
+ animationKey,
26
+ animation,
27
+ height,
28
+ unit,
29
+ snaps,
30
+ initSnap,
31
+ overlayOpacity: .5,
32
+ onSnapComplete
33
+ });
34
+ useImperativeHandle(controlRef, () => ({ jumpToSnap: (snapIndex) => {
35
+ jumpTo(getSnapToPixel(snaps[snapIndex]));
36
+ } }));
37
+ const expandToFullView = () => {
38
+ if (snaps.indexOf(currentSnap) === 1) jumpTo(getSnapToPixel(2));
39
+ };
40
+ const notifySnapChanges = (isModalOpen) => {
41
+ if (isModalOpen) {
42
+ onSnap?.(currentSnap);
43
+ return;
44
+ }
45
+ const snap = resetControls();
46
+ onSnap?.(snap);
47
+ };
48
+ useEffect(() => {
49
+ const preventDefault = (event) => event.preventDefault();
50
+ layerRef?.current?.addEventListener("touchmove", preventDefault, { passive: false });
51
+ return () => {
52
+ layerRef?.current?.removeEventListener("touchmove", preventDefault);
53
+ };
54
+ }, [layerRef?.current]);
55
+ useEffect(() => {
56
+ const preventScroll = (event) => {
57
+ if (!isScrollableArea(getGestureDirection(event.touches[0].clientX, event.touches[0].clientY))) {
58
+ event.preventDefault();
59
+ event.stopPropagation();
60
+ }
61
+ };
62
+ containerRef?.current?.addEventListener("touchmove", preventScroll, { passive: false });
63
+ notifySnapChanges(open);
64
+ return () => {
65
+ containerRef?.current?.removeEventListener("touchmove", preventScroll);
66
+ };
67
+ }, [open]);
68
+ const handleDragEnd = () => {
69
+ jumpTo(defineNextSnapByPosition());
70
+ };
71
+ const handleTouchStart = (event) => {
72
+ const scrollableElement = getScrollParent(event.target);
73
+ const scrollableDirections = getScrollDirections(scrollableElement);
74
+ const parentScrollableElement = getScrollParent(scrollableElement, true);
75
+ const parentScrollableDirections = getScrollDirections(parentScrollableElement);
76
+ const grandparentScrollableElement = getScrollParent(parentScrollableElement, true);
77
+ const grandparentScrollableDirections = getScrollDirections(grandparentScrollableElement);
78
+ gestureRef.current = {
79
+ event: event.touches?.[0],
80
+ scrollableElements: [
81
+ {
82
+ element: scrollableElement,
83
+ scrollableDirections
84
+ },
85
+ {
86
+ element: parentScrollableElement,
87
+ scrollableDirections: parentScrollableDirections
88
+ },
89
+ {
90
+ element: grandparentScrollableElement,
91
+ scrollableDirections: grandparentScrollableDirections
92
+ }
93
+ ]
94
+ };
95
+ };
96
+ const handleTouchEnd = () => {
97
+ handleDragEnd();
98
+ gestureRef.current = {
99
+ scrollableElements: [],
100
+ event: null
101
+ };
102
+ };
103
+ const handleContentGesture = (fingerX, fingerY) => {
104
+ if (!gestureRef.current?.event) return;
105
+ const pointerDistance = (gestureRef.current?.event?.clientY || 0) - fingerY;
106
+ const distanceToTravel = getSnapToPixel(currentSnap) - pointerDistance;
107
+ const gestureDirection = getGestureDirection(fingerX, fingerY);
108
+ if (!(isScrollableArea(gestureDirection) || gestureDirection !== "down" && currentSnap === 100)) animatedY.set(distanceToTravel);
109
+ };
110
+ return /* @__PURE__ */ jsx(AnimatePresence, { children: open && /* @__PURE__ */ jsxs(Fragment, { children: [
111
+ /* @__PURE__ */ jsx(motion.div, {
112
+ ref: layerRef,
113
+ style: {
114
+ display: displayOverlay,
115
+ position: "fixed",
116
+ top: 0,
117
+ left: 0,
118
+ right: 0,
119
+ bottom: 0,
120
+ opacity: opacityOverlay,
121
+ background: "black"
122
+ }
123
+ }),
124
+ /* @__PURE__ */ jsx(motion.div, {
125
+ ref: scope,
126
+ drag: "y",
127
+ dragConstraints: {
128
+ top: 0,
129
+ bottom: swipeviewHeightPx
130
+ },
131
+ initial: { y: swipeviewHeightPx },
132
+ animate: { y: initSnapInPixels },
133
+ exit: { y: swipeviewHeightPx + BOTTOM_OFFSET },
134
+ transition: animation,
135
+ onDragEnd: handleDragEnd,
136
+ onClick: expandToFullView,
137
+ style: {
138
+ y: animatedY,
139
+ bottom: swipeviewHeightPx,
140
+ right: 0,
141
+ position: "fixed",
142
+ width: "100%",
143
+ zIndex: 2147483647
144
+ },
145
+ children: handler
146
+ }),
147
+ /* @__PURE__ */ jsx(motion.div, {
148
+ ref: scope,
149
+ onTouchStart: handleTouchStart,
150
+ onTouchEnd: handleTouchEnd,
151
+ onTouchMove: (event) => handleContentGesture(event.touches[0].clientX, event.touches[0].clientY),
152
+ onPointerMove: disableDrag ? void 0 : (event) => handleContentGesture(event.clientX, event.clientY),
153
+ initial: { y: swipeviewHeightPx + BOTTOM_OFFSET },
154
+ animate: { y: initSnapInPixels },
155
+ exit: { y: swipeviewHeightPx + BOTTOM_OFFSET },
156
+ transition: animation,
157
+ style: {
158
+ y: animatedY,
159
+ width: "100%",
160
+ height: swipeviewHeightPx + BOTTOM_OFFSET,
161
+ position: "fixed",
162
+ bottom: -BOTTOM_OFFSET + 2,
163
+ right: 0,
164
+ boxSizing: "content-box",
165
+ zIndex: 2147483646
166
+ },
167
+ children: /* @__PURE__ */ jsx(motion.div, {
168
+ ref: containerRef,
169
+ initial: { height: 0 },
170
+ style: {
171
+ width: "100%",
172
+ height: contentHeight,
173
+ userSelect: "none"
174
+ },
175
+ children
176
+ })
177
+ })
178
+ ] }) });
179
+ };
180
+
181
+ //#endregion
182
+ export { ModalSheet };
@@ -6,14 +6,15 @@ const require_SalesAgentProductCard = require('../../SalesAgentProductCard/Sales
6
6
  let react_jsx_runtime = require("react/jsx-runtime");
7
7
 
8
8
  //#region src/components/FloatingChat/components/SalesAgentProductCardsCarousel.tsx
9
- const SalesAgentProductCardsCarousel = ({ products, theme, hideNavigation = false, numberOfProducts }) => {
9
+ const SalesAgentProductCardsCarousel = ({ products, theme, hideNavigation = false, numberOfProducts, variant = require_types.SalesAgentProductCardVariant.LARGE, isPartialView = false }) => {
10
10
  const finalTheme = require_resolveTheme.resolveTheme(theme);
11
+ const finalVariant = isPartialView ? require_types.SalesAgentProductCardVariant.SMALL : variant;
11
12
  const forceShowCurrentPriceSpace = products.some((product) => product.currentPrice && product.previousPrice !== product.currentPrice);
12
13
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Carousel.Carousel, {
13
14
  hideNavigation,
14
15
  badgeLabel: numberOfProducts && numberOfProducts > 1 ? `${numberOfProducts} Products` : void 0,
15
16
  elements: products.map((product) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_SalesAgentProductCard.SalesAgentProductCard, {
16
- variant: require_types.SalesAgentProductCardVariant.LARGE,
17
+ variant: finalVariant,
17
18
  productName: product.productName,
18
19
  currentPrice: product.currentPrice,
19
20
  previousPrice: product.previousPrice,
@@ -5,14 +5,15 @@ import { SalesAgentProductCard } from "../../SalesAgentProductCard/SalesAgentPro
5
5
  import { jsx } from "react/jsx-runtime";
6
6
 
7
7
  //#region src/components/FloatingChat/components/SalesAgentProductCardsCarousel.tsx
8
- const SalesAgentProductCardsCarousel = ({ products, theme, hideNavigation = false, numberOfProducts }) => {
8
+ const SalesAgentProductCardsCarousel = ({ products, theme, hideNavigation = false, numberOfProducts, variant = SalesAgentProductCardVariant.LARGE, isPartialView = false }) => {
9
9
  const finalTheme = resolveTheme(theme);
10
+ const finalVariant = isPartialView ? SalesAgentProductCardVariant.SMALL : variant;
10
11
  const forceShowCurrentPriceSpace = products.some((product) => product.currentPrice && product.previousPrice !== product.currentPrice);
11
12
  return /* @__PURE__ */ jsx(Carousel, {
12
13
  hideNavigation,
13
14
  badgeLabel: numberOfProducts && numberOfProducts > 1 ? `${numberOfProducts} Products` : void 0,
14
15
  elements: products.map((product) => /* @__PURE__ */ jsx(SalesAgentProductCard, {
15
- variant: SalesAgentProductCardVariant.LARGE,
16
+ variant: finalVariant,
16
17
  productName: product.productName,
17
18
  currentPrice: product.currentPrice,
18
19
  previousPrice: product.previousPrice,
@@ -8,6 +8,7 @@ const require_AgentMessage = require('./AgentMessage.cjs');
8
8
  const require_MessageDivider = require('./MessageDivider.cjs');
9
9
  const require_ChatMessages = require('./ChatMessages.cjs');
10
10
  const require_ScrollToBottomButton = require('./ScrollToBottomButton.cjs');
11
+ const require_ModalSheet = require('./ModalSheet.cjs');
11
12
 
12
13
  //#region src/components/FloatingChat/components/index.ts
13
14
  const FloatingChatComponents = {
@@ -8,6 +8,7 @@ import { AgentMessage } from "./AgentMessage.js";
8
8
  import { MessageDivider } from "./MessageDivider.js";
9
9
  import { ChatMessages } from "./ChatMessages.js";
10
10
  import { ScrollToBottomButton } from "./ScrollToBottomButton.js";
11
+ import { ModalSheet } from "./ModalSheet.js";
11
12
 
12
13
  //#region src/components/FloatingChat/components/index.ts
13
14
  const FloatingChatComponents = {
@@ -0,0 +1,25 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ let react = require("react");
3
+
4
+ //#region src/components/FloatingChat/hooks/useChatSuggestions.ts
5
+ const useChatSuggestions = ({ suggestions, isPendingResponse, isResponseStreaming }) => {
6
+ const [answerSuggestions, setAnswerSuggestions] = (0, react.useState)([]);
7
+ const [generalSuggestions, setGeneralSuggestions] = (0, react.useState)([]);
8
+ const showAnswerSuggestions = answerSuggestions.length > 0 && !isPendingResponse && !isResponseStreaming;
9
+ (0, react.useEffect)(() => {
10
+ if (suggestions.length > 0) {
11
+ setAnswerSuggestions(suggestions.filter((suggestion) => suggestion.isAnswer).map((suggestion) => suggestion.content));
12
+ setGeneralSuggestions(suggestions.filter((suggestion) => !suggestion.isAnswer).map((suggestion) => suggestion.content));
13
+ }
14
+ }, [suggestions]);
15
+ return {
16
+ answerSuggestions,
17
+ generalSuggestions,
18
+ showAnswerSuggestions,
19
+ setAnswerSuggestions,
20
+ setGeneralSuggestions
21
+ };
22
+ };
23
+
24
+ //#endregion
25
+ exports.useChatSuggestions = useChatSuggestions;
@@ -0,0 +1,24 @@
1
+ import { useEffect, useState } from "react";
2
+
3
+ //#region src/components/FloatingChat/hooks/useChatSuggestions.ts
4
+ const useChatSuggestions = ({ suggestions, isPendingResponse, isResponseStreaming }) => {
5
+ const [answerSuggestions, setAnswerSuggestions] = useState([]);
6
+ const [generalSuggestions, setGeneralSuggestions] = useState([]);
7
+ const showAnswerSuggestions = answerSuggestions.length > 0 && !isPendingResponse && !isResponseStreaming;
8
+ useEffect(() => {
9
+ if (suggestions.length > 0) {
10
+ setAnswerSuggestions(suggestions.filter((suggestion) => suggestion.isAnswer).map((suggestion) => suggestion.content));
11
+ setGeneralSuggestions(suggestions.filter((suggestion) => !suggestion.isAnswer).map((suggestion) => suggestion.content));
12
+ }
13
+ }, [suggestions]);
14
+ return {
15
+ answerSuggestions,
16
+ generalSuggestions,
17
+ showAnswerSuggestions,
18
+ setAnswerSuggestions,
19
+ setGeneralSuggestions
20
+ };
21
+ };
22
+
23
+ //#endregion
24
+ export { useChatSuggestions };
@@ -0,0 +1,24 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ let react = require("react");
3
+ let __envive_ai_react_hooks_hooks_MessageFilter = require("@envive-ai/react-hooks/hooks/MessageFilter");
4
+
5
+ //#region src/components/FloatingChat/hooks/useFilteredChatMessages.ts
6
+ const useFilteredChatMessages = ({ messages, isMobile, currentSnapPercentage, modalSheetControl }) => {
7
+ const { getFilteredMessages } = (0, __envive_ai_react_hooks_hooks_MessageFilter.useMessageFilter)();
8
+ const keepMessagesExpanded = !isMobile || isMobile && currentSnapPercentage === 100;
9
+ const filteredMessages = (0, react.useMemo)(() => getFilteredMessages(messages, keepMessagesExpanded), [
10
+ getFilteredMessages,
11
+ messages,
12
+ keepMessagesExpanded
13
+ ]);
14
+ const hasFilteredMessages = filteredMessages.length !== messages.length && isMobile;
15
+ const handlePreviousDiscussions = () => modalSheetControl.current?.jumpToSnap(2);
16
+ return {
17
+ filteredMessages,
18
+ hasFilteredMessages,
19
+ handlePreviousDiscussions
20
+ };
21
+ };
22
+
23
+ //#endregion
24
+ exports.useFilteredChatMessages = useFilteredChatMessages;
@@ -0,0 +1,23 @@
1
+ import { useMemo } from "react";
2
+ import { useMessageFilter } from "@envive-ai/react-hooks/hooks/MessageFilter";
3
+
4
+ //#region src/components/FloatingChat/hooks/useFilteredChatMessages.ts
5
+ const useFilteredChatMessages = ({ messages, isMobile, currentSnapPercentage, modalSheetControl }) => {
6
+ const { getFilteredMessages } = useMessageFilter();
7
+ const keepMessagesExpanded = !isMobile || isMobile && currentSnapPercentage === 100;
8
+ const filteredMessages = useMemo(() => getFilteredMessages(messages, keepMessagesExpanded), [
9
+ getFilteredMessages,
10
+ messages,
11
+ keepMessagesExpanded
12
+ ]);
13
+ const hasFilteredMessages = filteredMessages.length !== messages.length && isMobile;
14
+ const handlePreviousDiscussions = () => modalSheetControl.current?.jumpToSnap(2);
15
+ return {
16
+ filteredMessages,
17
+ hasFilteredMessages,
18
+ handlePreviousDiscussions
19
+ };
20
+ };
21
+
22
+ //#endregion
23
+ export { useFilteredChatMessages };
@@ -0,0 +1,117 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ let react = require("react");
3
+
4
+ //#region src/components/FloatingChat/hooks/usePreventScroll.ts
5
+ /**
6
+ * Prevent the body element from scrolling when a modal (partial view) is open.
7
+ *
8
+ * @returns
9
+ */
10
+ const usePreventScroll = () => {
11
+ const gestureRef = (0, react.useRef)(null);
12
+ /**
13
+ * Calculate the angle of a user gesture (grab/drop).
14
+ *
15
+ * @param startX
16
+ * @param startY
17
+ * @param endX
18
+ * @param endY
19
+ * @returns
20
+ */
21
+ const calculateAngle = (startX, startY, endX, endY) => {
22
+ const deltaX = endX - startX;
23
+ const deltaY = endY - startY;
24
+ return (Math.atan2(deltaY, deltaX) * (180 / Math.PI) + 360) % 360;
25
+ };
26
+ /**
27
+ * Test if an element has scrollable capabilities.
28
+ *
29
+ * @param node
30
+ * @returns
31
+ */
32
+ const isScrollable = (node) => {
33
+ const style = window.getComputedStyle(node);
34
+ return /(auto|scroll)/.test(style.overflow + style.overflowX + style.overflowY);
35
+ };
36
+ /**
37
+ * Find the parent node that has scrollable capabilities.
38
+ *
39
+ * @param node
40
+ * @returns
41
+ */
42
+ const getScrollParent = (node, ignoreCurrentNode = false) => {
43
+ let parentNode = ignoreCurrentNode ? node?.parentElement : node;
44
+ if (!parentNode) return null;
45
+ if (isScrollable(parentNode)) return parentNode;
46
+ while (parentNode && !isScrollable(parentNode)) parentNode = parentNode.parentElement;
47
+ if (!parentNode && isScrollable(document.body)) return document.body;
48
+ return parentNode || document.scrollingElement || document.documentElement;
49
+ };
50
+ /**
51
+ * Get the scrollable directions an element can scroll.
52
+ *
53
+ * @returns
54
+ */
55
+ const getScrollDirections = (scrollableElement) => {
56
+ const horizontalScroll = (scrollableElement?.scrollWidth || 0) > (scrollableElement?.clientWidth || 0);
57
+ const verticalScroll = (scrollableElement?.scrollHeight || 0) > (scrollableElement?.clientHeight || 0);
58
+ const scrollDirections = [];
59
+ if (horizontalScroll) scrollDirections.push("horizontal");
60
+ if (verticalScroll) scrollDirections.push("vertical");
61
+ return scrollDirections;
62
+ };
63
+ /**
64
+ * Determine the direction of a gesture event based on the angle of a grab/drop event.
65
+ *
66
+ * @param fingerX
67
+ * @param fingerY
68
+ * @returns
69
+ */
70
+ const getGestureDirection = (fingerX, fingerY) => {
71
+ const directionAngle = calculateAngle(gestureRef?.current?.event?.clientX || 0, gestureRef?.current?.event?.clientY || 0, fingerX, fingerY);
72
+ if (directionAngle < 45 || directionAngle > 315) return "right";
73
+ if (directionAngle > 45 && directionAngle < 135) return "down";
74
+ if (directionAngle > 135 && directionAngle < 225) return "left";
75
+ return "up";
76
+ };
77
+ /**
78
+ * Determine whether the direction of the gesture can scroll the element in context.
79
+ *
80
+ * @param param0
81
+ * @param direction
82
+ * @returns
83
+ */
84
+ const isScrollDirectionAllowed = ({ element, scrollableDirections }, direction) => {
85
+ if (element?.tagName === "BODY" || element?.tagName === "HTML" || scrollableDirections?.length === 0) return false;
86
+ const { clientHeight = 0, clientWidth = 0, scrollHeight = 0, scrollWidth = 0, scrollTop = 0, scrollLeft = 0 } = element || {};
87
+ const atTop = scrollTop === 0;
88
+ const atLeft = scrollLeft === 0;
89
+ const atBottom = 100 / scrollHeight * (scrollTop + clientHeight) > 99.9;
90
+ const atRight = 100 / scrollWidth * (scrollLeft + clientWidth) > 99.9;
91
+ const verticalScrollBlocked = atBottom && direction === "up" || atTop && direction === "down" || direction === "left" || direction === "right";
92
+ if (scrollableDirections?.includes("vertical") && verticalScrollBlocked) return false;
93
+ const horizontalScrollBlocked = atRight && direction === "left" || atLeft && direction === "right" || direction === "up" || direction === "down";
94
+ if (scrollableDirections?.includes("horizontal") && horizontalScrollBlocked) return false;
95
+ return true;
96
+ };
97
+ /**
98
+ * Test if the selected scrollable element can scroll in the direction of the grab/drop event.
99
+ *
100
+ * @param direction
101
+ * @returns
102
+ */
103
+ const isScrollableArea = (direction) => {
104
+ const { scrollableElements } = gestureRef.current || {};
105
+ return scrollableElements?.some((el) => isScrollDirectionAllowed(el, direction));
106
+ };
107
+ return {
108
+ gestureRef,
109
+ getScrollParent,
110
+ isScrollableArea,
111
+ getGestureDirection,
112
+ getScrollDirections
113
+ };
114
+ };
115
+
116
+ //#endregion
117
+ exports.usePreventScroll = usePreventScroll;