@botonic/react 0.40.0 → 0.41.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/components/message/index.js +5 -1
- package/lib/cjs/components/message/index.js.map +1 -1
- package/lib/cjs/components/message/styles.d.ts +4 -2
- package/lib/cjs/components/message/styles.js +1 -0
- package/lib/cjs/components/message/styles.js.map +1 -1
- package/lib/cjs/components/system-debug-trace/debug-message.d.ts +7 -0
- package/lib/cjs/components/system-debug-trace/debug-message.js +62 -0
- package/lib/cjs/components/system-debug-trace/debug-message.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/events/ai-agent.d.ts +24 -0
- package/lib/cjs/components/system-debug-trace/events/ai-agent.js +60 -0
- package/lib/cjs/components/system-debug-trace/events/ai-agent.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/events/components/guardrail-item.d.ts +14 -0
- package/lib/cjs/components/system-debug-trace/events/components/guardrail-item.js +12 -0
- package/lib/cjs/components/system-debug-trace/events/components/guardrail-item.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/events/components/index.d.ts +2 -0
- package/lib/cjs/components/system-debug-trace/events/components/index.js +6 -0
- package/lib/cjs/components/system-debug-trace/events/components/index.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/events/components/sources-section.d.ts +11 -0
- package/lib/cjs/components/system-debug-trace/events/components/sources-section.js +21 -0
- package/lib/cjs/components/system-debug-trace/events/components/sources-section.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/events/constants.d.ts +15 -0
- package/lib/cjs/components/system-debug-trace/events/constants.js +19 -0
- package/lib/cjs/components/system-debug-trace/events/constants.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/events/fallback.d.ts +9 -0
- package/lib/cjs/components/system-debug-trace/events/fallback.js +19 -0
- package/lib/cjs/components/system-debug-trace/events/fallback.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/events/handoff-success.d.ts +9 -0
- package/lib/cjs/components/system-debug-trace/events/handoff-success.js +24 -0
- package/lib/cjs/components/system-debug-trace/events/handoff-success.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/events/index.d.ts +7 -0
- package/lib/cjs/components/system-debug-trace/events/index.js +11 -0
- package/lib/cjs/components/system-debug-trace/events/index.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/events/keyword.d.ts +10 -0
- package/lib/cjs/components/system-debug-trace/events/keyword.js +18 -0
- package/lib/cjs/components/system-debug-trace/events/keyword.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/events/knowledge-base.d.ts +17 -0
- package/lib/cjs/components/system-debug-trace/events/knowledge-base.js +42 -0
- package/lib/cjs/components/system-debug-trace/events/knowledge-base.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/events/knowledge-bases-types.d.ts +31 -0
- package/lib/cjs/components/system-debug-trace/events/knowledge-bases-types.js +3 -0
- package/lib/cjs/components/system-debug-trace/events/knowledge-bases-types.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/events/smart-intent.d.ts +7 -0
- package/lib/cjs/components/system-debug-trace/events/smart-intent.js +17 -0
- package/lib/cjs/components/system-debug-trace/events/smart-intent.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/hooks/use-knowledge-base-info.d.ts +19 -0
- package/lib/cjs/components/system-debug-trace/hooks/use-knowledge-base-info.js +129 -0
- package/lib/cjs/components/system-debug-trace/hooks/use-knowledge-base-info.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/hooks/use-last-label-position.d.ts +9 -0
- package/lib/cjs/components/system-debug-trace/hooks/use-last-label-position.js +72 -0
- package/lib/cjs/components/system-debug-trace/hooks/use-last-label-position.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/icons/brain.d.ts +2 -0
- package/lib/cjs/components/system-debug-trace/icons/brain.js +10 -0
- package/lib/cjs/components/system-debug-trace/icons/brain.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/icons/caret-down.d.ts +2 -0
- package/lib/cjs/components/system-debug-trace/icons/caret-down.js +10 -0
- package/lib/cjs/components/system-debug-trace/icons/caret-down.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/icons/caret-up.d.ts +2 -0
- package/lib/cjs/components/system-debug-trace/icons/caret-up.js +10 -0
- package/lib/cjs/components/system-debug-trace/icons/caret-up.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/icons/circle-check.d.ts +2 -0
- package/lib/cjs/components/system-debug-trace/icons/circle-check.js +10 -0
- package/lib/cjs/components/system-debug-trace/icons/circle-check.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/icons/file-pdf.d.ts +2 -0
- package/lib/cjs/components/system-debug-trace/icons/file-pdf.js +10 -0
- package/lib/cjs/components/system-debug-trace/icons/file-pdf.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/icons/file-word.d.ts +2 -0
- package/lib/cjs/components/system-debug-trace/icons/file-word.js +10 -0
- package/lib/cjs/components/system-debug-trace/icons/file-word.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/icons/hand.d.ts +2 -0
- package/lib/cjs/components/system-debug-trace/icons/hand.js +10 -0
- package/lib/cjs/components/system-debug-trace/icons/hand.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/icons/head-set.d.ts +2 -0
- package/lib/cjs/components/system-debug-trace/icons/head-set.js +10 -0
- package/lib/cjs/components/system-debug-trace/icons/head-set.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/icons/index.d.ts +13 -0
- package/lib/cjs/components/system-debug-trace/icons/index.js +17 -0
- package/lib/cjs/components/system-debug-trace/icons/index.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/icons/life-ring.d.ts +2 -0
- package/lib/cjs/components/system-debug-trace/icons/life-ring.js +10 -0
- package/lib/cjs/components/system-debug-trace/icons/life-ring.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/icons/link.d.ts +2 -0
- package/lib/cjs/components/system-debug-trace/icons/link.js +10 -0
- package/lib/cjs/components/system-debug-trace/icons/link.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/icons/quote-right.d.ts +2 -0
- package/lib/cjs/components/system-debug-trace/icons/quote-right.js +10 -0
- package/lib/cjs/components/system-debug-trace/icons/quote-right.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/icons/screwdriver-wrench.d.ts +2 -0
- package/lib/cjs/components/system-debug-trace/icons/screwdriver-wrench.js +10 -0
- package/lib/cjs/components/system-debug-trace/icons/screwdriver-wrench.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/icons/wand.d.ts +2 -0
- package/lib/cjs/components/system-debug-trace/icons/wand.js +10 -0
- package/lib/cjs/components/system-debug-trace/icons/wand.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/index.d.ts +10 -0
- package/lib/cjs/components/system-debug-trace/index.js +29 -0
- package/lib/cjs/components/system-debug-trace/index.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/styles.d.ts +26 -0
- package/lib/cjs/components/system-debug-trace/styles.js +267 -0
- package/lib/cjs/components/system-debug-trace/styles.js.map +1 -0
- package/lib/cjs/components/system-debug-trace/types.d.ts +13 -0
- package/lib/cjs/components/system-debug-trace/types.js +3 -0
- package/lib/cjs/components/system-debug-trace/types.js.map +1 -0
- package/lib/cjs/constants.d.ts +7 -0
- package/lib/cjs/constants.js +27 -20
- package/lib/cjs/constants.js.map +1 -1
- package/lib/cjs/index-types.d.ts +14 -2
- package/lib/cjs/index-types.js +1 -0
- package/lib/cjs/index-types.js.map +1 -1
- package/lib/cjs/message-utils.d.ts +1 -0
- package/lib/cjs/message-utils.js +3 -1
- package/lib/cjs/message-utils.js.map +1 -1
- package/lib/cjs/msg-to-botonic.js +5 -0
- package/lib/cjs/msg-to-botonic.js.map +1 -1
- package/lib/cjs/webchat/context/index.d.ts +1 -1
- package/lib/cjs/webchat/context/messages-reducer.js +9 -3
- package/lib/cjs/webchat/context/messages-reducer.js.map +1 -1
- package/lib/cjs/webchat/context/types.d.ts +2 -1
- package/lib/cjs/webchat/index.d.ts +1 -1
- package/lib/cjs/webchat/index.js.map +1 -1
- package/lib/cjs/webchat/message-list/index.js +11 -2
- package/lib/cjs/webchat/message-list/index.js.map +1 -1
- package/lib/cjs/webchat/message-list/styles.d.ts +5 -1
- package/lib/cjs/webchat/message-list/styles.js +3 -2
- package/lib/cjs/webchat/message-list/styles.js.map +1 -1
- package/lib/cjs/webchat/webchat.js +12 -0
- package/lib/cjs/webchat/webchat.js.map +1 -1
- package/lib/cjs/webchat-app.d.ts +4 -2
- package/lib/cjs/webchat-app.js +25 -10
- package/lib/cjs/webchat-app.js.map +1 -1
- package/lib/esm/components/message/index.js +5 -1
- package/lib/esm/components/message/index.js.map +1 -1
- package/lib/esm/components/message/styles.d.ts +4 -2
- package/lib/esm/components/message/styles.js +1 -0
- package/lib/esm/components/message/styles.js.map +1 -1
- package/lib/esm/components/system-debug-trace/debug-message.d.ts +7 -0
- package/lib/esm/components/system-debug-trace/debug-message.js +58 -0
- package/lib/esm/components/system-debug-trace/debug-message.js.map +1 -0
- package/lib/esm/components/system-debug-trace/events/ai-agent.d.ts +24 -0
- package/lib/esm/components/system-debug-trace/events/ai-agent.js +55 -0
- package/lib/esm/components/system-debug-trace/events/ai-agent.js.map +1 -0
- package/lib/esm/components/system-debug-trace/events/components/guardrail-item.d.ts +14 -0
- package/lib/esm/components/system-debug-trace/events/components/guardrail-item.js +7 -0
- package/lib/esm/components/system-debug-trace/events/components/guardrail-item.js.map +1 -0
- package/lib/esm/components/system-debug-trace/events/components/index.d.ts +2 -0
- package/lib/esm/components/system-debug-trace/events/components/index.js +3 -0
- package/lib/esm/components/system-debug-trace/events/components/index.js.map +1 -0
- package/lib/esm/components/system-debug-trace/events/components/sources-section.d.ts +11 -0
- package/lib/esm/components/system-debug-trace/events/components/sources-section.js +17 -0
- package/lib/esm/components/system-debug-trace/events/components/sources-section.js.map +1 -0
- package/lib/esm/components/system-debug-trace/events/constants.d.ts +15 -0
- package/lib/esm/components/system-debug-trace/events/constants.js +16 -0
- package/lib/esm/components/system-debug-trace/events/constants.js.map +1 -0
- package/lib/esm/components/system-debug-trace/events/fallback.d.ts +9 -0
- package/lib/esm/components/system-debug-trace/events/fallback.js +15 -0
- package/lib/esm/components/system-debug-trace/events/fallback.js.map +1 -0
- package/lib/esm/components/system-debug-trace/events/handoff-success.d.ts +9 -0
- package/lib/esm/components/system-debug-trace/events/handoff-success.js +19 -0
- package/lib/esm/components/system-debug-trace/events/handoff-success.js.map +1 -0
- package/lib/esm/components/system-debug-trace/events/index.d.ts +7 -0
- package/lib/esm/components/system-debug-trace/events/index.js +8 -0
- package/lib/esm/components/system-debug-trace/events/index.js.map +1 -0
- package/lib/esm/components/system-debug-trace/events/keyword.d.ts +10 -0
- package/lib/esm/components/system-debug-trace/events/keyword.js +14 -0
- package/lib/esm/components/system-debug-trace/events/keyword.js.map +1 -0
- package/lib/esm/components/system-debug-trace/events/knowledge-base.d.ts +17 -0
- package/lib/esm/components/system-debug-trace/events/knowledge-base.js +37 -0
- package/lib/esm/components/system-debug-trace/events/knowledge-base.js.map +1 -0
- package/lib/esm/components/system-debug-trace/events/knowledge-bases-types.d.ts +31 -0
- package/lib/esm/components/system-debug-trace/events/knowledge-bases-types.js +2 -0
- package/lib/esm/components/system-debug-trace/events/knowledge-bases-types.js.map +1 -0
- package/lib/esm/components/system-debug-trace/events/smart-intent.d.ts +7 -0
- package/lib/esm/components/system-debug-trace/events/smart-intent.js +13 -0
- package/lib/esm/components/system-debug-trace/events/smart-intent.js.map +1 -0
- package/lib/esm/components/system-debug-trace/hooks/use-knowledge-base-info.d.ts +19 -0
- package/lib/esm/components/system-debug-trace/hooks/use-knowledge-base-info.js +125 -0
- package/lib/esm/components/system-debug-trace/hooks/use-knowledge-base-info.js.map +1 -0
- package/lib/esm/components/system-debug-trace/hooks/use-last-label-position.d.ts +9 -0
- package/lib/esm/components/system-debug-trace/hooks/use-last-label-position.js +68 -0
- package/lib/esm/components/system-debug-trace/hooks/use-last-label-position.js.map +1 -0
- package/lib/esm/components/system-debug-trace/icons/brain.d.ts +2 -0
- package/lib/esm/components/system-debug-trace/icons/brain.js +6 -0
- package/lib/esm/components/system-debug-trace/icons/brain.js.map +1 -0
- package/lib/esm/components/system-debug-trace/icons/caret-down.d.ts +2 -0
- package/lib/esm/components/system-debug-trace/icons/caret-down.js +6 -0
- package/lib/esm/components/system-debug-trace/icons/caret-down.js.map +1 -0
- package/lib/esm/components/system-debug-trace/icons/caret-up.d.ts +2 -0
- package/lib/esm/components/system-debug-trace/icons/caret-up.js +6 -0
- package/lib/esm/components/system-debug-trace/icons/caret-up.js.map +1 -0
- package/lib/esm/components/system-debug-trace/icons/circle-check.d.ts +2 -0
- package/lib/esm/components/system-debug-trace/icons/circle-check.js +6 -0
- package/lib/esm/components/system-debug-trace/icons/circle-check.js.map +1 -0
- package/lib/esm/components/system-debug-trace/icons/file-pdf.d.ts +2 -0
- package/lib/esm/components/system-debug-trace/icons/file-pdf.js +6 -0
- package/lib/esm/components/system-debug-trace/icons/file-pdf.js.map +1 -0
- package/lib/esm/components/system-debug-trace/icons/file-word.d.ts +2 -0
- package/lib/esm/components/system-debug-trace/icons/file-word.js +6 -0
- package/lib/esm/components/system-debug-trace/icons/file-word.js.map +1 -0
- package/lib/esm/components/system-debug-trace/icons/hand.d.ts +2 -0
- package/lib/esm/components/system-debug-trace/icons/hand.js +6 -0
- package/lib/esm/components/system-debug-trace/icons/hand.js.map +1 -0
- package/lib/esm/components/system-debug-trace/icons/head-set.d.ts +2 -0
- package/lib/esm/components/system-debug-trace/icons/head-set.js +6 -0
- package/lib/esm/components/system-debug-trace/icons/head-set.js.map +1 -0
- package/lib/esm/components/system-debug-trace/icons/index.d.ts +13 -0
- package/lib/esm/components/system-debug-trace/icons/index.js +14 -0
- package/lib/esm/components/system-debug-trace/icons/index.js.map +1 -0
- package/lib/esm/components/system-debug-trace/icons/life-ring.d.ts +2 -0
- package/lib/esm/components/system-debug-trace/icons/life-ring.js +6 -0
- package/lib/esm/components/system-debug-trace/icons/life-ring.js.map +1 -0
- package/lib/esm/components/system-debug-trace/icons/link.d.ts +2 -0
- package/lib/esm/components/system-debug-trace/icons/link.js +6 -0
- package/lib/esm/components/system-debug-trace/icons/link.js.map +1 -0
- package/lib/esm/components/system-debug-trace/icons/quote-right.d.ts +2 -0
- package/lib/esm/components/system-debug-trace/icons/quote-right.js +6 -0
- package/lib/esm/components/system-debug-trace/icons/quote-right.js.map +1 -0
- package/lib/esm/components/system-debug-trace/icons/screwdriver-wrench.d.ts +2 -0
- package/lib/esm/components/system-debug-trace/icons/screwdriver-wrench.js +6 -0
- package/lib/esm/components/system-debug-trace/icons/screwdriver-wrench.js.map +1 -0
- package/lib/esm/components/system-debug-trace/icons/wand.d.ts +2 -0
- package/lib/esm/components/system-debug-trace/icons/wand.js +6 -0
- package/lib/esm/components/system-debug-trace/icons/wand.js.map +1 -0
- package/lib/esm/components/system-debug-trace/index.d.ts +10 -0
- package/lib/esm/components/system-debug-trace/index.js +25 -0
- package/lib/esm/components/system-debug-trace/index.js.map +1 -0
- package/lib/esm/components/system-debug-trace/styles.d.ts +26 -0
- package/lib/esm/components/system-debug-trace/styles.js +263 -0
- package/lib/esm/components/system-debug-trace/styles.js.map +1 -0
- package/lib/esm/components/system-debug-trace/types.d.ts +13 -0
- package/lib/esm/components/system-debug-trace/types.js +2 -0
- package/lib/esm/components/system-debug-trace/types.js.map +1 -0
- package/lib/esm/constants.d.ts +7 -0
- package/lib/esm/constants.js +27 -20
- package/lib/esm/constants.js.map +1 -1
- package/lib/esm/index-types.d.ts +14 -2
- package/lib/esm/index-types.js +1 -0
- package/lib/esm/index-types.js.map +1 -1
- package/lib/esm/message-utils.d.ts +1 -0
- package/lib/esm/message-utils.js +1 -0
- package/lib/esm/message-utils.js.map +1 -1
- package/lib/esm/msg-to-botonic.js +6 -1
- package/lib/esm/msg-to-botonic.js.map +1 -1
- package/lib/esm/webchat/context/index.d.ts +1 -1
- package/lib/esm/webchat/context/messages-reducer.js +9 -3
- package/lib/esm/webchat/context/messages-reducer.js.map +1 -1
- package/lib/esm/webchat/context/types.d.ts +2 -1
- package/lib/esm/webchat/index.d.ts +1 -1
- package/lib/esm/webchat/index.js.map +1 -1
- package/lib/esm/webchat/message-list/index.js +12 -3
- package/lib/esm/webchat/message-list/index.js.map +1 -1
- package/lib/esm/webchat/message-list/styles.d.ts +5 -1
- package/lib/esm/webchat/message-list/styles.js +2 -1
- package/lib/esm/webchat/message-list/styles.js.map +1 -1
- package/lib/esm/webchat/webchat.js +12 -0
- package/lib/esm/webchat/webchat.js.map +1 -1
- package/lib/esm/webchat-app.d.ts +4 -2
- package/lib/esm/webchat-app.js +25 -10
- package/lib/esm/webchat-app.js.map +1 -1
- package/package.json +4 -4
- package/src/components/message/index.jsx +6 -0
- package/src/components/message/styles.ts +6 -2
- package/src/components/system-debug-trace/debug-message.tsx +111 -0
- package/src/components/system-debug-trace/events/ai-agent.tsx +158 -0
- package/src/components/system-debug-trace/events/components/guardrail-item.tsx +53 -0
- package/src/components/system-debug-trace/events/components/index.ts +2 -0
- package/src/components/system-debug-trace/events/components/sources-section.tsx +66 -0
- package/src/components/system-debug-trace/events/constants.ts +15 -0
- package/src/components/system-debug-trace/events/fallback.tsx +31 -0
- package/src/components/system-debug-trace/events/handoff-success.tsx +43 -0
- package/src/components/system-debug-trace/events/index.ts +7 -0
- package/src/components/system-debug-trace/events/keyword.tsx +31 -0
- package/src/components/system-debug-trace/events/knowledge-base.tsx +115 -0
- package/src/components/system-debug-trace/events/knowledge-bases-types.ts +33 -0
- package/src/components/system-debug-trace/events/smart-intent.tsx +26 -0
- package/src/components/system-debug-trace/hooks/use-knowledge-base-info.tsx +170 -0
- package/src/components/system-debug-trace/hooks/use-last-label-position.ts +94 -0
- package/src/components/system-debug-trace/icons/brain.tsx +15 -0
- package/src/components/system-debug-trace/icons/caret-down.tsx +15 -0
- package/src/components/system-debug-trace/icons/caret-up.tsx +15 -0
- package/src/components/system-debug-trace/icons/circle-check.tsx +15 -0
- package/src/components/system-debug-trace/icons/file-pdf.tsx +15 -0
- package/src/components/system-debug-trace/icons/file-word.tsx +15 -0
- package/src/components/system-debug-trace/icons/hand.tsx +15 -0
- package/src/components/system-debug-trace/icons/head-set.tsx +15 -0
- package/src/components/system-debug-trace/icons/index.ts +13 -0
- package/src/components/system-debug-trace/icons/life-ring.tsx +15 -0
- package/src/components/system-debug-trace/icons/link.tsx +15 -0
- package/src/components/system-debug-trace/icons/quote-right.tsx +15 -0
- package/src/components/system-debug-trace/icons/screwdriver-wrench.tsx +15 -0
- package/src/components/system-debug-trace/icons/wand.tsx +15 -0
- package/src/components/system-debug-trace/index.tsx +46 -0
- package/src/components/system-debug-trace/styles.ts +286 -0
- package/src/components/system-debug-trace/types.ts +31 -0
- package/src/constants.js +27 -20
- package/src/index-types.ts +19 -1
- package/src/message-utils.js +2 -0
- package/src/msg-to-botonic.jsx +5 -0
- package/src/webchat/context/index.tsx +1 -1
- package/src/webchat/context/messages-reducer.ts +7 -3
- package/src/webchat/context/types.ts +6 -1
- package/src/webchat/index.ts +1 -1
- package/src/webchat/message-list/index.tsx +20 -6
- package/src/webchat/message-list/styles.ts +7 -1
- package/src/webchat/webchat.tsx +14 -0
- package/src/webchat-app.tsx +27 -6
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import styled from 'styled-components'
|
|
2
|
+
|
|
3
|
+
import { COLORS } from '../../constants'
|
|
4
|
+
|
|
5
|
+
export const StyledDebugContainer = styled.div`
|
|
6
|
+
display: flex;
|
|
7
|
+
flex-direction: column;
|
|
8
|
+
align-items: start;
|
|
9
|
+
justify-content: space-between;
|
|
10
|
+
gap: 12px;
|
|
11
|
+
|
|
12
|
+
background-color: ${COLORS.SOLID_WHITE};
|
|
13
|
+
border-radius: 6px;
|
|
14
|
+
font-family: 'Inter', sans-serif;
|
|
15
|
+
box-sizing: border-box;
|
|
16
|
+
margin: 0px 8px;
|
|
17
|
+
max-width: calc(100% - 16px);
|
|
18
|
+
width: 100%;
|
|
19
|
+
|
|
20
|
+
/* When collapsible (expanded or collapsed), entire container is hoverable and clickable */
|
|
21
|
+
&.collapsible {
|
|
22
|
+
cursor: pointer;
|
|
23
|
+
|
|
24
|
+
&:hover {
|
|
25
|
+
background-color: ${COLORS.N50};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
`
|
|
29
|
+
|
|
30
|
+
export const StyledDebugHeader = styled.div`
|
|
31
|
+
display: flex;
|
|
32
|
+
align-items: center;
|
|
33
|
+
justify-content: space-between;
|
|
34
|
+
box-sizing: border-box;
|
|
35
|
+
user-select: none;
|
|
36
|
+
border-radius: 6px;
|
|
37
|
+
padding: 8px 12px;
|
|
38
|
+
width: 100%;
|
|
39
|
+
`
|
|
40
|
+
|
|
41
|
+
export const StyledDebugArrow = styled.span`
|
|
42
|
+
display: inline-flex;
|
|
43
|
+
align-items: center;
|
|
44
|
+
justify-content: center;
|
|
45
|
+
width: 16px;
|
|
46
|
+
height: 16px;
|
|
47
|
+
flex-shrink: 0;
|
|
48
|
+
|
|
49
|
+
svg {
|
|
50
|
+
width: 100%;
|
|
51
|
+
height: 100%;
|
|
52
|
+
}
|
|
53
|
+
`
|
|
54
|
+
|
|
55
|
+
export const StyledDebugIcon = styled.span`
|
|
56
|
+
display: inline-flex;
|
|
57
|
+
align-items: center;
|
|
58
|
+
justify-content: center;
|
|
59
|
+
width: 14px;
|
|
60
|
+
height: 14px;
|
|
61
|
+
margin-right: 8px;
|
|
62
|
+
flex-shrink: 0;
|
|
63
|
+
|
|
64
|
+
svg {
|
|
65
|
+
width: 100%;
|
|
66
|
+
height: 100%;
|
|
67
|
+
}
|
|
68
|
+
`
|
|
69
|
+
|
|
70
|
+
export const StyledDebugTitle = styled.span`
|
|
71
|
+
flex: 1;
|
|
72
|
+
display: flex;
|
|
73
|
+
align-items: center;
|
|
74
|
+
|
|
75
|
+
font-weight: 600;
|
|
76
|
+
font-size: 12px;
|
|
77
|
+
color: ${COLORS.N700};
|
|
78
|
+
line-height: 1.5;
|
|
79
|
+
white-space: nowrap;
|
|
80
|
+
gap: 4px;
|
|
81
|
+
|
|
82
|
+
span {
|
|
83
|
+
font-weight: 400;
|
|
84
|
+
}
|
|
85
|
+
`
|
|
86
|
+
|
|
87
|
+
export const StyledDebugContent = styled.div`
|
|
88
|
+
display: flex;
|
|
89
|
+
flex-direction: column;
|
|
90
|
+
position: relative;
|
|
91
|
+
|
|
92
|
+
font-size: 12px;
|
|
93
|
+
line-height: 1.5;
|
|
94
|
+
color: ${COLORS.N700};
|
|
95
|
+
`
|
|
96
|
+
interface StyledDebugDetailProps {
|
|
97
|
+
$isLastItem?: boolean
|
|
98
|
+
}
|
|
99
|
+
export const StyledDebugDetail = styled.div<StyledDebugDetailProps>`
|
|
100
|
+
display: flex;
|
|
101
|
+
flex-direction: column;
|
|
102
|
+
gap: 4px;
|
|
103
|
+
padding-left: 28px;
|
|
104
|
+
margin-bottom: ${({ $isLastItem }) => ($isLastItem ? '0' : '8px')};
|
|
105
|
+
line-height: 1.5;
|
|
106
|
+
`
|
|
107
|
+
|
|
108
|
+
export const StyledDebugLabel = styled.strong`
|
|
109
|
+
color: ${COLORS.N700};
|
|
110
|
+
font-weight: 400;
|
|
111
|
+
font-size: 12px;
|
|
112
|
+
line-height: 1.5;
|
|
113
|
+
`
|
|
114
|
+
|
|
115
|
+
export const StyledDebugValue = styled.div`
|
|
116
|
+
display: flex;
|
|
117
|
+
align-items: center;
|
|
118
|
+
gap: 8px;
|
|
119
|
+
font-weight: 600;
|
|
120
|
+
font-size: 12px;
|
|
121
|
+
color: ${COLORS.N700};
|
|
122
|
+
line-height: 1.5;
|
|
123
|
+
|
|
124
|
+
> svg {
|
|
125
|
+
width: 14px;
|
|
126
|
+
height: 14px;
|
|
127
|
+
min-width: 14px;
|
|
128
|
+
min-height: 14px;
|
|
129
|
+
flex-shrink: 0;
|
|
130
|
+
display: block;
|
|
131
|
+
}
|
|
132
|
+
`
|
|
133
|
+
|
|
134
|
+
export const StyledDebugItemWithIcon = styled.div`
|
|
135
|
+
display: flex;
|
|
136
|
+
align-items: center;
|
|
137
|
+
gap: 8px;
|
|
138
|
+
padding: 0;
|
|
139
|
+
font-weight: 600;
|
|
140
|
+
font-size: 12px;
|
|
141
|
+
color: ${COLORS.N700};
|
|
142
|
+
line-height: 1.5;
|
|
143
|
+
|
|
144
|
+
&:not(:last-child) {
|
|
145
|
+
margin-bottom: 4px;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
> svg {
|
|
149
|
+
width: 14px;
|
|
150
|
+
height: 14px;
|
|
151
|
+
min-width: 14px;
|
|
152
|
+
min-height: 14px;
|
|
153
|
+
flex-shrink: 0;
|
|
154
|
+
display: block;
|
|
155
|
+
}
|
|
156
|
+
`
|
|
157
|
+
|
|
158
|
+
export const StyledDebugMetadata = styled.div`
|
|
159
|
+
margin-top: 8px;
|
|
160
|
+
padding-top: 12px;
|
|
161
|
+
border-top: 1px solid ${COLORS.N100};
|
|
162
|
+
color: ${COLORS.N700};
|
|
163
|
+
font-size: 12px;
|
|
164
|
+
padding-left: 28px;
|
|
165
|
+
|
|
166
|
+
> div {
|
|
167
|
+
margin-top: 6px;
|
|
168
|
+
font-weight: 400;
|
|
169
|
+
}
|
|
170
|
+
`
|
|
171
|
+
|
|
172
|
+
export const StyledSeeChunksButton = styled.button`
|
|
173
|
+
border: 1px solid #c4c6d0;
|
|
174
|
+
border-radius: 6px;
|
|
175
|
+
padding: 8px;
|
|
176
|
+
height: 28px;
|
|
177
|
+
background-color: transparent;
|
|
178
|
+
color: #413f48;
|
|
179
|
+
font-family: 'Inter', sans-serif;
|
|
180
|
+
font-size: 12px;
|
|
181
|
+
font-weight: 500;
|
|
182
|
+
line-height: 1.5;
|
|
183
|
+
cursor: pointer;
|
|
184
|
+
margin-left: 0;
|
|
185
|
+
margin-top: 4px;
|
|
186
|
+
display: flex;
|
|
187
|
+
align-items: center;
|
|
188
|
+
justify-content: center;
|
|
189
|
+
width: fit-content;
|
|
190
|
+
|
|
191
|
+
&:hover {
|
|
192
|
+
background-color: ${COLORS.N200};
|
|
193
|
+
}
|
|
194
|
+
`
|
|
195
|
+
interface StyledGuardrailItemProps {
|
|
196
|
+
$isLastItem?: boolean
|
|
197
|
+
}
|
|
198
|
+
export const StyledGuardrailItem = styled.div<StyledGuardrailItemProps>`
|
|
199
|
+
display: flex;
|
|
200
|
+
align-items: center;
|
|
201
|
+
gap: 8px;
|
|
202
|
+
padding-left: 28px;
|
|
203
|
+
margin-bottom: ${({ $isLastItem }) => ($isLastItem ? '0' : '8px')};
|
|
204
|
+
font-size: 12px;
|
|
205
|
+
line-height: 1.5;
|
|
206
|
+
color: ${COLORS.N700};
|
|
207
|
+
|
|
208
|
+
svg {
|
|
209
|
+
width: 14px;
|
|
210
|
+
height: 14px;
|
|
211
|
+
flex-shrink: 0;
|
|
212
|
+
}
|
|
213
|
+
`
|
|
214
|
+
|
|
215
|
+
export const StyledDebugContentWrapper = styled.div`
|
|
216
|
+
display: flex;
|
|
217
|
+
flex-direction: column;
|
|
218
|
+
gap: 8px;
|
|
219
|
+
position: relative;
|
|
220
|
+
|
|
221
|
+
/* Create line from first label to last label */
|
|
222
|
+
&::before {
|
|
223
|
+
content: '';
|
|
224
|
+
position: absolute;
|
|
225
|
+
left: 13px;
|
|
226
|
+
width: 1px;
|
|
227
|
+
background-color: ${COLORS.N100};
|
|
228
|
+
top: 0;
|
|
229
|
+
/* Height ends at last label's bottom position */
|
|
230
|
+
height: var(--last-label-bottom, 100%);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/* Change line color to N200 when collapsible event is hovered */
|
|
234
|
+
.collapsible:hover & {
|
|
235
|
+
&::before {
|
|
236
|
+
background-color: ${COLORS.N200};
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
`
|
|
240
|
+
|
|
241
|
+
export const StyledGuardrailLabel = styled.span`
|
|
242
|
+
font-weight: 600;
|
|
243
|
+
font-size: 12px;
|
|
244
|
+
line-height: 1.5;
|
|
245
|
+
color: ${COLORS.N700};
|
|
246
|
+
`
|
|
247
|
+
|
|
248
|
+
export const StyledGuardrailValue = styled.span`
|
|
249
|
+
font-weight: 400;
|
|
250
|
+
font-size: 12px;
|
|
251
|
+
line-height: 1.5;
|
|
252
|
+
color: ${COLORS.N700};
|
|
253
|
+
`
|
|
254
|
+
|
|
255
|
+
export const StyledSourceValue = styled.span`
|
|
256
|
+
font-weight: 600;
|
|
257
|
+
font-size: 12px;
|
|
258
|
+
line-height: 1.5;
|
|
259
|
+
color: ${COLORS.N700};
|
|
260
|
+
`
|
|
261
|
+
|
|
262
|
+
export const StyledFileSourceValue = styled(StyledSourceValue)`
|
|
263
|
+
display: block;
|
|
264
|
+
`
|
|
265
|
+
|
|
266
|
+
export const StyledUrlSourceValue = styled.a`
|
|
267
|
+
font-weight: 600;
|
|
268
|
+
font-size: 12px;
|
|
269
|
+
line-height: 1.5;
|
|
270
|
+
color: ${COLORS.N700};
|
|
271
|
+
text-decoration: none;
|
|
272
|
+
display: block;
|
|
273
|
+
overflow: hidden;
|
|
274
|
+
text-overflow: ellipsis;
|
|
275
|
+
white-space: nowrap;
|
|
276
|
+
max-width: 100%;
|
|
277
|
+
|
|
278
|
+
&:hover {
|
|
279
|
+
text-decoration: underline;
|
|
280
|
+
color: ${COLORS.BOTONIC_BLUE};
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
&:visited {
|
|
284
|
+
color: ${COLORS.N700};
|
|
285
|
+
}
|
|
286
|
+
`
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
AiAgentDebugEvent,
|
|
5
|
+
FallbackDebugEvent,
|
|
6
|
+
HandoffSuccessDebugEvent,
|
|
7
|
+
KeywordDebugEvent,
|
|
8
|
+
KnowledgeBaseDebugEvent,
|
|
9
|
+
SmartIntentDebugEvent,
|
|
10
|
+
} from './events'
|
|
11
|
+
|
|
12
|
+
export interface IconProps {
|
|
13
|
+
color?: string
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// Union type of all debug event types
|
|
17
|
+
export type DebugEvent =
|
|
18
|
+
| KeywordDebugEvent
|
|
19
|
+
| AiAgentDebugEvent
|
|
20
|
+
| KnowledgeBaseDebugEvent
|
|
21
|
+
| FallbackDebugEvent
|
|
22
|
+
| SmartIntentDebugEvent
|
|
23
|
+
| HandoffSuccessDebugEvent
|
|
24
|
+
|
|
25
|
+
export interface DebugEventConfig {
|
|
26
|
+
action: string
|
|
27
|
+
title: React.ReactNode
|
|
28
|
+
component: React.ComponentType<any> | null
|
|
29
|
+
icon?: React.ReactNode
|
|
30
|
+
collapsible?: boolean
|
|
31
|
+
}
|
package/src/constants.js
CHANGED
|
@@ -3,32 +3,37 @@ import UrlIcon from './assets/url-icon.png'
|
|
|
3
3
|
|
|
4
4
|
export const COLORS = {
|
|
5
5
|
// http://chir.ag/projects/name-that-color
|
|
6
|
-
APPLE_GREEN: '
|
|
7
|
-
BLEACHED_CEDAR_PURPLE: '
|
|
8
|
-
BOTONIC_BLUE: '
|
|
9
|
-
CACTUS_GREEN: '
|
|
10
|
-
CONCRETE_WHITE: '
|
|
11
|
-
CURIOUS_BLUE: '
|
|
12
|
-
DAINTREE_BLUE: '
|
|
13
|
-
ERROR_RED: '
|
|
14
|
-
FRINGY_FLOWER_GREEN: '
|
|
15
|
-
GRAY: '
|
|
16
|
-
LIGHT_GRAY: '
|
|
17
|
-
MID_GRAY: '
|
|
6
|
+
APPLE_GREEN: '#3A9C35',
|
|
7
|
+
BLEACHED_CEDAR_PURPLE: '#2E203B',
|
|
8
|
+
BOTONIC_BLUE: '#0099FF',
|
|
9
|
+
CACTUS_GREEN: '#60735E',
|
|
10
|
+
CONCRETE_WHITE: '#F3F3F3',
|
|
11
|
+
CURIOUS_BLUE: '#268BD2',
|
|
12
|
+
DAINTREE_BLUE: '#002B35',
|
|
13
|
+
ERROR_RED: '#FF2B5E',
|
|
14
|
+
FRINGY_FLOWER_GREEN: '#C6E7C0',
|
|
15
|
+
GRAY: '#818181',
|
|
16
|
+
LIGHT_GRAY: '#D1D1D1',
|
|
17
|
+
MID_GRAY: '#696973',
|
|
18
18
|
PIGEON_POST_BLUE_ALPHA_0_5: 'rgba(176, 196, 222, 0.5)',
|
|
19
|
-
RED_NOTIFICATIONS: '
|
|
20
|
-
SCORPION_GRAY: '
|
|
21
|
-
SEASHELL_WHITE: '
|
|
22
|
-
SILVER: '
|
|
19
|
+
RED_NOTIFICATIONS: '#FF426F',
|
|
20
|
+
SCORPION_GRAY: '#575757',
|
|
21
|
+
SEASHELL_WHITE: '#F1F0F0',
|
|
22
|
+
SILVER: '#C8C8C8',
|
|
23
23
|
SOLID_BLACK_ALPHA_0_2: 'rgba(0, 0, 0, 0.2)',
|
|
24
24
|
SOLID_BLACK_ALPHA_0_5: 'rgba(0, 0, 0, 0.5)',
|
|
25
|
-
SOLID_BLACK: '
|
|
25
|
+
SOLID_BLACK: '#000000',
|
|
26
26
|
SOLID_WHITE_ALPHA_0_2: 'rgba(255, 255, 255, 0.2)',
|
|
27
27
|
SOLID_WHITE_ALPHA_0_8: 'rgba(255, 255, 255, 0.8)',
|
|
28
|
-
SOLID_WHITE: '
|
|
29
|
-
TASMAN_GRAY: '
|
|
28
|
+
SOLID_WHITE: '#FFFFFF',
|
|
29
|
+
TASMAN_GRAY: '#D1D8CF',
|
|
30
30
|
TRANSPARENT: 'rgba(0, 0, 0, 0)',
|
|
31
|
-
WILD_SAND_WHITE: '
|
|
31
|
+
WILD_SAND_WHITE: '#F4F4F4',
|
|
32
|
+
N50: '#F0F0F3',
|
|
33
|
+
N100: '#E8E8EA',
|
|
34
|
+
N200: '#CAC9CE',
|
|
35
|
+
N500: '#6D6A78',
|
|
36
|
+
N700: '#393B45',
|
|
32
37
|
}
|
|
33
38
|
|
|
34
39
|
export const WEBCHAT = {
|
|
@@ -171,9 +176,11 @@ export const ROLES = {
|
|
|
171
176
|
WEBVIEW: 'webview',
|
|
172
177
|
WEBVIEW_HEADER: 'webview-header',
|
|
173
178
|
MESSAGE: 'message',
|
|
179
|
+
SYSTEM_MESSAGE: 'system-message',
|
|
174
180
|
IMAGE_MESSAGE: 'image-message',
|
|
175
181
|
AUDIO_MESSAGE: 'audio-message',
|
|
176
182
|
VIDEO_MESSAGE: 'video-message',
|
|
177
183
|
DOCUMENT_MESSAGE: 'document-message',
|
|
178
184
|
RAW_MESSAGE: 'raw-message',
|
|
185
|
+
SYSTEM_DEBUG_TRACE_MESSAGE: 'system-debug-trace-message',
|
|
179
186
|
}
|
package/src/index-types.ts
CHANGED
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
ReplyProps,
|
|
18
18
|
WebchatSettingsProps,
|
|
19
19
|
} from './components'
|
|
20
|
+
import { ChunkIdsGroupedBySourceData } from './components/system-debug-trace/events/knowledge-bases-types'
|
|
20
21
|
import { CloseWebviewOptions } from './contexts'
|
|
21
22
|
import { UseWebchat } from './webchat/context/use-webchat'
|
|
22
23
|
import {
|
|
@@ -48,6 +49,7 @@ export interface WebchatRef {
|
|
|
48
49
|
session,
|
|
49
50
|
lastRoutePath,
|
|
50
51
|
}: AddBotResponseArgs) => void
|
|
52
|
+
addSystemResponse: ({ response }: AddSystemResponseArgs) => void
|
|
51
53
|
setTyping: (typing: boolean) => void
|
|
52
54
|
addUserMessage: (message: any) => Promise<void>
|
|
53
55
|
updateUser: (userToUpdate: any) => void
|
|
@@ -75,6 +77,19 @@ interface AddBotResponseArgs {
|
|
|
75
77
|
lastRoutePath?: any
|
|
76
78
|
}
|
|
77
79
|
|
|
80
|
+
interface AddSystemResponseArgs {
|
|
81
|
+
response: any
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export interface PreviewUtils {
|
|
85
|
+
getChunkIdsGroupedBySource: (
|
|
86
|
+
chunkIds: string[]
|
|
87
|
+
) => Promise<ChunkIdsGroupedBySourceData[]>
|
|
88
|
+
onClickOpenChunks: (
|
|
89
|
+
chunkIdsGroupedBySource: ChunkIdsGroupedBySourceData[]
|
|
90
|
+
) => void
|
|
91
|
+
}
|
|
92
|
+
|
|
78
93
|
export interface WebchatArgs {
|
|
79
94
|
theme?: Partial<WebchatTheme>
|
|
80
95
|
persistentMenu?: PersistentMenuOptionsTheme
|
|
@@ -99,6 +114,7 @@ export interface WebchatArgs {
|
|
|
99
114
|
appId?: string
|
|
100
115
|
visibility?: boolean | (() => boolean) | 'dynamic'
|
|
101
116
|
server?: ServerConfig
|
|
117
|
+
previewUtils?: PreviewUtils
|
|
102
118
|
}
|
|
103
119
|
|
|
104
120
|
export interface WebchatProps {
|
|
@@ -121,6 +137,7 @@ export interface WebchatProps {
|
|
|
121
137
|
host?: any
|
|
122
138
|
server?: ServerConfig
|
|
123
139
|
localWebviews?: React.ComponentType[]
|
|
140
|
+
previewUtils?: PreviewUtils
|
|
124
141
|
}
|
|
125
142
|
|
|
126
143
|
export type EventArgs = { [key: string]: any }
|
|
@@ -134,6 +151,7 @@ export enum SENDERS {
|
|
|
134
151
|
bot = 'bot',
|
|
135
152
|
user = 'user',
|
|
136
153
|
agent = 'agent',
|
|
154
|
+
system = 'system',
|
|
137
155
|
}
|
|
138
156
|
|
|
139
157
|
export enum Typing {
|
|
@@ -197,4 +215,4 @@ interface UpdateMessageInfoEvent {
|
|
|
197
215
|
}
|
|
198
216
|
|
|
199
217
|
export { CaseEventQueuePositionChangedInput } from '@botonic/core'
|
|
200
|
-
export { WebchatTheme }
|
|
218
|
+
export { ChunkIdsGroupedBySourceData, WebchatTheme }
|
package/src/message-utils.js
CHANGED
|
@@ -15,6 +15,8 @@ export const isContact = msg => isOfType(msg.type, INPUT.CONTACT)
|
|
|
15
15
|
export const isCarousel = msg => isOfType(msg.type, INPUT.CAROUSEL)
|
|
16
16
|
export const isCustom = msg => isOfType(msg.type, INPUT.CUSTOM)
|
|
17
17
|
export const isButtonMessage = msg => isOfType(msg.type, INPUT.BUTTON_MESSAGE)
|
|
18
|
+
export const isSystemDebugTrace = msg =>
|
|
19
|
+
isOfType(msg.type, INPUT.SYSTEM_DEBUG_TRACE)
|
|
18
20
|
|
|
19
21
|
export const INPUT_MEDIA_TYPES = [
|
|
20
22
|
INPUT.AUDIO,
|
package/src/msg-to-botonic.jsx
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable complexity */
|
|
1
2
|
import React from 'react'
|
|
2
3
|
|
|
3
4
|
import { Audio } from './components/audio'
|
|
@@ -11,6 +12,7 @@ import { Location } from './components/location'
|
|
|
11
12
|
import { Pic } from './components/pic'
|
|
12
13
|
import { Reply } from './components/reply'
|
|
13
14
|
import { Subtitle } from './components/subtitle'
|
|
15
|
+
import { SystemDebugTrace } from './components/system-debug-trace'
|
|
14
16
|
import { Text } from './components/text'
|
|
15
17
|
import { Title } from './components/title'
|
|
16
18
|
import { Video } from './components/video'
|
|
@@ -22,6 +24,7 @@ import {
|
|
|
22
24
|
isDocument,
|
|
23
25
|
isImage,
|
|
24
26
|
isLocation,
|
|
27
|
+
isSystemDebugTrace,
|
|
25
28
|
isText,
|
|
26
29
|
isVideo,
|
|
27
30
|
} from './message-utils'
|
|
@@ -94,6 +97,8 @@ export function msgToBotonic(msg, customMessageTypes = []) {
|
|
|
94
97
|
</Text>
|
|
95
98
|
</>
|
|
96
99
|
)
|
|
100
|
+
} else if (isSystemDebugTrace(msg)) {
|
|
101
|
+
return <SystemDebugTrace {...msg} key={msg.key} />
|
|
97
102
|
}
|
|
98
103
|
console.warn(`Not converting message of type ${msg.type}`)
|
|
99
104
|
return null
|
|
@@ -2,7 +2,7 @@ import { createContext } from 'react'
|
|
|
2
2
|
|
|
3
3
|
import { WebchatContextProps, WebchatState } from './types'
|
|
4
4
|
|
|
5
|
-
export { WebchatState } from './types'
|
|
5
|
+
export { ClientSession, WebchatState } from './types'
|
|
6
6
|
export { useWebchat } from './use-webchat'
|
|
7
7
|
|
|
8
8
|
export const WebchatContext = createContext<WebchatContextProps>({
|
|
@@ -50,7 +50,8 @@ function addMessageComponent(
|
|
|
50
50
|
const messageComponent = action.payload
|
|
51
51
|
const isUnreadMessage =
|
|
52
52
|
messageComponent.props?.isUnread &&
|
|
53
|
-
messageComponent.props?.sentBy !== SENDERS.user
|
|
53
|
+
messageComponent.props?.sentBy !== SENDERS.user &&
|
|
54
|
+
messageComponent.props?.sentBy !== SENDERS.system
|
|
54
55
|
|
|
55
56
|
const numUnreadMessages = isUnreadMessage
|
|
56
57
|
? state.numUnreadMessages + 1
|
|
@@ -115,8 +116,11 @@ function updateMessageReducer(
|
|
|
115
116
|
? getUpdatedMessagesJSON(state, msgIndex, action.payload)
|
|
116
117
|
: state.messagesJSON
|
|
117
118
|
|
|
118
|
-
const numUnreadMessages =
|
|
119
|
-
messageComponent =>
|
|
119
|
+
const numUnreadMessages = updatedMessagesComponents.filter(
|
|
120
|
+
messageComponent =>
|
|
121
|
+
messageComponent.props?.isUnread &&
|
|
122
|
+
messageComponent.props?.sentBy !== SENDERS.user &&
|
|
123
|
+
messageComponent.props?.sentBy !== SENDERS.system
|
|
120
124
|
).length
|
|
121
125
|
|
|
122
126
|
return {
|
|
@@ -2,7 +2,11 @@ import { Input as CoreInput, Session as CoreSession } from '@botonic/core'
|
|
|
2
2
|
|
|
3
3
|
import { Reply, WebchatSettingsProps, Webview } from '../../components'
|
|
4
4
|
import { CloseWebviewOptions } from '../../contexts'
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
PreviewUtils,
|
|
7
|
+
TrackEventFunction,
|
|
8
|
+
WebchatMessage,
|
|
9
|
+
} from '../../index-types'
|
|
6
10
|
import { WebchatTheme } from '../theme/types'
|
|
7
11
|
|
|
8
12
|
export interface ErrorMessage {
|
|
@@ -86,6 +90,7 @@ export interface WebchatContextProps {
|
|
|
86
90
|
updateUser: (user: Partial<ClientUser>) => void
|
|
87
91
|
updateWebchatDevSettings: (settings: WebchatSettingsProps) => void
|
|
88
92
|
trackEvent?: TrackEventFunction
|
|
93
|
+
previewUtils?: PreviewUtils
|
|
89
94
|
webchatState: WebchatState
|
|
90
95
|
webchatContainerRef: React.MutableRefObject<HTMLDivElement | null>
|
|
91
96
|
chatAreaRef: React.MutableRefObject<HTMLDivElement | null>
|
package/src/webchat/index.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
+
import { INPUT } from '@botonic/core'
|
|
1
2
|
import React, { useContext, useEffect, useRef, useState } from 'react'
|
|
2
3
|
|
|
3
4
|
import { ROLES } from '../../constants'
|
|
5
|
+
import { SENDERS } from '../../index-types'
|
|
4
6
|
import { WebchatContext } from '../../webchat/context'
|
|
5
7
|
import { BotonicContainerId } from '../constants'
|
|
6
8
|
import TypingIndicator from '../typing-indicator'
|
|
7
9
|
import { IntroMessage } from './intro-message'
|
|
8
10
|
import { ScrollButton } from './scroll-button'
|
|
9
|
-
import {
|
|
11
|
+
import { MessageContainer, ScrollableMessageList } from './styles'
|
|
10
12
|
import { UnreadMessagesBanner } from './unread-messages-banner'
|
|
11
13
|
import { useNotifications } from './use-notifications'
|
|
12
|
-
|
|
13
14
|
const SCROLL_TIMEOUT = 200
|
|
14
15
|
const scrollOptionsEnd: ScrollIntoViewOptions = {
|
|
15
16
|
block: 'end',
|
|
@@ -133,16 +134,29 @@ export const WebchatMessageList = () => {
|
|
|
133
134
|
>
|
|
134
135
|
<IntroMessage />
|
|
135
136
|
{webchatState.messagesComponents.map((messageComponent, index) => {
|
|
137
|
+
const messageId = messageComponent.props.id
|
|
138
|
+
const sentBySystem = messageComponent.props?.sentBy === SENDERS.system
|
|
139
|
+
|
|
140
|
+
// Check if system message is followed by a regular message (user/bot)
|
|
141
|
+
const nextMessage = webchatState.messagesComponents[index + 1]
|
|
142
|
+
const isSystemMessageFollowedByMessage =
|
|
143
|
+
sentBySystem &&
|
|
144
|
+
nextMessage &&
|
|
145
|
+
nextMessage.props?.sentBy !== SENDERS.system
|
|
146
|
+
|
|
136
147
|
return (
|
|
137
|
-
<React.Fragment key={
|
|
138
|
-
<
|
|
139
|
-
{
|
|
148
|
+
<React.Fragment key={messageId}>
|
|
149
|
+
<MessageContainer
|
|
150
|
+
role={sentBySystem ? ROLES.SYSTEM_MESSAGE : ROLES.MESSAGE}
|
|
151
|
+
$isLastSystemMessage={isSystemMessageFollowedByMessage}
|
|
152
|
+
>
|
|
153
|
+
{showUnreadMessagesBanner(messageId) && (
|
|
140
154
|
<UnreadMessagesBanner
|
|
141
155
|
unreadMessagesBannerRef={unreadMessagesBannerRef}
|
|
142
156
|
/>
|
|
143
157
|
)}
|
|
144
158
|
{messageComponent}
|
|
145
|
-
</
|
|
159
|
+
</MessageContainer>
|
|
146
160
|
{index === webchatState.messagesComponents.length - 1 && (
|
|
147
161
|
<div
|
|
148
162
|
ref={lastMessageRef}
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import styled from 'styled-components'
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
interface MessageContainerProps {
|
|
4
|
+
$isLastSystemMessage?: boolean
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export const MessageContainer = styled.div<MessageContainerProps>`
|
|
4
8
|
display: flex;
|
|
5
9
|
overflow-x: hidden;
|
|
6
10
|
flex-direction: column;
|
|
7
11
|
flex: none;
|
|
8
12
|
white-space: pre;
|
|
9
13
|
word-wrap: break-word;
|
|
14
|
+
margin-bottom: ${({ $isLastSystemMessage }) =>
|
|
15
|
+
$isLastSystemMessage ? '8px' : '0'};
|
|
10
16
|
`
|
|
11
17
|
|
|
12
18
|
export const DefaultIntroImage = styled.img`
|
package/src/webchat/webchat.tsx
CHANGED
|
@@ -486,6 +486,19 @@ const Webchat = forwardRef<WebchatRef | null, WebchatProps>((props, ref) => {
|
|
|
486
486
|
|
|
487
487
|
updateLastMessageDate(currentDateString())
|
|
488
488
|
},
|
|
489
|
+
addSystemResponse: ({ response }) => {
|
|
490
|
+
if (Array.isArray(response)) {
|
|
491
|
+
response.forEach(r => {
|
|
492
|
+
addMessageComponent({ ...r, props: { ...r.props, isUnread: false } })
|
|
493
|
+
})
|
|
494
|
+
} else if (response) {
|
|
495
|
+
addMessageComponent({
|
|
496
|
+
...response,
|
|
497
|
+
props: { ...response.props, isUnread: false },
|
|
498
|
+
})
|
|
499
|
+
}
|
|
500
|
+
updateLastMessageDate(currentDateString())
|
|
501
|
+
},
|
|
489
502
|
setTyping: (typing: boolean) => updateTyping(typing),
|
|
490
503
|
addUserMessage: message => sendInput(message),
|
|
491
504
|
updateUser: updateSessionWithUser,
|
|
@@ -658,6 +671,7 @@ const Webchat = forwardRef<WebchatRef | null, WebchatProps>((props, ref) => {
|
|
|
658
671
|
updateUser: updateSessionWithUser,
|
|
659
672
|
updateWebchatDevSettings: updateWebchatDevSettings,
|
|
660
673
|
trackEvent: props.onTrackEvent,
|
|
674
|
+
previewUtils: props.previewUtils,
|
|
661
675
|
webchatState,
|
|
662
676
|
webchatContainerRef,
|
|
663
677
|
chatAreaRef,
|