@clikvn/agent-widget-embedded 1.1.10 → 1.1.11-hotfix-01
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/bookMeeting.d.ts +67 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/bookMeeting.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/bookMeeting.js +78 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/bookMeeting.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/index.d.ts +3 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/index.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/index.js +3 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/index.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/variables.d.ts +11 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/variables.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/variables.js +26 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/variables.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Agent/index.d.ts +3 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Agent/index.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Agent/index.js +16 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Agent/index.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/AgentThinking.d.ts +9 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/AgentThinking.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/AgentThinking.js +152 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/AgentThinking.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/AudioPlayer.d.ts +8 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/AudioPlayer.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/AudioPlayer.js +228 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/AudioPlayer.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingDetail.d.ts +12 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingDetail.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingDetail.js +35 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingDetail.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingForm.d.ts +9 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingForm.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingForm.js +173 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingForm.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingList.d.ts +9 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingList.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingList.js +61 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/BookMeetingList.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Chat.d.ts +10 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Chat.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Chat.js +46 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Chat.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Header.d.ts +10 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Header.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Header.js +36 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Header.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/HtmlContent.d.ts +7 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/HtmlContent.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/HtmlContent.js +45 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/HtmlContent.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Icons.d.ts +204 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Icons.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Icons.js +252 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Icons.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/LoadingComponent.d.ts +4 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/LoadingComponent.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/LoadingComponent.js +6 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/LoadingComponent.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/LocationCard.d.ts +38 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/LocationCard.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/LocationCard.js +23 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/LocationCard.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Markdown.d.ts +7 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Markdown.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Markdown.js +97 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Markdown.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Message.d.ts +16 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Message.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Message.js +84 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Message.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/MultimodalInput copy.d.ts +28 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/MultimodalInput copy.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/MultimodalInput copy.js +350 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/MultimodalInput copy.js.map +1 -0
- package/{dist/components/Chat/MultimodalInputSimple.d.ts → .rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/MultimodalInput.d.ts} +9 -3
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/MultimodalInput.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/MultimodalInput.js +405 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/MultimodalInput.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Overview.d.ts +8 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Overview.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Overview.js +9 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Overview.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/PreviewAttachment.d.ts +6 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/PreviewAttachment.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/PreviewAttachment.js +7 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/PreviewAttachment.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/PreviewFileAttachment.d.ts +7 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/PreviewFileAttachment.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/PreviewFileAttachment.js +21 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/PreviewFileAttachment.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ProductDetail.d.ts +10 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ProductDetail.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ProductDetail.js +157 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ProductDetail.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ProductList.d.ts +10 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ProductList.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ProductList.js +152 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ProductList.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ScenariosList.d.ts +11 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ScenariosList.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ScenariosList.js +73 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ScenariosList.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/AudioPlayerSimplified.d.ts +9 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/AudioPlayerSimplified.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/AudioPlayerSimplified.js +268 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/AudioPlayerSimplified.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/MultimodalInputSimplified.d.ts +22 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/MultimodalInputSimplified.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/MultimodalInputSimplified.js +283 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/MultimodalInputSimplified.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/MultimodalInputSimplifiedOld.d.ts +22 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/MultimodalInputSimplifiedOld.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/MultimodalInputSimplifiedOld.js +301 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/MultimodalInputSimplifiedOld.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/index.d.ts +10 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/index.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/index.js +30 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/index.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/SuggestedActions.d.ts +12 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/SuggestedActions.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/SuggestedActions.js +31 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/SuggestedActions.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/UserContactForm.d.ts +7 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/UserContactForm.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/UserContactForm.js +147 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/UserContactForm.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/VoiceRecordingUI.d.ts +17 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/VoiceRecordingUI.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/VoiceRecordingUI.js +71 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/VoiceRecordingUI.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Weather.d.ts +42 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Weather.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Weather.js +198 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Weather.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Button.d.ts +12 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Button.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Button.js +34 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Button.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/DataPickerCustom.d.ts +9 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/DataPickerCustom.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/DataPickerCustom.js +32 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/DataPickerCustom.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/DropdownMenu.d.ts +28 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/DropdownMenu.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/DropdownMenu.js +37 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/DropdownMenu.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/PhoneNumberInput.d.ts +12 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/PhoneNumberInput.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/PhoneNumberInput.js +10 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/PhoneNumberInput.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/SelectBox.d.ts +19 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/SelectBox.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/SelectBox.js +33 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/SelectBox.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/SelectBoxWithIcon.d.ts +20 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/SelectBoxWithIcon.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/SelectBoxWithIcon.js +71 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/SelectBoxWithIcon.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Spinner.d.ts +7 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Spinner.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Spinner.js +4 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Spinner.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Textarea.d.ts +6 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Textarea.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Textarea.js +9 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Textarea.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/badge.d.ts +10 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/badge.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/badge.js +22 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/badge.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/collapsible.d.ts +12 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/collapsible.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/collapsible.js +44 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/collapsible.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/voice/VoiceWidget.d.ts +14 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/voice/VoiceWidget.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/voice/VoiceWidget.js +53 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/voice/VoiceWidget.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/voice/VoiceWidgetChat.d.ts +22 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/voice/VoiceWidgetChat.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/voice/VoiceWidgetChat.js +29 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/voice/VoiceWidgetChat.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/constants/form.d.ts +13 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/constants/form.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/constants/form.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/constants/form.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/constants/toolNames.d.ts +94 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/constants/toolNames.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/constants/toolNames.js +93 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/constants/toolNames.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/constants.d.ts +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/constants.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/constants.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/constants.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/features/AgentWidget/index.d.ts +49 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/features/AgentWidget/index.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/features/AgentWidget/index.js +25 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/features/AgentWidget/index.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioAnalyzer.d.ts +11 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioAnalyzer.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioAnalyzer.js +135 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioAnalyzer.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioMesseagePlayer.d.ts +13 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioMesseagePlayer.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioMesseagePlayer.js +39 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioMesseagePlayer.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioRecording.d.ts +13 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioRecording.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioRecording.js +59 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioRecording.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useChat.d.ts +29 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useChat.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useChat.js +225 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useChat.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useChatData.d.ts +20 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useChatData.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useChatData.js +66 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useChatData.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useConfiguration.d.ts +101 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useConfiguration.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useConfiguration.js +23 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useConfiguration.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useScrollContainer.d.ts +9 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useScrollContainer.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useScrollContainer.js +64 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useScrollContainer.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useScrollToBottom.d.ts +7 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useScrollToBottom.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useScrollToBottom.js +29 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useScrollToBottom.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/index.d.ts +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/index.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/index.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/index.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/models/FlowiseClient.d.ts +20 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/models/FlowiseClient.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/models/FlowiseClient.js +76 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/models/FlowiseClient.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/models.d.ts +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/models.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/models.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/models.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/register.d.ts +86 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/register.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/register.js +36 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/register.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/apis.d.ts +10 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/apis.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/apis.js +10 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/apis.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/bookMeeting.service.d.ts +7 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/bookMeeting.service.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/bookMeeting.service.js +26 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/bookMeeting.service.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/bot.service.d.ts +3 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/bot.service.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/bot.service.js +13 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/bot.service.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/chat.service.d.ts +53 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/chat.service.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/chat.service.js +163 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/chat.service.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/userContact.service.d.ts +8 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/userContact.service.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/userContact.service.js +27 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/userContact.service.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/vt360.service.d.ts +14 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/vt360.service.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/vt360.service.js +181 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/vt360.service.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/bookMeeting.type.d.ts +13 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/bookMeeting.type.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/bookMeeting.type.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/bookMeeting.type.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/bot.type.d.ts +11 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/bot.type.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/bot.type.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/bot.type.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/chat.type.d.ts +10 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/chat.type.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/chat.type.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/chat.type.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/common.type.d.ts +27 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/common.type.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/common.type.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/common.type.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/flowise.type.d.ts +160 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/flowise.type.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/flowise.type.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/flowise.type.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/product.type.d.ts +48 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/product.type.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/product.type.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/product.type.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/user.type.d.ts +14 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/user.type.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/user.type.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/user.type.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/userContact.type.d.ts +15 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/userContact.type.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/userContact.type.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/userContact.type.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types.d.ts +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/agentTraceUtils.d.ts +20 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/agentTraceUtils.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/agentTraceUtils.js +492 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/agentTraceUtils.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/audioRecording.d.ts +21 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/audioRecording.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/audioRecording.js +296 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/audioRecording.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/commonUtils.d.ts +7 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/commonUtils.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/commonUtils.js +40 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/commonUtils.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/currency.d.ts +3 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/currency.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/currency.js +18 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/currency.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/fileUtils.d.ts +3 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/fileUtils.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/fileUtils.js +46 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/fileUtils.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/functionUtils.d.ts +5 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/functionUtils.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/functionUtils.js +21 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/functionUtils.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/messageUtils.d.ts +37 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/messageUtils.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/messageUtils.js +55 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/messageUtils.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/requestUtils.d.ts +16 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/requestUtils.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/requestUtils.js +79 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/requestUtils.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/streamUtils.d.ts +5 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/streamUtils.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/streamUtils.js +12 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/streamUtils.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/toolUtils.d.ts +111 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/toolUtils.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/toolUtils.js +197 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/toolUtils.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/wdyr.d.ts +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/wdyr.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/wdyr.js +15 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/wdyr.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/web.d.ts +8 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/web.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/web.js +5 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/web.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/window.d.ts +18 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/window.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/window.js +31 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/window.js.map +1 -0
- package/README.md +20 -20
- package/dist/components/Chat/BookMeetingForm.d.ts.map +1 -1
- package/dist/components/Chat/BookMeetingList.d.ts.map +1 -1
- package/dist/components/Chat/HtmlContent.d.ts.map +1 -1
- package/dist/components/Chat/Markdown.d.ts.map +1 -1
- package/dist/components/Chat/Message.d.ts.map +1 -1
- package/dist/components/Chat/MultimodalInput copy.d.ts +28 -0
- package/dist/components/Chat/MultimodalInput copy.d.ts.map +1 -0
- package/dist/components/Chat/MultimodalInput.d.ts.map +1 -1
- package/dist/components/Chat/ProductDetail.d.ts.map +1 -1
- package/dist/components/Chat/ProductList.d.ts +3 -3
- package/dist/components/Chat/ProductList.d.ts.map +1 -1
- package/dist/components/Chat/SceneList.d.ts +2 -3
- package/dist/components/Chat/SceneList.d.ts.map +1 -1
- package/dist/components/Chat/Simplified/MultimodalInputSimplifiedOld.d.ts +22 -0
- package/dist/components/Chat/Simplified/MultimodalInputSimplifiedOld.d.ts.map +1 -0
- package/dist/components/Chat/UserContactForm.d.ts +1 -0
- package/dist/components/Chat/UserContactForm.d.ts.map +1 -1
- package/dist/index-old.html +108 -0
- package/dist/index.html +55 -167
- package/dist/models.d.ts +1 -1
- package/dist/models.d.ts.map +1 -1
- package/dist/register.d.ts +1 -1
- package/dist/register.d.ts.map +1 -1
- package/dist/services/bookMeeting.service.d.ts +1 -1
- package/dist/services/bookMeeting.service.d.ts.map +1 -1
- package/dist/services/userContact.service.d.ts +1 -1
- package/dist/services/userContact.service.d.ts.map +1 -1
- package/dist/types/bookMeeting.type.d.ts +1 -1
- package/dist/types/bookMeeting.type.d.ts.map +1 -1
- package/dist/types/userContact.type.d.ts +1 -0
- package/dist/types/userContact.type.d.ts.map +1 -1
- package/dist/wdyr.d.ts +2 -0
- package/dist/wdyr.d.ts.map +1 -0
- package/dist/web.d.ts +5 -0
- package/dist/web.d.ts.map +1 -1
- package/dist/web.js +1 -1
- package/dist/web.js.map +1 -0
- package/dist/window.d.ts +11 -0
- package/dist/window.d.ts.map +1 -1
- package/package.json +101 -101
- package/.idea/clik-ai-chatbot-embedded.iml +0 -9
- package/.idea/codeStyles/codeStyleConfig.xml +0 -5
- package/.idea/inspectionProfiles/Project_Default.xml +0 -36
- package/.idea/jsLinters/eslint.xml +0 -7
- package/.idea/misc.xml +0 -9
- package/.idea/modules.xml +0 -8
- package/.idea/prettier.xml +0 -8
- package/.idea/vcs.xml +0 -6
- package/dist/components/Chat/AudioPlayerSimple.d.ts +0 -9
- package/dist/components/Chat/AudioPlayerSimple.d.ts.map +0 -1
- package/dist/components/Chat/MultimodalInputSimple.d.ts.map +0 -1
- package/dist/components/Chat/Sidebar.d.ts +0 -8
- package/dist/components/Chat/Sidebar.d.ts.map +0 -1
- package/dist/index_2.html +0 -67
- package/dist/serve.json +0 -11
- package/dist/web.css +0 -3680
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { LAYOUT_MODE } from 'commons/constants';
|
|
3
|
+
import { useCallback, useEffect, useRef, useState, } from 'react';
|
|
4
|
+
import { motion, AnimatePresence } from 'framer-motion';
|
|
5
|
+
import { Volume2, Paperclip } from 'lucide-react';
|
|
6
|
+
import { useMediaQuery } from 'react-responsive';
|
|
7
|
+
import { useLocalStorage, useWindowSize } from 'usehooks-ts';
|
|
8
|
+
import { useAudioRecording } from '../../hooks/useAudioRecording';
|
|
9
|
+
import { useChatData } from '../../hooks/useChatData';
|
|
10
|
+
import { useConfiguration } from '../../hooks/useConfiguration';
|
|
11
|
+
import { createAttachments, getAudioTranscript, } from '../../services/chat.service';
|
|
12
|
+
import { cn, generateExtendedFileName, generateUUID, } from '../../utils/commonUtils';
|
|
13
|
+
import { getBestMimeType, getFileExtension } from '../../utils/fileUtils';
|
|
14
|
+
import { ArrowUpIcon, ClikMicrophoneIcon, PlusIcon, StopIcon } from './Icons';
|
|
15
|
+
import SuggestedActions from './SuggestedActions';
|
|
16
|
+
import { Button } from './ui/Button';
|
|
17
|
+
import { Textarea } from './ui/Textarea';
|
|
18
|
+
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from './ui/DropdownMenu';
|
|
19
|
+
import { VoiceRecordingUI } from './VoiceRecordingUI';
|
|
20
|
+
import { PreviewFileAttachment } from './PreviewFileAttachment';
|
|
21
|
+
export const MultimodalInput = ({ input, setInput, isLoading, stop, messages, setMessages, chatId, handleSubmit, className, append, attachments, setAttachments, bot, apiHost, setEnableTTS, enableTTS, suggestedActions, }) => {
|
|
22
|
+
const { theme, onLoaded } = useConfiguration();
|
|
23
|
+
const { isRecording, onRecordingCancelled, onRecordingStopped, onRecordingStarted, elapsedTime, audioData, updateMaxHistoryLength, } = useAudioRecording();
|
|
24
|
+
const { listeners } = useChatData();
|
|
25
|
+
const textareaRef = useRef(null);
|
|
26
|
+
const inputRef = useRef(null);
|
|
27
|
+
const setInputRef = useRef(null);
|
|
28
|
+
const isMobile = useMediaQuery({ query: '(max-width: 640px)' });
|
|
29
|
+
const { width } = useWindowSize();
|
|
30
|
+
const defaultRows = theme?.suggestion?.defaultRows || 1;
|
|
31
|
+
const expandedRows = theme?.suggestion?.expandedRows || 2;
|
|
32
|
+
const suggestedActionLayoutMode = theme?.suggestion?.layoutMode || LAYOUT_MODE.SCROLL;
|
|
33
|
+
const language = theme?.language?.options
|
|
34
|
+
?.find((option) => option.code === theme?.language?.code)
|
|
35
|
+
?.name?.toLowerCase() || 'en';
|
|
36
|
+
const [suggestedActionRows, setSuggestedActionRows] = useState(defaultRows); // only use for scroll mode SuggestedActions
|
|
37
|
+
const [transcribing, setTranscribing] = useState(false);
|
|
38
|
+
const [isMultiline, setIsMultiline] = useState(false);
|
|
39
|
+
const [dropdownOpen, setDropdownOpen] = useState(false);
|
|
40
|
+
const adjustHeight = () => {
|
|
41
|
+
if (textareaRef.current) {
|
|
42
|
+
textareaRef.current.style.height = 'auto';
|
|
43
|
+
textareaRef.current.style.height =
|
|
44
|
+
`${textareaRef.current?.scrollHeight + 2}px`;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
const [localStorageInput, setLocalStorageInput] = useLocalStorage('input', '');
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
if (textareaRef.current) {
|
|
50
|
+
const domValue = textareaRef.current?.value;
|
|
51
|
+
// Prefer DOM value over localStorage to handle hydration
|
|
52
|
+
const finalValue = domValue || localStorageInput || '';
|
|
53
|
+
setInput(finalValue);
|
|
54
|
+
adjustHeight();
|
|
55
|
+
setTimeout(() => {
|
|
56
|
+
if (textareaRef.current) {
|
|
57
|
+
textareaRef.current.scrollTop = textareaRef.current.scrollHeight;
|
|
58
|
+
}
|
|
59
|
+
}, 500);
|
|
60
|
+
}
|
|
61
|
+
// Only run once after hydration
|
|
62
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
63
|
+
}, []);
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
setLocalStorageInput(input);
|
|
66
|
+
}, [input, setLocalStorageInput]);
|
|
67
|
+
const readonly = isRecording || transcribing;
|
|
68
|
+
const handleSetInput = (value) => {
|
|
69
|
+
setInput(value);
|
|
70
|
+
};
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
adjustHeight();
|
|
73
|
+
if (suggestedActionRows !== defaultRows) {
|
|
74
|
+
setSuggestedActionRows(defaultRows);
|
|
75
|
+
}
|
|
76
|
+
}, [input, readonly]);
|
|
77
|
+
// Focus vào element đúng khi chuyển đổi giữa input và textarea
|
|
78
|
+
useEffect(() => {
|
|
79
|
+
if (!isMultiline && !!inputRef.current) {
|
|
80
|
+
inputRef.current.focus();
|
|
81
|
+
// Set cursor tới cuối
|
|
82
|
+
const length = inputRef.current.value.length;
|
|
83
|
+
inputRef.current.setSelectionRange(length, length);
|
|
84
|
+
}
|
|
85
|
+
else if (isMultiline && textareaRef.current) {
|
|
86
|
+
textareaRef.current.focus();
|
|
87
|
+
// Set cursor tới cuối
|
|
88
|
+
const length = textareaRef.current.value.length;
|
|
89
|
+
textareaRef.current.setSelectionRange(length, length);
|
|
90
|
+
// Scroll tới cuối
|
|
91
|
+
textareaRef.current.scrollTop = textareaRef.current.scrollHeight;
|
|
92
|
+
adjustHeight();
|
|
93
|
+
}
|
|
94
|
+
}, [isMultiline]);
|
|
95
|
+
useEffect(() => {
|
|
96
|
+
setInputRef.current = setInput;
|
|
97
|
+
}, [setInput]);
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
if (onLoaded) {
|
|
100
|
+
onLoaded({
|
|
101
|
+
setInput: (txt) => {
|
|
102
|
+
if (setInputRef.current) {
|
|
103
|
+
setInputRef.current(txt || '');
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
startRecording: async () => {
|
|
107
|
+
handleStartRecording();
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}, []);
|
|
112
|
+
const handleInput = (event, valueInput) => {
|
|
113
|
+
const newValue = event?.target.value || valueInput || '';
|
|
114
|
+
handleSetInput(newValue);
|
|
115
|
+
// Nếu có newline (Enter) thì chuyển sang textarea ngay
|
|
116
|
+
if (!isMultiline && newValue.includes('\n')) {
|
|
117
|
+
setIsMultiline(true);
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
// Kiểm tra scroll ngay khi input thay đổi
|
|
121
|
+
if (!isMultiline && inputRef.current && newValue) {
|
|
122
|
+
// Đợi DOM update rồi kiểm tra scroll
|
|
123
|
+
setTimeout(() => {
|
|
124
|
+
const currentInput = inputRef.current;
|
|
125
|
+
if (currentInput) {
|
|
126
|
+
const hasScroll = currentInput.scrollWidth > currentInput.clientWidth;
|
|
127
|
+
if (hasScroll) {
|
|
128
|
+
setIsMultiline(true);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}, 0);
|
|
132
|
+
}
|
|
133
|
+
// Nếu xóa hết text thì chuyển về input
|
|
134
|
+
if (!newValue && isMultiline) {
|
|
135
|
+
setIsMultiline(false);
|
|
136
|
+
}
|
|
137
|
+
if (textareaRef.current) {
|
|
138
|
+
textareaRef.current.scrollTop = textareaRef.current.scrollHeight;
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
const fileInputRef = useRef(null);
|
|
142
|
+
const [uploadQueue, setUploadQueue] = useState([]);
|
|
143
|
+
const submitForm = useCallback(async () => {
|
|
144
|
+
handleSubmit(undefined, attachments);
|
|
145
|
+
setLocalStorageInput('');
|
|
146
|
+
setIsMultiline(false);
|
|
147
|
+
if (setAttachments) {
|
|
148
|
+
setAttachments((_) => []);
|
|
149
|
+
if (fileInputRef.current) {
|
|
150
|
+
fileInputRef.current.value = '';
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (width && width > 768) {
|
|
154
|
+
textareaRef.current?.focus();
|
|
155
|
+
}
|
|
156
|
+
}, [handleSubmit, setLocalStorageInput, width, attachments, chatId, bot]);
|
|
157
|
+
const uploadFile = useCallback(async (file) => {
|
|
158
|
+
const formData = new FormData();
|
|
159
|
+
formData.append('file', file, generateExtendedFileName(file.name));
|
|
160
|
+
try {
|
|
161
|
+
return await createAttachments({
|
|
162
|
+
chatId,
|
|
163
|
+
apiHost,
|
|
164
|
+
body: formData,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
console.error('Failed to upload file, please try again!');
|
|
169
|
+
}
|
|
170
|
+
}, [chatId]);
|
|
171
|
+
const toAudioBase64 = (blob) => {
|
|
172
|
+
return new Promise((resolve) => {
|
|
173
|
+
let mimeType = getBestMimeType();
|
|
174
|
+
const pos = blob.type.indexOf(';');
|
|
175
|
+
if (pos === -1) {
|
|
176
|
+
mimeType = blob.type;
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
mimeType = blob.type.substring(0, pos);
|
|
180
|
+
}
|
|
181
|
+
// read blob and add to previews
|
|
182
|
+
const reader = new FileReader();
|
|
183
|
+
reader.readAsDataURL(blob);
|
|
184
|
+
reader.onloadend = () => {
|
|
185
|
+
const base64data = reader.result;
|
|
186
|
+
const upload = {
|
|
187
|
+
tempId: generateUUID(),
|
|
188
|
+
data: base64data,
|
|
189
|
+
type: 'audio',
|
|
190
|
+
name: `audio_${Date.now()}.${getFileExtension(mimeType)}`,
|
|
191
|
+
mime: mimeType,
|
|
192
|
+
};
|
|
193
|
+
resolve(upload);
|
|
194
|
+
};
|
|
195
|
+
});
|
|
196
|
+
};
|
|
197
|
+
const toBase64 = async (file, type = 'file') => {
|
|
198
|
+
return new Promise((resolve, reject) => {
|
|
199
|
+
const reader = new FileReader();
|
|
200
|
+
reader.readAsDataURL(file);
|
|
201
|
+
reader.onload = () => {
|
|
202
|
+
resolve({
|
|
203
|
+
tempId: generateUUID(),
|
|
204
|
+
data: reader.result,
|
|
205
|
+
type,
|
|
206
|
+
name: generateExtendedFileName(file.name),
|
|
207
|
+
mime: file.type,
|
|
208
|
+
});
|
|
209
|
+
};
|
|
210
|
+
reader.onerror = () => {
|
|
211
|
+
reject();
|
|
212
|
+
};
|
|
213
|
+
});
|
|
214
|
+
};
|
|
215
|
+
const checkUploadFile = useCallback(async (file) => {
|
|
216
|
+
if (file.type.startsWith('image')) {
|
|
217
|
+
return toBase64(file);
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
setUploadQueue([file.name]);
|
|
221
|
+
const response = await uploadFile(file);
|
|
222
|
+
if (response?.type == 'file:full') {
|
|
223
|
+
const f = response.result[0];
|
|
224
|
+
if (!f) {
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
return {
|
|
228
|
+
tempId: generateUUID(),
|
|
229
|
+
data: f.content,
|
|
230
|
+
name: f.name,
|
|
231
|
+
mime: f.mimeType,
|
|
232
|
+
type: response?.type,
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
else if (response?.type == 'file:rag') {
|
|
236
|
+
const { addedDocs } = response.result;
|
|
237
|
+
if (!addedDocs.length) {
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
return toBase64(file, response?.type);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}, [setUploadQueue, uploadFile]);
|
|
244
|
+
const handleFileChange = useCallback(async (event) => {
|
|
245
|
+
const files = Array.from(event.target.files || []);
|
|
246
|
+
try {
|
|
247
|
+
const uploadPromises = files.map((file) => checkUploadFile(file));
|
|
248
|
+
const uploadedAttachments = await Promise.all(uploadPromises);
|
|
249
|
+
const successfullyUploadedAttachments = uploadedAttachments.filter((attachment) => attachment !== undefined);
|
|
250
|
+
if (setAttachments) {
|
|
251
|
+
setAttachments((currentAttachments) => [
|
|
252
|
+
...currentAttachments,
|
|
253
|
+
...successfullyUploadedAttachments,
|
|
254
|
+
]);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
console.error('Error uploading files!', error);
|
|
259
|
+
}
|
|
260
|
+
finally {
|
|
261
|
+
setUploadQueue([]);
|
|
262
|
+
}
|
|
263
|
+
}, [setAttachments, checkUploadFile]);
|
|
264
|
+
const speechToText = async (blob) => {
|
|
265
|
+
try {
|
|
266
|
+
setTranscribing(true);
|
|
267
|
+
// setIsMultiline(true);
|
|
268
|
+
const fileUpload = await toAudioBase64(blob);
|
|
269
|
+
const base64Data = fileUpload.data.replace(/^data:.+;base64,/, '');
|
|
270
|
+
const byteCharacters = atob(base64Data); // Decode Base64 string
|
|
271
|
+
const byteNumbers = new Array(byteCharacters.length);
|
|
272
|
+
for (let i = 0; i < byteCharacters.length; i++) {
|
|
273
|
+
byteNumbers[i] = byteCharacters.charCodeAt(i);
|
|
274
|
+
}
|
|
275
|
+
const byteArray = new Uint8Array(byteNumbers);
|
|
276
|
+
const file = new File([byteArray], fileUpload.name, {
|
|
277
|
+
lastModified: new Date().getTime(),
|
|
278
|
+
type: fileUpload.type,
|
|
279
|
+
});
|
|
280
|
+
const text = await getAudioTranscript({ file, apiHost, language });
|
|
281
|
+
if (text) {
|
|
282
|
+
handleInput(undefined, text);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
catch (error) {
|
|
286
|
+
console.error('Error getting audio transcript!', error);
|
|
287
|
+
}
|
|
288
|
+
finally {
|
|
289
|
+
setTranscribing(false);
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
const handleFinishRecording = () => {
|
|
293
|
+
if (isRecording) {
|
|
294
|
+
onRecordingStopped(speechToText);
|
|
295
|
+
}
|
|
296
|
+
if (listeners?.['ON_FINISHED_RECORDING']) {
|
|
297
|
+
listeners['ON_FINISHED_RECORDING']();
|
|
298
|
+
}
|
|
299
|
+
};
|
|
300
|
+
const handleStartRecording = () => {
|
|
301
|
+
setIsMultiline(false);
|
|
302
|
+
onRecordingStarted();
|
|
303
|
+
handleSetInput('');
|
|
304
|
+
if (listeners?.['ON_START_RECORDING']) {
|
|
305
|
+
listeners['ON_START_RECORDING']();
|
|
306
|
+
}
|
|
307
|
+
};
|
|
308
|
+
const handleCancelRecording = () => {
|
|
309
|
+
onRecordingCancelled();
|
|
310
|
+
handleSetInput('');
|
|
311
|
+
if (listeners?.['ON_CANCEL_RECORDING']) {
|
|
312
|
+
listeners['ON_CANCEL_RECORDING']();
|
|
313
|
+
}
|
|
314
|
+
};
|
|
315
|
+
const handleSend = useCallback(async () => {
|
|
316
|
+
if (!isRecording) {
|
|
317
|
+
submitForm();
|
|
318
|
+
}
|
|
319
|
+
}, [submitForm, isRecording]);
|
|
320
|
+
const handleWidthChange = useCallback((maxBars) => {
|
|
321
|
+
updateMaxHistoryLength(maxBars);
|
|
322
|
+
}, [updateMaxHistoryLength]);
|
|
323
|
+
const placeholder = !isRecording && !transcribing
|
|
324
|
+
? theme?.input?.placeholder || 'Send a message...'
|
|
325
|
+
: theme?.input?.transcribingPlaceholder || 'Transcribing...';
|
|
326
|
+
const recordingPlaceholder = isRecording && !transcribing
|
|
327
|
+
? theme?.input?.recordingPlaceholder || 'Recording...'
|
|
328
|
+
: '';
|
|
329
|
+
return (_jsxs("div", { className: "relative w-full flex gap-4 flex-col", children: [!!suggestedActions?.length && (_jsx(SuggestedActions, { suggestedActions: suggestedActions, append: append, layoutMode: suggestedActionLayoutMode, suggestedActionRows: suggestedActionRows })), ((attachments && attachments.length > 0) || uploadQueue.length > 0) && (_jsxs("div", { className: "list-attachments flex flex-row gap-2 overflow-x-scroll items-end", children: [attachments?.map((attachment) => (_jsx(PreviewFileAttachment, { attachment: attachment, onRemoveAttachment: () => {
|
|
330
|
+
setAttachments?.((currentAttachments) => currentAttachments.filter((f) => f.tempId !== attachment.tempId));
|
|
331
|
+
} }, attachment.tempId))), uploadQueue.map((filename) => (_jsx(PreviewFileAttachment, { onRemoveAttachment: () => {
|
|
332
|
+
setUploadQueue(uploadQueue.filter((f) => f !== filename));
|
|
333
|
+
}, attachment: {
|
|
334
|
+
data: '',
|
|
335
|
+
name: filename,
|
|
336
|
+
mime: '',
|
|
337
|
+
type: '',
|
|
338
|
+
}, isUploading: true }, filename)))] })), _jsxs("div", { className: " w-full flex gap-4 justify-end items-end", children: [isRecording ? (_jsx(Button, { className: ` rounded-full w-[40px] h-[40px] flex items-center justify-center bg-white px-0`, onClick: (event) => {
|
|
339
|
+
event.preventDefault();
|
|
340
|
+
handleFinishRecording();
|
|
341
|
+
}, children: _jsx("div", { className: "w-[12px] h-[12px] bg-muted-foreground rounded-full" }) })) : (_jsxs(DropdownMenu, { open: dropdownOpen, onOpenChange: setDropdownOpen, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { className: ` rounded-full w-[40px] h-[40px] flex items-center justify-center bg-white`, onClick: (event) => {
|
|
342
|
+
event.preventDefault();
|
|
343
|
+
}, children: _jsx(PlusIcon, { size: 20, color: '#71717A' }) }) }), _jsxs(DropdownMenuContent, { side: "top", align: "start", className: "w-48 rounded-2xl border py-[6px] border-[#0d0d0d0d] shadow-sm", children: [_jsxs(DropdownMenuItem, { onClick: () => {
|
|
344
|
+
// Trigger file input
|
|
345
|
+
fileInputRef.current?.click();
|
|
346
|
+
setDropdownOpen(false);
|
|
347
|
+
}, className: "flex items-center gap-2 px-4", children: [_jsx(Paperclip, { size: 16 }), _jsx("span", { className: "text-[14px]", children: "Upload File" })] }), _jsxs(DropdownMenuItem, { onClick: () => {
|
|
348
|
+
setEnableTTS(!enableTTS);
|
|
349
|
+
}, className: `flex items-center gap-2 px-4 ${enableTTS ? 'bg-[#CBE1F3] text-[#0A82F7]' : ''}`, children: [_jsx(Volume2, {}), _jsx("span", { className: "text-[14px]", children: theme?.buttons?.textBtnSpeak || 'Speak' })] })] })] })), _jsxs("div", { className: "block flex-1 min-w-0 relative", children: [_jsx(AnimatePresence, { mode: "wait", children: !isRecording && (_jsxs(_Fragment, { children: [_jsx(motion.input, { type: "text", id: "input-multimodal-container", readOnly: readonly, ref: inputRef, placeholder: placeholder, value: input, onChange: handleInput, className: cn(`h-[40px] outline-none text-base bg-muted bg-[#ffffff] scrollbar-hidden p-[12px] pr-[68px] rounded-[24px] backdrop-blur-[50px] w-full ${readonly ? 'hidden' : ''}`, className), autoFocus: !isMobile, initial: { opacity: 0, height: 0 }, animate: { opacity: 1, height: 40 }, exit: { opacity: 0, height: 0 }, transition: {
|
|
350
|
+
duration: 0.2,
|
|
351
|
+
ease: 'easeInOut',
|
|
352
|
+
}, style: {
|
|
353
|
+
display: isMultiline || transcribing ? 'none' : 'block',
|
|
354
|
+
}, onKeyDown: (event) => {
|
|
355
|
+
if (isRecording) {
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
358
|
+
if (event.key === 'Enter' && !event.shiftKey) {
|
|
359
|
+
event.preventDefault();
|
|
360
|
+
if (isLoading) {
|
|
361
|
+
console.error('Please wait for the model to finish its response!');
|
|
362
|
+
}
|
|
363
|
+
else if (uploadQueue.length) {
|
|
364
|
+
console.error('Please wait for file is uploading!');
|
|
365
|
+
}
|
|
366
|
+
else if (input.length > 0) {
|
|
367
|
+
handleSend();
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
} }, "input"), _jsx(motion.div, { initial: { opacity: 0, height: 40 }, animate: { opacity: 1, height: 'auto' }, exit: { opacity: 0, height: 40 }, transition: {
|
|
371
|
+
duration: 0.2,
|
|
372
|
+
ease: 'easeInOut',
|
|
373
|
+
}, style: {
|
|
374
|
+
display: isMultiline || transcribing ? 'block' : 'none',
|
|
375
|
+
}, children: _jsx(Textarea, { readOnly: readonly, ref: textareaRef, placeholder: placeholder, value: input, onChange: handleInput, className: cn(`min-h-[24px] max-h-[160px] resize-none text-base bg-muted bg-[#ffffff] scrollbar-hidden p-[12px] pb-[32px] rounded-[24px] border border-[#E5E5E5] shadow-[0px_2px_6px_0px_rgba(0,0,0,0.08)] backdrop-blur-[50px] ${suggestedActionRows === expandedRows && 'p-[12px]'} `, className), style: {
|
|
376
|
+
height: suggestedActionRows === expandedRows ? 60 : undefined,
|
|
377
|
+
}, autoFocus: !isMobile, onKeyDown: (event) => {
|
|
378
|
+
if (isRecording) {
|
|
379
|
+
return;
|
|
380
|
+
}
|
|
381
|
+
if (event.key === 'Enter' && !event.shiftKey) {
|
|
382
|
+
event.preventDefault();
|
|
383
|
+
if (isLoading) {
|
|
384
|
+
console.error('Please wait for the model to finish its response!');
|
|
385
|
+
}
|
|
386
|
+
else if (uploadQueue.length) {
|
|
387
|
+
console.error('Please wait for file is uploading!');
|
|
388
|
+
}
|
|
389
|
+
else if (input.length > 0) {
|
|
390
|
+
handleSend();
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
} }) }, "textarea")] })) }), _jsx("div", { className: "w-full ", children: _jsx(VoiceRecordingUI, { isRecording: isRecording, elapsedTime: elapsedTime, onCancel: handleCancelRecording, transcribing: transcribing, audioData: audioData, label: recordingPlaceholder, onWidthChange: handleWidthChange }) }), _jsxs("div", { className: "button-voice right-[4px] absolute bottom-[4px] flex gap-[12px]", children: [!isRecording && (_jsx(Button, { className: "rounded-full z-[2] p-1.5 h-[32px] w-[32px] m-0 bg-transparent", onClick: (event) => {
|
|
394
|
+
event.preventDefault();
|
|
395
|
+
handleStartRecording();
|
|
396
|
+
}, disabled: isLoading, children: _jsx(ClikMicrophoneIcon, { size: 20 }) })), isLoading ? (_jsx(Button, { className: "rounded-full z-[2] p-1.5 h-[32px] w-[32px] m-0 border bg-[#71717A]", onClick: (event) => {
|
|
397
|
+
event.preventDefault();
|
|
398
|
+
stop();
|
|
399
|
+
setMessages(messages);
|
|
400
|
+
}, children: _jsx(StopIcon, { size: 20 }) })) : (_jsx(Button, { className: "rounded-full z-[2] p-1.5 h-[32px] w-[32px] m-0 border bg-[#71717A]", onClick: (event) => {
|
|
401
|
+
event.preventDefault();
|
|
402
|
+
handleSend();
|
|
403
|
+
}, disabled: isRecording || input.length === 0 || !!uploadQueue.length, children: _jsx(ArrowUpIcon, { size: 20 }) }))] })] }), _jsx("input", { type: "file", ref: fileInputRef, onChange: handleFileChange, multiple: true, accept: "image/*,video/*,audio/*,.pdf,.doc,.docx,.txt", style: { display: 'none' } })] })] }));
|
|
404
|
+
};
|
|
405
|
+
//# sourceMappingURL=MultimodalInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultimodalInput.js","sourceRoot":"","sources":["../../../src/components/Chat/MultimodalInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import { LAYOUT_MODE } from 'commons/constants';\nimport {\n type ChangeEvent,\n FC,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { Volume2, Paperclip } from 'lucide-react';\nimport { useMediaQuery } from 'react-responsive';\n\nimport { SuggestionType } from 'types/common.type';\nimport { useLocalStorage, useWindowSize } from 'usehooks-ts';\nimport { useAudioRecording } from '../../hooks/useAudioRecording';\nimport { useChatData } from '../../hooks/useChatData';\nimport { useConfiguration } from '../../hooks/useConfiguration';\nimport {\n createAttachments,\n getAudioTranscript,\n} from '../../services/chat.service';\nimport { BotType } from '../../types/bot.type';\nimport { ChatMessageType, IFileUpload } from '../../types/flowise.type';\nimport {\n cn,\n generateExtendedFileName,\n generateUUID,\n} from '../../utils/commonUtils';\nimport { getBestMimeType, getFileExtension } from '../../utils/fileUtils';\nimport { ArrowUpIcon, ClikMicrophoneIcon, PlusIcon, StopIcon } from './Icons';\nimport SuggestedActions from './SuggestedActions';\nimport { Button } from './ui/Button';\nimport { Textarea } from './ui/Textarea';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from './ui/DropdownMenu';\n\nimport { VoiceRecordingUI } from './VoiceRecordingUI';\nimport { PreviewFileAttachment } from './PreviewFileAttachment';\n\ntype PropsType = {\n input: string;\n setInput: (value: string) => void;\n isLoading: boolean;\n stop: () => void;\n messages: ChatMessageType[];\n setMessages: (messages: ChatMessageType[]) => void;\n chatId: string;\n handleSubmit: (\n event?: { preventDefault?: () => void },\n files?: IFileUpload[]\n ) => void;\n className?: string;\n append?: (message: ChatMessageType) => Promise<void>;\n attachments?: IFileUpload[];\n setAttachments?: (func: (files: IFileUpload[]) => IFileUpload[]) => void;\n bot: BotType | null;\n apiHost: string;\n setEnableTTS: (value: boolean) => void;\n enableTTS: boolean;\n suggestedActions?: SuggestionType[];\n};\n\nexport const MultimodalInput: FC<PropsType> = ({\n input,\n setInput,\n isLoading,\n stop,\n messages,\n setMessages,\n chatId,\n handleSubmit,\n className,\n append,\n attachments,\n setAttachments,\n bot,\n apiHost,\n setEnableTTS,\n enableTTS,\n suggestedActions,\n}) => {\n const { theme, onLoaded } = useConfiguration();\n const {\n isRecording,\n onRecordingCancelled,\n onRecordingStopped,\n onRecordingStarted,\n elapsedTime,\n audioData,\n updateMaxHistoryLength,\n } = useAudioRecording();\n const { listeners } = useChatData();\n const textareaRef = useRef<HTMLTextAreaElement | null>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const setInputRef = useRef<((input: string) => void) | null>(null);\n\n const isMobile = useMediaQuery({ query: '(max-width: 640px)' });\n\n const { width } = useWindowSize();\n\n const defaultRows = theme?.suggestion?.defaultRows || 1;\n const expandedRows = theme?.suggestion?.expandedRows || 2;\n const suggestedActionLayoutMode =\n theme?.suggestion?.layoutMode || LAYOUT_MODE.SCROLL;\n\n const language =\n theme?.language?.options\n ?.find((option) => option.code === theme?.language?.code)\n ?.name?.toLowerCase() || 'en';\n\n const [suggestedActionRows, setSuggestedActionRows] =\n useState<number>(defaultRows); // only use for scroll mode SuggestedActions\n\n const [transcribing, setTranscribing] = useState<boolean>(false);\n const [isMultiline, setIsMultiline] = useState<boolean>(false);\n const [dropdownOpen, setDropdownOpen] = useState<boolean>(false);\n\n const adjustHeight = () => {\n if (textareaRef.current) {\n (textareaRef.current as HTMLTextAreaElement).style.height = 'auto';\n (textareaRef.current as HTMLTextAreaElement).style.height =\n `${textareaRef.current?.scrollHeight + 2}px`;\n }\n };\n\n const [localStorageInput, setLocalStorageInput] = useLocalStorage(\n 'input',\n ''\n );\n\n useEffect(() => {\n if (textareaRef.current) {\n const domValue = textareaRef.current?.value;\n // Prefer DOM value over localStorage to handle hydration\n const finalValue = domValue || localStorageInput || '';\n setInput(finalValue);\n adjustHeight();\n\n setTimeout(() => {\n if (textareaRef.current) {\n textareaRef.current.scrollTop = textareaRef.current.scrollHeight;\n }\n }, 500);\n }\n // Only run once after hydration\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n setLocalStorageInput(input);\n }, [input, setLocalStorageInput]);\n\n const readonly = isRecording || transcribing;\n const handleSetInput = (value: string) => {\n setInput(value);\n };\n\n useEffect(() => {\n adjustHeight();\n if (suggestedActionRows !== defaultRows) {\n setSuggestedActionRows(defaultRows);\n }\n }, [input, readonly]);\n\n // Focus vào element đúng khi chuyển đổi giữa input và textarea\n useEffect(() => {\n if (!isMultiline && !!inputRef.current) {\n inputRef.current.focus();\n // Set cursor tới cuối\n const length = inputRef.current.value.length;\n inputRef.current.setSelectionRange(length, length);\n } else if (isMultiline && textareaRef.current) {\n textareaRef.current.focus();\n // Set cursor tới cuối\n const length = textareaRef.current.value.length;\n textareaRef.current.setSelectionRange(length, length);\n // Scroll tới cuối\n textareaRef.current.scrollTop = textareaRef.current.scrollHeight;\n adjustHeight();\n }\n }, [isMultiline]);\n\n useEffect(() => {\n setInputRef.current = setInput;\n }, [setInput]);\n\n useEffect(() => {\n if (onLoaded) {\n onLoaded({\n setInput: (txt): void => {\n if (setInputRef.current) {\n setInputRef.current(txt || '');\n }\n },\n startRecording: async () => {\n handleStartRecording();\n },\n });\n }\n }, []);\n\n const handleInput = (\n event?: ChangeEvent<HTMLTextAreaElement | HTMLInputElement>,\n valueInput?: string\n ) => {\n const newValue = event?.target.value || valueInput || '';\n handleSetInput(newValue);\n\n // Nếu có newline (Enter) thì chuyển sang textarea ngay\n if (!isMultiline && newValue.includes('\\n')) {\n setIsMultiline(true);\n return;\n }\n\n // Kiểm tra scroll ngay khi input thay đổi\n if (!isMultiline && inputRef.current && newValue) {\n // Đợi DOM update rồi kiểm tra scroll\n setTimeout(() => {\n const currentInput = inputRef.current;\n if (currentInput) {\n const hasScroll = currentInput.scrollWidth > currentInput.clientWidth;\n if (hasScroll) {\n setIsMultiline(true);\n }\n }\n }, 0);\n }\n\n // Nếu xóa hết text thì chuyển về input\n if (!newValue && isMultiline) {\n setIsMultiline(false);\n }\n\n if (textareaRef.current) {\n textareaRef.current.scrollTop = textareaRef.current.scrollHeight;\n }\n };\n\n const fileInputRef = useRef<HTMLInputElement | null>(null);\n const [uploadQueue, setUploadQueue] = useState<Array<string>>([]);\n\n const submitForm = useCallback(async () => {\n handleSubmit(undefined, attachments);\n setLocalStorageInput('');\n setIsMultiline(false);\n if (setAttachments) {\n setAttachments((_) => []);\n if (fileInputRef.current) {\n (fileInputRef.current as HTMLInputElement).value = '';\n }\n }\n if (width && width > 768) {\n textareaRef.current?.focus();\n }\n }, [handleSubmit, setLocalStorageInput, width, attachments, chatId, bot]);\n\n const uploadFile = useCallback(\n async (file: File) => {\n const formData = new FormData();\n formData.append('file', file, generateExtendedFileName(file.name));\n try {\n return await createAttachments({\n chatId,\n apiHost,\n body: formData,\n });\n } catch (error) {\n console.error('Failed to upload file, please try again!');\n }\n },\n [chatId]\n );\n\n const toAudioBase64 = (blob: Blob) => {\n return new Promise<IFileUpload>((resolve) => {\n let mimeType = getBestMimeType();\n const pos = blob.type.indexOf(';');\n if (pos === -1) {\n mimeType = blob.type;\n } else {\n mimeType = blob.type.substring(0, pos);\n }\n\n // read blob and add to previews\n const reader = new FileReader();\n reader.readAsDataURL(blob);\n reader.onloadend = () => {\n const base64data = reader.result as string;\n const upload: IFileUpload = {\n tempId: generateUUID(),\n data: base64data,\n type: 'audio',\n name: `audio_${Date.now()}.${getFileExtension(mimeType)}`,\n mime: mimeType,\n };\n resolve(upload);\n };\n });\n };\n\n const toBase64 = async (\n file: File,\n type = 'file'\n ): Promise<IFileUpload | undefined> => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => {\n resolve({\n tempId: generateUUID(),\n data: reader.result as string,\n type,\n name: generateExtendedFileName(file.name),\n mime: file.type,\n });\n };\n reader.onerror = () => {\n reject();\n };\n });\n };\n\n const checkUploadFile = useCallback(\n async (file: File): Promise<IFileUpload | undefined> => {\n if (file.type.startsWith('image')) {\n return toBase64(file);\n } else {\n setUploadQueue([file.name]);\n const response: any = await uploadFile(file);\n if (response?.type == 'file:full') {\n const f = response.result[0];\n if (!f) {\n return;\n }\n return {\n tempId: generateUUID(),\n data: f.content,\n name: f.name,\n mime: f.mimeType,\n type: response?.type,\n };\n } else if (response?.type == 'file:rag') {\n const { addedDocs } = response.result;\n if (!addedDocs.length) {\n return;\n }\n return toBase64(file, response?.type);\n }\n }\n },\n [setUploadQueue, uploadFile]\n );\n\n const handleFileChange = useCallback(\n async (event: ChangeEvent<HTMLInputElement>) => {\n const files = Array.from(event.target.files || []);\n try {\n const uploadPromises = files.map((file) => checkUploadFile(file));\n const uploadedAttachments = await Promise.all(uploadPromises);\n const successfullyUploadedAttachments = uploadedAttachments.filter(\n (attachment) => attachment !== undefined\n ) as IFileUpload[];\n if (setAttachments) {\n setAttachments((currentAttachments: IFileUpload[]) => [\n ...currentAttachments,\n ...successfullyUploadedAttachments,\n ]);\n }\n } catch (error) {\n console.error('Error uploading files!', error);\n } finally {\n setUploadQueue([]);\n }\n },\n [setAttachments, checkUploadFile]\n );\n\n const speechToText = async (blob: Blob) => {\n try {\n setTranscribing(true);\n // setIsMultiline(true);\n const fileUpload = await toAudioBase64(blob);\n const base64Data = fileUpload.data!.replace(/^data:.+;base64,/, '');\n const byteCharacters = atob(base64Data); // Decode Base64 string\n const byteNumbers = new Array(byteCharacters.length);\n\n for (let i = 0; i < byteCharacters.length; i++) {\n byteNumbers[i] = byteCharacters.charCodeAt(i);\n }\n\n const byteArray = new Uint8Array(byteNumbers);\n const file = new File([byteArray], fileUpload.name, {\n lastModified: new Date().getTime(),\n type: fileUpload.type,\n });\n\n const text = await getAudioTranscript({ file, apiHost, language });\n if (text) {\n handleInput(undefined, text);\n }\n } catch (error) {\n console.error('Error getting audio transcript!', error);\n } finally {\n setTranscribing(false);\n }\n };\n\n const handleFinishRecording = () => {\n if (isRecording) {\n onRecordingStopped(speechToText);\n }\n if (listeners?.['ON_FINISHED_RECORDING']) {\n listeners['ON_FINISHED_RECORDING']();\n }\n };\n\n const handleStartRecording = () => {\n setIsMultiline(false);\n onRecordingStarted();\n handleSetInput('');\n if (listeners?.['ON_START_RECORDING']) {\n listeners['ON_START_RECORDING']();\n }\n };\n\n const handleCancelRecording = () => {\n onRecordingCancelled();\n handleSetInput('');\n if (listeners?.['ON_CANCEL_RECORDING']) {\n listeners['ON_CANCEL_RECORDING']();\n }\n };\n\n const handleSend = useCallback(async () => {\n if (!isRecording) {\n submitForm();\n }\n }, [submitForm, isRecording]);\n\n const handleWidthChange = useCallback(\n (maxBars: number) => {\n updateMaxHistoryLength(maxBars);\n },\n [updateMaxHistoryLength]\n );\n\n const placeholder =\n !isRecording && !transcribing\n ? theme?.input?.placeholder || 'Send a message...'\n : theme?.input?.transcribingPlaceholder || 'Transcribing...';\n\n const recordingPlaceholder =\n isRecording && !transcribing\n ? theme?.input?.recordingPlaceholder || 'Recording...'\n : '';\n\n return (\n <div className=\"relative w-full flex gap-4 flex-col\">\n {!!suggestedActions?.length && (\n <SuggestedActions\n suggestedActions={suggestedActions}\n append={append}\n layoutMode={suggestedActionLayoutMode}\n suggestedActionRows={suggestedActionRows}\n />\n )}\n {((attachments && attachments.length > 0) || uploadQueue.length > 0) && (\n <div className=\"list-attachments flex flex-row gap-2 overflow-x-scroll items-end\">\n {attachments?.map((attachment) => (\n <PreviewFileAttachment\n key={attachment.tempId}\n attachment={attachment}\n onRemoveAttachment={() => {\n setAttachments?.((currentAttachments: IFileUpload[]) =>\n currentAttachments.filter(\n (f) => f.tempId !== attachment.tempId\n )\n );\n }}\n />\n ))}\n {uploadQueue.map((filename) => (\n <PreviewFileAttachment\n key={filename}\n onRemoveAttachment={() => {\n setUploadQueue(uploadQueue.filter((f) => f !== filename));\n }}\n attachment={{\n data: '',\n name: filename,\n mime: '',\n type: '',\n }}\n isUploading\n />\n ))}\n </div>\n )}\n <div className=\" w-full flex gap-4 justify-end items-end\">\n {isRecording ? (\n <Button\n className={` rounded-full w-[40px] h-[40px] flex items-center justify-center bg-white px-0`}\n onClick={(event) => {\n event.preventDefault();\n handleFinishRecording();\n }}\n >\n <div className=\"w-[12px] h-[12px] bg-muted-foreground rounded-full\"></div>\n </Button>\n ) : (\n <DropdownMenu open={dropdownOpen} onOpenChange={setDropdownOpen}>\n <DropdownMenuTrigger asChild>\n <Button\n className={` rounded-full w-[40px] h-[40px] flex items-center justify-center bg-white`}\n onClick={(event) => {\n event.preventDefault();\n }}\n >\n <PlusIcon size={20} color={'#71717A'} />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n side=\"top\"\n align=\"start\"\n className=\"w-48 rounded-2xl border py-[6px] border-[#0d0d0d0d] shadow-sm\"\n >\n <DropdownMenuItem\n onClick={() => {\n // Trigger file input\n fileInputRef.current?.click();\n setDropdownOpen(false);\n }}\n className=\"flex items-center gap-2 px-4\"\n >\n <Paperclip size={16} />\n <span className=\"text-[14px]\">Upload File</span>\n </DropdownMenuItem>\n <DropdownMenuItem\n onClick={() => {\n setEnableTTS(!enableTTS);\n }}\n className={`flex items-center gap-2 px-4 ${enableTTS ? 'bg-[#CBE1F3] text-[#0A82F7]' : ''}`}\n >\n <Volume2 />\n <span className=\"text-[14px]\">\n {theme?.buttons?.textBtnSpeak || 'Speak'}\n </span>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n <div className=\"block flex-1 min-w-0 relative\">\n {/* Animated Input/Textarea Container */}\n <AnimatePresence mode=\"wait\">\n {!isRecording && (\n <>\n <motion.input\n key=\"input\"\n type=\"text\"\n id=\"input-multimodal-container\"\n readOnly={readonly}\n ref={inputRef}\n placeholder={placeholder}\n value={input}\n onChange={handleInput}\n className={cn(\n `h-[40px] outline-none text-base bg-muted bg-[#ffffff] scrollbar-hidden p-[12px] pr-[68px] rounded-[24px] backdrop-blur-[50px] w-full ${readonly ? 'hidden' : ''}`,\n className\n )}\n autoFocus={!isMobile}\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: 40 }}\n exit={{ opacity: 0, height: 0 }}\n transition={{\n duration: 0.2,\n ease: 'easeInOut',\n }}\n style={{\n display: isMultiline || transcribing ? 'none' : 'block',\n }}\n onKeyDown={(event) => {\n if (isRecording) {\n return;\n }\n\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n if (isLoading) {\n console.error(\n 'Please wait for the model to finish its response!'\n );\n } else if (uploadQueue.length) {\n console.error('Please wait for file is uploading!');\n } else if (input.length > 0) {\n handleSend();\n }\n }\n }}\n />\n <motion.div\n key=\"textarea\"\n initial={{ opacity: 0, height: 40 }}\n animate={{ opacity: 1, height: 'auto' }}\n exit={{ opacity: 0, height: 40 }}\n transition={{\n duration: 0.2,\n ease: 'easeInOut',\n }}\n style={{\n display: isMultiline || transcribing ? 'block' : 'none',\n }}\n >\n <Textarea\n readOnly={readonly}\n ref={textareaRef}\n placeholder={placeholder}\n value={input}\n onChange={handleInput}\n className={cn(\n `min-h-[24px] max-h-[160px] resize-none text-base bg-muted bg-[#ffffff] scrollbar-hidden p-[12px] pb-[32px] rounded-[24px] border border-[#E5E5E5] shadow-[0px_2px_6px_0px_rgba(0,0,0,0.08)] backdrop-blur-[50px] ${suggestedActionRows === expandedRows && 'p-[12px]'} `,\n className\n )}\n style={{\n height:\n suggestedActionRows === expandedRows ? 60 : undefined,\n }}\n autoFocus={!isMobile}\n onKeyDown={(event) => {\n if (isRecording) {\n return;\n }\n\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n if (isLoading) {\n console.error(\n 'Please wait for the model to finish its response!'\n );\n } else if (uploadQueue.length) {\n console.error('Please wait for file is uploading!');\n } else if (input.length > 0) {\n handleSend();\n }\n }\n }}\n />\n </motion.div>\n </>\n )}\n </AnimatePresence>\n {/* Voice Recording UI Overlay */}\n <div className=\"w-full \">\n <VoiceRecordingUI\n isRecording={isRecording}\n elapsedTime={elapsedTime}\n onCancel={handleCancelRecording}\n transcribing={transcribing}\n audioData={audioData}\n label={recordingPlaceholder}\n onWidthChange={handleWidthChange}\n />\n </div>\n\n <div className=\"button-voice right-[4px] absolute bottom-[4px] flex gap-[12px]\">\n {!isRecording && (\n <Button\n className=\"rounded-full z-[2] p-1.5 h-[32px] w-[32px] m-0 bg-transparent\"\n onClick={(event) => {\n event.preventDefault();\n handleStartRecording();\n }}\n disabled={isLoading}\n >\n <ClikMicrophoneIcon size={20} />\n </Button>\n )}\n\n {isLoading ? (\n <Button\n className=\"rounded-full z-[2] p-1.5 h-[32px] w-[32px] m-0 border bg-[#71717A]\"\n onClick={(event) => {\n event.preventDefault();\n stop();\n setMessages(messages);\n }}\n >\n <StopIcon size={20} />\n </Button>\n ) : (\n <Button\n className=\"rounded-full z-[2] p-1.5 h-[32px] w-[32px] m-0 border bg-[#71717A]\"\n onClick={(event) => {\n event.preventDefault();\n handleSend();\n }}\n disabled={\n isRecording || input.length === 0 || !!uploadQueue.length\n }\n >\n <ArrowUpIcon size={20} />\n </Button>\n )}\n </div>\n </div>\n {/* Hidden file input */}\n <input\n type=\"file\"\n ref={fileInputRef}\n onChange={handleFileChange}\n multiple\n accept=\"image/*,video/*,audio/*,.pdf,.doc,.docx,.txt\"\n style={{ display: 'none' }}\n />\n </div>\n </div>\n );\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Overview.d.ts","sourceRoot":"","sources":["../../../src/components/Chat/Overview.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,KAAK,SAAS,GAAG;IACf,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;CACrB,CAAC;AACF,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,SAAS,CAmClC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { motion } from 'framer-motion';
|
|
3
|
+
import { useConfiguration } from '../../hooks/useConfiguration';
|
|
4
|
+
export const Overview = ({ bot }) => {
|
|
5
|
+
const { theme } = useConfiguration();
|
|
6
|
+
return (_jsx(motion.div, { className: "max-w-3xl m-auto md:mt-20", initial: { opacity: 0, scale: 0.98 }, animate: { opacity: 1, scale: 1 }, exit: { opacity: 0, scale: 0.98 }, transition: { delay: 0.5 }, children: _jsxs("div", { className: "rounded-xl p-6 flex flex-col gap-2 leading-relaxed text-center max-w-xl", children: [_jsx("p", { className: "flex flex-row justify-center gap-4 items-center" }), !theme?.overview ? (_jsxs(_Fragment, { children: [bot?.avatar && (_jsx("img", { src: bot?.avatar, alt: bot?.name ?? 'Avatar', width: 40, height: 40, className: "rounded-full m-auto" })), _jsx("p", { className: "font-semibold text-xl", children: bot?.name })] })) : (_jsxs(_Fragment, { children: [_jsx("p", { className: "font-semibold text-xl", children: theme?.overview?.title }), _jsx("p", { children: theme?.overview?.description })] }))] }) }, "overview"));
|
|
7
|
+
};
|
|
8
|
+
export default Overview;
|
|
9
|
+
//# sourceMappingURL=Overview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Overview.js","sourceRoot":"","sources":["../../../src/components/Chat/Overview.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAKhE,MAAM,CAAC,MAAM,QAAQ,GAAkB,CAAC,EAAE,GAAG,EAAa,EAAE,EAAE;IAC5D,MAAM,EAAE,KAAK,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACrC,OAAO,CACL,KAAC,MAAM,CAAC,GAAG,IAET,SAAS,EAAC,2BAA2B,EACrC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EACpC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EACjC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EACjC,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,YAE1B,eAAK,SAAS,EAAC,yEAAyE,aACtF,YAAG,SAAS,EAAC,iDAAiD,GAAK,EAClE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAClB,8BACG,GAAG,EAAE,MAAM,IAAI,CACd,cACE,GAAG,EAAE,GAAG,EAAE,MAAM,EAChB,GAAG,EAAE,GAAG,EAAE,IAAI,IAAI,QAAQ,EAC1B,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,EACV,SAAS,EAAC,qBAAqB,GAC/B,CACH,EACD,YAAG,SAAS,EAAC,uBAAuB,YAAE,GAAG,EAAE,IAAI,GAAK,IACnD,CACJ,CAAC,CAAC,CAAC,CACF,8BACE,YAAG,SAAS,EAAC,uBAAuB,YAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAK,EACjE,sBAAI,KAAK,EAAE,QAAQ,EAAE,WAAW,GAAK,IACpC,CACJ,IACG,IA5BF,UAAU,CA6BH,CACd,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC","sourcesContent":["import { motion } from 'framer-motion';\nimport { FC } from 'react';\nimport { BotType } from '../../types/bot.type';\nimport { useConfiguration } from '../../hooks/useConfiguration';\n\ntype PropsType = {\n bot: BotType | null;\n};\nexport const Overview: FC<PropsType> = ({ bot }: PropsType) => {\n const { theme } = useConfiguration();\n return (\n <motion.div\n key=\"overview\"\n className=\"max-w-3xl m-auto md:mt-20\"\n initial={{ opacity: 0, scale: 0.98 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.98 }}\n transition={{ delay: 0.5 }}\n >\n <div className=\"rounded-xl p-6 flex flex-col gap-2 leading-relaxed text-center max-w-xl\">\n <p className=\"flex flex-row justify-center gap-4 items-center\"></p>\n {!theme?.overview ? (\n <>\n {bot?.avatar && (\n <img\n src={bot?.avatar}\n alt={bot?.name ?? 'Avatar'}\n width={40}\n height={40}\n className=\"rounded-full m-auto\"\n />\n )}\n <p className=\"font-semibold text-xl\">{bot?.name}</p>\n </>\n ) : (\n <>\n <p className=\"font-semibold text-xl\">{theme?.overview?.title}</p>\n <p>{theme?.overview?.description}</p>\n </>\n )}\n </div>\n </motion.div>\n );\n};\n\nexport default Overview;\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { IFileUpload } from '../../types/flowise.type';
|
|
2
|
+
export declare const PreviewAttachment: ({ attachment, isUploading, }: {
|
|
3
|
+
attachment: IFileUpload;
|
|
4
|
+
isUploading?: boolean;
|
|
5
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=PreviewAttachment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PreviewAttachment.d.ts","sourceRoot":"","sources":["../../../src/components/Chat/PreviewAttachment.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAIvD,eAAO,MAAM,iBAAiB,iCAG3B;IACD,UAAU,EAAE,WAAW,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,4CAmCA,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { LoaderIcon } from './Icons';
|
|
3
|
+
export const PreviewAttachment = ({ attachment, isUploading = false, }) => {
|
|
4
|
+
const { name, data, mime, tempId } = attachment;
|
|
5
|
+
return (_jsx("div", { className: "flex flex-col gap-2", children: _jsxs("div", { className: "w-30 p-0 max-w-[400px] bg-muted rounded-md relative flex flex-col items-center justify-center", children: [data ? (mime.startsWith('audio') ? (_jsx("audio", { controls: true, children: _jsx("source", { src: data, type: mime }) })) : mime.startsWith('image') ? (_jsx("img", { src: data, alt: name ?? 'An image attachment', className: "rounded-md size-full object-contain" }, tempId)) : (_jsx("div", { className: "w-full text-left truncate", children: name }))) : (_jsx("div", { className: "w-full text-left truncate", children: name })), isUploading && (_jsx("div", { className: "animate-spin absolute text-zinc-500", children: _jsx(LoaderIcon, {}) }))] }) }));
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=PreviewAttachment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PreviewAttachment.js","sourceRoot":"","sources":["../../../src/components/Chat/PreviewAttachment.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,UAAU,EACV,WAAW,GAAG,KAAK,GAIpB,EAAE,EAAE;IACH,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;IAChD,OAAO,CACL,cAAK,SAAS,EAAC,qBAAqB,YAClC,eAAK,SAAS,EAAC,+FAA+F,aAC3G,IAAI,CAAC,CAAC,CAAC,CACN,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CACzB,gBAAO,QAAQ,kBACb,iBAAQ,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAI,GAC3B,CACT,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAC7B,cAEE,GAAG,EAAE,IAAI,EACT,GAAG,EAAE,IAAI,IAAI,qBAAqB,EAClC,SAAS,EAAC,qCAAqC,IAH1C,MAAM,CAIX,CACH,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,2BAA2B,YAAE,IAAI,GAAO,CACxD,CACF,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,2BAA2B,YAAE,IAAI,GAAO,CACxD,EAEA,WAAW,IAAI,CACd,cAAK,SAAS,EAAC,qCAAqC,YAClD,KAAC,UAAU,KAAG,GACV,CACP,IACG,GAIF,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { IFileUpload } from '../../types/flowise.type';\nimport { LoaderIcon } from './Icons';\nimport React from 'react';\n\nexport const PreviewAttachment = ({\n attachment,\n isUploading = false,\n}: {\n attachment: IFileUpload;\n isUploading?: boolean;\n}) => {\n const { name, data, mime, tempId } = attachment;\n return (\n <div className=\"flex flex-col gap-2\">\n <div className=\"w-30 p-0 max-w-[400px] bg-muted rounded-md relative flex flex-col items-center justify-center\">\n {data ? (\n mime.startsWith('audio') ? (\n <audio controls>\n <source src={data} type={mime} />\n </audio>\n ) : mime.startsWith('image') ? (\n <img\n key={tempId}\n src={data}\n alt={name ?? 'An image attachment'}\n className=\"rounded-md size-full object-contain\"\n />\n ) : (\n <div className=\"w-full text-left truncate\">{name}</div>\n )\n ) : (\n <div className=\"w-full text-left truncate\">{name}</div>\n )}\n\n {isUploading && (\n <div className=\"animate-spin absolute text-zinc-500\">\n <LoaderIcon />\n </div>\n )}\n </div>\n {/*<div className=\"text-xs text-zinc-500 max-w-[200px] truncate \">*/}\n {/* {name}*/}\n {/*</div>*/}\n </div>\n );\n};\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IFileUpload } from '../../types/flowise.type';
|
|
2
|
+
export declare const PreviewFileAttachment: ({ attachment, isUploading, onRemoveAttachment, }: {
|
|
3
|
+
attachment: IFileUpload;
|
|
4
|
+
isUploading?: boolean;
|
|
5
|
+
onRemoveAttachment?: () => void;
|
|
6
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=PreviewFileAttachment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PreviewFileAttachment.d.ts","sourceRoot":"","sources":["../../../src/components/Chat/PreviewFileAttachment.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAKvD,eAAO,MAAM,qBAAqB,qDAI/B;IACD,UAAU,EAAE,WAAW,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;CACjC,4CAiDA,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { LoaderIcon } from './Icons';
|
|
3
|
+
import { CircleX, File } from 'lucide-react';
|
|
4
|
+
export const PreviewFileAttachment = ({ attachment, isUploading = false, onRemoveAttachment = () => { }, }) => {
|
|
5
|
+
const { name, data, mime, tempId } = attachment;
|
|
6
|
+
const renderAttachment = () => {
|
|
7
|
+
if (mime.startsWith('audio')) {
|
|
8
|
+
return (_jsx("audio", { controls: true, children: _jsx("source", { src: data, type: mime }) }));
|
|
9
|
+
}
|
|
10
|
+
if (mime.startsWith('image')) {
|
|
11
|
+
return (_jsx("img", { src: data, alt: name ?? 'An image attachment', className: "rounded-md size-full object-cover " }));
|
|
12
|
+
}
|
|
13
|
+
return (_jsx("div", { className: "w-[40px] h-[40px] flex items-center justify-center bg-blue-600 rounded-md", children: _jsx(File, { size: 20, color: "white" }) }));
|
|
14
|
+
};
|
|
15
|
+
return (_jsx("div", { className: "flex flex-col gap-2", children: _jsxs("div", { className: "w-[58px] h-[58px] bg-white rounded-md relative flex flex-col items-center justify-center", children: [_jsx("div", { onClick: (e) => {
|
|
16
|
+
e.preventDefault();
|
|
17
|
+
e.stopPropagation();
|
|
18
|
+
onRemoveAttachment();
|
|
19
|
+
}, className: "w-fit h-fit flex items-center justify-center absolute top-0 right-[4px] bg-black rounded-full", children: _jsx(CircleX, { size: 20, color: "white" }) }), data && renderAttachment(), isUploading && (_jsx("div", { className: "animate-spin absolute text-zinc-500", children: _jsx(LoaderIcon, {}) }))] }) }));
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=PreviewFileAttachment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PreviewFileAttachment.js","sourceRoot":"","sources":["../../../src/components/Chat/PreviewFileAttachment.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAG7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EACpC,UAAU,EACV,WAAW,GAAG,KAAK,EACnB,kBAAkB,GAAG,GAAG,EAAE,GAAE,CAAC,GAK9B,EAAE,EAAE;IACH,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;IAEhD,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,OAAO,CACL,gBAAO,QAAQ,kBACb,iBAAQ,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAI,GAC3B,CACT,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,OAAO,CACL,cACE,GAAG,EAAE,IAAI,EACT,GAAG,EAAE,IAAI,IAAI,qBAAqB,EAClC,SAAS,EAAC,oCAAoC,GAC9C,CACH,CAAC;QACJ,CAAC;QACD,OAAO,CACL,cAAK,SAAS,EAAC,2EAA2E,YACxF,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAC,OAAO,GAAG,GAC5B,CACP,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CACL,cAAK,SAAS,EAAC,qBAAqB,YAClC,eAAK,SAAS,EAAC,2FAA2F,aACxG,cACE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;wBACb,CAAC,CAAC,cAAc,EAAE,CAAC;wBACnB,CAAC,CAAC,eAAe,EAAE,CAAC;wBACpB,kBAAkB,EAAE,CAAC;oBACvB,CAAC,EACD,SAAS,EAAC,+FAA+F,YAEzG,KAAC,OAAO,IAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAC,OAAO,GAAG,GAC/B,EACL,IAAI,IAAI,gBAAgB,EAAE,EAC1B,WAAW,IAAI,CACd,cAAK,SAAS,EAAC,qCAAqC,YAClD,KAAC,UAAU,KAAG,GACV,CACP,IACG,GACF,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { IFileUpload } from '../../types/flowise.type';\nimport { LoaderIcon } from './Icons';\nimport { CircleX, File } from 'lucide-react';\nimport React from 'react';\n\nexport const PreviewFileAttachment = ({\n attachment,\n isUploading = false,\n onRemoveAttachment = () => {},\n}: {\n attachment: IFileUpload;\n isUploading?: boolean;\n onRemoveAttachment?: () => void;\n}) => {\n const { name, data, mime, tempId } = attachment;\n\n const renderAttachment = () => {\n if (mime.startsWith('audio')) {\n return (\n <audio controls>\n <source src={data} type={mime} />\n </audio>\n );\n }\n if (mime.startsWith('image')) {\n return (\n <img\n src={data}\n alt={name ?? 'An image attachment'}\n className=\"rounded-md size-full object-cover \"\n />\n );\n }\n return (\n <div className=\"w-[40px] h-[40px] flex items-center justify-center bg-blue-600 rounded-md\">\n <File size={20} color=\"white\" />\n </div>\n );\n };\n\n return (\n <div className=\"flex flex-col gap-2\">\n <div className=\"w-[58px] h-[58px] bg-white rounded-md relative flex flex-col items-center justify-center\">\n <div\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onRemoveAttachment();\n }}\n className=\"w-fit h-fit flex items-center justify-center absolute top-0 right-[4px] bg-black rounded-full\"\n >\n <CircleX size={20} color=\"white\" />\n </div>\n {data && renderAttachment()}\n {isUploading && (\n <div className=\"animate-spin absolute text-zinc-500\">\n <LoaderIcon />\n </div>\n )}\n </div>\n </div>\n );\n};\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface PropTypes {
|
|
3
|
+
productCode?: string;
|
|
4
|
+
tourCode?: string;
|
|
5
|
+
languageCode?: string;
|
|
6
|
+
apiUrl?: string;
|
|
7
|
+
}
|
|
8
|
+
declare const _default: React.NamedExoticComponent<PropTypes>;
|
|
9
|
+
export default _default;
|
|
10
|
+
//# sourceMappingURL=ProductDetail.d.ts.map
|