@botonic/react 0.57.0-rslib-esm.0 → 0.57.0-rslib-esm.2
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.d.ts +7 -0
- package/lib/components/multichannel/index.js +21 -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 +177 -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 -14
- package/src/components/multichannel/index.ts +7 -6
- package/src/webchat/message-list/index.tsx +1 -0
- 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.d.ts +0 -11
- package/lib/esm/components/multichannel/index.js +0 -25
- 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 +0 -176
- 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/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/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
package/lib/app.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.js","sources":["../src/app.jsx"],"sourcesContent":["export class App {\n constructor() {\n throw 'This setup is deprecated in Botonic versions >=0.9.0. Please read the migration guide at: https://github.com/hubtype/botonic/tree/master/packages/botonic-react/MIGRATION_GUIDE.md'\n }\n}\n"],"names":["App"],"mappings":"AAAO,MAAMA,GAAGA;IACd,aAAc;QACZ,MAAM;IACR;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"botonic-tester.js","sources":["../src/botonic-tester.jsx"],"sourcesContent":["import { INPUT } from '@botonic/core'\nimport ReactDOMServer from 'react-dom/server'\n\nimport { Reply } from './components/reply'\nimport { Text } from './components/text'\n\nfunction decodeHTMLEntities(text) {\n const entities = {\n '"': '\"',\n '&': '&',\n '<': '<',\n '>': '>',\n ''': \"'\",\n }\n\n return text.replace(\n /"|&|<|>|'/g,\n match => entities[match]\n )\n}\n\nexport class BotonicInputTester {\n constructor(bot) {\n this.bot = bot\n }\n\n async text(inp, session = { user: { id: '123' } }, lastRoutePath = '') {\n const res = await this.bot.input({\n input: { type: INPUT.TEXT, data: inp },\n session: session,\n lastRoutePath: lastRoutePath,\n })\n return decodeHTMLEntities(res.response)\n }\n\n async payload(inp, session = { user: { id: '123' } }, lastRoutePath = '') {\n const res = await this.bot.input({\n input: { type: INPUT.POSTBACK, payload: inp },\n session: session,\n lastRoutePath: lastRoutePath,\n })\n return decodeHTMLEntities(res.response)\n }\n\n async path(inp, session = { user: { id: '123' } }, lastRoutePath = '') {\n const res = await this.bot.input({\n input: { type: INPUT.TEXT, payload: `__PATH_PAYLOAD__${inp}` },\n session: session,\n lastRoutePath: lastRoutePath,\n })\n return decodeHTMLEntities(res.response)\n }\n}\n\nexport class BotonicOutputTester {\n constructor(bot) {\n this.bot = bot\n }\n\n text(out, replies = null) {\n return decodeHTMLEntities(\n ReactDOMServer.renderToStaticMarkup(\n !replies ? (\n <Text>{out}</Text>\n ) : (\n <Text>\n {out}\n {replies}\n </Text>\n )\n )\n )\n }\n\n reply({ text, payload = null, path = null }) {\n if (payload) {\n return decodeHTMLEntities(\n ReactDOMServer.renderToStaticMarkup(\n <Reply payload={payload}>{text}</Reply>\n )\n )\n }\n if (path) {\n return decodeHTMLEntities(\n ReactDOMServer.renderToStaticMarkup(<Reply path={path}>{text}</Reply>)\n )\n }\n throw new Error('reply should contain a payload or a path')\n }\n\n replies(...args) {\n const replies = []\n for (let i = 0; i < args.length; i++) {\n const r = args[i]\n replies.push(\n this.reply({ text: r.text, payload: r.payload, path: r.path })\n )\n }\n return replies\n }\n}\n"],"names":["INPUT","ReactDOMServer","Reply","Text","decodeHTMLEntities","text","entities","match","BotonicInputTester","inp","session","lastRoutePath","res","bot","BotonicOutputTester","out","replies","payload","path","Error","args","i","r"],"mappings":";;;;;;;;;;;;AAAqC;AACQ;AAEH;AACF;AAExC,SAASI,kBAAkBA,CAACC,IAAI;IAC9B,MAAMC,WAAW;QACf,UAAU;QACV,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,UAAU;IACZ;IAEA,OAAOD,KAAK,OAAO,CACjB,kCACAE,CAAAA,QAASD,QAAQ,CAACC,MAAM;AAE5B;AAEO,MAAMC,kBAAkBA;IAK7B,MAAM,KAAKC,GAAG,EAAEC,UAAU;QAAE,MAAM;YAAE,IAAI;QAAM;IAAE,CAAC,EAAEC,gBAAgB,EAAE,EAAE;QACrE,MAAMC,MAAM,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAC/B,OAAO;gBAAE,MAAMZ,UAAU;gBAAE,MAAMS;YAAI;YACrC,SAASC;YACT,eAAeC;QACjB;QACA,OAAOP,kBAAkBA,CAACQ,IAAI,QAAQ;IACxC;IAEA,MAAM,QAAQH,GAAG,EAAEC,UAAU;QAAE,MAAM;YAAE,IAAI;QAAM;IAAE,CAAC,EAAEC,gBAAgB,EAAE,EAAE;QACxE,MAAMC,MAAM,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAC/B,OAAO;gBAAE,MAAMZ,cAAc;gBAAE,SAASS;YAAI;YAC5C,SAASC;YACT,eAAeC;QACjB;QACA,OAAOP,kBAAkBA,CAACQ,IAAI,QAAQ;IACxC;IAEA,MAAM,KAAKH,GAAG,EAAEC,UAAU;QAAE,MAAM;YAAE,IAAI;QAAM;IAAE,CAAC,EAAEC,gBAAgB,EAAE,EAAE;QACrE,MAAMC,MAAM,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAC/B,OAAO;gBAAE,MAAMZ,UAAU;gBAAE,SAAS,CAAC,gBAAgB,EAAES,KAAK;YAAC;YAC7D,SAASC;YACT,eAAeC;QACjB;QACA,OAAOP,kBAAkBA,CAACQ,IAAI,QAAQ;IACxC;IA7BA,YAAYC,GAAG,CAAE;QACf,IAAI,CAAC,GAAG,GAAGA;IACb;AA4BF;AAEO,MAAMC,mBAAmBA;IAK9B,KAAKC,GAAG,EAAEC,UAAU,IAAI,EAAE;QACxB,OAAOZ,kBAAkBA,CACvBH,2BAAmC,CACjC,CAACe,wBACC,IAACb,IAAIA;sBAAEY;2BAEP,KAACZ,IAAIA;;gBACFY;gBACAC;;;IAKX;IAEA,MAAM,EAAEX,IAAI,EAAEY,UAAU,IAAI,EAAEC,OAAO,IAAI,EAAE,EAAE;QAC3C,IAAID,SAAS;YACX,OAAOb,kBAAkBA,CACvBH,2BAAmC,eACjC,IAACC,KAAKA;gBAAC,SAASe;0BAAUZ;;QAGhC;QACA,IAAIa,MAAM;YACR,OAAOd,kBAAkBA,CACvBH,2BAAmC,eAAC,IAACC,KAAKA;gBAAC,MAAMgB;0BAAOb;;QAE5D;QACA,MAAM,IAAIc,MAAM;IAClB;IAEA,QAAQ,GAAGC,IAAI,EAAE;QACf,MAAMJ,UAAU,EAAE;QAClB,IAAK,IAAIK,IAAI,GAAGA,IAAID,KAAK,MAAM,EAAEC,IAAK;YACpC,MAAMC,IAAIF,IAAI,CAACC,EAAE;YACjBL,QAAQ,IAAI,CACV,IAAI,CAAC,KAAK,CAAC;gBAAE,MAAMM,EAAE,IAAI;gBAAE,SAASA,EAAE,OAAO;gBAAE,MAAMA,EAAE,IAAI;YAAC;QAEhE;QACA,OAAON;IACT;IA5CA,YAAYH,GAAG,CAAE;QACf,IAAI,CAAC,GAAG,GAAGA;IACb;AA2CF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/audio.js","sources":["../../src/components/audio.tsx"],"sourcesContent":["import { INPUT, isBrowser } from '@botonic/core'\nimport styled from 'styled-components'\n\nimport { ROLES } from '../constants'\nimport { staticAsset } from '../util/environment'\nimport type { AudioProps } from './index-types'\nimport { Message } from './message'\n\nconst StyledAudio = styled.audio`\n max-width: 100%;\n`\n\nconst serialize = (audioProps: { src: string }) => {\n return { audio: audioProps.src }\n}\n\nexport const Audio = (props: AudioProps) => {\n props = { ...props, src: staticAsset(props.src) }\n let content = props.children\n if (isBrowser()) {\n content = (\n <StyledAudio id='myAudio' controls>\n <source src={props.src} type='audio/mpeg' />\n Your browser does not support this audio format.\n </StyledAudio>\n )\n }\n return (\n <Message\n role={ROLES.AUDIO_MESSAGE}\n json={serialize(props)}\n {...props}\n type={INPUT.AUDIO}\n >\n {content}\n </Message>\n )\n}\n\nAudio.serialize = serialize\n"],"names":["INPUT","isBrowser","styled","ROLES","staticAsset","Message","StyledAudio","serialize","audioProps","Audio","props","content"],"mappings":";;;;;;;;;;;;;;AAAgD;AACV;AAEF;AACa;AAEd;AAEnC,MAAMM,WAAWA,GAAGJ,uBAAY,CAAC;;AAEjC,CAAC;AAED,MAAMK,SAASA,GAAG,CAACC;IACjB,OAAO;QAAE,OAAOA,WAAW,GAAG;IAAC;AACjC;AAEO,MAAMC,KAAKA,GAAG,CAACC;IACpBA,QAAQ;QAAE,GAAGA,KAAK;QAAE,KAAKN,WAAWA,CAACM,MAAM,GAAG;IAAE;IAChD,IAAIC,UAAUD,MAAM,QAAQ;IAC5B,IAAIT,SAASA,IAAI;QACfU,wBACE,KAACL,WAAWA;YAAC,IAAG;YAAU,QAAQ;;8BAChC,IAAC;oBAAO,KAAKI,MAAM,GAAG;oBAAE,MAAK;;gBAAe;;;IAIlD;IACA,qBACE,IAACL,OAAOA;QACN,MAAMF,mBAAmB;QACzB,MAAMI,SAASA,CAACG;QACf,GAAGA,KAAK;QACT,MAAMV,WAAW;kBAEhBW;;AAGP,EAAC;AAEDF,KAAKA,CAAC,SAAS,GAAGF,SAASA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/button/index.js","sources":["../../../src/components/button/index.tsx"],"sourcesContent":["import { INPUT } from '@botonic/core'\nimport { useContext } from 'react'\n\nimport { isInWebviewApp, resolveImage } from '../../util/environment'\nimport { renderComponent } from '../../util/react'\nimport { generateWebviewUrlWithParams } from '../../util/webviews'\nimport { WebchatContext } from '../../webchat/context'\nimport { ButtonsDisabler } from '../buttons-disabler'\nimport { COMPONENT_DISPLAY_NAMES } from '../constants'\nimport type { ButtonProps } from '../index-types'\nimport { StyledButton, StyledUrlImage } from './styles'\n\nexport const Button = (props: ButtonProps) => {\n const { webchatState, openWebview, sendPayload, sendInput, updateMessage } =\n useContext(WebchatContext)\n\n const autoDisable =\n webchatState.theme?.button?.autodisable || props.autodisable\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: handleClick is a complex function\n const handleClick = event => {\n event.preventDefault()\n\n const type = webchatState.theme?.button?.messageType\n\n if (props.webview) {\n openWebview(props.webview, props.params)\n } else if (props.path) {\n type === INPUT.POSTBACK\n ? sendPayload(`__PATH_PAYLOAD__${props.path}`)\n : sendInput({\n type: INPUT.TEXT,\n data: String(props.children),\n text: String(props.children),\n payload: `__PATH_PAYLOAD__${props.path}`,\n })\n } else if (props.payload) {\n type === INPUT.POSTBACK\n ? sendPayload(props.payload)\n : sendInput({\n type: INPUT.TEXT,\n data: String(props.children),\n text: String(props.children),\n payload: props.payload,\n })\n } else if (props.url) {\n const defaultTarget = props.target || '_blank'\n const target = isInWebviewApp() ? '_self' : defaultTarget\n window.open(props.url, target)\n }\n\n if (props.onClick) {\n props.onClick()\n }\n\n if (props.setDisabled) {\n props.setDisabled(true)\n const messageToUpdate = webchatState.messagesJSON.filter(\n m => m.id === props.parentId\n )[0]\n const updatedMsg = ButtonsDisabler.getUpdatedMessage(messageToUpdate)\n updateMessage(updatedMsg)\n }\n }\n\n const getClassName = (isCustom = false) => {\n if (isCustom) {\n return 'button-custom'\n }\n if (props.payload) {\n return 'button-payload'\n }\n if (props.url) {\n return 'button-url'\n }\n if (props.webview) {\n return 'button-webview'\n }\n if (props.path) {\n return 'button-path'\n }\n return ''\n }\n\n const renderBrowser = () => {\n const themeButton = webchatState.theme.button\n const urlIconEnabledProp = themeButton?.urlIcon?.enable\n const urlIconImage = themeButton?.urlIcon?.image\n const urlIcon = urlIconEnabledProp ? urlIconImage : undefined\n\n const CustomButton = themeButton?.custom\n\n if (CustomButton) {\n return (\n <div className={getClassName(true)} onClick={e => handleClick(e)}>\n <CustomButton>{props.children}</CustomButton>\n </div>\n )\n }\n\n return (\n <StyledButton\n className={getClassName()}\n onClick={e => handleClick(e)}\n disabled={props.disabled && autoDisable}\n >\n {props.children}\n {props.url && urlIcon && (\n <StyledUrlImage\n className='botonic-url-icon'\n src={resolveImage(urlIcon)}\n />\n )}\n </StyledButton>\n )\n }\n\n const renderNode = () => {\n const disabledProps = ButtonsDisabler.constructNodeProps({\n disabled: props.disabled,\n disabledstyle: props.disabledstyle,\n autodisable: props.autodisable,\n })\n if (props.webview) {\n return (\n <button\n // @ts-expect-error\n url={generateWebviewUrlWithParams(props.webview, props.params)}\n {...disabledProps}\n >\n {props.children}\n </button>\n )\n }\n\n if (props.path) {\n const payload = `__PATH_PAYLOAD__${props.path}`\n return (\n // @ts-expect-error\n <button payload={payload} {...disabledProps}>\n {props.children}\n </button>\n )\n }\n\n if (props.payload) {\n return (\n // @ts-expect-error\n <button payload={props.payload} {...disabledProps}>\n {props.children}\n </button>\n )\n }\n\n if (props.url) {\n return (\n // @ts-expect-error\n <button url={props.url} target={props.target} {...disabledProps}>\n {props.children}\n </button>\n )\n }\n\n if (props.onClick) {\n return null\n }\n\n throw new Error('Button missing payload, path, webview, url or onClick')\n }\n\n return renderComponent({ renderBrowser, renderNode })\n}\n\nButton.displayName = COMPONENT_DISPLAY_NAMES.Button\n\nButton.serialize = (buttonProps: ButtonProps) => {\n const payload = buttonProps.path\n ? `__PATH_PAYLOAD__${buttonProps.path}`\n : buttonProps.payload\n\n return {\n button: {\n payload,\n url: buttonProps.url,\n target: buttonProps.target,\n webview: buttonProps.webview && String(buttonProps.webview),\n title: buttonProps.children && String(buttonProps.children),\n ...ButtonsDisabler.withDisabledProps(buttonProps),\n },\n }\n}\n"],"names":["INPUT","useContext","isInWebviewApp","resolveImage","renderComponent","generateWebviewUrlWithParams","WebchatContext","ButtonsDisabler","COMPONENT_DISPLAY_NAMES","StyledButton","StyledUrlImage","Button","props","webchatState","openWebview","sendPayload","sendInput","updateMessage","autoDisable","handleClick","event","type","String","defaultTarget","target","window","messageToUpdate","m","updatedMsg","getClassName","isCustom","renderBrowser","themeButton","urlIconEnabledProp","urlIconImage","urlIcon","undefined","CustomButton","e","renderNode","disabledProps","payload","Error","buttonProps"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/button/styles.js","sources":["../../../src/components/button/styles.ts"],"sourcesContent":["import styled from 'styled-components'\n\nexport const StyledButton = styled.button`\n display: flex;\n justify-content: center;\n align-content: center;\n gap: 6px;\n cursor: pointer;\n width: ${props => props.theme.button?.style?.width};\n max-height: ${props => props.theme.button?.style?.maxHeight};\n height: ${props => props.theme.button?.style?.height};\n font-family: ${props => props.theme.style?.fontFamily};\n font-size: ${props => props.theme.button?.style?.fontSize};\n font-weight: ${props => props.theme.button?.style?.fontWeight};\n background: ${props => props.theme.button?.style?.background};\n color: ${props => props.theme.button?.style?.color};\n outline: ${props => props.theme.button?.style?.outline};\n border: ${props => props.theme.button?.style?.border};\n border-radius: ${props => props.theme.button?.style?.borderRadius};\n padding: ${props => props.theme.button?.style?.padding};\n overflow: ${props => props.theme.button?.style?.overflow};\n\n &:hover {\n background: ${props => props.theme.button?.hoverBackground};\n color: ${props => props.theme.button?.hoverTextColor};\n }\n\n &:disabled {\n opacity: ${props => props.theme.button?.disabledstyle?.opacity};\n cursor: ${props => props.theme.button?.disabledstyle?.cursor};\n pointer-events: ${props =>\n props.theme.button?.disabledstyle?.pointerEvents};\n }\n`\n\nexport const StyledUrlImage = styled.img`\n width: 20px;\n`\n"],"names":["styled","StyledButton","props","StyledUrlImage"],"mappings":";;;AAAsC;AAE/B,MAAMC,YAAYA,GAAGD,wBAAa,CAAC;;;;;;SAMjC,EAAEE,CAAAA,QAASA,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM;cACvC,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,UAAU;UACpD,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,OAAO;eACxC,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,KAAK,EAAE,WAAW;aAC3C,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,SAAS;eAC7C,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,WAAW;cAClD,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,WAAW;SACtD,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM;WAC1C,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,QAAQ;UAC/C,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,OAAO;iBACtC,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,aAAa;WACzD,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,QAAQ;YAC7C,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,SAAS;;;gBAG3C,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,MAAM,EAAE,gBAAgB;WACpD,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,MAAM,EAAE,eAAe;;;;aAI5C,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,MAAM,EAAE,eAAe,QAAQ;YACvD,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC,MAAM,EAAE,eAAe,OAAO;oBAC7C,EAAEA,CAAAA,QAChBA,MAAM,KAAK,CAAC,MAAM,EAAE,eAAe,cAAc;;AAEvD,CAAC;AAEM,MAAMC,cAAcA,GAAGH,qBAAU,CAAC;;AAEzC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/buttons-disabler.js","sources":["../../src/components/buttons-disabler.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type React from 'react'\n\nimport type { WebchatMessage } from '../index-types'\nimport { isCarousel } from '../message-utils'\nimport { strToBool } from '../util/objects'\nimport { deepMapWithIndex } from '../util/react'\nimport { Button } from './button'\nimport type { ButtonProps } from './index-types'\n\ninterface DisabledProps {\n disabled?: boolean\n autodisable?: boolean | string\n disabledstyle?: Record<string, string> | string\n}\n\ninterface AdditionalProps {\n parentId: string\n disabled?: boolean\n setDisabled: (disabled: boolean) => void\n}\n// biome-ignore lint/complexity/noStaticOnlyClass: ButtonsDisabler is a static class and should not be instantiated\nexport class ButtonsDisabler {\n static constructBrowserProps(props: DisabledProps): DisabledProps {\n const disabledProps: DisabledProps = {}\n if (props.autodisable !== undefined) {\n disabledProps.autodisable = strToBool(props.autodisable)\n }\n if (props.disabledstyle !== undefined) {\n disabledProps.disabledstyle = props.disabledstyle\n }\n return disabledProps\n }\n\n static constructNodeProps(props: DisabledProps): DisabledProps {\n const disabledProps: DisabledProps = {}\n if (props.autodisable !== undefined) {\n disabledProps.autodisable = String(props.autodisable)\n }\n if (props.disabledstyle !== undefined) {\n disabledProps.disabledstyle = JSON.stringify(props.disabledstyle)\n }\n return disabledProps\n }\n\n static withDisabledProps(props: DisabledProps): DisabledProps {\n return {\n disabled: props.disabled,\n autodisable: props.autodisable,\n disabledstyle: props.disabledstyle,\n }\n }\n\n static updateChildrenButtons(\n children: React.ReactNode,\n additionalProps?: AdditionalProps\n ): React.ReactNode {\n return deepMapWithIndex(children, (node: any) => {\n if (node.type === Button) {\n return ButtonsDisabler.updateButtons(node, additionalProps)\n }\n return node\n })\n }\n\n static updateButtons(node: any, additionalProps?: AdditionalProps): any {\n if (additionalProps) {\n additionalProps = {\n parentId: additionalProps.parentId,\n disabled:\n node.props.disabled === true\n ? node.props.disabled\n : additionalProps.disabled,\n setDisabled: additionalProps.setDisabled,\n }\n }\n return {\n ...node,\n props: {\n ...node.props,\n ...additionalProps,\n },\n }\n }\n\n static getUpdatedMessage(messageToUpdate: WebchatMessage): WebchatMessage {\n const updateMsgButton = (button: ButtonProps) => {\n return {\n ...button,\n ...{\n disabled: true,\n },\n }\n }\n\n if (\n isCarousel(messageToUpdate) &&\n messageToUpdate.data &&\n messageToUpdate.data.elements\n ) {\n messageToUpdate.data.elements = messageToUpdate.data.elements.map(e => ({\n ...e,\n ...{\n buttons: e.buttons.map(updateMsgButton),\n },\n }))\n return messageToUpdate\n } else {\n return {\n ...messageToUpdate,\n ...{\n buttons: messageToUpdate.buttons.map(updateMsgButton),\n },\n }\n }\n }\n}\n"],"names":["isCarousel","strToBool","deepMapWithIndex","Button","ButtonsDisabler","props","disabledProps","undefined","String","JSON","children","additionalProps","node","messageToUpdate","updateMsgButton","button","e"],"mappings":";;;;;;;;;AAAA,qDAAqD,GAIR;AACF;AACK;AACf;AAcjC,mHAAmH;AAC5G,MAAMI,eAAeA;IAC1B,OAAO,sBAAsBC,KAAoB,EAAiB;QAChE,MAAMC,gBAA+B,CAAC;QACtC,IAAID,MAAM,WAAW,KAAKE,WAAW;YACnCD,cAAc,WAAW,GAAGL,SAASA,CAACI,MAAM,WAAW;QACzD;QACA,IAAIA,MAAM,aAAa,KAAKE,WAAW;YACrCD,cAAc,aAAa,GAAGD,MAAM,aAAa;QACnD;QACA,OAAOC;IACT;IAEA,OAAO,mBAAmBD,KAAoB,EAAiB;QAC7D,MAAMC,gBAA+B,CAAC;QACtC,IAAID,MAAM,WAAW,KAAKE,WAAW;YACnCD,cAAc,WAAW,GAAGE,OAAOH,MAAM,WAAW;QACtD;QACA,IAAIA,MAAM,aAAa,KAAKE,WAAW;YACrCD,cAAc,aAAa,GAAGG,KAAK,SAAS,CAACJ,MAAM,aAAa;QAClE;QACA,OAAOC;IACT;IAEA,OAAO,kBAAkBD,KAAoB,EAAiB;QAC5D,OAAO;YACL,UAAUA,MAAM,QAAQ;YACxB,aAAaA,MAAM,WAAW;YAC9B,eAAeA,MAAM,aAAa;QACpC;IACF;IAEA,OAAO,sBACLK,QAAyB,EACzBC,eAAiC,EAChB;QACjB,OAAOT,gBAAgBA,CAACQ,UAAU,CAACE;YACjC,IAAIA,KAAK,IAAI,KAAKT,MAAMA,EAAE;gBACxB,OAAOC,eAAeA,CAAC,aAAa,CAACQ,MAAMD;YAC7C;YACA,OAAOC;QACT;IACF;IAEA,OAAO,cAAcA,IAAS,EAAED,eAAiC,EAAO;QACtE,IAAIA,iBAAiB;YACnBA,kBAAkB;gBAChB,UAAUA,gBAAgB,QAAQ;gBAClC,UACEC,KAAK,KAAK,CAAC,QAAQ,KAAK,OACpBA,KAAK,KAAK,CAAC,QAAQ,GACnBD,gBAAgB,QAAQ;gBAC9B,aAAaA,gBAAgB,WAAW;YAC1C;QACF;QACA,OAAO;YACL,GAAGC,IAAI;YACP,OAAO;gBACL,GAAGA,KAAK,KAAK;gBACb,GAAGD,eAAe;YACpB;QACF;IACF;IAEA,OAAO,kBAAkBE,eAA+B,EAAkB;QACxE,MAAMC,kBAAkB,CAACC;YACvB,OAAO;gBACL,GAAGA,MAAM;gBACT,GAAG;oBACD,UAAU;gBACZ,CAAC;YACH;QACF;QAEA,IACEf,UAAUA,CAACa,oBACXA,gBAAgB,IAAI,IACpBA,gBAAgB,IAAI,CAAC,QAAQ,EAC7B;YACAA,gBAAgB,IAAI,CAAC,QAAQ,GAAGA,gBAAgB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACG,CAAAA,IAAM;oBACtE,GAAGA,CAAC;oBACJ,GAAG;wBACD,SAASA,EAAE,OAAO,CAAC,GAAG,CAACF;oBACzB,CAAC;gBACH;YACA,OAAOD;QACT,OAAO;YACL,OAAO;gBACL,GAAGA,eAAe;gBAClB,GAAG;oBACD,SAASA,gBAAgB,OAAO,CAAC,GAAG,CAACC;gBACvC,CAAC;YACH;QACF;IACF;AACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { INPUT } from '@botonic/core';
|
|
2
|
+
import type { CarouselProps } from './index-types.js';
|
|
3
|
+
export declare const Carousel: {
|
|
4
|
+
(props: CarouselProps): import("react").JSX.Element;
|
|
5
|
+
displayName: "Carousel";
|
|
6
|
+
serialize: (carouselProps: any) => {
|
|
7
|
+
type: INPUT;
|
|
8
|
+
elements: any;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/carousel.js","sources":["../../src/components/carousel.tsx"],"sourcesContent":["import { INPUT, isBrowser } from '@botonic/core'\nimport { useContext, useEffect, useRef, useState } from 'react'\nimport styled from 'styled-components'\n\nimport LeftArrow from '../assets/leftArrow.svg'\nimport RightArrow from '../assets/rightArrow.svg'\nimport { COLORS, WEBCHAT } from '../constants'\nimport { resolveImage } from '../util/environment'\nimport { WebchatContext } from '../webchat/context'\nimport { ButtonsDisabler } from './buttons-disabler'\nimport { COMPONENT_DISPLAY_NAMES } from './constants'\nimport type { CarouselProps } from './index-types'\nimport { Message } from './message'\n\nconst ScrollableCarousel = styled.div`\n overscroll-behavior: contain;\n -webkit-overflow-scrolling: touch;\n`\n\ninterface StyledCarouselProps {\n carouselArrowsEnabled: boolean\n}\n\nconst StyledCarousel = styled.div<StyledCarouselProps>`\n padding: 10px 0px;\n display: flex;\n flex-direction: row;\n max-width: 100%;\n ${props => props.carouselArrowsEnabled && 'overflow-x: auto;'}\n`\n\nconst StyledItems = styled.div`\n display: flex;\n`\n\ninterface StyledArrowContainerProps {\n left?: number\n right?: number\n arrow: 'right' | 'left'\n justifyContent: string\n}\n\nconst StyledArrowContainer = styled.div<StyledArrowContainerProps>`\n position: absolute;\n top: calc(50% - 20px);\n height: 40px;\n width: 25px;\n background: ${COLORS.SILVER};\n display: flex;\n align-items: center;\n cursor: pointer;\n justify-content: ${props => props.justifyContent};\n\n ${props => (props.left === 0 ? `left: ${props.left}px` : '')};\n ${props => (props.right === 0 ? `right: ${props.right}px` : '')};\n ${props => (props.arrow === 'right' ? 'border-top-right-radius: 30px' : '')};\n ${props =>\n props.arrow === 'right' ? 'border-bottom-right-radius: 30px' : ''};\n ${props => (props.arrow === 'left' ? 'border-top-left-radius: 30px' : '')};\n ${props => (props.arrow === 'left' ? 'border-bottom-left-radius: 30px' : '')};\n`\nconst StyledArrow = styled.img`\n width: 20px;\n height: 20px;\n`\n\nconst serialize = carouselProps => {\n let carouselChildren = carouselProps.children\n if (!Array.isArray(carouselChildren)) {\n carouselChildren = [carouselChildren]\n }\n return {\n type: INPUT.CAROUSEL,\n elements: carouselChildren.map(e => e?.type?.serialize?.(e.props)),\n }\n}\n\nexport const Carousel = (props: CarouselProps) => {\n const { getThemeProperty } = useContext(WebchatContext)\n const [hasLeftArrow, setLeftArrow] = useState(false)\n const [hasRightArrow, setRightArrow] = useState(true)\n const carouselRef = useRef<HTMLDivElement>(null)\n\n const CustomCarouselLeftArrow = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.customCarouselLeftArrow\n )\n const CustomCarouselRightArrow = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.customCarouselRightArrow\n )\n // TODO: Investigate why when set to false, scroll is enabled via dragging the bar but not hovering the carousel elements\n const carouselArrowsEnabled = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.enableCarouselArrows\n )\n\n const scrollCarouselBy = value => {\n carouselRef.current?.scrollBy({\n left: value,\n behavior: 'smooth',\n })\n }\n\n const setArrowsVisibility = event => {\n const carousel = event.currentTarget\n const maxRightScroll =\n carousel.scrollWidth -\n carousel.offsetWidth -\n WEBCHAT.DEFAULTS.ELEMENT_MARGIN_RIGHT\n setLeftArrow(carousel.scrollLeft !== 0)\n setRightArrow(carousel.scrollLeft < maxRightScroll)\n }\n\n const getArrows = () => {\n const scrollBy =\n WEBCHAT.DEFAULTS.ELEMENT_WIDTH + WEBCHAT.DEFAULTS.ELEMENT_MARGIN_RIGHT\n return (\n <>\n {hasLeftArrow &&\n (CustomCarouselLeftArrow ? (\n <CustomCarouselLeftArrow scrollCarouselBy={scrollCarouselBy} />\n ) : (\n <StyledArrowContainer\n left={0}\n arrow={'right'}\n justifyContent={'flex-start'}\n onClick={() => scrollCarouselBy(-scrollBy)}\n >\n <StyledArrow src={resolveImage(LeftArrow)} />\n </StyledArrowContainer>\n ))}\n {hasRightArrow &&\n (CustomCarouselRightArrow ? (\n <CustomCarouselRightArrow scrollCarouselBy={scrollCarouselBy} />\n ) : (\n <StyledArrowContainer\n right={0}\n arrow={'left'}\n justifyContent={'flex-end'}\n onClick={() => scrollCarouselBy(scrollBy)}\n >\n <StyledArrow src={resolveImage(RightArrow)} />\n </StyledArrowContainer>\n ))}\n </>\n )\n }\n\n useEffect(() => {\n const carousel = carouselRef.current\n if (carousel?.addEventListener) {\n carousel.addEventListener('scroll', setArrowsVisibility, false)\n }\n\n return () => {\n if (carousel?.removeEventListener) {\n carousel.removeEventListener('scroll', setArrowsVisibility, false)\n }\n }\n }, [carouselRef.current])\n\n const carouselProps = {\n ...props,\n children: ButtonsDisabler.updateChildrenButtons(props.children),\n }\n\n if (isBrowser()) {\n return (\n <Message\n style={{\n width: '85%',\n padding: 0,\n backgroundColor: COLORS.TRANSPARENT,\n }}\n blob={false}\n json={serialize(carouselProps)}\n type={INPUT.CAROUSEL}\n {...carouselProps}\n >\n <ScrollableCarousel>\n <StyledCarousel\n ref={carouselRef}\n carouselArrowsEnabled={carouselArrowsEnabled}\n >\n <StyledItems>{carouselProps.children}</StyledItems>\n {carouselArrowsEnabled && getArrows()}\n </StyledCarousel>\n </ScrollableCarousel>\n </Message>\n )\n }\n\n return (\n <Message\n style={{ width: '85%', padding: 0, backgroundColor: COLORS.TRANSPARENT }}\n blob={false}\n json={serialize(carouselProps)}\n type={INPUT.CAROUSEL}\n {...carouselProps}\n >\n {props.children}\n </Message>\n )\n}\n\nCarousel.displayName = COMPONENT_DISPLAY_NAMES.Carousel\n\nCarousel.serialize = serialize\n"],"names":["INPUT","isBrowser","useContext","useEffect","useRef","useState","styled","LeftArrow","RightArrow","COLORS","WEBCHAT","resolveImage","WebchatContext","ButtonsDisabler","COMPONENT_DISPLAY_NAMES","Message","ScrollableCarousel","StyledCarousel","props","StyledItems","StyledArrowContainer","StyledArrow","serialize","carouselProps","carouselChildren","Array","e","Carousel","getThemeProperty","hasLeftArrow","setLeftArrow","hasRightArrow","setRightArrow","carouselRef","CustomCarouselLeftArrow","CustomCarouselRightArrow","carouselArrowsEnabled","scrollCarouselBy","value","setArrowsVisibility","event","carousel","maxRightScroll","getArrows","scrollBy"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/components.js","sources":["../../src/components/components.js"],"sourcesContent":["/**\n * Get the name of an element (instantiated component)\n * @param {React.Element} component\n * @returns {string}\n */\nexport function getElementName(component) {\n return component.type.name\n}\n\n/**\n * Get the name of a component TYPE\n * @param {React.ComponentType} component\n * @returns {string}\n */\nexport function getComponentTypeName(component) {\n return component.displayName || component.name || 'Component'\n}\n"],"names":["getElementName","component","getComponentTypeName"],"mappings":"AAAA;;;;CAIC,GACM,SAASA,cAAcA,CAACC,SAAS;IACtC,OAAOA,UAAU,IAAI,CAAC,IAAI;AAC5B;AAEA;;;;CAIC,GACM,SAASC,oBAAoBA,CAACD,SAAS;IAC5C,OAAOA,UAAU,WAAW,IAAIA,UAAU,IAAI,IAAI;AACpD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/constants.js","sources":["../../src/components/constants.ts"],"sourcesContent":["export const COMPONENT_DISPLAY_NAMES = {\n Button: 'Button',\n Carousel: 'Carousel',\n Pic: 'Pic',\n Reply: 'Reply',\n Subtitle: 'Subtitle',\n Text: 'Text',\n Title: 'Title',\n MultichannelButton: 'MultichannelButton',\n MultichannelReply: 'MultichannelReply',\n} as const\n"],"names":["COMPONENT_DISPLAY_NAMES"],"mappings":"AAAO,MAAMA,uBAAuBA,GAAG;IACrC,QAAQ;IACR,UAAU;IACV,KAAK;IACL,OAAO;IACP,UAAU;IACV,MAAM;IACN,OAAO;IACP,oBAAoB;IACpB,mBAAmB;AACrB,EAAU"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/custom-message.js","sources":["../../src/components/custom-message.tsx"],"sourcesContent":["import { INPUT } from '@botonic/core'\nimport merge from 'lodash.merge'\nimport React from 'react'\n\nimport { SENDERS } from '../index-types'\nimport { createErrorBoundary } from '../util/error-boundary'\nimport { warnDeprecatedProps } from '../util/logs'\nimport { mapObjectNonBooleanValues } from '../util/react'\nimport type { CustomMessageType } from './index-types'\nimport { Message } from './message'\nimport { Reply } from './reply'\n\n/**\n *\n * name: as it appears at ThemeProps' message.customTypes key\n * CustomMessageComponent\n * defaultProps: Props for the wrapper Message\n * ErrorBoundary: to recover in case it fails\n */\n\nexport interface CustomMessageArgs {\n name: string\n component: React.FC<any>\n defaultProps?: Record<string, any>\n errorBoundary?: any\n}\n\nexport const customMessage = ({\n name,\n component: CustomMessageComponent,\n defaultProps = {},\n errorBoundary = createErrorBoundary(),\n}: CustomMessageArgs): CustomMessageType => {\n const CustomMessage = props => {\n warnDeprecatedProps(defaultProps, 'customMessage:')\n if (defaultProps.sentBy === SENDERS.user) {\n defaultProps.ack = 1\n }\n return (\n <Message\n {...merge(mapObjectNonBooleanValues(defaultProps), props)}\n type={INPUT.CUSTOM}\n />\n )\n }\n\n const splitChildren = props => {\n const { children } = props\n const isReply = e => e.type === Reply\n try {\n if (!Array.isArray(children) && !isReply(children)) {\n return { replies: null, childrenWithoutReplies: children }\n }\n const childrenArray = React.Children.toArray(children)\n const replies = childrenArray.filter(isReply)\n const childrenWithoutReplies = childrenArray.filter(e => !isReply(e))\n return {\n replies: replies,\n childrenWithoutReplies,\n }\n } catch (_e) {\n return { replies: null, childrenWithoutReplies: children }\n }\n }\n\n const WrappedComponent = props => {\n const { id, children, ...customMessageProps } = props\n const { replies, childrenWithoutReplies } = splitChildren(props)\n\n const ErrorBoundary = errorBoundary\n\n return (\n <CustomMessage\n id={id}\n json={{\n ...customMessageProps,\n id,\n children: childrenWithoutReplies,\n customTypeName: name,\n }}\n sentBy={props.sentBy || SENDERS.bot}\n isUnread={props.isUnread}\n >\n <ErrorBoundary key={'errorBoundary'} {...customMessageProps}>\n <CustomMessageComponent id={id} {...customMessageProps}>\n {childrenWithoutReplies}\n </CustomMessageComponent>\n </ErrorBoundary>\n {replies}\n </CustomMessage>\n )\n }\n WrappedComponent.customTypeName = name\n WrappedComponent.deserialize = (msg: any) => {\n return (\n <WrappedComponent\n id={msg.id}\n key={msg.key}\n json={msg.data}\n {...msg.data}\n sentBy={msg.sentBy || SENDERS.bot}\n isUnread={msg.isUnread}\n />\n )\n }\n return WrappedComponent\n}\n"],"names":["INPUT","merge","React","SENDERS","createErrorBoundary","warnDeprecatedProps","mapObjectNonBooleanValues","Message","Reply","customMessage","name","CustomMessageComponent","defaultProps","errorBoundary","CustomMessage","props","splitChildren","children","isReply","e","Array","childrenArray","replies","childrenWithoutReplies","_e","WrappedComponent","id","customMessageProps","ErrorBoundary","msg"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAqC;AACL;AACP;AAEe;AACoB;AACV;AACO;AAEtB;AACJ;AAiBxB,MAAMS,aAAaA,GAAG,CAAC,EAC5BC,IAAI,EACJ,WAAWC,sBAAsB,EACjCC,eAAe,CAAC,CAAC,EACjBC,gBAAgBT,mBAAmBA,EAAE,EACnB;IAClB,MAAMU,gBAAgBC,CAAAA;QACpBV,mBAAmBA,CAACO,cAAc;QAClC,IAAIA,aAAa,MAAM,KAAKT,YAAY,EAAE;YACxCS,aAAa,GAAG,GAAG;QACrB;QACA,qBACE,IAACL,OAAOA;YACL,GAAGN,YAAKA,CAACK,yBAAyBA,CAACM,eAAeG,MAAM;YACzD,MAAMf,YAAY;;IAGxB;IAEA,MAAMgB,gBAAgBD,CAAAA;QACpB,MAAM,EAAEE,QAAQ,EAAE,GAAGF;QACrB,MAAMG,UAAUC,CAAAA,IAAKA,EAAE,IAAI,KAAKX,KAAKA;QACrC,IAAI;YACF,IAAI,CAACY,MAAM,OAAO,CAACH,aAAa,CAACC,QAAQD,WAAW;gBAClD,OAAO;oBAAE,SAAS;oBAAM,wBAAwBA;gBAAS;YAC3D;YACA,MAAMI,gBAAgBnB,sBAAsB,CAACe;YAC7C,MAAMK,UAAUD,cAAc,MAAM,CAACH;YACrC,MAAMK,yBAAyBF,cAAc,MAAM,CAACF,CAAAA,IAAK,CAACD,QAAQC;YAClE,OAAO;gBACL,SAASG;gBACTC;YACF;QACF,EAAE,OAAOC,IAAI;YACX,OAAO;gBAAE,SAAS;gBAAM,wBAAwBP;YAAS;QAC3D;IACF;IAEA,MAAMQ,mBAAmBV,CAAAA;QACvB,MAAM,EAAEW,EAAE,EAAET,QAAQ,EAAE,GAAGU,oBAAoB,GAAGZ;QAChD,MAAM,EAAEO,OAAO,EAAEC,sBAAsB,EAAE,GAAGP,cAAcD;QAE1D,MAAMa,gBAAgBf;QAEtB,qBACE,KAACC;YACC,IAAIY;YACJ,MAAM;gBACJ,GAAGC,kBAAkB;gBACrBD;gBACA,UAAUH;gBACV,gBAAgBb;YAClB;YACA,QAAQK,MAAM,MAAM,IAAIZ,WAAW;YACnC,UAAUY,MAAM,QAAQ;;8BAExB,IAACa;oBAAqC,GAAGD,kBAAkB;8BACzD,kBAAChB;wBAAuB,IAAIe;wBAAK,GAAGC,kBAAkB;kCACnDJ;;mBAFe;gBAKnBD;;;IAGP;IACAG,iBAAiB,cAAc,GAAGf;IAClCe,iBAAiB,WAAW,GAAG,CAACI;QAC9B,qBACE,IAACJ;YACC,IAAII,IAAI,EAAE;YAEV,MAAMA,IAAI,IAAI;YACb,GAAGA,IAAI,IAAI;YACZ,QAAQA,IAAI,MAAM,IAAI1B,WAAW;YACjC,UAAU0B,IAAI,QAAQ;WAJjBA,IAAI,GAAG;IAOlB;IACA,OAAOJ;AACT,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/document.js","sources":["../../src/components/document.tsx"],"sourcesContent":["import { INPUT, isBrowser } from '@botonic/core'\nimport { useContext } from 'react'\nimport styled from 'styled-components'\n\nimport { ROLES, WEBCHAT } from '../constants'\nimport { staticAsset } from '../util/environment'\nimport { WebchatContext } from '../webchat/context'\nimport type { DocumentProps } from './index-types'\nimport { Message } from './message'\n\nconst StyledButton = styled.a`\n display: block;\n height: 25px;\n background-color: #f0f0f0;\n padding: 10px;\n text-align: center;\n border-radius: 5px;\n color: black;\n font-weight: bold;\n line-height: 25px;\n text-decoration: none;\n border: 1px solid black;\n opacity: 0.9;\n &:hover {\n opacity: 1;\n }\n`\n\nconst serialize = (documentProps: { src: string }) => {\n return { document: documentProps.src }\n}\n\nexport const Document = (props: DocumentProps) => {\n props = { ...props, src: staticAsset(props.src) }\n\n let content = props.children\n\n const { getThemeProperty } = useContext(WebchatContext)\n let documentDownload = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.documentDownload,\n {}\n )\n if (typeof documentDownload === 'function') {\n documentDownload = documentDownload(props.from)\n }\n\n if (isBrowser()) {\n content = (\n <StyledButton\n href={props.src}\n target='_blank'\n rel='noreferrer'\n style={{\n ...documentDownload.style,\n }}\n >\n {documentDownload.text || 'Download'}\n </StyledButton>\n )\n }\n\n return (\n <Message\n role={ROLES.DOCUMENT_MESSAGE}\n json={serialize(props)}\n {...props}\n type={INPUT.DOCUMENT}\n >\n {content}\n </Message>\n )\n}\n\nDocument.serialize = serialize\n"],"names":["INPUT","isBrowser","useContext","styled","ROLES","WEBCHAT","staticAsset","WebchatContext","Message","StyledButton","serialize","documentProps","Document","props","content","getThemeProperty","documentDownload"],"mappings":";;;;;;;;;;;;;;;;;;AAAgD;AACd;AACI;AAEO;AACI;AACE;AAEhB;AAEnC,MAAMS,YAAYA,GAAGN,mBAAQ,CAAC;;;;;;;;;;;;;;;;AAgB9B,CAAC;AAED,MAAMO,SAASA,GAAG,CAACC;IACjB,OAAO;QAAE,UAAUA,cAAc,GAAG;IAAC;AACvC;AAEO,MAAMC,QAAQA,GAAG,CAACC;IACvBA,QAAQ;QAAE,GAAGA,KAAK;QAAE,KAAKP,WAAWA,CAACO,MAAM,GAAG;IAAE;IAEhD,IAAIC,UAAUD,MAAM,QAAQ;IAE5B,MAAM,EAAEE,gBAAgB,EAAE,GAAGb,UAAUA,CAACK,cAAcA;IACtD,IAAIS,mBAAmBD,iBACrBV,0CAA0C,EAC1C,CAAC;IAEH,IAAI,OAAOW,qBAAqB,YAAY;QAC1CA,mBAAmBA,iBAAiBH,MAAM,IAAI;IAChD;IAEA,IAAIZ,SAASA,IAAI;QACfa,wBACE,IAACL,YAAYA;YACX,MAAMI,MAAM,GAAG;YACf,QAAO;YACP,KAAI;YACJ,OAAO;gBACL,GAAGG,iBAAiB,KAAK;YAC3B;sBAECA,iBAAiB,IAAI,IAAI;;IAGhC;IAEA,qBACE,IAACR,OAAOA;QACN,MAAMJ,sBAAsB;QAC5B,MAAMM,SAASA,CAACG;QACf,GAAGA,KAAK;QACT,MAAMb,cAAc;kBAEnBc;;AAGP,EAAC;AAEDF,QAAQA,CAAC,SAAS,GAAGF,SAASA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/element.js","sources":["../../src/components/element.tsx"],"sourcesContent":["import type React from 'react'\nimport styled from 'styled-components'\n\nimport { COLORS, WEBCHAT } from '../constants'\nimport { renderComponent } from '../util/react'\nimport { Button } from './button/index'\n\nconst ElementContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: ${WEBCHAT.DEFAULTS.ELEMENT_WIDTH}px;\n margin-right: ${WEBCHAT.DEFAULTS.ELEMENT_MARGIN_RIGHT}px;\n border-radius: 6px;\n border: 1px solid ${COLORS.SEASHELL_WHITE};\n overflow: hidden;\n justify-content: space-between;\n`\n\nexport interface ElementProps {\n children: React.ReactNode[]\n}\n\nexport const Element = (props: ElementProps) => {\n const renderBrowser = () => (\n <ElementContainer>{props.children}</ElementContainer>\n )\n\n // @ts-expect-error\n const renderNode = () => <element>{props.children}</element>\n\n return renderComponent({ renderBrowser, renderNode })\n}\n\nElement.serialize = elementProps => {\n const element = Object.assign(\n {},\n ...elementProps.children\n .filter(c => c?.type?.name !== Button.name)\n .map(c => c?.type?.serialize?.(c.props))\n )\n // When we are serializer buttons from backend, we are receiving the data\n // as an array of buttons, so we have to keep robust with serve and deal with arrays\n element.buttons = [\n ...elementProps.children\n .filter(c => {\n if (Array.isArray(c)) {\n return true\n }\n return c?.type?.name === Button.name\n })\n .map(b => {\n if (Array.isArray(b)) {\n b.map(bb => bb?.type?.serialize?.(bb.props)?.button)\n }\n return b?.type?.serialize(b.props).button\n }),\n ]\n // When we have the buttons from backend, we have all buttons inside an array on the first position\n // of another array in element['buttons'] we want that element['buttons'] to be an array of buttons,\n // not an array of another array of buttons\n if (Array.isArray(element.buttons[0])) {\n element.buttons = element.buttons[0]\n }\n return element\n}\n"],"names":["styled","COLORS","WEBCHAT","renderComponent","Button","ElementContainer","Element","props","renderBrowser","renderNode","elementProps","element","Object","c","Array","b","bb"],"mappings":";;;;;;;;;;;;AACsC;AAEQ;AACC;AACR;AAEvC,MAAMK,gBAAgBA,GAAGL,qBAAU,CAAC;;;SAG3B,EAAEE,8BAA8B,CAAC;gBAC1B,EAAEA,qCAAqC,CAAC;;oBAEpC,EAAED,qBAAqB,CAAC;;;AAG5C,CAAC;AAMM,MAAMK,OAAOA,GAAG,CAACC;IACtB,MAAMC,gBAAgB,kBACpB,IAACH,gBAAgBA;sBAAEE,MAAM,QAAQ;;IAGnC,mBAAmB;IACnB,MAAME,aAAa,kBAAM,IAAC;sBAASF,MAAM,QAAQ;;IAEjD,OAAOJ,eAAeA,CAAC;QAAEK;QAAeC;IAAW;AACrD,EAAC;AAEDH,OAAOA,CAAC,SAAS,GAAGI,CAAAA;IAClB,MAAMC,UAAUC,OAAO,MAAM,CAC3B,CAAC,MACEF,aAAa,QAAQ,CACrB,MAAM,CAACG,CAAAA,IAAKA,GAAG,MAAM,SAAST,WAAW,EACzC,GAAG,CAACS,CAAAA,IAAKA,GAAG,MAAM,YAAYA,EAAE,KAAK;IAE1C,yEAAyE;IACzE,oFAAoF;IACpFF,QAAQ,OAAO,GAAG;WACbD,aAAa,QAAQ,CACrB,MAAM,CAACG,CAAAA;YACN,IAAIC,MAAM,OAAO,CAACD,IAAI;gBACpB,OAAO;YACT;YACA,OAAOA,GAAG,MAAM,SAAST,WAAW;QACtC,GACC,GAAG,CAACW,CAAAA;YACH,IAAID,MAAM,OAAO,CAACC,IAAI;gBACpBA,EAAE,GAAG,CAACC,CAAAA,KAAMA,IAAI,MAAM,YAAYA,GAAG,KAAK,GAAG;YAC/C;YACA,OAAOD,GAAG,MAAM,UAAUA,EAAE,KAAK,EAAE;QACrC;KACH;IACD,mGAAmG;IACnG,oGAAoG;IACpG,2CAA2C;IAC3C,IAAID,MAAM,OAAO,CAACH,QAAQ,OAAO,CAAC,EAAE,GAAG;QACrCA,QAAQ,OAAO,GAAGA,QAAQ,OAAO,CAAC,EAAE;IACtC;IACA,OAAOA;AACT"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function Handoff(_props: any): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/handoff.js","sources":["../../src/components/handoff.jsx"],"sourcesContent":["import { useContext, useState } from 'react'\nimport styled from 'styled-components'\n\nimport { COLORS } from '../constants'\nimport { WebchatContext } from '../webchat/context'\n\nconst Container = styled.div`\n display: flex;\n font-family: inherit;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n padding: 24px;\n`\n\nconst TransferredContainer = styled.div`\n text-align: center;\n white-space: normal;\n`\n\nconst EndedContainer = styled.div`\n text-align: center;\n white-space: normal;\n`\n\nconst StyledButton = styled.button`\n max-width: 60%;\n padding: 12px 24px;\n background-color: ${COLORS.SOLID_WHITE};\n border: none;\n border-radius: 4px;\n margin-top: 8px;\n cursor: pointer;\n`\n\nexport const Handoff = _props => {\n const { resolveCase } = useContext(WebchatContext)\n const [state, setState] = useState({ showContinue: true })\n\n const continueClick = () => {\n setState({ showContinue: false })\n resolveCase()\n }\n\n const bgColor = state.showContinue\n ? COLORS.FRINGY_FLOWER_GREEN\n : COLORS.TASMAN_GRAY\n const fontColor = state.showContinue\n ? COLORS.APPLE_GREEN\n : COLORS.CACTUS_GREEN\n return (\n <Container\n style={{\n color: fontColor,\n backgroundColor: bgColor,\n }}\n >\n {state.showContinue ? (\n <TransferredContainer>\n Conversation transferred to a human agent...\n </TransferredContainer>\n ) : (\n <EndedContainer>Human handoff ended</EndedContainer>\n )}\n {state.showContinue && (\n <StyledButton onClick={continueClick}>Continue</StyledButton>\n )}\n </Container>\n )\n}\n"],"names":["useContext","useState","styled","COLORS","WebchatContext","Container","TransferredContainer","EndedContainer","StyledButton","Handoff","_props","resolveCase","state","setState","continueClick","bgColor","fontColor"],"mappings":";;;;;;;;;;;;AAA4C;AACN;AAED;AACc;AAEnD,MAAMK,SAASA,GAAGH,qBAAU,CAAC;;;;;;;AAO7B,CAAC;AAED,MAAMI,oBAAoBA,GAAGJ,qBAAU,CAAC;;;AAGxC,CAAC;AAED,MAAMK,cAAcA,GAAGL,qBAAU,CAAC;;;AAGlC,CAAC;AAED,MAAMM,YAAYA,GAAGN,wBAAa,CAAC;;;oBAGf,EAAEC,kBAAkB,CAAC;;;;;AAKzC,CAAC;AAEM,MAAMM,OAAOA,GAAGC,CAAAA;IACrB,MAAM,EAAEC,WAAW,EAAE,GAAGX,UAAUA,CAACI,cAAcA;IACjD,MAAM,CAACQ,OAAOC,SAAS,GAAGZ,QAAQA,CAAC;QAAE,cAAc;IAAK;IAExD,MAAMa,gBAAgB;QACpBD,SAAS;YAAE,cAAc;QAAM;QAC/BF;IACF;IAEA,MAAMI,UAAUH,MAAM,YAAY,GAC9BT,0BAA0B,GAC1BA,kBAAkB;IACtB,MAAMa,YAAYJ,MAAM,YAAY,GAChCT,kBAAkB,GAClBA,mBAAmB;IACvB,qBACE,KAACE,SAASA;QACR,OAAO;YACL,OAAOW;YACP,iBAAiBD;QACnB;;YAECH,MAAM,YAAY,iBACjB,IAACN,oBAAoBA;0BAAC;+BAItB,IAACC,cAAcA;0BAAC;;YAEjBK,MAAM,YAAY,kBACjB,IAACJ,YAAYA;gBAAC,SAASM;0BAAe;;;;AAI9C,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/image.js","sources":["../../src/components/image.tsx"],"sourcesContent":["import { INPUT, isBrowser } from '@botonic/core'\nimport { useContext, useState } from 'react'\nimport styled from 'styled-components'\n\nimport { ROLES, WEBCHAT } from '../constants'\nimport { staticAsset } from '../util/environment'\nimport { WebchatContext } from '../webchat/context'\nimport type { ImageProps } from './index-types'\nimport { Message } from './message'\n\ninterface StyledImageProps {\n hasPreviewer: boolean\n}\n\nconst StyledImage = styled.img<StyledImageProps>`\n border-radius: 8px;\n max-width: 150px;\n max-height: 150px;\n margin: -3px -6px;\n cursor: ${({ hasPreviewer }) => (hasPreviewer ? 'pointer' : 'auto')};\n`\n\nconst serialize = (imageProps: { src: string }) => {\n return { image: imageProps.src }\n}\n\nexport const Image = (props: ImageProps) => {\n props = props.input?.data\n ? { ...props, src: props.input.data }\n : { ...props, src: staticAsset(props.src) }\n\n let content = props.children\n\n const [isPreviewerOpened, setIsPreviewerOpened] = useState(false)\n const openPreviewer = () => setIsPreviewerOpened(true)\n const closePreviewer = () => setIsPreviewerOpened(false)\n\n const { getThemeProperty } = useContext(WebchatContext)\n const ImagePreviewer = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.imagePreviewer\n )\n\n if (isBrowser()) {\n content = (\n <>\n <StyledImage\n src={props.src}\n onClick={openPreviewer}\n hasPreviewer={Boolean(ImagePreviewer)}\n />\n {ImagePreviewer && (\n <ImagePreviewer\n src={props.src}\n isPreviewerOpened={isPreviewerOpened}\n openPreviewer={openPreviewer}\n closePreviewer={closePreviewer}\n />\n )}\n </>\n )\n }\n\n return (\n <Message\n role={ROLES.IMAGE_MESSAGE}\n json={serialize(props)}\n {...props}\n type={INPUT.IMAGE}\n >\n {content}\n </Message>\n )\n}\n\nImage.serialize = serialize\n"],"names":["INPUT","isBrowser","useContext","useState","styled","ROLES","WEBCHAT","staticAsset","WebchatContext","Message","StyledImage","hasPreviewer","serialize","imageProps","Image","props","content","isPreviewerOpened","setIsPreviewerOpened","openPreviewer","closePreviewer","getThemeProperty","ImagePreviewer","Boolean"],"mappings":";;;;;;;;;;;;;;;;;;AAAgD;AACJ;AACN;AAEO;AACI;AACE;AAEhB;AAMnC,MAAMU,WAAWA,GAAGN,qBAA4B,CAAC;;;;;UAKvC,EAAE,CAAC,EAAEO,YAAY,EAAE,GAAMA,eAAe,YAAY,OAAQ;AACtE,CAAC;AAED,MAAMC,SAASA,GAAG,CAACC;IACjB,OAAO;QAAE,OAAOA,WAAW,GAAG;IAAC;AACjC;AAEO,MAAMC,KAAKA,GAAG,CAACC;IACpBA,QAAQA,MAAM,KAAK,EAAE,OACjB;QAAE,GAAGA,KAAK;QAAE,KAAKA,MAAM,KAAK,CAAC,IAAI;IAAC,IAClC;QAAE,GAAGA,KAAK;QAAE,KAAKR,WAAWA,CAACQ,MAAM,GAAG;IAAE;IAE5C,IAAIC,UAAUD,MAAM,QAAQ;IAE5B,MAAM,CAACE,mBAAmBC,qBAAqB,GAAGf,QAAQA,CAAC;IAC3D,MAAMgB,gBAAgB,IAAMD,qBAAqB;IACjD,MAAME,iBAAiB,IAAMF,qBAAqB;IAElD,MAAM,EAAEG,gBAAgB,EAAE,GAAGnB,UAAUA,CAACM,cAAcA;IACtD,MAAMc,iBAAiBD,iBACrBf,wCAAwC;IAG1C,IAAIL,SAASA,IAAI;QACfe,wBACE;;8BACE,IAACN,WAAWA;oBACV,KAAKK,MAAM,GAAG;oBACd,SAASI;oBACT,cAAcI,QAAQD;;gBAEvBA,gCACC,IAACA;oBACC,KAAKP,MAAM,GAAG;oBACd,mBAAmBE;oBACnB,eAAeE;oBACf,gBAAgBC;;;;IAK1B;IAEA,qBACE,IAACX,OAAOA;QACN,MAAMJ,mBAAmB;QACzB,MAAMO,SAASA,CAACG;QACf,GAAGA,KAAK;QACT,MAAMf,WAAW;kBAEhBgB;;AAGP,EAAC;AAEDF,KAAKA,CAAC,SAAS,GAAGF,SAASA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/index-types.js","sources":["../../src/components/index-types.ts"],"sourcesContent":["import type React from 'react'\n\nimport type { SENDERS } from '../index-types'\n\nexport type MessageType =\n | 'audio'\n | 'buttonmessage'\n | 'carousel'\n | 'custom'\n | 'document'\n | 'image'\n | 'location'\n | 'text'\n | 'video'\n\nexport interface MessageProps {\n blob?: boolean\n children?: React.ReactNode\n delay?: number\n enabletimestamps?: boolean\n sentBy?: SENDERS\n json?: Record<string, unknown>\n style?: Record<string, unknown>\n type?: MessageType\n typing?: number\n}\n\nexport interface TextProps extends MessageProps {\n // converts markdown syntax to HTML\n markdown?: boolean\n botInteractionId?: string\n}\n\nexport interface CarouselProps extends MessageProps {\n children: React.ReactNode[]\n text?: string // Only for Whatsapp Interactive Media Carousel\n}\n\nexport interface Webview {\n name: string\n}\n\nexport interface ButtonProps {\n params?: Record<string, string>\n path?: string\n payload?: string\n target?: string\n url?: string\n webview?: Webview\n onClick?: () => void\n autodisable?: boolean\n disabled?: boolean\n disabledstyle?: Record<string, string> | string\n children: string\n setDisabled?: (disabled: boolean) => void\n parentId?: string\n}\n\nexport interface ReplyProps {\n path?: string\n payload?: string\n children: string\n}\n\nexport interface ImageProps extends MessageProps {\n src: string\n input?: { data: string }\n}\n\nexport interface VideoProps extends MessageProps {\n src: string\n input?: { data: string }\n}\n\nexport interface AudioProps extends MessageProps {\n src: string\n input?: { data: string }\n}\n\nexport interface DocumentProps extends MessageProps {\n src: string\n input?: { data: string }\n from?: any\n}\n\nexport interface CustomMessageType {\n (props: any): JSX.Element\n customTypeName: string\n deserialize(msg: any): JSX.Element\n}\n\nexport type BlockInputOption = {\n preprocess?: (message: string) => string\n match: RegExp[]\n message: string\n}\n\nexport type WrappedComponent<Props> = React.FunctionComponent<Props> & {\n customTypeName: string\n}\n"],"names":[],"mappings":"AAmGC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/index.js","sources":["../../src/components/index.ts"],"sourcesContent":["export { Audio } from './audio'\nexport { Button } from './button/index'\nexport { Carousel } from './carousel'\nexport { customMessage } from './custom-message'\nexport { Document } from './document'\nexport { Element } from './element'\nexport { Handoff } from './handoff'\nexport { Image } from './image'\nexport * from './index-types'\nexport { Location } from './location'\nexport { Message } from './message'\nexport { MessageTemplate } from './message-template'\nexport * from './multichannel'\nexport { Pic } from './pic'\nexport { Raw } from './raw'\nexport { Reply } from './reply'\nexport { ShareButton } from './share-button'\nexport { Subtitle } from './subtitle'\nexport { Text } from './text'\nexport { Title } from './title'\nexport { Video } from './video'\nexport {\n normalizeWebchatSettings,\n WebchatSettings,\n type WebchatSettingsProps,\n} from './webchat-settings'\nexport {\n WhatsappButtonList,\n type WhatsappButtonListProps,\n type WhatsappButtonListRowProps,\n type WhatsappButtonListSectionProps,\n} from './whatsapp-button-list'\nexport { WhatsappCatalog, type WhatsappCatalogProps } from './whatsapp-catalog'\nexport {\n WhatsappCTAUrlButton,\n type WhatsappCTAUrlButtonProps,\n WhatsappCTAUrlHeaderType,\n} from './whatsapp-cta-url-button'\nexport {\n CardType,\n type WhatsappInteractiveMediaCard,\n WhatsappInteractiveMediaCarousel,\n type WhatsappInteractiveMediaCarouselProps,\n} from './whatsapp-interactive-media-carousel'\nexport {\n WhatsappMediaCarousel,\n type WhatsappMediaCarouselProps,\n} from './whatsapp-media-carousel'\nexport { WhatsappProduct } from './whatsapp-product'\nexport {\n WhatsappProductCarousel,\n type WhatsappProductCarouselProps,\n} from './whatsapp-product-carousel'\nexport {\n type ProductItem,\n WhatsappProductList,\n type WhatsappProductListProps,\n type WhatsappProductListSection,\n} from './whatsapp-product-list'\nexport {\n WhatsappRequestContactInfo,\n type WhatsappRequestContactInfoProps,\n} from './whatsapp-request-contact-info'\nexport { WhatsappTemplate } from './whatsapp-template/index'\nexport * from './whatsapp-template/types'\n"],"names":["Audio","Button","Carousel","customMessage","Document","Element","Handoff","Image","Location","Message","MessageTemplate","Pic","Raw","Reply","ShareButton","Subtitle","Text","Title","Video","normalizeWebchatSettings","WebchatSettings","WhatsappButtonList","WhatsappCatalog","WhatsappCTAUrlButton","WhatsappCTAUrlHeaderType","CardType","WhatsappInteractiveMediaCarousel","WhatsappMediaCarousel","WhatsappProduct","WhatsappProductCarousel","WhatsappProductList","WhatsappRequestContactInfo","WhatsappTemplate"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAA+B;AACQ;AACF;AACW;AACX;AACF;AACA;AACJ;AACF;AACQ;AACF;AACiB;AACtB;AACH;AACA;AACI;AACa;AACP;AACR;AACE;AACA;AAKJ;AAMI;AACgD;AAK7C;AAMY;AAIZ;AACkB;AAIhB;AAMJ;AAIQ;AACoB;AACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/location.js","sources":["../../src/components/location.jsx"],"sourcesContent":["import { INPUT } from '@botonic/core'\nimport styled from 'styled-components'\n\nimport { renderComponent } from '../util/react'\nimport { Message } from './message'\n\nconst Link = styled.a`\n text-decoration: none;\n font-weight: bold;\n target: blank;\n`\n\nconst serialize = locationProps => {\n return { location: { lat: locationProps.lat, long: locationProps.long } }\n}\n\nexport const Location = props => {\n const { lat, long } = props\n\n const renderBrowser = () => {\n const locationUrl = `https://www.google.com/maps/search/?api=1&query=${lat},${long}`\n return (\n <Message json={serialize(props)} {...props} type={INPUT.LOCATION}>\n <Link href={locationUrl} target='_blank' rel='noopener noreferrer'>\n {props.text || 'Open Location'}\n </Link>\n </Message>\n )\n }\n\n const renderNode = () => {\n return (\n <message type={INPUT.LOCATION}>\n <lat>{lat}</lat>\n <long>{long}</long>\n </message>\n )\n }\n\n return renderComponent({ renderBrowser, renderNode })\n}\n\nLocation.serialize = serialize\n"],"names":["INPUT","styled","renderComponent","Message","Link","serialize","locationProps","Location","props","lat","long","renderBrowser","locationUrl","renderNode"],"mappings":";;;;;;;;;;;;AAAqC;AACC;AAES;AACZ;AAEnC,MAAMI,IAAIA,GAAGH,mBAAQ,CAAC;;;;AAItB,CAAC;AAED,MAAMI,SAASA,GAAGC,CAAAA;IAChB,OAAO;QAAE,UAAU;YAAE,KAAKA,cAAc,GAAG;YAAE,MAAMA,cAAc,IAAI;QAAC;IAAE;AAC1E;AAEO,MAAMC,QAAQA,GAAGC,CAAAA;IACtB,MAAM,EAAEC,GAAG,EAAEC,IAAI,EAAE,GAAGF;IAEtB,MAAMG,gBAAgB;QACpB,MAAMC,cAAc,CAAC,gDAAgD,EAAEH,IAAI,CAAC,EAAEC,MAAM;QACpF,qBACE,IAACP,OAAOA;YAAC,MAAME,SAASA,CAACG;YAAS,GAAGA,KAAK;YAAE,MAAMR,cAAc;sBAC9D,kBAACI,IAAIA;gBAAC,MAAMQ;gBAAa,QAAO;gBAAS,KAAI;0BAC1CJ,MAAM,IAAI,IAAI;;;IAIvB;IAEA,MAAMK,aAAa;QACjB,qBACE,KAAC;YAAQ,MAAMb,cAAc;;8BAC3B,IAAC;8BAAKS;;8BACN,IAAC;8BAAMC;;;;IAGb;IAEA,OAAOR,eAAeA,CAAC;QAAES;QAAeE;IAAW;AACrD,EAAC;AAEDN,QAAQA,CAAC,SAAS,GAAGF,SAASA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/markdown.js","sources":["../../src/components/markdown.js"],"sourcesContent":["import MarkdownIt from 'markdown-it'\n\nimport { isInWebviewApp } from '../util/environment'\n\nconst BR_STRING_TAG = '<br/>'\nconst BR_STRING_TAG_REGEX = /<br\\s*\\/?>/g\nexport const ESCAPED_LINE_BREAK = '<br>'\nconst ESCAPED_LINE_BREAK_REGEX = new RegExp(ESCAPED_LINE_BREAK, 'g')\nconst isLineBreakElement = element => element.type === 'br'\n\nconst withLinksTarget = (renderer, target = '_blank') => {\n // Support opening links in new tabs: https://github.com/markdown-it/markdown-it/blob/master/docs/architecture.md#renderer\n const newRenderer =\n renderer.renderer.rules.link_open ||\n ((tokens, idx, options, _env, self) =>\n self.renderToken(tokens, idx, options))\n renderer.renderer.rules.link_open = (tokens, idx, options, env, self) => {\n const aIndex = tokens[idx].attrIndex('target')\n if (aIndex < 0) {\n tokens[idx].attrPush(['target', target])\n } else {\n tokens[idx].attrs[aIndex][1] = target\n }\n return newRenderer(tokens, idx, options, env, self)\n }\n}\n\nconst configureLinksRenderer = () => {\n // zero preset comes with all options disabled, only enabling links\n const linksRenderer = new MarkdownIt('zero', { linkify: true }).enable([\n 'linkify',\n ])\n withLinksTarget(linksRenderer)\n return linksRenderer\n}\n\nconst configureMarkdownRenderer = target => {\n const markdownRenderer = new MarkdownIt({\n html: true,\n linkify: true,\n typographer: true,\n })\n withLinksTarget(markdownRenderer, target)\n return markdownRenderer\n}\n\nexport const renderMarkdown = text => {\n const target = isInWebviewApp() ? '_self' : '_blank'\n const markdownRenderer = configureMarkdownRenderer(target)\n // markdown-it renderer expects '<br/>' strings to render correctly line breaks\n // Supporting multiline: https://stackoverflow.com/a/20543835\n text = text\n .map(e => {\n if (isLineBreakElement(e)) {\n return BR_STRING_TAG\n } else if (typeof e === 'string') {\n return e\n .replace(BR_STRING_TAG_REGEX, BR_STRING_TAG)\n .replace(ESCAPED_LINE_BREAK_REGEX, BR_STRING_TAG)\n } else {\n return String(e)\n }\n })\n .join('')\n return markdownRenderer.render(text)\n}\n\nconst linksRenderer = configureLinksRenderer()\nexport const renderLinks = text => {\n return linksRenderer.render(text)\n}\n\nexport const serializeMarkdown = children => {\n children = Array.isArray(children) ? children : [children]\n const text = children\n .filter(e => isLineBreakElement(e) || !e.type)\n .map(e => {\n if (Array.isArray(e)) {\n return serializeMarkdown(e)\n }\n if (isLineBreakElement(e)) {\n return ESCAPED_LINE_BREAK\n } else {\n return String(e).replace(BR_STRING_TAG_REGEX, ESCAPED_LINE_BREAK)\n }\n })\n .join('')\n return text\n}\n\nexport const toMarkdownChildren = children =>\n children.map(e => (isLineBreakElement(e) ? ESCAPED_LINE_BREAK : e))\n\nexport const getDefaultMarkdownStyle = color => `\n*{\n margin: 0px;\n}\n\na {\n text-decoration:none;\n}\n\na:link{\n color:${color}; \n}\n\na:visited {\n color:${color};\n}\n\na:hover {\n text-shadow: 0px 1px black;\n}\n\nblockquote {\n margin: 0;\n padding-left: 1.4rem;\n border-left: 4px solid #dadada; \n}\n\npre code {\n margin: 0;\n padding: 0;\n white-space: pre;\n border: none;\n background: transparent; \n}\n\npre {\n background-color: #f8f8f8;\n border: 1px solid #cccccc;\n font-size: 13px;\n line-height: 19px;\n overflow: auto;\n padding: 6px 10px;\n border-radius: 3px; \n}\n\ncode, tt {\n margin: 0 2px;\n padding: 0 5px;\n white-space: nowrap;\n border: 1px solid #eaeaea;\n background-color: #f8f8f8;\n border-radius: 3px; \n}\n\npre {\n background-color: #f8f8f8;\n border: 1px solid #cccccc;\n font-size: 13px;\n line-height: 19px;\n overflow: auto;\n padding: 6px 10px;\n border-radius: 3px; \n}\n\npre code, pre tt {\n background-color: transparent;\n border: none; \n}\n \ntable, td, th {\n border: 1px solid black;\n padding:10px;\n}\n`\nexport const getMarkdownStyle = (getThemeFn, defaultColor) => {\n return getThemeFn('markdownStyle', getDefaultMarkdownStyle(defaultColor))\n}\n"],"names":["MarkdownIt","isInWebviewApp","BR_STRING_TAG","BR_STRING_TAG_REGEX","ESCAPED_LINE_BREAK","ESCAPED_LINE_BREAK_REGEX","RegExp","isLineBreakElement","element","withLinksTarget","renderer","target","newRenderer","tokens","idx","options","_env","self","env","aIndex","configureLinksRenderer","linksRenderer","configureMarkdownRenderer","markdownRenderer","renderMarkdown","text","e","String","renderLinks","serializeMarkdown","children","Array","toMarkdownChildren","getDefaultMarkdownStyle","color","getMarkdownStyle","getThemeFn","defaultColor"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/message/index.js","sources":["../../../src/components/message/index.jsx"],"sourcesContent":["import { INPUT, isBrowser } from '@botonic/core'\nimport React, { useContext, useEffect, useState } from 'react'\nimport { v7 as uuidv7 } from 'uuid'\n\nimport { COLORS, WEBCHAT } from '../../constants'\nimport { RequestContext } from '../../contexts'\nimport { SENDERS } from '../../index-types'\nimport { Fade } from '../../shared/styles'\nimport { isDev } from '../../util/environment'\nimport { ConditionalWrapper, renderComponent } from '../../util/react'\nimport { WebchatContext } from '../../webchat/context'\nimport { Button } from '../button/index'\nimport { ButtonsDisabler } from '../buttons-disabler'\nimport { getMarkdownStyle, renderLinks, renderMarkdown } from '../markdown'\nimport { Reply } from '../reply'\nimport { MessageFooter } from './message-footer'\nimport { MessageImage } from './message-image'\nimport {\n BlobContainer,\n BlobText,\n BlobTick,\n BlobTickContainer,\n MessageContainer,\n} from './styles'\nimport { resolveMessageTimestamps } from './timestamps'\n\nexport const Message = props => {\n const { defaultTyping, defaultDelay } = useContext(RequestContext)\n let {\n type = '',\n blob = true,\n sentBy,\n delay = defaultDelay,\n typing = defaultTyping,\n children,\n enabletimestamps = props.enabletimestamps || props.enableTimestamps,\n json,\n style,\n imagestyle = props.imagestyle || props.imageStyle,\n isUnread = true,\n botInteractionId,\n markdown,\n ...otherProps\n } = props\n\n const isSentByUser = sentBy === SENDERS.user\n const isSentByBot = sentBy === SENDERS.bot\n const isSentBySystem = sentBy === SENDERS.system\n const { webchatState, addMessage, updateReplies, getThemeProperty } =\n useContext(WebchatContext)\n const [state] = useState({\n id: props.id || uuidv7(),\n })\n\n const [disabled, setDisabled] = useState(false)\n children = ButtonsDisabler.updateChildrenButtons(children, {\n parentId: state.id,\n disabled,\n setDisabled,\n })\n const replies = React.Children.toArray(children).filter(e => e.type === Reply)\n const buttons = React.Children.toArray(children).filter(\n e => e.type === Button\n )\n\n let textChildren = React.Children.toArray(children).filter(\n e => ![Button, Reply].includes(e.type)\n )\n if (isSentByUser) {\n textChildren = textChildren.map(e =>\n typeof e === 'string' ? renderLinks(e) : e\n )\n }\n\n const { timestampsEnabled, getFormattedTimestamp } = resolveMessageTimestamps(\n getThemeProperty,\n enabletimestamps\n )\n\n const getEnvAck = () => {\n if (isDev) {\n return 1\n }\n if (!isSentByUser) {\n return 1\n }\n if (props.ack !== undefined) {\n return props.ack\n }\n return 0\n }\n\n const ack = getEnvAck()\n\n useEffect(() => {\n if (isBrowser()) {\n const decomposedChildren = json\n const message = {\n id: state.id,\n type,\n data: decomposedChildren ? decomposedChildren : textChildren,\n timestamp: props.timestamp || getFormattedTimestamp,\n markdown,\n sentBy,\n buttons: buttons.map(b => ({\n parentId: b.props.parentId,\n payload: b.props.payload,\n path: b.props.path,\n url: b.props.url,\n target: b.props.target,\n webview: b.props.webview && String(b.props.webview),\n title: b.props.children,\n ...ButtonsDisabler.withDisabledProps(b.props),\n })),\n delay,\n typing,\n replies: replies.map(r => ({\n payload: r.props.payload,\n path: r.props.path,\n url: r.props.url,\n text: r.props.children,\n })),\n display: delay + typing === 0,\n customTypeName: decomposedChildren.customTypeName,\n ack: ack,\n isUnread: isUnread === 1 || isUnread === true,\n botInteractionId,\n }\n addMessage(message)\n }\n }, [])\n\n useEffect(() => {\n if (isBrowser()) {\n const msg = webchatState.messagesJSON.find(m => m.id === state.id)\n if (\n msg?.display &&\n webchatState.messagesJSON.filter(m => !m.display).length === 0\n ) {\n updateReplies(replies)\n }\n }\n }, [webchatState.messagesJSON])\n\n const brandColor = getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.brandColor)\n\n const getBgColor = () => {\n if (!blob) {\n return COLORS.TRANSPARENT\n }\n if (isSentByUser) {\n return getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.userMessageBackground,\n brandColor\n )\n }\n return getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.botMessageBackground,\n COLORS.SEASHELL_WHITE\n )\n }\n\n const getMessageStyle = () =>\n isSentByUser\n ? getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.userMessageStyle)\n : getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.botMessageStyle)\n\n const userOrBotMessage = isSentByUser ? SENDERS.user : SENDERS.bot\n const hasBlobTick = () =>\n getThemeProperty(`message.${userOrBotMessage}.blobTick`)\n\n const renderBrowser = () => {\n const messageJSON = webchatState.messagesJSON.find(m => m.id === state.id)\n if (!messageJSON || !messageJSON.display) {\n return <></>\n }\n\n if (messageJSON?.type === INPUT.SYSTEM_DEBUG_TRACE) {\n return children\n }\n\n const getBlobTick = pointerSize => {\n // to add a border to the blobTick we need to create two triangles and overlap them\n // that is why the color depends on the pointerSize\n // https://developpaper.com/realization-code-of-css-drawing-triangle-border-method/\n const color =\n pointerSize === 5\n ? getBgColor()\n : getThemeProperty(\n `message.${userOrBotMessage}.style.borderColor`,\n COLORS.TRANSPARENT\n )\n const containerStyle = {\n ...getThemeProperty(`message.${userOrBotMessage}.blobTickStyle`),\n }\n const blobTickStyle = {}\n if (isSentByUser) {\n containerStyle.right = 0\n containerStyle.marginRight = -pointerSize\n blobTickStyle.borderRight = 0\n blobTickStyle.borderLeftColor = color\n } else {\n containerStyle.left = 0\n containerStyle.marginLeft = -pointerSize\n blobTickStyle.borderLeft = 0\n blobTickStyle.borderRightColor = color\n }\n return (\n <BlobTickContainer style={containerStyle}>\n <BlobTick pointerSize={pointerSize} style={blobTickStyle} />\n </BlobTickContainer>\n )\n }\n\n const animationsEnabled = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.enableAnimations\n )\n\n const resolveCustomTypeName = () =>\n isSentByBot && type === INPUT.CUSTOM\n ? ` ${messageJSON.customTypeName}`\n : ''\n\n const className = `${type}-${userOrBotMessage}${resolveCustomTypeName()}`\n\n return (\n <ConditionalWrapper\n condition={animationsEnabled}\n wrapper={children => <Fade>{children}</Fade>}\n >\n <MessageContainer\n isSentByUser={isSentByUser}\n style={{\n ...getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.messageStyle),\n }}\n >\n <MessageImage imagestyle={imagestyle} sentBy={sentBy} />\n <BlobContainer\n className={className}\n issentbysystem={isSentBySystem}\n bgcolor={getBgColor()}\n color={isSentByUser ? COLORS.SOLID_WHITE : COLORS.SOLID_BLACK}\n blobwidth={getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.botMessageBlobWidth\n )}\n blob={blob}\n style={{\n ...getMessageStyle(),\n ...style,\n ...{ opacity: ack === 0 ? 0.6 : 1 },\n }}\n {...otherProps}\n >\n {markdown ? (\n <BlobText\n blob={blob}\n dangerouslySetInnerHTML={{\n __html: renderMarkdown(textChildren),\n }}\n markdownstyle={getMarkdownStyle(\n getThemeProperty,\n isSentByUser ? COLORS.SEASHELL_WHITE : brandColor\n )}\n />\n ) : (\n <BlobText blob={blob}>{textChildren}</BlobText>\n )}\n {!!buttons.length && (\n <div className='message-buttons-container'>{buttons}</div>\n )}\n {Boolean(blob) && hasBlobTick() && getBlobTick(6)}\n {Boolean(blob) && hasBlobTick() && getBlobTick(5)}\n </BlobContainer>\n </MessageContainer>\n {timestampsEnabled ? (\n <MessageFooter\n enabletimestamps={timestampsEnabled}\n messageJSON={messageJSON}\n sentBy={sentBy}\n />\n ) : null}\n </ConditionalWrapper>\n )\n }\n\n const { blob: _blob, json: _json, ...nodeProps } = props\n const renderNode = () =>\n type === INPUT.CUSTOM ? (\n <message\n json={JSON.stringify(_json)}\n typing={typing}\n delay={delay}\n {...nodeProps}\n />\n ) : (\n <message typing={typing} delay={delay} {...nodeProps}>\n {children}\n </message>\n )\n\n return renderComponent({ renderBrowser, renderNode })\n}\n"],"names":["INPUT","isBrowser","React","useContext","useEffect","useState","v7","uuidv7","COLORS","WEBCHAT","RequestContext","SENDERS","Fade","isDev","ConditionalWrapper","renderComponent","WebchatContext","Button","ButtonsDisabler","getMarkdownStyle","renderLinks","renderMarkdown","Reply","MessageFooter","MessageImage","BlobContainer","BlobText","BlobTick","BlobTickContainer","MessageContainer","resolveMessageTimestamps","Message","props","defaultTyping","defaultDelay","type","blob","sentBy","delay","typing","children","enabletimestamps","json","style","imagestyle","isUnread","botInteractionId","markdown","otherProps","isSentByUser","isSentByBot","isSentBySystem","webchatState","addMessage","updateReplies","getThemeProperty","state","disabled","setDisabled","replies","e","buttons","textChildren","timestampsEnabled","getFormattedTimestamp","getEnvAck","undefined","ack","decomposedChildren","message","b","String","r","msg","m","brandColor","getBgColor","getMessageStyle","userOrBotMessage","hasBlobTick","renderBrowser","messageJSON","getBlobTick","pointerSize","color","containerStyle","blobTickStyle","animationsEnabled","resolveCustomTypeName","className","Boolean","_blob","_json","nodeProps","renderNode","JSON"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { SENDERS } from '../../index-types.js';
|
|
2
|
+
interface MessageFooterProps {
|
|
3
|
+
enabletimestamps: boolean;
|
|
4
|
+
messageJSON: any;
|
|
5
|
+
sentBy: SENDERS;
|
|
6
|
+
}
|
|
7
|
+
export declare const MessageFooter: ({ enabletimestamps, messageJSON, sentBy, }: MessageFooterProps) => import("react").JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/message/message-footer.js","sources":["../../../src/components/message/message-footer.tsx"],"sourcesContent":["import { useContext } from 'react'\n\nimport { SENDERS } from '../../index-types'\nimport { WebchatContext } from '../../webchat/context'\nimport { MessageFooterContainer } from './styles'\nimport { MessageTimestamp, resolveMessageTimestamps } from './timestamps'\n\ninterface MessageFooterProps {\n enabletimestamps: boolean\n messageJSON: any\n sentBy: SENDERS\n}\n\nexport const MessageFooter = ({\n enabletimestamps,\n messageJSON,\n sentBy,\n}: MessageFooterProps) => {\n const { getThemeProperty } = useContext(WebchatContext)\n\n const { timestampsEnabled, timestampStyle } = resolveMessageTimestamps(\n getThemeProperty,\n enabletimestamps\n )\n const isSentByUser = sentBy === SENDERS.user\n const messageFooterClass = isSentByUser\n ? 'message-footer-user'\n : 'message-footer-bot'\n\n return (\n <MessageFooterContainer\n className={messageFooterClass}\n isSentByUser={isSentByUser}\n >\n {timestampsEnabled ? (\n <MessageTimestamp\n sentBy={sentBy}\n style={timestampStyle}\n timestamp={messageJSON.timestamp}\n />\n ) : null}\n </MessageFooterContainer>\n )\n}\n"],"names":["useContext","SENDERS","WebchatContext","MessageFooterContainer","MessageTimestamp","resolveMessageTimestamps","MessageFooter","enabletimestamps","messageJSON","sentBy","getThemeProperty","timestampsEnabled","timestampStyle","isSentByUser","messageFooterClass"],"mappings":";;;;;;;;;;;;;;AAAkC;AAES;AACW;AACL;AACwB;AAQlE,MAAMM,aAAaA,GAAG,CAAC,EAC5BC,gBAAgB,EAChBC,WAAW,EACXC,MAAM,EACa;IACnB,MAAM,EAAEC,gBAAgB,EAAE,GAAGV,UAAUA,CAACE,cAAcA;IAEtD,MAAM,EAAES,iBAAiB,EAAEC,cAAc,EAAE,GAAGP,wBAAwBA,CACpEK,kBACAH;IAEF,MAAMM,eAAeJ,WAAWR,YAAY;IAC5C,MAAMa,qBAAqBD,eACvB,wBACA;IAEJ,qBACE,IAACV,sBAAsBA;QACrB,WAAWW;QACX,cAAcD;kBAEbF,kCACC,IAACP,gBAAgBA;YACf,QAAQK;YACR,OAAOG;YACP,WAAWJ,YAAY,SAAS;aAEhC;;AAGV,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/message/message-image.js","sources":["../../../src/components/message/message-image.tsx"],"sourcesContent":["import { useContext } from 'react'\n\nimport { WEBCHAT } from '../../constants'\nimport { SENDERS } from '../../index-types'\nimport { resolveImage } from '../../util/environment'\nimport { WebchatContext } from '../../webchat/context'\nimport { BotMessageImageContainer } from './styles'\n\ninterface MessageImageProps {\n imagestyle: Record<string, unknown>\n sentBy: SENDERS\n}\n\nexport const MessageImage = ({ imagestyle, sentBy }: MessageImageProps) => {\n const { getThemeProperty } = useContext(WebchatContext)\n\n const isSentByAgent = sentBy === SENDERS.agent\n const isSentByUser = sentBy === SENDERS.user\n\n const timestampsWithImage = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.messageTimestampsWithImage\n )\n\n const BotMessageImage = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.botMessageImage,\n getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.brandImage)\n )\n\n const AgentMessageImage = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.agentMessageImage,\n BotMessageImage\n )\n\n return (\n !timestampsWithImage &&\n !isSentByUser &&\n BotMessageImage && (\n <BotMessageImageContainer\n style={{\n ...getThemeProperty(WEBCHAT.CUSTOM_PROPERTIES.botMessageImageStyle),\n ...imagestyle,\n }}\n >\n <img\n style={{ width: '100%' }}\n src={resolveImage(\n isSentByAgent ? AgentMessageImage : BotMessageImage\n )}\n />\n </BotMessageImageContainer>\n )\n )\n}\n"],"names":["useContext","WEBCHAT","SENDERS","resolveImage","WebchatContext","BotMessageImageContainer","MessageImage","imagestyle","sentBy","getThemeProperty","isSentByAgent","isSentByUser","timestampsWithImage","BotMessageImage","AgentMessageImage"],"mappings":";;;;;;;;;;;;;;;;AAAkC;AAEO;AACE;AACU;AACC;AACH;AAO5C,MAAMM,YAAYA,GAAG,CAAC,EAAEC,UAAU,EAAEC,MAAM,EAAqB;IACpE,MAAM,EAAEC,gBAAgB,EAAE,GAAGT,UAAUA,CAACI,cAAcA;IAEtD,MAAMM,gBAAgBF,WAAWN,aAAa;IAC9C,MAAMS,eAAeH,WAAWN,YAAY;IAE5C,MAAMU,sBAAsBH,iBAC1BR,oDAAoD;IAGtD,MAAMY,kBAAkBJ,iBACtBR,yCAAyC,EACzCQ,iBAAiBR,oCAAoC;IAGvD,MAAMa,oBAAoBL,iBACxBR,2CAA2C,EAC3CY;IAGF,OACE,CAACD,uBACD,CAACD,gBACDE,iCACE,IAACR,wBAAwBA;QACvB,OAAO;YACL,GAAGI,iBAAiBR,8CAA8C,CAAC;YACnE,GAAGM,UAAU;QACf;kBAEA,kBAAC;YACC,OAAO;gBAAE,OAAO;YAAO;YACvB,KAAKJ,YAAYA,CACfO,gBAAgBI,oBAAoBD;;;AAMhD,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/message/styles.js","sources":["../../../src/components/message/styles.ts"],"sourcesContent":["import styled from 'styled-components'\n\nimport { COLORS } from '../../constants'\n\ninterface MessageContainerProps {\n isSentByUser: boolean\n isSentBySystem: boolean\n}\n\nexport const MessageContainer = styled.div<MessageContainerProps>`\n display: flex;\n justify-content: ${props => (props.isSentByUser ? 'flex-end' : 'flex-start')};\n position: relative;\n padding: 0px 6px;\n`\n\nexport const BotMessageImageContainer = styled.div`\n width: 28px;\n padding: 12px 4px;\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n`\ninterface BlobContainerProps {\n bgcolor: string\n blob: boolean\n blobwidth?: string\n issentbysystem: boolean\n}\n\nexport const BlobContainer = styled.div<BlobContainerProps>`\n position: relative;\n margin: 8px;\n padding: ${props =>\n props.issentbysystem ? '4px 8px !important' : 'inherit'};\n border-radius: 8px;\n background-color: ${props => props.bgcolor};\n color: ${props => props.color};\n max-width: ${props =>\n props.blob\n ? props.blobwidth\n ? props.blobwidth\n : '60%'\n : 'calc(100% - 16px)'};\n`\ninterface BlobTextProps {\n blob: boolean\n markdownstyle: any\n}\n\nexport const BlobText = styled.div<BlobTextProps>`\n padding: ${props => (props.blob ? '8px 12px' : '0px')};\n display: flex;\n flex-direction: column;\n white-space: pre-line;\n ${props => props.markdownstyle}\n`\n\nexport const BlobTickContainer = styled.div`\n position: absolute;\n box-sizing: border-box;\n height: 100%;\n padding: 18px 0px 18px 0px;\n display: flex;\n top: 0;\n align-items: center;\n`\n\ninterface BlobTickProps {\n pointerSize: number\n}\n\nexport const BlobTick = styled.div<BlobTickProps>`\n position: relative;\n margin: -${props => props.pointerSize}px 0px;\n border: ${props => props.pointerSize}px solid ${COLORS.TRANSPARENT};\n`\ninterface TimestampContainerProps {\n isSentByUser: boolean\n}\n\nexport const TimestampContainer = styled.div<TimestampContainerProps>`\n display: flex;\n position: relative;\n justify-content: ${props => (props.isSentByUser ? 'flex-end' : 'flex-start')};\n align-items: center;\n gap: 10px;\n\n box-sizing: border-box;\n width: 100%;\n\n img {\n max-width: 20px;\n }\n`\ninterface TimestampTextProps {\n isSentByUser: boolean\n}\n\nexport const TimestampText = styled.div<TimestampTextProps>`\n @import url('https://fonts.googleapis.com/css?family=Lato');\n font-family: Lato;\n font-size: 10px;\n color: ${COLORS.SOLID_BLACK};\n text-align: ${props => (props.isSentByUser ? 'right' : 'left')};\n`\n\nexport const MessageFooterContainer = styled.div<TimestampContainerProps>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n box-sizing: border-box;\n padding: 0px 15px 4px 15px;\n padding-top: ${props => (props.isSentByUser ? '0px' : '4px')};\n width: 100%;\n`\n\nexport const FeedbackMessageContainer = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 4px;\n\n box-sizing: border-box;\n`\n\nexport const FeedbackButton = styled.button`\n display: flex;\n justify-content: center;\n align-items: center;\n\n background: none;\n box-sizing: border-box;\n border: none;\n border-radius: 4px;\n padding: 8px 8px;\n height: 24px;\n width: 24px;\n\n &:hover {\n cursor: pointer;\n background-color: #f4f3f4;\n }\n\n &:disabled {\n cursor: default;\n background: none;\n opacity: 0.3;\n }\n\n &.clicked {\n opacity: 0;\n transition: 1s 1s;\n }\n`\n"],"names":["styled","COLORS","MessageContainer","props","BotMessageImageContainer","BlobContainer","BlobText","BlobTickContainer","BlobTick","TimestampContainer","TimestampText","MessageFooterContainer","FeedbackMessageContainer","FeedbackButton"],"mappings":";;;;;AAAsC;AAEE;AAOjC,MAAME,gBAAgBA,GAAGF,qBAAiC,CAAC;;mBAE/C,EAAEG,CAAAA,QAAUA,MAAM,YAAY,GAAG,aAAa,aAAc;;;AAG/E,CAAC;AAEM,MAAMC,wBAAwBA,GAAGJ,qBAAU,CAAC;;;;;;;AAOnD,CAAC;AAQM,MAAMK,aAAaA,GAAGL,qBAA8B,CAAC;;;WAGjD,EAAEG,CAAAA,QACTA,MAAM,cAAc,GAAG,uBAAuB,UAAU;;oBAExC,EAAEA,CAAAA,QAASA,MAAM,OAAO,CAAC;SACpC,EAAEA,CAAAA,QAASA,MAAM,KAAK,CAAC;aACnB,EAAEA,CAAAA,QACXA,MAAM,IAAI,GACNA,MAAM,SAAS,GACbA,MAAM,SAAS,GACf,QACF,oBAAoB;AAC5B,CAAC;AAMM,MAAMG,QAAQA,GAAGN,qBAAyB,CAAC;WACvC,EAAEG,CAAAA,QAAUA,MAAM,IAAI,GAAG,aAAa,MAAO;;;;EAItD,EAAEA,CAAAA,QAASA,MAAM,aAAa,CAAC;AACjC,CAAC;AAEM,MAAMI,iBAAiBA,GAAGP,qBAAU,CAAC;;;;;;;;AAQ5C,CAAC;AAMM,MAAMQ,QAAQA,GAAGR,qBAAyB,CAAC;;WAEvC,EAAEG,CAAAA,QAASA,MAAM,WAAW,CAAC;UAC9B,EAAEA,CAAAA,QAASA,MAAM,WAAW,CAAC,SAAS,EAAEF,kBAAkB,CAAC;AACrE,CAAC;AAKM,MAAMQ,kBAAkBA,GAAGT,qBAAmC,CAAC;;;mBAGnD,EAAEG,CAAAA,QAAUA,MAAM,YAAY,GAAG,aAAa,aAAc;;;;;;;;;;AAU/E,CAAC;AAKM,MAAMO,aAAaA,GAAGV,qBAA8B,CAAC;;;;SAInD,EAAEC,kBAAkB,CAAC;cAChB,EAAEE,CAAAA,QAAUA,MAAM,YAAY,GAAG,UAAU,OAAQ;AACjE,CAAC;AAEM,MAAMQ,sBAAsBA,GAAGX,qBAAmC,CAAC;;;;;;;eAO3D,EAAEG,CAAAA,QAAUA,MAAM,YAAY,GAAG,QAAQ,MAAO;;AAE/D,CAAC;AAEM,MAAMS,wBAAwBA,GAAGZ,qBAAU,CAAC;;;;;;;AAOnD,CAAC;AAEM,MAAMa,cAAcA,GAAGb,wBAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4B5C,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SENDERS } from '../../index-types.js';
|
|
2
|
+
export declare const resolveMessageTimestamps: (getThemeProperty: any, timestampEnabled: any) => {
|
|
3
|
+
timestampsEnabled: boolean;
|
|
4
|
+
getFormattedTimestamp: any;
|
|
5
|
+
timestampStyle: any;
|
|
6
|
+
};
|
|
7
|
+
interface MessageTimestampProps {
|
|
8
|
+
timestamp: string;
|
|
9
|
+
style: Record<string, unknown>;
|
|
10
|
+
sentBy: SENDERS;
|
|
11
|
+
}
|
|
12
|
+
export declare const MessageTimestamp: ({ timestamp, style, sentBy, }: MessageTimestampProps) => import("react").JSX.Element;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/message/timestamps.js","sources":["../../../src/components/message/timestamps.tsx"],"sourcesContent":["import { useContext } from 'react'\n\nimport { WEBCHAT } from '../../constants'\nimport { SENDERS } from '../../index-types'\nimport { resolveImage } from '../../util'\nimport { WebchatContext } from '../../webchat/context'\nimport { TimestampContainer, TimestampText } from './styles'\n\nexport const resolveMessageTimestamps = (\n getThemeProperty,\n timestampEnabled\n) => {\n const timestampsFormat = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.messageTimestampsFormat\n )\n const timestampStyle = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.messageTimestampsStyle\n )\n const timestampsEnabled = Boolean(\n timestampEnabled !== undefined\n ? timestampEnabled\n : getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.enableMessageTimestamps,\n Boolean(timestampStyle) || Boolean(timestampsFormat) || false\n )\n )\n\n const defaultTimestampFormat = {\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n }\n\n const getFormattedTimestamp = timestampsFormat\n ? timestampsFormat()\n : // @ts-ignore\n new Date().toLocaleString(undefined, defaultTimestampFormat)\n\n return {\n timestampsEnabled,\n getFormattedTimestamp,\n timestampStyle,\n }\n}\n\ninterface MessageTimestampProps {\n timestamp: string\n style: Record<string, unknown>\n sentBy: SENDERS\n}\n\nexport const MessageTimestamp = ({\n timestamp,\n style,\n sentBy,\n}: MessageTimestampProps) => {\n const { getThemeProperty } = useContext(WebchatContext)\n\n const isSentByUser = sentBy === SENDERS.user\n const isSentByAgent = sentBy === SENDERS.agent\n\n const BotMessageImage = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.botMessageImage\n )\n\n const AgentMessageImage = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.agentMessageImage,\n BotMessageImage\n )\n\n const timestampsWithImage = getThemeProperty(\n WEBCHAT.CUSTOM_PROPERTIES.messageTimestampsWithImage\n )\n\n return (\n <TimestampContainer\n className={`botonic-timestamp-container ${sentBy}`}\n isSentByUser={isSentByUser}\n >\n {timestampsWithImage && BotMessageImage && !isSentByUser && (\n <img\n alt={isSentByAgent ? 'Agent message image' : 'Bot message image'}\n src={resolveImage(\n isSentByAgent ? AgentMessageImage : BotMessageImage\n )}\n />\n )}\n <TimestampText isSentByUser={isSentByUser} style={style}>\n {timestamp}\n </TimestampText>\n </TimestampContainer>\n )\n}\n"],"names":["useContext","WEBCHAT","SENDERS","resolveImage","WebchatContext","TimestampContainer","TimestampText","resolveMessageTimestamps","getThemeProperty","timestampEnabled","timestampsFormat","timestampStyle","timestampsEnabled","Boolean","undefined","defaultTimestampFormat","getFormattedTimestamp","Date","MessageTimestamp","timestamp","style","sentBy","isSentByUser","isSentByAgent","BotMessageImage","AgentMessageImage","timestampsWithImage"],"mappings":";;;;;;;;;;;;;;;;AAAkC;AAEO;AACE;AACF;AACa;AACM;AAErD,MAAMO,wBAAwBA,GAAG,CACtCC,kBACAC;IAEA,MAAMC,mBAAmBF,iBACvBP,iDAAiD;IAEnD,MAAMU,iBAAiBH,iBACrBP,gDAAgD;IAElD,MAAMW,oBAAoBC,QACxBJ,qBAAqBK,YACjBL,mBACAD,iBACEP,iDAAiD,EACjDY,QAAQF,mBAAmBE,QAAQH,qBAAqB;IAIhE,MAAMK,yBAAyB;QAC7B,OAAO;QACP,KAAK;QACL,MAAM;QACN,QAAQ;QACR,QAAQ;IACV;IAEA,MAAMC,wBAAwBN,mBAC1BA,qBAEA,IAAIO,OAAO,cAAc,CAACH,WAAWC;IAEzC,OAAO;QACLH;QACAI;QACAL;IACF;AACF,EAAC;AAQM,MAAMO,gBAAgBA,GAAG,CAAC,EAC/BC,SAAS,EACTC,KAAK,EACLC,MAAM,EACgB;IACtB,MAAM,EAAEb,gBAAgB,EAAE,GAAGR,UAAUA,CAACI,cAAcA;IAEtD,MAAMkB,eAAeD,WAAWnB,YAAY;IAC5C,MAAMqB,gBAAgBF,WAAWnB,aAAa;IAE9C,MAAMsB,kBAAkBhB,iBACtBP,yCAAyC;IAG3C,MAAMwB,oBAAoBjB,iBACxBP,2CAA2C,EAC3CuB;IAGF,MAAME,sBAAsBlB,iBAC1BP,oDAAoD;IAGtD,qBACE,KAACI,kBAAkBA;QACjB,WAAW,CAAC,4BAA4B,EAAEgB,QAAQ;QAClD,cAAcC;;YAEbI,uBAAuBF,mBAAmB,CAACF,8BAC1C,IAAC;gBACC,KAAKC,gBAAgB,wBAAwB;gBAC7C,KAAKpB,YAAYA,CACfoB,gBAAgBE,oBAAoBD;;0BAI1C,IAAClB,aAAaA;gBAAC,cAAcgB;gBAAc,OAAOF;0BAC/CD;;;;AAIT,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/message-template.js","sources":["../../src/components/message-template.jsx"],"sourcesContent":["/** biome-ignore-all lint/security/noDangerouslySetInnerHtml: MessageTemplate is a component that renders a message template */\nimport { renderComponent } from '../util/react'\n\nexport const MessageTemplate = props => {\n const renderBrowser = () => null\n const renderNode = () => (\n <message type='template'>\n <pre\n dangerouslySetInnerHTML={{ __html: JSON.stringify(props.payload) }}\n />\n </message>\n )\n return renderComponent({ renderBrowser, renderNode })\n}\n"],"names":["renderComponent","MessageTemplate","props","renderBrowser","renderNode","JSON"],"mappings":";;;;;;AAAA,6HAA6H,GAC9E;AAExC,MAAMC,eAAeA,GAAGC,CAAAA;IAC7B,MAAMC,gBAAgB,IAAM;IAC5B,MAAMC,aAAa,kBACjB,IAAC;YAAQ,MAAK;sBACZ,kBAAC;gBACC,yBAAyB;oBAAE,QAAQC,KAAK,SAAS,CAACH,MAAM,OAAO;gBAAE;;;IAIvE,OAAOF,eAAeA,CAAC;QAAEG;QAAeC;IAAW;AACrD,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/multichannel/facebook/facebook.js","sources":["../../../../src/components/multichannel/facebook/facebook.jsx"],"sourcesContent":["export const MAX_CHARACTERS_FACEBOOK = 640\n\nexport class MultichannelFacebook {\n convertText(props, originalText) {\n if (originalText.length > MAX_CHARACTERS_FACEBOOK) {\n const texts = this.splitText(originalText)\n const lastText = texts.pop()\n const { propsLastText, propsWithoutChildren } = this.getNewProps(\n props,\n lastText\n )\n return { texts, propsLastText, propsWithoutChildren }\n }\n return { propsLastText: props }\n }\n\n splitText(originalText) {\n const lines = originalText.split('\\n')\n const initialText = lines.shift()\n const texts = [initialText]\n let index = 0\n lines.forEach(currentText => {\n if (texts[index].length + currentText.length > MAX_CHARACTERS_FACEBOOK) {\n index++\n texts.push(currentText)\n } else {\n texts[index] = texts[index].concat('\\n', currentText)\n }\n })\n return texts\n }\n\n // modifies the props to keep the children only for the last text message, this message will be the one with buttons and replies\n getNewProps(props, lastText) {\n const propsLastText = { ...props }\n propsLastText.children = [lastText]\n if (Array.isArray(props.children)) {\n props.children\n .filter(e => e.type)\n .forEach(e => {\n propsLastText.children.push(e)\n })\n }\n const propsWithoutChildren = { ...props }\n delete propsWithoutChildren.children\n return { propsLastText, propsWithoutChildren }\n }\n}\n"],"names":["MAX_CHARACTERS_FACEBOOK","MultichannelFacebook","props","originalText","texts","lastText","propsLastText","propsWithoutChildren","lines","initialText","index","currentText","Array","e"],"mappings":"AAAO,MAAMA,uBAAuBA,GAAG,IAAG;AAEnC,MAAMC,oBAAoBA;IAC/B,YAAYC,KAAK,EAAEC,YAAY,EAAE;QAC/B,IAAIA,aAAa,MAAM,GAAGH,uBAAuBA,EAAE;YACjD,MAAMI,QAAQ,IAAI,CAAC,SAAS,CAACD;YAC7B,MAAME,WAAWD,MAAM,GAAG;YAC1B,MAAM,EAAEE,aAAa,EAAEC,oBAAoB,EAAE,GAAG,IAAI,CAAC,WAAW,CAC9DL,OACAG;YAEF,OAAO;gBAAED;gBAAOE;gBAAeC;YAAqB;QACtD;QACA,OAAO;YAAE,eAAeL;QAAM;IAChC;IAEA,UAAUC,YAAY,EAAE;QACtB,MAAMK,QAAQL,aAAa,KAAK,CAAC;QACjC,MAAMM,cAAcD,MAAM,KAAK;QAC/B,MAAMJ,QAAQ;YAACK;SAAY;QAC3B,IAAIC,QAAQ;QACZF,MAAM,OAAO,CAACG,CAAAA;YACZ,IAAIP,KAAK,CAACM,MAAM,CAAC,MAAM,GAAGC,YAAY,MAAM,GAAGX,uBAAuBA,EAAE;gBACtEU;gBACAN,MAAM,IAAI,CAACO;YACb,OAAO;gBACLP,KAAK,CAACM,MAAM,GAAGN,KAAK,CAACM,MAAM,CAAC,MAAM,CAAC,MAAMC;YAC3C;QACF;QACA,OAAOP;IACT;IAEA,gIAAgI;IAChI,YAAYF,KAAK,EAAEG,QAAQ,EAAE;QAC3B,MAAMC,gBAAgB;YAAE,GAAGJ,KAAK;QAAC;QACjCI,cAAc,QAAQ,GAAG;YAACD;SAAS;QACnC,IAAIO,MAAM,OAAO,CAACV,MAAM,QAAQ,GAAG;YACjCA,MAAM,QAAQ,CACX,MAAM,CAACW,CAAAA,IAAKA,EAAE,IAAI,EAClB,OAAO,CAACA,CAAAA;gBACPP,cAAc,QAAQ,CAAC,IAAI,CAACO;YAC9B;QACJ;QACA,MAAMN,uBAAuB;YAAE,GAAGL,KAAK;QAAC;QACxC,OAAOK,qBAAqB,QAAQ;QACpC,OAAO;YAAED;YAAeC;QAAqB;IAC/C;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/multichannel/index-types.js","sources":["../../../src/components/multichannel/index-types.ts"],"sourcesContent":["export type IndexMode = 'number' | 'letter' | undefined //undefined means no index\n\nexport interface MultichannelViewOptions {\n boldIndex?: boolean\n indexSeparator?: string // after it, a space will always be added\n}\n\nexport interface MultichannelContextType extends MultichannelViewOptions {\n currentIndex: number | string // can be letter or number\n /** @see same field at MultichannelProps */\n messageSeparator?: string\n}\n\n// Text\nexport interface MultichannelTextProps extends MultichannelViewOptions {\n index?: string\n indexMode?: IndexMode\n /** Defaults to no separator between lines*/\n newline?: string\n buttonsAsText?: boolean\n buttonsTextSeparator?: string\n menuButtonTextWhatsappList?: string\n}\n\n// Carousel\nexport interface MultichannelCarouselProps extends MultichannelViewOptions {\n enableURL?: boolean\n}\n\n// Button\nexport interface MultichannelButtonProps {\n newline?: string\n path?: string\n payload?: string\n url?: string\n webview?: string\n asText?: boolean\n}\n\n// Reply\n\nexport interface MultichannelProps extends MultichannelViewOptions {\n firstIndex?: number | string\n carousel?: MultichannelCarouselProps\n text?: MultichannelTextProps\n /**\n * If undefined, each component will be served in a different botonic message\n * '' will concatenate in the same line\n * '\\n' will split in different lines\n * '\\n\\n' will separate with an empty line\n **/\n messageSeparator?: string\n}\n"],"names":[],"mappings":"AAuCA,QAAQ;AAaP"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Multichannel } from './multichannel.js';
|
|
2
|
+
import { MultichannelButton } from './multichannel-button.js';
|
|
3
|
+
import { MultichannelCarousel } from './multichannel-carousel.js';
|
|
4
|
+
import { MultichannelReply } from './multichannel-reply.js';
|
|
5
|
+
import { MultichannelText } from './multichannel-text.js';
|
|
6
|
+
export * from './index-types.js';
|
|
7
|
+
export { Multichannel, MultichannelButton, MultichannelCarousel, MultichannelReply, MultichannelText, };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export * from "./index-types.js";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
export { Multichannel } from "./multichannel.js";
|
|
16
|
+
export { MultichannelButton } from "./multichannel-button.js";
|
|
17
|
+
export { MultichannelCarousel } from "./multichannel-carousel.js";
|
|
18
|
+
export { MultichannelReply } from "./multichannel-reply.js";
|
|
19
|
+
export { MultichannelText } from "./multichannel-text.js";
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/multichannel/index.js","sources":["../../../src/components/multichannel/index.ts"],"sourcesContent":["import { Multichannel } from './multichannel'\nimport { MultichannelButton } from './multichannel-button'\nimport { MultichannelCarousel } from './multichannel-carousel'\nimport { MultichannelReply } from './multichannel-reply'\nimport { MultichannelText } from './multichannel-text'\n\nexport * from './index-types'\nexport {\n Multichannel,\n MultichannelButton,\n MultichannelCarousel,\n MultichannelReply,\n MultichannelText,\n}\n"],"names":["Multichannel","MultichannelButton","MultichannelCarousel","MultichannelReply","MultichannelText"],"mappings":";;;;;;AAA6C;AACa;AACI;AACN;AACF;AAEzB;AAO5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/multichannel/multichannel-button.js","sources":["../../../src/components/multichannel/multichannel-button.jsx"],"sourcesContent":["import { isWhatsapp } from '@botonic/core'\nimport { useContext } from 'react'\n\nimport { RequestContext } from '../../contexts'\nimport { truncateText } from '../../util'\nimport { Button } from '../button/index'\nimport { COMPONENT_DISPLAY_NAMES } from '../constants'\nimport { MultichannelContext } from './multichannel-context'\nimport { WHATSAPP_MAX_BUTTON_CHARS } from './whatsapp/constants'\n\nexport const MultichannelButton = props => {\n const requestContext = useContext(RequestContext)\n const multichannelContext = useContext(MultichannelContext)\n\n const hasUrl = () => Boolean(props.url)\n\n const hasPath = () => Boolean(props.path)\n\n const hasPayload = () => Boolean(props.payload)\n\n const hasPostback = () => hasPath() || hasPayload()\n\n const hasWebview = () => Boolean(props.webview)\n\n const getUrl = () => props.url\n const _getWebview = () => props.webview\n\n const increaseCurrentIndex = () => {\n if (typeof multichannelContext.currentIndex === 'number') {\n multichannelContext.currentIndex += 1\n } else if (typeof multichannelContext.currentIndex === 'string') {\n const lastChar = multichannelContext.currentIndex.charCodeAt(\n multichannelContext.currentIndex.length - 1\n )\n multichannelContext.currentIndex = String.fromCharCode(lastChar + 1)\n }\n }\n\n const formatIndex = index => {\n const boldIndex = multichannelContext.boldIndex ?? false\n return boldIndex ? `*${index}*` : index\n }\n\n const getText = () => {\n let text = props.children\n const newline = props.newline || ''\n const separator = multichannelContext.indexSeparator || ' '\n const index = multichannelContext.currentIndex\n ? `${formatIndex(multichannelContext.currentIndex + separator)} `\n : ''\n if (hasPostback()) {\n text = `${newline}${index}${text}`\n } else if (hasUrl()) {\n text = `${newline}- ${text}`\n }\n return text\n }\n\n if (isWhatsapp(requestContext.session)) {\n const asText = props.asText ?? true\n if (asText) {\n if (hasUrl()) {\n return `${getText()}: ${getUrl()}`\n } else if (hasPath() || hasPayload()) {\n const text = getText()\n increaseCurrentIndex()\n return `${text}`\n } else if (hasWebview()) {\n return <Button {...props}>{getText()}</Button>\n }\n }\n return (\n <Button {...props}>\n {truncateText(props.children, WHATSAPP_MAX_BUTTON_CHARS)}\n </Button>\n )\n }\n return <Button {...props}>{props.children}</Button>\n}\n\nMultichannelButton.displayName = COMPONENT_DISPLAY_NAMES.MultichannelButton\n"],"names":["isWhatsapp","useContext","RequestContext","truncateText","Button","COMPONENT_DISPLAY_NAMES","MultichannelContext","WHATSAPP_MAX_BUTTON_CHARS","MultichannelButton","props","requestContext","multichannelContext","hasUrl","Boolean","hasPath","hasPayload","hasPostback","hasWebview","getUrl","_getWebview","increaseCurrentIndex","lastChar","String","formatIndex","index","boldIndex","getText","text","newline","separator","asText"],"mappings":";;;;;;;;;;;;;;;;;;;;AAA0C;AACR;AAEa;AACN;AACD;AACc;AACM;AACI;AAEzD,MAAMQ,kBAAkBA,GAAGC,CAAAA;IAChC,MAAMC,iBAAiBT,UAAUA,CAACC,cAAcA;IAChD,MAAMS,sBAAsBV,UAAUA,CAACK,mBAAmBA;IAE1D,MAAMM,SAAS,IAAMC,QAAQJ,MAAM,GAAG;IAEtC,MAAMK,UAAU,IAAMD,QAAQJ,MAAM,IAAI;IAExC,MAAMM,aAAa,IAAMF,QAAQJ,MAAM,OAAO;IAE9C,MAAMO,cAAc,IAAMF,aAAaC;IAEvC,MAAME,aAAa,IAAMJ,QAAQJ,MAAM,OAAO;IAE9C,MAAMS,SAAS,IAAMT,MAAM,GAAG;IAC9B,MAAMU,cAAc,IAAMV,MAAM,OAAO;IAEvC,MAAMW,uBAAuB;QAC3B,IAAI,OAAOT,oBAAoB,YAAY,KAAK,UAAU;YACxDA,oBAAoB,YAAY,IAAI;QACtC,OAAO,IAAI,OAAOA,oBAAoB,YAAY,KAAK,UAAU;YAC/D,MAAMU,WAAWV,oBAAoB,YAAY,CAAC,UAAU,CAC1DA,oBAAoB,YAAY,CAAC,MAAM,GAAG;YAE5CA,oBAAoB,YAAY,GAAGW,OAAO,YAAY,CAACD,WAAW;QACpE;IACF;IAEA,MAAME,cAAcC,CAAAA;QAClB,MAAMC,YAAYd,oBAAoB,SAAS,IAAI;QACnD,OAAOc,YAAY,CAAC,CAAC,EAAED,MAAM,CAAC,CAAC,GAAGA;IACpC;IAEA,MAAME,UAAU;QACd,IAAIC,OAAOlB,MAAM,QAAQ;QACzB,MAAMmB,UAAUnB,MAAM,OAAO,IAAI;QACjC,MAAMoB,YAAYlB,oBAAoB,cAAc,IAAI;QACxD,MAAMa,QAAQb,oBAAoB,YAAY,GAC1C,GAAGY,YAAYZ,oBAAoB,YAAY,GAAGkB,WAAW,CAAC,CAAC,GAC/D;QACJ,IAAIb,eAAe;YACjBW,OAAO,GAAGC,UAAUJ,QAAQG,MAAM;QACpC,OAAO,IAAIf,UAAU;YACnBe,OAAO,GAAGC,QAAQ,EAAE,EAAED,MAAM;QAC9B;QACA,OAAOA;IACT;IAEA,IAAI3B,UAAUA,CAACU,eAAe,OAAO,GAAG;QACtC,MAAMoB,SAASrB,MAAM,MAAM,IAAI;QAC/B,IAAIqB,QAAQ;YACV,IAAIlB,UAAU;gBACZ,OAAO,GAAGc,UAAU,EAAE,EAAER,UAAU;YACpC,OAAO,IAAIJ,aAAaC,cAAc;gBACpC,MAAMY,OAAOD;gBACbN;gBACA,OAAO,GAAGO,MAAM;YAClB,OAAO,IAAIV,cAAc;gBACvB,qBAAO,IAACb,MAAMA;oBAAE,GAAGK,KAAK;8BAAGiB;;YAC7B;QACF;QACA,qBACE,IAACtB,MAAMA;YAAE,GAAGK,KAAK;sBACdN,YAAYA,CAACM,MAAM,QAAQ,EAAEF,yBAAyBA;;IAG7D;IACA,qBAAO,IAACH,MAAMA;QAAE,GAAGK,KAAK;kBAAGA,MAAM,QAAQ;;AAC3C,EAAC;AAEDD,kBAAkBA,CAAC,WAAW,GAAGH,0CAA0C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function MultichannelCarousel(props: any): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/multichannel/multichannel-carousel.js","sources":["../../../src/components/multichannel/multichannel-carousel.jsx"],"sourcesContent":["import {\n isDev,\n isFacebook,\n isInstagram,\n isWebchat,\n isWhatsapp,\n} from '@botonic/core'\nimport { useContext } from 'react'\n\nimport { RequestContext } from '../../contexts'\nimport { Button } from '../button/index'\nimport { Carousel } from '../carousel'\nimport { Image } from '../image'\nimport { Text } from '../text'\nimport { WhatsappCTAUrlButton } from '../whatsapp-cta-url-button'\nimport {\n getFilteredElements,\n isMultichannelButton,\n isNodePic,\n isNodeSubtitle,\n isNodeTitle,\n} from './multichannel-utils'\nimport { convertToMarkdownMeta } from './whatsapp/markdown-meta'\n\nexport const MultichannelCarousel = props => {\n const requestContext = useContext(RequestContext)\n\n if (isDev(requestContext.session) || isWebchat(requestContext.session)) {\n return <Carousel {...props}>{props.children}</Carousel>\n }\n\n const messages = []\n const childrenElements = props.children.map(e => e.props.children)\n\n childrenElements.forEach((element, i) => {\n const { imageProps, title, subtitle, buttons } =\n parseCarouselElement(element)\n\n const textMessage = getTextMessage(requestContext.session, title, subtitle)\n\n if (imageProps?.src) {\n const messageWithImage = <Image src={imageProps.src} />\n messages.push(messageWithImage)\n }\n\n if (\n isWhatsapp(requestContext.session) &&\n buttons.some(button => button.url)\n ) {\n const messageWithButtonUrl = (\n <WhatsappCTAUrlButton\n key={`carousel-element-${i}-cta-url`}\n body={title}\n footer={`_${subtitle}_`}\n displayText={buttons[0].text}\n url={buttons[0].url}\n />\n )\n messages.push(messageWithButtonUrl)\n }\n\n const messageWithButtons = buttons.some(button => button.payload) ? (\n <Text key={`carousel-element-${i}-text`}>\n {textMessage}\n {buttons\n .filter(button => isWhatsapp(requestContext.session) && !button.url)\n .map(button => (\n <Button\n key={`carousel-element-${i}-button`}\n payload={button.payload}\n url={button.url}\n >\n {button.text}\n </Button>\n ))}\n </Text>\n ) : (\n []\n )\n messages.push(messageWithButtons)\n })\n\n return <>{messages}</>\n}\n\nfunction getButtons(node) {\n return [].concat(getFilteredElements(node, isMultichannelButton))\n}\n\nfunction parseCarouselElement(element) {\n let imageProps, title, subtitle\n const buttonsChildren = []\n\n for (const node of element) {\n if (isNodePic(node)) {\n imageProps = node.props\n }\n if (isNodeTitle(node)) {\n title = node.props.children\n }\n if (isNodeSubtitle(node)) {\n subtitle = node.props.children\n }\n if (isMultichannelButton(node)) {\n buttonsChildren.push(node)\n }\n if (Array.isArray(node)) {\n buttonsChildren.push(...getButtons(node))\n }\n }\n\n const buttons = buttonsChildren.map(button => {\n return {\n text: button.props.children,\n payload: button.props.payload,\n url: button.props.url,\n }\n })\n\n return { imageProps, title, subtitle, buttons }\n}\n\nfunction getTextMessage(session, title, subtitle) {\n const formattedTextMessage = `**${title}**${subtitle ? ` _${subtitle}_` : ''}`\n return isWhatsapp(session) || isFacebook(session) || isInstagram(session)\n ? convertToMarkdownMeta(formattedTextMessage)\n : formattedTextMessage\n}\n"],"names":["isDev","isFacebook","isInstagram","isWebchat","isWhatsapp","useContext","RequestContext","Button","Carousel","Image","Text","WhatsappCTAUrlButton","getFilteredElements","isMultichannelButton","isNodePic","isNodeSubtitle","isNodeTitle","convertToMarkdownMeta","MultichannelCarousel","props","requestContext","messages","childrenElements","e","element","i","imageProps","title","subtitle","buttons","parseCarouselElement","textMessage","getTextMessage","messageWithImage","button","messageWithButtonUrl","messageWithButtons","getButtons","node","buttonsChildren","Array","session","formattedTextMessage"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/multichannel/multichannel-context.js","sources":["../../../src/components/multichannel/multichannel-context.jsx"],"sourcesContent":["import React from 'react'\n\nexport const MultichannelContext = React.createContext({\n boldIndex: true,\n text: {\n indexMode: 'letter',\n },\n indexSeparator: '.',\n})\n"],"names":["React","MultichannelContext"],"mappings":";;;AAAyB;AAElB,MAAMC,mBAAmBA,iBAAGD,mBAAmB,CAAC;IACrD,WAAW;IACX,MAAM;QACJ,WAAW;IACb;IACA,gBAAgB;AAClB,GAAE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/multichannel/multichannel-reply.js","sources":["../../../src/components/multichannel/multichannel-reply.jsx"],"sourcesContent":["import { isWhatsapp } from '@botonic/core'\nimport { useContext } from 'react'\n\nimport { RequestContext } from '../../contexts'\nimport { COMPONENT_DISPLAY_NAMES } from '../constants'\nimport { Reply } from '../reply'\n\nexport const MultichannelReply = props => {\n const requestContext = useContext(RequestContext)\n const hasPath = () => Boolean(props.path)\n const hasPayload = () => Boolean(props.payload)\n const getText = () => `${props.children}`\n\n if (isWhatsapp(requestContext.session)) {\n if (hasPath() || hasPayload()) {\n return `${getText()}`\n }\n return null\n } else {\n return <Reply {...props}>{props.children}</Reply>\n }\n}\n\nMultichannelReply.displayName = COMPONENT_DISPLAY_NAMES.MultichannelReply\n"],"names":["isWhatsapp","useContext","RequestContext","COMPONENT_DISPLAY_NAMES","Reply","MultichannelReply","props","requestContext","hasPath","Boolean","hasPayload","getText"],"mappings":";;;;;;;;;;;;;;AAA0C;AACR;AAEa;AACO;AACtB;AAEzB,MAAMK,iBAAiBA,GAAGC,CAAAA;IAC/B,MAAMC,iBAAiBN,UAAUA,CAACC,cAAcA;IAChD,MAAMM,UAAU,IAAMC,QAAQH,MAAM,IAAI;IACxC,MAAMI,aAAa,IAAMD,QAAQH,MAAM,OAAO;IAC9C,MAAMK,UAAU,IAAM,GAAGL,MAAM,QAAQ,EAAE;IAEzC,IAAIN,UAAUA,CAACO,eAAe,OAAO,GAAG;QACtC,IAAIC,aAAaE,cAAc;YAC7B,OAAO,GAAGC,WAAW;QACvB;QACA,OAAO;IACT,OAAO;QACL,qBAAO,IAACP,KAAKA;YAAE,GAAGE,KAAK;sBAAGA,MAAM,QAAQ;;IAC1C;AACF,EAAC;AAEDD,iBAAiBA,CAAC,WAAW,GAAGF,yCAAyC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/multichannel/multichannel-text.js","sources":["../../../src/components/multichannel/multichannel-text.jsx"],"sourcesContent":["/* eslint-disable complexity */\nimport { INPUT, isFacebook, isInstagram, isWhatsapp } from '@botonic/core'\nimport React, { useContext } from 'react'\n\nimport { RequestContext } from '../../contexts'\nimport { WhatsappButtonList, WhatsappCTAUrlButton } from '..'\nimport { Reply } from '../reply'\nimport { Text } from '../text'\nimport { MultichannelFacebook } from './facebook/facebook'\nimport { MultichannelButton } from './multichannel-button'\nimport { MultichannelContext } from './multichannel-context'\nimport {\n buttonTypes,\n elementHasPostback,\n elementHasUrl,\n elementHasWebview,\n getButtonType,\n getMultichannelButtons,\n getMultichannelReplies,\n isNodeButton,\n} from './multichannel-utils'\nimport {\n DEFAULT_WHATSAPP_MAX_BUTTON_SEPARATOR,\n MENU_BUTTON_WHATSAPP_BUTTON_LIST,\n MULTICHANNEL_WHATSAPP_PROPS,\n WHATSAPP_LIST_MAX_BUTTONS,\n WHATSAPP_MAX_BUTTONS,\n} from './whatsapp/constants'\nimport { convertToMarkdownMeta } from './whatsapp/markdown-meta'\n\nexport const MultichannelText = props => {\n const requestContext = useContext(RequestContext)\n const multichannelContext = useContext(MultichannelContext)\n const postbackButtonsAsText = props.buttonsAsText ?? true\n\n let elements = []\n\n const getText = children => {\n children = Array.isArray(children) ? children : [children]\n const text = children\n .filter(e => e && !e.type)\n .map(e => {\n if (Array.isArray(e)) {\n return getText(e)\n } else {\n return String(e)\n }\n })\n .join('')\n if (text === undefined) {\n return []\n }\n return [text].filter(t => t !== '') // to avoid line breaks when the carousel doesn't have title or subtitle\n }\n\n const getButtonsAndReplies = () =>\n [].concat(\n getMultichannelButtons(React.Children.toArray(props.children)),\n getMultichannelReplies(React.Children.toArray(props.children))\n )\n\n const getWhatsappButtons = () => {\n const postbackButtons = []\n const urlButtons = []\n const webviewButtons = []\n for (const button of getButtonsAndReplies()) {\n if (elementHasUrl(button)) {\n urlButtons.push(button)\n } else if (elementHasWebview(button)) {\n webviewButtons.push(button)\n } else if (elementHasPostback(button)) {\n postbackButtons.push(button)\n }\n }\n return { postbackButtons, urlButtons, webviewButtons }\n }\n\n const getDefaultIndex = () => {\n if (props.indexMode === undefined) {\n return undefined\n }\n if (multichannelContext.currentIndex != null) {\n return multichannelContext.currentIndex\n }\n return props.indexMode === 'letter' ? 'a' : 1\n }\n\n const regenerateMultichannelButtons = (newLineFirstButton = true) => {\n const generator = (multichannelButton, i) => {\n const type = getButtonType(multichannelButton)\n const asText =\n type === buttonTypes.POSTBACK ? postbackButtonsAsText : true\n const newline =\n multichannelContext.messageSeparator == null &&\n !newLineFirstButton &&\n i === 0\n ? ''\n : '\\n'\n\n return (\n <MultichannelButton\n key={`${type}${i}`}\n newline={newline}\n asText={asText}\n {...multichannelButton.props}\n >\n {multichannelButton.props.children}\n </MultichannelButton>\n )\n }\n return generator\n }\n\n const splitInWhatsappListButtons = postbackButtons => {\n const messages = []\n for (\n let i = 0;\n i < postbackButtons.length;\n i += WHATSAPP_LIST_MAX_BUTTONS\n ) {\n messages.push(postbackButtons.slice(i, i + WHATSAPP_LIST_MAX_BUTTONS))\n }\n return messages\n }\n\n if (isWhatsapp(requestContext.session)) {\n const texts = getText(props.children)\n const { postbackButtons, urlButtons, webviewButtons } = getWhatsappButtons()\n\n const textElements = texts.map(text => {\n const textWithMarkdown = convertToMarkdownMeta(text)\n return (props.newline || '') + textWithMarkdown\n })\n\n const webviewButtonElements = webviewButtons.map(\n regenerateMultichannelButtons(false)\n )\n\n const buttonsTextSeparator =\n props.buttonsTextSeparator || DEFAULT_WHATSAPP_MAX_BUTTON_SEPARATOR\n\n const exceedWhatsAppMaxButtonNumber =\n !postbackButtonsAsText && postbackButtons.length > WHATSAPP_MAX_BUTTONS\n\n if (exceedWhatsAppMaxButtonNumber) {\n const menuButtonTextWhatsappList =\n props.menuButtonTextWhatsappList || MENU_BUTTON_WHATSAPP_BUTTON_LIST\n\n const urlButtonElements = urlButtons.map(\n regenerateMultichannelButtons(!!texts.length)\n )\n const postbackButtonElements = postbackButtons.map(\n regenerateMultichannelButtons(!!texts.length || !!urlButtons.length)\n )\n\n const messagesPostbackButtonList = splitInWhatsappListButtons(\n postbackButtonElements\n )\n\n const messages = messagesPostbackButtonList.map(\n (postbackButtons, index) => {\n if (postbackButtons.length <= WHATSAPP_MAX_BUTTONS) {\n return {\n type: INPUT.TEXT,\n children: [...buttonsTextSeparator, ...postbackButtons],\n }\n }\n const rows = postbackButtons.map(postbackButton => {\n const row = {\n id: postbackButton.props.path\n ? `__PATH_PAYLOAD__${postbackButton.props.path}`\n : postbackButton.props.payload,\n title: postbackButton.props.children,\n }\n return row\n })\n const whatsAppButtonListProps = {\n body: index === 0 ? texts.join('') : buttonsTextSeparator,\n button: menuButtonTextWhatsappList,\n sections: [{ rows }],\n }\n\n return {\n type: INPUT.WHATSAPP_BUTTON_LIST,\n props: whatsAppButtonListProps,\n }\n }\n )\n\n const messageWithUrlButtonElements = (\n <Text\n key={`msg-with-url-button`}\n {...MULTICHANNEL_WHATSAPP_PROPS}\n {...props}\n >\n {urlButtonElements}\n </Text>\n )\n\n const messageWithWebviewButtonElements = (\n <Text\n key={`msg-with-webview-button`}\n {...MULTICHANNEL_WHATSAPP_PROPS}\n {...props}\n >\n {buttonsTextSeparator}\n {webviewButtonElements}\n </Text>\n )\n\n return (\n <>\n {messages.map((message, i) => {\n if (message.type === INPUT.WHATSAPP_BUTTON_LIST) {\n return (\n <WhatsappButtonList\n key={`msg-${i}-whatsapp-list`}\n {...message.props}\n />\n )\n }\n return (\n <Text\n key={`msg-${i}-with-postback-buttons`}\n {...MULTICHANNEL_WHATSAPP_PROPS}\n {...props}\n >\n {message.children}\n </Text>\n )\n })}\n {urlButtonElements.length > 0 && messageWithUrlButtonElements}\n {webviewButtonElements.length > 0 && messageWithWebviewButtonElements}\n </>\n )\n }\n\n multichannelContext.currentIndex = getDefaultIndex()\n const postbackButtonElements = postbackButtons.map(\n regenerateMultichannelButtons(!!texts.length)\n )\n const urlButtonElements = urlButtons.map(\n regenerateMultichannelButtons(!!texts.length || !!postbackButtons.length)\n )\n\n elements = [].concat(\n [...textElements],\n [...postbackButtonElements],\n [...urlButtonElements]\n )\n\n if (postbackButtonElements.length === 0) {\n // Use texts[0] instead of textElements[0] as a body to avoid apply the markdownMeta function twice.\n // If the markdownMeta function is applied twice, bold is replaced by italics.\n const body = texts[0] || ''\n\n if (urlButtonElements.length === 1) {\n return (\n <WhatsappCTAUrlButton\n body={body}\n displayText={urlButtonElements[0].props.children}\n url={urlButtonElements[0].props.url}\n />\n )\n }\n\n if (webviewButtonElements.length === 1) {\n return (\n <WhatsappCTAUrlButton\n body={body}\n displayText={webviewButtonElements[0].props.children}\n webview={webviewButtonElements[0].props.webview}\n params={webviewButtonElements[0].props.params}\n />\n )\n }\n }\n\n if (multichannelContext.messageSeparator != null) {\n return elements\n }\n const messages = [\n <Text key={0} {...MULTICHANNEL_WHATSAPP_PROPS} {...props}>\n {elements}\n </Text>,\n ]\n if (webviewButtonElements.length) {\n messages.push(\n <Text key={1} {...MULTICHANNEL_WHATSAPP_PROPS} {...props}>\n {buttonsTextSeparator}\n {webviewButtonElements}\n </Text>\n )\n }\n\n return <>{messages}</>\n }\n\n if (\n isFacebook(requestContext.session) ||\n isInstagram(requestContext.session)\n ) {\n const text = getText(props.children)\n const multichannelFacebook = new MultichannelFacebook()\n const { texts, propsLastText, propsWithoutChildren } =\n multichannelFacebook.convertText(props, text[0])\n\n const [lastText, ...buttonsAndReplies] = propsLastText.children\n const replies = []\n\n if (buttonsAndReplies.length > 3) {\n buttonsAndReplies.forEach(button => {\n if (isNodeButton(button)) {\n replies.push(<Reply {...button.props} />)\n }\n })\n }\n\n return (\n <>\n {texts?.map((message, i) => (\n <Text key={`msg-${i}-text`} {...propsWithoutChildren}>\n {convertToMarkdownMeta(message)}\n </Text>\n ))}\n <Text {...propsLastText}>\n {convertToMarkdownMeta(lastText)}\n {replies.length > 0 ? replies : buttonsAndReplies}\n </Text>\n </>\n )\n }\n\n return <Text {...props}>{props.children}</Text>\n}\n"],"names":["INPUT","isFacebook","isInstagram","isWhatsapp","React","useContext","RequestContext","WhatsappButtonList","WhatsappCTAUrlButton","Reply","Text","MultichannelFacebook","MultichannelButton","MultichannelContext","buttonTypes","elementHasPostback","elementHasUrl","elementHasWebview","getButtonType","getMultichannelButtons","getMultichannelReplies","isNodeButton","DEFAULT_WHATSAPP_MAX_BUTTON_SEPARATOR","MENU_BUTTON_WHATSAPP_BUTTON_LIST","MULTICHANNEL_WHATSAPP_PROPS","WHATSAPP_LIST_MAX_BUTTONS","WHATSAPP_MAX_BUTTONS","convertToMarkdownMeta","MultichannelText","props","requestContext","multichannelContext","postbackButtonsAsText","elements","getText","children","Array","text","e","String","undefined","t","getButtonsAndReplies","getWhatsappButtons","postbackButtons","urlButtons","webviewButtons","button","getDefaultIndex","regenerateMultichannelButtons","newLineFirstButton","generator","multichannelButton","i","type","asText","newline","splitInWhatsappListButtons","messages","texts","textElements","textWithMarkdown","webviewButtonElements","buttonsTextSeparator","exceedWhatsAppMaxButtonNumber","menuButtonTextWhatsappList","urlButtonElements","postbackButtonElements","messagesPostbackButtonList","index","rows","postbackButton","row","whatsAppButtonListProps","messageWithUrlButtonElements","messageWithWebviewButtonElements","message","body","multichannelFacebook","propsLastText","propsWithoutChildren","lastText","buttonsAndReplies","replies"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/multichannel/multichannel-utils.js","sources":["../../../src/components/multichannel/multichannel-utils.ts"],"sourcesContent":["import { COMPONENT_DISPLAY_NAMES } from '../constants'\n\ninterface ReactElementWithDisplayName {\n type?: {\n displayName?: string\n }\n}\n\ninterface ElementWithProps {\n props?: {\n url?: string\n payload?: string\n path?: string\n webview?: unknown\n }\n}\n\nexport function isMultichannelButton(\n node?: ReactElementWithDisplayName\n): boolean {\n return node?.type?.displayName === COMPONENT_DISPLAY_NAMES.MultichannelButton\n}\n\nexport function isMultichannelReply(\n node?: ReactElementWithDisplayName\n): boolean {\n return node?.type?.displayName === COMPONENT_DISPLAY_NAMES.MultichannelReply\n}\n\nexport function isNodeText(node?: ReactElementWithDisplayName): boolean {\n return node?.type?.displayName === COMPONENT_DISPLAY_NAMES.Text\n}\n\nexport function isNodeButton(node?: ReactElementWithDisplayName): boolean {\n return node?.type?.displayName === COMPONENT_DISPLAY_NAMES.Button\n}\n\nexport function isNodeCarousel(node?: ReactElementWithDisplayName): boolean {\n return node?.type?.displayName === COMPONENT_DISPLAY_NAMES.Carousel\n}\n\nexport function isNodeReply(node?: ReactElementWithDisplayName): boolean {\n return node?.type?.displayName === COMPONENT_DISPLAY_NAMES.Reply\n}\n\nexport function isNodePic(node?: ReactElementWithDisplayName): boolean {\n return node?.type?.displayName === COMPONENT_DISPLAY_NAMES.Pic\n}\n\nexport function isNodeTitle(node?: ReactElementWithDisplayName): boolean {\n return node?.type?.displayName === COMPONENT_DISPLAY_NAMES.Title\n}\n\nexport function isNodeSubtitle(node?: ReactElementWithDisplayName): boolean {\n return node?.type?.displayName === COMPONENT_DISPLAY_NAMES.Subtitle\n}\n\nexport function elementHasUrl(element?: ElementWithProps): string | undefined {\n return element?.props?.url\n}\n\nexport function elementHasPostback(\n element?: ElementWithProps\n): string | undefined {\n return element?.props?.payload || element?.props?.path\n}\n\nexport function elementHasWebview(element?: ElementWithProps): unknown {\n return element?.props?.webview\n}\n\nexport const buttonTypes = {\n POSTBACK: 'postback',\n URL: 'url',\n WEBVIEW: 'webview',\n} as const\n\nexport type ButtonType = (typeof buttonTypes)[keyof typeof buttonTypes]\n\nexport function getButtonType(\n multichannelButton?: ElementWithProps\n): ButtonType | undefined {\n if (elementHasUrl(multichannelButton)) {\n return buttonTypes.URL\n }\n if (elementHasPostback(multichannelButton)) {\n return buttonTypes.POSTBACK\n }\n if (elementHasWebview(multichannelButton)) {\n return buttonTypes.WEBVIEW\n }\n\n return undefined\n}\n\nexport function getFilteredElements<T extends ReactElementWithDisplayName>(\n node: Iterable<T>,\n filter: (n: T) => boolean\n): T[] {\n const elements: T[] = []\n for (const n of node) {\n if (filter(n)) {\n elements.push(n)\n }\n }\n return elements\n}\n\nexport function getMultichannelButtons(\n node: Iterable<ReactElementWithDisplayName>\n): ReactElementWithDisplayName[] {\n return getFilteredElements(node, isMultichannelButton)\n}\n\nexport function getMultichannelReplies(\n node: Iterable<ReactElementWithDisplayName>\n): ReactElementWithDisplayName[] {\n return getFilteredElements(node, isMultichannelReply)\n}\n"],"names":["COMPONENT_DISPLAY_NAMES","isMultichannelButton","node","isMultichannelReply","isNodeText","isNodeButton","isNodeCarousel","isNodeReply","isNodePic","isNodeTitle","isNodeSubtitle","elementHasUrl","element","elementHasPostback","elementHasWebview","buttonTypes","getButtonType","multichannelButton","undefined","getFilteredElements","filter","elements","n","getMultichannelButtons","getMultichannelReplies"],"mappings":";;;AAAsD;AAiB/C,SAASC,oBAAoBA,CAClCC,IAAkC;IAElC,OAAOA,MAAM,MAAM,gBAAgBF,0CAA0C;AAC/E;AAEO,SAASG,mBAAmBA,CACjCD,IAAkC;IAElC,OAAOA,MAAM,MAAM,gBAAgBF,yCAAyC;AAC9E;AAEO,SAASI,UAAUA,CAACF,IAAkC;IAC3D,OAAOA,MAAM,MAAM,gBAAgBF,4BAA4B;AACjE;AAEO,SAASK,YAAYA,CAACH,IAAkC;IAC7D,OAAOA,MAAM,MAAM,gBAAgBF,8BAA8B;AACnE;AAEO,SAASM,cAAcA,CAACJ,IAAkC;IAC/D,OAAOA,MAAM,MAAM,gBAAgBF,gCAAgC;AACrE;AAEO,SAASO,WAAWA,CAACL,IAAkC;IAC5D,OAAOA,MAAM,MAAM,gBAAgBF,6BAA6B;AAClE;AAEO,SAASQ,SAASA,CAACN,IAAkC;IAC1D,OAAOA,MAAM,MAAM,gBAAgBF,2BAA2B;AAChE;AAEO,SAASS,WAAWA,CAACP,IAAkC;IAC5D,OAAOA,MAAM,MAAM,gBAAgBF,6BAA6B;AAClE;AAEO,SAASU,cAAcA,CAACR,IAAkC;IAC/D,OAAOA,MAAM,MAAM,gBAAgBF,gCAAgC;AACrE;AAEO,SAASW,aAAaA,CAACC,OAA0B;IACtD,OAAOA,SAAS,OAAO;AACzB;AAEO,SAASC,kBAAkBA,CAChCD,OAA0B;IAE1B,OAAOA,SAAS,OAAO,WAAWA,SAAS,OAAO;AACpD;AAEO,SAASE,iBAAiBA,CAACF,OAA0B;IAC1D,OAAOA,SAAS,OAAO;AACzB;AAEO,MAAMG,WAAWA,GAAG;IACzB,UAAU;IACV,KAAK;IACL,SAAS;AACX,EAAU;AAIH,SAASC,aAAaA,CAC3BC,kBAAqC;IAErC,IAAIN,aAAaA,CAACM,qBAAqB;QACrC,OAAOF,WAAWA,CAAC,GAAG;IACxB;IACA,IAAIF,kBAAkBA,CAACI,qBAAqB;QAC1C,OAAOF,WAAWA,CAAC,QAAQ;IAC7B;IACA,IAAID,iBAAiBA,CAACG,qBAAqB;QACzC,OAAOF,WAAWA,CAAC,OAAO;IAC5B;IAEA,OAAOG;AACT;AAEO,SAASC,mBAAmBA,CACjCjB,IAAiB,EACjBkB,MAAyB;IAEzB,MAAMC,WAAgB,EAAE;IACxB,KAAK,MAAMC,KAAKpB,KAAM;QACpB,IAAIkB,OAAOE,IAAI;YACbD,SAAS,IAAI,CAACC;QAChB;IACF;IACA,OAAOD;AACT;AAEO,SAASE,sBAAsBA,CACpCrB,IAA2C;IAE3C,OAAOiB,mBAAmBA,CAACjB,MAAMD,oBAAoBA;AACvD;AAEO,SAASuB,sBAAsBA,CACpCtB,IAA2C;IAE3C,OAAOiB,mBAAmBA,CAACjB,MAAMC,mBAAmBA;AACtD"}
|