@hgt-weprotalk/mira-client 0.1.26 → 0.1.28
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/dist/assets/launcher-BaqU_YNU.js +169 -0
- package/dist/components/chat-widget/ChatWidget.d.ts +1 -1
- package/dist/components/chat-widget/ChatWidget.d.ts.map +1 -1
- package/dist/components/chat-widget/feedback/ConfirmDialog.d.ts +11 -0
- package/dist/components/chat-widget/feedback/ConfirmDialog.d.ts.map +1 -0
- package/dist/components/chat-widget/feedback/FeedbackSheet.d.ts +11 -0
- package/dist/components/chat-widget/feedback/FeedbackSheet.d.ts.map +1 -0
- package/dist/components/chat-widget/guide-bubble/GuideBubble.d.ts +3 -0
- package/dist/components/chat-widget/guide-bubble/GuideBubble.d.ts.map +1 -0
- package/dist/components/chat-widget/guide-bubble/GuideBubbleBlock.d.ts +3 -0
- package/dist/components/chat-widget/guide-bubble/GuideBubbleBlock.d.ts.map +1 -0
- package/dist/components/chat-widget/guide-bubble/GuideBubbleGroup.d.ts +3 -0
- package/dist/components/chat-widget/guide-bubble/GuideBubbleGroup.d.ts.map +1 -0
- package/dist/components/chat-widget/handoff/HandoffForm.d.ts +21 -0
- package/dist/components/chat-widget/handoff/HandoffForm.d.ts.map +1 -0
- package/dist/components/chat-widget/hooks/index.d.ts +7 -0
- package/dist/components/chat-widget/hooks/index.d.ts.map +1 -0
- package/dist/components/chat-widget/hooks/useChatPanelViewportClamp.d.ts +7 -0
- package/dist/components/chat-widget/hooks/useChatPanelViewportClamp.d.ts.map +1 -0
- package/dist/components/chat-widget/hooks/useChatWidgetEmbedEffects.d.ts +13 -0
- package/dist/components/chat-widget/hooks/useChatWidgetEmbedEffects.d.ts.map +1 -0
- package/dist/components/chat-widget/hooks/useChatWidgetPanelState.d.ts +17 -0
- package/dist/components/chat-widget/hooks/useChatWidgetPanelState.d.ts.map +1 -0
- package/dist/components/chat-widget/hooks/useGuideBubbleHide.d.ts +10 -0
- package/dist/components/chat-widget/hooks/useGuideBubbleHide.d.ts.map +1 -0
- package/dist/components/chat-widget/hooks/useMessageFeedback.d.ts +27 -0
- package/dist/components/chat-widget/hooks/useMessageFeedback.d.ts.map +1 -0
- package/dist/components/chat-widget/hooks/useMessageListScroll.d.ts +16 -0
- package/dist/components/chat-widget/hooks/useMessageListScroll.d.ts.map +1 -0
- package/dist/components/chat-widget/input/ChatInput.d.ts +23 -0
- package/dist/components/chat-widget/input/ChatInput.d.ts.map +1 -0
- package/dist/components/chat-widget/input/QuickEntryZone.d.ts +15 -0
- package/dist/components/chat-widget/input/QuickEntryZone.d.ts.map +1 -0
- package/dist/components/chat-widget/launcher/ChatLauncher.d.ts +5 -0
- package/dist/components/chat-widget/launcher/ChatLauncher.d.ts.map +1 -0
- package/dist/components/chat-widget/launcher/LauncherButtonContent.d.ts +7 -0
- package/dist/components/chat-widget/launcher/LauncherButtonContent.d.ts.map +1 -0
- package/dist/components/chat-widget/messages/ChatMessage.d.ts +20 -0
- package/dist/components/chat-widget/messages/ChatMessage.d.ts.map +1 -0
- package/dist/components/chat-widget/messages/ChatMessageList.d.ts +5 -0
- package/dist/components/chat-widget/messages/ChatMessageList.d.ts.map +1 -0
- package/dist/components/chat-widget/messages/ChatMessageListBody.d.ts +5 -0
- package/dist/components/chat-widget/messages/ChatMessageListBody.d.ts.map +1 -0
- package/dist/components/chat-widget/messages/MessageBody.d.ts +14 -0
- package/dist/components/chat-widget/messages/MessageBody.d.ts.map +1 -0
- package/dist/components/chat-widget/messages/MessageFeedback.d.ts +18 -0
- package/dist/components/chat-widget/messages/MessageFeedback.d.ts.map +1 -0
- package/dist/components/chat-widget/messages/ScrollToBottomButton.d.ts +7 -0
- package/dist/components/chat-widget/messages/ScrollToBottomButton.d.ts.map +1 -0
- package/dist/components/chat-widget/messages/ThinkingStages.d.ts +8 -0
- package/dist/components/chat-widget/messages/ThinkingStages.d.ts.map +1 -0
- package/dist/components/chat-widget/panel/ChatHeader.d.ts +25 -0
- package/dist/components/chat-widget/panel/ChatHeader.d.ts.map +1 -0
- package/dist/components/chat-widget/panel/ChatPanel.d.ts +127 -0
- package/dist/components/chat-widget/panel/ChatPanel.d.ts.map +1 -0
- package/dist/components/chat-widget/product/ProductCard.d.ts +5 -0
- package/dist/components/chat-widget/product/ProductCard.d.ts.map +1 -0
- package/dist/components/chat-widget/product/ProductCardCarousel.d.ts +8 -0
- package/dist/components/chat-widget/product/ProductCardCarousel.d.ts.map +1 -0
- package/dist/components/chat-widget/session/SessionList.d.ts +5 -0
- package/dist/components/chat-widget/session/SessionList.d.ts.map +1 -0
- package/dist/components/chat-widget/shell/ChatWidgetBody.d.ts +5 -0
- package/dist/components/chat-widget/shell/ChatWidgetBody.d.ts.map +1 -0
- package/dist/components/chat-widget/shell/ChatWidgetPanel.d.ts +3 -0
- package/dist/components/chat-widget/shell/ChatWidgetPanel.d.ts.map +1 -0
- package/dist/components/chat-widget/toast/ChatToast.d.ts +10 -0
- package/dist/components/chat-widget/toast/ChatToast.d.ts.map +1 -0
- package/dist/components/chat-widget/toast/ChatToastContext.d.ts +15 -0
- package/dist/components/chat-widget/toast/ChatToastContext.d.ts.map +1 -0
- package/dist/components/chat-widget/types/chat-launcher.d.ts +10 -0
- package/dist/components/chat-widget/types/chat-launcher.d.ts.map +1 -0
- package/dist/components/chat-widget/types/chat-message-list-body.d.ts +32 -0
- package/dist/components/chat-widget/types/chat-message-list-body.d.ts.map +1 -0
- package/dist/components/chat-widget/types/chat-message-list.d.ts +57 -0
- package/dist/components/chat-widget/types/chat-message-list.d.ts.map +1 -0
- package/dist/components/chat-widget/types/chat-widget-panel.d.ts +19 -0
- package/dist/components/chat-widget/types/chat-widget-panel.d.ts.map +1 -0
- package/dist/components/chat-widget/types/chat-widget.d.ts +49 -0
- package/dist/components/chat-widget/types/chat-widget.d.ts.map +1 -0
- package/dist/components/chat-widget/types/guide-bubble-block.d.ts +5 -0
- package/dist/components/chat-widget/types/guide-bubble-block.d.ts.map +1 -0
- package/dist/components/chat-widget/types/guide-bubble-group.d.ts +5 -0
- package/dist/components/chat-widget/types/guide-bubble-group.d.ts.map +1 -0
- package/dist/components/chat-widget/types/guide-bubble.d.ts +8 -0
- package/dist/components/chat-widget/types/guide-bubble.d.ts.map +1 -0
- package/dist/components/chat-widget/types/index.d.ts +12 -0
- package/dist/components/chat-widget/types/index.d.ts.map +1 -0
- package/dist/components/chat-widget/types/product-card.d.ts +9 -0
- package/dist/components/chat-widget/types/product-card.d.ts.map +1 -0
- package/dist/components/chat-widget/types/session-list.d.ts +18 -0
- package/dist/components/chat-widget/types/session-list.d.ts.map +1 -0
- package/dist/components/chat-widget/ui/AgentAvatar.d.ts +9 -0
- package/dist/components/chat-widget/ui/AgentAvatar.d.ts.map +1 -0
- package/dist/components/chat-widget/ui/ImagePreviewContext.d.ts +17 -0
- package/dist/components/chat-widget/ui/ImagePreviewContext.d.ts.map +1 -0
- package/dist/components/chat-widget/ui/Tooltip.d.ts +10 -0
- package/dist/components/chat-widget/ui/Tooltip.d.ts.map +1 -0
- package/dist/components/chat-widget/utils/formatMessageTime.d.ts +3 -0
- package/dist/components/chat-widget/utils/formatMessageTime.d.ts.map +1 -0
- package/dist/components/chat-widget/utils/layoutTokens.d.ts +33 -0
- package/dist/components/chat-widget/utils/layoutTokens.d.ts.map +1 -0
- package/dist/components/chat-widget/utils/messageListScroll.d.ts +6 -0
- package/dist/components/chat-widget/utils/messageListScroll.d.ts.map +1 -0
- package/dist/components/chat-widget/utils/sessionListHelpers.d.ts +6 -0
- package/dist/components/chat-widget/utils/sessionListHelpers.d.ts.map +1 -0
- package/dist/config/runtime.d.ts +1 -1
- package/dist/config/runtime.d.ts.map +1 -1
- package/dist/embed/assets/frame-BDJz2sRg.js +81 -0
- package/dist/embed/assets/frame-CVuyjTIr.js +81 -0
- package/dist/embed/assets/frame-CzBYEcEP.js +81 -0
- package/dist/embed/assets/frame-DEzzB1gF.js +81 -0
- package/dist/embed/assets/frame-VdmCXt0d.js +81 -0
- package/dist/embed/assets/{lib-B5rNsQrQ.js → lib-BWifTX6x.js} +1 -1
- package/dist/embed/assets/{lib-B5x6C9n9.js → lib-CzKNIaFC.js} +1 -1
- package/dist/embed/assets/{lib-BAF6XxKl.js → lib-DbvjL_sS.js} +1 -1
- package/dist/embed/assets/{lib-BVMhVatM.js → lib-DhchZVO4.js} +1 -1
- package/dist/embed/assets/lib-kYkoLnAC.js +14 -0
- package/dist/embed/assets/{style-DiPXQIiL.css → style-ejd9bFYf.css} +1 -1
- package/dist/embed/chat-widget.js +2 -2
- package/dist/embed/frame.html +12 -12
- package/dist/embed/icons.svg +24 -24
- package/dist/hooks/handoff/openHandoffFormAcrossTabs.d.ts +3 -0
- package/dist/hooks/handoff/openHandoffFormAcrossTabs.d.ts.map +1 -0
- package/dist/hooks/handoff/useHandoffZendeskTabSync.d.ts +19 -0
- package/dist/hooks/handoff/useHandoffZendeskTabSync.d.ts.map +1 -0
- package/dist/hooks/useChat.d.ts.map +1 -1
- package/dist/hooks/useChatWidgetVisibleReconcile.d.ts +5 -0
- package/dist/hooks/useChatWidgetVisibleReconcile.d.ts.map +1 -0
- package/dist/hooks/useHandoff.d.ts.map +1 -1
- package/dist/hooks/useZendesk.d.ts +1 -0
- package/dist/hooks/useZendesk.d.ts.map +1 -1
- package/dist/icons.svg +24 -24
- package/dist/index.cjs +29 -29
- package/dist/index.js +11333 -11074
- package/dist/services/chat/index.d.ts.map +1 -1
- package/dist/services/chat/quickEntryMapper.d.ts.map +1 -1
- package/dist/services/tabSync/documentVisible.d.ts +12 -0
- package/dist/services/tabSync/documentVisible.d.ts.map +1 -0
- package/dist/services/tabSync/types.d.ts +4 -0
- package/dist/services/tabSync/types.d.ts.map +1 -1
- package/dist/services/tabSync/zendeskConversationInvalidate.d.ts +3 -0
- package/dist/services/tabSync/zendeskConversationInvalidate.d.ts.map +1 -0
- package/dist/services/zendesk/loadConversationHistory.d.ts +10 -0
- package/dist/services/zendesk/loadConversationHistory.d.ts.map +1 -0
- package/dist/store/handleTabSyncLegacyMessage.d.ts +8 -0
- package/dist/store/handleTabSyncLegacyMessage.d.ts.map +1 -0
- package/dist/store/runtime.d.ts +13 -0
- package/dist/store/runtime.d.ts.map +1 -1
- package/dist/store/slices/chatSlice.d.ts +1 -1
- package/dist/store/slices/chatSlice.d.ts.map +1 -1
- package/dist/store/slices/syncSlice.d.ts +4 -2
- package/dist/store/slices/syncSlice.d.ts.map +1 -1
- package/dist/store/syncTypes.d.ts +13 -0
- package/dist/store/syncTypes.d.ts.map +1 -1
- package/dist/store/tabSyncBridge.d.ts.map +1 -1
- package/dist/types/quickEntry.d.ts +4 -0
- package/dist/types/quickEntry.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/components/chat-widget/MiniNodeRenderer.d.ts +0 -8
- package/dist/components/chat-widget/MiniNodeRenderer.d.ts.map +0 -1
- package/dist/embed/assets/de-DE-B5xWEfq-.js +0 -1
- package/dist/embed/assets/de-DE-DZaBqTxJ.js +0 -1
- package/dist/embed/assets/de-DE-DxXNfZ9k.js +0 -1
- package/dist/embed/assets/en-AU-C1oAw61j.js +0 -1
- package/dist/embed/assets/en-AU-CqIGwKzu.js +0 -1
- package/dist/embed/assets/en-AU-D4ZKNmSX.js +0 -1
- package/dist/embed/assets/en-CA-BhGDy9W-.js +0 -1
- package/dist/embed/assets/en-CA-Bthn_IeU.js +0 -1
- package/dist/embed/assets/en-CA-DPNrEzeD.js +0 -1
- package/dist/embed/assets/en-GB-CYW2K6xs.js +0 -1
- package/dist/embed/assets/en-GB-DXQfQzz3.js +0 -1
- package/dist/embed/assets/en-GB-DrgRbfY_.js +0 -1
- package/dist/embed/assets/fr-FR--pjAjjuC.js +0 -1
- package/dist/embed/assets/fr-FR-DDP8Or2j.js +0 -1
- package/dist/embed/assets/fr-FR-E0XU3jUe.js +0 -1
- package/dist/embed/assets/frame--s-0VxXj.js +0 -99
- package/dist/embed/assets/frame-CD6RkkLP.js +0 -99
- package/dist/embed/assets/frame-CUljFYZZ.js +0 -81
- package/dist/embed/assets/frame-Cazf7mbZ.js +0 -101
- package/dist/embed/assets/frame-D6AI9lC1.js +0 -99
- package/dist/embed/assets/frame-DS5rtXDi.js +0 -81
- package/dist/embed/assets/frame-DULAmC03.js +0 -101
- package/dist/embed/assets/frame-D_sOeAWp.js +0 -99
- package/dist/embed/assets/frame-DfDuEbRr.js +0 -99
- package/dist/embed/assets/frame-Do3Ebqu-.js +0 -99
- package/dist/embed/assets/frame-Drl8r4Kl.js +0 -81
- package/dist/embed/assets/frame-SUCPP3hJ.js +0 -81
- package/dist/embed/assets/frame-bMIU4wFX.js +0 -101
- package/dist/embed/assets/frame-kJbOx592.js +0 -101
- package/dist/embed/assets/frame-qaTg4Oa8.js +0 -99
- package/dist/embed/assets/ja-JP-AS23ksPD.js +0 -1
- package/dist/embed/assets/ja-JP-BlHOqSpY.js +0 -1
- package/dist/embed/assets/ja-JP-C4RsKt4c.js +0 -1
- package/dist/embed/assets/lib-C73wksd9.js +0 -14
- package/dist/embed/assets/lib-CCPZ3P7a.js +0 -14
- package/dist/embed/assets/lib-CY1ZeFsc.js +0 -14
- package/dist/embed/assets/lib-Cd000elJ.js +0 -14
- package/dist/embed/assets/lib-DWg2yhrT.js +0 -14
- package/dist/embed/assets/lib-DYIAHt-P.js +0 -14
- package/dist/embed/assets/lib-DYLlQd6e.js +0 -14
- package/dist/embed/assets/lib-Dpt79NC3.js +0 -14
- package/dist/embed/assets/lib-DtBarcPq.js +0 -14
- package/dist/embed/assets/lib-ST_0xgwt.js +0 -14
- package/dist/embed/assets/lib-aI6N5ZsZ.js +0 -14
- package/dist/embed/assets/style-Ba7l_u03.css +0 -2
- package/dist/embed/assets/style-C1uypNCC.css +0 -2
- package/dist/embed/assets/style-CAJTcO-6.css +0 -2
- package/dist/embed/assets/style-D9b4HPFU.css +0 -2
- package/dist/embed/assets/style-DAtdz92W.css +0 -2
- package/dist/embed/assets/style-DO7u51ow.css +0 -2
- package/dist/embed/assets/style-L9oqpUIO.css +0 -2
- package/dist/embed/assets/style-s-IPe41-.css +0 -2
- package/dist/embed/assets/zh-CN-BKq7vljY.js +0 -1
- package/dist/embed/assets/zh-CN-Bb9qbg6E.js +0 -1
- package/dist/embed/assets/zh-CN-DKiQg0LW.js +0 -1
- package/dist/embed/assets/zh-CN-jW2icF26.js +0 -1
- package/dist/hooks/useMarkdownNodes.d.ts +0 -10
- package/dist/hooks/useMarkdownNodes.d.ts.map +0 -1
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
(function(){var e=`mira-chat-widget`,t=e=>!!e&&typeof e==`object`&&`source`in e,n=e=>{if(!t(e)||e.source!==`mira-chat-widget`)return!1;let n=e;return n.type===`resize`?typeof n.width==`number`&&typeof n.height==`number`&&n.width>0&&n.height>0:n.type===`event`?typeof n.name==`string`:n.type===`response`&&typeof n.requestId==`string`&&typeof n.ok==`boolean`},r=(e=>e.replace(/<!--[\s\S]*?-->/g,``).replace(/\sclass="[^"]*"/g,``).trim())(`<!-- @license lucide-static v1.34.0 - ISC --> <svg class="lucide lucide-chevron-down" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" > <path d="m6 9 6 6 6-6" /> </svg>`).replace(`<svg `,`<svg class="mira-chat-launcher-chevron" `),i=e=>/^https?:\/\//.test(e)||e.startsWith(`/`)||e.startsWith(`data:`),a={panelWidthPx:520,panelHeightPx:740,panelViewportTopInsetPx:16,panelLauncherReservedBlockPx:92,assistantBubbleMaxWidthPx:445,assistantBodyMaxWidthPx:415,productCardWidthPx:202,mobileBreakpointPx:768,mobilePanelHorizontalInsetPx:16,mobilePanelVerticalReservedPx:84,mobileAssistantBubbleMaxWidth:`98%`,mobileAssistantBodyMaxWidth:`calc(100vw - 44px)`};a.panelLauncherReservedBlockPx;var o={right:`--mira-chat-widget-window-right`,bottom:`--mira-chat-widget-window-bottom`,left:`--mira-chat-widget-window-left`,top:`--mira-chat-widget-window-top`,width:`--mira-chat-widget-window-width`,maxWidth:`--mira-chat-widget-window-max-width`,height:`--mira-chat-widget-window-height`,maxHeight:`--mira-chat-widget-window-max-height`,borderRadius:`--mira-chat-widget-window-border-radius`},s={windowRightPx:20,buttonBottomPx:20,buttonHeightPx:56,gapPx:16,widthPx:a.panelWidthPx,heightPx:a.panelHeightPx,borderRadiusPx:18},c=s.buttonBottomPx+s.buttonHeightPx+s.gapPx,l=e=>`${e}px`,u=`min(${l(a.panelHeightPx)}, calc(100dvh - ${a.panelViewportTopInsetPx}px - ${c}px))`,d=`
|
|
2
|
+
${o.right}: ${l(s.windowRightPx)};
|
|
3
|
+
${o.bottom}: ${l(c)};
|
|
4
|
+
${o.left}: unset;
|
|
5
|
+
${o.top}: unset;
|
|
6
|
+
${o.width}: ${l(s.widthPx)};
|
|
7
|
+
${o.maxWidth}: calc(100vw - ${a.mobilePanelHorizontalInsetPx}px);
|
|
8
|
+
${o.height}: ${l(s.heightPx)};
|
|
9
|
+
${o.maxHeight}: ${u};
|
|
10
|
+
${o.borderRadius}: ${l(s.borderRadiusPx)};
|
|
11
|
+
`;`${o.right}${l(s.windowRightPx)}${o.bottom}${l(c)}${o.width}${l(s.widthPx)}${o.height}${l(s.heightPx)}${o.maxHeight}${u}${o.borderRadius}${l(s.borderRadiusPx)}`;var f=(e,t=16)=>{let n=e.trim();return!n||n===`unset`||n===`auto`?0:n.endsWith(`rem`)?Number.parseFloat(n)*t:n.endsWith(`px`)?Number.parseFloat(n):Number.parseFloat(n)||0},p=(e,t=document.documentElement)=>{let n=getComputedStyle(t),r=Number.parseFloat(n.fontSize)||16;return f(n.getPropertyValue(e),r)},m=a.mobileBreakpointPx,h=()=>typeof window>`u`?!1:window.innerWidth<=m,g=`(max-width: ${m}px)`,_=`mira-chat-widget-button`,v=`mira-chat-widget-window`,y=`mira-chat-widget-control`,b=`mira-chat-widget-style`,x=320,S=`cubic-bezier(0.22, 1, 0.36, 1)`,C=`
|
|
12
|
+
right: var(${o.right});
|
|
13
|
+
bottom: var(${o.bottom});
|
|
14
|
+
left: var(${o.left});
|
|
15
|
+
top: var(${o.top});
|
|
16
|
+
width: var(${o.width});
|
|
17
|
+
max-width: var(${o.maxWidth});
|
|
18
|
+
height: var(${o.height});
|
|
19
|
+
max-height: var(${o.maxHeight});
|
|
20
|
+
border-radius: var(${o.borderRadius});
|
|
21
|
+
`,w=()=>{if(document.getElementById(b))return;let e=document.createElement(`style`);e.id=b,e.textContent=`
|
|
22
|
+
:root {
|
|
23
|
+
--mira-chat-widget-button-right: ${s.windowRightPx}px;
|
|
24
|
+
--mira-chat-widget-button-bottom: ${s.buttonBottomPx}px;
|
|
25
|
+
--mira-chat-widget-button-left: unset;
|
|
26
|
+
--mira-chat-widget-button-top: unset;
|
|
27
|
+
--mira-chat-widget-button-width: ${s.buttonHeightPx}px;
|
|
28
|
+
--mira-chat-widget-button-height: ${s.buttonHeightPx}px;
|
|
29
|
+
--mira-chat-widget-button-border: 1px solid rgba(255, 255, 255, 0.16);
|
|
30
|
+
--mira-chat-widget-button-border-radius: 50%;
|
|
31
|
+
--mira-chat-widget-button-bg:
|
|
32
|
+
radial-gradient(circle at 30% 20%, rgba(255, 255, 255, 0.1), transparent 42%),
|
|
33
|
+
linear-gradient(145deg, #3a3a44, #222228);
|
|
34
|
+
--mira-chat-widget-button-shadow:
|
|
35
|
+
0 12px 32px rgba(8, 8, 12, 0.45),
|
|
36
|
+
0 0 0 1px rgba(255, 255, 255, 0.08);
|
|
37
|
+
--mira-chat-widget-button-color: #d8e0e8;
|
|
38
|
+
--mira-chat-widget-gap: ${s.gapPx}px;
|
|
39
|
+
${d}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
#${_} {
|
|
43
|
+
position: fixed;
|
|
44
|
+
right: var(--mira-chat-widget-button-right);
|
|
45
|
+
bottom: var(--mira-chat-widget-button-bottom);
|
|
46
|
+
left: var(--mira-chat-widget-button-left);
|
|
47
|
+
top: var(--mira-chat-widget-button-top);
|
|
48
|
+
width: var(--mira-chat-widget-button-width);
|
|
49
|
+
height: var(--mira-chat-widget-button-height);
|
|
50
|
+
border: var(--mira-chat-widget-button-border);
|
|
51
|
+
border-radius: var(--mira-chat-widget-button-border-radius);
|
|
52
|
+
background: var(--mira-chat-widget-button-bg);
|
|
53
|
+
box-shadow: var(--mira-chat-widget-button-shadow);
|
|
54
|
+
color: var(--mira-chat-widget-button-color);
|
|
55
|
+
line-height: 1;
|
|
56
|
+
cursor: pointer;
|
|
57
|
+
z-index: 2147483645;
|
|
58
|
+
display: grid;
|
|
59
|
+
place-items: center;
|
|
60
|
+
padding: 0;
|
|
61
|
+
overflow: hidden;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
#${_}.is-below-iframe {
|
|
65
|
+
z-index: 2147483645;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
#${_} .mira-chat-launcher-avatar {
|
|
69
|
+
position: absolute;
|
|
70
|
+
inset: 0;
|
|
71
|
+
width: 100%;
|
|
72
|
+
height: 100%;
|
|
73
|
+
display: block;
|
|
74
|
+
object-fit: cover;
|
|
75
|
+
border-radius: 50%;
|
|
76
|
+
opacity: 0;
|
|
77
|
+
transition: opacity 0.2s ease;
|
|
78
|
+
pointer-events: none;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
#${_} .mira-chat-launcher-avatar.is-visible {
|
|
82
|
+
opacity: 1;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
#${_} svg {
|
|
86
|
+
width: 26px;
|
|
87
|
+
height: 26px;
|
|
88
|
+
display: block;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
#${_} .mira-chat-launcher-chevron {
|
|
92
|
+
transition: transform 220ms ${S};
|
|
93
|
+
transform-origin: center;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
#${_}.is-open .mira-chat-launcher-chevron {
|
|
97
|
+
transform: rotate(0deg);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
#${v} {
|
|
101
|
+
position: fixed;
|
|
102
|
+
inset: 0;
|
|
103
|
+
width: 100%;
|
|
104
|
+
height: 100%;
|
|
105
|
+
border: none;
|
|
106
|
+
overflow: hidden;
|
|
107
|
+
z-index: 2147483646;
|
|
108
|
+
display: none;
|
|
109
|
+
background: transparent;
|
|
110
|
+
pointer-events: none;
|
|
111
|
+
opacity: 0;
|
|
112
|
+
transform: translateY(14px) scale(0.97);
|
|
113
|
+
transform-origin: bottom right;
|
|
114
|
+
transition:
|
|
115
|
+
opacity ${x}ms ${S},
|
|
116
|
+
transform ${x}ms ${S};
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
#${v}.is-open {
|
|
120
|
+
opacity: 1;
|
|
121
|
+
transform: translateY(0) scale(1);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
#${y} {
|
|
125
|
+
position: fixed;
|
|
126
|
+
${C}
|
|
127
|
+
z-index: 2147483645;
|
|
128
|
+
display: none;
|
|
129
|
+
background: transparent;
|
|
130
|
+
pointer-events: auto;
|
|
131
|
+
opacity: 0;
|
|
132
|
+
transform: translateY(14px) scale(0.97);
|
|
133
|
+
transform-origin: bottom right;
|
|
134
|
+
transition:
|
|
135
|
+
opacity ${x}ms ${S},
|
|
136
|
+
transform ${x}ms ${S};
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
#${y}.is-open {
|
|
140
|
+
opacity: 1;
|
|
141
|
+
transform: translateY(0) scale(1);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
@media ${g} {
|
|
145
|
+
#${y} {
|
|
146
|
+
display: none !important;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
#${v} {
|
|
150
|
+
pointer-events: auto;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
#${v}.is-open {
|
|
154
|
+
z-index: 2147483647;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
#${_}.is-open {
|
|
158
|
+
z-index: 2147483646;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
@media (prefers-reduced-motion: reduce) {
|
|
163
|
+
#${_} .mira-chat-launcher-chevron,
|
|
164
|
+
#${v},
|
|
165
|
+
#${y} {
|
|
166
|
+
transition-duration: 0.01ms !important;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
`,document.head.appendChild(e)},T=()=>{let e=document.currentScript;return e instanceof HTMLScriptElement?e:document.querySelector(`script[data-agent-name]`)},E=e=>{let t=new URL(e.src,window.location.href),n=t.pathname.replace(/\/[^/]+$/,``);return new URL(`${n}/`,t.origin)},D=e=>{let t=new URL(`frame.html`,E(e)),{agentName:n,site:r,locale:i,apiBaseUrl:a,launcherAvatar:o}=e.dataset;return n?.trim()&&t.searchParams.set(`agentName`,n.trim()),r?.trim()&&t.searchParams.set(`site`,r.trim()),i?.trim()&&t.searchParams.set(`locale`,i.trim()),a?.trim()&&t.searchParams.set(`apiBaseUrl`,a.trim()),o?.trim()&&t.searchParams.set(`launcherAvatar`,o.trim()),t.searchParams.set(`layout`,`inline`),t.searchParams.set(`parentOrigin`,window.location.origin),t};(()=>{if(document.getElementById(_))return;let t=T();if(!t){console.error(`[mira-chat] launcher script tag not found`);return}w();let a=D(t),l=a.origin,u=t.dataset.launcherAvatar?.trim()??``,d=i(u)?u:``,f=!1,m=document.createElement(`button`);m.id=_,m.type=`button`,m.title=`Open chat`,m.setAttribute(`aria-label`,`Open chat`),m.style.display=`none`;let g=e=>{if(m.innerHTML=r,e||!d||f)return;let t=document.createElement(`img`);t.className=`mira-chat-launcher-avatar`,t.src=d,t.alt=``,t.setAttribute(`aria-hidden`,`true`),t.addEventListener(`load`,()=>{t.classList.add(`is-visible`)},{once:!0}),t.addEventListener(`error`,()=>{f=!0,g(e)},{once:!0}),m.appendChild(t)};g(!1);let b=document.createElement(`iframe`);b.id=v,b.title=`Mira Chat Widget`,b.setAttribute(`allow`,`clipboard-write`),b.setAttribute(`allowtransparency`,`true`),b.style.backgroundColor=`transparent`,b.src=a.toString();let S=null,C=!1,E=null;document.body.appendChild(b),document.body.appendChild(m);let O=()=>{E!==null&&(clearTimeout(E),E=null)},k=()=>{S!==null&&(b.style.pointerEvents=`none`,S.style.pointerEvents=`auto`)},A=()=>{S!==null&&(b.style.pointerEvents=`auto`,S.style.pointerEvents=`none`)};h()||(S=document.createElement(`div`),S.id=y,S.setAttribute(`aria-hidden`,`true`),S.addEventListener(`mouseenter`,()=>{C&&A()}),document.body.appendChild(S));let j=()=>{if(S===null)return{width:s.widthPx,height:s.heightPx,right:s.windowRightPx,bottom:c,borderRadius:s.borderRadiusPx};let e=S.getBoundingClientRect(),t=window.getComputedStyle(S),n=Number.parseFloat(t.borderRadius)||s.borderRadiusPx;return{width:e.width,height:e.height,right:p(o.right),bottom:p(o.bottom),borderRadius:n}},M=()=>{if(!C||b.contentWindow===null||h())return;let t={source:e,type:`command`,name:`set-dialog-layout`,payload:j()};b.contentWindow.postMessage(t,l)},N=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{M()})})},P=()=>{let e=document.documentElement;for(let t of Object.values(o))e.style.removeProperty(t)},F=e=>{m.classList.toggle(`is-below-iframe`,e)},I=e=>{m.classList.toggle(`is-open`,e),m.title=e?`Close chat`:`Open chat`,m.setAttribute(`aria-label`,e?`Close chat`:`Open chat`),g(e)},L=()=>{if(b.contentWindow===null)return;let t={source:e,type:`command`,name:`panel-open`};b.contentWindow.postMessage(t,l)};window.addEventListener(`message`,e=>{if(e.origin===l&&!(!n(e.data)||e.data.type!==`event`)){if(e.data.name===`ready`){m.style.display=`grid`,N();return}if(e.data.name===`dialog-pointer-leave`){h()||k();return}if(e.data.name===`photo-preview-open`){F(!0);return}if(e.data.name===`photo-preview-close`){F(!1);return}if(e.data.name===`launcher-avatar`){if(u)return;let t=e.data.payload?.url?.trim()??``;if(!i(t))return;d=t,f=!1,C||g(!1)}}});let R=()=>{if(O(),C=!0,I(!0),b.style.display=`block`,h()){requestAnimationFrame(()=>{b.classList.add(`is-open`)}),L();return}S!==null&&(S.style.display=`block`),requestAnimationFrame(()=>{b.classList.add(`is-open`),S?.classList.add(`is-open`)}),N(),L()},z=()=>{if(C){if(O(),C=!1,I(!1),h()){b.classList.remove(`is-open`),b.style.display=`none`,F(!1);return}b.classList.remove(`is-open`),S?.classList.remove(`is-open`),k(),E=setTimeout(()=>{E=null,b.style.display=`none`,S!==null&&(S.style.display=`none`),P(),F(!1)},x)}};m.addEventListener(`click`,()=>{if(C){z();return}R()}),window.addEventListener(`resize`,()=>{h()||N()}),window.__MIRA_CHAT_WIDGET__={iframe:b,frameOrigin:l,mode:`launcher`,open:R,close:z},window.dispatchEvent(new CustomEvent(`mira-chat-widget-mounted`))})()})();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import type { ChatWidgetProps } from "./types";
|
|
1
2
|
import "./chat-widget.css";
|
|
2
|
-
import type { ChatWidgetProps } from "./ChatWidget.types";
|
|
3
3
|
/** 右下角客服挂件:config/byName → Zendesk SDK → 会话 bootstrap */
|
|
4
4
|
declare const ChatWidget: ({ embedMode, panelOnly, parentOrigin, locale, agentName, site, launcherAvatar, apiBaseUrl, onInitError, }: ChatWidgetProps) => import("react").JSX.Element;
|
|
5
5
|
export default ChatWidget;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatWidget.d.ts","sourceRoot":"","sources":["../../../src/components/chat-widget/ChatWidget.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ChatWidget.d.ts","sourceRoot":"","sources":["../../../src/components/chat-widget/ChatWidget.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,OAAO,mBAAmB,CAAC;AAE3B,yDAAyD;AACzD,QAAA,MAAM,UAAU,GAAI,2GAUjB,eAAe,gCAyIjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type ConfirmDialogVariant = "leaveHandoff";
|
|
2
|
+
interface ConfirmDialogProps {
|
|
3
|
+
isOpen: boolean;
|
|
4
|
+
variant: ConfirmDialogVariant;
|
|
5
|
+
onCancel: () => void;
|
|
6
|
+
onConfirm: () => void;
|
|
7
|
+
}
|
|
8
|
+
/** 转人工返回列表等二次确认弹窗 */
|
|
9
|
+
declare const ConfirmDialog: ({ isOpen, variant, onCancel, onConfirm, }: ConfirmDialogProps) => import("react").ReactPortal | null;
|
|
10
|
+
export default ConfirmDialog;
|
|
11
|
+
//# sourceMappingURL=ConfirmDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfirmDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/feedback/ConfirmDialog.tsx"],"names":[],"mappings":"AAIA,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAElD,UAAU,kBAAkB;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAeD,qBAAqB;AACrB,QAAA,MAAM,aAAa,GAAI,2CAKpB,kBAAkB,uCAiFpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type DislikeReasonKey } from "@/types/feedback";
|
|
2
|
+
interface FeedbackSheetProps {
|
|
3
|
+
isOpen: boolean;
|
|
4
|
+
isSubmitting: boolean;
|
|
5
|
+
onClose: () => void;
|
|
6
|
+
onSubmit: (reasonKey: DislikeReasonKey, otherText?: string) => void;
|
|
7
|
+
}
|
|
8
|
+
/** 点踩原因选择 Sheet(前端写死 4 项 + i18n;仅 other 可补充说明) */
|
|
9
|
+
declare const FeedbackSheet: ({ isOpen, isSubmitting, onClose, onSubmit, }: FeedbackSheetProps) => import("react").ReactPortal | null;
|
|
10
|
+
export default FeedbackSheet;
|
|
11
|
+
//# sourceMappingURL=FeedbackSheet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeedbackSheet.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/feedback/FeedbackSheet.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,kBAAkB,CAAC;AAE1B,UAAU,kBAAkB;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACrE;AAED,kDAAkD;AAClD,QAAA,MAAM,aAAa,GAAI,8CAKpB,kBAAkB,uCAiIpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GuideBubble.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/guide-bubble/GuideBubble.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGjD,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,MAAM,EACN,KAAK,EACL,UAAU,EACV,SAAS,GACV,EAAE,gBAAgB,+BAqBlB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GuideBubbleBlock.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/guide-bubble/GuideBubbleBlock.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEtD,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EAAE,KAAK,EAAE,EAAE,qBAAqB,sCA6BxE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GuideBubbleGroup.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/guide-bubble/GuideBubbleGroup.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEtD,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EAAE,KAAK,EAAE,EAAE,qBAAqB,+BAyBxE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { HandoffProfile } from "@/types/handoff";
|
|
2
|
+
interface HandoffFormProps {
|
|
3
|
+
/** 表单初始值(本地缓存的留资信息回填) */
|
|
4
|
+
initialProfile: HandoffProfile | null;
|
|
5
|
+
/** 正在创建 Zendesk 会话(提交中) */
|
|
6
|
+
connecting: boolean;
|
|
7
|
+
/** Zendesk SDK 初始化中 */
|
|
8
|
+
sdkLoading: boolean;
|
|
9
|
+
/** Zendesk SDK 已就绪 */
|
|
10
|
+
sdkReady: boolean;
|
|
11
|
+
/** 表单错误文案(转人工失败时展示) */
|
|
12
|
+
errorMessage?: string | null;
|
|
13
|
+
/** 提交留资 */
|
|
14
|
+
onSubmit: (profile: HandoffProfile) => Promise<boolean | void>;
|
|
15
|
+
/** 取消表单 */
|
|
16
|
+
onDismiss: () => void;
|
|
17
|
+
}
|
|
18
|
+
/** 转人工留资表单:姓名 + 邮箱必填,提交后创建 Zendesk SDK 会话 */
|
|
19
|
+
declare const HandoffForm: ({ initialProfile, connecting, sdkLoading, sdkReady, errorMessage, onSubmit, onDismiss, }: HandoffFormProps) => import("react").JSX.Element;
|
|
20
|
+
export default HandoffForm;
|
|
21
|
+
//# sourceMappingURL=HandoffForm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HandoffForm.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/handoff/HandoffForm.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,UAAU,gBAAgB;IACxB,yBAAyB;IACzB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,2BAA2B;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,uBAAuB;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,sBAAsB;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,uBAAuB;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW;IACX,QAAQ,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC/D,WAAW;IACX,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAID,6CAA6C;AAC7C,QAAA,MAAM,WAAW,GAAI,0FAQlB,gBAAgB,gCAoHlB,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { useChatWidgetPanelState } from "./useChatWidgetPanelState";
|
|
2
|
+
export { useChatWidgetEmbedEffects } from "./useChatWidgetEmbedEffects";
|
|
3
|
+
export { useChatPanelViewportClamp } from "./useChatPanelViewportClamp";
|
|
4
|
+
export { useGuideBubbleHide } from "./useGuideBubbleHide";
|
|
5
|
+
export { useMessageListScroll } from "./useMessageListScroll";
|
|
6
|
+
export { getDislikeFeedbackLabel, useMessageFeedback, } from "./useMessageFeedback";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EACL,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type RefObject } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* 桌面端:根据 launcher 在视口中的位置动态收紧面板 max-height,
|
|
4
|
+
* 避免 chat_panel 上沿超出可视区域(launcher 较靠上时)。
|
|
5
|
+
*/
|
|
6
|
+
export declare const useChatPanelViewportClamp: (widgetRef: RefObject<HTMLElement | null>, enabled: boolean, isPanelVisible: boolean) => void;
|
|
7
|
+
//# sourceMappingURL=useChatPanelViewportClamp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useChatPanelViewportClamp.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/hooks/useChatPanelViewportClamp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKxD;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GACpC,WAAW,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EACxC,SAAS,OAAO,EAChB,gBAAgB,OAAO,KACtB,IAoDF,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface UseChatWidgetEmbedEffectsOptions {
|
|
2
|
+
embedMode: boolean;
|
|
3
|
+
panelOnly: boolean;
|
|
4
|
+
parentOrigin: string;
|
|
5
|
+
requestScrollToBottom: () => void;
|
|
6
|
+
requestPanelEnterAnimation: () => void;
|
|
7
|
+
}
|
|
8
|
+
/** iframe panel-only 模式:图片预览通知与 panel-open 宿主页指令 */
|
|
9
|
+
export declare function useChatWidgetEmbedEffects({ embedMode, panelOnly, parentOrigin, requestScrollToBottom, requestPanelEnterAnimation, }: UseChatWidgetEmbedEffectsOptions): {
|
|
10
|
+
handlePhotoPreviewVisibleChange: (visible: boolean) => void;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=useChatWidgetEmbedEffects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useChatWidgetEmbedEffects.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/hooks/useChatWidgetEmbedEffects.ts"],"names":[],"mappings":"AAMA,UAAU,gCAAgC;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,IAAI,CAAC;IAClC,0BAA0B,EAAE,MAAM,IAAI,CAAC;CACxC;AAED,oDAAoD;AACpD,wBAAgB,yBAAyB,CAAC,EACxC,SAAS,EACT,SAAS,EACT,YAAY,EACZ,qBAAqB,EACrB,0BAA0B,GAC3B,EAAE,gCAAgC;+CAErB,OAAO;EAgDpB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
interface UseChatWidgetPanelStateOptions {
|
|
2
|
+
panelOnly: boolean;
|
|
3
|
+
windowTabSyncEnabled: boolean;
|
|
4
|
+
}
|
|
5
|
+
/** 面板开合、关闭动画与滚动/进入动画信号 */
|
|
6
|
+
export declare function useChatWidgetPanelState({ panelOnly, windowTabSyncEnabled, }: UseChatWidgetPanelStateOptions): {
|
|
7
|
+
isOpen: boolean;
|
|
8
|
+
isPanelVisible: boolean;
|
|
9
|
+
isPanelClosing: boolean;
|
|
10
|
+
scrollToBottomSignal: number;
|
|
11
|
+
panelEnterAnimationSignal: number;
|
|
12
|
+
requestScrollToBottom: () => void;
|
|
13
|
+
requestPanelEnterAnimation: () => void;
|
|
14
|
+
handleToggleOpen: () => void;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=useChatWidgetPanelState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useChatWidgetPanelState.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/hooks/useChatWidgetPanelState.ts"],"names":[],"mappings":"AAGA,UAAU,8BAA8B;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,0BAA0B;AAC1B,wBAAgB,uBAAuB,CAAC,EACtC,SAAS,EACT,oBAAoB,GACrB,EAAE,8BAA8B;;;;;;;;;EAiFhC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface UseGuideBubbleHideOptions {
|
|
2
|
+
isOpen: boolean;
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare function useGuideBubbleHide({ isOpen, enabled, }: UseGuideBubbleHideOptions): {
|
|
6
|
+
isHidden: boolean;
|
|
7
|
+
hide: () => void;
|
|
8
|
+
};
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=useGuideBubbleHide.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGuideBubbleHide.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/hooks/useGuideBubbleHide.ts"],"names":[],"mappings":"AAaA,UAAU,yBAAyB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,OAAO,GACR,EAAE,yBAAyB,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CA2ErE"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ChatMessage as ChatMessageType } from "@/types/chat";
|
|
2
|
+
import type { DislikeReasonKey, FeedbackType, MessageFeedbackState } from "@/types/feedback";
|
|
3
|
+
/** 判断消息是否可接收反馈:仅 mira_ai、非开场白/错误/中止/分隔条、非流式且已落库 */
|
|
4
|
+
export declare const canMessageReceiveFeedback: (message: ChatMessageType, isStreaming: boolean) => boolean;
|
|
5
|
+
interface UseMessageFeedbackOptions {
|
|
6
|
+
message: ChatMessageType;
|
|
7
|
+
isStreaming?: boolean;
|
|
8
|
+
onLike: () => Promise<boolean>;
|
|
9
|
+
onDislikeInit: () => Promise<boolean>;
|
|
10
|
+
onDislikeReason: (reasonKey: DislikeReasonKey, otherText?: string) => Promise<boolean>;
|
|
11
|
+
}
|
|
12
|
+
/** 单条 mira_ai 消息的点赞 / 点踩交互 */
|
|
13
|
+
export declare const useMessageFeedback: ({ message, isStreaming, onLike, onDislikeInit, onDislikeReason, }: UseMessageFeedbackOptions) => {
|
|
14
|
+
canFeedback: boolean;
|
|
15
|
+
feedback: MessageFeedbackState | null;
|
|
16
|
+
isSheetOpen: boolean;
|
|
17
|
+
isSubmitting: boolean;
|
|
18
|
+
isLocked: boolean;
|
|
19
|
+
activeType: FeedbackType | null;
|
|
20
|
+
handleLike: () => Promise<void>;
|
|
21
|
+
handleOpenDislikeSheet: () => Promise<void>;
|
|
22
|
+
handleCloseSheet: () => void;
|
|
23
|
+
handleSubmitDislike: (reasonKey: DislikeReasonKey, otherText?: string) => Promise<void>;
|
|
24
|
+
};
|
|
25
|
+
export type { DislikeReasonKey, FeedbackType, MessageFeedbackState };
|
|
26
|
+
export declare const getDislikeFeedbackLabel: (feedback: MessageFeedbackState | null, translateReason: (key: DislikeReasonKey) => string) => string;
|
|
27
|
+
//# sourceMappingURL=useMessageFeedback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMessageFeedback.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/hooks/useMessageFeedback.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAE1B,mDAAmD;AACnD,eAAO,MAAM,yBAAyB,GACpC,SAAS,eAAe,EACxB,aAAa,OAAO,KACnB,OAO+B,CAAC;AAEnC,UAAU,yBAAyB;IACjC,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,aAAa,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,eAAe,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxF;AAED,8BAA8B;AAC9B,eAAO,MAAM,kBAAkB,GAAI,mEAMhC,yBAAyB;;;;;;;;;;qCAyDN,gBAAgB,cAAc,MAAM;CA+BzD,CAAC;AAEF,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC;AAErE,eAAO,MAAM,uBAAuB,GAClC,UAAU,oBAAoB,GAAG,IAAI,EACrC,iBAAiB,CAAC,GAAG,EAAE,gBAAgB,KAAK,MAAM,KACjD,MAUF,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type RefObject } from "react";
|
|
2
|
+
interface UseMessageListScrollOptions {
|
|
3
|
+
historyMessages: unknown[];
|
|
4
|
+
isResponding: boolean;
|
|
5
|
+
isThinking: boolean;
|
|
6
|
+
showHandoffForm: boolean;
|
|
7
|
+
showWaitingBanner: boolean;
|
|
8
|
+
scrollToBottomSignal: number;
|
|
9
|
+
}
|
|
10
|
+
/** 消息列表滚动:贴底自动跟随 + 离底时展示回到底部按钮 */
|
|
11
|
+
export declare const useMessageListScroll: (listRef: RefObject<HTMLDivElement | null>, { historyMessages, isResponding, isThinking, showHandoffForm, showWaitingBanner, scrollToBottomSignal, }: UseMessageListScrollOptions) => {
|
|
12
|
+
showScrollToBottom: boolean;
|
|
13
|
+
scrollToBottom: () => void;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=useMessageListScroll.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMessageListScroll.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/hooks/useMessageListScroll.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAMjF,UAAU,2BAA2B;IACnC,eAAe,EAAE,OAAO,EAAE,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,kCAAkC;AAClC,eAAO,MAAM,oBAAoB,GAC/B,SAAS,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,EACzC,0GAOG,2BAA2B;;;CAwG/B,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
interface ChatInputProps {
|
|
3
|
+
/** 输入框当前值 */
|
|
4
|
+
value: string;
|
|
5
|
+
/** 占位文案 */
|
|
6
|
+
placeholder: string;
|
|
7
|
+
/** AI 正在响应(切换为停止按钮) */
|
|
8
|
+
isResponding: boolean;
|
|
9
|
+
/** 输入框禁用(转人工流程 / 关闭态等) */
|
|
10
|
+
isDisabled?: boolean;
|
|
11
|
+
/** 输入值变更回调 */
|
|
12
|
+
onChange: (value: string) => void;
|
|
13
|
+
/** 发送回调(Enter 或点击发送按钮) */
|
|
14
|
+
onSubmit: () => void;
|
|
15
|
+
/** 停止生成回调 */
|
|
16
|
+
onStop: () => void;
|
|
17
|
+
/** 输入框上方插槽(快捷入口等) */
|
|
18
|
+
topSlot?: ReactNode;
|
|
19
|
+
}
|
|
20
|
+
/** 底部输入区:自适应高度 textarea + 圆形发送 / 停止按钮 */
|
|
21
|
+
declare const ChatInput: ({ value, placeholder, isResponding, isDisabled, onChange, onSubmit, onStop, topSlot, }: ChatInputProps) => import("react").JSX.Element;
|
|
22
|
+
export default ChatInput;
|
|
23
|
+
//# sourceMappingURL=ChatInput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatInput.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/input/ChatInput.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAKf,UAAU,cAAc;IACtB,aAAa;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,0BAA0B;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa;IACb,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,qBAAqB;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAKD,yCAAyC;AACzC,QAAA,MAAM,SAAS,GAAI,wFAShB,cAAc,gCAmFhB,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type QuickEntry } from "@/types/quickEntry";
|
|
2
|
+
interface QuickEntryZoneProps {
|
|
3
|
+
/** Agent 配置的快捷入口 */
|
|
4
|
+
entries: QuickEntry[];
|
|
5
|
+
/** 当前会话中用户已发送的消息条数 */
|
|
6
|
+
userMessageCount: number;
|
|
7
|
+
/** 点击 PRESET_MSG 类型入口 */
|
|
8
|
+
onSelectPresetEntry: (entry: QuickEntry) => void;
|
|
9
|
+
/** 点击 COLLECT_FORM 类型入口(转人工留资) */
|
|
10
|
+
onHandoffEntryClick: () => void;
|
|
11
|
+
}
|
|
12
|
+
/** 输入区上方的快捷入口:按 rounds 展示,支持预设消息 / 外链 / 转人工 */
|
|
13
|
+
declare const QuickEntryZone: ({ entries, userMessageCount, onSelectPresetEntry, onHandoffEntryClick, }: QuickEntryZoneProps) => import("react").JSX.Element | null;
|
|
14
|
+
export default QuickEntryZone;
|
|
15
|
+
//# sourceMappingURL=QuickEntryZone.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuickEntryZone.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/input/QuickEntryZone.tsx"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAE5B,UAAU,mBAAmB;IAC3B,oBAAoB;IACpB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,sBAAsB;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,yBAAyB;IACzB,mBAAmB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACjD,kCAAkC;IAClC,mBAAmB,EAAE,MAAM,IAAI,CAAC;CACjC;AAED,+CAA+C;AAC/C,QAAA,MAAM,cAAc,GAAI,0EAKrB,mBAAmB,uCAyDrB,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ChatLauncherProps } from "../types";
|
|
2
|
+
/** 右下角 Launcher 按钮(头像 + 未读点) */
|
|
3
|
+
declare const ChatLauncher: ({ isOpen, avatarUrl, unreadVisible, unreadLabel, openLabel, closeLabel, onToggleOpen, }: ChatLauncherProps) => import("react").JSX.Element;
|
|
4
|
+
export default ChatLauncher;
|
|
5
|
+
//# sourceMappingURL=ChatLauncher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatLauncher.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/launcher/ChatLauncher.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,gCAAgC;AAChC,QAAA,MAAM,YAAY,GAAI,yFAQnB,iBAAiB,gCAmBnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface LauncherButtonContentProps {
|
|
2
|
+
avatarUrl: string;
|
|
3
|
+
}
|
|
4
|
+
/** Launcher:有客服图时在「图片 ↔ 向下关闭 Icon」间渐显切换;无图或加载失败时用气泡 Icon */
|
|
5
|
+
declare const LauncherButtonContent: ({ avatarUrl, }: LauncherButtonContentProps) => import("react").JSX.Element;
|
|
6
|
+
export default LauncherButtonContent;
|
|
7
|
+
//# sourceMappingURL=LauncherButtonContent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LauncherButtonContent.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/launcher/LauncherButtonContent.tsx"],"names":[],"mappings":"AAGA,UAAU,0BAA0B;IAClC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,4DAA4D;AAC5D,QAAA,MAAM,qBAAqB,GAAI,gBAE5B,0BAA0B,gCA+C5B,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ChatMessage as ChatMessageType } from "@/types/chat";
|
|
2
|
+
import type { DislikeReasonKey } from "@/types/feedback";
|
|
3
|
+
interface ChatMessageProps {
|
|
4
|
+
/** 单条消息数据 */
|
|
5
|
+
message: ChatMessageType;
|
|
6
|
+
/** AI 发送者展示名 */
|
|
7
|
+
agentDisplayName: string;
|
|
8
|
+
/** 是否为流式生成中的最后一条 assistant 气泡 */
|
|
9
|
+
isStreaming?: boolean;
|
|
10
|
+
/** 点赞该消息 */
|
|
11
|
+
onLike?: (messageId: string) => Promise<boolean>;
|
|
12
|
+
/** 点踩第一步:创建反馈 */
|
|
13
|
+
onDislikeInit?: (messageId: string) => Promise<boolean>;
|
|
14
|
+
/** 点踩第二步:补充原因(other 可带自定义文本) */
|
|
15
|
+
onDislikeReason?: (messageId: string, reasonKey: DislikeReasonKey, otherText?: string) => Promise<boolean>;
|
|
16
|
+
}
|
|
17
|
+
/** 单条聊天气泡:bubble-stack(sender + bubble + time) */
|
|
18
|
+
declare const ChatMessage: ({ message, agentDisplayName, isStreaming, onLike, onDislikeInit, onDislikeReason, }: ChatMessageProps) => import("react").JSX.Element;
|
|
19
|
+
export default ChatMessage;
|
|
20
|
+
//# sourceMappingURL=ChatMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatMessage.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/messages/ChatMessage.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAMzD,UAAU,gBAAgB;IACxB,aAAa;IACb,OAAO,EAAE,eAAe,CAAC;IACzB,gBAAgB;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iCAAiC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY;IACZ,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,iBAAiB;IACjB,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,gCAAgC;IAChC,eAAe,CAAC,EAAE,CAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,gBAAgB,EAC3B,SAAS,CAAC,EAAE,MAAM,KACf,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB;AAED,kDAAkD;AAClD,QAAA,MAAM,WAAW,GAAI,qFAOlB,gBAAgB,gCAwElB,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ChatMessageListProps } from "../types";
|
|
2
|
+
/** 消息列表:顶栏固定开场白 + 推荐问,下方为会话历史与其它 UI */
|
|
3
|
+
declare function ChatMessageList({ messages, openingStatement, agentDisplayName, isResponding, isThinking, thinkingStageIndex, showHandoffForm, showWaitingBanner, showHandoffFailed, handoffError, showClosedNotice, storedProfile, connecting, sdkLoading, sdkReady, suggestedQuestions, onSelectSuggestedQuestion, onDismissHandoffForm, onSubmitHandoffForm, onRetryHandoff, onLikeMessage, onDislikeInitMessage, onDislikeReasonMessage, scrollToBottomSignal, onPhotoPreviewVisibleChange, }: ChatMessageListProps): import("react").JSX.Element;
|
|
4
|
+
export default ChatMessageList;
|
|
5
|
+
//# sourceMappingURL=ChatMessageList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatMessageList.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/messages/ChatMessageList.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAKrD,uCAAuC;AACvC,iBAAS,eAAe,CAAC,EACvB,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,YAAmB,EACnB,gBAAwB,EACxB,aAAa,EACb,UAAU,EACV,UAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,oBAAwB,EACxB,2BAA2B,GAC5B,EAAE,oBAAoB,+BAoFtB;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ChatMessageListBodyProps } from "../types";
|
|
2
|
+
/** 消息列表滚动区域内部内容 */
|
|
3
|
+
declare function ChatMessageListBody({ historyMessages, openingMessage, showSuggestedQuestions, suggestedQuestions, agentDisplayName, isResponding, isThinking, showThinking, thinkingStageIndex, showClosedNotice, showHandoffForm, showWaitingBanner, showHandoffFailed, handoffError, storedProfile, connecting, sdkLoading, sdkReady, onSelectSuggestedQuestion, onDismissHandoffForm, onSubmitHandoffForm, onRetryHandoff, onLikeMessage, onDislikeInitMessage, onDislikeReasonMessage, }: ChatMessageListBodyProps): import("react").JSX.Element;
|
|
4
|
+
export default ChatMessageListBody;
|
|
5
|
+
//# sourceMappingURL=ChatMessageListBody.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatMessageListBody.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/messages/ChatMessageListBody.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAIzD,mBAAmB;AACnB,iBAAS,mBAAmB,CAAC,EAC3B,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,YAAmB,EACnB,aAAa,EACb,UAAU,EACV,UAAU,EACV,QAAQ,EACR,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,sBAAsB,GACvB,EAAE,wBAAwB,+BA0H1B;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ChatMessage } from "@/types/chat";
|
|
2
|
+
interface MessageBodyProps {
|
|
3
|
+
message: Pick<ChatMessage, "role" | "source" | "isError" | "contentFormat" | "content">;
|
|
4
|
+
isStreaming?: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* 消息正文:
|
|
8
|
+
* - AI(mira_ai)→ @ant-design/x-markdown 流式渲染 + 自定义组件
|
|
9
|
+
* - Zendesk / 用户 → 纯文本
|
|
10
|
+
*/
|
|
11
|
+
declare function MessageBody({ message, isStreaming }: MessageBodyProps): import("react").JSX.Element;
|
|
12
|
+
declare const _default: import("react").MemoExoticComponent<typeof MessageBody>;
|
|
13
|
+
export default _default;
|
|
14
|
+
//# sourceMappingURL=MessageBody.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageBody.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/messages/MessageBody.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,UAAU,gBAAgB;IACxB,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,eAAe,GAAG,SAAS,CAAC,CAAC;IACxF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAWD;;;;GAIG;AACH,iBAAS,WAAW,CAAC,EAAE,OAAO,EAAE,WAAmB,EAAE,EAAE,gBAAgB,+BAyCtE;;AAED,wBAAiC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ChatMessage as ChatMessageType } from "@/types/chat";
|
|
2
|
+
import type { DislikeReasonKey } from "@/types/feedback";
|
|
3
|
+
interface MessageFeedbackProps {
|
|
4
|
+
/** 当前消息数据(取 content / feedback / serverMessageId) */
|
|
5
|
+
message: ChatMessageType;
|
|
6
|
+
/** 是否为流式生成中(流式时不展示反馈) */
|
|
7
|
+
isStreaming?: boolean;
|
|
8
|
+
/** 点赞回调 */
|
|
9
|
+
onLike: () => Promise<boolean>;
|
|
10
|
+
/** 点踩第一步:创建反馈并返回 feedbackId */
|
|
11
|
+
onDislikeInit: () => Promise<boolean>;
|
|
12
|
+
/** 点踩第二步:补充原因(other 可带自定义文本) */
|
|
13
|
+
onDislikeReason: (reasonKey: DislikeReasonKey, otherText?: string) => Promise<boolean>;
|
|
14
|
+
}
|
|
15
|
+
/** mira_ai 消息气泡下方的点赞 / 点踩操作区 */
|
|
16
|
+
declare const MessageFeedback: ({ message, isStreaming, onLike, onDislikeInit, onDislikeReason, }: MessageFeedbackProps) => import("react").JSX.Element | null;
|
|
17
|
+
export default MessageFeedback;
|
|
18
|
+
//# sourceMappingURL=MessageFeedback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageFeedback.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/messages/MessageFeedback.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAOzD,UAAU,oBAAoB;IAC5B,qDAAqD;IACrD,OAAO,EAAE,eAAe,CAAC;IACzB,yBAAyB;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW;IACX,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,+BAA+B;IAC/B,aAAa,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,gCAAgC;IAChC,eAAe,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxF;AAED,gCAAgC;AAChC,QAAA,MAAM,eAAe,GAAI,mEAMtB,oBAAoB,uCA2GtB,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface ScrollToBottomButtonProps {
|
|
2
|
+
onClick: () => void;
|
|
3
|
+
}
|
|
4
|
+
/** 消息列表离底时居中浮动的回到底部按钮 */
|
|
5
|
+
declare function ScrollToBottomButton({ onClick }: ScrollToBottomButtonProps): import("react").JSX.Element;
|
|
6
|
+
export default ScrollToBottomButton;
|
|
7
|
+
//# sourceMappingURL=ScrollToBottomButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScrollToBottomButton.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/messages/ScrollToBottomButton.tsx"],"names":[],"mappings":"AAIA,UAAU,yBAAyB;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,yBAAyB;AACzB,iBAAS,oBAAoB,CAAC,EAAE,OAAO,EAAE,EAAE,yBAAyB,+BAiBnE;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface ThinkingStagesProps {
|
|
2
|
+
agentName: string;
|
|
3
|
+
stageIndex: number;
|
|
4
|
+
}
|
|
5
|
+
/** AI 思考过程:单行文案随 stageIndex 切换 */
|
|
6
|
+
declare const ThinkingStages: ({ agentName, stageIndex }: ThinkingStagesProps) => import("react").JSX.Element;
|
|
7
|
+
export default ThinkingStages;
|
|
8
|
+
//# sourceMappingURL=ThinkingStages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThinkingStages.d.ts","sourceRoot":"","sources":["../../../../src/components/chat-widget/messages/ThinkingStages.tsx"],"names":[],"mappings":"AAQA,UAAU,mBAAmB;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,kCAAkC;AAClC,QAAA,MAAM,cAAc,GAAI,2BAA2B,mBAAmB,gCAyBrE,CAAC;AAEF,eAAe,cAAc,CAAC"}
|