@botonic/react 0.57.0-rslib-esm.0 → 0.57.0-rslib-esm.1
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/lib/app.js.map +1 -0
- package/lib/botonic-tester.js.map +1 -0
- package/lib/components/audio.d.ts +9 -0
- package/lib/components/audio.js.map +1 -0
- package/lib/components/button/index.js.map +1 -0
- package/lib/components/button/styles.js.map +1 -0
- package/lib/components/buttons-disabler.js.map +1 -0
- package/lib/components/carousel.d.ts +10 -0
- package/lib/components/carousel.js.map +1 -0
- package/lib/components/components.js.map +1 -0
- package/lib/components/constants.js.map +1 -0
- package/lib/components/custom-message.js.map +1 -0
- package/lib/components/document.d.ts +9 -0
- package/lib/components/document.js.map +1 -0
- package/lib/components/element.js.map +1 -0
- package/lib/components/handoff.d.ts +1 -0
- package/lib/components/handoff.js.map +1 -0
- package/lib/components/image.d.ts +9 -0
- package/lib/components/image.js.map +1 -0
- package/lib/components/index-types.js.map +1 -0
- package/lib/components/index.js.map +1 -0
- package/lib/components/location.js.map +1 -0
- package/lib/components/markdown.js.map +1 -0
- package/lib/components/message/index.js.map +1 -0
- package/lib/components/message/message-footer.d.ts +8 -0
- package/lib/components/message/message-footer.js.map +1 -0
- package/lib/components/message/message-image.js.map +1 -0
- package/lib/components/message/styles.js.map +1 -0
- package/lib/components/message/timestamps.d.ts +13 -0
- package/lib/components/message/timestamps.js.map +1 -0
- package/lib/components/message-template.js.map +1 -0
- package/lib/components/multichannel/facebook/facebook.js.map +1 -0
- package/lib/components/multichannel/index-types.js.map +1 -0
- package/lib/components/multichannel/index.js.map +1 -0
- package/lib/components/multichannel/multichannel-button.d.ts +4 -0
- package/lib/components/multichannel/multichannel-button.js.map +1 -0
- package/lib/components/multichannel/multichannel-carousel.d.ts +1 -0
- package/lib/components/multichannel/multichannel-carousel.js.map +1 -0
- package/lib/components/multichannel/multichannel-context.js.map +1 -0
- package/lib/components/multichannel/multichannel-reply.d.ts +4 -0
- package/lib/components/multichannel/multichannel-reply.js.map +1 -0
- package/lib/components/multichannel/multichannel-text.d.ts +2 -0
- package/lib/components/multichannel/multichannel-text.js.map +1 -0
- package/lib/components/multichannel/multichannel-utils.js.map +1 -0
- package/lib/components/multichannel/multichannel.js.map +1 -0
- package/lib/components/multichannel/whatsapp/constants.js.map +1 -0
- package/lib/components/multichannel/whatsapp/markdown-meta.js.map +1 -0
- package/lib/components/pic.js.map +1 -0
- package/lib/components/raw.d.ts +9 -0
- package/lib/components/raw.js.map +1 -0
- package/lib/components/reply.js.map +1 -0
- package/lib/components/share-button.js.map +1 -0
- package/lib/components/subtitle.js.map +1 -0
- package/lib/components/system-debug-trace/debug-message.d.ts +8 -0
- package/lib/components/system-debug-trace/debug-message.js.map +1 -0
- package/lib/components/system-debug-trace/events/ai-agent/ai-agent.d.ts +4 -0
- package/lib/components/system-debug-trace/events/ai-agent/ai-agent.js.map +1 -0
- package/lib/components/system-debug-trace/events/ai-agent/executed-tools.d.ts +7 -0
- package/lib/components/system-debug-trace/events/ai-agent/executed-tools.js.map +1 -0
- package/lib/components/system-debug-trace/events/ai-agent/index.js.map +1 -0
- package/lib/components/system-debug-trace/events/ai-agent/parse-tools.js.map +1 -0
- package/lib/components/system-debug-trace/events/ai-agent/rehydrate-ai-agent-event.js.map +1 -0
- package/lib/components/system-debug-trace/events/ai-agent/types.js.map +1 -0
- package/lib/components/system-debug-trace/events/ai-agent/use-rehydrated-ai-agent-event.js.map +1 -0
- package/lib/components/system-debug-trace/events/ai-agent-router/ai-agent-router.d.ts +4 -0
- package/lib/components/system-debug-trace/events/ai-agent-router/ai-agent-router.js.map +1 -0
- package/lib/components/system-debug-trace/events/ai-agent-router/index.js.map +1 -0
- package/lib/components/system-debug-trace/events/ai-agent-router/types.js.map +1 -0
- package/lib/components/system-debug-trace/events/bot-action.js.map +1 -0
- package/lib/components/system-debug-trace/events/components/guardrail-item.js.map +1 -0
- package/lib/components/system-debug-trace/events/components/index.js.map +1 -0
- package/lib/components/system-debug-trace/events/components/sources-section.d.ts +11 -0
- package/lib/components/system-debug-trace/events/components/sources-section.js.map +1 -0
- package/lib/components/system-debug-trace/events/conditional-channel.js.map +1 -0
- package/lib/components/system-debug-trace/events/conditional-country.js.map +1 -0
- package/lib/components/system-debug-trace/events/conditional-custom.d.ts +10 -0
- package/lib/components/system-debug-trace/events/conditional-custom.js.map +1 -0
- package/lib/components/system-debug-trace/events/conditional-queue-status.d.ts +11 -0
- package/lib/components/system-debug-trace/events/conditional-queue-status.js.map +1 -0
- package/lib/components/system-debug-trace/events/constants.js.map +1 -0
- package/lib/components/system-debug-trace/events/fallback.js.map +1 -0
- package/lib/components/system-debug-trace/events/handoff-success.d.ts +11 -0
- package/lib/components/system-debug-trace/events/handoff-success.js.map +1 -0
- package/lib/components/system-debug-trace/events/index.js.map +1 -0
- package/lib/components/system-debug-trace/events/keyword.js.map +1 -0
- package/lib/components/system-debug-trace/events/knowledge-bases-types.js.map +1 -0
- package/lib/components/system-debug-trace/events/redirect-flow.js.map +1 -0
- package/lib/components/system-debug-trace/events/smart-intent.js.map +1 -0
- package/lib/components/system-debug-trace/events/webview-action-triggered.d.ts +10 -0
- package/lib/components/system-debug-trace/events/webview-action-triggered.js.map +1 -0
- package/lib/components/system-debug-trace/hooks/use-knowledge-base-info.d.ts +16 -0
- package/lib/components/system-debug-trace/hooks/use-knowledge-base-info.js.map +1 -0
- package/lib/components/system-debug-trace/hooks/use-last-label-position.js.map +1 -0
- package/lib/components/system-debug-trace/icons/ai-router.d.ts +1 -0
- package/lib/components/system-debug-trace/icons/ai-router.js.map +1 -0
- package/lib/components/system-debug-trace/icons/ai-specialist.d.ts +1 -0
- package/lib/components/system-debug-trace/icons/ai-specialist.js.map +1 -0
- package/lib/components/system-debug-trace/icons/arrow-progress.d.ts +2 -0
- package/lib/components/system-debug-trace/icons/arrow-progress.js.map +1 -0
- package/lib/components/system-debug-trace/icons/brain.d.ts +2 -0
- package/lib/components/system-debug-trace/icons/brain.js.map +1 -0
- package/lib/components/system-debug-trace/icons/caret-down.d.ts +2 -0
- package/lib/components/system-debug-trace/icons/caret-down.js.map +1 -0
- package/lib/components/system-debug-trace/icons/caret-up.d.ts +2 -0
- package/lib/components/system-debug-trace/icons/caret-up.js.map +1 -0
- package/lib/components/system-debug-trace/icons/circle-check.d.ts +2 -0
- package/lib/components/system-debug-trace/icons/circle-check.js.map +1 -0
- package/lib/components/system-debug-trace/icons/code.d.ts +2 -0
- package/lib/components/system-debug-trace/icons/code.js.map +1 -0
- package/lib/components/system-debug-trace/icons/file-pdf.d.ts +2 -0
- package/lib/components/system-debug-trace/icons/file-pdf.js.map +1 -0
- package/lib/components/system-debug-trace/icons/file-word.d.ts +2 -0
- package/lib/components/system-debug-trace/icons/file-word.js.map +1 -0
- package/lib/components/system-debug-trace/icons/hand.d.ts +2 -0
- package/lib/components/system-debug-trace/icons/hand.js.map +1 -0
- package/lib/components/system-debug-trace/icons/head-set.d.ts +2 -0
- package/lib/components/system-debug-trace/icons/head-set.js.map +1 -0
- package/lib/components/system-debug-trace/icons/index.js.map +1 -0
- package/lib/components/system-debug-trace/icons/life-ring.d.ts +2 -0
- package/lib/components/system-debug-trace/icons/life-ring.js.map +1 -0
- package/lib/components/system-debug-trace/icons/link.d.ts +2 -0
- package/lib/components/system-debug-trace/icons/link.js.map +1 -0
- package/lib/components/system-debug-trace/icons/quote-right.d.ts +2 -0
- package/lib/components/system-debug-trace/icons/quote-right.js.map +1 -0
- package/lib/components/system-debug-trace/icons/screwdriver-wrench.d.ts +2 -0
- package/lib/components/system-debug-trace/icons/screwdriver-wrench.js.map +1 -0
- package/lib/components/system-debug-trace/icons/split.d.ts +2 -0
- package/lib/components/system-debug-trace/icons/split.js.map +1 -0
- package/lib/components/system-debug-trace/icons/wand.d.ts +2 -0
- package/lib/components/system-debug-trace/icons/wand.js.map +1 -0
- package/lib/components/system-debug-trace/icons/window-restore.d.ts +2 -0
- package/lib/components/system-debug-trace/icons/window-restore.js.map +1 -0
- package/lib/components/system-debug-trace/index.d.ts +10 -0
- package/lib/components/system-debug-trace/index.js.map +1 -0
- package/lib/components/system-debug-trace/styles.js.map +1 -0
- package/lib/components/system-debug-trace/types.js.map +1 -0
- package/lib/components/text.d.ts +8 -0
- package/lib/components/text.js.map +1 -0
- package/lib/components/title.js.map +1 -0
- package/lib/components/video.d.ts +9 -0
- package/lib/components/video.js.map +1 -0
- package/lib/components/webchat-settings.js.map +1 -0
- package/lib/components/whatsapp-button-list.js.map +1 -0
- package/lib/components/whatsapp-catalog.js.map +1 -0
- package/lib/components/whatsapp-cta-url-button.js.map +1 -0
- package/lib/components/whatsapp-interactive-media-carousel.d.ts +31 -0
- package/lib/components/whatsapp-interactive-media-carousel.js.map +1 -0
- package/lib/components/whatsapp-media-carousel.js.map +1 -0
- package/lib/components/whatsapp-product-carousel.js.map +1 -0
- package/lib/components/whatsapp-product-list.js.map +1 -0
- package/lib/components/whatsapp-product.js.map +1 -0
- package/lib/components/whatsapp-request-contact-info.js.map +1 -0
- package/lib/components/whatsapp-template/index.js.map +1 -0
- package/lib/components/whatsapp-template/types.js.map +1 -0
- package/lib/constants.js.map +1 -0
- package/lib/contexts.js.map +1 -0
- package/lib/debug-system-messages.js.map +1 -0
- package/lib/dev-app.d.ts +213 -0
- package/lib/dev-app.js.map +1 -0
- package/lib/index-types.js.map +1 -0
- package/lib/index.js.map +1 -0
- package/lib/message-utils.js.map +1 -0
- package/lib/msg-to-botonic.js.map +1 -0
- package/lib/node-app.js.map +1 -0
- package/lib/react-bot.js.map +1 -0
- package/lib/shared/styles.js.map +1 -0
- package/lib/util/dom.js.map +1 -0
- package/lib/util/environment.js.map +1 -0
- package/lib/util/error-boundary.d.ts +7 -0
- package/lib/util/error-boundary.js.map +1 -0
- package/lib/util/functional.js.map +1 -0
- package/lib/util/i18n.js.map +1 -0
- package/lib/util/index.js.map +1 -0
- package/lib/util/logs.js.map +1 -0
- package/lib/util/objects.js.map +1 -0
- package/lib/util/react.js.map +1 -0
- package/lib/util/regexs.js.map +1 -0
- package/lib/util/strings.js.map +1 -0
- package/lib/util/webchat.js.map +1 -0
- package/lib/util/webviews.js.map +1 -0
- package/lib/webchat/chat-area/index.d.ts +1 -0
- package/lib/webchat/chat-area/index.js.map +1 -0
- package/lib/webchat/chat-area/styles.js.map +1 -0
- package/lib/webchat/components/common.d.ts +1 -0
- package/lib/webchat/components/common.js.map +1 -0
- package/lib/webchat/components/conditional-animation.d.ts +1 -0
- package/lib/webchat/components/conditional-animation.js.map +1 -0
- package/lib/webchat/components/opened-persistent-menu.d.ts +6 -0
- package/lib/webchat/components/opened-persistent-menu.js.map +1 -0
- package/lib/webchat/constants.js.map +1 -0
- package/lib/webchat/context/actions.js.map +1 -0
- package/lib/webchat/context/index.js.map +1 -0
- package/lib/webchat/context/messages-reducer.js.map +1 -0
- package/lib/webchat/context/types.js.map +1 -0
- package/lib/webchat/context/use-webchat.js.map +1 -0
- package/lib/webchat/context/webchat-reducer.js.map +1 -0
- package/lib/webchat/cover-component/index.d.ts +6 -0
- package/lib/webchat/cover-component/index.js.map +1 -0
- package/lib/webchat/custom-messages/index.js.map +1 -0
- package/lib/webchat/custom-messages/rating/icons/face-angry.d.ts +3 -0
- package/lib/webchat/custom-messages/rating/icons/face-angry.js.map +1 -0
- package/lib/webchat/custom-messages/rating/icons/face-frown.d.ts +3 -0
- package/lib/webchat/custom-messages/rating/icons/face-frown.js.map +1 -0
- package/lib/webchat/custom-messages/rating/icons/face-grin-beam.d.ts +3 -0
- package/lib/webchat/custom-messages/rating/icons/face-grin-beam.js.map +1 -0
- package/lib/webchat/custom-messages/rating/icons/face-meh.d.ts +3 -0
- package/lib/webchat/custom-messages/rating/icons/face-meh.js.map +1 -0
- package/lib/webchat/custom-messages/rating/icons/face-smile.d.ts +3 -0
- package/lib/webchat/custom-messages/rating/icons/face-smile.js.map +1 -0
- package/lib/webchat/custom-messages/rating/icons/index.js.map +1 -0
- package/lib/webchat/custom-messages/rating/icons/star.d.ts +3 -0
- package/lib/webchat/custom-messages/rating/icons/star.js.map +1 -0
- package/lib/webchat/custom-messages/rating/index.js.map +1 -0
- package/lib/webchat/custom-messages/rating/rating-selector.d.ts +11 -0
- package/lib/webchat/custom-messages/rating/rating-selector.js.map +1 -0
- package/lib/webchat/custom-messages/rating/smileys.d.ts +2 -0
- package/lib/webchat/custom-messages/rating/smileys.js.map +1 -0
- package/lib/webchat/custom-messages/rating/stars.d.ts +2 -0
- package/lib/webchat/custom-messages/rating/stars.js.map +1 -0
- package/lib/webchat/custom-messages/rating/styles.js.map +1 -0
- package/lib/webchat/custom-messages/rating/types.js.map +1 -0
- package/lib/webchat/devices/index.js.map +1 -0
- package/lib/webchat/header/default-header.d.ts +1 -0
- package/lib/webchat/header/default-header.js.map +1 -0
- package/lib/webchat/header/index.js.map +1 -0
- package/lib/webchat/header/styles.js.map +1 -0
- package/lib/webchat/hooks/index.js.map +1 -0
- package/lib/webchat/hooks/use-component-visible.js.map +1 -0
- package/lib/webchat/hooks/use-component-will-mount.js.map +1 -0
- package/lib/webchat/hooks/use-device-adapter.js.map +1 -0
- package/lib/webchat/hooks/use-previous.js.map +1 -0
- package/lib/webchat/hooks/use-scroll-to-bottom.js.map +1 -0
- package/lib/webchat/hooks/use-scrollbar-controller.js.map +1 -0
- package/lib/webchat/hooks/use-typing.js.map +1 -0
- package/lib/webchat/hooks/use-virtual-keyboard-detection.js.map +1 -0
- package/lib/webchat/hooks/use-webchat-dimensions.js.map +1 -0
- package/lib/webchat/hooks/use-webchat-resizer.js.map +1 -0
- package/lib/webchat/index-types.js.map +1 -0
- package/lib/webchat/index.js.map +1 -0
- package/lib/webchat/input-panel/attachment.d.ts +6 -0
- package/lib/webchat/input-panel/attachment.js.map +1 -0
- package/lib/webchat/input-panel/emoji-picker.d.ts +5 -0
- package/lib/webchat/input-panel/emoji-picker.js.map +1 -0
- package/lib/webchat/input-panel/index.d.ts +9 -0
- package/lib/webchat/input-panel/index.js.map +1 -0
- package/lib/webchat/input-panel/opened-emoji-picker.d.ts +6 -0
- package/lib/webchat/input-panel/opened-emoji-picker.js.map +1 -0
- package/lib/webchat/input-panel/persistent-menu.d.ts +5 -0
- package/lib/webchat/input-panel/persistent-menu.js.map +1 -0
- package/lib/webchat/input-panel/send-button.d.ts +5 -0
- package/lib/webchat/input-panel/send-button.js.map +1 -0
- package/lib/webchat/input-panel/styles.js.map +1 -0
- package/lib/webchat/input-panel/textarea.d.ts +10 -0
- package/lib/webchat/input-panel/textarea.js.map +1 -0
- package/lib/webchat/input-panel/typing-network-sender.js.map +1 -0
- package/lib/webchat/input-panel/use-typing-chat-event-sender.js.map +1 -0
- package/lib/webchat/input-panel/use-typing-session.js.map +1 -0
- package/lib/webchat/message-list/index.d.ts +2 -0
- package/lib/webchat/message-list/index.js.map +1 -0
- package/lib/webchat/message-list/intro-message.d.ts +1 -0
- package/lib/webchat/message-list/intro-message.js.map +1 -0
- package/lib/webchat/message-list/scroll-button.js.map +1 -0
- package/lib/webchat/message-list/styles.js.map +1 -0
- package/lib/webchat/message-list/unread-messages-banner.js.map +1 -0
- package/lib/webchat/message-list/use-debounce.js.map +1 -0
- package/lib/webchat/message-list/use-notifications.js.map +1 -0
- package/lib/webchat/replies/index.d.ts +1 -0
- package/lib/webchat/replies/index.js.map +1 -0
- package/lib/webchat/replies/styles.js.map +1 -0
- package/lib/webchat/session-view.d.ts +1 -0
- package/lib/webchat/session-view.js.map +1 -0
- package/lib/webchat/styles.js.map +1 -0
- package/lib/webchat/theme/default-theme.js.map +1 -0
- package/lib/webchat/theme/types.js.map +1 -0
- package/lib/webchat/tracking.js.map +1 -0
- package/lib/webchat/trigger-button/index.js.map +1 -0
- package/lib/webchat/trigger-button/styles.js.map +1 -0
- package/lib/webchat/typing-indicator/index.js.map +1 -0
- package/lib/webchat/typing-indicator/styles.js.map +1 -0
- package/lib/webchat/use-storage-state-hook.js.map +1 -0
- package/lib/webchat/utils.js.map +1 -0
- package/lib/webchat/webchat-dev.js.map +1 -0
- package/lib/webchat/webchat.js.map +1 -0
- package/lib/webchat/webview/header.d.ts +1 -0
- package/lib/webchat/webview/header.js.map +1 -0
- package/lib/webchat/webview/index.d.ts +6 -0
- package/lib/webchat/webview/index.js.map +1 -0
- package/lib/webchat/webview/styles.js.map +1 -0
- package/lib/webchat-app.d.ts +114 -0
- package/lib/webchat-app.js.map +1 -0
- package/lib/webview-app.js.map +1 -0
- package/package.json +11 -10
- package/src/components/multichannel/index.ts +7 -6
- package/src/webchat/webchat.tsx +1 -0
- package/lib/esm/app.js.map +0 -1
- package/lib/esm/botonic-tester.js.map +0 -1
- package/lib/esm/components/audio.d.ts +0 -9
- package/lib/esm/components/audio.js.map +0 -1
- package/lib/esm/components/button/index.js.map +0 -1
- package/lib/esm/components/button/styles.js.map +0 -1
- package/lib/esm/components/buttons-disabler.js.map +0 -1
- package/lib/esm/components/carousel.d.ts +0 -10
- package/lib/esm/components/carousel.js.map +0 -1
- package/lib/esm/components/components.js.map +0 -1
- package/lib/esm/components/constants.js.map +0 -1
- package/lib/esm/components/custom-message.js.map +0 -1
- package/lib/esm/components/document.d.ts +0 -9
- package/lib/esm/components/document.js.map +0 -1
- package/lib/esm/components/element.js.map +0 -1
- package/lib/esm/components/handoff.d.ts +0 -1
- package/lib/esm/components/handoff.js.map +0 -1
- package/lib/esm/components/image.d.ts +0 -9
- package/lib/esm/components/image.js.map +0 -1
- package/lib/esm/components/index-types.js.map +0 -1
- package/lib/esm/components/index.js.map +0 -1
- package/lib/esm/components/location.js.map +0 -1
- package/lib/esm/components/markdown.js.map +0 -1
- package/lib/esm/components/message/index.js.map +0 -1
- package/lib/esm/components/message/message-footer.d.ts +0 -8
- package/lib/esm/components/message/message-footer.js.map +0 -1
- package/lib/esm/components/message/message-image.js.map +0 -1
- package/lib/esm/components/message/styles.js.map +0 -1
- package/lib/esm/components/message/timestamps.d.ts +0 -13
- package/lib/esm/components/message/timestamps.js.map +0 -1
- package/lib/esm/components/message-template.js.map +0 -1
- package/lib/esm/components/multichannel/facebook/facebook.js.map +0 -1
- package/lib/esm/components/multichannel/index-types.js.map +0 -1
- package/lib/esm/components/multichannel/index.js.map +0 -1
- package/lib/esm/components/multichannel/multichannel-button.d.ts +0 -4
- package/lib/esm/components/multichannel/multichannel-button.js.map +0 -1
- package/lib/esm/components/multichannel/multichannel-carousel.d.ts +0 -1
- package/lib/esm/components/multichannel/multichannel-carousel.js.map +0 -1
- package/lib/esm/components/multichannel/multichannel-context.js.map +0 -1
- package/lib/esm/components/multichannel/multichannel-reply.d.ts +0 -4
- package/lib/esm/components/multichannel/multichannel-reply.js.map +0 -1
- package/lib/esm/components/multichannel/multichannel-text.d.ts +0 -1
- package/lib/esm/components/multichannel/multichannel-text.js.map +0 -1
- package/lib/esm/components/multichannel/multichannel-utils.js.map +0 -1
- package/lib/esm/components/multichannel/multichannel.js.map +0 -1
- package/lib/esm/components/multichannel/whatsapp/constants.js.map +0 -1
- package/lib/esm/components/multichannel/whatsapp/markdown-meta.js.map +0 -1
- package/lib/esm/components/pic.js.map +0 -1
- package/lib/esm/components/raw.d.ts +0 -9
- package/lib/esm/components/raw.js.map +0 -1
- package/lib/esm/components/reply.js.map +0 -1
- package/lib/esm/components/share-button.js.map +0 -1
- package/lib/esm/components/subtitle.js.map +0 -1
- package/lib/esm/components/system-debug-trace/debug-message.d.ts +0 -7
- package/lib/esm/components/system-debug-trace/debug-message.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/ai-agent/ai-agent.d.ts +0 -4
- package/lib/esm/components/system-debug-trace/events/ai-agent/ai-agent.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/ai-agent/executed-tools.d.ts +0 -7
- package/lib/esm/components/system-debug-trace/events/ai-agent/executed-tools.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/ai-agent/index.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/ai-agent/parse-tools.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/ai-agent/rehydrate-ai-agent-event.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/ai-agent/types.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/ai-agent/use-rehydrated-ai-agent-event.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/ai-agent-router/ai-agent-router.d.ts +0 -4
- package/lib/esm/components/system-debug-trace/events/ai-agent-router/ai-agent-router.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/ai-agent-router/index.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/ai-agent-router/types.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/bot-action.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/components/guardrail-item.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/components/index.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/components/sources-section.d.ts +0 -11
- package/lib/esm/components/system-debug-trace/events/components/sources-section.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/conditional-channel.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/conditional-country.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/conditional-custom.d.ts +0 -10
- package/lib/esm/components/system-debug-trace/events/conditional-custom.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/conditional-queue-status.d.ts +0 -11
- package/lib/esm/components/system-debug-trace/events/conditional-queue-status.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/constants.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/fallback.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/handoff-success.d.ts +0 -11
- package/lib/esm/components/system-debug-trace/events/handoff-success.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/index.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/keyword.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/knowledge-bases-types.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/redirect-flow.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/smart-intent.js.map +0 -1
- package/lib/esm/components/system-debug-trace/events/webview-action-triggered.d.ts +0 -10
- package/lib/esm/components/system-debug-trace/events/webview-action-triggered.js.map +0 -1
- package/lib/esm/components/system-debug-trace/hooks/use-knowledge-base-info.d.ts +0 -16
- package/lib/esm/components/system-debug-trace/hooks/use-knowledge-base-info.js.map +0 -1
- package/lib/esm/components/system-debug-trace/hooks/use-last-label-position.js.map +0 -1
- package/lib/esm/components/system-debug-trace/icons/ai-router.d.ts +0 -1
- package/lib/esm/components/system-debug-trace/icons/ai-router.js.map +0 -1
- package/lib/esm/components/system-debug-trace/icons/ai-specialist.d.ts +0 -1
- package/lib/esm/components/system-debug-trace/icons/ai-specialist.js.map +0 -1
- package/lib/esm/components/system-debug-trace/icons/arrow-progress.d.ts +0 -2
- package/lib/esm/components/system-debug-trace/icons/arrow-progress.js.map +0 -1
- package/lib/esm/components/system-debug-trace/icons/brain.d.ts +0 -2
- package/lib/esm/components/system-debug-trace/icons/brain.js.map +0 -1
- package/lib/esm/components/system-debug-trace/icons/caret-down.d.ts +0 -2
- package/lib/esm/components/system-debug-trace/icons/caret-down.js.map +0 -1
- package/lib/esm/components/system-debug-trace/icons/caret-up.d.ts +0 -2
- package/lib/esm/components/system-debug-trace/icons/caret-up.js.map +0 -1
- package/lib/esm/components/system-debug-trace/icons/circle-check.d.ts +0 -2
- package/lib/esm/components/system-debug-trace/icons/circle-check.js.map +0 -1
- package/lib/esm/components/system-debug-trace/icons/code.d.ts +0 -2
- package/lib/esm/components/system-debug-trace/icons/code.js.map +0 -1
- package/lib/esm/components/system-debug-trace/icons/file-pdf.d.ts +0 -2
- package/lib/esm/components/system-debug-trace/icons/file-pdf.js.map +0 -1
- package/lib/esm/components/system-debug-trace/icons/file-word.d.ts +0 -2
- package/lib/esm/components/system-debug-trace/icons/file-word.js.map +0 -1
- package/lib/esm/components/system-debug-trace/icons/hand.d.ts +0 -2
- package/lib/esm/components/system-debug-trace/icons/hand.js.map +0 -1
- package/lib/esm/components/system-debug-trace/icons/head-set.d.ts +0 -2
- package/lib/esm/components/system-debug-trace/icons/head-set.js.map +0 -1
- package/lib/esm/components/system-debug-trace/icons/index.js.map +0 -1
- package/lib/esm/components/system-debug-trace/icons/life-ring.d.ts +0 -2
- package/lib/esm/components/system-debug-trace/icons/life-ring.js.map +0 -1
- package/lib/esm/components/system-debug-trace/icons/link.d.ts +0 -2
- package/lib/esm/components/system-debug-trace/icons/link.js.map +0 -1
- package/lib/esm/components/system-debug-trace/icons/quote-right.d.ts +0 -2
- package/lib/esm/components/system-debug-trace/icons/quote-right.js.map +0 -1
- package/lib/esm/components/system-debug-trace/icons/screwdriver-wrench.d.ts +0 -2
- package/lib/esm/components/system-debug-trace/icons/screwdriver-wrench.js.map +0 -1
- package/lib/esm/components/system-debug-trace/icons/split.d.ts +0 -2
- package/lib/esm/components/system-debug-trace/icons/split.js.map +0 -1
- package/lib/esm/components/system-debug-trace/icons/wand.d.ts +0 -2
- package/lib/esm/components/system-debug-trace/icons/wand.js.map +0 -1
- package/lib/esm/components/system-debug-trace/icons/window-restore.d.ts +0 -2
- package/lib/esm/components/system-debug-trace/icons/window-restore.js.map +0 -1
- package/lib/esm/components/system-debug-trace/index.d.ts +0 -10
- package/lib/esm/components/system-debug-trace/index.js.map +0 -1
- package/lib/esm/components/system-debug-trace/styles.js.map +0 -1
- package/lib/esm/components/system-debug-trace/types.js.map +0 -1
- package/lib/esm/components/text.d.ts +0 -8
- package/lib/esm/components/text.js.map +0 -1
- package/lib/esm/components/title.js.map +0 -1
- package/lib/esm/components/video.d.ts +0 -9
- package/lib/esm/components/video.js.map +0 -1
- package/lib/esm/components/webchat-settings.js.map +0 -1
- package/lib/esm/components/whatsapp-button-list.js.map +0 -1
- package/lib/esm/components/whatsapp-catalog.js.map +0 -1
- package/lib/esm/components/whatsapp-cta-url-button.js.map +0 -1
- package/lib/esm/components/whatsapp-interactive-media-carousel.d.ts +0 -31
- package/lib/esm/components/whatsapp-interactive-media-carousel.js.map +0 -1
- package/lib/esm/components/whatsapp-media-carousel.js.map +0 -1
- package/lib/esm/components/whatsapp-product-carousel.js.map +0 -1
- package/lib/esm/components/whatsapp-product-list.js.map +0 -1
- package/lib/esm/components/whatsapp-product.js.map +0 -1
- package/lib/esm/components/whatsapp-request-contact-info.js.map +0 -1
- package/lib/esm/components/whatsapp-template/index.js.map +0 -1
- package/lib/esm/components/whatsapp-template/types.js.map +0 -1
- package/lib/esm/constants.js.map +0 -1
- package/lib/esm/contexts.js.map +0 -1
- package/lib/esm/debug-system-messages.js.map +0 -1
- package/lib/esm/dev-app.d.ts +0 -213
- package/lib/esm/dev-app.js.map +0 -1
- package/lib/esm/index-types.js.map +0 -1
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/message-utils.js.map +0 -1
- package/lib/esm/msg-to-botonic.js.map +0 -1
- package/lib/esm/node-app.js.map +0 -1
- package/lib/esm/package.json +0 -3
- package/lib/esm/react-bot.js.map +0 -1
- package/lib/esm/shared/styles.js.map +0 -1
- package/lib/esm/util/dom.js.map +0 -1
- package/lib/esm/util/environment.js.map +0 -1
- package/lib/esm/util/error-boundary.d.ts +0 -7
- package/lib/esm/util/error-boundary.js.map +0 -1
- package/lib/esm/util/functional.js.map +0 -1
- package/lib/esm/util/i18n.js.map +0 -1
- package/lib/esm/util/index.js.map +0 -1
- package/lib/esm/util/logs.js.map +0 -1
- package/lib/esm/util/objects.js.map +0 -1
- package/lib/esm/util/react.js.map +0 -1
- package/lib/esm/util/regexs.js.map +0 -1
- package/lib/esm/util/strings.js.map +0 -1
- package/lib/esm/util/webchat.js.map +0 -1
- package/lib/esm/util/webviews.js.map +0 -1
- package/lib/esm/webchat/chat-area/index.d.ts +0 -1
- package/lib/esm/webchat/chat-area/index.js.map +0 -1
- package/lib/esm/webchat/chat-area/styles.js.map +0 -1
- package/lib/esm/webchat/components/common.d.ts +0 -1
- package/lib/esm/webchat/components/common.js.map +0 -1
- package/lib/esm/webchat/components/conditional-animation.d.ts +0 -1
- package/lib/esm/webchat/components/conditional-animation.js.map +0 -1
- package/lib/esm/webchat/components/opened-persistent-menu.d.ts +0 -6
- package/lib/esm/webchat/components/opened-persistent-menu.js.map +0 -1
- package/lib/esm/webchat/constants.js.map +0 -1
- package/lib/esm/webchat/context/actions.js.map +0 -1
- package/lib/esm/webchat/context/index.js.map +0 -1
- package/lib/esm/webchat/context/messages-reducer.js.map +0 -1
- package/lib/esm/webchat/context/types.js.map +0 -1
- package/lib/esm/webchat/context/use-webchat.js.map +0 -1
- package/lib/esm/webchat/context/webchat-reducer.js.map +0 -1
- package/lib/esm/webchat/cover-component/index.d.ts +0 -6
- package/lib/esm/webchat/cover-component/index.js.map +0 -1
- package/lib/esm/webchat/custom-messages/index.js.map +0 -1
- package/lib/esm/webchat/custom-messages/rating/icons/face-angry.d.ts +0 -3
- package/lib/esm/webchat/custom-messages/rating/icons/face-angry.js.map +0 -1
- package/lib/esm/webchat/custom-messages/rating/icons/face-frown.d.ts +0 -3
- package/lib/esm/webchat/custom-messages/rating/icons/face-frown.js.map +0 -1
- package/lib/esm/webchat/custom-messages/rating/icons/face-grin-beam.d.ts +0 -3
- package/lib/esm/webchat/custom-messages/rating/icons/face-grin-beam.js.map +0 -1
- package/lib/esm/webchat/custom-messages/rating/icons/face-meh.d.ts +0 -3
- package/lib/esm/webchat/custom-messages/rating/icons/face-meh.js.map +0 -1
- package/lib/esm/webchat/custom-messages/rating/icons/face-smile.d.ts +0 -3
- package/lib/esm/webchat/custom-messages/rating/icons/face-smile.js.map +0 -1
- package/lib/esm/webchat/custom-messages/rating/icons/index.js.map +0 -1
- package/lib/esm/webchat/custom-messages/rating/icons/star.d.ts +0 -3
- package/lib/esm/webchat/custom-messages/rating/icons/star.js.map +0 -1
- package/lib/esm/webchat/custom-messages/rating/index.js.map +0 -1
- package/lib/esm/webchat/custom-messages/rating/rating-selector.d.ts +0 -11
- package/lib/esm/webchat/custom-messages/rating/rating-selector.js.map +0 -1
- package/lib/esm/webchat/custom-messages/rating/smileys.d.ts +0 -2
- package/lib/esm/webchat/custom-messages/rating/smileys.js.map +0 -1
- package/lib/esm/webchat/custom-messages/rating/stars.d.ts +0 -2
- package/lib/esm/webchat/custom-messages/rating/stars.js.map +0 -1
- package/lib/esm/webchat/custom-messages/rating/styles.js.map +0 -1
- package/lib/esm/webchat/custom-messages/rating/types.js.map +0 -1
- package/lib/esm/webchat/devices/index.js.map +0 -1
- package/lib/esm/webchat/header/default-header.d.ts +0 -1
- package/lib/esm/webchat/header/default-header.js.map +0 -1
- package/lib/esm/webchat/header/index.js.map +0 -1
- package/lib/esm/webchat/header/styles.js.map +0 -1
- package/lib/esm/webchat/hooks/index.js.map +0 -1
- package/lib/esm/webchat/hooks/use-component-visible.js.map +0 -1
- package/lib/esm/webchat/hooks/use-component-will-mount.js.map +0 -1
- package/lib/esm/webchat/hooks/use-device-adapter.js.map +0 -1
- package/lib/esm/webchat/hooks/use-previous.js.map +0 -1
- package/lib/esm/webchat/hooks/use-scroll-to-bottom.js.map +0 -1
- package/lib/esm/webchat/hooks/use-scrollbar-controller.js.map +0 -1
- package/lib/esm/webchat/hooks/use-typing.js.map +0 -1
- package/lib/esm/webchat/hooks/use-virtual-keyboard-detection.js.map +0 -1
- package/lib/esm/webchat/hooks/use-webchat-dimensions.js.map +0 -1
- package/lib/esm/webchat/hooks/use-webchat-resizer.js.map +0 -1
- package/lib/esm/webchat/index-types.js.map +0 -1
- package/lib/esm/webchat/index.js.map +0 -1
- package/lib/esm/webchat/input-panel/attachment.d.ts +0 -6
- package/lib/esm/webchat/input-panel/attachment.js.map +0 -1
- package/lib/esm/webchat/input-panel/emoji-picker.d.ts +0 -5
- package/lib/esm/webchat/input-panel/emoji-picker.js.map +0 -1
- package/lib/esm/webchat/input-panel/index.d.ts +0 -9
- package/lib/esm/webchat/input-panel/index.js.map +0 -1
- package/lib/esm/webchat/input-panel/opened-emoji-picker.d.ts +0 -6
- package/lib/esm/webchat/input-panel/opened-emoji-picker.js.map +0 -1
- package/lib/esm/webchat/input-panel/persistent-menu.d.ts +0 -5
- package/lib/esm/webchat/input-panel/persistent-menu.js.map +0 -1
- package/lib/esm/webchat/input-panel/send-button.d.ts +0 -5
- package/lib/esm/webchat/input-panel/send-button.js.map +0 -1
- package/lib/esm/webchat/input-panel/styles.js.map +0 -1
- package/lib/esm/webchat/input-panel/textarea.d.ts +0 -10
- package/lib/esm/webchat/input-panel/textarea.js.map +0 -1
- package/lib/esm/webchat/input-panel/typing-network-sender.js.map +0 -1
- package/lib/esm/webchat/input-panel/use-typing-chat-event-sender.js.map +0 -1
- package/lib/esm/webchat/input-panel/use-typing-session.js.map +0 -1
- package/lib/esm/webchat/message-list/index.d.ts +0 -1
- package/lib/esm/webchat/message-list/index.js.map +0 -1
- package/lib/esm/webchat/message-list/intro-message.d.ts +0 -1
- package/lib/esm/webchat/message-list/intro-message.js.map +0 -1
- package/lib/esm/webchat/message-list/scroll-button.js.map +0 -1
- package/lib/esm/webchat/message-list/styles.js.map +0 -1
- package/lib/esm/webchat/message-list/unread-messages-banner.js.map +0 -1
- package/lib/esm/webchat/message-list/use-debounce.js.map +0 -1
- package/lib/esm/webchat/message-list/use-notifications.js.map +0 -1
- package/lib/esm/webchat/replies/index.d.ts +0 -1
- package/lib/esm/webchat/replies/index.js.map +0 -1
- package/lib/esm/webchat/replies/styles.js.map +0 -1
- package/lib/esm/webchat/session-view.d.ts +0 -1
- package/lib/esm/webchat/session-view.js.map +0 -1
- package/lib/esm/webchat/styles.js.map +0 -1
- package/lib/esm/webchat/theme/default-theme.js.map +0 -1
- package/lib/esm/webchat/theme/types.js.map +0 -1
- package/lib/esm/webchat/tracking.js.map +0 -1
- package/lib/esm/webchat/trigger-button/index.js.map +0 -1
- package/lib/esm/webchat/trigger-button/styles.js.map +0 -1
- package/lib/esm/webchat/typing-indicator/index.js.map +0 -1
- package/lib/esm/webchat/typing-indicator/styles.js.map +0 -1
- package/lib/esm/webchat/use-storage-state-hook.js.map +0 -1
- package/lib/esm/webchat/utils.js.map +0 -1
- package/lib/esm/webchat/webchat-dev.js.map +0 -1
- package/lib/esm/webchat/webchat.js.map +0 -1
- package/lib/esm/webchat/webview/header.d.ts +0 -1
- package/lib/esm/webchat/webview/header.js.map +0 -1
- package/lib/esm/webchat/webview/index.d.ts +0 -6
- package/lib/esm/webchat/webview/index.js.map +0 -1
- package/lib/esm/webchat/webview/styles.js.map +0 -1
- package/lib/esm/webchat-app.d.ts +0 -114
- package/lib/esm/webchat-app.js.map +0 -1
- package/lib/esm/webview-app.js.map +0 -1
- /package/lib/{esm/app.d.ts → app.d.ts} +0 -0
- /package/lib/{esm/app.js → app.js} +0 -0
- /package/lib/{esm/assets → assets}/arrow-down.svg +0 -0
- /package/lib/{esm/assets → assets}/arrow-scroll-down.svg +0 -0
- /package/lib/{esm/assets → assets}/attachment-icon.svg +0 -0
- /package/lib/{esm/assets → assets}/audio.svg +0 -0
- /package/lib/{esm/assets → assets}/botonic_react_logo100x100.png +0 -0
- /package/lib/{esm/assets → assets}/document.svg +0 -0
- /package/lib/{esm/assets → assets}/emojiButton.svg +0 -0
- /package/lib/{esm/assets → assets}/image.svg +0 -0
- /package/lib/{esm/assets → assets}/leftArrow.svg +0 -0
- /package/lib/{esm/assets → assets}/menuButton.svg +0 -0
- /package/lib/{esm/assets → assets}/rightArrow.svg +0 -0
- /package/lib/{esm/assets → assets}/send-button.svg +0 -0
- /package/lib/{esm/assets → assets}/thumbs-down.svg +0 -0
- /package/lib/{esm/assets → assets}/thumbs-up.svg +0 -0
- /package/lib/{esm/assets → assets}/types.d.ts +0 -0
- /package/lib/{esm/assets → assets}/url-icon.png +0 -0
- /package/lib/{esm/assets → assets}/video.svg +0 -0
- /package/lib/{esm/botonic-tester.d.ts → botonic-tester.d.ts} +0 -0
- /package/lib/{esm/botonic-tester.js → botonic-tester.js} +0 -0
- /package/lib/{esm/components → components}/audio.js +0 -0
- /package/lib/{esm/components → components}/button/index.d.ts +0 -0
- /package/lib/{esm/components → components}/button/index.js +0 -0
- /package/lib/{esm/components → components}/button/styles.d.ts +0 -0
- /package/lib/{esm/components → components}/button/styles.js +0 -0
- /package/lib/{esm/components → components}/buttons-disabler.d.ts +0 -0
- /package/lib/{esm/components → components}/buttons-disabler.js +0 -0
- /package/lib/{esm/components → components}/carousel.js +0 -0
- /package/lib/{esm/components → components}/components.d.ts +0 -0
- /package/lib/{esm/components → components}/components.js +0 -0
- /package/lib/{esm/components → components}/constants.d.ts +0 -0
- /package/lib/{esm/components → components}/constants.js +0 -0
- /package/lib/{esm/components → components}/custom-message.d.ts +0 -0
- /package/lib/{esm/components → components}/custom-message.js +0 -0
- /package/lib/{esm/components → components}/document.js +0 -0
- /package/lib/{esm/components → components}/element.d.ts +0 -0
- /package/lib/{esm/components → components}/element.js +0 -0
- /package/lib/{esm/components → components}/handoff.js +0 -0
- /package/lib/{esm/components → components}/image.js +0 -0
- /package/lib/{esm/components → components}/index-types.d.ts +0 -0
- /package/lib/{esm/components → components}/index-types.js +0 -0
- /package/lib/{esm/components → components}/index.d.ts +0 -0
- /package/lib/{esm/components → components}/index.js +0 -0
- /package/lib/{esm/components → components}/location.d.ts +0 -0
- /package/lib/{esm/components → components}/location.js +0 -0
- /package/lib/{esm/components → components}/markdown.d.ts +0 -0
- /package/lib/{esm/components → components}/markdown.js +0 -0
- /package/lib/{esm/components → components}/message/index.d.ts +0 -0
- /package/lib/{esm/components → components}/message/index.js +0 -0
- /package/lib/{esm/components → components}/message/message-footer.js +0 -0
- /package/lib/{esm/components → components}/message/message-image.d.ts +0 -0
- /package/lib/{esm/components → components}/message/message-image.js +0 -0
- /package/lib/{esm/components → components}/message/styles.d.ts +0 -0
- /package/lib/{esm/components → components}/message/styles.js +0 -0
- /package/lib/{esm/components → components}/message/timestamps.js +0 -0
- /package/lib/{esm/components → components}/message-template.d.ts +0 -0
- /package/lib/{esm/components → components}/message-template.js +0 -0
- /package/lib/{esm/components → components}/multichannel/facebook/facebook.d.ts +0 -0
- /package/lib/{esm/components → components}/multichannel/facebook/facebook.js +0 -0
- /package/lib/{esm/components → components}/multichannel/index-types.d.ts +0 -0
- /package/lib/{esm/components → components}/multichannel/index-types.js +0 -0
- /package/lib/{esm/components → components}/multichannel/index.d.ts +0 -0
- /package/lib/{esm/components → components}/multichannel/index.js +0 -0
- /package/lib/{esm/components → components}/multichannel/multichannel-button.js +0 -0
- /package/lib/{esm/components → components}/multichannel/multichannel-carousel.js +0 -0
- /package/lib/{esm/components → components}/multichannel/multichannel-context.d.ts +0 -0
- /package/lib/{esm/components → components}/multichannel/multichannel-context.js +0 -0
- /package/lib/{esm/components → components}/multichannel/multichannel-reply.js +0 -0
- /package/lib/{esm/components → components}/multichannel/multichannel-text.js +0 -0
- /package/lib/{esm/components → components}/multichannel/multichannel-utils.d.ts +0 -0
- /package/lib/{esm/components → components}/multichannel/multichannel-utils.js +0 -0
- /package/lib/{esm/components → components}/multichannel/multichannel.d.ts +0 -0
- /package/lib/{esm/components → components}/multichannel/multichannel.js +0 -0
- /package/lib/{esm/components → components}/multichannel/whatsapp/constants.d.ts +0 -0
- /package/lib/{esm/components → components}/multichannel/whatsapp/constants.js +0 -0
- /package/lib/{esm/components → components}/multichannel/whatsapp/markdown-meta.d.ts +0 -0
- /package/lib/{esm/components → components}/multichannel/whatsapp/markdown-meta.js +0 -0
- /package/lib/{esm/components → components}/pic.d.ts +0 -0
- /package/lib/{esm/components → components}/pic.js +0 -0
- /package/lib/{esm/components → components}/raw.js +0 -0
- /package/lib/{esm/components → components}/reply.d.ts +0 -0
- /package/lib/{esm/components → components}/reply.js +0 -0
- /package/lib/{esm/components → components}/share-button.d.ts +0 -0
- /package/lib/{esm/components → components}/share-button.js +0 -0
- /package/lib/{esm/components → components}/subtitle.d.ts +0 -0
- /package/lib/{esm/components → components}/subtitle.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/debug-message.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/ai-agent/ai-agent.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/ai-agent/executed-tools.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/ai-agent/index.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/ai-agent/index.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/ai-agent/parse-tools.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/ai-agent/parse-tools.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/ai-agent/rehydrate-ai-agent-event.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/ai-agent/rehydrate-ai-agent-event.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/ai-agent/types.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/ai-agent/types.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/ai-agent/use-rehydrated-ai-agent-event.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/ai-agent/use-rehydrated-ai-agent-event.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/ai-agent-router/ai-agent-router.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/ai-agent-router/index.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/ai-agent-router/index.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/ai-agent-router/types.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/ai-agent-router/types.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/bot-action.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/bot-action.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/components/guardrail-item.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/components/guardrail-item.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/components/index.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/components/index.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/components/sources-section.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/conditional-channel.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/conditional-channel.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/conditional-country.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/conditional-country.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/conditional-custom.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/conditional-queue-status.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/constants.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/constants.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/fallback.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/fallback.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/handoff-success.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/index.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/index.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/keyword.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/keyword.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/knowledge-bases-types.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/knowledge-bases-types.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/redirect-flow.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/redirect-flow.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/smart-intent.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/smart-intent.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/events/webview-action-triggered.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/hooks/use-knowledge-base-info.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/hooks/use-last-label-position.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/hooks/use-last-label-position.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/icons/ai-router.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/icons/ai-specialist.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/icons/arrow-progress.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/icons/brain.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/icons/caret-down.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/icons/caret-up.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/icons/circle-check.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/icons/code.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/icons/file-pdf.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/icons/file-word.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/icons/hand.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/icons/head-set.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/icons/index.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/icons/index.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/icons/life-ring.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/icons/link.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/icons/quote-right.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/icons/screwdriver-wrench.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/icons/split.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/icons/wand.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/icons/window-restore.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/index.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/styles.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/styles.js +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/types.d.ts +0 -0
- /package/lib/{esm/components → components}/system-debug-trace/types.js +0 -0
- /package/lib/{esm/components → components}/text.js +0 -0
- /package/lib/{esm/components → components}/title.d.ts +0 -0
- /package/lib/{esm/components → components}/title.js +0 -0
- /package/lib/{esm/components → components}/video.js +0 -0
- /package/lib/{esm/components → components}/webchat-settings.d.ts +0 -0
- /package/lib/{esm/components → components}/webchat-settings.js +0 -0
- /package/lib/{esm/components → components}/whatsapp-button-list.d.ts +0 -0
- /package/lib/{esm/components → components}/whatsapp-button-list.js +0 -0
- /package/lib/{esm/components → components}/whatsapp-catalog.d.ts +0 -0
- /package/lib/{esm/components → components}/whatsapp-catalog.js +0 -0
- /package/lib/{esm/components → components}/whatsapp-cta-url-button.d.ts +0 -0
- /package/lib/{esm/components → components}/whatsapp-cta-url-button.js +0 -0
- /package/lib/{esm/components → components}/whatsapp-interactive-media-carousel.js +0 -0
- /package/lib/{esm/components → components}/whatsapp-media-carousel.d.ts +0 -0
- /package/lib/{esm/components → components}/whatsapp-media-carousel.js +0 -0
- /package/lib/{esm/components → components}/whatsapp-product-carousel.d.ts +0 -0
- /package/lib/{esm/components → components}/whatsapp-product-carousel.js +0 -0
- /package/lib/{esm/components → components}/whatsapp-product-list.d.ts +0 -0
- /package/lib/{esm/components → components}/whatsapp-product-list.js +0 -0
- /package/lib/{esm/components → components}/whatsapp-product.d.ts +0 -0
- /package/lib/{esm/components → components}/whatsapp-product.js +0 -0
- /package/lib/{esm/components → components}/whatsapp-request-contact-info.d.ts +0 -0
- /package/lib/{esm/components → components}/whatsapp-request-contact-info.js +0 -0
- /package/lib/{esm/components → components}/whatsapp-template/index.d.ts +0 -0
- /package/lib/{esm/components → components}/whatsapp-template/index.js +0 -0
- /package/lib/{esm/components → components}/whatsapp-template/types.d.ts +0 -0
- /package/lib/{esm/components → components}/whatsapp-template/types.js +0 -0
- /package/lib/{esm/constants.d.ts → constants.d.ts} +0 -0
- /package/lib/{esm/constants.js → constants.js} +0 -0
- /package/lib/{esm/contexts.d.ts → contexts.d.ts} +0 -0
- /package/lib/{esm/contexts.js → contexts.js} +0 -0
- /package/lib/{esm/debug-system-messages.d.ts → debug-system-messages.d.ts} +0 -0
- /package/lib/{esm/debug-system-messages.js → debug-system-messages.js} +0 -0
- /package/lib/{esm/dev-app.js → dev-app.js} +0 -0
- /package/lib/{esm/index-types.d.ts → index-types.d.ts} +0 -0
- /package/lib/{esm/index-types.js → index-types.js} +0 -0
- /package/lib/{esm/index.d.ts → index.d.ts} +0 -0
- /package/lib/{esm/index.js → index.js} +0 -0
- /package/lib/{esm/message-utils.d.ts → message-utils.d.ts} +0 -0
- /package/lib/{esm/message-utils.js → message-utils.js} +0 -0
- /package/lib/{esm/msg-to-botonic.d.ts → msg-to-botonic.d.ts} +0 -0
- /package/lib/{esm/msg-to-botonic.js → msg-to-botonic.js} +0 -0
- /package/lib/{esm/node-app.d.ts → node-app.d.ts} +0 -0
- /package/lib/{esm/node-app.js → node-app.js} +0 -0
- /package/lib/{esm/react-bot.d.ts → react-bot.d.ts} +0 -0
- /package/lib/{esm/react-bot.js → react-bot.js} +0 -0
- /package/lib/{esm/shared → shared}/styles.d.ts +0 -0
- /package/lib/{esm/shared → shared}/styles.js +0 -0
- /package/lib/{esm/util → util}/dom.d.ts +0 -0
- /package/lib/{esm/util → util}/dom.js +0 -0
- /package/lib/{esm/util → util}/environment.d.ts +0 -0
- /package/lib/{esm/util → util}/environment.js +0 -0
- /package/lib/{esm/util → util}/error-boundary.js +0 -0
- /package/lib/{esm/util → util}/functional.d.ts +0 -0
- /package/lib/{esm/util → util}/functional.js +0 -0
- /package/lib/{esm/util → util}/i18n.d.ts +0 -0
- /package/lib/{esm/util → util}/i18n.js +0 -0
- /package/lib/{esm/util → util}/index.d.ts +0 -0
- /package/lib/{esm/util → util}/index.js +0 -0
- /package/lib/{esm/util → util}/logs.d.ts +0 -0
- /package/lib/{esm/util → util}/logs.js +0 -0
- /package/lib/{esm/util → util}/objects.d.ts +0 -0
- /package/lib/{esm/util → util}/objects.js +0 -0
- /package/lib/{esm/util → util}/react.d.ts +0 -0
- /package/lib/{esm/util → util}/react.js +0 -0
- /package/lib/{esm/util → util}/regexs.d.ts +0 -0
- /package/lib/{esm/util → util}/regexs.js +0 -0
- /package/lib/{esm/util → util}/strings.d.ts +0 -0
- /package/lib/{esm/util → util}/strings.js +0 -0
- /package/lib/{esm/util → util}/webchat.d.ts +0 -0
- /package/lib/{esm/util → util}/webchat.js +0 -0
- /package/lib/{esm/util → util}/webviews.d.ts +0 -0
- /package/lib/{esm/util → util}/webviews.js +0 -0
- /package/lib/{esm/webchat → webchat}/chat-area/index.js +0 -0
- /package/lib/{esm/webchat → webchat}/chat-area/styles.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/chat-area/styles.js +0 -0
- /package/lib/{esm/webchat → webchat}/components/common.js +0 -0
- /package/lib/{esm/webchat → webchat}/components/conditional-animation.js +0 -0
- /package/lib/{esm/webchat → webchat}/components/opened-persistent-menu.js +0 -0
- /package/lib/{esm/webchat → webchat}/constants.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/constants.js +0 -0
- /package/lib/{esm/webchat → webchat}/context/actions.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/context/actions.js +0 -0
- /package/lib/{esm/webchat → webchat}/context/index.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/context/index.js +0 -0
- /package/lib/{esm/webchat → webchat}/context/messages-reducer.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/context/messages-reducer.js +0 -0
- /package/lib/{esm/webchat → webchat}/context/types.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/context/types.js +0 -0
- /package/lib/{esm/webchat → webchat}/context/use-webchat.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/context/use-webchat.js +0 -0
- /package/lib/{esm/webchat → webchat}/context/webchat-reducer.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/context/webchat-reducer.js +0 -0
- /package/lib/{esm/webchat → webchat}/cover-component/index.js +0 -0
- /package/lib/{esm/webchat → webchat}/custom-messages/index.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/custom-messages/index.js +0 -0
- /package/lib/{esm/webchat → webchat}/custom-messages/rating/icons/face-angry.js +0 -0
- /package/lib/{esm/webchat → webchat}/custom-messages/rating/icons/face-frown.js +0 -0
- /package/lib/{esm/webchat → webchat}/custom-messages/rating/icons/face-grin-beam.js +0 -0
- /package/lib/{esm/webchat → webchat}/custom-messages/rating/icons/face-meh.js +0 -0
- /package/lib/{esm/webchat → webchat}/custom-messages/rating/icons/face-smile.js +0 -0
- /package/lib/{esm/webchat → webchat}/custom-messages/rating/icons/index.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/custom-messages/rating/icons/index.js +0 -0
- /package/lib/{esm/webchat → webchat}/custom-messages/rating/icons/star.js +0 -0
- /package/lib/{esm/webchat → webchat}/custom-messages/rating/index.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/custom-messages/rating/index.js +0 -0
- /package/lib/{esm/webchat → webchat}/custom-messages/rating/rating-selector.js +0 -0
- /package/lib/{esm/webchat → webchat}/custom-messages/rating/smileys.js +0 -0
- /package/lib/{esm/webchat → webchat}/custom-messages/rating/stars.js +0 -0
- /package/lib/{esm/webchat → webchat}/custom-messages/rating/styles.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/custom-messages/rating/styles.js +0 -0
- /package/lib/{esm/webchat → webchat}/custom-messages/rating/types.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/custom-messages/rating/types.js +0 -0
- /package/lib/{esm/webchat → webchat}/devices/index.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/devices/index.js +0 -0
- /package/lib/{esm/webchat → webchat}/global.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/header/default-header.js +0 -0
- /package/lib/{esm/webchat → webchat}/header/index.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/header/index.js +0 -0
- /package/lib/{esm/webchat → webchat}/header/styles.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/header/styles.js +0 -0
- /package/lib/{esm/webchat → webchat}/hooks/index.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/hooks/index.js +0 -0
- /package/lib/{esm/webchat → webchat}/hooks/use-component-visible.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/hooks/use-component-visible.js +0 -0
- /package/lib/{esm/webchat → webchat}/hooks/use-component-will-mount.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/hooks/use-component-will-mount.js +0 -0
- /package/lib/{esm/webchat → webchat}/hooks/use-device-adapter.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/hooks/use-device-adapter.js +0 -0
- /package/lib/{esm/webchat → webchat}/hooks/use-previous.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/hooks/use-previous.js +0 -0
- /package/lib/{esm/webchat → webchat}/hooks/use-scroll-to-bottom.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/hooks/use-scroll-to-bottom.js +0 -0
- /package/lib/{esm/webchat → webchat}/hooks/use-scrollbar-controller.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/hooks/use-scrollbar-controller.js +0 -0
- /package/lib/{esm/webchat → webchat}/hooks/use-typing.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/hooks/use-typing.js +0 -0
- /package/lib/{esm/webchat → webchat}/hooks/use-virtual-keyboard-detection.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/hooks/use-virtual-keyboard-detection.js +0 -0
- /package/lib/{esm/webchat → webchat}/hooks/use-webchat-dimensions.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/hooks/use-webchat-dimensions.js +0 -0
- /package/lib/{esm/webchat → webchat}/hooks/use-webchat-resizer.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/hooks/use-webchat-resizer.js +0 -0
- /package/lib/{esm/webchat → webchat}/index-types.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/index-types.js +0 -0
- /package/lib/{esm/webchat → webchat}/index.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/index.js +0 -0
- /package/lib/{esm/webchat → webchat}/input-panel/attachment.js +0 -0
- /package/lib/{esm/webchat → webchat}/input-panel/emoji-picker.js +0 -0
- /package/lib/{esm/webchat → webchat}/input-panel/index.js +0 -0
- /package/lib/{esm/webchat → webchat}/input-panel/opened-emoji-picker.js +0 -0
- /package/lib/{esm/webchat → webchat}/input-panel/persistent-menu.js +0 -0
- /package/lib/{esm/webchat → webchat}/input-panel/send-button.js +0 -0
- /package/lib/{esm/webchat → webchat}/input-panel/styles.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/input-panel/styles.js +0 -0
- /package/lib/{esm/webchat → webchat}/input-panel/textarea.js +0 -0
- /package/lib/{esm/webchat → webchat}/input-panel/typing-network-sender.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/input-panel/typing-network-sender.js +0 -0
- /package/lib/{esm/webchat → webchat}/input-panel/use-typing-chat-event-sender.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/input-panel/use-typing-chat-event-sender.js +0 -0
- /package/lib/{esm/webchat → webchat}/input-panel/use-typing-session.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/input-panel/use-typing-session.js +0 -0
- /package/lib/{esm/webchat → webchat}/message-list/index.js +0 -0
- /package/lib/{esm/webchat → webchat}/message-list/intro-message.js +0 -0
- /package/lib/{esm/webchat → webchat}/message-list/scroll-button.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/message-list/scroll-button.js +0 -0
- /package/lib/{esm/webchat → webchat}/message-list/styles.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/message-list/styles.js +0 -0
- /package/lib/{esm/webchat → webchat}/message-list/unread-messages-banner.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/message-list/unread-messages-banner.js +0 -0
- /package/lib/{esm/webchat → webchat}/message-list/use-debounce.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/message-list/use-debounce.js +0 -0
- /package/lib/{esm/webchat → webchat}/message-list/use-notifications.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/message-list/use-notifications.js +0 -0
- /package/lib/{esm/webchat → webchat}/replies/index.js +0 -0
- /package/lib/{esm/webchat → webchat}/replies/styles.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/replies/styles.js +0 -0
- /package/lib/{esm/webchat → webchat}/session-view.js +0 -0
- /package/lib/{esm/webchat → webchat}/styles.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/styles.js +0 -0
- /package/lib/{esm/webchat → webchat}/theme/default-theme.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/theme/default-theme.js +0 -0
- /package/lib/{esm/webchat → webchat}/theme/theme.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/theme/types.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/theme/types.js +0 -0
- /package/lib/{esm/webchat → webchat}/tracking.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/tracking.js +0 -0
- /package/lib/{esm/webchat → webchat}/trigger-button/index.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/trigger-button/index.js +0 -0
- /package/lib/{esm/webchat → webchat}/trigger-button/styles.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/trigger-button/styles.js +0 -0
- /package/lib/{esm/webchat → webchat}/typing-indicator/index.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/typing-indicator/index.js +0 -0
- /package/lib/{esm/webchat → webchat}/typing-indicator/styles.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/typing-indicator/styles.js +0 -0
- /package/lib/{esm/webchat → webchat}/use-storage-state-hook.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/use-storage-state-hook.js +0 -0
- /package/lib/{esm/webchat → webchat}/utils.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/utils.js +0 -0
- /package/lib/{esm/webchat → webchat}/webchat-dev.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/webchat-dev.js +0 -0
- /package/lib/{esm/webchat → webchat}/webchat.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/webchat.js +0 -0
- /package/lib/{esm/webchat → webchat}/webview/header.js +0 -0
- /package/lib/{esm/webchat → webchat}/webview/index.js +0 -0
- /package/lib/{esm/webchat → webchat}/webview/styles.d.ts +0 -0
- /package/lib/{esm/webchat → webchat}/webview/styles.js +0 -0
- /package/lib/{esm/webchat-app.js → webchat-app.js} +0 -0
- /package/lib/{esm/webchat.template.html → webchat.template.html} +0 -0
- /package/lib/{esm/webview-app.d.ts → webview-app.d.ts} +0 -0
- /package/lib/{esm/webview-app.js → webview-app.js} +0 -0
- /package/lib/{esm/webview.template.html → webview.template.html} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/message-list/index.js","sources":["../../../src/webchat/message-list/index.tsx"],"sourcesContent":["import React, { useContext, useEffect, useRef, useState } from 'react'\n\nimport { ROLES } from '../../constants'\nimport { SENDERS } from '../../index-types'\nimport { WebchatContext } from '../../webchat/context'\nimport { BotonicContainerId } from '../constants'\nimport TypingIndicator from '../typing-indicator'\nimport { IntroMessage } from './intro-message'\nimport { ScrollButton } from './scroll-button'\nimport { MessageContainer, ScrollableMessageList } from './styles'\nimport { UnreadMessagesBanner } from './unread-messages-banner'\nimport { useNotifications } from './use-notifications'\n\nconst SCROLL_TIMEOUT = 200\nconst scrollOptionsEnd: ScrollIntoViewOptions = {\n block: 'end',\n}\nconst scrollOptionsCenter: ScrollIntoViewOptions = {\n block: 'center',\n}\n\nexport const WebchatMessageList = () => {\n const {\n webchatState,\n resetUnreadMessages,\n setLastMessageVisible,\n scrollableMessagesListRef,\n } = useContext(WebchatContext)\n\n const { notificationsEnabled } = useNotifications()\n\n const [firstUnreadMessageId, setFirstUnreadMessageId] = useState<string>()\n\n const lastMessageRef = useRef<HTMLDivElement>(null)\n const typingRef = useRef<HTMLDivElement>(null)\n const unreadMessagesBannerRef = useRef<HTMLDivElement>(null)\n\n const scrollToTyping = () => {\n setTimeout(() => {\n typingRef.current?.scrollIntoView(scrollOptionsEnd)\n }, SCROLL_TIMEOUT)\n }\n\n const scrollToLastMessage = () => {\n setTimeout(() => {\n lastMessageRef.current?.scrollIntoView(scrollOptionsEnd)\n }, SCROLL_TIMEOUT)\n }\n\n const scrollToBanner = () => {\n setTimeout(() => {\n unreadMessagesBannerRef.current?.scrollIntoView(scrollOptionsCenter)\n }, SCROLL_TIMEOUT)\n }\n\n const handleScrollToBottom = () => {\n resetUnreadMessages()\n if (webchatState.typing) {\n scrollToTyping()\n return\n }\n\n scrollToLastMessage()\n }\n\n const showUnreadMessagesBanner = (messageComponentId: string) => {\n return (\n !webchatState.isInputFocused &&\n firstUnreadMessageId &&\n messageComponentId === firstUnreadMessageId &&\n webchatState.numUnreadMessages > 0\n )\n }\n\n useEffect(() => {\n const firstUnreadMessage = webchatState.messagesComponents.find(\n message => message.props.isUnread\n )\n setFirstUnreadMessageId(firstUnreadMessage?.props?.id)\n }, [webchatState.messagesComponents])\n\n useEffect(() => {\n if (webchatState.messagesComponents.length > 0 && lastMessageRef.current) {\n const observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n setLastMessageVisible(entry.isIntersecting)\n })\n })\n observer.observe(lastMessageRef.current)\n }\n }, [webchatState.messagesComponents])\n\n useEffect(() => {\n if (!notificationsEnabled) {\n if (webchatState.typing) {\n scrollToTyping()\n return\n }\n\n scrollToLastMessage()\n }\n }, [webchatState.typing, webchatState.messagesComponents])\n\n useEffect(() => {\n if (webchatState.isWebchatOpen && notificationsEnabled) {\n if (unreadMessagesBannerRef.current) {\n scrollToBanner()\n return\n }\n\n if (webchatState.typing) {\n scrollToTyping()\n return\n }\n\n scrollToLastMessage()\n }\n }, [\n firstUnreadMessageId,\n webchatState.isWebchatOpen,\n webchatState.typing,\n webchatState.messagesComponents,\n ])\n\n const showScrollButton =\n webchatState.numUnreadMessages > 0 && !webchatState.isLastMessageVisible\n\n return (\n <>\n <ScrollableMessageList\n id={BotonicContainerId.ScrollableMessagesList}\n ref={scrollableMessagesListRef}\n role={ROLES.MESSAGE_LIST}\n >\n <IntroMessage />\n {webchatState.messagesComponents.map((messageComponent, index) => {\n const messageId = messageComponent.props.id\n const sentBySystem = messageComponent.props?.sentBy === SENDERS.system\n\n // Check if system message is followed by a regular message (user/bot)\n const nextMessage = webchatState.messagesComponents[index + 1]\n const isSystemMessageFollowedByMessage =\n sentBySystem &&\n nextMessage &&\n nextMessage.props?.sentBy !== SENDERS.system\n\n return (\n <React.Fragment key={messageId}>\n <MessageContainer\n role={sentBySystem ? ROLES.SYSTEM_MESSAGE : ROLES.MESSAGE}\n $isLastSystemMessage={isSystemMessageFollowedByMessage}\n >\n {showUnreadMessagesBanner(messageId) && (\n <UnreadMessagesBanner\n unreadMessagesBannerRef={unreadMessagesBannerRef}\n />\n )}\n {messageComponent}\n </MessageContainer>\n {index === webchatState.messagesComponents.length - 1 && (\n <div\n ref={lastMessageRef}\n style={{\n content: '',\n }}\n ></div>\n )}\n </React.Fragment>\n )\n })}\n {webchatState.typing && <TypingIndicator ref={typingRef} />}\n </ScrollableMessageList>\n {showScrollButton && <ScrollButton handleClick={handleScrollToBottom} />}\n </>\n )\n}\n"],"names":["React","useContext","useEffect","useRef","useState","ROLES","SENDERS","WebchatContext","BotonicContainerId","TypingIndicator","IntroMessage","ScrollButton","MessageContainer","ScrollableMessageList","UnreadMessagesBanner","useNotifications","SCROLL_TIMEOUT","scrollOptionsEnd","scrollOptionsCenter","WebchatMessageList","webchatState","resetUnreadMessages","setLastMessageVisible","scrollableMessagesListRef","notificationsEnabled","firstUnreadMessageId","setFirstUnreadMessageId","lastMessageRef","typingRef","unreadMessagesBannerRef","scrollToTyping","setTimeout","scrollToLastMessage","scrollToBanner","handleScrollToBottom","showUnreadMessagesBanner","messageComponentId","firstUnreadMessage","message","observer","IntersectionObserver","entries","entry","showScrollButton","messageComponent","index","messageId","sentBySystem","nextMessage","isSystemMessageFollowedByMessage"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const IntroMessage: () => import("react").JSX.Element | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/message-list/intro-message.js","sources":["../../../src/webchat/message-list/intro-message.tsx"],"sourcesContent":["import { useContext } from 'react'\n\nimport { WEBCHAT } from '../../constants'\nimport { Fade } from '../../shared/styles'\nimport { resolveImage } from '../../util/environment'\nimport { ConditionalWrapper } from '../../util/react'\nimport { WebchatContext } from '../../webchat/context'\nimport { DefaultIntroImage } from './styles'\n\nexport const IntroMessage = () => {\n const { getThemeProperty } = useContext(WebchatContext)\n\n const animationsEnabled = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.enableAnimations\n )\n const CustomIntro = getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.customIntro)\n const introImage = getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.introImage)\n const introStyle = getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.introStyle)\n\n const DefaultIntro = introImage && (\n <DefaultIntroImage\n style={{\n ...introStyle,\n }}\n src={resolveImage(introImage)}\n />\n )\n\n return CustomIntro || DefaultIntro ? (\n <ConditionalWrapper\n condition={animationsEnabled}\n wrapper={children => <Fade>{children}</Fade>}\n >\n {CustomIntro ? <CustomIntro /> : DefaultIntro}\n </ConditionalWrapper>\n ) : null\n}\n"],"names":["useContext","WEBCHAT","Fade","resolveImage","ConditionalWrapper","WebchatContext","DefaultIntroImage","IntroMessage","getThemeProperty","animationsEnabled","CustomIntro","introImage","introStyle","DefaultIntro","children"],"mappings":";;;;;;;;;;;;;;;;;;AAAkC;AAEO;AACC;AACW;AACA;AACC;AACV;AAErC,MAAMO,YAAYA,GAAG;IAC1B,MAAM,EAAEC,gBAAgB,EAAE,GAAGR,UAAUA,CAACK,cAAcA;IAEtD,MAAMI,oBAAoBD,iBACxBP,0CAA0C;IAE5C,MAAMS,cAAcF,iBAAiBP,qCAAqC;IAC1E,MAAMU,aAAaH,iBAAiBP,oCAAoC;IACxE,MAAMW,aAAaJ,iBAAiBP,oCAAoC;IAExE,MAAMY,eAAeF,4BACnB,IAACL,iBAAiBA;QAChB,OAAO;YACL,GAAGM,UAAU;QACf;QACA,KAAKT,YAAYA,CAACQ;;IAItB,OAAOD,eAAeG,6BACpB,IAACT,kBAAkBA;QACjB,WAAWK;QACX,SAASK,CAAAA,yBAAY,IAACZ,IAAIA;0BAAEY;;kBAE3BJ,4BAAc,IAACA,mBAAiBG;SAEjC;AACN,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/message-list/scroll-button.js","sources":["../../../src/webchat/message-list/scroll-button.tsx"],"sourcesContent":["/** biome-ignore-all lint/a11y/useAltText: This is a SVG icon */\nimport ArrowScrollDown from '../../assets/arrow-scroll-down.svg'\nimport { resolveImage } from '../../util/environment'\nimport { ContainerScrollButton } from './styles'\nimport { useDebounce } from './use-debounce'\nimport { useNotifications } from './use-notifications'\n\ninterface ScrollButtonProps {\n handleClick: () => void\n}\n\nexport const ScrollButton = ({\n handleClick,\n}: ScrollButtonProps): JSX.Element => {\n const { CustomScrollButton, scrollButtonEnabled } = useNotifications()\n\n const show = useDebounce()\n\n return (\n <>\n {scrollButtonEnabled && show ? (\n CustomScrollButton ? (\n <CustomScrollButton handleScrollToBottom={handleClick} />\n ) : (\n <ContainerScrollButton onClick={handleClick}>\n <img src={resolveImage(ArrowScrollDown)} />\n </ContainerScrollButton>\n )\n ) : null}\n </>\n )\n}\n"],"names":["ArrowScrollDown","resolveImage","ContainerScrollButton","useDebounce","useNotifications","ScrollButton","handleClick","CustomScrollButton","scrollButtonEnabled","show"],"mappings":";;;;;;;;;;;;;;AAAA,8DAA8D,GACE;AACX;AACL;AACJ;AACU;AAM/C,MAAMK,YAAYA,GAAG,CAAC,EAC3BC,WAAW,EACO;IAClB,MAAM,EAAEC,kBAAkB,EAAEC,mBAAmB,EAAE,GAAGJ,gBAAgBA;IAEpE,MAAMK,OAAON,WAAWA;IAExB,qBACE;kBACGK,uBAAuBC,OACtBF,mCACE,IAACA;YAAmB,sBAAsBD;2BAE1C,IAACJ,qBAAqBA;YAAC,SAASI;sBAC9B,kBAAC;gBAAI,KAAKL,YAAYA,CAACD,iBAAeA;;aAGxC;;AAGV,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/message-list/styles.js","sources":["../../../src/webchat/message-list/styles.ts"],"sourcesContent":["import styled from 'styled-components'\n\ninterface MessageContainerProps {\n $isLastSystemMessage?: boolean\n}\n\nexport const MessageContainer = styled.div<MessageContainerProps>`\n display: flex;\n overflow-x: hidden;\n flex-direction: column;\n flex: none;\n white-space: pre;\n word-wrap: break-word;\n margin-bottom: ${({ $isLastSystemMessage }) =>\n $isLastSystemMessage ? '8px' : '0'};\n`\n\nexport const DefaultIntroImage = styled.img`\n max-height: 50%;\n width: 100%;\n`\n\nexport const ContainerScrollButton = styled.div`\n position: sticky;\n left: 85%;\n bottom: 15px;\n\n background-color: #6d6a78;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 37px;\n height: 37px;\n border-radius: 50%;\n`\n\nexport const ContainerUnreadMessagesBanner = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 5px;\n\n border-top: 1px solid #e8e8ea;\n padding: 8px;\n color: #6d6a78;\n font-size: 14px;\n font-weight: 400;\n width: 100%;\n\n img {\n width: 10px;\n }\n`\n\nexport const ScrollableMessageList = styled.div`\n display: flex;\n flex: 1;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n overscroll-behavior: contain; // https://css-tricks.com/almanac/properties/o/overscroll-behavior/\n scroll-behavior: smooth;\n -webkit-overflow-scrolling: touch;\n`\n"],"names":["styled","MessageContainer","$isLastSystemMessage","DefaultIntroImage","ContainerScrollButton","ContainerUnreadMessagesBanner","ScrollableMessageList"],"mappings":";;;AAAsC;AAM/B,MAAMC,gBAAgBA,GAAGD,qBAAiC,CAAC;;;;;;;iBAOjD,EAAE,CAAC,EAAEE,oBAAoB,EAAE,GACxCA,uBAAuB,QAAQ,IAAI;AACvC,CAAC;AAEM,MAAMC,iBAAiBA,GAAGH,qBAAU,CAAC;;;AAG5C,CAAC;AAEM,MAAMI,qBAAqBA,GAAGJ,qBAAU,CAAC;;;;;;;;;;;;;;AAchD,CAAC;AAEM,MAAMK,6BAA6BA,GAAGL,qBAAU,CAAC;;;;;;;;;;;;;;;;AAgBxD,CAAC;AAEM,MAAMM,qBAAqBA,GAAGN,qBAAU,CAAC;;;;;;;;;AAShD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/message-list/unread-messages-banner.js","sources":["../../../src/webchat/message-list/unread-messages-banner.tsx"],"sourcesContent":["/** biome-ignore-all lint/a11y/useAltText: we need to use alt text for the unread messages banner */\nimport type React from 'react'\nimport { useContext } from 'react'\n\nimport ArrowDown from '../../assets/arrow-down.svg'\nimport { resolveImage } from '../../util/environment'\nimport { WebchatContext } from '../../webchat/context'\nimport { ContainerUnreadMessagesBanner } from './styles'\nimport { useNotifications } from './use-notifications'\n\ninterface UnreadMessagesBannerProps {\n unreadMessagesBannerRef: React.RefObject<HTMLDivElement>\n}\n\nexport const UnreadMessagesBanner = ({\n unreadMessagesBannerRef,\n}: UnreadMessagesBannerProps): JSX.Element => {\n const { webchatState } = useContext(WebchatContext)\n\n const { notificationsEnabled, CustomUnreadMessagesBanner, bannerText } =\n useNotifications()\n\n return (\n <>\n {notificationsEnabled ? (\n <div ref={unreadMessagesBannerRef}>\n {CustomUnreadMessagesBanner ? (\n <CustomUnreadMessagesBanner />\n ) : (\n <ContainerUnreadMessagesBanner>\n <img src={resolveImage(ArrowDown)} />\n {webchatState.numUnreadMessages} {bannerText}\n </ContainerUnreadMessagesBanner>\n )}\n </div>\n ) : null}\n </>\n )\n}\n"],"names":["useContext","ArrowDown","resolveImage","WebchatContext","ContainerUnreadMessagesBanner","useNotifications","UnreadMessagesBanner","unreadMessagesBannerRef","webchatState","notificationsEnabled","CustomUnreadMessagesBanner","bannerText"],"mappings":";;;;;;;;;;;;;;;AAAA,kGAAkG;AAEhE;AAEiB;AACE;AACC;AACE;AACF;AAM/C,MAAMM,oBAAoBA,GAAG,CAAC,EACnCC,uBAAuB,EACG;IAC1B,MAAM,EAAEC,YAAY,EAAE,GAAGR,UAAUA,CAACG,cAAcA;IAElD,MAAM,EAAEM,oBAAoB,EAAEC,0BAA0B,EAAEC,UAAU,EAAE,GACpEN,gBAAgBA;IAElB,qBACE;kBACGI,qCACC,IAAC;YAAI,KAAKF;sBACPG,2CACC,IAACA,gDAED,KAACN,6BAA6BA;;kCAC5B,IAAC;wBAAI,KAAKF,YAAYA,CAACD,UAASA;;oBAC/BO,aAAa,iBAAiB;oBAAC;oBAAEG;;;aAItC;;AAGV,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/message-list/use-debounce.js","sources":["../../../src/webchat/message-list/use-debounce.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\n\nexport function useDebounce(delay?: number) {\n const [show, setShow] = useState(false)\n useEffect(() => {\n const timeoutId = setTimeout(() => {\n setShow(true)\n }, delay || 500)\n\n return () => {\n clearTimeout(timeoutId)\n }\n }, [])\n\n return show\n}\n"],"names":["useEffect","useState","useDebounce","delay","show","setShow","timeoutId","setTimeout","clearTimeout"],"mappings":";;;AAA2C;AAEpC,SAASE,WAAWA,CAACC,KAAc;IACxC,MAAM,CAACC,MAAMC,QAAQ,GAAGJ,QAAQA,CAAC;IACjCD,SAASA,CAAC;QACR,MAAMM,YAAYC,WAAW;YAC3BF,QAAQ;QACV,GAAGF,SAAS;QAEZ,OAAO;YACLK,aAAaF;QACf;IACF,GAAG,EAAE;IAEL,OAAOF;AACT"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/message-list/use-notifications.js","sources":["../../../src/webchat/message-list/use-notifications.ts"],"sourcesContent":["import { useContext } from 'react'\n\nimport { WEBCHAT } from '../../constants'\nimport { WebchatContext } from '../../webchat/context'\n\nexport function useNotifications() {\n const { getThemeProperty } = useContext(WebchatContext)\n\n const CustomUnreadMessagesBanner = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.notificationsBannerCustom\n )\n\n const notificationsBannerEnabled = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.notificationsBannerEnabled\n )\n\n const notificationsEnabled = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.notificationsEnabled,\n CustomUnreadMessagesBanner || notificationsBannerEnabled\n )\n\n const bannerText = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.notificationsBannerText\n )\n\n const CustomScrollButton = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.scrollButtonCustom\n )\n\n const scrollButtonEnabled = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.scrollButtonEnabled,\n CustomScrollButton\n )\n\n return {\n notificationsEnabled,\n bannerText,\n CustomUnreadMessagesBanner,\n CustomScrollButton,\n scrollButtonEnabled,\n }\n}\n"],"names":["useContext","WEBCHAT","WebchatContext","useNotifications","getThemeProperty","CustomUnreadMessagesBanner","notificationsBannerEnabled","notificationsEnabled","bannerText","CustomScrollButton","scrollButtonEnabled"],"mappings":";;;;;;;AAAkC;AAEO;AACa;AAE/C,SAASG,gBAAgBA;IAC9B,MAAM,EAAEC,gBAAgB,EAAE,GAAGJ,UAAUA,CAACE,cAAcA;IAEtD,MAAMG,6BAA6BD,iBACjCH,mDAAmD;IAGrD,MAAMK,6BAA6BF,iBACjCH,oDAAoD;IAGtD,MAAMM,uBAAuBH,iBAC3BH,8CAA8C,EAC9CI,8BAA8BC;IAGhC,MAAME,aAAaJ,iBACjBH,iDAAiD;IAGnD,MAAMQ,qBAAqBL,iBACzBH,4CAA4C;IAG9C,MAAMS,sBAAsBN,iBAC1BH,6CAA6C,EAC7CQ;IAGF,OAAO;QACLF;QACAC;QACAH;QACAI;QACAC;IACF;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const WebchatReplies: () => import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/replies/index.js","sources":["../../../src/webchat/replies/index.tsx"],"sourcesContent":["import { useContext } from 'react'\n\nimport { WEBCHAT } from '../../constants'\nimport { WebchatContext } from '../../webchat/context'\nimport { BotonicContainerId } from '../constants'\nimport { RepliesContainer, ReplyContainer, ScrollableReplies } from './styles'\n\nconst options = {\n left: 'flex-start',\n center: 'center',\n right: 'flex-end',\n}\n\nexport const WebchatReplies = () => {\n const { webchatState, getThemeProperty, repliesRef } =\n useContext(WebchatContext)\n\n let justifyContent = 'center'\n const flexWrap = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.wrapReplies,\n 'wrap'\n )\n\n if (flexWrap === 'nowrap') {\n justifyContent = 'flex-start'\n } else if (getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.alignReplies)) {\n justifyContent =\n options[getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.alignReplies)]\n }\n\n return (\n <ScrollableReplies>\n <RepliesContainer\n id={BotonicContainerId.RepliesContainer}\n ref={repliesRef}\n className='replies-container'\n justify={justifyContent}\n wrap={flexWrap}\n >\n {webchatState.replies?.map((reply, i) => (\n // @ts-expect-error TODO: In this point reply is the the component to render\n <ReplyContainer key={`reply-${i}`}>{reply}</ReplyContainer>\n ))}\n </RepliesContainer>\n </ScrollableReplies>\n )\n}\n"],"names":["useContext","WEBCHAT","WebchatContext","BotonicContainerId","RepliesContainer","ReplyContainer","ScrollableReplies","options","WebchatReplies","webchatState","getThemeProperty","repliesRef","justifyContent","flexWrap","reply","i"],"mappings":";;;;;;;;;;;;;;AAAkC;AAEO;AACa;AACL;AAC6B;AAE9E,MAAMO,OAAOA,GAAG;IACd,MAAM;IACN,QAAQ;IACR,OAAO;AACT;AAEO,MAAMC,cAAcA,GAAG;IAC5B,MAAM,EAAEC,YAAY,EAAEC,gBAAgB,EAAEC,UAAU,EAAE,GAClDX,UAAUA,CAACE,cAAcA;IAE3B,IAAIU,iBAAiB;IACrB,MAAMC,WAAWH,iBACfT,qCAAqC,EACrC;IAGF,IAAIY,aAAa,UAAU;QACzBD,iBAAiB;IACnB,OAAO,IAAIF,iBAAiBT,sCAAsC,GAAG;QACnEW,iBACEL,OAAO,CAACG,iBAAiBT,sCAAsC,EAAE;IACrE;IAEA,qBACE,IAACK,iBAAiBA;kBAChB,kBAACF,gBAAgBA;YACf,IAAID,mCAAmC;YACvC,KAAKQ;YACL,WAAU;YACV,SAASC;YACT,MAAMC;sBAELJ,aAAa,OAAO,EAAE,IAAI,CAACK,OAAOC,IACjC,4EAA4E;8BAC5E,IAACV,cAAcA;8BAAqBS;mBAAf,CAAC,MAAM,EAAEC,GAAG;;;AAK3C,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/replies/styles.js","sources":["../../../src/webchat/replies/styles.ts"],"sourcesContent":["import styled from 'styled-components'\n\nexport const ScrollableReplies = styled.div`\n overscroll-behavior: contain;\n -webkit-overflow-scrolling: touch;\n`\n\ninterface RepliesContainerProps {\n justify: string\n wrap: string\n}\n\nexport const RepliesContainer = styled.div<RepliesContainerProps>`\n display: flex;\n text-align: center;\n justify-content: ${props => props.justify};\n flex-wrap: ${props => props.wrap};\n padding-bottom: 10px;\n margin-left: 5px;\n margin-right: 5px;\n overflow-x: auto;\n`\n\nexport const ReplyContainer = styled.div`\n flex: none;\n display: inline-block;\n margin: 3px;\n`\n"],"names":["styled","ScrollableReplies","RepliesContainer","props","ReplyContainer"],"mappings":";;;AAAsC;AAE/B,MAAMC,iBAAiBA,GAAGD,qBAAU,CAAC;;;AAG5C,CAAC;AAOM,MAAME,gBAAgBA,GAAGF,qBAAiC,CAAC;;;mBAG/C,EAAEG,CAAAA,QAASA,MAAM,OAAO,CAAC;aAC/B,EAAEA,CAAAA,QAASA,MAAM,IAAI,CAAC;;;;;AAKnC,CAAC;AAEM,MAAMC,cAAcA,GAAGJ,qBAAU,CAAC;;;;AAIzC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function SessionView(props: any): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/session-view.js","sources":["../../src/webchat/session-view.jsx"],"sourcesContent":["import { JSONTree } from 'react-json-tree'\nimport styled from 'styled-components'\n\nimport { COLORS } from '../constants'\nimport { useWebchat } from './context/use-webchat'\n\nconst AttributeContainer = styled.div`\n display: flex;\n flex: none;\n padding: 12px;\n padding-bottom: 0px;\n font-size: 12px;\n font-weight: 600;\n color: ${COLORS.SOLID_WHITE};\n align-items: center;\n`\n\nconst Label = styled.div`\n flex: none;\n`\n\nconst Value = styled.div`\n flex: 1 1 auto;\n max-height: 20px;\n font-size: 16px;\n font-weight: 400;\n margin-left: 6px;\n color: ${COLORS.CURIOUS_BLUE};\n overflow-x: hidden;\n`\n\nconst SessionViewAttribute = props => (\n <AttributeContainer>\n <Label>{props.label}</Label>\n <Value>{props.value}</Value>\n </AttributeContainer>\n)\n\nconst SessionViewContent = styled.div`\n position: relative;\n width: ${props => (props.show ? '100%' : '0%')};\n height: 100%;\n display: flex;\n background-color: ${COLORS.DAINTREE_BLUE};\n font-family: Arial, Helvetica, sans-serif;\n flex-direction: column;\n z-index: 100000;\n transition: all 0.2s ease-in-out;\n`\n\nconst ToggleTab = styled.div`\n position: absolute;\n top: 10px;\n right: -32px;\n width: 32px;\n height: 32px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: ${COLORS.SOLID_WHITE_ALPHA_0_8};\n font-size: 14px;\n font-weight: 600;\n background-color: ${COLORS.DAINTREE_BLUE};\n flex-direction: column;\n z-index: 100000;\n border-top-right-radius: 6px;\n border-bottom-right-radius: 6px;\n`\n\nconst ContentContainer = styled.div`\n overflow-y: auto;\n overflow-x: auto;\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n`\n\nconst Title = styled.div`\n padding: 12px;\n text-align: center;\n color: ${COLORS.SOLID_WHITE};\n border-bottom: 1px solid ${COLORS.SOLID_WHITE_ALPHA_0_2};\n`\n\nconst SessionContainer = styled.div`\n flex: 1 1 auto;\n height: 100%;\n overflow-y: auto;\n`\n\nconst KeepSessionContainer = styled.div`\n flex: none;\n padding: 12px;\n color: ${COLORS.SOLID_WHITE_ALPHA_0_8};\n font-size: 12px;\n`\n\nexport const SessionView = props => {\n const { webchatState, updateDevSettings } = props.webchatHooks || useWebchat()\n const { latestInput: input, session, lastRoutePath } = webchatState\n const toggleSessionView = () =>\n updateDevSettings({\n ...webchatState.devSettings,\n showSessionView: !webchatState.devSettings.showSessionView,\n })\n const toggleKeepSessionOnReload = () =>\n updateDevSettings({\n ...webchatState.devSettings,\n keepSessionOnReload: !webchatState.devSettings.keepSessionOnReload,\n })\n return (\n <SessionViewContent show={webchatState.devSettings.showSessionView}>\n <ToggleTab onClick={toggleSessionView}>\n {webchatState.devSettings.showSessionView ? '⇤' : '⇥'}\n </ToggleTab>\n <ContentContainer>\n <Title>Botonic Dev Console</Title>\n <SessionViewAttribute\n label='INPUT:'\n value={\n input && Object.keys(input).length\n ? `[${input.type}] ${input.data || ''}`\n : ''\n }\n />\n <SessionViewAttribute label='PAYLOAD:' value={input.payload} />\n <SessionViewAttribute\n label='PATH:'\n value={lastRoutePath ? `/${lastRoutePath}` : '/'}\n />\n <SessionViewAttribute label='SESSION:' />\n <SessionContainer>\n <JSONTree data={session} hideRoot={true} />\n </SessionContainer>\n <KeepSessionContainer>\n <label>\n <input\n type='checkbox'\n name='toggleKeepSessionOnReload'\n checked={Boolean(webchatState.devSettings.keepSessionOnReload)}\n onChange={toggleKeepSessionOnReload}\n />\n Keep session on reload\n </label>\n </KeepSessionContainer>\n </ContentContainer>\n </SessionViewContent>\n )\n}\n"],"names":["JSONTree","styled","COLORS","useWebchat","AttributeContainer","Label","Value","SessionViewAttribute","props","SessionViewContent","ToggleTab","ContentContainer","Title","SessionContainer","KeepSessionContainer","SessionView","webchatState","updateDevSettings","input","session","lastRoutePath","toggleSessionView","toggleKeepSessionOnReload","Object","Boolean"],"mappings":";;;;;;;;;;;;AAA0C;AACJ;AAED;AACa;AAElD,MAAMI,kBAAkBA,GAAGH,qBAAU,CAAC;;;;;;;SAO7B,EAAEC,kBAAkB,CAAC;;AAE9B,CAAC;AAED,MAAMG,KAAKA,GAAGJ,qBAAU,CAAC;;AAEzB,CAAC;AAED,MAAMK,KAAKA,GAAGL,qBAAU,CAAC;;;;;;SAMhB,EAAEC,mBAAmB,CAAC;;AAE/B,CAAC;AAED,MAAMK,oBAAoBA,GAAGC,CAAAA,sBAC3B,KAACJ,kBAAkBA;;0BACjB,IAACC,KAAKA;0BAAEG,MAAM,KAAK;;0BACnB,IAACF,KAAKA;0BAAEE,MAAM,KAAK;;;;AAIvB,MAAMC,kBAAkBA,GAAGR,qBAAU,CAAC;;SAE7B,EAAEO,CAAAA,QAAUA,MAAM,IAAI,GAAG,SAAS,KAAM;;;oBAG7B,EAAEN,oBAAoB,CAAC;;;;;AAK3C,CAAC;AAED,MAAMQ,SAASA,GAAGT,qBAAU,CAAC;;;;;;;;;;SAUpB,EAAEC,4BAA4B,CAAC;;;oBAGpB,EAAEA,oBAAoB,CAAC;;;;;AAK3C,CAAC;AAED,MAAMS,gBAAgBA,GAAGV,qBAAU,CAAC;;;;;;AAMpC,CAAC;AAED,MAAMW,KAAKA,GAAGX,qBAAU,CAAC;;;SAGhB,EAAEC,kBAAkB,CAAC;2BACH,EAAEA,4BAA4B,CAAC;AAC1D,CAAC;AAED,MAAMW,gBAAgBA,GAAGZ,qBAAU,CAAC;;;;AAIpC,CAAC;AAED,MAAMa,oBAAoBA,GAAGb,qBAAU,CAAC;;;SAG/B,EAAEC,4BAA4B,CAAC;;AAExC,CAAC;AAEM,MAAMa,WAAWA,GAAGP,CAAAA;IACzB,MAAM,EAAEQ,YAAY,EAAEC,iBAAiB,EAAE,GAAGT,MAAM,YAAY,IAAIL,UAAUA;IAC5E,MAAM,EAAE,aAAae,KAAK,EAAEC,OAAO,EAAEC,aAAa,EAAE,GAAGJ;IACvD,MAAMK,oBAAoB,IACxBJ,kBAAkB;YAChB,GAAGD,aAAa,WAAW;YAC3B,iBAAiB,CAACA,aAAa,WAAW,CAAC,eAAe;QAC5D;IACF,MAAMM,4BAA4B,IAChCL,kBAAkB;YAChB,GAAGD,aAAa,WAAW;YAC3B,qBAAqB,CAACA,aAAa,WAAW,CAAC,mBAAmB;QACpE;IACF,qBACE,KAACP,kBAAkBA;QAAC,MAAMO,aAAa,WAAW,CAAC,eAAe;;0BAChE,IAACN,SAASA;gBAAC,SAASW;0BACjBL,aAAa,WAAW,CAAC,eAAe,GAAG,MAAM;;0BAEpD,KAACL,gBAAgBA;;kCACf,IAACC,KAAKA;kCAAC;;kCACP,IAACL,oBAAoBA;wBACnB,OAAM;wBACN,OACEW,SAASK,OAAO,IAAI,CAACL,OAAO,MAAM,GAC9B,CAAC,CAAC,EAAEA,MAAM,IAAI,CAAC,EAAE,EAAEA,MAAM,IAAI,IAAI,IAAI,GACrC;;kCAGR,IAACX,oBAAoBA;wBAAC,OAAM;wBAAW,OAAOW,MAAM,OAAO;;kCAC3D,IAACX,oBAAoBA;wBACnB,OAAM;wBACN,OAAOa,gBAAgB,CAAC,CAAC,EAAEA,eAAe,GAAG;;kCAE/C,IAACb,oBAAoBA;wBAAC,OAAM;;kCAC5B,IAACM,gBAAgBA;kCACf,kBAACb,QAAQA;4BAAC,MAAMmB;4BAAS,UAAU;;;kCAErC,IAACL,oBAAoBA;kCACnB,mBAAC;;8CACC,IAAC;oCACC,MAAK;oCACL,MAAK;oCACL,SAASU,QAAQR,aAAa,WAAW,CAAC,mBAAmB;oCAC7D,UAAUM;;gCACV;;;;;;;;AAOd,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/styles.js","sources":["../../src/webchat/styles.ts"],"sourcesContent":["import styled from 'styled-components'\n\nimport { COLORS } from '../constants'\n\nexport const StyledWebchat = styled.div`\n position: fixed;\n right: ${props => props.theme.style.right};\n bottom: ${props => props.theme.style.bottom};\n width: ${props => props.theme.style.width};\n height: ${props => props.theme.style.height};\n margin: auto;\n background-color: ${props => props.theme.style.backgroundColor};\n border-radius: 10px;\n box-shadow: ${props => props.theme.style.boxShadow};\n font-family: ${props => props.theme.style.fontFamily};\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n overflow: hidden;\n\n @media (max-width: ${props => props.theme.mobileBreakpoint}px) {\n position: ${props => props.theme.mobileStyle.position};\n right: ${props => props.theme.mobileStyle.right};\n bottom: ${props => props.theme.mobileStyle.bottom};\n width: ${props => props.theme.mobileStyle.width};\n height: ${props => props.theme.mobileStyle.height};\n border-radius: ${props => props.theme.mobileStyle.borderRadius};\n font-size: ${props => props.theme.mobileStyle.fontSize};\n }\n`\n\nexport const ErrorMessageContainer = styled.div`\n position: relative;\n display: flex;\n z-index: 1;\n justify-content: center;\n width: 100%;\n`\n\nexport const ErrorMessage = styled.div`\n position: absolute;\n top: 10px;\n font-size: 14px;\n line-height: 20px;\n padding: 4px 11px;\n display: flex;\n background-color: ${COLORS.ERROR_RED};\n color: ${COLORS.CONCRETE_WHITE};\n border-radius: 5px;\n align-items: center;\n justify-content: center;\n font-family: ${props => props.theme.style.fontFamily};\n`\n\nexport const DarkBackgroundMenu = styled.div`\n background: ${COLORS.SOLID_BLACK};\n opacity: 0.3;\n z-index: 1;\n right: 0;\n bottom: 0;\n border-radius: 10px;\n position: absolute;\n width: 100%;\n height: 100%;\n`\n"],"names":["styled","COLORS","StyledWebchat","props","ErrorMessageContainer","ErrorMessage","DarkBackgroundMenu"],"mappings":";;;;;AAAsC;AAED;AAE9B,MAAME,aAAaA,GAAGF,qBAAU,CAAC;;SAE/B,EAAEG,CAAAA,QAASA,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;UAClC,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;SACrC,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;UAClC,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;;oBAE1B,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC;;cAEnD,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;eACtC,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC;;;;;;qBAMlC,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,gBAAgB,CAAC;cAC/C,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC;WAC/C,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;YACxC,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;WAC3C,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;YACxC,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;mBACnC,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC;eACpD,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC;;AAE3D,CAAC;AAEM,MAAMC,qBAAqBA,GAAGJ,qBAAU,CAAC;;;;;;AAMhD,CAAC;AAEM,MAAMK,YAAYA,GAAGL,qBAAU,CAAC;;;;;;;oBAOnB,EAAEC,gBAAgB,CAAC;SAC9B,EAAEA,qBAAqB,CAAC;;;;eAIlB,EAAEE,CAAAA,QAASA,MAAM,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC;AACvD,CAAC;AAEM,MAAMG,kBAAkBA,GAAGN,qBAAU,CAAC;cAC/B,EAAEC,kBAAkB,CAAC;;;;;;;;;AASnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/theme/default-theme.js","sources":["../../../src/webchat/theme/default-theme.ts"],"sourcesContent":["import { COLORS, WEBCHAT, WEBCHAT_DEFAULT_CONTENTS } from '../../constants'\nimport type { WebchatTheme } from './types'\n\nexport const defaultTheme: WebchatTheme = {\n style: {\n width: '300px',\n height: '450px',\n borderRadius: '10px',\n fontFamily: \"'Noto Sans JP', sans-serif\",\n fontSize: '16px',\n position: 'fixed',\n right: '20px',\n bottom: '20px',\n backgroundColor: COLORS.SOLID_WHITE,\n boxShadow: `${COLORS.SOLID_BLACK_ALPHA_0_2} 0px 0px 12px`,\n },\n mobileBreakpoint: 768,\n mobileStyle: {\n width: '100%',\n height: '100%',\n borderRadius: '0px',\n fontSize: '16px',\n position: 'absolute',\n right: '0px',\n bottom: '0px',\n },\n header: {\n title: 'Botonic',\n subtitle: '',\n image: WEBCHAT.DEFAULTS.LOGO,\n style: {\n borderRadius: '10px 10px 0px 0px',\n },\n mobileStyle: {\n borderRadius: '0px',\n },\n },\n brand: {\n color: COLORS.BOTONIC_BLUE,\n image: WEBCHAT.DEFAULTS.LOGO,\n },\n button: {\n autodisable: false,\n disabledstyle: {\n opacity: 0.5,\n cursor: 'auto',\n pointerEvents: 'none',\n },\n messageType: 'text',\n hoverBackground: COLORS.CONCRETE_WHITE,\n hoverTextColor: COLORS.SOLID_BLACK,\n style: {\n width: '100%',\n maxHeight: '80px',\n height: 'auto',\n fontFamily: 'inherit',\n fontSize: '14px',\n fontWeight: 'normal',\n background: COLORS.SOLID_WHITE,\n color: COLORS.SOLID_BLACK,\n outline: '0',\n border: ` 1px solid ${COLORS.SEASHELL_WHITE}`,\n borderRadius: '0px',\n padding: '12px 32px',\n overflow: 'hidden',\n },\n urlIcon: {\n enable: false,\n image: WEBCHAT.DEFAULTS.URL_ICON,\n },\n },\n message: {\n user: {\n blobTick: true,\n },\n bot: {\n blobTick: true,\n },\n },\n triggerButton: { image: WEBCHAT.DEFAULTS.LOGO },\n userInput: {\n attachments: { enable: undefined },\n box: {\n placeholder: WEBCHAT_DEFAULT_CONTENTS.INPUT_PLACEHOLDER,\n },\n emojiPicker: { enable: undefined },\n sendButton: { enable: true },\n enable: true,\n },\n carousel: {\n enableArrows: true,\n },\n animations: { enable: true },\n notifications: {\n enable: false,\n banner: {\n enable: false,\n text: 'unread messages',\n },\n triggerButton: { enable: false },\n },\n}\n"],"names":["COLORS","WEBCHAT","WEBCHAT_DEFAULT_CONTENTS","defaultTheme","undefined"],"mappings":";;;AAA2E;AAGpE,MAAMG,YAAYA,GAAiB;IACxC,OAAO;QACL,OAAO;QACP,QAAQ;QACR,cAAc;QACd,YAAY;QACZ,UAAU;QACV,UAAU;QACV,OAAO;QACP,QAAQ;QACR,iBAAiBH,kBAAkB;QACnC,WAAW,GAAGA,4BAA4B,CAAC,aAAa,CAAC;IAC3D;IACA,kBAAkB;IAClB,aAAa;QACX,OAAO;QACP,QAAQ;QACR,cAAc;QACd,UAAU;QACV,UAAU;QACV,OAAO;QACP,QAAQ;IACV;IACA,QAAQ;QACN,OAAO;QACP,UAAU;QACV,OAAOC,qBAAqB;QAC5B,OAAO;YACL,cAAc;QAChB;QACA,aAAa;YACX,cAAc;QAChB;IACF;IACA,OAAO;QACL,OAAOD,mBAAmB;QAC1B,OAAOC,qBAAqB;IAC9B;IACA,QAAQ;QACN,aAAa;QACb,eAAe;YACb,SAAS;YACT,QAAQ;YACR,eAAe;QACjB;QACA,aAAa;QACb,iBAAiBD,qBAAqB;QACtC,gBAAgBA,kBAAkB;QAClC,OAAO;YACL,OAAO;YACP,WAAW;YACX,QAAQ;YACR,YAAY;YACZ,UAAU;YACV,YAAY;YACZ,YAAYA,kBAAkB;YAC9B,OAAOA,kBAAkB;YACzB,SAAS;YACT,QAAQ,CAAC,WAAW,EAAEA,qBAAqB,EAAE;YAC7C,cAAc;YACd,SAAS;YACT,UAAU;QACZ;QACA,SAAS;YACP,QAAQ;YACR,OAAOC,yBAAyB;QAClC;IACF;IACA,SAAS;QACP,MAAM;YACJ,UAAU;QACZ;QACA,KAAK;YACH,UAAU;QACZ;IACF;IACA,eAAe;QAAE,OAAOA,qBAAqB;IAAC;IAC9C,WAAW;QACT,aAAa;YAAE,QAAQG;QAAU;QACjC,KAAK;YACH,aAAaF,0CAA0C;QACzD;QACA,aAAa;YAAE,QAAQE;QAAU;QACjC,YAAY;YAAE,QAAQ;QAAK;QAC3B,QAAQ;IACV;IACA,UAAU;QACR,cAAc;IAChB;IACA,YAAY;QAAE,QAAQ;IAAK;IAC3B,eAAe;QACb,QAAQ;QACR,QAAQ;YACN,QAAQ;YACR,MAAM;QACR;QACA,eAAe;YAAE,QAAQ;QAAM;IACjC;AACF,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/theme/types.js","sources":["../../../src/webchat/theme/types.ts"],"sourcesContent":["import type {\n BlockInputOption,\n ButtonProps,\n CustomMessageType,\n} from '../../components/index-types'\n\nexport interface ImagePreviewerProps {\n src: string\n isPreviewerOpened: boolean\n closePreviewer: () => void\n}\nexport interface CoverComponentProps {\n closeComponent: () => void\n}\n\nexport interface CoverComponentOptions {\n component: React.ComponentType<CoverComponentProps>\n props?: any\n}\n\nexport type PersistentMenuCloseOption = { closeLabel: string }\nexport type PersistentMenuOption = { label: string } & ButtonProps\n\nexport type PersistentMenuOptionsTheme = (\n | PersistentMenuCloseOption\n | PersistentMenuOption\n)[]\n\nexport interface PersistentMenuOptionsProps {\n onClick: () => void\n options: any\n}\n\nexport interface BlobProps {\n blobTick?: boolean\n blobTickStyle?: any\n blobWidth?: string\n imageStyle?: any\n}\n\nexport interface CustomButtonProps {\n children: React.ReactNode\n onClick?: () => void\n}\n\ninterface ButtonStyle {\n width?: string\n maxHeight?: string\n height?: string\n fontFamily?: string\n fontSize?: string\n fontWeight?: string\n background?: string\n color?: string\n outline?: string\n border?: string\n borderRadius?: string\n padding?: string\n overflow?: string\n}\n\nexport interface WebchatTheme {\n style: {\n width?: string\n height?: string\n borderRadius?: string\n fontFamily?: string\n fontSize?: string\n position?: 'fixed' | 'absolute'\n right?: string\n bottom?: string\n backgroundColor?: string\n boxShadow?: string\n }\n mobileBreakpoint: number\n mobileStyle: {\n width?: string\n height?: string\n borderRadius?: string\n fontSize?: string\n position?: 'fixed' | 'absolute'\n right?: string\n bottom?: string\n }\n\n coverComponent?: CoverComponentOptions\n webview?: {\n style?: any\n header?: {\n style?: any\n }\n }\n animations?: { enable?: boolean }\n intro?: {\n style?: any\n image?: string\n custom?: React.ComponentType\n }\n brand?: { color?: string; image?: string }\n header?: {\n title?: string\n subtitle?: string\n image?: string\n style?: {\n borderRadius?: string\n }\n mobileStyle?: {\n borderRadius?: string\n }\n custom?: React.ComponentType\n }\n message?: {\n bot?: BlobProps & { image?: string; style?: any }\n agent?: { image?: string }\n user?: BlobProps & { style?: any }\n // TODO: Review type used in customTypes should be a component exported by default with customMessage function\n customTypes?: CustomMessageType[]\n style?: any\n timestamps?: {\n withImage?: boolean\n format: () => string\n style?: any\n enable?: boolean\n }\n }\n button?: {\n autodisable?: boolean\n disabledstyle?: {\n opacity?: number\n cursor?: string\n pointerEvents?: string\n backgroundColor?: string\n }\n hoverBackground?: string\n hoverTextColor?: string\n messageType?: 'text' | 'postback'\n urlIcon?: {\n image?: string\n enable?: boolean\n }\n style?: ButtonStyle\n custom?: React.ComponentType<CustomButtonProps>\n }\n replies?: {\n align?: 'left' | 'center' | 'right'\n wrap?: 'wrap' | 'nowrap'\n }\n carousel?: {\n arrow?: {\n left: { custom?: React.ComponentType }\n right: { custom?: React.ComponentType }\n }\n enableArrows?: boolean\n }\n reply?: {\n style?: any\n custom?: React.ComponentType\n }\n triggerButton: {\n image?: string\n style?: any\n custom?: React.ComponentType\n }\n notifications?: {\n enable?: boolean\n banner?: {\n custom?: React.ComponentType\n enable?: boolean\n text?: string\n }\n triggerButton?: { enable?: boolean }\n }\n scrollButton?: {\n enable?: boolean\n custom?: React.ComponentType\n }\n markdownStyle?: string // string template with css styles\n userInput?: {\n attachments?: {\n enable?: boolean\n custom?: React.ComponentType\n }\n blockInputs?: BlockInputOption[]\n box?: {\n placeholder: string\n style?: any\n }\n emojiPicker?: {\n enable?: boolean\n custom?: React.ComponentType\n }\n menu?: {\n darkBackground?: boolean\n custom?: React.ComponentType<PersistentMenuOptionsProps>\n }\n menuButton?: { custom?: React.ComponentType }\n persistentMenu?: PersistentMenuOptionsTheme\n sendButton?: {\n enable?: boolean\n custom?: React.ComponentType\n }\n enable?: boolean\n style?: any\n }\n imagePreviewer?: React.ComponentType<ImagePreviewerProps>\n}\n"],"names":[],"mappings":"AA6MC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/tracking.js","sources":["../../src/webchat/tracking.ts"],"sourcesContent":["import type { EventCustom, EventFeedback } from '@botonic/core'\nimport { useContext } from 'react'\n\nimport type { ActionRequest } from '../index-types'\nimport { WebchatContext } from './context'\n\ninterface UseTracking {\n trackCustomEvent: (event: EventCustom) => Promise<void>\n trackFeedbackEvent: (event: EventFeedback) => Promise<void>\n}\n\nexport function useTracking(): UseTracking {\n const { webchatState, trackEvent } = useContext(WebchatContext)\n\n const getRequest = () => {\n const request = {\n session: {\n ...webchatState.session,\n },\n getUserCountry: () => webchatState.session.user?.country || '',\n getUserLocale: () => webchatState.session.user?.locale || '',\n getSystemLocale: () => {\n return webchatState.session.user?.system_locale || ''\n },\n } as unknown as ActionRequest\n\n return request\n }\n\n const trackCustomEvent = async (event: EventCustom) => {\n if (!trackEvent) {\n return\n }\n\n const request = getRequest()\n const { action, ...eventArgs } = event\n await trackEvent(request, action, eventArgs)\n }\n\n const trackFeedbackEvent = async (event: EventFeedback) => {\n if (!trackEvent) {\n return\n }\n\n const request = getRequest()\n const { action, ...eventArgs } = event\n await trackEvent(request, action, eventArgs)\n }\n\n return { trackCustomEvent, trackFeedbackEvent }\n}\n"],"names":["useContext","WebchatContext","useTracking","webchatState","trackEvent","getRequest","request","trackCustomEvent","event","action","eventArgs","trackFeedbackEvent"],"mappings":";;;;;AACkC;AAGQ;AAOnC,SAASE,WAAWA;IACzB,MAAM,EAAEC,YAAY,EAAEC,UAAU,EAAE,GAAGJ,UAAUA,CAACC,cAAcA;IAE9D,MAAMI,aAAa;QACjB,MAAMC,UAAU;YACd,SAAS;gBACP,GAAGH,aAAa,OAAO;YACzB;YACA,gBAAgB,IAAMA,aAAa,OAAO,CAAC,IAAI,EAAE,WAAW;YAC5D,eAAe,IAAMA,aAAa,OAAO,CAAC,IAAI,EAAE,UAAU;YAC1D,iBAAiB;gBACf,OAAOA,aAAa,OAAO,CAAC,IAAI,EAAE,iBAAiB;YACrD;QACF;QAEA,OAAOG;IACT;IAEA,MAAMC,mBAAmB,OAAOC;QAC9B,IAAI,CAACJ,YAAY;YACf;QACF;QAEA,MAAME,UAAUD;QAChB,MAAM,EAAEI,MAAM,EAAE,GAAGC,WAAW,GAAGF;QACjC,MAAMJ,WAAWE,SAASG,QAAQC;IACpC;IAEA,MAAMC,qBAAqB,OAAOH;QAChC,IAAI,CAACJ,YAAY;YACf;QACF;QAEA,MAAME,UAAUD;QAChB,MAAM,EAAEI,MAAM,EAAE,GAAGC,WAAW,GAAGF;QACjC,MAAMJ,WAAWE,SAASG,QAAQC;IACpC;IAEA,OAAO;QAAEH;QAAkBI;IAAmB;AAChD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/trigger-button/index.js","sources":["../../../src/webchat/trigger-button/index.tsx"],"sourcesContent":["/** biome-ignore-all lint/a11y/noStaticElementInteractions: we need to use static elements for the trigger button */\n/** biome-ignore-all lint/a11y/useKeyWithClickEvents: we need to use key with click events for the trigger button */\nimport { useContext } from 'react'\n\nimport { ROLES, WEBCHAT } from '../../constants'\nimport { resolveImage } from '../../util/environment'\nimport { WebchatContext } from '../../webchat/context'\nimport {\n StyledTriggerButton,\n TriggerImage,\n UnreadMessagesCounter,\n} from './styles'\n\nexport const TriggerButton = (): JSX.Element => {\n const { webchatState, getThemeProperty, toggleWebchat } =\n useContext(WebchatContext)\n\n const getTriggerImage = () => {\n const image = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.triggerButtonImage,\n undefined\n )\n\n if (!image) {\n webchatState.theme.triggerButton.image = WEBCHAT.DEFAULTS.LOGO\n return null\n }\n return image\n }\n\n const triggerButtonImage = getTriggerImage()\n\n const triggerButtonStyle = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.triggerButtonStyle\n )\n\n const notificationsTriggerButtonEnabled = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.notificationsTriggerButtonEnabled\n )\n\n const notificationsEnabled = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.notificationsEnabled,\n notificationsTriggerButtonEnabled\n )\n\n const CustomTriggerButton = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.customTrigger\n )\n\n const handleClick = (event: any) => {\n toggleWebchat(true)\n event.preventDefault()\n }\n\n return (\n <div onClick={handleClick}>\n {webchatState.numUnreadMessages !== 0 && notificationsEnabled && (\n <UnreadMessagesCounter className='trigger-notifications'>\n {webchatState.numUnreadMessages}\n </UnreadMessagesCounter>\n )}\n {CustomTriggerButton ? (\n <CustomTriggerButton />\n ) : (\n <StyledTriggerButton\n role={ROLES.TRIGGER_BUTTON}\n style={triggerButtonStyle}\n >\n {triggerButtonImage && (\n <TriggerImage src={resolveImage(triggerButtonImage)} />\n )}\n </StyledTriggerButton>\n )}\n </div>\n )\n}\n"],"names":["useContext","ROLES","WEBCHAT","resolveImage","WebchatContext","StyledTriggerButton","TriggerImage","UnreadMessagesCounter","TriggerButton","webchatState","getThemeProperty","toggleWebchat","getTriggerImage","image","undefined","triggerButtonImage","triggerButtonStyle","notificationsTriggerButtonEnabled","notificationsEnabled","CustomTriggerButton","handleClick","event"],"mappings":";;;;;;;;;;;;;;AAAA,kHAAkH,GAClH,kHAAkH,GAChF;AAEc;AACK;AACC;AAKrC;AAEV,MAAMQ,aAAaA,GAAG;IAC3B,MAAM,EAAEC,YAAY,EAAEC,gBAAgB,EAAEC,aAAa,EAAE,GACrDX,UAAUA,CAACI,cAAcA;IAE3B,MAAMQ,kBAAkB;QACtB,MAAMC,QAAQH,iBACZR,4CAA4C,EAC5CY;QAGF,IAAI,CAACD,OAAO;YACVJ,aAAa,KAAK,CAAC,aAAa,CAAC,KAAK,GAAGP,qBAAqB;YAC9D,OAAO;QACT;QACA,OAAOW;IACT;IAEA,MAAME,qBAAqBH;IAE3B,MAAMI,qBAAqBN,iBACzBR,4CAA4C;IAG9C,MAAMe,oCAAoCP,iBACxCR,2DAA2D;IAG7D,MAAMgB,uBAAuBR,iBAC3BR,8CAA8C,EAC9Ce;IAGF,MAAME,sBAAsBT,iBAC1BR,uCAAuC;IAGzC,MAAMkB,cAAc,CAACC;QACnBV,cAAc;QACdU,MAAM,cAAc;IACtB;IAEA,qBACE,KAAC;QAAI,SAASD;;YACXX,aAAa,iBAAiB,KAAK,KAAKS,sCACvC,IAACX,qBAAqBA;gBAAC,WAAU;0BAC9BE,aAAa,iBAAiB;;YAGlCU,oCACC,IAACA,yCAED,IAACd,mBAAmBA;gBAClB,MAAMJ,oBAAoB;gBAC1B,OAAOe;0BAEND,oCACC,IAACT,YAAYA;oBAAC,KAAKH,YAAYA,CAACY;;;;;AAM5C,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/trigger-button/styles.js","sources":["../../../src/webchat/trigger-button/styles.ts"],"sourcesContent":["import styled from 'styled-components'\n\nimport { COLORS } from '../../constants'\n\nexport const StyledTriggerButton = styled.div`\n cursor: pointer;\n position: fixed;\n background: ${COLORS.SOLID_WHITE};\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n width: 65px;\n height: 65px;\n bottom: 20px;\n right: 10px;\n padding: 8px;\n`\n\nexport const UnreadMessagesCounter = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 50%;\n position: fixed;\n right: 20px;\n bottom: 80px;\n width: 24px;\n height: 24px;\n background-color: ${COLORS.RED_NOTIFICATIONS};\n color: white;\n z-index: 10;\n`\n\nexport const TriggerImage = styled.img`\n max-width: 100%;\n max-height: 100%;\n`\n"],"names":["styled","COLORS","StyledTriggerButton","UnreadMessagesCounter","TriggerImage"],"mappings":";;;;;AAAsC;AAEE;AAEjC,MAAME,mBAAmBA,GAAGF,qBAAU,CAAC;;;cAGhC,EAAEC,kBAAkB,CAAC;;;;;;;;;;;AAWnC,CAAC;AAEM,MAAME,qBAAqBA,GAAGH,qBAAU,CAAC;;;;;;;;;;oBAU5B,EAAEC,wBAAwB,CAAC;;;AAG/C,CAAC;AAEM,MAAMG,YAAYA,GAAGJ,qBAAU,CAAC;;;AAGvC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/typing-indicator/index.js","sources":["../../../src/webchat/typing-indicator/index.tsx"],"sourcesContent":["import { type ForwardedRef, forwardRef } from 'react'\n\nimport { COLORS, ROLES } from '../../constants'\nimport { Dot, TypingContainer, TypingMsgWrapper } from './styles'\n\nconst TypingIndicator = forwardRef<HTMLDivElement, any>(\n (_props, ref: ForwardedRef<HTMLDivElement>) => (\n <TypingContainer ref={ref}>\n <TypingMsgWrapper\n role={ROLES.TYPING_INDICATOR}\n className='typing-indicator'\n backgroundColor={COLORS.SEASHELL_WHITE}\n >\n <Dot />\n <Dot />\n <Dot />\n </TypingMsgWrapper>\n </TypingContainer>\n )\n)\n\nTypingIndicator.displayName = 'TypingIndicator'\n\nexport default TypingIndicator\n"],"names":["forwardRef","COLORS","ROLES","Dot","TypingContainer","TypingMsgWrapper","TypingIndicator","_props","ref"],"mappings":";;;;;;;;;;AAAqD;AAEN;AACkB;AAEjE,MAAMM,eAAeA,iBAAGN,UAAUA,CAChC,CAACO,QAAQC,oBACP,IAACJ,eAAeA;QAAC,KAAKI;kBACpB,mBAACH,gBAAgBA;YACf,MAAMH,sBAAsB;YAC5B,WAAU;YACV,iBAAiBD,qBAAqB;;8BAEtC,IAACE,GAAGA;8BACJ,IAACA,GAAGA;8BACJ,IAACA,GAAGA;;;;AAMZG,eAAeA,CAAC,WAAW,GAAG;AAE9B,+CAAeA,eAAeA,EAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/typing-indicator/styles.js","sources":["../../../src/webchat/typing-indicator/styles.ts"],"sourcesContent":["import styled, { keyframes } from 'styled-components'\n\nconst blink = keyframes`\n 50% {\n opacity: 1;\n }\n`\n\nconst bulge = keyframes`\n 50% {\n transform: scale(1.05);\n }\n`\n\nexport const TypingContainer = styled.div`\n padding: 0px 8px 8px 8px;\n`\n\ninterface TypingMsgWrapperProps {\n backgroundColor: string\n}\n\nexport const TypingMsgWrapper = styled.div<TypingMsgWrapperProps>`\n will-change: transform;\n width: 44px;\n line-height: 0px;\n border-radius: 20px;\n padding: 8px 2px;\n text-align: center;\n display: block;\n margin: 8px;\n position: relative;\n animation: 2s ${bulge} infinite ease-out;\n background-color: ${props => props.backgroundColor};\n`\n\nexport const Dot = styled.span`\n height: 6px;\n width: 6px;\n margin: 0 1px;\n background-color: #9e9ea1;\n display: inline-block;\n border-radius: 50%;\n opacity: 0.4;\n &:nth-of-type(1) {\n animation: 1s ${blink} infinite 0.3333s;\n }\n &:nth-of-type(2) {\n animation: 1s ${blink} infinite 0.6666s;\n }\n &:nth-of-type(3) {\n animation: 1s ${blink} infinite 1s;\n }\n`\n"],"names":["styled","keyframes","blink","bulge","TypingContainer","TypingMsgWrapper","props","Dot"],"mappings":";;;AAAqD;AAErD,MAAME,KAAKA,GAAGD,SAAS,CAAC;;;;AAIxB,CAAC;AAED,MAAME,KAAKA,GAAGF,SAAS,CAAC;;;;AAIxB,CAAC;AAEM,MAAMG,eAAeA,GAAGJ,qBAAU,CAAC;;AAE1C,CAAC;AAMM,MAAMK,gBAAgBA,GAAGL,qBAAiC,CAAC;;;;;;;;;;gBAUlD,EAAEG,KAAKA,CAAC;oBACJ,EAAEG,CAAAA,QAASA,MAAM,eAAe,CAAC;AACrD,CAAC;AAEM,MAAMC,GAAGA,GAAGP,sBAAW,CAAC;;;;;;;;;kBASb,EAAEE,KAAKA,CAAC;;;kBAGR,EAAEA,KAAKA,CAAC;;;kBAGR,EAAEA,KAAKA,CAAC;;AAE1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/use-storage-state-hook.js","sources":["../../src/webchat/use-storage-state-hook.js"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react'\n\n// Code taken from https://github.com/leny/react-use-storage/blob/master/src/index.js\nconst IS_BROWSER =\n typeof window !== 'undefined' &&\n typeof navigator !== 'undefined' &&\n typeof document !== 'undefined'\n\nexport function useStorageState(storage, key, defaultValue) {\n let evtTarget\n\n try {\n evtTarget = new EventTarget()\n } catch {\n evtTarget = (IS_BROWSER ? document : {})?.createElement?.('phony')\n }\n\n const raw = storage?.getItem(key)\n\n const [value, setValue] = useState(raw ? JSON.parse(raw) : defaultValue)\n\n const updater = useCallback(\n (updatedValue, remove = false) => {\n setValue(updatedValue)\n storage[remove ? 'removeItem' : 'setItem'](\n key,\n JSON.stringify(updatedValue)\n )\n evtTarget.dispatchEvent(\n new CustomEvent('storage_change', { detail: { key } })\n )\n },\n [key]\n )\n\n defaultValue != null && !raw && updater(defaultValue)\n\n useEffect(() => {\n const listener = ({ detail }) => {\n if (detail.key === key) {\n const lraw = storage?.getItem(key)\n\n lraw !== raw && setValue(JSON.parse(lraw))\n }\n }\n\n evtTarget.addEventListener('storage_change', listener)\n return () => evtTarget.removeEventListener('storage_change', listener)\n })\n\n if (storage === null) {\n return [undefined, undefined]\n }\n return [value, updater, () => updater(null, true)]\n}\n"],"names":["useCallback","useEffect","useState","IS_BROWSER","window","navigator","document","useStorageState","storage","key","defaultValue","evtTarget","EventTarget","raw","value","setValue","JSON","updater","updatedValue","remove","CustomEvent","listener","detail","lraw","undefined"],"mappings":";;;AAAwD;AAExD,qFAAqF;AACrF,MAAMG,UAAUA,GACd,OAAOC,WAAW,eAClB,OAAOC,cAAc,eACrB,OAAOC,aAAa;AAEf,SAASC,eAAeA,CAACC,OAAO,EAAEC,GAAG,EAAEC,YAAY;IACxD,IAAIC;IAEJ,IAAI;QACFA,YAAY,IAAIC;IAClB,EAAE,OAAM;QACND,YAAaR,CAAAA,UAAUA,GAAGG,WAAW,CAAC,IAAI,gBAAgB;IAC5D;IAEA,MAAMO,MAAML,SAAS,QAAQC;IAE7B,MAAM,CAACK,OAAOC,SAAS,GAAGb,QAAQA,CAACW,MAAMG,KAAK,KAAK,CAACH,OAAOH;IAE3D,MAAMO,UAAUjB,WAAWA,CACzB,CAACkB,cAAcC,SAAS,KAAK;QAC3BJ,SAASG;QACTV,OAAO,CAACW,SAAS,eAAe,UAAU,CACxCV,KACAO,KAAK,SAAS,CAACE;QAEjBP,UAAU,aAAa,CACrB,IAAIS,YAAY,kBAAkB;YAAE,QAAQ;gBAAEX;YAAI;QAAE;IAExD,GACA;QAACA;KAAI;IAGPC,gBAAgB,QAAQ,CAACG,OAAOI,QAAQP;IAExCT,SAASA,CAAC;QACR,MAAMoB,WAAW,CAAC,EAAEC,MAAM,EAAE;YAC1B,IAAIA,OAAO,GAAG,KAAKb,KAAK;gBACtB,MAAMc,OAAOf,SAAS,QAAQC;gBAE9Bc,SAASV,OAAOE,SAASC,KAAK,KAAK,CAACO;YACtC;QACF;QAEAZ,UAAU,gBAAgB,CAAC,kBAAkBU;QAC7C,OAAO,IAAMV,UAAU,mBAAmB,CAAC,kBAAkBU;IAC/D;IAEA,IAAIb,YAAY,MAAM;QACpB,OAAO;YAACgB;YAAWA;SAAU;IAC/B;IACA,OAAO;QAACV;QAAOG;QAAS,IAAMA,QAAQ,MAAM;KAAM;AACpD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/utils.js","sources":["../../src/webchat/utils.ts"],"sourcesContent":["import { BotonicAction, type BotonicActionType } from '@botonic/core'\n\nexport const getParsedAction = (botonicAction: BotonicActionType) => {\n const splittedAction = botonicAction.split(`${BotonicAction.CreateCase}:`)\n if (splittedAction.length <= 1) {\n return undefined\n }\n return JSON.parse(splittedAction[1])\n}\n"],"names":["BotonicAction","getParsedAction","botonicAction","splittedAction","undefined","JSON"],"mappings":";;;AAAqE;AAE9D,MAAMC,eAAeA,GAAG,CAACC;IAC9B,MAAMC,iBAAiBD,cAAc,KAAK,CAAC,GAAGF,wBAAwB,CAAC,CAAC,CAAC;IACzE,IAAIG,eAAe,MAAM,IAAI,GAAG;QAC9B,OAAOC;IACT;IACA,OAAOC,KAAK,KAAK,CAACF,cAAc,CAAC,EAAE;AACrC,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/webchat-dev.js","sources":["../../src/webchat/webchat-dev.jsx"],"sourcesContent":["import { PROVIDER } from '@botonic/core'\nimport merge from 'lodash.merge'\nimport { forwardRef, useEffect } from 'react'\nimport { createPortal } from 'react-dom'\nimport styled from 'styled-components'\n\nimport { useWebchat } from './context/use-webchat'\nimport { SessionView } from './session-view'\nimport { Webchat } from './webchat'\n\nexport const DebugTab = styled.div`\n position: fixed;\n left: 0;\n top: 0;\n width: ${props => (props.show ? '350px' : '32px')};\n height: ${props => (props.show ? '100%' : '42px')};\n`\n\n// We want the debug tab to be rendered in the <body> even if the\n// webchat is being rendered in a shadowDOM, that's why we need a portal\nexport const DebugTabPortal = ({ webchatHooks, ...props }) =>\n createPortal(\n <DebugTab {...props}>\n <SessionView webchatHooks={webchatHooks} />\n </DebugTab>,\n document.body\n )\n\nconst initialSession = {\n is_first_interaction: true,\n last_session: {},\n user: {\n id: '000001',\n username: 'johndoe',\n name: 'John Doe',\n provider: PROVIDER.DEV,\n provider_id: '0000000',\n extra_data: {},\n },\n organization: '',\n bot: {\n id: '0000000',\n name: 'botName',\n },\n}\n\nexport const WebchatDev = forwardRef((props, ref) => {\n const webchatHooks = useWebchat()\n const { webchatState, updateTheme } = webchatHooks\n\n /* TODO: webchatState.theme should be included in the dependencies array\n together with props.theme. The problem is that this effect modifies webchatState\n so we enter an infinite rerender loop. */\n useEffect(() => {\n updateTheme(merge(webchatState.theme, props.theme))\n }, [props.theme])\n\n return (\n <>\n <Webchat\n style={{ flex: 1, position: 'relative' }}\n {...props}\n ref={ref}\n webchatHooks={webchatHooks}\n initialSession={initialSession}\n initialDevSettings={{\n keepSessionOnReload: webchatState.devSettings.keepSessionOnReload,\n showSessionView: webchatState.devSettings.showSessionView,\n }}\n localWebviews={props.webviews}\n />\n <DebugTabPortal\n show={webchatState.devSettings.showSessionView}\n webchatHooks={webchatHooks}\n />\n </>\n )\n})\n"],"names":["PROVIDER","merge","forwardRef","useEffect","createPortal","styled","useWebchat","SessionView","Webchat","DebugTab","props","DebugTabPortal","webchatHooks","document","initialSession","WebchatDev","ref","webchatState","updateTheme"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAwC;AACR;AACa;AACL;AACF;AAEY;AACN;AACT;AAE5B,MAAMS,QAAQA,GAAGJ,qBAAU,CAAC;;;;SAI1B,EAAEK,CAAAA,QAAUA,MAAM,IAAI,GAAG,UAAU,OAAQ;UAC1C,EAAEA,CAAAA,QAAUA,MAAM,IAAI,GAAG,SAAS,OAAQ;AACpD,CAAC;AAED,iEAAiE;AACjE,wEAAwE;AACjE,MAAMC,cAAcA,GAAG,CAAC,EAAEC,YAAY,EAAE,GAAGF,OAAO,iBACvDN,YAAYA,eACV,IAACK,QAAQA;QAAE,GAAGC,KAAK;kBACjB,kBAACH,WAAWA;YAAC,cAAcK;;QAE7BC,SAAS,IAAI,EACd;AAEH,MAAMC,cAAcA,GAAG;IACrB,sBAAsB;IACtB,cAAc,CAAC;IACf,MAAM;QACJ,IAAI;QACJ,UAAU;QACV,MAAM;QACN,UAAUd,YAAY;QACtB,aAAa;QACb,YAAY,CAAC;IACf;IACA,cAAc;IACd,KAAK;QACH,IAAI;QACJ,MAAM;IACR;AACF;AAEO,MAAMe,UAAUA,iBAAGb,UAAUA,CAAC,CAACQ,OAAOM;IAC3C,MAAMJ,eAAeN,UAAUA;IAC/B,MAAM,EAAEW,YAAY,EAAEC,WAAW,EAAE,GAAGN;IAEtC;;yCAEuC,GACvCT,SAASA,CAAC;QACRe,YAAYjB,YAAKA,CAACgB,aAAa,KAAK,EAAEP,MAAM,KAAK;IACnD,GAAG;QAACA,MAAM,KAAK;KAAC;IAEhB,qBACE;;0BACE,IAACF,OAAOA;gBACN,OAAO;oBAAE,MAAM;oBAAG,UAAU;gBAAW;gBACtC,GAAGE,KAAK;gBACT,KAAKM;gBACL,cAAcJ;gBACd,gBAAgBE,cAAcA;gBAC9B,oBAAoB;oBAClB,qBAAqBG,aAAa,WAAW,CAAC,mBAAmB;oBACjE,iBAAiBA,aAAa,WAAW,CAAC,eAAe;gBAC3D;gBACA,eAAeP,MAAM,QAAQ;;0BAE/B,IAACC,cAAcA;gBACb,MAAMM,aAAa,WAAW,CAAC,eAAe;gBAC9C,cAAcL;;;;AAItB,GAAE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/webchat.js","sources":["../../src/webchat/webchat.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { BotonicAction, INPUT, params2queryString } from '@botonic/core'\nimport merge from 'lodash.merge'\nimport {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react'\nimport { StyleSheetManager, ThemeProvider } from 'styled-components'\nimport { v7 as uuidv7 } from 'uuid'\n\nimport {\n Audio,\n Document,\n Handoff,\n Image,\n normalizeWebchatSettings,\n Text,\n Video,\n type WebchatSettingsProps,\n type Webview,\n} from '../components'\nimport {\n COLORS,\n MAX_ALLOWED_SIZE_MB,\n ROLES,\n WEBCHAT,\n WEBCHAT_DEFAULT_CONTENTS,\n} from '../constants'\nimport type { CloseWebviewOptions } from '../contexts'\nimport { SENDERS, type WebchatProps, type WebchatRef } from '../index-types'\nimport {\n getMediaType,\n isAllowedSize,\n isAudio,\n isDocument,\n isImage,\n isMedia,\n isText,\n isVideo,\n readDataURL,\n} from '../message-utils'\nimport { msgToBotonic } from '../msg-to-botonic'\nimport { isDev } from '../util/environment'\nimport { deserializeRegex, stringifyWithRegexs } from '../util/regexs'\nimport {\n _getThemeProperty,\n getServerErrorMessage,\n initSession,\n shouldKeepSessionOnReload,\n updateUserLocaleAndCountry,\n} from '../util/webchat'\nimport { ChatArea } from './chat-area'\nimport { OpenedPersistentMenu } from './components/opened-persistent-menu'\nimport { BotonicContainerId } from './constants'\nimport { useWebchat, WebchatContext, type WebchatState } from './context'\nimport { CoverComponent } from './cover-component'\nimport { WebchatHeader } from './header'\nimport {\n useComponentWillMount,\n usePrevious,\n useScrollToBottom,\n useTyping,\n} from './hooks'\nimport { InputPanel } from './input-panel'\nimport {\n DarkBackgroundMenu,\n ErrorMessage,\n ErrorMessageContainer,\n StyledWebchat,\n} from './styles'\nimport type { WebchatTheme } from './theme/types'\nimport { TriggerButton } from './trigger-button'\nimport { useStorageState } from './use-storage-state-hook'\nimport { getParsedAction } from './utils'\nimport { WebviewContainer } from './webview/index'\n\nconst Webchat = forwardRef<WebchatRef | null, WebchatProps>((props, ref) => {\n const {\n addMessage,\n addMessageComponent,\n clearMessages,\n doRenderCustomComponent,\n resetUnreadMessages,\n setCurrentAttachment,\n setError,\n setIsInputFocused,\n setLastMessageVisible,\n setOnline,\n toggleCoverComponent,\n toggleEmojiPicker,\n togglePersistentMenu,\n toggleWebchat,\n updateCustomMessageProps,\n updateDevSettings,\n updateHandoff,\n updateLastMessageDate,\n updateLastRoutePath,\n updateLatestInput,\n updateMessage,\n updateReplies,\n updateSession,\n updateTheme,\n updateTyping,\n updateWebview,\n removeWebview,\n removeReplies,\n webchatState,\n webchatContainerRef,\n chatAreaRef,\n inputPanelRef,\n headerRef,\n repliesRef,\n scrollableMessagesListRef,\n } = props.webchatHooks || useWebchat(props.theme)\n\n const contentsByLocale = props.contentsByLocale\n const firstUpdate = useRef(true)\n const isOnline = () => webchatState.online\n const currentDateString = () => new Date().toISOString()\n const theme = merge(webchatState.theme, props.theme)\n const { initialSession, initialDevSettings, onStateChange } = props\n const getThemeProperty = _getThemeProperty(theme)\n\n const [customComponent, setCustomComponent] = useState(null)\n const storage = props.storage\n const storageKey =\n typeof props.storageKey === 'function'\n ? props.storageKey()\n : props.storageKey\n\n const [botonicState, saveState] = useStorageState(storage, storageKey)\n\n const host = props.host || document.body\n\n const { scrollToBottom } = useScrollToBottom({ host })\n\n const saveWebchatState = (webchatState: WebchatState) => {\n storage &&\n saveState(\n JSON.parse(\n stringifyWithRegexs({\n messages: webchatState.messagesJSON,\n session: webchatState.session,\n lastRoutePath: webchatState.lastRoutePath,\n devSettings: webchatState.devSettings,\n lastMessageUpdate: webchatState.lastMessageUpdate,\n themeUpdates: webchatState.themeUpdates,\n })\n )\n )\n }\n\n const handleAttachment = (event: any) => {\n if (!isAllowedSize(event.target.files[0].size)) {\n throw new Error(\n `The file is too large. A maximum of ${MAX_ALLOWED_SIZE_MB}MB is allowed.`\n )\n }\n\n // TODO: Attach more files?\n setCurrentAttachment(event.target.files[0])\n }\n\n useEffect(() => {\n if (webchatState.currentAttachment) {\n sendAttachment(webchatState.currentAttachment)\n }\n }, [webchatState.currentAttachment])\n\n const sendUserInput = async (input: any) => {\n if (props.onUserInput) {\n resetUnreadMessages()\n scrollToBottom()\n props.onUserInput({\n user: webchatState.session.user,\n // TODO: Review if this input.sentBy exists in the frontend\n input: input,\n //@ts-expect-error\n session: webchatState.session,\n // TODO: Review why we were passing lastRoutePath, is only for devMode?\n lastRoutePath: webchatState.lastRoutePath,\n })\n }\n }\n\n // Load styles stored in window._botonicInsertStyles by Webpack\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: this is a complex useEffect that needs to be refactored, but it's not a problem for now\n useComponentWillMount(() => {\n if (window._botonicInsertStyles?.length) {\n for (const botonicStyle of window._botonicInsertStyles) {\n // Injecting styles at head is needed even if we use shadowDOM\n // as some dependencies like simplebar rely on creating ephemeral elements\n // on document.body and assume styles will be available globally\n document.head.appendChild(botonicStyle)\n\n // injecting styles in host node too so that shadowDOM works\n if (props.shadowDOM) {\n host.appendChild(botonicStyle.cloneNode(true))\n }\n }\n delete window._botonicInsertStyles\n }\n\n if (props.shadowDOM) {\n // emoji-picker-react injects styles in head, so we need to\n // re-inject them in our host node to make it work with shadowDOM\n for (const style of document.querySelectorAll('style')) {\n if (style.textContent?.includes('emoji-picker-react')) {\n host.appendChild(style.cloneNode(true))\n }\n }\n }\n })\n\n // Load initial state from storage\n useEffect(() => {\n let {\n messages,\n session,\n lastRoutePath,\n devSettings,\n lastMessageUpdate,\n themeUpdates,\n } = botonicState || {}\n session = initSession(session)\n updateSession(session)\n if (shouldKeepSessionOnReload({ initialDevSettings, devSettings })) {\n if (messages) {\n messages.forEach(message => {\n addMessage(message)\n const newMessageComponent = msgToBotonic(\n { ...message, delay: 0, typing: 0 },\n props.theme?.message?.customTypes\n )\n if (newMessageComponent) {\n addMessageComponent(newMessageComponent as any)\n }\n })\n }\n if (initialSession) {\n updateSession(merge(initialSession, session))\n }\n if (lastRoutePath) {\n updateLastRoutePath(lastRoutePath)\n }\n } else {\n updateSession(merge(initialSession, session))\n }\n if (devSettings) {\n updateDevSettings(devSettings)\n } else if (initialDevSettings) {\n updateDevSettings(initialDevSettings)\n }\n\n if (lastMessageUpdate) {\n updateLastMessageDate(lastMessageUpdate)\n }\n\n if (themeUpdates !== undefined) {\n updateTheme(merge(props.theme, themeUpdates), themeUpdates)\n }\n\n if (props.onInit) {\n setTimeout(() => {\n if (typeof props.onInit === 'function') {\n props.onInit()\n session.user = updateUserLocaleAndCountry(session.user)\n }\n }, 100)\n }\n }, [])\n\n useEffect(() => {\n if (!webchatState.isWebchatOpen) {\n if (webchatState.isLastMessageVisible) {\n resetUnreadMessages()\n }\n return\n }\n }, [webchatState.isWebchatOpen])\n\n useEffect(() => {\n const { messagesJSON, session } = webchatState\n if (onStateChange && typeof onStateChange === 'function' && session.user) {\n onStateChange({ messagesJSON, user: session.user })\n }\n saveWebchatState(webchatState)\n }, [\n webchatState.messagesJSON,\n webchatState.session,\n webchatState.lastRoutePath,\n webchatState.devSettings,\n webchatState.lastMessageUpdate,\n ])\n\n useEffect(() => {\n if (!webchatState.online) {\n setError({\n message: getServerErrorMessage(props.server),\n })\n } else {\n if (!firstUpdate.current) {\n setError(undefined)\n }\n }\n }, [webchatState.online])\n\n useTyping({ webchatState, updateTyping, updateMessage, host })\n\n useEffect(() => {\n updateTheme(merge(props.theme, theme, webchatState.themeUpdates))\n }, [props.theme, webchatState.themeUpdates])\n\n const openWebview = (\n webviewComponent: Webview,\n params?: Record<string, string>\n ) => {\n updateWebview(webviewComponent, params)\n }\n\n const textareaRef = useRef<HTMLTextAreaElement | undefined>()\n\n const closeWebview = async (options?: CloseWebviewOptions) => {\n removeWebview()\n if (userInputEnabled) {\n textareaRef.current?.focus()\n }\n if (options?.payload) {\n await sendPayload(options.payload)\n } else if (options?.path) {\n const params = options.params ? params2queryString(options.params) : ''\n await sendPayload(`__PATH_PAYLOAD__${options.path}?${params}`)\n }\n }\n\n const persistentMenuOptions = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.persistentMenu\n )\n\n const darkBackgroundMenu = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.darkBackgroundMenu\n )\n\n const getBlockInputs = (rule, inputData) => {\n const processedInput = rule.preprocess\n ? rule.preprocess(inputData)\n : inputData\n\n return rule.match.some(regex => {\n if (typeof regex === 'string') {\n regex = deserializeRegex(regex)\n }\n return regex.test(processedInput)\n })\n }\n\n const checkBlockInput = input => {\n // if is a text we check if it is a serialized RE\n const blockInputs = webchatState.theme.userInput?.blockInputs\n if (!Array.isArray(blockInputs)) {\n return false\n }\n for (const rule of blockInputs) {\n if (getBlockInputs(rule, input.data)) {\n addMessageComponent(\n <Text\n // Is necessary to add the id of the input\n // to keep the input.id generated in the frontend as id of the message\n // @ts-expect-error input.id is not typed\n id={input.id}\n sentBy={SENDERS.user}\n blob={false}\n style={{\n backgroundColor: COLORS.SCORPION_GRAY,\n borderColor: COLORS.SCORPION_GRAY,\n padding: '8px 12px',\n }}\n >\n {rule.message}\n </Text>\n )\n removeReplies()\n return true\n }\n }\n return false\n }\n\n const closeMenu = () => {\n togglePersistentMenu(false)\n }\n\n const persistentMenu = () => {\n return (\n <OpenedPersistentMenu\n onClick={closeMenu}\n options={persistentMenuOptions}\n borderRadius={webchatState.theme.style.borderRadius || '10px'}\n />\n )\n }\n\n const coverComponent = webchatState.theme.coverComponent\n const coverComponentProps = webchatState.theme.coverComponent?.props\n\n useEffect(() => {\n if (!coverComponent) {\n return\n }\n if (\n !botonicState ||\n (botonicState.messages && botonicState.messages.length === 0)\n ) {\n toggleCoverComponent(true)\n }\n }, [])\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: messageComponentFromInput is a complex\n const messageComponentFromInput = input => {\n let messageComponent: any = null\n if (isText(input)) {\n messageComponent = (\n <Text\n // Is necessary to add the id of the input\n // to keep the input.id generated in the frontend as id of the message\n // @ts-expect-error input.id is not typed\n id={input.id}\n // Is necessary to add the payload of the input when user clicks a button\n payload={input.payload}\n sentBy={SENDERS.user}\n >\n {input.data}\n </Text>\n )\n } else if (isMedia(input)) {\n const temporaryDisplayUrl = URL.createObjectURL(input.data)\n // TODO: We should use URL.revokeObjectURL(temporaryDisplayUrl) when the component is unmounted\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL_static#memory_management\n const mediaProps: {\n id: string\n sentBy: SENDERS\n src: string\n input?: any\n } = {\n id: input.id,\n sentBy: SENDERS.user,\n src: temporaryDisplayUrl,\n }\n if (isImage(input)) {\n mediaProps.input = input\n messageComponent = <Image {...mediaProps} />\n } else if (isAudio(input)) {\n messageComponent = <Audio {...mediaProps} />\n } else if (isVideo(input)) {\n messageComponent = <Video {...mediaProps} />\n } else if (isDocument(input)) {\n messageComponent = <Document {...mediaProps} />\n }\n }\n return messageComponent\n }\n\n const sendInput = async (input: any) => {\n if (!input || Object.keys(input).length === 0) {\n return\n }\n if (isText(input) && (!input.data || !input.data.trim())) {\n return // in case trim() doesn't work in a browser we can use !/\\S/.test(input.data)\n }\n if (isText(input) && checkBlockInput(input)) {\n return\n }\n if (!input.id) {\n input.id = uuidv7()\n }\n const messageComponent = messageComponentFromInput(input)\n if (messageComponent) {\n addMessageComponent(messageComponent)\n }\n if (isMedia(input)) {\n input.data = await readDataURL(input.data)\n }\n sendUserInput(input)\n updateLatestInput(input)\n isOnline() && updateLastMessageDate(currentDateString())\n removeReplies()\n togglePersistentMenu(false)\n toggleEmojiPicker(false)\n }\n\n /* This is the public API this component exposes to its parents\n https://stackoverflow.com/questions/37949981/call-child-method-from-parent\n */\n\n const updateSessionWithUser = (userToUpdate: any) => {\n if (contentsByLocale && userToUpdate.system_locale) {\n const placeholder =\n contentsByLocale[userToUpdate.system_locale]?.inputPlaceholder ??\n WEBCHAT_DEFAULT_CONTENTS.INPUT_PLACEHOLDER\n const themeUpdates = { userInput: { box: { placeholder } } }\n updateTheme(\n merge(props.theme, themeUpdates),\n themeUpdates as WebchatTheme\n )\n }\n updateSession(merge(webchatState.session, { user: userToUpdate }))\n }\n\n useImperativeHandle(ref, () => ({\n addBotResponse: ({ response, session, lastRoutePath }) => {\n updateTyping(false)\n\n const isUnread =\n !webchatState.isLastMessageVisible || webchatState.numUnreadMessages > 0\n\n if (Array.isArray(response)) {\n response.forEach(r => {\n addMessageComponent({ ...r, props: { ...r.props, isUnread } })\n })\n } else if (response) {\n addMessageComponent({\n ...response,\n props: { ...response.props, isUnread },\n })\n }\n\n if (session) {\n updateSession(merge(session, { user: webchatState.session.user }))\n const action = session._botonic_action || ''\n const handoff = action.startsWith(BotonicAction.CreateCase)\n if (handoff && isDev) {\n addMessageComponent(<Handoff />)\n }\n updateHandoff(handoff)\n }\n\n if (lastRoutePath) {\n updateLastRoutePath(lastRoutePath)\n }\n\n updateLastMessageDate(currentDateString())\n },\n addSystemResponse: ({ response }) => {\n if (Array.isArray(response)) {\n response.forEach(r => {\n addMessageComponent({ ...r, props: { ...r.props, isUnread: false } })\n })\n } else if (response) {\n addMessageComponent({\n ...response,\n props: { ...response.props, isUnread: false },\n })\n }\n updateLastMessageDate(currentDateString())\n },\n setTyping: (typing: boolean) => updateTyping(typing),\n addUserMessage: message => sendInput(message),\n updateUser: updateSessionWithUser,\n openWebchat: () => toggleWebchat(true),\n closeWebchat: () => toggleWebchat(false),\n toggleWebchat: () => toggleWebchat(!webchatState.isWebchatOpen),\n openCoverComponent: () => toggleCoverComponent(true),\n closeCoverComponent: () => toggleCoverComponent(false),\n renderCustomComponent: _customComponent => {\n setCustomComponent(_customComponent)\n doRenderCustomComponent(true)\n },\n unmountCustomComponent: () => doRenderCustomComponent(false),\n toggleCoverComponent: () =>\n toggleCoverComponent(!webchatState.isCoverComponentOpen),\n setOnline,\n getMessages: () => webchatState.messagesJSON,\n isOnline,\n clearMessages: () => {\n clearMessages()\n removeReplies()\n },\n getLastMessageUpdate: () => webchatState.lastMessageUpdate,\n updateMessageInfo: (msgId: string, messageInfo: any) => {\n const messageToUpdate = webchatState.messagesJSON.filter(\n m => m.id === msgId\n )[0]\n const updatedMsg = merge(messageToUpdate, messageInfo)\n if (updatedMsg.ack === 1) {\n delete updatedMsg.unsentInput\n }\n updateMessage(updatedMsg)\n },\n updateWebchatSettings: (settings: WebchatSettingsProps) => {\n if (settings.user) {\n updateSessionWithUser(settings.user)\n }\n const themeUpdates = normalizeWebchatSettings(settings)\n updateTheme(\n merge(webchatState.theme, themeUpdates),\n themeUpdates as WebchatTheme\n )\n updateTyping(false)\n },\n closeWebview: async (options?: CloseWebviewOptions) =>\n closeWebview(options),\n }))\n\n const resolveCase = () => {\n updateHandoff(false)\n updateSession({ ...webchatState.session, _botonic_action: undefined })\n }\n\n const prevSession = usePrevious(webchatState.session)\n useEffect(() => {\n // Resume conversation after handoff\n if (prevSession?._botonic_action && !webchatState.session._botonic_action) {\n const action = getParsedAction(prevSession._botonic_action)\n if (action?.on_finish) {\n sendPayload(action.on_finish)\n }\n }\n }, [webchatState.session._botonic_action])\n\n const sendText = async (text: string, payload?: string) => {\n if (!text) {\n return\n }\n const input = { type: INPUT.TEXT, data: text, payload }\n await sendInput(input)\n }\n\n const sendPayload = async (payload: string) => {\n if (!payload) {\n return\n }\n const input = { type: INPUT.POSTBACK, payload }\n await sendInput(input)\n }\n\n const sendAttachment = async (attachment: File) => {\n if (attachment) {\n const attachmentType = getMediaType(attachment.type)\n if (!attachmentType) {\n return\n }\n const input = {\n type: attachmentType,\n data: attachment,\n }\n await sendInput(input)\n setCurrentAttachment()\n }\n }\n\n useEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = false\n return\n }\n\n if (webchatState.isWebchatOpen && props.onOpen) {\n props.onOpen()\n }\n\n if (!webchatState.isWebchatOpen && props.onClose && !firstUpdate.current) {\n props.onClose()\n toggleEmojiPicker(false)\n togglePersistentMenu(false)\n }\n }, [webchatState.isWebchatOpen])\n\n const isUserInputEnabled = () => {\n const isUserInputEnabled = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.enableUserInput\n )\n return isUserInputEnabled && !webchatState.isCoverComponentOpen\n }\n\n const userInputEnabled = isUserInputEnabled()\n\n useEffect(() => {\n // Prod mode\n saveWebchatState(webchatState)\n }, [webchatState.themeUpdates])\n\n // Only needed for dev/serve mode\n const updateWebchatDevSettings = settings => {\n useEffect(() => {\n const themeUpdates = normalizeWebchatSettings(settings)\n updateTheme(\n merge(webchatState.theme, themeUpdates),\n themeUpdates as WebchatTheme\n )\n }, [webchatState.messagesJSON])\n }\n\n const DarkenBackground = ({ component }) => {\n return (\n <div>\n {darkBackgroundMenu && (\n <DarkBackgroundMenu\n style={{\n borderRadius: webchatState.theme.style.borderRadius,\n }}\n />\n )}\n {component}\n </div>\n )\n }\n\n const _renderCustomComponent = () => {\n if (!customComponent) {\n return <></>\n } else {\n return customComponent\n }\n }\n\n const WebchatComponent = (\n <WebchatContext.Provider\n value={{\n addMessage,\n getThemeProperty,\n closeWebview,\n openWebview,\n resolveCase,\n resetUnreadMessages,\n setIsInputFocused,\n setLastMessageVisible,\n sendAttachment,\n sendInput,\n sendPayload,\n sendText,\n toggleWebchat,\n toggleEmojiPicker,\n togglePersistentMenu,\n toggleCoverComponent,\n updateCustomMessageProps,\n updateLatestInput,\n updateMessage,\n updateReplies,\n updateUser: updateSessionWithUser,\n updateWebchatDevSettings: updateWebchatDevSettings,\n trackEvent: props.onTrackEvent,\n previewUtils: props.previewUtils,\n webchatState,\n webchatContainerRef,\n chatAreaRef,\n inputPanelRef,\n headerRef,\n repliesRef,\n scrollableMessagesListRef,\n }}\n >\n <ThemeProvider theme={webchatState.theme}>\n {!webchatState.isWebchatOpen && <TriggerButton />}\n\n {webchatState.isWebchatOpen && (\n <StyledWebchat\n id={BotonicContainerId.Webchat}\n ref={webchatContainerRef}\n // TODO: Distinguish between multiple instances of webchat, e.g. `${uniqueId}-botonic-webchat`\n role={ROLES.WEBCHAT}\n >\n <WebchatHeader ref={headerRef} />\n\n {webchatState.isCoverComponentOpen ? (\n <CoverComponent\n component={coverComponent}\n componentProps={coverComponentProps}\n />\n ) : (\n <>\n {webchatState.error.message && (\n <ErrorMessageContainer>\n <ErrorMessage>{webchatState.error.message}</ErrorMessage>\n </ErrorMessageContainer>\n )}\n\n <ChatArea />\n\n {webchatState.isPersistentMenuOpen && (\n <DarkenBackground component={persistentMenu()} />\n )}\n\n {!webchatState.handoff && userInputEnabled && (\n <InputPanel\n handleAttachment={handleAttachment}\n textareaRef={textareaRef}\n host={host}\n onUserInput={props.onUserInput}\n />\n )}\n\n {webchatState.webview && (\n <WebviewContainer localWebviews={props.localWebviews} />\n )}\n\n {webchatState.isCustomComponentRendered &&\n customComponent &&\n _renderCustomComponent()}\n </>\n )}\n </StyledWebchat>\n )}\n </ThemeProvider>\n </WebchatContext.Provider>\n )\n\n return props.shadowDOM ? (\n <StyleSheetManager target={host}>{WebchatComponent}</StyleSheetManager>\n ) : (\n WebchatComponent\n )\n})\n\nWebchat.displayName = 'Webchat'\nexport { Webchat }\n"],"names":["BotonicAction","INPUT","params2queryString","merge","forwardRef","useEffect","useImperativeHandle","useRef","useState","StyleSheetManager","ThemeProvider","v7","uuidv7","Audio","Document","Handoff","Image","normalizeWebchatSettings","Text","Video","COLORS","MAX_ALLOWED_SIZE_MB","ROLES","WEBCHAT","WEBCHAT_DEFAULT_CONTENTS","SENDERS","getMediaType","isAllowedSize","isAudio","isDocument","isImage","isMedia","isText","isVideo","readDataURL","msgToBotonic","isDev","deserializeRegex","stringifyWithRegexs","_getThemeProperty","getServerErrorMessage","initSession","shouldKeepSessionOnReload","updateUserLocaleAndCountry","ChatArea","OpenedPersistentMenu","BotonicContainerId","useWebchat","WebchatContext","CoverComponent","WebchatHeader","useComponentWillMount","usePrevious","useScrollToBottom","useTyping","InputPanel","DarkBackgroundMenu","ErrorMessage","ErrorMessageContainer","StyledWebchat","TriggerButton","useStorageState","getParsedAction","WebviewContainer","Webchat","props","ref","addMessage","addMessageComponent","clearMessages","doRenderCustomComponent","resetUnreadMessages","setCurrentAttachment","setError","setIsInputFocused","setLastMessageVisible","setOnline","toggleCoverComponent","toggleEmojiPicker","togglePersistentMenu","toggleWebchat","updateCustomMessageProps","updateDevSettings","updateHandoff","updateLastMessageDate","updateLastRoutePath","updateLatestInput","updateMessage","updateReplies","updateSession","updateTheme","updateTyping","updateWebview","removeWebview","removeReplies","webchatState","webchatContainerRef","chatAreaRef","inputPanelRef","headerRef","repliesRef","scrollableMessagesListRef","contentsByLocale","firstUpdate","isOnline","currentDateString","Date","theme","initialSession","initialDevSettings","onStateChange","getThemeProperty","customComponent","setCustomComponent","storage","storageKey","botonicState","saveState","host","document","scrollToBottom","saveWebchatState","JSON","handleAttachment","event","Error","sendAttachment","sendUserInput","input","window","botonicStyle","style","messages","session","lastRoutePath","devSettings","lastMessageUpdate","themeUpdates","message","newMessageComponent","undefined","setTimeout","messagesJSON","openWebview","webviewComponent","params","textareaRef","closeWebview","options","userInputEnabled","sendPayload","persistentMenuOptions","darkBackgroundMenu","getBlockInputs","rule","inputData","processedInput","regex","checkBlockInput","blockInputs","Array","closeMenu","persistentMenu","coverComponent","coverComponentProps","messageComponentFromInput","messageComponent","temporaryDisplayUrl","URL","mediaProps","sendInput","Object","updateSessionWithUser","userToUpdate","placeholder","response","isUnread","r","action","handoff","typing","_customComponent","msgId","messageInfo","messageToUpdate","m","updatedMsg","settings","resolveCase","prevSession","sendText","text","payload","attachment","attachmentType","isUserInputEnabled","updateWebchatDevSettings","DarkenBackground","component","_renderCustomComponent","WebchatComponent"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const WebviewHeader: () => import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/webview/header.js","sources":["../../../src/webchat/webview/header.tsx"],"sourcesContent":["import { useContext } from 'react'\n\nimport { ROLES, WEBCHAT } from '../../constants'\nimport { WebviewRequestContext } from '../../contexts'\nimport { WebchatContext } from '../context'\nimport { StyledCloseHeader, StyledWebviewHeader } from './styles'\n\nexport const WebviewHeader = () => {\n const { closeWebview } = useContext(WebviewRequestContext)\n const { getThemeProperty } = useContext(WebchatContext)\n\n return (\n <StyledWebviewHeader\n role={ROLES.WEBVIEW_HEADER}\n style={{\n ...getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.webviewHeaderStyle),\n }}\n >\n <StyledCloseHeader onClick={() => closeWebview()}>✕</StyledCloseHeader>\n </StyledWebviewHeader>\n )\n}\n"],"names":["useContext","ROLES","WEBCHAT","WebviewRequestContext","WebchatContext","StyledCloseHeader","StyledWebviewHeader","WebviewHeader","closeWebview","getThemeProperty"],"mappings":";;;;;;;;;;;;;;AAAkC;AAEc;AACM;AACX;AACsB;AAE1D,MAAMO,aAAaA,GAAG;IAC3B,MAAM,EAAEC,YAAY,EAAE,GAAGR,UAAUA,CAACG,qBAAqBA;IACzD,MAAM,EAAEM,gBAAgB,EAAE,GAAGT,UAAUA,CAACI,cAAcA;IAEtD,qBACE,IAACE,mBAAmBA;QAClB,MAAML,oBAAoB;QAC1B,OAAO;YACL,GAAGQ,iBAAiBP,4CAA4C,CAAC;QACnE;kBAEA,kBAACG,iBAAiBA;YAAC,SAAS,IAAMG;sBAAgB;;;AAGxD,EAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
import { type WebchatState } from '../context/index.js';
|
|
3
|
+
export declare const WebviewContainer: ({ localWebviews, }: {
|
|
4
|
+
localWebviews?: React.ComponentType[];
|
|
5
|
+
}) => React.JSX.Element;
|
|
6
|
+
export declare function getWebviewInDevMode(localWebviews: React.ComponentType[] | undefined, webchatState: WebchatState): React.ComponentType;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/webview/index.js","sources":["../../../src/webchat/webview/index.tsx"],"sourcesContent":["import { type Session as CoreSession, isDev } from '@botonic/core'\nimport type React from 'react'\nimport { useContext, useEffect } from 'react'\n\nimport type { Webview } from '../../components/index-types'\nimport { ROLES, WEBCHAT } from '../../constants'\nimport {\n type CloseWebviewOptions,\n WebviewRequestContext,\n type WebviewRequestContextType,\n} from '../../contexts'\nimport { WebchatContext, type WebchatState } from '../context'\nimport { WebviewHeader } from './header'\nimport {\n StyledFrame,\n StyledFrameAsDiv,\n StyledWebview,\n StyledWebviewContent,\n} from './styles'\n\nexport const WebviewContainer = ({\n localWebviews,\n}: {\n localWebviews?: React.ComponentType[]\n}) => {\n const { closeWebview, getThemeProperty, webchatState } =\n useContext(WebchatContext)\n\n const webviewRequestContext: WebviewRequestContextType = {\n params: webchatState.webviewParams,\n session: webchatState.session || ({} as Partial<CoreSession>),\n getUserCountry: () => webchatState.session?.user?.country || '',\n getUserLocale: () => webchatState.session?.user?.locale || '',\n getSystemLocale: () => webchatState.session?.user?.system_locale || '',\n closeWebview: async (options?: CloseWebviewOptions) =>\n await closeWebview(options),\n }\n\n const close = async (e: any) => {\n if (e.data === 'botonicCloseWebview') {\n console.log('Received close message from webview')\n await closeWebview()\n }\n }\n\n useEffect(() => {\n window.addEventListener('message', close, false)\n\n return () => window.removeEventListener('message', close, false)\n }, [])\n\n if (isDev(webchatState.session as CoreSession)) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const Webview = getWebviewInDevMode(localWebviews, webchatState)\n\n return (\n <WebviewRequestContext.Provider value={webviewRequestContext}>\n <StyledWebview\n role={ROLES.WEBVIEW}\n style={{\n ...getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.webviewStyle),\n }}\n >\n <WebviewHeader />\n <StyledWebviewContent>\n <StyledFrameAsDiv>\n <Webview />\n </StyledFrameAsDiv>\n </StyledWebviewContent>\n </StyledWebview>\n </WebviewRequestContext.Provider>\n )\n }\n\n const webviewUrl =\n webchatState.webview && typeof webchatState.webview === 'string'\n ? webchatState.webview\n : ''\n\n return (\n <WebviewRequestContext.Provider value={webviewRequestContext}>\n <StyledWebview\n role={ROLES.WEBVIEW}\n style={{\n ...getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.webviewStyle),\n }}\n >\n <WebviewHeader />\n <StyledWebviewContent>\n <StyledFrame src={webviewUrl as string} />\n </StyledWebviewContent>\n </StyledWebview>\n </WebviewRequestContext.Provider>\n )\n}\n\nfunction isReactComponent(value: unknown): value is React.ComponentType {\n return typeof value === 'function'\n}\n\nfunction isWebviewDescriptor(value: unknown): value is Webview {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'name' in value &&\n typeof (value as Webview).name === 'string' &&\n !isReactComponent(value)\n )\n}\n\nexport function getWebviewInDevMode(\n localWebviews: React.ComponentType[] | undefined,\n webchatState: WebchatState\n): React.ComponentType {\n const { webview } = webchatState\n\n if (webview == null) {\n throw new Error('No webview specified')\n }\n\n if (typeof webview === 'string') {\n return webview as unknown as React.ComponentType\n }\n\n if (isReactComponent(webview)) {\n return webview\n }\n\n if (isWebviewDescriptor(webview)) {\n const localWebview = localWebviews?.find(\n local => local.name === webview.name\n )\n\n if (!localWebview) {\n const registeredNames =\n localWebviews\n ?.map(w => w.name)\n .filter(Boolean)\n .join(', ') || 'none'\n throw new Error(\n `Local webview \"${webview.name}\" not found. Registered webviews: ${registeredNames}`\n )\n }\n\n return localWebview\n }\n\n throw new Error(\n 'Invalid webview type: expected a React component, a webview descriptor { name }, or a string URL'\n )\n}\n"],"names":["isDev","useContext","useEffect","ROLES","WEBCHAT","WebviewRequestContext","WebchatContext","WebviewHeader","StyledFrame","StyledFrameAsDiv","StyledWebview","StyledWebviewContent","WebviewContainer","localWebviews","closeWebview","getThemeProperty","webchatState","webviewRequestContext","options","close","e","console","window","Webview","getWebviewInDevMode","webviewUrl","isReactComponent","value","isWebviewDescriptor","webview","Error","localWebview","local","registeredNames","w","Boolean"],"mappings":";;;;;;;;;;;;;;;;;;AAAkE;AAErB;AAGG;AAKzB;AACuC;AACtB;AAMvB;AAEV,MAAMY,gBAAgBA,GAAG,CAAC,EAC/BC,aAAa,EAGd;IACC,MAAM,EAAEC,YAAY,EAAEC,gBAAgB,EAAEC,YAAY,EAAE,GACpDf,UAAUA,CAACK,cAAcA;IAE3B,MAAMW,wBAAmD;QACvD,QAAQD,aAAa,aAAa;QAClC,SAASA,aAAa,OAAO,IAAK,CAAC;QACnC,gBAAgB,IAAMA,aAAa,OAAO,EAAE,MAAM,WAAW;QAC7D,eAAe,IAAMA,aAAa,OAAO,EAAE,MAAM,UAAU;QAC3D,iBAAiB,IAAMA,aAAa,OAAO,EAAE,MAAM,iBAAiB;QACpE,cAAc,OAAOE,UACnB,MAAMJ,aAAaI;IACvB;IAEA,MAAMC,QAAQ,OAAOC;QACnB,IAAIA,EAAE,IAAI,KAAK,uBAAuB;YACpCC,QAAQ,GAAG,CAAC;YACZ,MAAMP;QACR;IACF;IAEAZ,SAASA,CAAC;QACRoB,OAAO,gBAAgB,CAAC,WAAWH,OAAO;QAE1C,OAAO,IAAMG,OAAO,mBAAmB,CAAC,WAAWH,OAAO;IAC5D,GAAG,EAAE;IAEL,IAAInB,KAAKA,CAACgB,aAAa,OAAO,GAAkB;QAC9C,gEAAgE;QAChE,MAAMO,UAAUC,mBAAmBA,CAACX,eAAeG;QAEnD,qBACE,IAACX,8BAA8B;YAAC,OAAOY;sBACrC,mBAACP,aAAaA;gBACZ,MAAMP,aAAa;gBACnB,OAAO;oBACL,GAAGY,iBAAiBX,sCAAsC,CAAC;gBAC7D;;kCAEA,IAACG,aAAaA;kCACd,IAACI,oBAAoBA;kCACnB,kBAACF,gBAAgBA;sCACf,kBAACc;;;;;;IAMb;IAEA,MAAME,aACJT,aAAa,OAAO,IAAI,OAAOA,aAAa,OAAO,KAAK,WACpDA,aAAa,OAAO,GACpB;IAEN,qBACE,IAACX,8BAA8B;QAAC,OAAOY;kBACrC,mBAACP,aAAaA;YACZ,MAAMP,aAAa;YACnB,OAAO;gBACL,GAAGY,iBAAiBX,sCAAsC,CAAC;YAC7D;;8BAEA,IAACG,aAAaA;8BACd,IAACI,oBAAoBA;8BACnB,kBAACH,WAAWA;wBAAC,KAAKiB;;;;;;AAK5B,EAAC;AAED,SAASC,gBAAgBA,CAACC,KAAc;IACtC,OAAO,OAAOA,UAAU;AAC1B;AAEA,SAASC,mBAAmBA,CAACD,KAAc;IACzC,OACE,OAAOA,UAAU,YACjBA,UAAU,QACV,UAAUA,SACV,OAAQA,MAAkB,IAAI,KAAK,YACnC,CAACD,gBAAgBA,CAACC;AAEtB;AAEO,SAASH,mBAAmBA,CACjCX,aAAgD,EAChDG,YAA0B;IAE1B,MAAM,EAAEa,OAAO,EAAE,GAAGb;IAEpB,IAAIa,WAAW,MAAM;QACnB,MAAM,IAAIC,MAAM;IAClB;IAEA,IAAI,OAAOD,YAAY,UAAU;QAC/B,OAAOA;IACT;IAEA,IAAIH,gBAAgBA,CAACG,UAAU;QAC7B,OAAOA;IACT;IAEA,IAAID,mBAAmBA,CAACC,UAAU;QAChC,MAAME,eAAelB,eAAe,KAClCmB,CAAAA,QAASA,MAAM,IAAI,KAAKH,QAAQ,IAAI;QAGtC,IAAI,CAACE,cAAc;YACjB,MAAME,kBACJpB,eACI,IAAIqB,CAAAA,IAAKA,EAAE,IAAI,EAChB,OAAOC,SACP,KAAK,SAAS;YACnB,MAAM,IAAIL,MACR,CAAC,eAAe,EAAED,QAAQ,IAAI,CAAC,kCAAkC,EAAEI,iBAAiB;QAExF;QAEA,OAAOF;IACT;IAEA,MAAM,IAAID,MACR;AAEJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat/webview/styles.js","sources":["../../../src/webchat/webview/styles.ts"],"sourcesContent":["import styled from 'styled-components'\n\nimport { COLORS } from '../../constants'\n\nexport const StyledWebview = styled.div`\n position: absolute;\n display: flex;\n flex-direction: column;\n bottom: 0;\n width: 100%;\n height: 100%;\n background-color: ${COLORS.SOLID_WHITE};\n z-index: 2;\n border-radius: ${props => props.theme.style.borderRadius};\n\n @media (max-width: ${props => props.theme.mobileBreakpoint}px) {\n position: ${props => props.theme.mobileStyle.position};\n right: ${props => props.theme.mobileStyle.right};\n bottom: ${props => props.theme.mobileStyle.bottom};\n width: ${props => props.theme.mobileStyle.width};\n height: ${props => props.theme.mobileStyle.height};\n border-radius: ${props => props.theme.mobileStyle.borderRadius};\n font-size: ${props => props.theme.mobileStyle.fontSize};\n }\n`\n\nexport const StyledWebviewHeader = styled.div`\n flex: none;\n text-align: right;\n background-color: ${COLORS.WILD_SAND_WHITE};\n border-top: 1px solid ${COLORS.SOLID_BLACK_ALPHA_0_2};\n border-bottom: 1px solid ${COLORS.SOLID_BLACK_ALPHA_0_2};\n border-radius: ${props => props.theme.header?.style?.borderRadius};\n\n @media (max-width: ${props => props.theme.mobileBreakpoint}px) {\n border-radius: 0px;\n }\n`\nexport const StyledCloseHeader = styled.div`\n display: inline-block;\n padding: 8px 12px;\n cursor: pointer;\n`\n\nexport const StyledWebviewContent = styled.div`\n flex: 1;\n overflow: auto;\n`\n\nexport const FrameStyles = `\n border-style: none;\n width: 100%;\n height: 100%;\n`\n\nexport const StyledFrame = styled.iframe`\n ${FrameStyles}\n`\n\nexport const StyledFrameAsDiv = styled.div`\n ${FrameStyles}\n`\n"],"names":["styled","COLORS","StyledWebview","props","StyledWebviewHeader","StyledCloseHeader","StyledWebviewContent","FrameStyles","StyledFrame","StyledFrameAsDiv"],"mappings":";;;;;AAAsC;AAEE;AAEjC,MAAME,aAAaA,GAAGF,qBAAU,CAAC;;;;;;;oBAOpB,EAAEC,kBAAkB,CAAC;;iBAExB,EAAEE,CAAAA,QAASA,MAAM,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;;qBAEtC,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,gBAAgB,CAAC;cAC/C,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC;WAC/C,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;YACxC,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;WAC3C,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;YACxC,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;mBACnC,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC;eACpD,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC;;AAE3D,CAAC;AAEM,MAAMC,mBAAmBA,GAAGJ,qBAAU,CAAC;;;oBAG1B,EAAEC,sBAAsB,CAAC;wBACrB,EAAEA,4BAA4B,CAAC;2BAC5B,EAAEA,4BAA4B,CAAC;iBACzC,EAAEE,CAAAA,QAASA,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,aAAa;;qBAE/C,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,gBAAgB,CAAC;;;AAG7D,CAAC;AACM,MAAME,iBAAiBA,GAAGL,qBAAU,CAAC;;;;AAI5C,CAAC;AAEM,MAAMM,oBAAoBA,GAAGN,qBAAU,CAAC;;;AAG/C,CAAC;AAEM,MAAMO,WAAWA,GAAG,CAAC;;;;AAI5B,CAAC;AAEM,MAAMC,WAAWA,GAAGR,wBAAa,CAAC;EACvC,EAAEO,WAAWA,CAAC;AAChB,CAAC;AAEM,MAAME,gBAAgBA,GAAGT,qBAAU,CAAC;EACzC,EAAEO,WAAWA,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { type ServerConfig } from '@botonic/core';
|
|
2
|
+
import type React from 'react';
|
|
3
|
+
import type { BlockInputOption, WebchatSettingsProps } from './components/index.js';
|
|
4
|
+
import type { CloseWebviewOptions } from './contexts.js';
|
|
5
|
+
import { type ActionRequest, type Event, type EventArgs, type OnStateChangeArgs, type OnUserInputArgs, type PreviewUtils, type WebchatArgs, type WebchatLocaleContents, type WebchatMessage, type WebchatRef } from './index-types.js';
|
|
6
|
+
import type { CoverComponentOptions, PersistentMenuOptionsTheme, WebchatTheme } from './webchat/theme/types.js';
|
|
7
|
+
export declare class WebchatApp {
|
|
8
|
+
theme?: Partial<WebchatTheme>;
|
|
9
|
+
persistentMenu?: PersistentMenuOptionsTheme;
|
|
10
|
+
coverComponent?: CoverComponentOptions;
|
|
11
|
+
blockInputs?: BlockInputOption[];
|
|
12
|
+
enableEmojiPicker?: boolean;
|
|
13
|
+
enableAttachments?: boolean;
|
|
14
|
+
enableUserInput?: boolean;
|
|
15
|
+
enableAnimations?: boolean;
|
|
16
|
+
hostId?: string;
|
|
17
|
+
shadowDOM?: boolean | (() => boolean);
|
|
18
|
+
defaultDelay?: number;
|
|
19
|
+
defaultTyping?: number;
|
|
20
|
+
storage?: Storage | null;
|
|
21
|
+
storageKey: string;
|
|
22
|
+
onInit?: (app: WebchatApp, args: any) => void;
|
|
23
|
+
onOpen?: (app: WebchatApp, args: any) => void;
|
|
24
|
+
onClose?: (app: WebchatApp, args: any) => void;
|
|
25
|
+
onMessage?: (app: WebchatApp, message: WebchatMessage) => void;
|
|
26
|
+
onTrackEvent?: (request: ActionRequest, eventName: string, args?: EventArgs) => Promise<void>;
|
|
27
|
+
onConnectionChange?: (app: WebchatApp, isOnline: boolean) => void;
|
|
28
|
+
contentsByLocale?: Record<string, WebchatLocaleContents>;
|
|
29
|
+
appId?: string;
|
|
30
|
+
visibility?: boolean | (() => boolean) | 'dynamic';
|
|
31
|
+
server?: ServerConfig;
|
|
32
|
+
previewUtils?: PreviewUtils;
|
|
33
|
+
webchatRef: React.RefObject<WebchatRef | null>;
|
|
34
|
+
private reactRoot;
|
|
35
|
+
private host;
|
|
36
|
+
private hubtypeService;
|
|
37
|
+
constructor({ theme, persistentMenu, coverComponent, blockInputs, enableEmojiPicker, enableAttachments, enableUserInput, enableAnimations, hostId, shadowDOM, defaultDelay, defaultTyping, storage, storageKey, onInit, onOpen, onClose, onMessage, onTrackEvent, onConnectionChange, contentsByLocale, appId, visibility, server, previewUtils, }: WebchatArgs);
|
|
38
|
+
createRootElement(host: HTMLElement | null): void;
|
|
39
|
+
getReactMountNode(node?: (HTMLElement | null) | ShadowRoot): Element | DocumentFragment;
|
|
40
|
+
onInitWebchat(...args: [any]): void;
|
|
41
|
+
onOpenWebchat(...args: [any]): void;
|
|
42
|
+
onCloseWebchat(...args: [any]): void;
|
|
43
|
+
onUserInput({ user, input }: OnUserInputArgs): Promise<void>;
|
|
44
|
+
onTrackEventWebchat(request: ActionRequest, eventName: string, args?: EventArgs): Promise<void>;
|
|
45
|
+
onConnectionRegained(): Promise<void>;
|
|
46
|
+
onStateChange(args: OnStateChangeArgs): void;
|
|
47
|
+
onServiceEvent(event: Event): void;
|
|
48
|
+
updateUser(user: any): void;
|
|
49
|
+
setSystemLocale(locale: string): void;
|
|
50
|
+
setUserLocale(locale: string): void;
|
|
51
|
+
setUserCountry(country: string): void;
|
|
52
|
+
addBotMessage(message: any): void;
|
|
53
|
+
addSystemMessage(message: any): void;
|
|
54
|
+
addBotText(text: string): void;
|
|
55
|
+
addUserMessage(message: any): void;
|
|
56
|
+
addUserText(text: string): void;
|
|
57
|
+
addUserPayload(payload: string): void;
|
|
58
|
+
setTyping(typing: boolean): void;
|
|
59
|
+
open(): void;
|
|
60
|
+
close(): void;
|
|
61
|
+
closeWebview(options?: CloseWebviewOptions): Promise<void>;
|
|
62
|
+
toggle(): void;
|
|
63
|
+
openCoverComponent(): void;
|
|
64
|
+
closeCoverComponent(): void;
|
|
65
|
+
renderCustomComponent(_customComponent: any): void;
|
|
66
|
+
unmountCustomComponent(): void;
|
|
67
|
+
toggleCoverComponent(): void;
|
|
68
|
+
getMessages(): {
|
|
69
|
+
id: string;
|
|
70
|
+
ack: number;
|
|
71
|
+
unsentInput: import("@botonic/core").Input;
|
|
72
|
+
}[] | undefined;
|
|
73
|
+
clearMessages(): void;
|
|
74
|
+
getVisibility(): Promise<boolean>;
|
|
75
|
+
getLastMessageUpdate(): string | undefined;
|
|
76
|
+
updateMessageInfo(msgId: string, messageInfo: any): void | undefined;
|
|
77
|
+
updateWebchatSettings(settings: WebchatSettingsProps): void | undefined;
|
|
78
|
+
createInitialTheme(optionsAtRuntime?: WebchatArgs): WebchatTheme & Partial<WebchatTheme>;
|
|
79
|
+
createInitialThemeUserInput(theme: WebchatTheme, optionsAtRuntime?: WebchatArgs): {
|
|
80
|
+
attachments?: {
|
|
81
|
+
enable?: boolean;
|
|
82
|
+
custom?: React.ComponentType;
|
|
83
|
+
};
|
|
84
|
+
blockInputs?: BlockInputOption[];
|
|
85
|
+
box?: {
|
|
86
|
+
placeholder: string;
|
|
87
|
+
style?: any;
|
|
88
|
+
};
|
|
89
|
+
emojiPicker?: {
|
|
90
|
+
enable?: boolean;
|
|
91
|
+
custom?: React.ComponentType;
|
|
92
|
+
};
|
|
93
|
+
menu?: {
|
|
94
|
+
darkBackground?: boolean;
|
|
95
|
+
custom?: React.ComponentType<import("./webchat/theme/types.js").PersistentMenuOptionsProps>;
|
|
96
|
+
};
|
|
97
|
+
menuButton?: {
|
|
98
|
+
custom?: React.ComponentType;
|
|
99
|
+
};
|
|
100
|
+
persistentMenu?: PersistentMenuOptionsTheme;
|
|
101
|
+
sendButton?: {
|
|
102
|
+
enable?: boolean;
|
|
103
|
+
custom?: React.ComponentType;
|
|
104
|
+
};
|
|
105
|
+
enable?: boolean;
|
|
106
|
+
style?: any;
|
|
107
|
+
};
|
|
108
|
+
getComponent(host: HTMLDivElement, optionsAtRuntime?: WebchatArgs): React.JSX.Element;
|
|
109
|
+
isWebchatVisible(appId: string): Promise<boolean>;
|
|
110
|
+
isOnline(): boolean | undefined;
|
|
111
|
+
resolveWebchatVisibility(optionsAtRuntime?: WebchatArgs): Promise<boolean>;
|
|
112
|
+
destroy(): void;
|
|
113
|
+
render(dest: HTMLDivElement, optionsAtRuntime?: WebchatArgs): Promise<void>;
|
|
114
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webchat-app.js","sources":["../src/webchat-app.tsx"],"sourcesContent":["import { HubtypeService, INPUT, type ServerConfig } from '@botonic/core'\nimport merge from 'lodash.merge'\nimport type React from 'react'\nimport { createRef } from 'react'\nimport { createRoot, type Root } from 'react-dom/client'\n\nimport type { BlockInputOption, WebchatSettingsProps } from './components'\nimport { WEBCHAT } from './constants'\nimport type { CloseWebviewOptions } from './contexts'\nimport {\n type ActionRequest,\n type Event,\n type EventArgs,\n type OnStateChangeArgs,\n type OnUserInputArgs,\n type PreviewUtils,\n SENDERS,\n Typing,\n type WebchatArgs,\n type WebchatLocaleContents,\n type WebchatMessage,\n type WebchatRef,\n} from './index-types'\nimport { msgToBotonic } from './msg-to-botonic'\nimport { isShadowDOMSupported, onDOMLoaded } from './util/dom'\nimport { defaultTheme } from './webchat/theme/default-theme'\nimport type {\n CoverComponentOptions,\n PersistentMenuOptionsTheme,\n WebchatTheme,\n} from './webchat/theme/types'\nimport { Webchat } from './webchat/webchat'\n\nexport class WebchatApp {\n public theme?: Partial<WebchatTheme>\n public persistentMenu?: PersistentMenuOptionsTheme\n public coverComponent?: CoverComponentOptions\n public blockInputs?: BlockInputOption[]\n public enableEmojiPicker?: boolean\n public enableAttachments?: boolean\n public enableUserInput?: boolean\n public enableAnimations?: boolean\n public hostId?: string\n public shadowDOM?: boolean | (() => boolean)\n public defaultDelay?: number\n public defaultTyping?: number\n public storage?: Storage | null\n public storageKey: string\n public onInit?: (app: WebchatApp, args: any) => void\n public onOpen?: (app: WebchatApp, args: any) => void\n public onClose?: (app: WebchatApp, args: any) => void\n public onMessage?: (app: WebchatApp, message: WebchatMessage) => void\n public onTrackEvent?: (\n request: ActionRequest,\n eventName: string,\n args?: EventArgs\n ) => Promise<void>\n public onConnectionChange?: (app: WebchatApp, isOnline: boolean) => void\n public contentsByLocale?: Record<string, WebchatLocaleContents>\n public appId?: string\n public visibility?: boolean | (() => boolean) | 'dynamic'\n public server?: ServerConfig\n public previewUtils?: PreviewUtils\n public webchatRef: React.RefObject<WebchatRef | null>\n\n private reactRoot: Root | null = null\n private host: (HTMLElement | null) | ShadowRoot = null\n private hubtypeService: HubtypeService\n\n constructor({\n theme,\n persistentMenu,\n coverComponent,\n blockInputs,\n enableEmojiPicker,\n enableAttachments,\n enableUserInput,\n enableAnimations,\n hostId = WEBCHAT.DEFAULTS.HOST_ID,\n shadowDOM = false,\n defaultDelay,\n defaultTyping,\n storage,\n storageKey,\n onInit,\n onOpen,\n onClose,\n onMessage,\n onTrackEvent,\n onConnectionChange,\n contentsByLocale,\n appId,\n visibility,\n server,\n previewUtils,\n }: WebchatArgs) {\n this.theme = theme\n this.persistentMenu = persistentMenu\n this.coverComponent = coverComponent\n this.blockInputs = blockInputs\n this.enableEmojiPicker = enableEmojiPicker\n this.enableAttachments = enableAttachments\n this.enableUserInput = enableUserInput\n this.enableAnimations = enableAnimations\n\n this.shadowDOM = Boolean(\n typeof shadowDOM === 'function' ? shadowDOM() : shadowDOM\n )\n if (this.shadowDOM && !isShadowDOMSupported()) {\n console.warn('[botonic] ShadowDOM not supported on this browser')\n this.shadowDOM = false\n }\n\n this.hostId = hostId || WEBCHAT.DEFAULTS.HOST_ID\n this.defaultDelay = defaultDelay\n this.defaultTyping = defaultTyping\n this.storage = storage === undefined ? localStorage : storage\n this.storageKey = storageKey || WEBCHAT.DEFAULTS.STORAGE_KEY\n this.onInit = onInit\n this.onOpen = onOpen\n this.onClose = onClose\n this.onMessage = onMessage\n this.onTrackEvent = onTrackEvent\n this.onConnectionChange = onConnectionChange\n this.contentsByLocale = contentsByLocale\n this.visibility = visibility\n this.server = server\n this.previewUtils = previewUtils\n this.webchatRef = createRef<WebchatRef>()\n this.appId = appId\n\n this.host = null\n this.reactRoot = null\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: createRootElement is a complex function that creates a root element for the webchat\n createRootElement(host: HTMLElement | null) {\n // Create root element <div id='root'> if not exists\n // Create shadowDOM to root element if needed\n if (host) {\n if (host.id && this.hostId) {\n if (host.id !== this.hostId) {\n console.warn(\n `[botonic] Host ID \"${host.id}\" don't match 'hostId' option: ${this.hostId}. Using value: ${host.id}.`\n )\n this.hostId = host.id\n }\n } else if (host.id) {\n this.hostId = host.id\n } else if (this.hostId) {\n host.id = this.hostId\n }\n } else {\n host = this.hostId ? document.getElementById(this.hostId) : null\n }\n\n if (!host) {\n host = document.createElement('div')\n host.id = this.hostId!\n if (document.body.firstChild) {\n document.body.insertBefore(host, document.body.firstChild)\n } else {\n document.body.appendChild(host)\n }\n }\n this.host = this.shadowDOM ? host.attachShadow({ mode: 'open' }) : host\n }\n\n getReactMountNode(\n node?: (HTMLElement | null) | ShadowRoot\n ): Element | DocumentFragment {\n if (!node) {\n node = this.host\n }\n\n if (node === null) {\n throw new Error('Host element not found')\n }\n\n // TODO: Review logic of ShadowRoot\n if ('shadowRoot' in node && node.shadowRoot !== null) {\n return node.shadowRoot\n }\n\n return node\n }\n\n onInitWebchat(...args: [any]) {\n this.onInit?.(this, ...args)\n }\n\n onOpenWebchat(...args: [any]) {\n this.onOpen?.(this, ...args)\n }\n\n onCloseWebchat(...args: [any]) {\n this.onClose?.(this, ...args)\n }\n\n async onUserInput({ user, input }: OnUserInputArgs): Promise<void> {\n if (!user) {\n return\n }\n\n this.onMessage?.(this, {\n ...input,\n sentBy: SENDERS.user,\n isUnread: false,\n } as unknown as WebchatMessage)\n this.hubtypeService.postMessage(user, {\n ...input,\n // TODO: Review if this is correct add sent_by or this is added in backend\n // sent_by: 'message_sent_by_user',\n })\n return\n }\n\n async onTrackEventWebchat(\n request: ActionRequest,\n eventName: string,\n args?: EventArgs\n ): Promise<void> {\n if (this.onTrackEvent) {\n await this.onTrackEvent(request, eventName, args)\n }\n }\n\n async onConnectionRegained() {\n return this.hubtypeService.onConnectionRegained()\n }\n\n onStateChange(args: OnStateChangeArgs) {\n const { user, messagesJSON } = args\n const lastMessage = messagesJSON[messagesJSON.length - 1]\n const lastMessageId = lastMessage?.id\n const lastMessageUpdateDate = this.getLastMessageUpdate()\n\n if (this.hubtypeService) {\n this.hubtypeService.lastMessageId = lastMessageId\n this.hubtypeService.lastMessageUpdateDate = lastMessageUpdateDate\n }\n\n if (!this.hubtypeService) {\n this.hubtypeService = new HubtypeService({\n appId: this.appId!,\n user,\n lastMessageId,\n lastMessageUpdateDate,\n onEvent: (event: any) => this.onServiceEvent(event),\n unsentInputs: () =>\n this.webchatRef.current\n ?.getMessages()\n .filter(msg => msg.ack === 0 && msg.unsentInput) || [],\n server: this.server,\n })\n }\n }\n\n onServiceEvent(event: Event) {\n if (event.action === 'connectionChange') {\n this.onConnectionChange?.(this, event.online)\n this.webchatRef.current?.setOnline(event.online)\n } else if (event.action === 'update_message_info' && event.message?.id) {\n this.updateMessageInfo(event.message.id, event.message)\n } else if (event.message?.type === 'update_webchat_settings') {\n this.updateWebchatSettings(event.message.data)\n } else if (event.message?.type === 'sender_action') {\n this.setTyping(event.message.data === Typing.On)\n } else {\n const isSystemMessage = (event.message as any)?.sent_by === SENDERS.system\n this.onMessage?.(this, {\n sentBy: isSystemMessage ? SENDERS.system : SENDERS.bot,\n ...event.message,\n } as unknown as WebchatMessage)\n\n if (isSystemMessage) {\n this.addSystemMessage(event.message)\n } else {\n this.addBotMessage(event.message)\n }\n }\n }\n\n updateUser(user: any) {\n this.webchatRef.current?.updateUser(user)\n }\n\n setSystemLocale(locale: string) {\n this.webchatRef.current?.updateUser({ system_locale: locale })\n }\n\n setUserLocale(locale: string) {\n this.webchatRef.current?.updateUser({ locale })\n }\n\n setUserCountry(country: string) {\n this.webchatRef.current?.updateUser({ country })\n }\n\n addBotMessage(message: any) {\n message.ack = 0\n message.isUnread = true\n message.sentBy = message.sent_by?.split('message_sent_by_')[1]\n delete message.sent_by\n const response = msgToBotonic(message, this.theme?.message?.customTypes)\n\n this.webchatRef.current?.addBotResponse({\n response,\n })\n }\n\n addSystemMessage(message: any) {\n message.ack = 0\n message.isUnread = true\n message.sentBy = SENDERS.system\n delete message.sent_by\n const response = msgToBotonic(message, this.theme?.message?.customTypes)\n\n this.webchatRef.current?.addSystemResponse({\n response,\n })\n }\n\n addBotText(text: string) {\n this.addBotMessage({ type: INPUT.TEXT, data: text })\n }\n\n addUserMessage(message: any) {\n this.webchatRef.current?.addUserMessage(message)\n }\n\n addUserText(text: string) {\n this.addUserMessage({ type: INPUT.TEXT, data: text })\n }\n\n addUserPayload(payload: string) {\n this.addUserMessage({ type: INPUT.POSTBACK, payload })\n }\n\n setTyping(typing: boolean) {\n this.webchatRef.current?.setTyping(typing)\n }\n\n open() {\n this.webchatRef.current?.openWebchat()\n }\n\n close() {\n this.webchatRef.current?.closeWebchat()\n }\n\n async closeWebview(options?: CloseWebviewOptions) {\n await this.webchatRef.current?.closeWebview(options)\n }\n\n // TODO: Remove this function because we have open and close functions\n toggle() {\n this.webchatRef.current?.toggleWebchat()\n }\n\n openCoverComponent() {\n this.webchatRef.current?.openCoverComponent()\n }\n\n closeCoverComponent() {\n this.webchatRef.current?.closeCoverComponent()\n }\n\n renderCustomComponent(_customComponent: any) {\n this.webchatRef.current?.renderCustomComponent(_customComponent)\n }\n\n unmountCustomComponent() {\n this.webchatRef.current?.unmountCustomComponent()\n }\n\n // TODO: Remove this function because we have openCoverComponent and closeCoverComponent functions\n toggleCoverComponent() {\n this.webchatRef.current?.toggleCoverComponent()\n }\n\n getMessages() {\n return this.webchatRef.current?.getMessages()\n }\n\n clearMessages() {\n this.webchatRef.current?.clearMessages()\n }\n\n async getVisibility() {\n return this.resolveWebchatVisibility({\n appId: this.appId,\n visibility: this.visibility,\n })\n }\n\n getLastMessageUpdate() {\n return this.webchatRef.current?.getLastMessageUpdate()\n }\n\n updateMessageInfo(msgId: string, messageInfo: any) {\n return this.webchatRef.current?.updateMessageInfo(msgId, messageInfo)\n }\n\n updateWebchatSettings(settings: WebchatSettingsProps) {\n return this.webchatRef.current?.updateWebchatSettings(settings)\n }\n\n createInitialTheme(optionsAtRuntime: WebchatArgs = {}) {\n const theme = merge(defaultTheme, this.theme, optionsAtRuntime.theme)\n\n if (theme.animations === undefined) {\n theme.animations = {}\n }\n\n theme.animations.enable =\n theme.animations.enable ??\n optionsAtRuntime.enableAnimations ??\n this.enableAnimations\n\n theme.coverComponent =\n theme.coverComponent ??\n optionsAtRuntime.coverComponent ??\n this.coverComponent\n\n theme.userInput = this.createInitialThemeUserInput(theme, optionsAtRuntime)\n\n return theme\n }\n\n createInitialThemeUserInput(\n theme: WebchatTheme,\n optionsAtRuntime: WebchatArgs = {}\n ) {\n if (!theme.userInput) {\n theme.userInput = {}\n }\n\n // Set main userInput properties\n theme.userInput = {\n ...theme.userInput,\n enable:\n theme.userInput.enable ??\n optionsAtRuntime.enableUserInput ??\n this.enableUserInput,\n persistentMenu:\n theme.userInput.persistentMenu ??\n optionsAtRuntime.persistentMenu ??\n this.persistentMenu,\n blockInputs:\n theme.userInput.blockInputs ??\n optionsAtRuntime.blockInputs ??\n this.blockInputs,\n }\n\n // Set emoji picker properties\n theme.userInput.emojiPicker = {\n ...(theme.userInput.emojiPicker || {}),\n enable:\n theme.userInput.emojiPicker?.enable ??\n optionsAtRuntime.enableEmojiPicker ??\n this.enableEmojiPicker,\n }\n\n // Set attachments properties\n theme.userInput.attachments = {\n ...(theme.userInput.attachments || {}),\n enable:\n theme.userInput.attachments?.enable ??\n optionsAtRuntime.enableAttachments ??\n this.enableAttachments,\n }\n\n return theme.userInput\n }\n\n getComponent(host: HTMLDivElement, optionsAtRuntime: WebchatArgs = {}) {\n let {\n theme = {},\n defaultDelay,\n defaultTyping,\n storage,\n storageKey,\n onInit,\n onOpen,\n onClose,\n onMessage,\n onConnectionChange,\n contentsByLocale,\n onTrackEvent,\n appId,\n visibility,\n server,\n hostId,\n previewUtils,\n ...webchatOptions\n } = optionsAtRuntime\n theme = this.createInitialTheme(optionsAtRuntime)\n defaultDelay = defaultDelay || this.defaultDelay\n defaultTyping = defaultTyping || this.defaultTyping\n server = server || this.server\n this.storage = storage || this.storage\n this.storageKey = storageKey || this.storageKey\n this.onInit = onInit || this.onInit\n this.onOpen = onOpen || this.onOpen\n this.onClose = onClose || this.onClose\n this.onMessage = onMessage || this.onMessage\n this.onTrackEvent = onTrackEvent || this.onTrackEvent\n this.onConnectionChange = onConnectionChange || this.onConnectionChange\n this.contentsByLocale = contentsByLocale || this.contentsByLocale\n this.visibility = visibility || this.visibility\n this.appId = appId || this.appId\n this.hostId = hostId || this.hostId\n this.previewUtils = previewUtils || this.previewUtils\n this.createRootElement(host)\n\n return (\n <Webchat\n {...webchatOptions}\n ref={this.webchatRef}\n host={this.host}\n shadowDOM={this.shadowDOM}\n theme={theme as WebchatTheme}\n storage={this.storage}\n storageKey={this.storageKey}\n defaultDelay={defaultDelay}\n defaultTyping={defaultTyping}\n previewUtils={this.previewUtils}\n onInit={(...args: [any]) => this.onInitWebchat(...args)}\n onOpen={(...args: [any]) => this.onOpenWebchat(...args)}\n onClose={(...args: [any]) => this.onCloseWebchat(...args)}\n onUserInput={(...args: [any]) => this.onUserInput(...args)}\n onStateChange={(args: OnStateChangeArgs) => {\n this.onStateChange(args)\n }}\n onTrackEvent={(\n request: ActionRequest,\n eventName: string,\n args?: EventArgs\n ) => this.onTrackEventWebchat(request, eventName, args)}\n server={server}\n contentsByLocale={this.contentsByLocale}\n />\n )\n }\n\n async isWebchatVisible(appId: string): Promise<boolean> {\n try {\n const { status } = await HubtypeService.getWebchatVisibility(appId)\n return status === 200\n } catch (_e) {\n return false\n }\n }\n\n isOnline() {\n return this.webchatRef.current?.isOnline()\n }\n\n async resolveWebchatVisibility(\n optionsAtRuntime?: WebchatArgs\n ): Promise<boolean> {\n if (!optionsAtRuntime) {\n // If optionsAtRuntime is not provided, always render the webchat\n return true\n }\n\n let { appId, visibility } = optionsAtRuntime\n visibility = visibility || this.visibility\n\n if (visibility === undefined || visibility === true) {\n return true\n }\n\n if (typeof visibility === 'function' && visibility()) {\n return true\n }\n\n if (\n appId &&\n visibility === 'dynamic' &&\n (await this.isWebchatVisible(appId))\n ) {\n return true\n }\n\n return false\n }\n\n destroy() {\n if (this.hubtypeService) {\n this.hubtypeService.destroyPusher()\n }\n this.reactRoot?.unmount()\n if (this.storage) {\n this.storage.removeItem(this.storageKey)\n }\n }\n\n async render(dest: HTMLDivElement, optionsAtRuntime?: WebchatArgs) {\n onDOMLoaded(async () => {\n const isVisible = await this.resolveWebchatVisibility(optionsAtRuntime)\n if (isVisible) {\n const webchatComponent = this.getComponent(dest, optionsAtRuntime)\n const container = this.getReactMountNode(dest)\n this.reactRoot = createRoot(container)\n this.reactRoot.render(webchatComponent)\n }\n })\n }\n}\n"],"names":["HubtypeService","INPUT","merge","createRef","createRoot","WEBCHAT","SENDERS","Typing","msgToBotonic","isShadowDOMSupported","onDOMLoaded","defaultTheme","Webchat","WebchatApp","host","console","document","node","Error","args","user","input","request","eventName","messagesJSON","lastMessage","lastMessageId","lastMessageUpdateDate","event","msg","isSystemMessage","locale","country","message","response","text","payload","typing","options","_customComponent","msgId","messageInfo","settings","optionsAtRuntime","theme","undefined","defaultDelay","defaultTyping","storage","storageKey","onInit","onOpen","onClose","onMessage","onConnectionChange","contentsByLocale","onTrackEvent","appId","visibility","server","hostId","previewUtils","webchatOptions","status","_e","dest","isVisible","webchatComponent","container","persistentMenu","coverComponent","blockInputs","enableEmojiPicker","enableAttachments","enableUserInput","enableAnimations","shadowDOM","Boolean","localStorage"],"mappings":"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"}
|