@next-bricks/ai 1.6.2 → 1.8.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/dist/bricks.json +3 -2
- package/dist/chunks/1370.026d7240.js +2 -0
- package/dist/chunks/1370.026d7240.js.map +1 -0
- package/dist/chunks/287.af794699.js +2 -0
- package/dist/chunks/287.af794699.js.map +1 -0
- package/dist/chunks/{1370.eaf34ae0.js → 3751.eb7f94f9.js} +2 -2
- package/dist/chunks/{1370.eaf34ae0.js.map → 3751.eb7f94f9.js.map} +1 -1
- package/dist/chunks/8989.c691b402.js +2 -0
- package/dist/chunks/{8989.82221efb.js.map → 8989.c691b402.js.map} +1 -1
- package/dist/chunks/9251.4fe9c596.js +2 -0
- package/dist/chunks/9251.4fe9c596.js.map +1 -0
- package/dist/chunks/chat-view.6719fb2d.js +2 -0
- package/dist/chunks/chat-view.6719fb2d.js.map +1 -0
- package/dist/chunks/main.8c7b10c3.js +2 -0
- package/dist/chunks/main.8c7b10c3.js.map +1 -0
- package/dist/index.d6b404dc.js +2 -0
- package/dist/index.d6b404dc.js.map +1 -0
- package/dist-types/chat-view/ChatService.d.ts +28 -13
- package/dist-types/chat-view/ChatViewContext.d.ts +19 -11
- package/dist-types/chat-view/components/Loading.d.ts +1 -0
- package/dist-types/chat-view/components/MessageItem/Toolbar.d.ts +1 -1
- package/dist-types/chat-view/hooks/useChatViewInfo.d.ts +11 -3
- package/package.json +2 -2
- package/dist/chunks/813.d0e17463.js +0 -2
- package/dist/chunks/813.d0e17463.js.map +0 -1
- package/dist/chunks/8989.82221efb.js +0 -2
- package/dist/chunks/9251.6e1e1049.js +0 -2
- package/dist/chunks/9251.6e1e1049.js.map +0 -1
- package/dist/chunks/chat-view.2f11cf5a.js +0 -2
- package/dist/chunks/chat-view.2f11cf5a.js.map +0 -1
- package/dist/chunks/main.c6b3eed8.js +0 -2
- package/dist/chunks/main.c6b3eed8.js.map +0 -1
- package/dist/index.60cfe48e.js +0 -2
- package/dist/index.60cfe48e.js.map +0 -1
- package/dist-types/chat-view/mockList.d.ts +0 -2
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_next_bricks_ai=self.webpackChunk_next_bricks_ai||[]).push([[813],{15:(e,t,r)=>{r.d(t,{a:()=>a,t:()=>n});var o=r(8769),n=(0,o.createContext)({}),a=()=>(0,o.useContext)(n)},6778:(e,t,r)=>{r.d(t,{M:()=>X});var o=r(9740),n=r(8769),a=r.n(n),s=r(15);function i(e){var{role:t}=e,r=(0,n.useMemo)((()=>"user"===t),[t]);return a().createElement("div",{className:"avatar ".concat(r?"user":"robot")})}var l=r(3373),c=r.n(l);function p(e){var{loading:t}=e;return t?a().createElement("div",{className:"message-list-loading-wrapper"}):null}function d(e){var{loading:t}=e;return t?a().createElement("div",{className:"chart-item-loading-wrapper"},a().createElement("div",{className:"load"},a().createElement("div",null),a().createElement("div",null),a().createElement("div",null),a().createElement("div",null))):null}var m=r(2621),u=(0,m.wrapBrick)("eo-link");function w(e){var{text:t,prompts:r}=e;return a().createElement("div",{className:"guide-item"},t,a().createElement("div",{className:"prompts-list"},r?r.map(((e,t)=>a().createElement(u,{key:t},e))):null))}var h=r(7357),g=r(4001),b=r(536),v=r(4895),f=r(8589),x=r(2762);function k(e){var{text:t}=e;return a().createElement("div",{className:"markdown-item"},a().createElement(g.pb,null,a().createElement(y,{value:t})))}function y(e){var{value:t}=e;return(0,g.hG)((e=>h.KE.make().config((r=>{r.set(h.k,e),r.update(h.QM,(e=>(0,o.A)((0,o.A)({},e),{},{editable:()=>!1}))),t&&r.set(h.CI,t)})).config(v.E).use(x.Wj).use(f.Te).use(b.PD)),[]),a().createElement(g.y5,null)}function E(e){var{text:t}=e;return a().createElement("div",{className:"table-item"},t)}function S(e){var{text:t}=e;return a().createElement("div",{className:"text-item"},t)}var A=r(2681),M=(0,m.wrapBrick)("eo-icon"),z=(0,m.wrapBrick)("eo-tooltip"),q=(0,A.unwrapProvider)("basic.copy-to-clipboard"),C=(0,A.unwrapProvider)("basic.show-notification");function N(e){var{role:t,content:r,chatting:o}=e,i=(0,n.useMemo)((()=>"assistant"===t&&!(null!=r&&r.find((e=>"load"===e.type)))),[t,r]),l=(0,n.useMemo)((()=>o),[o]),{showLike:c}=(0,s.a)();return i&&!l?a().createElement("div",{className:"toolbar"},c&&a().createElement(a().Fragment,null,a().createElement(z,{content:"点赞"},a().createElement(M,{lib:"antd",icon:"like",theme:"filled"})),a().createElement(z,{content:"还不够好"},a().createElement(M,{lib:"antd",icon:"dislike",theme:"filled"}))),a().createElement(z,{content:"点击复制"},a().createElement(M,{lib:"antd",icon:"copy",onClick:()=>{var e=r.map((e=>e.text)).toString();q(e).then((()=>C({type:"success",message:"复制成功"}))).catch((()=>C({type:"error",message:"复制失败"})))}}))):null}var P=r(6238),T=r.n(P);function I(e){var{time:t}=e;return a().createElement("div",{className:"time"},t?"string"==typeof t?t:T()(1e3*t).format("YYYY-MM-DD HH:mm:ss"):null)}var H=(0,m.wrapBrick)("eo-tooltip"),R=(0,m.wrapBrick)("eo-icon");function D(e){var{role:t,content:r}=e,o=(0,n.useMemo)((()=>"user"===t),[t]),{chatting:i,setSearchStr:l}=(0,s.a)();return o&&!i?a().createElement("div",{className:"content-tip"},a().createElement(H,{content:"点击再次提问"},a().createElement(R,{lib:"antd",icon:"edit",onClick:()=>{l(r.map((e=>e.text)).toString())}}))):null}function Y(e){var{content:t,ctime:r,role:o}=e,s=(0,n.useMemo)((()=>"user"===o),[o]),i=(0,n.useCallback)(((e,t)=>{var{type:r,text:o,examplePrompts:n}=e;switch(r){case"guide":return a().createElement(w,{key:t,text:o,prompts:n});case"text":return a().createElement(S,{key:t,text:o});case"table":return a().createElement(E,{key:t,text:o});case"load":return a().createElement(d,{loading:!0});default:return a().createElement(k,{key:t,text:o})}}),[]),l=(0,n.useMemo)((()=>t.map(i)),[t,i]);return a().createElement("div",{className:"message-box"},a().createElement("div",{className:"message-top"},s?"我":"AI助手",a().createElement(I,{time:r})),a().createElement("div",{className:"message-content"},a().createElement("div",{className:"content"},l,a().createElement(D,e),a().createElement(N,e))))}var L=r(9575),W=(0,m.wrapBrick)("eo-icon"),_=(0,m.wrapBrick)("eo-link"),j=85,B=24;function O(e){var{name:t,description:r,icon:o,starterPrompts:i}=e,{setSearchStr:l}=(0,s.a)(),c=(0,n.useMemo)((()=>{var e;return null!==(e=null==o?void 0:o.color)&&void 0!==e?e:"geekblue"}),[o]);return a().createElement("div",{className:"quick-answer-card-item",style:{height:j,background:"linear-gradient(rgba(var(--theme-".concat(c,"-color-rgb-channel), 0.1), rgba(var(--theme-").concat(c,"-color-rgb-channel), 0.08))")},onClick:()=>{(null==i?void 0:i.length)&&l(i[0])}},a().createElement("div",{className:"left"},a().createElement(W,(0,L.A)({className:"icon"},null!=o?o:{icon:"default-app",lib:"easyops",category:"app"},{style:{background:"rgba(var(--theme-".concat(c,"-color-rgb-channel), 0.5)")}}))),a().createElement("div",{className:"content"},a().createElement("div",{className:"title"},t),a().createElement("div",{className:"description"},r)))}function F(){var e,{quickAnswerConfig:t,msgList:r}=(0,s.a)(),[i,l]=(0,n.useState)(!1),c=(0,n.useRef)(null),p=(0,n.useRef)(!1);return(0,n.useEffect)((()=>{var e=c.current;if(e){var t=new ResizeObserver((e=>{for(var t of e)t.contentRect.height>3*j+2*B?p.current||l(!0):l(!1)}));return t.observe(e),()=>t.disconnect()}}),[i]),null!=t&&t.list.length&&0===r.length?a().createElement("div",{className:"quick-answer-wrapper"},a().createElement("div",{className:"tip"},null!==(e=t.tip)&&void 0!==e?e:"你好,我是运维数智人—Murphy,我能为你提供以下服务:"),a().createElement("div",{className:"quick-answer-list",style:(0,o.A)({},i?{maxHeight:3*j+2*B+10,overflow:"hidden"}:{}),ref:c},t.list.map((e=>a().createElement(O,(0,L.A)({key:e.instanceId},e))))),i?a().createElement("div",{className:"show-more-wrapper"},a().createElement(_,{icon:{lib:"antd",icon:"down"},className:"show-more-btn",onClick:()=>{p.current=!0,l(!1)}},"显示更多")):null):null}var U=r(2445),$=(0,m.wrapBrick)("eo-link");function J(){var{stopChat:e}=(0,s.a)();return a().createElement("div",{className:"stop-responding-wrapper"},a().createElement($,{className:"stop-btn",onClick:()=>{e()}},"停止生成"))}var G=80;function X(e){var{showAvatar:t=!0}=e,r=(0,n.useRef)(null),l=(0,n.useRef)(null),[d,m]=(0,n.useState)(0),u=(0,n.useRef)(!1),w=(0,n.useRef)(!1),{msgList:h,msgItem:g,loading:b,chatting:v}=(0,s.a)(),f=(0,n.useCallback)((function(e){var r,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return a().createElement("div",{className:c()("message-item",{user:"user"===e.role}),key:null!==(r=e.ctime)&&void 0!==r?r:o},t&&a().createElement(i,{role:e.role}),a().createElement(Y,e))}),[t]),x=(0,n.useMemo)((()=>h.length?h.map(f):null),[h,f]),k=(0,n.useMemo)((()=>g?a().createElement(a().Fragment,null,f((0,o.A)((0,o.A)({},g),{},{chatting:!0})),a().createElement(J,null)):null),[g,f]),y=(0,U.throttle)((()=>{var e=r.current.scrollHeight-r.current.clientHeight,t=e===r.current.scrollTop||e-20<r.current.scrollTop;w.current?t&&(u.current=!1,w.current=!1):t||(u.current?w.current=!0:u.current=!0)}),200);return(0,n.useEffect)((()=>{v&&(w.current=!1,u.current=!1)}),[v]),(0,n.useEffect)((()=>{var e=l.current;if(e){var t=new ResizeObserver((e=>{var t=0;if(!w.current){for(var o of e)t=o.contentRect.height-G;t!==d||b||v||r.current.scroll({top:Number.MAX_SAFE_INTEGER}),t>d&&v&&(r.current.scroll({top:Number.MAX_SAFE_INTEGER}),m(Math.max(d,t)))}}));return t.observe(e),()=>t.disconnect()}}),[v,b,d]),a().createElement("div",{className:"message-list",ref:r,onScroll:y},a().createElement("div",{className:"message-list-box",ref:l},a().createElement(F,null),x,k),a().createElement(p,{loading:b}))}},205:(e,t,r)=>{r.d(t,{D:()=>h});var o,n=r(9740),a=r(8769),s=r.n(a),i=r(2621),l="\n min-height:0 !important;\n max-height:none !important;\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important;\n padding: 10px !important;\n pointer-events: none !important;\n",c=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","font-variant","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing","word-break","white-space"],p=r(3373),d=r.n(p),m=r(15),u=(0,i.wrapBrick)("eo-tooltip"),w=(0,i.wrapBrick)("eo-icon");function h(){var[e,t]=(0,a.useState)(""),[r,i]=(0,a.useState)(!1),[p,h]=(0,a.useState)(!1),[g,b]=(0,a.useState)(),[v,f]=(0,a.useState)(!1),x=(0,a.useRef)(null),k=(0,a.useRef)(null),y=(0,a.useRef)(!1),E=(0,a.useRef)(!1),{chatting:S,loading:A,searchStr:M,createSession:z,setSearchStr:q,handleChat:C}=(0,m.a)(),N=(0,a.useMemo)((()=>!!e),[e]),P=(0,a.useMemo)((()=>[1,5]),[]),T=(0,a.useMemo)((()=>A||S),[S,A]),I=(0,a.useCallback)((function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:P;if(!y.current||!p){var t=k.current;if(t){var r=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;o||((o=document.createElement("textarea")).setAttribute("tab-index","-1"),o.setAttribute("aria-hidden","true"),document.body.appendChild(o));var n=window.getComputedStyle(e),a=c.map((e=>"".concat(e,":").concat(n.getPropertyValue(e)))).join(";");o.setAttribute("style","".concat(a,";").concat(l)),o.value=e.value||e.placeholder||"";var s=void 0,i=void 0,p=o.scrollHeight-20+2;if(null!==t||null!==r){o.value=" ";var d=o.scrollHeight-20;null!==t&&(s=d*t-20+2,p=Math.max(20,p)),null!==r&&(i=d*r-20+2,p=Math.min(i,p))}var m={height:p,overflowY:"scroll",resize:"none"};return s&&(m.minHeight=s),i&&(m.maxHeight=i),m}(t,e[0],e[1]);b(r)}y.current=p}}),[P,p]),H=(0,a.useCallback)((e=>{var r="string"==typeof e?e:e.target.value;t(r),k.current.value=r}),[]),R=(0,a.useCallback)((()=>{h((e=>!e))}),[]),D=(0,a.useCallback)((()=>{N&&k.current&&!T&&(C(e),i(!1),h(!1),H(""),k.current.blur())}),[e,N,T,C,H]),Y=(0,a.useCallback)((e=>{"Enter"!==e.key||e.shiftKey||E.current||(e.preventDefault(),D())}),[D]);return(0,a.useEffect)((()=>{M&&(H(M),q(""))}),[M,T,q,H]),(0,a.useEffect)((()=>{I(p?[20,20]:void 0)}),[e,p,I]),(0,a.useEffect)((()=>{var e=x.current;if(e){var t=new ResizeObserver((()=>{var{width:t}=e.getBoundingClientRect(),{width:r}=e.parentElement.parentElement.getBoundingClientRect();f(t===r)}));return t.observe(e),()=>{t.disconnect()}}}),[]),(0,a.useEffect)((()=>{var e;!S&&k.current&&(null===(e=k.current)||void 0===e||e.focus())}),[S]),s().createElement("div",{className:d()("search-input-box",{"fill-content":v}),ref:x},s().createElement("div",{className:d()("input-box",{active:r,disabled:T,expand:p})},s().createElement("textarea",{value:e,ref:k,style:(0,n.A)((0,n.A)({},g),{},{paddingRight:p?"50px":"140px"}),placeholder:S?"回复中,请稍等...":"提出你的想法...",onFocus:()=>i(!0),onBlur:()=>i(!1),onChange:H,onKeyDown:Y,onCompositionStart:()=>{E.current=!0},onCompositionEnd:()=>{E.current=!1}}),s().createElement("span",{className:"suffix-icon"},s().createElement(u,{content:"新增会话"},s().createElement(w,{lib:"antd",icon:"plus-circle",onClick:()=>{z()}})),!p&&s().createElement(u,{content:"放大"},s().createElement(w,{lib:"antd",icon:"arrows-alt",onClick:R})),s().createElement("div",{className:"submit-split"}),s().createElement(u,{content:"提交"},s().createElement(w,{className:d()("submit-btn",{active:N,disabled:!N||T}),lib:S?"antd":"easyops",icon:S?"loading":"release-management-fill",category:S?"":"menu",spinning:S,onClick:D}))),s().createElement("span",{className:"toolbar-icon"},p&&s().createElement(u,{content:"缩小"},s().createElement(w,{lib:"antd",icon:"shrink",onClick:R})))),N&&s().createElement("div",{className:"search-input-toolbar"},s().createElement("div",{className:"input-tip"},"Shift + Enter 换行")))}},3830:(e,t,r)=>{r.d(t,{Z:()=>c});var o=r(9575),n=r(8769),a=r.n(n),s=r(15),i=r(3373),l=r.n(i);function c(){var{sessionList:e}=(0,s.a)();return a().createElement("div",{className:"session-list-wrapper"},a().createElement("div",{className:"session-title"},"历史对话"),a().createElement("div",{className:"session-list"},e.map(((e,t)=>a().createElement(p,(0,o.A)({key:t},e))))))}function p(e){var{title:t,id:r}=e,{updateSession:o,activeSessionId:n}=(0,s.a)();return a().createElement("div",{className:l()("session-item",{active:r===n}),onClick:()=>{o(r)}},t)}},8312:(e,t,r)=>{r.d(t,{F:()=>C});var o=r(6330),n=r(8769),a=[{role:"guide",content:[{type:"guide",text:"DEFAULT_CHAT_GUIDE"}]},{role:"user",content:[{type:"text",text:"你好"}],ctime:1710731198},{content:[{text:"你好!很高兴能为你服务。如果你有任何问题或者需要帮助,随时告诉我,我会尽我所能为你提供帮助。有什么我可以帮你的吗?",type:"markdown"}],ctime:"1710731200",role:"assistant"},{role:"user",content:[{type:"text",text:"你知道百度的地址吗"}],ctime:1710731261},{content:[{text:"百度公司是一家中国的互联网技术公司,其总部位于北京市。以下是百度的官方地址:\n\n北京市海淀区西北旺东路10号院百度科技园\n\n请注意,百度可能有多个办公地点,但上述地址是其主要的总部地址。如果你需要访问百度或与其联系,建议你查看其官方网站获取最新的联系信息。",type:"markdown"}],ctime:1710731266,role:"assistant"},{role:"user",content:[{type:"text",text:"可以给我官网的地址吗"}],ctime:1710731280},{content:[{text:"当然可以。以下是百度公司的官方网站地址:\n\nhttps://www.baidu.com/\n\n你可以通过这个链接访问百度,获取更多信息和服务。",type:"markdown"}],ctime:"1710731282",role:"assistant"},{role:"user",content:[{type:"text",text:"现在我们多少个微应用"}],ctime:1710731716},{content:[{text:"很抱歉,但我不清楚你提到的“微应用”是指什么具体的上下文或系统。如果你是指在使用某个特定的平台或服务中的微应用数量,例如微信小程序、百度智能小程序等,我需要更多的上下文信息才能给出准确的回答。\n\n如果你能提供更多的细节,我会很乐意帮助你查询或解答有关微应用数量的问题。",type:"markdown"}],ctime:"1710731720",role:"assistant"},{role:"user",content:[{type:"text",text:"给我一个任意表格数据"}],ctime:1710731756},{content:[{text:"以下是任意创建的一个简单表格数据示例:\n\n| 姓名 | 年龄 | 性别 | 职位 |\n|-------|-----|------|----------|\n| 张三 | 25 | 男 | 软件工程师 |\n| 李四 | 30 | 女 | 产品经理 |\n| 王五 | 28 | 男 | UI设计师 |\n| 赵六 | 32 | 女 | 市场专员 |\n\n这个表格包含了姓名、年龄、性别和职位四列数据,以及四个示例员工的信息。这只是一个虚构的数据示例,你可以根据需要修改或扩展表格的内容。",type:"markdown"}],ctime:1710731761,role:"assistant"}],s=[{role:"guide",content:[{type:"guide",text:"DEFAULT_CHAT_GUIDE",examplePrompts:["http://www.baidu.com"]}]},{role:"user",content:[{type:"text",text:"什么是 SSE"}],ctime:1710837828},{content:[{text:"SSE(Server-Sent Events)是一种服务器到客户端的单向通信协议。它允许服务器通过HTTP连接向客户端推送数据,特别适用于实现实时更新功能,比如在网页上实时显示新闻更新、股票价格变动等。SSE基于HTTP协议,并且得到了所有现代浏览器的支持。\n\nSSE 的工作原理是什么?\nSSE的工作原理相对简单:\n1. 客户端通过JavaScript的`EventSource`对象向服务器发送一个HTTP请求,请求建立SSE连接。\n2. 服务器接收到请求后,返回一个HTTP响应,这个响应的`Content-Type`头部被设置为`text/event-stream`。\n3. 服务器保持这个连接打开,并且可以随时通过这个连接向客户端发送数据。\n4. 客户端通过`EventSource`对象接收服务器发来的数据,并可以监听特定的事件。\n\nSSE 有哪些优点?\n- **兼容性**:SSE得到了所有现代浏览器的支持,而其他一些实时通信技术如WebSocket可能不适用于所有浏览器。\n- **简单性**:SSE的实现比较简单,不需要复杂的握手过程,直接基于HTTP协议,易于理解和部署。\n\n与短轮询、Comet、WebSocket等技术相比,SSE有哪些优势?\n- **短轮询**:短轮询要求客户端定期向服务器发送请求,这种方式实现简单,但会造成很多无效请求,增加服务器负载。\n- **Comet**:Comet技术是一种基于HTTP长连接的推送技术,但实现较为复杂,且不如SSE标准化。\n- **WebSocket**:WebSocket提供了全双工的通信渠道,适用于需要双向通信的场景,但它的兼容性和实现复杂度不如SSE。\n\nSSE相比之下,在只需要服务器到客户端单向通信的场景中,提供了简单、高效且兼容性好的解决方案。\n\n如何实现一个简单的SSE服务?\n以下是一个简单的示例,展示了客户端和服务器端的实现:\n\n**客户端(JavaScript)**\n```javascript\n// 创建EventSource对象\nconst eventSource = new EventSource('http://localhost:8080/events');\n// 监听服务器发送的消息\neventSource.onmessage = function(event) {\n console.log('收到消息:', event.data);\n};\n// 监听连接关闭事件\neventSource.onclose = function() {\n console.log('连接已关闭');\n};\n// 监听错误事件\neventSource.onerror = function() {\n console.log('连接出错');\n};\n```\n\n**服务器端(Node.js)**\n```javascript\nconst http = require('http');\nconst express = require('express');\nconst app = express();\n\napp.get('/events', function(req, res) {\n res.setHeader('Content-Type', 'text/event-stream');\n res.setHeader('Cache-Control', 'no-cache');\n res.setHeader('Connection', 'keep-alive');\n \n // 定期发送数据到客户端\n const sendData = () => {\n res.write(`data: ${new Date().toString()}\\n\\n`);\n };\n setInterval(sendData, 1000);\n\n // 当连接关闭时,停止发送数据\n req.on('close', () => {\n clearInterval(sendData);\n });\n});\n\nconst server = http.createServer(app);\nserver.listen(8080, () => {\n console.log('SSE服务正在监听端口8080');\n});\n```\n\n以上代码展示了一个简单的SSE服务器和客户端的实现,其中服务器每秒向客户端发送当前时间。",type:"markdown"}],ctime:1710837855,role:"assistant"},{role:"user",content:[{type:"text",text:"请写出一段示例代码"}],ctime:1710837859},{content:[{text:"当然,下面是一个简单的Node.js服务器端示例代码,它使用Express框架来创建一个SSE服务器。这个服务器会向连接的客户端发送一个简单的消息流。\n\n**服务器端(Node.js + Express)**\n\n```javascript\nconst express = require('express');\nconst app = express();\nconst PORT = 3000;\n\napp.get('/events', function(req, res) {\n // 设置响应头以支持SSE\n res.writeHead(200, {\n 'Content-Type': 'text/event-stream', // SSE的MIME类型\n 'Cache-Control': 'no-cache', // 禁止缓存\n 'Connection': 'keep-alive', // 保持连接\n });\n\n // 发送事件到客户端\n const sendEvent = (data, eventName = 'message') => {\n res.write(`event: ${eventName}\\n`); // 事件名称\n res.write(`data: ${JSON.stringify(data)}\\n\\n`); // 数据\n };\n\n // 发送初始化消息\n sendEvent({ message: 'Connected successfully!' });\n\n // 模拟定时发送数据\n const intervalId = setInterval(() => {\n sendEvent({ message: `Server time: ${new Date().toString()}` });\n }, 1000); // 每1秒发送一次\n\n // 当请求关闭时,清除定时器\n req.on('close', () => {\n clearInterval(intervalId);\n console.log('Client connection closed, stopped sending events');\n });\n});\n\napp.listen(PORT, () => {\n console.log(`SSE server is running on http://localhost:${PORT}`);\n});\n```\n\n**客户端(HTML + JavaScript)**\n\n以下是客户端的HTML和JavaScript代码,它将连接到上面的SSE服务器并显示接收到的消息。\n\n```html\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<title>SSE Client Example</title>\n<script>\nwindow.onload = function() {\n var eventSource = new EventSource('/events');\n eventSource.onmessage = function(e) {\n console.log('Received a message:', e.data);\n document.getElementById('output').innerHTML += e.data + '<br>';\n };\n eventSource.onerror = function(e) {\n console.error('EventSource failed:', e);\n eventSource.close();\n };\n};\n<\/script>\n</head>\n<body>\n<div id=\"output\"></div>\n</body>\n</html>\n```\n\n要运行这个示例,首先启动服务器端代码,然后打开HTML文件在浏览器中查看。服务器将开始向客户端发送消息,客户端将在`<div id=\"output\"></div>`元素中显示这些消息。",type:"markdown"}],ctime:1710837878,role:"assistant"}],i=r(6238),l=r.n(i),c=r(4635),p=r(918),d=r(2559),m=r(829),u=r(6121),w=r(2110),h=r(6595),g=new WeakMap,b=new WeakMap,v=new WeakMap,f=new WeakMap,x=new WeakMap,k=new WeakMap,y=new WeakMap,E=new WeakMap,S=new WeakMap,A=new WeakSet;class M{constructor(e){var{agentId:t,enterInterval:r=50}=e;(0,c.A)(this,A),(0,p.A)(this,g,void 0),(0,p.A)(this,b,void 0),(0,p.A)(this,v,void 0),(0,p.A)(this,f,!1),(0,p.A)(this,x,!1),(0,p.A)(this,k,void 0),(0,p.A)(this,y,[]),(0,p.A)(this,E,{}),(0,p.A)(this,S,void 0),(0,u.A)(b,this,t),(0,u.A)(v,this,r)}enqueue(e){(0,m.A)(y,this).push(e),(0,d.A)(A,this,q).call(this)}dequeue(){return(0,m.A)(y,this).shift()}getMessageQueue(){return(0,m.A)(y,this)}subscribe(e,t){(0,m.A)(E,this)[e]||((0,m.A)(E,this)[e]=[]),(0,m.A)(E,this)[e].push(t)}unsubscribe(e,t){(0,m.A)(E,this)[e]&&((0,m.A)(E,this)[e]=(0,m.A)(E,this)[e].filter((e=>e!==t)))}notifySubscribers(e){var t=e.topic;(0,m.A)(E,this)[t]&&(0,m.A)(E,this)[t].forEach((t=>{t(null==e?void 0:e.message)}))}setConversationId(e){(0,u.A)(S,this,e)}getSessionList(){return(0,o.A)((function*(){}))()}chat(e){var t=this;return(0,o.A)((function*(){(0,u.A)(g,t,new AbortController);var r,n=!1;(0,u.A)(f,t,!0),yield(0,w.y)("".concat((0,h.getBasePath)(),"api/gateway/easyops.api.aiops_chat.manage.LLMChatProxy@1.0.0/api/aiops_chat/v1/chat/completions"),{method:"POST",signal:(0,m.A)(g,t).signal,body:JSON.stringify({agentId:(0,m.A)(b,t),conversationId:(0,m.A)(S,t),input:e,stream:!0}),headers:{"giraffe-contract-name":"easyops.api.aiops_chat.manage.LLMChatProxy"},onopen:(r=(0,o.A)((function*(e){e.ok?console.log("open sse service success!"):console.log("open sse service fail!")})),function(e){return r.apply(this,arguments)}),onmessage:e=>{var{data:r}=e;if(n=!0,"[DONE]"!==r){var o={};try{o=JSON.parse(r)}catch(e){return console.log("数据格式错误",e),void t.enqueue({topic:"add",message:{created:l()().format("YYYY-MM-DD HH:mm:ss"),delta:{role:"assistant",content:"`数据格式错误`"}}})}(0,u.A)(S,t,o.conversationId),t.enqueue({topic:"add",message:o})}else(0,m.A)(g,t).abort()},onclose:()=>{console.log("close"),n||t.enqueue({topic:"add",message:{delta:{role:"assistant",content:"无法识别"},created:l()().format("YYYY-MM-DD HH:mm:ss")}}),(0,m.A)(g,t).abort()},onerror:e=>{console.log("err",e),(0,m.A)(g,t).abort()}}),(0,u.A)(f,t,!1)}))()}stop(){var e;clearInterval((0,m.A)(k,this)),(0,m.A)(g,this)&&(null===(e=(0,m.A)(g,this))||void 0===e||e.abort()),(0,u.A)(f,this,!1),(0,u.A)(k,this,void 0),(0,u.A)(x,this,!1),(0,d.A)(A,this,z).call(this),this.notifySubscribers({topic:"stop"})}}function z(){(0,m.A)(y,this).length=0}function q(){(0,m.A)(x,this)||((0,u.A)(x,this,!0),(0,u.A)(k,this,setInterval((()=>{if((0,m.A)(f,this)||this.getMessageQueue().length){var e=this.dequeue();e&&this.notifySubscribers(e)}else clearInterval((0,m.A)(k,this)),(0,u.A)(k,this,void 0),(0,u.A)(x,this,!1),this.notifySubscribers({topic:"finish"})}),(0,m.A)(v,this))))}function C(e){var{agentId:t,enterInterval:r=50}=e,[i,c]=(0,n.useState)("1"),[p,d]=(0,n.useState)(!1),[m,u]=(0,n.useState)(!1),[w,h]=(0,n.useState)([]),[g,b]=(0,n.useState)([]),[v,f]=(0,n.useState)(),[x,k]=(0,n.useState)(""),y=(0,n.useRef)(""),E=(0,n.useRef)(),S=(0,n.useMemo)((()=>new M({agentId:t,enterInterval:r})),[t,r]);(0,n.useEffect)((()=>{}),[]),(0,n.useEffect)((()=>{h([{title:"会话一",id:"1",ctime:1710731756,active:!0}])}),[]),(0,n.useEffect)((()=>{var e=e=>{e&&(y.current=y.current+e.delta.content,E.current={role:"assistant",content:[{type:"markdown",text:y.current}],key:Math.random(),ctime:l()(null==e?void 0:e.created).format("YYYY-MM-DD HH:mm:ss")},f(E.current))},t=()=>{y.current="",f(void 0),u(!1),E.current=void 0},r=()=>{b((e=>e.concat(E.current))),t()},o=()=>{b((e=>{var t;return E.current?(null===(t=E.current)||void 0===t||t.content.push({type:"markdown",text:"` 对话被中断了 `"}),e.concat(E.current)):e})),t()};return S.subscribe("add",e),S.subscribe("finish",r),S.subscribe("stop",o),()=>{S.unsubscribe("add",e),S.unsubscribe("finish",r),S.unsubscribe("stop",o)}}),[S]);var A=(0,n.useCallback)(function(){var e=(0,o.A)((function*(e){u(!0),S.chat(e),b((t=>t.concat({role:"user",content:[{type:"text",text:e}],ctime:l()().format("YYYY-MM-DD HH:mm:ss")}))),f({role:"assistant",content:[{type:"load",text:""}],ctime:"Now"})}));return function(t){return e.apply(this,arguments)}}(),[S]),z=(0,n.useCallback)((()=>{S.stop()}),[S]),q=(0,n.useCallback)((()=>{b([]),S.setConversationId()}),[S]),C=(0,n.useCallback)(function(){var e=(0,o.A)((function*(e){d(!0),b([]),c(e);var t=function(){var t=(0,o.A)((function*(){return new Promise((t=>{setTimeout((()=>{t("1"===e?a:s)}),5e3)}))}));return function(){return t.apply(this,arguments)}}(),r=yield t();b(r),d(!1)}));return function(t){return e.apply(this,arguments)}}(),[]);return{loading:p,chatting:m,activeSessionId:i,sessionList:w,searchStr:x,msgList:g,msgItem:v,handleChat:A,stopChat:z,createSession:q,updateSession:C,setSearchStr:k}}},6870:(e,t,r)=>{r.d(t,{A:()=>i});var o=r(6758),n=r.n(o),a=r(935),s=r.n(a)()(n());s.push([e.id,':root{--message-box-bg:#f1f3f4;--search-input-icon-hover:#ddd;--quick-answer-card-item-hover:0px 7px 8px 0px rgba(0,0,0,0.15)}html[data-theme="dark"],\nhtml[data-theme="dark-v2"]{--message-box-bg:rgba(255,255,255,0.16);--search-input-icon-hover:#383838;--quick-answer-card-item-hover:0px 7px 8px 0px rgba(0,0,0,0.24)}',""]);const i=s},4651:(e,t,r)=>{r.d(t,{A:()=>i});var o=r(6758),n=r.n(o),a=r(935),s=r.n(a)()(n());s.push([e.id,'.ProseMirror{position:relative;word-wrap:break-word;white-space:pre-wrap;white-space:break-spaces;font-variant-ligatures:none;font-feature-settings:"liga" 0,none}.ProseMirror pre{white-space:pre-wrap}.ProseMirror li{position:relative}.ProseMirror-hideselection *::selection{background:transparent}.ProseMirror-hideselection *::-moz-selection{background:transparent}.ProseMirror-hideselection{caret-color:transparent}.ProseMirror-selectednode{outline:2px solid #8cf}li.ProseMirror-selectednode{outline:none}li.ProseMirror-selectednode:after{content:"";position:absolute;left:-32px;right:-2px;top:-2px;bottom:-2px;border:2px solid #8cf;pointer-events:none}img.ProseMirror-separator{display:inline!important;border:none!important;margin:0!important}.ProseMirror .tableWrapper{overflow-x:auto}.ProseMirror table{border-collapse:collapse;table-layout:fixed;width:100%;overflow:hidden}.ProseMirror td,\n.ProseMirror th{vertical-align:top;box-sizing:border-box;position:relative}.ProseMirror .column-resize-handle{position:absolute;right:-2px;top:0;bottom:0;width:4px;z-index:20;background-color:#adf;pointer-events:none}.ProseMirror.resize-cursor{cursor:ew-resize;cursor:col-resize}.ProseMirror .selectedCell:after{z-index:2;position:absolute;content:"";left:0;right:0;top:0;bottom:0;background:rgba(200,200,255,0.4);pointer-events:none}.milkdown-theme-nord blockquote{border-left-width:4px;--tw-border-opacity:1;border-color:rgb(94 129 172/var(--tw-border-opacity));padding-left:1rem;font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,serif;font-style:normal}.milkdown-theme-nord code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:400;--tw-text-opacity:1;color:rgb(94 129 172/var(--tw-text-opacity))}.milkdown-theme-nord pre code{color:inherit}.milkdown-theme-nord img{margin-top:0!important;margin-bottom:0!important;display:inline-block;max-width:100%}.milkdown-theme-nord.prose\n :where(blockquote):not(:where([class~="not-prose"] *)){font-weight:400}.milkdown-theme-nord.prose\n :where(ol > li):not(:where([class~="not-prose"] *))::marker,\n.milkdown-theme-nord.prose\n :where(ul > li):not(:where([class~="not-prose"] *))::marker{--tw-text-opacity:1;color:rgb(94 129 172/var(--tw-text-opacity))}.milkdown-theme-nord.prose\n :where(blockquote p:first-of-type):not(:where([class~="not-prose"] *)):before,\n.milkdown-theme-nord.prose\n :where(blockquote p:first-of-type):not(:where([class~="not-prose"] *)):after{content:""}.milkdown-theme-nord.prose\n :where(code):not(:where([class~="not-prose"] *)):before,\n.milkdown-theme-nord.prose\n :where(code):not(:where([class~="not-prose"] *)):after{content:""}.milkdown-theme-nord.prose .tableWrapper{position:relative;margin-bottom:0.5rem;overflow-x:auto}.milkdown-theme-nord.prose table{margin:1rem!important;overflow:visible!important;font-size:0.875rem;line-height:1.25rem;--tw-shadow:0 4px 6px -1px rgb(0 0 0/0.1),0 2px 4px -2px rgb(0 0 0/0.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}@media (min-width: 640px){.milkdown-theme-nord.prose table{border-radius:0.5rem}}.milkdown-theme-nord.prose td,\n.milkdown-theme-nord.prose th{padding:0.75rem 1.5rem!important}.milkdown-theme-nord.prose tr{border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.dark .milkdown-theme-nord.prose tr{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.milkdown-theme-nord.prose :where(td, th) p{margin:0!important}.milkdown-theme-nord.prose :where(td, th):nth-child(odd){background-color:var(--color-fill-bg-base-1)}.dark .milkdown-theme-nord.prose :where(td, th):nth-child(odd){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.milkdown-theme-nord.prose.ProseMirror .selectedCell:after{background-color:#88c0d04d}.milkdown-theme-nord.prose br[data-is-inline="true"],\n.milkdown-theme-nord.prose br[data-is-inline="true"]:after{content:" "}.prose{color:var(--color-normal-text)}.prose :where(p):not(:where([class~="not-prose"] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~="lead"]):not(:where([class~="not-prose"] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~="not-prose"] *)){color:var(--color-info);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~="not-prose"] *)){color:var(--color-strong-text);font-weight:600}.prose :where(a strong):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(thead th strong):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(ol):not(:where([class~="not-prose"] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type="A"]):not(:where([class~="not-prose"] *)){list-style-type:upper-alpha}.prose :where(ol[type="a"]):not(:where([class~="not-prose"] *)){list-style-type:lower-alpha}.prose :where(ol[type="A" s]):not(:where([class~="not-prose"] *)){list-style-type:upper-alpha}.prose :where(ol[type="a" s]):not(:where([class~="not-prose"] *)){list-style-type:lower-alpha}.prose :where(ol[type="I"]):not(:where([class~="not-prose"] *)){list-style-type:upper-roman}.prose :where(ol[type="i"]):not(:where([class~="not-prose"] *)){list-style-type:lower-roman}.prose :where(ol[type="I" s]):not(:where([class~="not-prose"] *)){list-style-type:upper-roman}.prose :where(ol[type="i" s]):not(:where([class~="not-prose"] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~="not-prose"] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~="not-prose"] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol > li):not(:where([class~="not-prose"] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul > li):not(:where([class~="not-prose"] *))::marker{color:var(--tw-prose-bullets)}.prose :where(hr):not(:where([class~="not-prose"] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~="not-prose"] *)){font-weight:500;font-style:italic;color:var(--color-auxiliary-text);border-left-width:0.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"\\201C" "\\201D" "\\2018" "\\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose\n :where(blockquote p:first-of-type):not(\n :where([class~="not-prose"] *)\n )::before{content:open-quote}.prose\n :where(blockquote p:last-of-type):not(:where([class~="not-prose"] *))::after{content:close-quote}.prose :where(h1):not(:where([class~="not-prose"] *)){color:var(--color-strong-text);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:0.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~="not-prose"] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~="not-prose"] *)){color:var(--color-strong-text);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~="not-prose"] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~="not-prose"] *)){color:var(--color-strong-text);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:0.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~="not-prose"] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~="not-prose"] *)){color:var(--color-strong-text);font-weight:600;margin-top:1.5em;margin-bottom:0.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~="not-prose"] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure > *):not(:where([class~="not-prose"] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~="not-prose"] *)){color:var(--tw-prose-captions);font-size:0.875em;line-height:1.4285714;margin-top:0.8571429em}.prose :where(code):not(:where([class~="not-prose"] *)){color:var(--tw-prose-code);font-weight:600;font-size:0.875em}.prose :where(code):not(:where([class~="not-prose"] *))::before{content:"`"}.prose :where(code):not(:where([class~="not-prose"] *))::after{content:"`"}.prose :where(a code):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(h1 code):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(h2 code):not(:where([class~="not-prose"] *)){color:inherit;font-size:0.875em}.prose :where(h3 code):not(:where([class~="not-prose"] *)){color:inherit;font-size:0.9em}.prose :where(h4 code):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(blockquote code):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(thead th code):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(pre):not(:where([class~="not-prose"] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:0.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:0.375rem;padding-top:0.8571429em;padding-right:1.1428571em;padding-bottom:0.8571429em;padding-left:1.1428571em}.prose :where(pre code):not(:where([class~="not-prose"] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~="not-prose"] *))::before{content:none}.prose :where(pre code):not(:where([class~="not-prose"] *))::after{content:none}.prose :where(table):not(:where([class~="not-prose"] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:0.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~="not-prose"] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~="not-prose"] *)){color:var(--color-strong-text);font-weight:600;vertical-align:bottom;padding-right:0.5714286em;padding-bottom:0.5714286em;padding-left:0.5714286em}.prose :where(tbody tr):not(:where([class~="not-prose"] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~="not-prose"] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~="not-prose"] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~="not-prose"] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~="not-prose"] *)){vertical-align:top}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgb(0 0 0/50%);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(video):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~="not-prose"] *)){margin-top:0.5em;margin-bottom:0.5em}.prose :where(ol > li):not(:where([class~="not-prose"] *)){padding-left:0.375em}.prose :where(ul > li):not(:where([class~="not-prose"] *)){padding-left:0.375em}.prose :where(.prose > ul > li p):not(:where([class~="not-prose"] *)){margin-top:0.75em;margin-bottom:0.75em}.prose\n :where(.prose > ul > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.25em}.prose\n :where(.prose > ul > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.25em}.prose\n :where(.prose > ol > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.25em}.prose\n :where(.prose > ol > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.25em}.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"] *)){margin-top:0.75em;margin-bottom:0.75em}.prose :where(hr + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(h2 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(h3 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(h4 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.prose :where(tbody td, tfoot td):not(:where([class~="not-prose"] *)){padding-top:0.5714286em;padding-right:0.5714286em;padding-bottom:0.5714286em;padding-left:0.5714286em}.prose\n :where(tbody td:first-child, tfoot td:first-child):not(\n :where([class~="not-prose"] *)\n ){padding-left:0}.prose\n :where(tbody td:last-child, tfoot td:last-child):not(\n :where([class~="not-prose"] *)\n ){padding-right:0}.prose :where(.prose > :first-child):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(.prose > :last-child):not(:where([class~="not-prose"] *)){margin-bottom:0}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.isolate{isolation:isolate}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.\\!table{display:table!important}.table{display:table}.inline-table{display:inline-table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row-group{display:table-row-group}.table-row{display:table-row}.flow-root{display:flow-root}.grid{display:grid}.inline-grid{display:inline-grid}.contents{display:contents}.list-item{display:list-item}.hidden{display:none}.flex-shrink{flex-shrink:1}.shrink{flex-shrink:1}.flex-grow{flex-grow:1}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.\\!transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.break-all{word-break:break-all}.rounded{border-radius:0.25rem}.border{border-width:1px}.text-justify{text-align:justify}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.lining-nums{--tw-numeric-figure:lining-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.overline{-webkit-text-decoration-line:overline;text-decoration-line:overline}.line-through{-webkit-text-decoration-line:line-through;text-decoration-line:line-through}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.sepia{--tw-sepia:sepia(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(0.4,0,0.2,1);transition-duration:150ms}.ease-in{transition-timing-function:cubic-bezier(0.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(0.4,0,0.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,0.2,1)}.milkdown{border-radius:0.25rem;margin:0;padding:0}.editor{margin-left:auto;margin-right:auto}:is(.dark .dark\\:prose-invert){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}code[class*="language-"],\npre[class*="language-"]{color:#f8f8f2;background:none;font-family:"Fira Code",Consolas,Monaco,"Andale Mono","Ubuntu Mono",monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*="language-"]{padding:1em;margin:0.5em 0;overflow:auto;border-radius:0.3em}:not(pre) > code[class*="language-"],\npre[class*="language-"]{background:#2e3440}:not(pre) > code[class*="language-"]{padding:0.1em;border-radius:0.3em;white-space:normal}.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata{color:#636f88}.token.punctuation{color:#81a1c1}.namespace{opacity:0.7}.token.property,\n.token.tag,\n.token.constant,\n.token.symbol,\n.token.deleted{color:#81a1c1}.token.number{color:#b48ead}.token.boolean{color:#81a1c1}.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted{color:#a3be8c}.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string,\n.token.variable{color:#81a1c1}.token.atrule,\n.token.attr-value,\n.token.function,\n.token.class-name{color:#88c0d0}.token.keyword{color:#81a1c1}.token.regex,\n.token.important{color:#ebcb8b}.token.important,\n.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.entity{cursor:help}',""]);const i=s.toString()},6780:(e,t,r)=>{r.d(t,{A:()=>i});var o=r(6758),n=r.n(o),a=r(935),s=r.n(a)()(n());s.push([e.id,'.quick-answer-wrapper{margin-top:20px;border-radius:6px;border:1px solid var(--color-border-divider-line);padding:16px 24px}.quick-answer-wrapper .tip{font-size:18px;margin-bottom:30px}.quick-answer-wrapper .quick-answer-list{display:grid;grid-gap:24px 16px;gap:24px 16px;border-radius:3px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item{position:relative;padding:16px;border-radius:6px;cursor:pointer;display:flex;padding:10px 20px;gap:12px;width:auto;box-sizing:border-box}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item:hover{box-shadow:var(--quick-answer-card-item-hover)}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .left .icon{font-size:20px;color:#fff;padding:8px;border-radius:6px;margin-top:4px}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .content{flex:1;min-width:0}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .content .title{font-size:16px;font-weight:bold;color:var(--color-normal-text);text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .content .description{color:var(--color-auxiliary-text);font-size:12px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.quick-answer-wrapper .show-more-wrapper{text-align:center;margin-top:20px}.quick-answer-wrapper .show-more-wrapper .show-more-btn{line-height:24px}.quick-answer-wrapper .show-more-wrapper .show-more-btn::after,\n .quick-answer-wrapper .show-more-wrapper .show-more-btn::before{content:"- - - - -";color:var(--color-text-divider-line);position:absolute}.quick-answer-wrapper .show-more-wrapper .show-more-btn::before{margin-left:-60px}.quick-answer-wrapper .show-more-wrapper .show-more-btn::after{margin-left:10px}',""]);const i=s.toString()},5679:(e,t,r)=>{r.d(t,{A:()=>m});var o=r(6758),n=r.n(o),a=r(935),s=r.n(a),i=r(62),l=r.n(i),c=new URL(r(3101),r.b),p=s()(n()),d=l()(c);p.push([e.id,`.message-list-loading-wrapper{width:140px;height:140px;background-repeat:no-repeat;margin:auto;background-image:url(${d})}.chart-item-loading-wrapper{display:flex;padding:10px;font-size:40px;align-items:center;justify-content:center;color:#d2d3d4;border-radius:6px}.chart-item-loading-wrapper .load{display:inline-block;position:relative;width:64px;height:64px}.chart-item-loading-wrapper .load div{position:absolute;top:27px;width:11px;height:11px;border-radius:50%;background:#aaa8a8;animation-timing-function:cubic-bezier(0,1,1,0)}.chart-item-loading-wrapper .load div:nth-child(1){left:6px;animation:load1 0.6s infinite}.chart-item-loading-wrapper .load div:nth-child(2){left:6px;animation:load2 0.6s infinite}.chart-item-loading-wrapper .load div:nth-child(3){left:26px;animation:load2 0.6s infinite}.chart-item-loading-wrapper .load div:nth-child(4){left:45px;animation:load3 0.6s infinite}@keyframes load1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes load2{0%{transform:translate(0,0)}100%{transform:translate(19px,0)}}@keyframes load3{0%{transform:scale(1)}100%{transform:scale(0)}}`,""]);const m=p.toString()},8894:(e,t,r)=>{r.d(t,{A:()=>w});var o=r(6758),n=r.n(o),a=r(935),s=r.n(a),i=r(62),l=r.n(i),c=new URL(r(7309),r.b),p=new URL(r(950),r.b),d=s()(n()),m=l()(c),u=l()(p);d.push([e.id,`:host{display:block;height:100%}:host([hidden]){display:none}@media only screen and (min-width: 1920px){.chat-view-container .chat-view-content .chat-view{width:1556px}}@media only screen and (min-width: 1440px) and (max-width: 1920px){.chat-view-container .chat-view-content .chat-view{width:1156px}}@media only screen and (min-width: 804px) and (max-width: 1440px){.chat-view-container .chat-view-content .chat-view{width:804px}}@media only screen and (max-width: 804px){.chat-view-container .chat-view-content .chat-view{width:100%}}.chat-view-container{display:flex;flex-direction:row;width:100%;height:100%}.chat-view-selector{width:200px;padding:14px;border-right:1px solid var(--color-border-divider-line)}.chat-view-content{flex:1;display:flex;flex-direction:column;width:100%}.chat-view-content .chat-view-toolbar{background:#e0e4e5;padding:18px;display:flex;justify-content:space-between;align-items:center}.chat-view-content .chat-view-toolbar .username{color:#333333;font-weight:500;line-height:22px;font-size:16px}.chat-view-content .chat-view-toolbar .toolbar eo-icon{cursor:pointer}.chat-view-content .chat-view{max-width:100%;position:relative;display:flex;flex:1;flex-direction:column;box-sizing:border-box;overflow-y:auto;margin:0 auto}.session-list-wrapper .session-title{font-size:16px;color:var(--color-header-text);margin-bottom:16px}.session-list-wrapper .session-list{display:flex;flex-direction:column;gap:8px}.session-list-wrapper .session-list .session-item{cursor:pointer;border-radius:var(--small-border-radius);background-color:var(--third-menu-default-bg);padding:6px 16px;color:var(--color-header-text)}.session-list-wrapper .session-list .session-item.active{background-color:var(--third-menu-item-selected-bg);color:var(--color-brand)}.session-list-wrapper .session-list .session-item:hover,\n .session-list-wrapper .session-list .session-item.active:hover{color:var(--color-header-text);background-color:var(--third-menu-item-hover-bg)}.message-list{display:flex;flex-direction:column;padding-bottom:30px;padding:12px;flex:1;overflow-y:scroll}.message-list .message-list-box{display:flex;flex-direction:column;position:relative;gap:18px}.message-list .message-list-box .message-item{display:flex;gap:8px;padding-right:40px}.message-list .message-list-box .message-item.user{flex-direction:row-reverse;padding:0;padding-left:40px}.message-list .message-list-box .message-item.user .message-box{margin-bottom:0}.message-list .message-list-box .message-item.user .message-box .message-top{flex-direction:row-reverse}.message-list .message-list-box .message-item.user .message-box .message-content{justify-content:end}.message-list .message-list-box .message-item.user .message-box .message-content .content{background-color:#606f7c;color:#fff}.message-list .message-list-box .message-item.user .message-box .message-content:hover .content-tip{display:block}.message-list .message-list-box .message-item.user .message-box .message-content .content-tip{position:absolute;left:-22px;top:0px;display:none}.message-list .message-list-box .message-item.user .message-box .message-content .content-tip eo-icon{padding:4px;color:#606f7c;cursor:pointer}.message-list .message-list-box .message-item .avatar{width:36px;height:36px;margin-top:32px}.message-list .message-list-box .message-item .avatar.user{background-image:url(${m})}.message-list .message-list-box .message-item .avatar.robot{background-image:url(${u})}.message-list .message-list-box .message-item .message-box{position:relative;flex:1}.message-list .message-list-box .message-item .message-box .message-content{display:flex;justify-content:start;position:relative}.message-list .message-list-box .message-item .message-box .message-content .content{position:relative;padding:14px;border-radius:6px;background:var(--message-box-bg)}.message-list .message-list-box .message-item .message-box .message-content .content .text-item{white-space:pre-wrap}.message-list .message-list-box .message-item .message-box .message-content .content .toolbar{position:absolute;bottom:-24px;right:0;display:flex;gap:12px}.message-list .message-list-box .message-item .message-box .message-content .content .toolbar eo-icon{cursor:pointer;color:#606f7c}.message-list .message-list-box .message-item .message-box .message-content .content .toolbar eo-icon[icon="dislike"]{padding-right:12px;border-right:1px solid #d9d9d9}.message-list .message-list-box .message-item .message-box .message-top{display:flex;margin-bottom:4px;color:#bec8ce;gap:8px}.message-list .message-list-box .message-item .message-box .message-top .time{min-height:22px}.message-list .message-list-box .stop-responding-wrapper{position:absolute;left:44px;bottom:-28px}.search-input-box{display:flex;flex-direction:column;height:50px;padding:12px;position:relative}.search-input-box.fill-content{box-shadow:1px 0px 4px 0px rgba(197,197,197,0.5)}.search-input-box .input-box{position:absolute;bottom:20px;left:12px;right:12px;display:inline-flex;padding:var(--input-affix-wrapper-padding);border-radius:var(--small-border-radius);height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;color:var(--text-color-default);background-color:var(--antd-input-bg);border:1px solid var(--color-border-divider-line);transition:border-color 0.3s;overflow:visible}.search-input-box .input-box.active{border-color:var(--antd-input-focus-border-color)}.search-input-box .input-box.disabled{pointer-events:none;background:var(--input-outline-disabled);cursor:not-allowed}.search-input-box .input-box.expand textarea{padding-right:50px;margin-bottom:50px}.search-input-box .input-box textarea{width:100%;height:22px;font-size:18px;resize:none;padding:10px 50px 10px 10px;outline:none;border:none;line-height:20px;color:var(--color-normal-text);background-color:transparent;cursor:inherit;transition:all 300ms ease-out}.search-input-box .input-box textarea::placeholder{color:#b0b1b8}.search-input-box .input-box .suffix-icon{display:flex;align-items:center;gap:8px;position:absolute;right:12px;bottom:6px}.search-input-box .input-box .suffix-icon eo-tooltip{display:flex}.search-input-box .input-box .suffix-icon eo-icon{font-size:20px;cursor:pointer;padding:6px;border-radius:3px}.search-input-box .input-box .suffix-icon eo-icon:not(.disabled):hover{background:var(--search-input-icon-hover)}.search-input-box .input-box .suffix-icon .submit-split{width:1px;height:20px;background:#d1d1d1}.search-input-box .input-box .suffix-icon .submit-btn.active{color:var(--color-brand)}.search-input-box .input-box .suffix-icon .submit-btn.disabled{color:var(--color-disabled-text);cursor:not-allowed}.search-input-box .input-box .toolbar-icon{position:absolute;top:12px;right:14px}.search-input-box .input-box .toolbar-icon eo-icon{font-size:20px;cursor:pointer;padding:6px;border-radius:3px}.search-input-box .input-box .toolbar-icon eo-icon:hover{background:var(--search-input-icon-hover)}.search-input-box .search-input-toolbar{display:flex;justify-content:end;position:absolute;right:12px;bottom:0px}.search-input-box .search-input-toolbar .input-tip{font-size:12px;color:var(--color-secondary-text)}`,""]);const w=d.toString()},2896:(e,t,r)=>{var o=r(2591),n=r.n(o),a=r(1740),s=r.n(a),i=r(8128),l=r.n(i),c=r(855),p=r.n(c),d=r(3051),m=r.n(d),u=r(3656),w=r.n(u),h=r(6870),g={};g.styleTagTransform=w(),g.setAttributes=p(),g.insert=l().bind(null,"head"),g.domAPI=s(),g.insertStyleElement=m(),n()(h.A,g),h.A&&h.A.locals&&h.A.locals},3101:(e,t,r)=>{e.exports=r.p+"images/863bc601.gif"},950:(e,t,r)=>{e.exports=r.p+"images/8c6e5bc3.png"},7309:(e,t,r)=>{e.exports=r.p+"images/6c9a569e.png"}}]);
|
|
2
|
-
//# sourceMappingURL=813.d0e17463.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/813.d0e17463.js","mappings":"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","sources":["webpack:///./src/chat-view/ChatViewContext.ts","webpack:///./src/chat-view/components/MessageItem/Avatar.tsx","webpack:///./src/chat-view/components/Loading.tsx","webpack:///./src/chat-view/components/MessageItem/GuideItem.tsx","webpack:///./src/chat-view/components/MessageItem/MarkdownItem.tsx","webpack:///./src/chat-view/components/MessageItem/TableItem.tsx","webpack:///./src/chat-view/components/MessageItem/TextItem.tsx","webpack:///./src/chat-view/components/MessageItem/Toolbar.tsx","webpack:///./src/chat-view/components/MessageItem/Time.tsx","webpack:///./src/chat-view/components/MessageItem/ContentTip.tsx","webpack:///./src/chat-view/components/MessageItem/index.tsx","webpack:///./src/chat-view/components/QuickAnswerList/index.tsx","webpack:///./src/chat-view/components/StopBtn.tsx","webpack:///./src/chat-view/components/MessageList.tsx","webpack:///./src/chat-view/components/utils/calculateAutoSizeStyle.ts","webpack:///./src/chat-view/components/SearchInput.tsx","webpack:///./src/chat-view/components/SessionList.tsx","webpack:///./src/chat-view/mockList.ts","webpack:///./src/chat-view/ChatService.ts","webpack:///./src/chat-view/hooks/useChatViewInfo.ts","webpack:///./src/chat-view/host-context.css","webpack:///./src/chat-view/components/MessageItem/markdown.shadow.css","webpack:///./src/chat-view/components/QuickAnswerList/quickAnswerList.shadow.css","webpack:///./src/chat-view/components/loading.shadow.css","webpack:///./src/chat-view/styles.shadow.css","webpack:///./src/chat-view/host-context.css?1beb"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { AgentDetailItem } from \"./components/QuickAnswerList/index.js\";\n\nexport type Role = \"guide\" | \"user\" | \"assistant\";\n\nexport interface MessageItemContent {\n type: \"guide\" | \"text\" | \"markdown\" | \"table\" | \"load\";\n text: string;\n examplePrompts?: string[];\n}\n\nexport interface MessageItem {\n role: Role;\n content: MessageItemContent[];\n ctime?: number | string;\n key?: number;\n chatting?: boolean;\n}\n\nexport interface SessionItem {\n title: string;\n ctime: number;\n id: string;\n active?: boolean;\n}\n\nexport interface QuickAnswerConfig {\n tip: string;\n list: AgentDetailItem[];\n}\n\ninterface ChatViewContextProps {\n activeSessionId: string;\n sessionList: SessionItem[];\n msgList: MessageItem[];\n msgItem?: MessageItem;\n loading: boolean;\n chatting: boolean;\n searchStr: string;\n showLike: boolean;\n quickAnswerConfig?: QuickAnswerConfig;\n handleChat: (str: string) => void;\n stopChat: () => void;\n updateSession: (id: string) => void;\n createSession: () => void;\n setSearchStr: (str: string) => void;\n}\n\nexport const ChatViewContext = createContext<ChatViewContextProps>(\n {} as ChatViewContextProps\n);\n\nexport const useChatViewContext = (): ChatViewContextProps =>\n useContext(ChatViewContext);\n","import React, { useMemo } from \"react\";\nimport type { Role } from \"../../ChatViewContext.js\";\n\nexport function Avatar({ role }: { role: Role }): React.ReactNode {\n const isUser = useMemo(() => role === \"user\", [role]);\n\n return <div className={`avatar ${isUser ? \"user\" : \"robot\"}`} />;\n}\n","import React from \"react\";\n\ninterface LoadingProps {\n loading?: boolean;\n}\n\nexport function MessageListLoading({ loading }: LoadingProps) {\n return loading ? <div className=\"message-list-loading-wrapper\"></div> : null;\n}\n\nexport function ChatItemLoading({ loading }: LoadingProps) {\n return loading ? (\n <div className=\"chart-item-loading-wrapper\">\n <div className=\"load\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n </div>\n </div>\n ) : null;\n}\n","import React from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\n\ninterface GuideItemProps {\n text: string;\n prompts?: string[];\n}\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nexport function GuideItem({ text, prompts }: GuideItemProps) {\n return (\n <div className=\"guide-item\">\n {text}\n <div className=\"prompts-list\">\n {prompts\n ? prompts.map((item, index) => (\n <WrappedLink key={index}>{item}</WrappedLink>\n ))\n : null}\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport {\n defaultValueCtx,\n Editor,\n rootCtx,\n editorViewOptionsCtx,\n} from \"@milkdown/core\";\nimport { Milkdown, useEditor, MilkdownProvider } from \"@milkdown/react\";\nimport { commonmark } from \"@milkdown/preset-commonmark\";\nimport { nord } from \"@milkdown/theme-nord\";\nimport { gfm } from \"@milkdown/preset-gfm\";\nimport { prism } from \"@milkdown/plugin-prism\";\n\nexport function MarkdownItem({ text }: { text: string }) {\n return (\n <div className=\"markdown-item\">\n <MilkdownProvider>\n <MarkdownDisplay value={text} />\n </MilkdownProvider>\n </div>\n );\n}\n\nexport function MarkdownDisplay({ value }: { value: string }): React.ReactNode {\n useEditor((root) => {\n return Editor.make()\n .config((ctx) => {\n ctx.set(rootCtx, root);\n ctx.update(editorViewOptionsCtx, (prev: any) => ({\n ...prev,\n editable: () => false,\n }));\n value && ctx.set(defaultValueCtx, value);\n })\n .config(nord)\n .use(prism)\n .use(gfm)\n .use(commonmark);\n }, []);\n\n return <Milkdown />;\n}\n","import React from \"react\";\n// import { wrapBrick } from \"@next-core/react-element\";\n// import type {\n// EoNextTable,\n// NextTableComponentProps,\n// } from \"@next-bricks/advanced/next-table\";\n\ninterface MarkdownItemProps {\n text: string;\n}\n\n// const WrappedNextTable = wrapBrick<EoNextTable, NextTableComponentProps>(\n// \"eo-next-table\"\n// );\n\nexport function TableItem({ text }: MarkdownItemProps) {\n // const parseContent = useMemo((): NextTableComponentProps => {\n // let content: NextTableComponentProps;\n // try {\n // content = JSON.parse(text);\n // } catch {\n // content = {} as NextTableComponentProps;\n // }\n // return content;\n // }, [text]);\n\n // return (\n // <div className=\"table-item\">\n // <WrappedNextTable pagination={false} {...parseContent} />\n // </div>\n // );\n return <div className=\"table-item\">{text}</div>;\n}\n","import React from \"react\";\n\ninterface TextItem {\n text: string;\n}\n\nexport function TextItem({ text }: TextItem) {\n return <div className=\"text-item\">{text}</div>;\n}\n","import React, { useMemo } from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type { copyToClipboard as _copyToClipboard } from \"@next-bricks/basic/data-providers/copy-to-clipboard\";\nimport type { showNotification as _showNotification } from \"@next-bricks/basic/data-providers/show-notification/show-notification\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport { MessageItem, useChatViewContext } from \"../../ChatViewContext\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\n\nconst WrapperIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedToolTip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\nconst copyToClipboard = unwrapProvider<typeof _copyToClipboard>(\n \"basic.copy-to-clipboard\"\n);\nconst showNotification = unwrapProvider<typeof _showNotification>(\n \"basic.show-notification\"\n);\n\nexport function Toolbar({\n role,\n content,\n chatting,\n}: MessageItem): React.ReactNode {\n const isAssistant = useMemo(\n () =>\n role === \"assistant\" && !content?.find((item) => item.type === \"load\"),\n [role, content]\n );\n const isChattingItem = useMemo(() => chatting, [chatting]);\n const { showLike } = useChatViewContext();\n\n const handleCopy = () => {\n const str = content.map((item) => item.text).toString();\n copyToClipboard(str)\n .then(() => showNotification({ type: \"success\", message: \"复制成功\" }))\n .catch(() => showNotification({ type: \"error\", message: \"复制失败\" }));\n };\n\n return isAssistant && !isChattingItem ? (\n <div className=\"toolbar\">\n {showLike && (\n <>\n <WrappedToolTip content=\"点赞\">\n <WrapperIcon lib=\"antd\" icon=\"like\" theme=\"filled\" />\n </WrappedToolTip>\n <WrappedToolTip content=\"还不够好\">\n <WrapperIcon lib=\"antd\" icon=\"dislike\" theme=\"filled\" />\n </WrappedToolTip>\n </>\n )}\n <WrappedToolTip content=\"点击复制\">\n <WrapperIcon lib=\"antd\" icon=\"copy\" onClick={handleCopy} />\n </WrappedToolTip>\n </div>\n ) : null;\n}\n","import moment from \"moment\";\nimport React from \"react\";\n\nexport function Time({ time }: { time?: string | number }) {\n return (\n <div className=\"time\">\n {time\n ? typeof time === \"string\"\n ? time\n : moment(time * 1000).format(\"YYYY-MM-DD HH:mm:ss\")\n : null}\n </div>\n );\n}\n","import React, { useMemo } from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport { useChatViewContext, type MessageItem } from \"../../ChatViewContext\";\n\nconst WrappedToolTip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\nconst WrapperIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport function ContentTip({ role, content }: MessageItem): React.ReactNode {\n const isUser = useMemo(() => role === \"user\", [role]);\n\n const { chatting, setSearchStr } = useChatViewContext();\n\n const handleCopy = () => {\n setSearchStr(content.map((item) => item.text).toString());\n };\n\n return isUser && !chatting ? (\n <div className=\"content-tip\">\n <WrappedToolTip content=\"点击再次提问\">\n <WrapperIcon lib=\"antd\" icon=\"edit\" onClick={handleCopy} />\n </WrappedToolTip>\n </div>\n ) : null;\n}\n","import React, { useCallback, useMemo } from \"react\";\nimport { MessageItem, MessageItemContent } from \"../../ChatViewContext.js\";\nimport { GuideItem } from \"./GuideItem.js\";\nimport { MarkdownItem } from \"./MarkdownItem.js\";\nimport { TableItem } from \"./TableItem.js\";\nimport { ChatItemLoading } from \"../Loading.js\";\nimport { TextItem } from \"./TextItem.js\";\nimport { Toolbar } from \"./Toolbar.js\";\nimport { Time } from \"./Time.js\";\nimport { ContentTip } from \"./ContentTip.js\";\n\nexport function MessageNode(props: MessageItem): React.ReactNode {\n const { content, ctime, role } = props;\n const isUser = useMemo(() => role === \"user\", [role]);\n\n const getContentNode = useCallback(\n (content: MessageItemContent, key: number) => {\n const { type, text, examplePrompts } = content;\n switch (type) {\n case \"guide\":\n return <GuideItem key={key} text={text} prompts={examplePrompts} />;\n case \"text\":\n return <TextItem key={key} text={text} />;\n case \"table\":\n return <TableItem key={key} text={text} />;\n case \"load\":\n return <ChatItemLoading loading />;\n case \"markdown\":\n default:\n return <MarkdownItem key={key} text={text} />;\n }\n },\n []\n );\n\n const messageNode = useMemo(\n () => content.map(getContentNode),\n [content, getContentNode]\n );\n\n return (\n <div className=\"message-box\">\n <div className=\"message-top\">\n {isUser ? \"我\" : \"AI助手\"}\n <Time time={ctime} />\n </div>\n <div className=\"message-content\">\n <div className=\"content\">\n {messageNode}\n <ContentTip {...props} />\n <Toolbar {...props} />\n </div>\n </div>\n </div>\n );\n}\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useChatViewContext } from \"../../ChatViewContext\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nexport interface AgentDetailItem {\n name: string;\n description: string;\n icon: GeneralIconProps & { color: string };\n starterPrompts?: string[];\n instanceId: string;\n [key: string]: any;\n}\n\nconst CARD_ITEM_HEIGHT = 85;\nconst HEIGHT_GAP = 24;\n\nfunction QuickAnswerCardItem({\n name,\n description,\n icon,\n starterPrompts,\n}: AgentDetailItem) {\n const { setSearchStr } = useChatViewContext();\n\n const handleCardClick = () => {\n starterPrompts?.length && setSearchStr(starterPrompts[0]);\n };\n\n const iconColor = useMemo(() => icon?.color ?? \"geekblue\", [icon]);\n\n return (\n <div\n className=\"quick-answer-card-item\"\n style={{\n height: CARD_ITEM_HEIGHT,\n background: `linear-gradient(rgba(var(--theme-${iconColor}-color-rgb-channel), 0.1), rgba(var(--theme-${iconColor}-color-rgb-channel), 0.08))`,\n }}\n onClick={handleCardClick}\n >\n <div className=\"left\">\n <WrappedIcon\n className=\"icon\"\n {...(icon ?? {\n icon: \"default-app\",\n lib: \"easyops\",\n category: \"app\",\n })}\n style={{\n background: `rgba(var(--theme-${iconColor}-color-rgb-channel), 0.5)`,\n }}\n />\n </div>\n <div className=\"content\">\n <div className=\"title\">{name}</div>\n <div className=\"description\">{description}</div>\n </div>\n </div>\n );\n}\n\nexport function QuickAnswerList() {\n const { quickAnswerConfig, msgList } = useChatViewContext();\n const [showMoreBtn, setShowMoreBtn] = useState<boolean>(false);\n const listRef = useRef<HTMLDivElement>(null);\n const hadClickShowMoreBtn = useRef<boolean>(false);\n\n const handleShowMoreClick = () => {\n hadClickShowMoreBtn.current = true;\n setShowMoreBtn(false);\n };\n\n useEffect(() => {\n const element = listRef.current;\n if (element) {\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (\n entry.contentRect.height >\n CARD_ITEM_HEIGHT * 3 + HEIGHT_GAP * 2\n ) {\n if (!hadClickShowMoreBtn.current) {\n setShowMoreBtn(true);\n }\n } else {\n setShowMoreBtn(false);\n }\n }\n });\n observer.observe(element);\n return () => observer.disconnect();\n }\n }, [showMoreBtn]);\n\n return quickAnswerConfig?.list.length && msgList.length === 0 ? (\n <div className=\"quick-answer-wrapper\">\n <div className=\"tip\">\n {quickAnswerConfig.tip ??\n \"你好,我是运维数智人—Murphy,我能为你提供以下服务:\"}\n </div>\n <div\n className=\"quick-answer-list\"\n style={{\n ...(showMoreBtn\n ? {\n maxHeight: CARD_ITEM_HEIGHT * 3 + HEIGHT_GAP * 2 + 10,\n overflow: \"hidden\",\n }\n : {}),\n }}\n ref={listRef}\n >\n {quickAnswerConfig.list.map((item) => (\n <QuickAnswerCardItem key={item.instanceId} {...item} />\n ))}\n </div>\n {showMoreBtn ? (\n <div className=\"show-more-wrapper\">\n <WrappedLink\n icon={{\n lib: \"antd\",\n icon: \"down\",\n }}\n className=\"show-more-btn\"\n onClick={handleShowMoreClick}\n >\n 显示更多\n </WrappedLink>\n </div>\n ) : null}\n </div>\n ) : null;\n}\n","import React from \"react\";\nimport { useChatViewContext } from \"../ChatViewContext\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nexport function StopBtn() {\n const { stopChat } = useChatViewContext();\n\n const handleStopChat = () => {\n stopChat();\n };\n return (\n <div className=\"stop-responding-wrapper\">\n <WrappedLink className=\"stop-btn\" onClick={handleStopChat}>\n 停止生成\n </WrappedLink>\n </div>\n );\n}\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { MessageItem, useChatViewContext } from \"../ChatViewContext\";\nimport { Avatar } from \"./MessageItem/Avatar.js\";\nimport classNames from \"classnames\";\nimport { MessageListLoading } from \"./Loading.js\";\nimport { MessageNode } from \"./MessageItem/index.js\";\nimport { QuickAnswerList } from \"./QuickAnswerList/index.js\";\nimport { throttle } from \"lodash\";\nimport { StopBtn } from \"./StopBtn.js\";\n\ninterface MessageListProps {\n showAvatar?: boolean;\n}\n\nconst DEFAULT_OFFSET_HEIGHT = 80;\n\nexport function MessageList({\n showAvatar = true,\n}: MessageListProps): React.ReactNode {\n const messageListRef = useRef<HTMLDivElement>(null);\n const messgetListBoxRef = useRef<HTMLDivElement>(null);\n const [preHeight, setPreHeight] = useState<number>(0);\n const flag = useRef<boolean>(false);\n const isCustomScroll = useRef<boolean>(false);\n\n const { msgList, msgItem, loading, chatting } = useChatViewContext();\n\n const getMsgItemNode = useCallback(\n (item: MessageItem, index: number = 0) => {\n return (\n <div\n className={classNames(\"message-item\", { user: item.role === \"user\" })}\n key={item.ctime ?? index}\n >\n {showAvatar && <Avatar role={item.role} />}\n <MessageNode {...item} />\n </div>\n );\n },\n [showAvatar]\n );\n\n const msgListNode = useMemo(() => {\n if (msgList.length) {\n return msgList.map(getMsgItemNode);\n }\n return null;\n }, [msgList, getMsgItemNode]);\n\n const msgItemNode = useMemo(\n () =>\n msgItem ? (\n <>\n {getMsgItemNode({\n ...msgItem,\n chatting: true,\n })}\n <StopBtn />\n </>\n ) : null,\n [msgItem, getMsgItemNode]\n );\n\n const handleScroll = throttle(() => {\n const computedHeight =\n messageListRef.current!.scrollHeight -\n messageListRef.current!.clientHeight;\n const isBottom =\n computedHeight === messageListRef.current!.scrollTop ||\n // 缓冲20高度\n computedHeight - 20 < messageListRef.current!.scrollTop;\n if (isCustomScroll.current) {\n if (isBottom) {\n flag.current = false;\n isCustomScroll.current = false;\n }\n return;\n }\n if (!isBottom) {\n // fixed:有时候在数据返回时页面会跳一下,导致计算异常,这里做临时兼容处理\n if (!flag.current) {\n flag.current = true;\n } else {\n isCustomScroll.current = true;\n }\n }\n }, 200);\n\n useEffect(() => {\n if (chatting) {\n isCustomScroll.current = false;\n flag.current = false;\n }\n }, [chatting]);\n\n useEffect(() => {\n const element = messgetListBoxRef.current;\n if (element) {\n const observer = new ResizeObserver((entries) => {\n let newHeight: number = 0;\n if (isCustomScroll.current) return;\n for (const entry of entries) {\n newHeight = entry.contentRect.height - DEFAULT_OFFSET_HEIGHT;\n }\n if (newHeight === preHeight && !loading && !chatting) {\n // msgItem置为空,合并到msgList, 高度不变,并且聊天结束\n messageListRef.current!.scroll({\n top: Number.MAX_SAFE_INTEGER,\n });\n }\n if (newHeight > preHeight && chatting) {\n messageListRef.current!.scroll({\n top: Number.MAX_SAFE_INTEGER,\n });\n setPreHeight(Math.max(preHeight, newHeight));\n }\n });\n observer.observe(element);\n return () => observer.disconnect();\n }\n }, [chatting, loading, preHeight]);\n\n return (\n <div className=\"message-list\" ref={messageListRef} onScroll={handleScroll}>\n <div className=\"message-list-box\" ref={messgetListBoxRef}>\n <QuickAnswerList />\n {msgListNode}\n {msgItemNode}\n </div>\n <MessageListLoading loading={loading} />\n </div>\n );\n}\n","const HIDDEN_TEXTAREA_STYLE = `\n min-height:0 !important;\n max-height:none !important;\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important;\n padding: 10px !important;\n pointer-events: none !important;\n`;\n\nconst SIZING_STYLE = [\n \"letter-spacing\",\n \"line-height\",\n \"padding-top\",\n \"padding-bottom\",\n \"font-family\",\n \"font-weight\",\n \"font-size\",\n \"font-variant\",\n \"text-rendering\",\n \"text-transform\",\n \"width\",\n \"text-indent\",\n \"padding-left\",\n \"padding-right\",\n \"border-width\",\n \"box-sizing\",\n \"word-break\",\n \"white-space\",\n];\nlet hiddenTextarea: HTMLTextAreaElement;\n\n/**\n * 计算 textare 高度\n * https://github.com/react-component/textarea/blob/1c0026fbe30e5f7dff1fca695b2cf262246381ca/src/calculateNodeHeight.tsx\n * */\nexport default function calculateAutoSizeStyle(\n uiTextNode: HTMLTextAreaElement,\n minRows: number | null = null,\n maxRows: number | null = null\n): React.CSSProperties {\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement(\"textarea\");\n hiddenTextarea.setAttribute(\"tab-index\", \"-1\");\n hiddenTextarea.setAttribute(\"aria-hidden\", \"true\");\n document.body.appendChild(hiddenTextarea);\n }\n\n const uiTextNodeStyle = window.getComputedStyle(uiTextNode);\n const sizingStyle = SIZING_STYLE.map(\n (name) => `${name}:${uiTextNodeStyle.getPropertyValue(name)}`\n ).join(\";\");\n\n // equal style\n hiddenTextarea.setAttribute(\n \"style\",\n `${sizingStyle};${HIDDEN_TEXTAREA_STYLE}`\n );\n hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || \"\";\n\n let minHeight: number | undefined = undefined;\n let maxHeight: number | undefined = undefined;\n // let overflowY: any;\n\n const borderSize = 2;\n const paddingSize = 20;\n let height = hiddenTextarea.scrollHeight - paddingSize + borderSize;\n\n if (minRows !== null || maxRows !== null) {\n // measure height of a textarea with a single row\n hiddenTextarea.value = \" \";\n const singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n if (minRows !== null) {\n minHeight = singleRowHeight * minRows - paddingSize + borderSize;\n height = Math.max(paddingSize, height);\n }\n if (maxRows !== null) {\n maxHeight = singleRowHeight * maxRows - paddingSize + borderSize;\n // overflowY = height > maxHeight ? \"\" : \"hidden\";\n height = Math.min(maxHeight, height);\n }\n }\n\n const style: React.CSSProperties = {\n height,\n overflowY: \"scroll\",\n resize: \"none\",\n };\n\n if (minHeight) {\n style.minHeight = minHeight;\n }\n if (maxHeight) {\n style.maxHeight = maxHeight;\n }\n\n return style;\n}\n","import React, {\n ChangeEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport calculateAutoSizeStyle from \"./utils/calculateAutoSizeStyle.js\";\nimport classNames from \"classnames\";\nimport { useChatViewContext } from \"../ChatViewContext.js\";\n\nconst WrappedToolTip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport function SearchInput(): React.ReactNode {\n const [value, setValue] = useState<string>(\"\");\n const [active, setActive] = useState<boolean>(false);\n const [expand, setExpand] = useState<boolean>(false);\n const [autoSizeStyle, setAutoSizeStyle] = useState<React.CSSProperties>();\n const [isFillContent, setIsFillContent] = useState<boolean>(false);\n const searchInputBoxRef = useRef<HTMLDivElement>(null);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const hadExpanded = useRef<boolean>(false);\n const inputEndRef = useRef<boolean>(false);\n\n const {\n chatting,\n loading,\n searchStr,\n createSession,\n setSearchStr,\n handleChat,\n } = useChatViewContext();\n\n const hadValue = useMemo(() => !!value, [value]);\n const defaultSize = useMemo(() => [1, 5], []);\n const disabled = useMemo(() => loading || chatting, [chatting, loading]);\n\n const computedAutoSize = useCallback(\n (size = defaultSize) => {\n if (hadExpanded.current && expand) return;\n const textareaElement = textareaRef.current as HTMLTextAreaElement;\n if (textareaElement) {\n const textareaStyles = calculateAutoSizeStyle(\n textareaElement,\n size[0],\n size[1]\n );\n\n setAutoSizeStyle(textareaStyles);\n }\n hadExpanded.current = expand;\n },\n [defaultSize, expand]\n );\n\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLTextAreaElement> | string): void => {\n const value = typeof e === \"string\" ? e : e.target.value;\n setValue(value);\n textareaRef.current!.value = value;\n },\n []\n );\n\n const handleCompositionStart = () => {\n inputEndRef.current = true;\n };\n\n const handleCompositionEnd = () => {\n inputEndRef.current = false;\n };\n\n const hanldeCreateSession = () => {\n createSession();\n };\n\n const handleExpand = useCallback(() => {\n setExpand((value) => {\n return !value;\n });\n }, []);\n\n const handleSubmit = useCallback(() => {\n if (!hadValue || !textareaRef.current || disabled) return;\n\n handleChat(value);\n\n setActive(false);\n setExpand(false);\n handleChange(\"\");\n textareaRef.current.blur();\n }, [value, hadValue, disabled, handleChat, handleChange]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey && !inputEndRef.current) {\n e.preventDefault();\n handleSubmit();\n }\n },\n [handleSubmit]\n );\n\n useEffect(() => {\n if (searchStr) {\n handleChange(searchStr);\n setSearchStr(\"\");\n }\n }, [searchStr, disabled, setSearchStr, handleChange]);\n\n useEffect(() => {\n computedAutoSize(expand ? [20, 20] : undefined);\n }, [value, expand, computedAutoSize]);\n\n useEffect(() => {\n const searchInputBox = searchInputBoxRef.current;\n if (searchInputBox) {\n const observe = new ResizeObserver(() => {\n const { width: currentWidth } = searchInputBox.getBoundingClientRect();\n const { width: parentWidth } =\n searchInputBox.parentElement!.parentElement!.getBoundingClientRect();\n\n setIsFillContent(currentWidth === parentWidth);\n });\n\n observe.observe(searchInputBox);\n\n return () => {\n observe.disconnect();\n };\n }\n }, []);\n\n useEffect(() => {\n if (!chatting && textareaRef.current) {\n textareaRef.current?.focus();\n }\n }, [chatting]);\n\n return (\n <div\n className={classNames(\"search-input-box\", {\n \"fill-content\": isFillContent,\n })}\n ref={searchInputBoxRef}\n >\n <div\n className={classNames(\"input-box\", {\n active,\n disabled,\n expand,\n })}\n >\n <textarea\n value={value}\n ref={textareaRef}\n style={{\n ...autoSizeStyle,\n paddingRight: expand ? \"50px\" : \"140px\",\n }}\n placeholder={chatting ? \"回复中,请稍等...\" : \"提出你的想法...\"}\n onFocus={() => setActive(true)}\n onBlur={() => setActive(false)}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onCompositionStart={handleCompositionStart}\n onCompositionEnd={handleCompositionEnd}\n />\n <span className=\"suffix-icon\">\n <WrappedToolTip content=\"新增会话\">\n <WrappedIcon\n lib=\"antd\"\n icon=\"plus-circle\"\n onClick={hanldeCreateSession}\n />\n </WrappedToolTip>\n {!expand && (\n <WrappedToolTip content=\"放大\">\n <WrappedIcon\n lib=\"antd\"\n icon=\"arrows-alt\"\n onClick={handleExpand}\n />\n </WrappedToolTip>\n )}\n <div className=\"submit-split\"></div>\n <WrappedToolTip content=\"提交\">\n <WrappedIcon\n className={classNames(\"submit-btn\", {\n active: hadValue,\n disabled: !hadValue || disabled,\n })}\n lib={chatting ? \"antd\" : \"easyops\"}\n icon={chatting ? \"loading\" : \"release-management-fill\"}\n category={chatting ? \"\" : \"menu\"}\n spinning={chatting}\n onClick={handleSubmit}\n />\n </WrappedToolTip>\n </span>\n <span className=\"toolbar-icon\">\n {expand && (\n <WrappedToolTip content=\"缩小\">\n <WrappedIcon lib=\"antd\" icon=\"shrink\" onClick={handleExpand} />\n </WrappedToolTip>\n )}\n </span>\n </div>\n {hadValue && (\n <div className=\"search-input-toolbar\">\n <div className=\"input-tip\">Shift + Enter 换行</div>\n </div>\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport {\n SessionItem as SessionItemProps,\n useChatViewContext,\n} from \"../ChatViewContext\";\nimport classNames from \"classnames\";\n\nexport function SessionList(): React.ReactNode {\n const { sessionList } = useChatViewContext();\n\n return (\n <div className=\"session-list-wrapper\">\n <div className=\"session-title\">历史对话</div>\n <div className=\"session-list\">\n {sessionList.map((item, index) => {\n return <SessionItem key={index} {...item} />;\n })}\n </div>\n </div>\n );\n}\n\nfunction SessionItem({ title, id }: SessionItemProps) {\n const { updateSession, activeSessionId } = useChatViewContext();\n\n const handleUpdateSession = () => {\n updateSession(id);\n };\n\n return (\n <div\n className={classNames(\"session-item\", {\n active: id === activeSessionId,\n })}\n onClick={handleUpdateSession}\n >\n {title}\n </div>\n );\n}\n","export const mockmsgList = [\n {\n role: \"guide\",\n content: [\n {\n type: \"guide\",\n text: \"DEFAULT_CHAT_GUIDE\",\n },\n ],\n },\n {\n role: \"user\",\n content: [\n {\n type: \"text\",\n text: \"你好\",\n },\n ],\n ctime: 1710731198,\n },\n {\n content: [\n {\n text: \"你好!很高兴能为你服务。如果你有任何问题或者需要帮助,随时告诉我,我会尽我所能为你提供帮助。有什么我可以帮你的吗?\",\n type: \"markdown\",\n },\n ],\n ctime: \"1710731200\",\n role: \"assistant\",\n },\n {\n role: \"user\",\n content: [\n {\n type: \"text\",\n text: \"你知道百度的地址吗\",\n },\n ],\n ctime: 1710731261,\n },\n {\n content: [\n {\n text: \"百度公司是一家中国的互联网技术公司,其总部位于北京市。以下是百度的官方地址:\\n\\n北京市海淀区西北旺东路10号院百度科技园\\n\\n请注意,百度可能有多个办公地点,但上述地址是其主要的总部地址。如果你需要访问百度或与其联系,建议你查看其官方网站获取最新的联系信息。\",\n type: \"markdown\",\n },\n ],\n ctime: 1710731266,\n role: \"assistant\",\n },\n {\n role: \"user\",\n content: [\n {\n type: \"text\",\n text: \"可以给我官网的地址吗\",\n },\n ],\n ctime: 1710731280,\n },\n {\n content: [\n {\n text: \"当然可以。以下是百度公司的官方网站地址:\\n\\nhttps://www.baidu.com/\\n\\n你可以通过这个链接访问百度,获取更多信息和服务。\",\n type: \"markdown\",\n },\n ],\n ctime: \"1710731282\",\n role: \"assistant\",\n },\n {\n role: \"user\",\n content: [\n {\n type: \"text\",\n text: \"现在我们多少个微应用\",\n },\n ],\n ctime: 1710731716,\n },\n {\n content: [\n {\n text: \"很抱歉,但我不清楚你提到的“微应用”是指什么具体的上下文或系统。如果你是指在使用某个特定的平台或服务中的微应用数量,例如微信小程序、百度智能小程序等,我需要更多的上下文信息才能给出准确的回答。\\n\\n如果你能提供更多的细节,我会很乐意帮助你查询或解答有关微应用数量的问题。\",\n type: \"markdown\",\n },\n ],\n ctime: \"1710731720\",\n role: \"assistant\",\n },\n {\n role: \"user\",\n content: [\n {\n type: \"text\",\n text: \"给我一个任意表格数据\",\n },\n ],\n ctime: 1710731756,\n },\n {\n content: [\n {\n text: \"以下是任意创建的一个简单表格数据示例:\\n\\n| 姓名 | 年龄 | 性别 | 职位 |\\n|-------|-----|------|----------|\\n| 张三 | 25 | 男 | 软件工程师 |\\n| 李四 | 30 | 女 | 产品经理 |\\n| 王五 | 28 | 男 | UI设计师 |\\n| 赵六 | 32 | 女 | 市场专员 |\\n\\n这个表格包含了姓名、年龄、性别和职位四列数据,以及四个示例员工的信息。这只是一个虚构的数据示例,你可以根据需要修改或扩展表格的内容。\",\n type: \"markdown\",\n },\n ],\n ctime: 1710731761,\n role: \"assistant\",\n },\n] as any;\n\nexport const mockList2 = [\n {\n role: \"guide\",\n content: [\n {\n type: \"guide\",\n text: \"DEFAULT_CHAT_GUIDE\",\n examplePrompts: [\"http://www.baidu.com\"],\n },\n ],\n },\n {\n role: \"user\",\n content: [\n {\n type: \"text\",\n text: \"什么是 SSE\",\n },\n ],\n ctime: 1710837828,\n },\n {\n content: [\n {\n text: \"SSE(Server-Sent Events)是一种服务器到客户端的单向通信协议。它允许服务器通过HTTP连接向客户端推送数据,特别适用于实现实时更新功能,比如在网页上实时显示新闻更新、股票价格变动等。SSE基于HTTP协议,并且得到了所有现代浏览器的支持。\\n\\nSSE 的工作原理是什么?\\nSSE的工作原理相对简单:\\n1. 客户端通过JavaScript的`EventSource`对象向服务器发送一个HTTP请求,请求建立SSE连接。\\n2. 服务器接收到请求后,返回一个HTTP响应,这个响应的`Content-Type`头部被设置为`text/event-stream`。\\n3. 服务器保持这个连接打开,并且可以随时通过这个连接向客户端发送数据。\\n4. 客户端通过`EventSource`对象接收服务器发来的数据,并可以监听特定的事件。\\n\\nSSE 有哪些优点?\\n- **兼容性**:SSE得到了所有现代浏览器的支持,而其他一些实时通信技术如WebSocket可能不适用于所有浏览器。\\n- **简单性**:SSE的实现比较简单,不需要复杂的握手过程,直接基于HTTP协议,易于理解和部署。\\n\\n与短轮询、Comet、WebSocket等技术相比,SSE有哪些优势?\\n- **短轮询**:短轮询要求客户端定期向服务器发送请求,这种方式实现简单,但会造成很多无效请求,增加服务器负载。\\n- **Comet**:Comet技术是一种基于HTTP长连接的推送技术,但实现较为复杂,且不如SSE标准化。\\n- **WebSocket**:WebSocket提供了全双工的通信渠道,适用于需要双向通信的场景,但它的兼容性和实现复杂度不如SSE。\\n\\nSSE相比之下,在只需要服务器到客户端单向通信的场景中,提供了简单、高效且兼容性好的解决方案。\\n\\n如何实现一个简单的SSE服务?\\n以下是一个简单的示例,展示了客户端和服务器端的实现:\\n\\n**客户端(JavaScript)**\\n```javascript\\n// 创建EventSource对象\\nconst eventSource = new EventSource('http://localhost:8080/events');\\n// 监听服务器发送的消息\\neventSource.onmessage = function(event) {\\n console.log('收到消息:', event.data);\\n};\\n// 监听连接关闭事件\\neventSource.onclose = function() {\\n console.log('连接已关闭');\\n};\\n// 监听错误事件\\neventSource.onerror = function() {\\n console.log('连接出错');\\n};\\n```\\n\\n**服务器端(Node.js)**\\n```javascript\\nconst http = require('http');\\nconst express = require('express');\\nconst app = express();\\n\\napp.get('/events', function(req, res) {\\n res.setHeader('Content-Type', 'text/event-stream');\\n res.setHeader('Cache-Control', 'no-cache');\\n res.setHeader('Connection', 'keep-alive');\\n \\n // 定期发送数据到客户端\\n const sendData = () => {\\n res.write(`data: ${new Date().toString()}\\\\n\\\\n`);\\n };\\n setInterval(sendData, 1000);\\n\\n // 当连接关闭时,停止发送数据\\n req.on('close', () => {\\n clearInterval(sendData);\\n });\\n});\\n\\nconst server = http.createServer(app);\\nserver.listen(8080, () => {\\n console.log('SSE服务正在监听端口8080');\\n});\\n```\\n\\n以上代码展示了一个简单的SSE服务器和客户端的实现,其中服务器每秒向客户端发送当前时间。\",\n type: \"markdown\",\n },\n ],\n ctime: 1710837855,\n role: \"assistant\",\n },\n {\n role: \"user\",\n content: [\n {\n type: \"text\",\n text: \"请写出一段示例代码\",\n },\n ],\n ctime: 1710837859,\n },\n {\n content: [\n {\n text: \"当然,下面是一个简单的Node.js服务器端示例代码,它使用Express框架来创建一个SSE服务器。这个服务器会向连接的客户端发送一个简单的消息流。\\n\\n**服务器端(Node.js + Express)**\\n\\n```javascript\\nconst express = require('express');\\nconst app = express();\\nconst PORT = 3000;\\n\\napp.get('/events', function(req, res) {\\n // 设置响应头以支持SSE\\n res.writeHead(200, {\\n 'Content-Type': 'text/event-stream', // SSE的MIME类型\\n 'Cache-Control': 'no-cache', // 禁止缓存\\n 'Connection': 'keep-alive', // 保持连接\\n });\\n\\n // 发送事件到客户端\\n const sendEvent = (data, eventName = 'message') => {\\n res.write(`event: ${eventName}\\\\n`); // 事件名称\\n res.write(`data: ${JSON.stringify(data)}\\\\n\\\\n`); // 数据\\n };\\n\\n // 发送初始化消息\\n sendEvent({ message: 'Connected successfully!' });\\n\\n // 模拟定时发送数据\\n const intervalId = setInterval(() => {\\n sendEvent({ message: `Server time: ${new Date().toString()}` });\\n }, 1000); // 每1秒发送一次\\n\\n // 当请求关闭时,清除定时器\\n req.on('close', () => {\\n clearInterval(intervalId);\\n console.log('Client connection closed, stopped sending events');\\n });\\n});\\n\\napp.listen(PORT, () => {\\n console.log(`SSE server is running on http://localhost:${PORT}`);\\n});\\n```\\n\\n**客户端(HTML + JavaScript)**\\n\\n以下是客户端的HTML和JavaScript代码,它将连接到上面的SSE服务器并显示接收到的消息。\\n\\n```html\\n<!DOCTYPE html>\\n<html lang=\\\"en\\\">\\n<head>\\n<meta charset=\\\"UTF-8\\\">\\n<title>SSE Client Example</title>\\n<script>\\nwindow.onload = function() {\\n var eventSource = new EventSource('/events');\\n eventSource.onmessage = function(e) {\\n console.log('Received a message:', e.data);\\n document.getElementById('output').innerHTML += e.data + '<br>';\\n };\\n eventSource.onerror = function(e) {\\n console.error('EventSource failed:', e);\\n eventSource.close();\\n };\\n};\\n</script>\\n</head>\\n<body>\\n<div id=\\\"output\\\"></div>\\n</body>\\n</html>\\n```\\n\\n要运行这个示例,首先启动服务器端代码,然后打开HTML文件在浏览器中查看。服务器将开始向客户端发送消息,客户端将在`<div id=\\\"output\\\"></div>`元素中显示这些消息。\",\n type: \"markdown\",\n },\n ],\n ctime: 1710837878,\n role: \"assistant\",\n },\n] as any;\n","import { fetchEventSource } from \"@microsoft/fetch-event-source\";\nimport { getBasePath } from \"@next-core/runtime\";\nimport moment from \"moment\";\n\nexport interface SSEMessageItem {\n conversationId?: string;\n created: number | string;\n delta: {\n content: string;\n role: string;\n };\n /** @deprecated */\n ctime?: string;\n /** @deprecated */\n mtime?: string;\n /** @deprecated */\n messages?: Array<{\n content: {\n type: string;\n text: string;\n };\n role: string;\n }>;\n}\n\nexport interface QueueItem {\n topic: string;\n message?: SSEMessageItem;\n}\n\nexport class ChatService {\n #ctrl?: AbortController;\n #agentId: string;\n #enterInterval: number;\n #charting = false;\n #isStartEmitEvent = false;\n #emitTimer: NodeJS.Timeout | undefined;\n #messageQueue: Array<QueueItem> = [];\n #subscribers: Record<string, Array<(msg?: SSEMessageItem) => void>> = {};\n #conversationId?: string;\n\n constructor({\n agentId,\n enterInterval = 50,\n }: {\n agentId: string;\n enterInterval: number;\n }) {\n this.#agentId = agentId;\n this.#enterInterval = enterInterval;\n }\n\n enqueue(data: QueueItem) {\n this.#messageQueue.push(data);\n this.#startEmitEvent();\n }\n\n dequeue() {\n return this.#messageQueue.shift();\n }\n\n #clear() {\n this.#messageQueue.length = 0;\n }\n\n getMessageQueue() {\n return this.#messageQueue;\n }\n\n subscribe(topic: string, callback: (msg?: SSEMessageItem) => void) {\n if (!this.#subscribers[topic]) {\n this.#subscribers[topic] = [];\n }\n this.#subscribers[topic].push(callback);\n }\n\n unsubscribe(topic: string, callback: (msg?: SSEMessageItem) => void) {\n if (this.#subscribers[topic]) {\n this.#subscribers[topic] = this.#subscribers[topic].filter(\n (cb) => cb !== callback\n );\n }\n }\n\n notifySubscribers(data: QueueItem) {\n const topic = data.topic;\n if (this.#subscribers[topic]) {\n this.#subscribers[topic].forEach((callback) => {\n callback(data?.message);\n });\n }\n }\n\n setConversationId(id?: string) {\n this.#conversationId = id;\n }\n\n async getSessionList() {\n // const response = await fetch(\n // `${getBasePath()}api/gateway/easyops.api.aiops_chat.conversation/conversation/list/${this.#agentId}`,\n // )\n // console.log(response);\n }\n\n async chat(str: string): Promise<void> {\n this.#ctrl = new AbortController();\n let hadMatchMessage = false;\n this.#charting = true;\n await fetchEventSource(\n `${getBasePath()}api/gateway/easyops.api.aiops_chat.manage.LLMChatProxy@1.0.0/api/aiops_chat/v1/chat/completions`,\n {\n method: \"POST\",\n signal: this.#ctrl.signal,\n body: JSON.stringify({\n agentId: this.#agentId,\n // agentId: \"cmdb_search_agent\",\n conversationId: this.#conversationId,\n input: str,\n stream: true,\n }),\n headers: {\n \"giraffe-contract-name\": \"easyops.api.aiops_chat.manage.LLMChatProxy\",\n },\n onopen: async (response) => {\n if (response.ok) {\n // eslint-disable-next-line no-console\n console.log(\"open sse service success!\");\n } else {\n // eslint-disable-next-line no-console\n console.log(\"open sse service fail!\");\n }\n },\n onmessage: (msg) => {\n const { data } = msg;\n hadMatchMessage = true;\n if (data === \"[DONE]\") {\n this.#ctrl!.abort();\n return;\n }\n let result = {} as SSEMessageItem;\n try {\n result = JSON.parse(data);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(\"数据格式错误\", e);\n this.enqueue({\n topic: \"add\",\n message: {\n created: moment().format(\"YYYY-MM-DD HH:mm:ss\"),\n delta: {\n role: \"assistant\",\n content: \"`数据格式错误`\",\n },\n },\n });\n return;\n }\n this.#conversationId = result.conversationId;\n this.enqueue({\n topic: \"add\",\n message: result,\n });\n },\n onclose: () => {\n // eslint-disable-next-line no-console\n console.log(\"close\");\n // 兜底逻辑,连接结束,并且没有数据返回\n if (!hadMatchMessage) {\n this.enqueue({\n topic: \"add\",\n message: {\n delta: {\n role: \"assistant\",\n content: \"无法识别\",\n },\n created: moment().format(\"YYYY-MM-DD HH:mm:ss\"),\n },\n });\n }\n this.#ctrl!.abort();\n },\n onerror: (err) => {\n // eslint-disable-next-line no-console\n console.log(\"err\", err);\n this.#ctrl!.abort();\n },\n }\n );\n\n this.#charting = false;\n }\n\n stop() {\n clearInterval(this.#emitTimer);\n this.#ctrl && this.#ctrl?.abort();\n this.#charting = false;\n this.#emitTimer = undefined;\n this.#isStartEmitEvent = false;\n this.#clear();\n this.notifySubscribers({ topic: \"stop\" });\n }\n\n #startEmitEvent() {\n if (this.#isStartEmitEvent) return;\n this.#isStartEmitEvent = true;\n // 轮训队列,每隔 #enterInterval(默认 50ms) 推出第一条数据,获取到 text,推送给组件,组件接受后进行渲染\n // 直到聊天结束,并且消息队列数据为空时,停止 emit\n this.#emitTimer = setInterval(() => {\n if (this.#charting || this.getMessageQueue().length) {\n const messageItem = this.dequeue()!;\n messageItem && this.notifySubscribers(messageItem);\n } else {\n clearInterval(this.#emitTimer);\n this.#emitTimer = undefined;\n this.#isStartEmitEvent = false;\n this.notifySubscribers({ topic: \"finish\" });\n }\n }, this.#enterInterval);\n }\n}\n\n// export const chartService = new ChatService();\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { MessageItem, SessionItem } from \"../ChatViewContext.js\";\nimport { mockList2, mockmsgList } from \"../mockList.js\";\nimport moment from \"moment\";\nimport { ChatService, SSEMessageItem } from \"../ChatService.js\";\n\nexport function useChatViewInfo({\n agentId,\n enterInterval = 50,\n}: {\n agentId: string;\n enterInterval?: number;\n}) {\n const [activeSessionId, setActiveSessionid] = useState<string>(\"1\");\n const [loading, setLoading] = useState<boolean>(false);\n const [chatting, setChatting] = useState<boolean>(false);\n const [sessionList, setSessionList] = useState<SessionItem[]>([]);\n const [msgList, setMsgList] = useState<MessageItem[]>([]);\n const [msgItem, setMsgItem] = useState<MessageItem>();\n const [searchStr, setSearchStr] = useState<string>(\"\");\n const chatingText = useRef<string>(\"\");\n const chatingMessageItem = useRef<MessageItem>();\n const chatService = useMemo(\n () =>\n new ChatService({\n agentId,\n enterInterval,\n }),\n [agentId, enterInterval]\n );\n\n useEffect(() => {\n // mock\n // setMsgList(mockmsgList);\n }, []);\n\n useEffect(() => {\n // chatService.getSessionList();\n // mock\n setSessionList([\n {\n title: \"会话一\",\n id: \"1\",\n ctime: 1710731756,\n active: true,\n },\n // {\n // title: \"会话二\",\n // id: \"2\",\n // ctime: 1710731756,\n // },\n ]);\n }, []);\n\n useEffect(() => {\n const listener = (msgItem?: SSEMessageItem) => {\n if (!msgItem) return;\n chatingText.current = chatingText.current + msgItem.delta.content;\n // eslint-disable-next-line no-console\n // console.log(chatingText.current);\n chatingMessageItem.current = {\n role: \"assistant\",\n content: [\n {\n type: \"markdown\",\n text: chatingText.current,\n },\n ],\n key: Math.random(),\n ctime: moment(msgItem?.created).format(\"YYYY-MM-DD HH:mm:ss\"),\n };\n setMsgItem(chatingMessageItem.current);\n };\n const reset = () => {\n chatingText.current = \"\";\n setMsgItem(undefined);\n setChatting(false);\n chatingMessageItem.current = undefined;\n };\n const finishListener = () => {\n setMsgList((list) => {\n return list.concat(chatingMessageItem.current!);\n });\n reset();\n };\n const stopListener = () => {\n setMsgList((list) => {\n if (chatingMessageItem.current) {\n chatingMessageItem.current?.content.push({\n type: \"markdown\",\n text: \"` 对话被中断了 `\",\n });\n return list.concat(chatingMessageItem.current);\n }\n return list;\n });\n reset();\n };\n chatService.subscribe(\"add\", listener);\n chatService.subscribe(\"finish\", finishListener);\n chatService.subscribe(\"stop\", stopListener);\n return () => {\n chatService.unsubscribe(\"add\", listener);\n chatService.unsubscribe(\"finish\", finishListener);\n chatService.unsubscribe(\"stop\", stopListener);\n };\n }, [chatService]);\n\n const handleChat = useCallback(\n async (str: string) => {\n setChatting(true);\n chatService.chat(str);\n setMsgList((list) => {\n return list.concat({\n role: \"user\",\n content: [\n {\n type: \"text\",\n text: str,\n },\n ],\n ctime: moment().format(\"YYYY-MM-DD HH:mm:ss\"),\n });\n });\n setMsgItem({\n role: \"assistant\",\n content: [\n {\n type: \"load\",\n text: \"\",\n },\n ],\n ctime: \"Now\",\n });\n },\n [chatService]\n );\n\n const stopChat = useCallback(() => {\n chatService.stop();\n }, [chatService]);\n\n const createSession = useCallback(() => {\n setMsgList([]);\n chatService.setConversationId();\n }, [chatService]);\n\n const updateSession = useCallback(async (id: string) => {\n setLoading(true);\n setMsgList([]);\n setActiveSessionid(id);\n const mockSearch = async () => {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(id === \"1\" ? mockmsgList : mockList2);\n }, 5000);\n });\n };\n const list = await mockSearch();\n setMsgList(list as any);\n setLoading(false);\n }, []);\n\n return {\n loading,\n chatting,\n activeSessionId,\n sessionList,\n searchStr,\n msgList,\n msgItem,\n handleChat,\n stopChat,\n createSession,\n updateSession,\n setSearchStr,\n };\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--message-box-bg:#f1f3f4;--search-input-icon-hover:#ddd;--quick-answer-card-item-hover:0px 7px 8px 0px rgba(0,0,0,0.15)}html[data-theme=\"dark\"],\nhtml[data-theme=\"dark-v2\"]{--message-box-bg:rgba(255,255,255,0.16);--search-input-icon-hover:#383838;--quick-answer-card-item-hover:0px 7px 8px 0px rgba(0,0,0,0.24)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ProseMirror{position:relative;word-wrap:break-word;white-space:pre-wrap;white-space:break-spaces;font-variant-ligatures:none;font-feature-settings:\"liga\" 0,none}.ProseMirror pre{white-space:pre-wrap}.ProseMirror li{position:relative}.ProseMirror-hideselection *::selection{background:transparent}.ProseMirror-hideselection *::-moz-selection{background:transparent}.ProseMirror-hideselection{caret-color:transparent}.ProseMirror-selectednode{outline:2px solid #8cf}li.ProseMirror-selectednode{outline:none}li.ProseMirror-selectednode:after{content:\"\";position:absolute;left:-32px;right:-2px;top:-2px;bottom:-2px;border:2px solid #8cf;pointer-events:none}img.ProseMirror-separator{display:inline!important;border:none!important;margin:0!important}.ProseMirror .tableWrapper{overflow-x:auto}.ProseMirror table{border-collapse:collapse;table-layout:fixed;width:100%;overflow:hidden}.ProseMirror td,\n.ProseMirror th{vertical-align:top;box-sizing:border-box;position:relative}.ProseMirror .column-resize-handle{position:absolute;right:-2px;top:0;bottom:0;width:4px;z-index:20;background-color:#adf;pointer-events:none}.ProseMirror.resize-cursor{cursor:ew-resize;cursor:col-resize}.ProseMirror .selectedCell:after{z-index:2;position:absolute;content:\"\";left:0;right:0;top:0;bottom:0;background:rgba(200,200,255,0.4);pointer-events:none}.milkdown-theme-nord blockquote{border-left-width:4px;--tw-border-opacity:1;border-color:rgb(94 129 172/var(--tw-border-opacity));padding-left:1rem;font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,serif;font-style:normal}.milkdown-theme-nord code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:400;--tw-text-opacity:1;color:rgb(94 129 172/var(--tw-text-opacity))}.milkdown-theme-nord pre code{color:inherit}.milkdown-theme-nord img{margin-top:0!important;margin-bottom:0!important;display:inline-block;max-width:100%}.milkdown-theme-nord.prose\n :where(blockquote):not(:where([class~=\"not-prose\"] *)){font-weight:400}.milkdown-theme-nord.prose\n :where(ol > li):not(:where([class~=\"not-prose\"] *))::marker,\n.milkdown-theme-nord.prose\n :where(ul > li):not(:where([class~=\"not-prose\"] *))::marker{--tw-text-opacity:1;color:rgb(94 129 172/var(--tw-text-opacity))}.milkdown-theme-nord.prose\n :where(blockquote p:first-of-type):not(:where([class~=\"not-prose\"] *)):before,\n.milkdown-theme-nord.prose\n :where(blockquote p:first-of-type):not(:where([class~=\"not-prose\"] *)):after{content:\"\"}.milkdown-theme-nord.prose\n :where(code):not(:where([class~=\"not-prose\"] *)):before,\n.milkdown-theme-nord.prose\n :where(code):not(:where([class~=\"not-prose\"] *)):after{content:\"\"}.milkdown-theme-nord.prose .tableWrapper{position:relative;margin-bottom:0.5rem;overflow-x:auto}.milkdown-theme-nord.prose table{margin:1rem!important;overflow:visible!important;font-size:0.875rem;line-height:1.25rem;--tw-shadow:0 4px 6px -1px rgb(0 0 0/0.1),0 2px 4px -2px rgb(0 0 0/0.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}@media (min-width: 640px){.milkdown-theme-nord.prose table{border-radius:0.5rem}}.milkdown-theme-nord.prose td,\n.milkdown-theme-nord.prose th{padding:0.75rem 1.5rem!important}.milkdown-theme-nord.prose tr{border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.dark .milkdown-theme-nord.prose tr{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.milkdown-theme-nord.prose :where(td, th) p{margin:0!important}.milkdown-theme-nord.prose :where(td, th):nth-child(odd){background-color:var(--color-fill-bg-base-1)}.dark .milkdown-theme-nord.prose :where(td, th):nth-child(odd){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.milkdown-theme-nord.prose.ProseMirror .selectedCell:after{background-color:#88c0d04d}.milkdown-theme-nord.prose br[data-is-inline=\"true\"],\n.milkdown-theme-nord.prose br[data-is-inline=\"true\"]:after{content:\" \"}.prose{color:var(--color-normal-text)}.prose :where(p):not(:where([class~=\"not-prose\"] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=\"lead\"]):not(:where([class~=\"not-prose\"] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=\"not-prose\"] *)){color:var(--color-info);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:600}.prose :where(a strong):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(ol):not(:where([class~=\"not-prose\"] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type=\"A\"]):not(:where([class~=\"not-prose\"] *)){list-style-type:upper-alpha}.prose :where(ol[type=\"a\"]):not(:where([class~=\"not-prose\"] *)){list-style-type:lower-alpha}.prose :where(ol[type=\"A\" s]):not(:where([class~=\"not-prose\"] *)){list-style-type:upper-alpha}.prose :where(ol[type=\"a\" s]):not(:where([class~=\"not-prose\"] *)){list-style-type:lower-alpha}.prose :where(ol[type=\"I\"]):not(:where([class~=\"not-prose\"] *)){list-style-type:upper-roman}.prose :where(ol[type=\"i\"]):not(:where([class~=\"not-prose\"] *)){list-style-type:lower-roman}.prose :where(ol[type=\"I\" s]):not(:where([class~=\"not-prose\"] *)){list-style-type:upper-roman}.prose :where(ol[type=\"i\" s]):not(:where([class~=\"not-prose\"] *)){list-style-type:lower-roman}.prose :where(ol[type=\"1\"]):not(:where([class~=\"not-prose\"] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=\"not-prose\"] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol > li):not(:where([class~=\"not-prose\"] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul > li):not(:where([class~=\"not-prose\"] *))::marker{color:var(--tw-prose-bullets)}.prose :where(hr):not(:where([class~=\"not-prose\"] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=\"not-prose\"] *)){font-weight:500;font-style:italic;color:var(--color-auxiliary-text);border-left-width:0.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:\"\\\\201C\" \"\\\\201D\" \"\\\\2018\" \"\\\\2019\";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose\n :where(blockquote p:first-of-type):not(\n :where([class~=\"not-prose\"] *)\n )::before{content:open-quote}.prose\n :where(blockquote p:last-of-type):not(:where([class~=\"not-prose\"] *))::after{content:close-quote}.prose :where(h1):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:0.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=\"not-prose\"] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=\"not-prose\"] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:0.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=\"not-prose\"] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:600;margin-top:1.5em;margin-bottom:0.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=\"not-prose\"] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=\"not-prose\"] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure > *):not(:where([class~=\"not-prose\"] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=\"not-prose\"] *)){color:var(--tw-prose-captions);font-size:0.875em;line-height:1.4285714;margin-top:0.8571429em}.prose :where(code):not(:where([class~=\"not-prose\"] *)){color:var(--tw-prose-code);font-weight:600;font-size:0.875em}.prose :where(code):not(:where([class~=\"not-prose\"] *))::before{content:\"\\`\"}.prose :where(code):not(:where([class~=\"not-prose\"] *))::after{content:\"\\`\"}.prose :where(a code):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(h1 code):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(h2 code):not(:where([class~=\"not-prose\"] *)){color:inherit;font-size:0.875em}.prose :where(h3 code):not(:where([class~=\"not-prose\"] *)){color:inherit;font-size:0.9em}.prose :where(h4 code):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(thead th code):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(pre):not(:where([class~=\"not-prose\"] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:0.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:0.375rem;padding-top:0.8571429em;padding-right:1.1428571em;padding-bottom:0.8571429em;padding-left:1.1428571em}.prose :where(pre code):not(:where([class~=\"not-prose\"] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=\"not-prose\"] *))::before{content:none}.prose :where(pre code):not(:where([class~=\"not-prose\"] *))::after{content:none}.prose :where(table):not(:where([class~=\"not-prose\"] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:0.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=\"not-prose\"] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:600;vertical-align:bottom;padding-right:0.5714286em;padding-bottom:0.5714286em;padding-left:0.5714286em}.prose :where(tbody tr):not(:where([class~=\"not-prose\"] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=\"not-prose\"] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=\"not-prose\"] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=\"not-prose\"] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=\"not-prose\"] *)){vertical-align:top}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgb(0 0 0/50%);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(video):not(:where([class~=\"not-prose\"] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure):not(:where([class~=\"not-prose\"] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~=\"not-prose\"] *)){margin-top:0.5em;margin-bottom:0.5em}.prose :where(ol > li):not(:where([class~=\"not-prose\"] *)){padding-left:0.375em}.prose :where(ul > li):not(:where([class~=\"not-prose\"] *)){padding-left:0.375em}.prose :where(.prose > ul > li p):not(:where([class~=\"not-prose\"] *)){margin-top:0.75em;margin-bottom:0.75em}.prose\n :where(.prose > ul > li > *:first-child):not(:where([class~=\"not-prose\"] *)){margin-top:1.25em}.prose\n :where(.prose > ul > li > *:last-child):not(:where([class~=\"not-prose\"] *)){margin-bottom:1.25em}.prose\n :where(.prose > ol > li > *:first-child):not(:where([class~=\"not-prose\"] *)){margin-top:1.25em}.prose\n :where(.prose > ol > li > *:last-child):not(:where([class~=\"not-prose\"] *)){margin-bottom:1.25em}.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~=\"not-prose\"] *)){margin-top:0.75em;margin-bottom:0.75em}.prose :where(hr + *):not(:where([class~=\"not-prose\"] *)){margin-top:0}.prose :where(h2 + *):not(:where([class~=\"not-prose\"] *)){margin-top:0}.prose :where(h3 + *):not(:where([class~=\"not-prose\"] *)){margin-top:0}.prose :where(h4 + *):not(:where([class~=\"not-prose\"] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=\"not-prose\"] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=\"not-prose\"] *)){padding-right:0}.prose :where(tbody td, tfoot td):not(:where([class~=\"not-prose\"] *)){padding-top:0.5714286em;padding-right:0.5714286em;padding-bottom:0.5714286em;padding-left:0.5714286em}.prose\n :where(tbody td:first-child, tfoot td:first-child):not(\n :where([class~=\"not-prose\"] *)\n ){padding-left:0}.prose\n :where(tbody td:last-child, tfoot td:last-child):not(\n :where([class~=\"not-prose\"] *)\n ){padding-right:0}.prose :where(.prose > :first-child):not(:where([class~=\"not-prose\"] *)){margin-top:0}.prose :where(.prose > :last-child):not(:where([class~=\"not-prose\"] *)){margin-bottom:0}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.isolate{isolation:isolate}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.\\\\!table{display:table!important}.table{display:table}.inline-table{display:inline-table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row-group{display:table-row-group}.table-row{display:table-row}.flow-root{display:flow-root}.grid{display:grid}.inline-grid{display:inline-grid}.contents{display:contents}.list-item{display:list-item}.hidden{display:none}.flex-shrink{flex-shrink:1}.shrink{flex-shrink:1}.flex-grow{flex-grow:1}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.\\\\!transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.break-all{word-break:break-all}.rounded{border-radius:0.25rem}.border{border-width:1px}.text-justify{text-align:justify}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.lining-nums{--tw-numeric-figure:lining-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.overline{-webkit-text-decoration-line:overline;text-decoration-line:overline}.line-through{-webkit-text-decoration-line:line-through;text-decoration-line:line-through}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.sepia{--tw-sepia:sepia(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(0.4,0,0.2,1);transition-duration:150ms}.ease-in{transition-timing-function:cubic-bezier(0.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(0.4,0,0.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,0.2,1)}.milkdown{border-radius:0.25rem;margin:0;padding:0}.editor{margin-left:auto;margin-right:auto}:is(.dark .dark\\\\:prose-invert){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}code[class*=\"language-\"],\npre[class*=\"language-\"]{color:#f8f8f2;background:none;font-family:\"Fira Code\",Consolas,Monaco,\"Andale Mono\",\"Ubuntu Mono\",monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*=\"language-\"]{padding:1em;margin:0.5em 0;overflow:auto;border-radius:0.3em}:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"]{background:#2e3440}:not(pre) > code[class*=\"language-\"]{padding:0.1em;border-radius:0.3em;white-space:normal}.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata{color:#636f88}.token.punctuation{color:#81a1c1}.namespace{opacity:0.7}.token.property,\n.token.tag,\n.token.constant,\n.token.symbol,\n.token.deleted{color:#81a1c1}.token.number{color:#b48ead}.token.boolean{color:#81a1c1}.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted{color:#a3be8c}.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string,\n.token.variable{color:#81a1c1}.token.atrule,\n.token.attr-value,\n.token.function,\n.token.class-name{color:#88c0d0}.token.keyword{color:#81a1c1}.token.regex,\n.token.important{color:#ebcb8b}.token.important,\n.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.entity{cursor:help}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.quick-answer-wrapper{margin-top:20px;border-radius:6px;border:1px solid var(--color-border-divider-line);padding:16px 24px}.quick-answer-wrapper .tip{font-size:18px;margin-bottom:30px}.quick-answer-wrapper .quick-answer-list{display:grid;grid-gap:24px 16px;gap:24px 16px;border-radius:3px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item{position:relative;padding:16px;border-radius:6px;cursor:pointer;display:flex;padding:10px 20px;gap:12px;width:auto;box-sizing:border-box}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item:hover{box-shadow:var(--quick-answer-card-item-hover)}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .left .icon{font-size:20px;color:#fff;padding:8px;border-radius:6px;margin-top:4px}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .content{flex:1;min-width:0}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .content .title{font-size:16px;font-weight:bold;color:var(--color-normal-text);text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .content .description{color:var(--color-auxiliary-text);font-size:12px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.quick-answer-wrapper .show-more-wrapper{text-align:center;margin-top:20px}.quick-answer-wrapper .show-more-wrapper .show-more-btn{line-height:24px}.quick-answer-wrapper .show-more-wrapper .show-more-btn::after,\n .quick-answer-wrapper .show-more-wrapper .show-more-btn::before{content:\"- - - - -\";color:var(--color-text-divider-line);position:absolute}.quick-answer-wrapper .show-more-wrapper .show-more-btn::before{margin-left:-60px}.quick-answer-wrapper .show-more-wrapper .show-more-btn::after{margin-left:10px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../assets/loading.gif\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.message-list-loading-wrapper{width:140px;height:140px;background-repeat:no-repeat;margin:auto;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}.chart-item-loading-wrapper{display:flex;padding:10px;font-size:40px;align-items:center;justify-content:center;color:#d2d3d4;border-radius:6px}.chart-item-loading-wrapper .load{display:inline-block;position:relative;width:64px;height:64px}.chart-item-loading-wrapper .load div{position:absolute;top:27px;width:11px;height:11px;border-radius:50%;background:#aaa8a8;animation-timing-function:cubic-bezier(0,1,1,0)}.chart-item-loading-wrapper .load div:nth-child(1){left:6px;animation:load1 0.6s infinite}.chart-item-loading-wrapper .load div:nth-child(2){left:6px;animation:load2 0.6s infinite}.chart-item-loading-wrapper .load div:nth-child(3){left:26px;animation:load2 0.6s infinite}.chart-item-loading-wrapper .load div:nth-child(4){left:45px;animation:load3 0.6s infinite}@keyframes load1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes load2{0%{transform:translate(0,0)}100%{transform:translate(19px,0)}}@keyframes load3{0%{transform:scale(1)}100%{transform:scale(0)}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./assets/user.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"./assets/robot.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;height:100%}:host([hidden]){display:none}@media only screen and (min-width: 1920px){.chat-view-container .chat-view-content .chat-view{width:1556px}}@media only screen and (min-width: 1440px) and (max-width: 1920px){.chat-view-container .chat-view-content .chat-view{width:1156px}}@media only screen and (min-width: 804px) and (max-width: 1440px){.chat-view-container .chat-view-content .chat-view{width:804px}}@media only screen and (max-width: 804px){.chat-view-container .chat-view-content .chat-view{width:100%}}.chat-view-container{display:flex;flex-direction:row;width:100%;height:100%}.chat-view-selector{width:200px;padding:14px;border-right:1px solid var(--color-border-divider-line)}.chat-view-content{flex:1;display:flex;flex-direction:column;width:100%}.chat-view-content .chat-view-toolbar{background:#e0e4e5;padding:18px;display:flex;justify-content:space-between;align-items:center}.chat-view-content .chat-view-toolbar .username{color:#333333;font-weight:500;line-height:22px;font-size:16px}.chat-view-content .chat-view-toolbar .toolbar eo-icon{cursor:pointer}.chat-view-content .chat-view{max-width:100%;position:relative;display:flex;flex:1;flex-direction:column;box-sizing:border-box;overflow-y:auto;margin:0 auto}.session-list-wrapper .session-title{font-size:16px;color:var(--color-header-text);margin-bottom:16px}.session-list-wrapper .session-list{display:flex;flex-direction:column;gap:8px}.session-list-wrapper .session-list .session-item{cursor:pointer;border-radius:var(--small-border-radius);background-color:var(--third-menu-default-bg);padding:6px 16px;color:var(--color-header-text)}.session-list-wrapper .session-list .session-item.active{background-color:var(--third-menu-item-selected-bg);color:var(--color-brand)}.session-list-wrapper .session-list .session-item:hover,\n .session-list-wrapper .session-list .session-item.active:hover{color:var(--color-header-text);background-color:var(--third-menu-item-hover-bg)}.message-list{display:flex;flex-direction:column;padding-bottom:30px;padding:12px;flex:1;overflow-y:scroll}.message-list .message-list-box{display:flex;flex-direction:column;position:relative;gap:18px}.message-list .message-list-box .message-item{display:flex;gap:8px;padding-right:40px}.message-list .message-list-box .message-item.user{flex-direction:row-reverse;padding:0;padding-left:40px}.message-list .message-list-box .message-item.user .message-box{margin-bottom:0}.message-list .message-list-box .message-item.user .message-box .message-top{flex-direction:row-reverse}.message-list .message-list-box .message-item.user .message-box .message-content{justify-content:end}.message-list .message-list-box .message-item.user .message-box .message-content .content{background-color:#606f7c;color:#fff}.message-list .message-list-box .message-item.user .message-box .message-content:hover .content-tip{display:block}.message-list .message-list-box .message-item.user .message-box .message-content .content-tip{position:absolute;left:-22px;top:0px;display:none}.message-list .message-list-box .message-item.user .message-box .message-content .content-tip eo-icon{padding:4px;color:#606f7c;cursor:pointer}.message-list .message-list-box .message-item .avatar{width:36px;height:36px;margin-top:32px}.message-list .message-list-box .message-item .avatar.user{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}.message-list .message-list-box .message-item .avatar.robot{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_1___})}.message-list .message-list-box .message-item .message-box{position:relative;flex:1}.message-list .message-list-box .message-item .message-box .message-content{display:flex;justify-content:start;position:relative}.message-list .message-list-box .message-item .message-box .message-content .content{position:relative;padding:14px;border-radius:6px;background:var(--message-box-bg)}.message-list .message-list-box .message-item .message-box .message-content .content .text-item{white-space:pre-wrap}.message-list .message-list-box .message-item .message-box .message-content .content .toolbar{position:absolute;bottom:-24px;right:0;display:flex;gap:12px}.message-list .message-list-box .message-item .message-box .message-content .content .toolbar eo-icon{cursor:pointer;color:#606f7c}.message-list .message-list-box .message-item .message-box .message-content .content .toolbar eo-icon[icon=\"dislike\"]{padding-right:12px;border-right:1px solid #d9d9d9}.message-list .message-list-box .message-item .message-box .message-top{display:flex;margin-bottom:4px;color:#bec8ce;gap:8px}.message-list .message-list-box .message-item .message-box .message-top .time{min-height:22px}.message-list .message-list-box .stop-responding-wrapper{position:absolute;left:44px;bottom:-28px}.search-input-box{display:flex;flex-direction:column;height:50px;padding:12px;position:relative}.search-input-box.fill-content{box-shadow:1px 0px 4px 0px rgba(197,197,197,0.5)}.search-input-box .input-box{position:absolute;bottom:20px;left:12px;right:12px;display:inline-flex;padding:var(--input-affix-wrapper-padding);border-radius:var(--small-border-radius);height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;color:var(--text-color-default);background-color:var(--antd-input-bg);border:1px solid var(--color-border-divider-line);transition:border-color 0.3s;overflow:visible}.search-input-box .input-box.active{border-color:var(--antd-input-focus-border-color)}.search-input-box .input-box.disabled{pointer-events:none;background:var(--input-outline-disabled);cursor:not-allowed}.search-input-box .input-box.expand textarea{padding-right:50px;margin-bottom:50px}.search-input-box .input-box textarea{width:100%;height:22px;font-size:18px;resize:none;padding:10px 50px 10px 10px;outline:none;border:none;line-height:20px;color:var(--color-normal-text);background-color:transparent;cursor:inherit;transition:all 300ms ease-out}.search-input-box .input-box textarea::placeholder{color:#b0b1b8}.search-input-box .input-box .suffix-icon{display:flex;align-items:center;gap:8px;position:absolute;right:12px;bottom:6px}.search-input-box .input-box .suffix-icon eo-tooltip{display:flex}.search-input-box .input-box .suffix-icon eo-icon{font-size:20px;cursor:pointer;padding:6px;border-radius:3px}.search-input-box .input-box .suffix-icon eo-icon:not(.disabled):hover{background:var(--search-input-icon-hover)}.search-input-box .input-box .suffix-icon .submit-split{width:1px;height:20px;background:#d1d1d1}.search-input-box .input-box .suffix-icon .submit-btn.active{color:var(--color-brand)}.search-input-box .input-box .suffix-icon .submit-btn.disabled{color:var(--color-disabled-text);cursor:not-allowed}.search-input-box .input-box .toolbar-icon{position:absolute;top:12px;right:14px}.search-input-box .input-box .toolbar-icon eo-icon{font-size:20px;cursor:pointer;padding:6px;border-radius:3px}.search-input-box .input-box .toolbar-icon eo-icon:hover{background:var(--search-input-icon-hover)}.search-input-box .search-input-toolbar{display:flex;justify-content:end;position:absolute;right:12px;bottom:0px}.search-input-box .search-input-toolbar .input-tip{font-size:12px;color:var(--color-secondary-text)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./host-context.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./host-context.css\";\n export default content && content.locals ? content.locals : undefined;\n"],"names":["ChatViewContext","createContext","useChatViewContext","useContext","Avatar","_ref","role","isUser","useMemo","React","className","concat","MessageListLoading","loading","ChatItemLoading","_ref2","WrappedLink","wrapBrick","GuideItem","text","prompts","map","item","index","key","MarkdownItem","MilkdownProvider","MarkdownDisplay","value","useEditor","root","Editor","make","config","ctx","set","rootCtx","update","editorViewOptionsCtx","prev","_objectSpread","editable","defaultValueCtx","nord","use","prism","gfm","commonmark","Milkdown","TableItem","TextItem","WrapperIcon","WrappedToolTip","copyToClipboard","unwrapProvider","showNotification","Toolbar","content","chatting","isAssistant","find","type","isChattingItem","showLike","lib","icon","theme","onClick","handleCopy","str","toString","then","message","catch","Time","time","moment","format","ContentTip","setSearchStr","MessageNode","props","ctime","getContentNode","useCallback","examplePrompts","messageNode","WrappedIcon","CARD_ITEM_HEIGHT","HEIGHT_GAP","QuickAnswerCardItem","name","description","starterPrompts","iconColor","_icon$color","color","style","height","background","handleCardClick","length","_extends","category","QuickAnswerList","_quickAnswerConfig$ti","quickAnswerConfig","msgList","showMoreBtn","setShowMoreBtn","useState","listRef","useRef","hadClickShowMoreBtn","useEffect","element","current","observer","ResizeObserver","entries","entry","contentRect","observe","disconnect","list","tip","maxHeight","overflow","ref","instanceId","handleShowMoreClick","StopBtn","stopChat","handleStopChat","DEFAULT_OFFSET_HEIGHT","MessageList","showAvatar","messageListRef","messgetListBoxRef","preHeight","setPreHeight","flag","isCustomScroll","msgItem","getMsgItemNode","_item$ctime","arguments","undefined","classNames","user","msgListNode","msgItemNode","handleScroll","throttle","computedHeight","scrollHeight","clientHeight","isBottom","scrollTop","newHeight","scroll","top","Number","MAX_SAFE_INTEGER","Math","max","onScroll","hiddenTextarea","HIDDEN_TEXTAREA_STYLE","SIZING_STYLE","SearchInput","setValue","active","setActive","expand","setExpand","autoSizeStyle","setAutoSizeStyle","isFillContent","setIsFillContent","searchInputBoxRef","textareaRef","hadExpanded","inputEndRef","searchStr","createSession","handleChat","hadValue","defaultSize","disabled","computedAutoSize","size","textareaElement","textareaStyles","uiTextNode","minRows","maxRows","document","createElement","setAttribute","body","appendChild","uiTextNodeStyle","window","getComputedStyle","sizingStyle","getPropertyValue","join","placeholder","minHeight","singleRowHeight","min","overflowY","resize","calculateAutoSizeStyle","handleChange","e","target","handleExpand","handleSubmit","blur","handleKeyDown","shiftKey","preventDefault","searchInputBox","width","currentWidth","getBoundingClientRect","parentWidth","parentElement","_textareaRef$current","focus","paddingRight","onFocus","onBlur","onChange","onKeyDown","onCompositionStart","handleCompositionStart","onCompositionEnd","handleCompositionEnd","hanldeCreateSession","spinning","SessionList","sessionList","SessionItem","title","id","updateSession","activeSessionId","handleUpdateSession","mockmsgList","mockList2","_ctrl","WeakMap","_agentId","_enterInterval","_charting","_isStartEmitEvent","_emitTimer","_messageQueue","_subscribers","_conversationId","_ChatService_brand","WeakSet","ChatService","constructor","agentId","enterInterval","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_classPrivateFieldSet","this","enqueue","data","_classPrivateFieldGet","push","_assertClassBrand","_startEmitEvent","call","dequeue","shift","getMessageQueue","subscribe","topic","callback","unsubscribe","filter","cb","notifySubscribers","forEach","setConversationId","getSessionList","_asyncToGenerator","chat","_this","AbortController","hadMatchMessage","fetchEventSource","getBasePath","method","signal","JSON","stringify","conversationId","input","stream","headers","onopen","response","ok","console","log","_x","apply","onmessage","msg","result","parse","created","delta","abort","onclose","onerror","err","stop","_classPrivateFieldGet2","clearInterval","_clear","setInterval","messageItem","useChatViewInfo","setActiveSessionid","setLoading","setChatting","setSessionList","setMsgList","setMsgItem","chatingText","chatingMessageItem","chatService","listener","random","reset","finishListener","stopListener","_chatingMessageItem$c","_ref3","mockSearch","_ref4","Promise","resolve","setTimeout","_x2","___CSS_LOADER_EXPORT___","module","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_REPLACEMENT_1___","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_next_bricks_ai=self.webpackChunk_next_bricks_ai||[]).push([[8989,8434,1370],{2559:(r,t,e)=>{function n(r,t,e){if("function"==typeof r?r===t:r.has(t))return arguments.length<3?t:e;throw new TypeError("Private element is not present on this object")}e.d(t,{A:()=>n})},6330:(r,t,e)=>{function n(r,t,e,n,o,s,a){try{var i=r[s](a),c=i.value}catch(r){return void e(r)}i.done?t(c):Promise.resolve(c).then(n,o)}function o(r){return function(){var t=this,e=arguments;return new Promise((function(o,s){var a=r.apply(t,e);function i(r){n(a,o,s,i,c,"next",r)}function c(r){n(a,o,s,i,c,"throw",r)}i(void 0)}))}}e.d(t,{A:()=>o})},2016:(r,t,e)=>{function n(r,t){if(t.has(r))throw new TypeError("Cannot initialize the same private elements twice on an object")}e.d(t,{A:()=>n})},829:(r,t,e)=>{e.d(t,{A:()=>o});var n=e(2559);function o(r,t){return r.get((0,n.A)(r,t))}},918:(r,t,e)=>{e.d(t,{A:()=>o});var n=e(2016);function o(r,t,e){(0,n.A)(r,t),t.set(r,e)}},6121:(r,t,e)=>{e.d(t,{A:()=>o});var n=e(2559);function o(r,t,e){return r.set((0,n.A)(r,t),e),e}},4635:(r,t,e)=>{e.d(t,{A:()=>o});var n=e(2016);function o(r,t){(0,n.A)(r,t),t.add(r)}},4586:(r,t,e)=>{e.d(t,{A:()=>o});var n=e(1369);function o(r,t,e){return(t=(0,n.A)(t))in r?Object.defineProperty(r,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):r[t]=e,r}},9740:(r,t,e)=>{e.d(t,{A:()=>s});var n=e(4586);function o(r,t){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.push.apply(e,n)}return e}function s(r){for(var t=1;t<arguments.length;t++){var e=null!=arguments[t]?arguments[t]:{};t%2?o(Object(e),!0).forEach((function(t){(0,n.A)(r,t,e[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(e)):o(Object(e)).forEach((function(t){Object.defineProperty(r,t,Object.getOwnPropertyDescriptor(e,t))}))}return r}},4223:(r,t,e)=>{function n(r,t){if(null==r)return{};var e,n,o=function(r,t){if(null==r)return{};var e,n,o={},s=Object.keys(r);for(n=0;n<s.length;n++)e=s[n],t.indexOf(e)>=0||(o[e]=r[e]);return o}(r,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(r);for(n=0;n<s.length;n++)e=s[n],t.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(r,e)&&(o[e]=r[e])}return o}e.d(t,{A:()=>n})},1369:(r,t,e)=>{e.d(t,{A:()=>o});var n=e(7545);function o(r){var t=function(r,t){if("object"!=(0,n.A)(r)||!r)return r;var e=r[Symbol.toPrimitive];if(void 0!==e){var o=e.call(r,"string");if("object"!=(0,n.A)(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(r)}(r);return"symbol"==(0,n.A)(t)?t:t+""}},7545:(r,t,e)=>{function n(r){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(r){return typeof r}:function(r){return r&&"function"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},n(r)}e.d(t,{A:()=>n})},8989:(r,t,e)=>{e.r(t),e.d(t,{HttpAbortError:()=>N,HttpFetchError:()=>L,HttpParseError:()=>G,HttpResponseError:()=>B,createHttpInstance:()=>K,defaultAdapter:()=>V,fetch:()=>J,http:()=>M,isHttpAbortError:()=>z});var n={};e.r(n),e.d(n,{HttpAbortError:()=>b,HttpFetchError:()=>f,HttpParseError:()=>A,HttpResponseError:()=>v,createHttpInstance:()=>F,defaultAdapter:()=>k,fetch:()=>o,getUrlWithParams:()=>H,http:()=>I,isHttpAbortError:()=>j});var o=(r,t)=>{var e=new Request(r,Object.assign({credentials:"same-origin"},t));return self.fetch(e)},s=e(4635),a=e(918),i=e(4586),c=e(829),u=e(2559),p=e(6121),h=e(9740),l=e(4223),d=e(6330);class f extends Error{constructor(r){super(r),this.name="HttpFetchError",Error.captureStackTrace&&Error.captureStackTrace(this,f)}}class v extends Error{constructor(r,t){super(r.statusText),(0,i.A)(this,"response",void 0),(0,i.A)(this,"responseJson",void 0),this.name="HttpResponseError",Error.captureStackTrace&&Error.captureStackTrace(this,v),this.response=r,this.responseJson=t}}class A extends Error{constructor(r){super(r.statusText),(0,i.A)(this,"response",void 0),this.name="HttpParseError",Error.captureStackTrace&&Error.captureStackTrace(this,A),this.response=r}}class b extends Error{constructor(r){super(r),this.name="HttpAbortError"}}class m{constructor(){(0,i.A)(this,"handlers",[])}use(r,t){return this.handlers.push({fulfilled:r,rejected:t}),this.handlers.length-1}eject(r){this.handlers[r]&&(this.handlers[r]=null)}forEach(r){this.handlers.forEach((t=>{null!==t&&r(t)}))}}var y=["params","responseType","interceptorParams","observe","noAbortOnRouteChange","useCache"],E=["params","headers","responseType","interceptorParams","observe","noAbortOnRouteChange","useCache"],w=["body","method"];function g(r){return null==r}var O=document.querySelector("base"),P=O?O.href:location.origin+"/",j=r=>r instanceof DOMException&&20===r.code,T=function(){var r=(0,d.A)((function*(r,t,e){return new Promise(function(){var n=(0,d.A)((function*(n,s){var a;e.url=r;var{responseType:i}=e.options||{};i||(i="json");try{a=yield o(r,t)}catch(r){return void s(j(r)?new b(r.toString()):new f(r.toString()))}if(a.ok){var c;try{c=yield a[i]()}catch(r){return void s(j(r)?new b(r.toString()):new A(a))}n({status:a.status,statusText:a.statusText,headers:a.headers,data:c})}else{var u;try{u=yield a.json()}catch(r){}s(new v(a,u))}}));return function(r,t){return n.apply(this,arguments)}}())}));return function(t,e,n){return r.apply(this,arguments)}}(),H=(r,t)=>{if(t){var e=new URL(r,P);t instanceof URLSearchParams?t.forEach((function(r,t){e.searchParams.append(t,r)})):Object.entries(t).forEach((r=>{var[t,n]=r;Array.isArray(n)?n.forEach((r=>{e.searchParams.append(t,g(r)?"":r)})):e.searchParams.append(t,g(n)?"":n)}));var{href:n}=e;return n.startsWith(P)?n.substr(P.length):n}return r},S=(r,t)=>{if(void 0!==r){var e=new Headers(t||{}),n="Content-Type",o=r;return e.has(n)||("string"==typeof r?e.set(n,"application/x-www-form-urlencoded"):r instanceof FormData||(e.set(n,"application/json"),o=JSON.stringify(r))),{body:o,headers:e}}return{headers:t}},k=r=>{var{url:t,method:e,data:n}=r;return["DELETE","GET","HEAD"].includes(r.method)?((r,t,e)=>{var n=e.options||{},{params:o,responseType:s,interceptorParams:a,observe:i,noAbortOnRouteChange:c,useCache:u}=n,p=(0,l.A)(n,y);return T(H(t,o),(0,h.A)((0,h.A)({},p),{},{method:r}),e)})(e,t,r):((r,t,e,n)=>{var o=n.options||{},{params:s,headers:a,responseType:i,interceptorParams:c,observe:u,noAbortOnRouteChange:p,useCache:d}=o,f=(0,l.A)(o,E);return T(H(t,s),(0,h.A)((0,h.A)({},f),{},{method:r},S(e,a)),n)})(e,t,n,r)},x=new WeakMap,C=new WeakSet;class R{constructor(r){var t=this;(0,s.A)(this,C),(0,i.A)(this,"interceptors",void 0),(0,a.A)(this,x,k),(0,i.A)(this,"request",function(){var r=(0,d.A)((function*(r,e,n){var o=e||{},{body:s,method:a}=o,i=(0,l.A)(o,w);return(0,u.A)(C,t,D).call(t,{url:r,data:s,method:a||"GET",options:(0,h.A)((0,h.A)({},n||{}),i)})}));return function(t,e,n){return r.apply(this,arguments)}}()),(0,i.A)(this,"simpleRequest",(function(r,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return(0,u.A)(C,t,D).call(t,{url:e,method:r,options:n})})),(0,i.A)(this,"requestWithBody",(function(r,e,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return(0,u.A)(C,t,D).call(t,{url:e,method:r,data:n,options:o})})),this.interceptors={request:new m,response:new m},null!=r&&r.adapter&&(0,p.A)(x,this,r.adapter)}getUrlWithParams(r,t){return H(r,t)}getBodyAndHeaders(r,t){return S(r,t)}get(r,t){return(0,u.A)(C,this,D).call(this,{url:r,method:"GET",options:t})}delete(r,t){return(0,u.A)(C,this,D).call(this,{url:r,method:"DELETE",options:t})}head(r,t){return(0,u.A)(C,this,D).call(this,{url:r,method:"HEAD",options:t})}post(r,t,e){return(0,u.A)(C,this,D).call(this,{url:r,method:"POST",data:t,options:e})}put(r,t,e){return(0,u.A)(C,this,D).call(this,{url:r,method:"PUT",data:t,options:e})}patch(r,t,e){return(0,u.A)(C,this,D).call(this,{url:r,method:"PATCH",data:t,options:e})}}function D(r){var t=[],e=Promise.resolve(r);for(this.interceptors.request.forEach((r=>{t.push(r.fulfilled,r.rejected)})),t.push((r=>(0,c.A)(x,this).call(this,r)),void 0),this.interceptors.response.forEach((e=>{t.push((t=>{var n;return null===(n=e.fulfilled)||void 0===n?void 0:n.call(e,t,r)}),(t=>{var n;return null===(n=e.rejected)||void 0===n?void 0:n.call(e,t,r)}))})),t.push((t=>{var e;return"response"===(null===(e=r.options)||void 0===e?void 0:e.observe)?t:t.data}),void 0);t.length;)e=e.then(t.shift(),t.shift());return e}var W,_,q,I=new R;function F(r){I=new R(r)}var{dll:U}=window;_=U&&null!==(W=window.BRICK_NEXT_VERSIONS)&&void 0!==W&&null!==(W=W["brick-container"])&&void 0!==W&&W.startsWith("2.")&&(q=U("JxWY"))?q:n;var{fetch:J,HttpFetchError:L,HttpResponseError:B,HttpParseError:G,HttpAbortError:N,http:M,isHttpAbortError:z,createHttpInstance:K,defaultAdapter:V}=_}}]);
|
|
2
|
-
//# sourceMappingURL=8989.82221efb.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_next_bricks_ai=self.webpackChunk_next_bricks_ai||[]).push([[9251],{9251:(e,t,s)=>{s.r(t);var i,n,a,r,h,o,c,w,l,A,u,v,d,g,k,m,I,p=s(918),S=s(6121),L=s(829),C=s(3240),E=s(8769),f=s.n(E),M=s(6544),q=s(2621),N=s(15),W=s(6778),b=s(8312),x=s(3830),y=s(205),_=s(8894),B=s(5679),D=s(4651),R=s(6780),{defineElement:F,property:P}=(s(6329),s(2896),(0,M.createDecorators)()),T=new WeakMap,Z=new WeakMap,j=new WeakMap,z=new WeakMap,G=new WeakMap,H=new WeakMap,J=new WeakMap;class K extends q.ReactNextElement{constructor(){super(...arguments),(0,p.A)(this,T,a(this)),(0,p.A)(this,Z,(r(this),h(this))),(0,p.A)(this,j,(o(this),c(this))),(0,p.A)(this,z,(w(this),l(this))),(0,p.A)(this,G,(A(this),u(this))),(0,p.A)(this,H,(v(this),d(this))),(0,p.A)(this,J,(g(this),k(this))),m(this)}get sessionId(){return(0,L.A)(T,this)}set sessionId(e){(0,S.A)(T,this,e)}get agentId(){return(0,L.A)(Z,this)}set agentId(e){(0,S.A)(Z,this,e)}get showAvatar(){return(0,L.A)(j,this)}set showAvatar(e){(0,S.A)(j,this,e)}get showSessionList(){return(0,L.A)(z,this)}set showSessionList(e){(0,S.A)(z,this,e)}get showLike(){return(0,L.A)(G,this)}set showLike(e){(0,S.A)(G,this,e)}get enterInterval(){return(0,L.A)(H,this)}set enterInterval(e){(0,S.A)(H,this,e)}get quickAnswerConfig(){return(0,L.A)(J,this)}set quickAnswerConfig(e){(0,S.A)(J,this,e)}render(){return f().createElement(O,{agentId:this.agentId,sessionId:this.sessionId,showAvatar:this.showAvatar,showSessionList:this.showSessionList,showLike:this.showLike,quickAnswerConfig:this.quickAnswerConfig,enterInterval:this.enterInterval})}}function O(e){var{agentId:t,showAvatar:s,showSessionList:i=!0,showLike:n=!0,quickAnswerConfig:a,enterInterval:r}=e,{activeSessionId:h,msgList:o,msgItem:c,sessionList:w,loading:l,chatting:A,searchStr:u,handleChat:v,stopChat:d,createSession:g,updateSession:k,setSearchStr:m}=(0,b.F)({agentId:t,enterInterval:r});return f().createElement(N.t.Provider,{value:{activeSessionId:h,sessionList:w,msgList:o,msgItem:c,chatting:A,loading:l,searchStr:u,showLike:n,quickAnswerConfig:a,handleChat:v,stopChat:d,createSession:g,updateSession:k,setSearchStr:m}},f().createElement("div",{className:"chat-view-container"},i&&f().createElement("div",{className:"chat-view-selector"},f().createElement(x.Z,null)),f().createElement("div",{className:"chat-view-content"},f().createElement("div",{className:"chat-view"},f().createElement(W.M,{showAvatar:s}),f().createElement(y.D,null)))))}i=K,({e:[a,r,h,o,c,w,l,A,u,v,d,g,k,m],c:[I,n]}=(0,C.A)(i,[F("ai.chat-view",{styleTexts:[_.A,B.A,D.A,R.A]})],[[P(),1,"sessionId"],[P(),1,"agentId"],[P({type:Boolean}),1,"showAvatar"],[P({type:Boolean}),1,"showSessionList"],[P({type:Boolean}),1,"showLike"],[P({type:Number}),1,"enterInterval"],[P({attribute:!1}),1,"quickAnswerConfig"]],0,void 0,q.ReactNextElement)),n()}}]);
|
|
2
|
-
//# sourceMappingURL=9251.6e1e1049.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/9251.6e1e1049.js","mappings":"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","sources":["webpack:///./src/chat-view/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { ChatViewContext, QuickAnswerConfig } from \"./ChatViewContext.js\";\nimport { MessageList } from \"./components/MessageList.js\";\nimport { useChatViewInfo } from \"./hooks/useChatViewInfo.js\";\nimport { SessionList } from \"./components/SessionList.js\";\nimport { SearchInput } from \"./components/SearchInput.js\";\nimport styleText from \"./styles.shadow.css\";\nimport loadStyleText from \"./components/loading.shadow.css\";\nimport markdownStyleText from \"./components/MessageItem/markdown.shadow.css\";\nimport quickAnswerListStyleText from \"./components/QuickAnswerList/quickAnswerList.shadow.css\";\nimport \"@next-core/theme\";\nimport \"./host-context.css\";\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * AI 对话终端\n */\nexport\n@defineElement(\"ai.chat-view\", {\n styleTexts: [\n styleText,\n loadStyleText,\n markdownStyleText,\n quickAnswerListStyleText,\n ],\n})\nclass ChatView extends ReactNextElement {\n @property()\n accessor sessionId: string | undefined;\n\n /**\n * 智能体id\n */\n @property()\n accessor agentId!: string;\n\n /**\n * 是否展示对话用户头像\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showAvatar: boolean | undefined;\n\n /**\n * 是否展示历史会话信息\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showSessionList: boolean | undefined;\n\n /**\n * 是否展示点赞能力\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showLike: boolean | undefined;\n\n /**\n * 输入间隔\n * @default 50\n */\n @property({\n type: Number,\n })\n accessor enterInterval: number | undefined;\n\n /**\n * 快速入口列表\n */\n @property({\n attribute: false,\n })\n accessor quickAnswerConfig: QuickAnswerConfig | undefined;\n\n render() {\n return (\n <ChatViewComponent\n agentId={this.agentId}\n sessionId={this.sessionId}\n showAvatar={this.showAvatar}\n showSessionList={this.showSessionList}\n showLike={this.showLike}\n quickAnswerConfig={this.quickAnswerConfig}\n enterInterval={this.enterInterval}\n />\n );\n }\n}\n\nexport interface ChatViewProps {\n agentId: string;\n sessionId?: string;\n showAvatar?: boolean;\n showSessionList?: boolean;\n showLike?: boolean;\n quickAnswerConfig?: QuickAnswerConfig;\n enterInterval?: number;\n}\n\nexport function ChatViewComponent({\n agentId,\n showAvatar,\n showSessionList = true,\n showLike = true,\n quickAnswerConfig,\n enterInterval,\n}: ChatViewProps) {\n const {\n activeSessionId,\n msgList,\n msgItem,\n sessionList,\n loading,\n chatting,\n searchStr,\n handleChat,\n stopChat,\n createSession,\n updateSession,\n setSearchStr,\n } = useChatViewInfo({\n agentId,\n enterInterval,\n });\n\n return (\n <ChatViewContext.Provider\n value={{\n activeSessionId,\n sessionList,\n msgList,\n msgItem,\n chatting,\n loading,\n searchStr,\n showLike,\n quickAnswerConfig,\n handleChat,\n stopChat,\n createSession,\n updateSession,\n setSearchStr,\n }}\n >\n <div className=\"chat-view-container\">\n {showSessionList && (\n <div className=\"chat-view-selector\">\n <SessionList />\n </div>\n )}\n <div className=\"chat-view-content\">\n <div className=\"chat-view\">\n <MessageList showAvatar={showAvatar} />\n <SearchInput />\n </div>\n </div>\n </div>\n </ChatViewContext.Provider>\n );\n}\n"],"names":["_ChatView","defineElement","property","createDecorators","_A","WeakMap","_B","_C","_D","_E","_F","_G","ChatView","ReactNextElement","constructor","arguments","_classPrivateFieldInitSpec","_init_sessionId","_init_extra_sessionId","_init_agentId","_init_extra_agentId","_init_showAvatar","_init_extra_showAvatar","_init_showSessionList","_init_extra_showSessionList","_init_showLike","_init_extra_showLike","_init_enterInterval","_init_extra_enterInterval","_init_quickAnswerConfig","_init_extra_quickAnswerConfig","sessionId","_classPrivateFieldGet","v","_classPrivateFieldSet","agentId","showAvatar","showSessionList","showLike","enterInterval","quickAnswerConfig","render","React","ChatViewComponent","this","_ref","activeSessionId","msgList","msgItem","sessionList","loading","chatting","searchStr","handleChat","stopChat","createSession","updateSession","setSearchStr","useChatViewInfo","ChatViewContext","Provider","value","className","SessionList","MessageList","SearchInput","_ChatView2","e","c","_initClass","_applyDecs","styleTexts","styleText","loadStyleText","markdownStyleText","quickAnswerListStyleText","type","Boolean","Number","attribute"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_next_bricks_ai=self.webpackChunk_next_bricks_ai||[]).push([[6129],{1943:(e,t,s)=>{s.r(t),s.d(t,{ChatView:()=>I,ChatViewComponent:()=>K});var i,n,a,r,h,o,c,w,l,A,d,u,v,g,k,m,I,p=s(918),S=s(6121),L=s(829),C=s(3240),E=s(8769),f=s.n(E),M=s(6544),q=s(2621),N=s(15),W=s(6778),b=s(8312),x=s(3830),y=s(205),_=s(8894),B=s(5679),D=s(4651),R=s(6780),{defineElement:V,property:F}=(s(6329),s(2896),(0,M.createDecorators)()),P=new WeakMap,T=new WeakMap,Z=new WeakMap,j=new WeakMap,z=new WeakMap,G=new WeakMap,H=new WeakMap;class J extends q.ReactNextElement{constructor(){super(...arguments),(0,p.A)(this,P,a(this)),(0,p.A)(this,T,(r(this),h(this))),(0,p.A)(this,Z,(o(this),c(this))),(0,p.A)(this,j,(w(this),l(this))),(0,p.A)(this,z,(A(this),d(this))),(0,p.A)(this,G,(u(this),v(this))),(0,p.A)(this,H,(g(this),k(this))),m(this)}get sessionId(){return(0,L.A)(P,this)}set sessionId(e){(0,S.A)(P,this,e)}get agentId(){return(0,L.A)(T,this)}set agentId(e){(0,S.A)(T,this,e)}get showAvatar(){return(0,L.A)(Z,this)}set showAvatar(e){(0,S.A)(Z,this,e)}get showSessionList(){return(0,L.A)(j,this)}set showSessionList(e){(0,S.A)(j,this,e)}get showLike(){return(0,L.A)(z,this)}set showLike(e){(0,S.A)(z,this,e)}get enterInterval(){return(0,L.A)(G,this)}set enterInterval(e){(0,S.A)(G,this,e)}get quickAnswerConfig(){return(0,L.A)(H,this)}set quickAnswerConfig(e){(0,S.A)(H,this,e)}render(){return f().createElement(K,{agentId:this.agentId,sessionId:this.sessionId,showAvatar:this.showAvatar,showSessionList:this.showSessionList,showLike:this.showLike,quickAnswerConfig:this.quickAnswerConfig,enterInterval:this.enterInterval})}}function K(e){var{agentId:t,showAvatar:s,showSessionList:i=!0,showLike:n=!0,quickAnswerConfig:a,enterInterval:r}=e,{activeSessionId:h,msgList:o,msgItem:c,sessionList:w,loading:l,chatting:A,searchStr:d,handleChat:u,stopChat:v,createSession:g,updateSession:k,setSearchStr:m}=(0,b.F)({agentId:t,enterInterval:r});return f().createElement(N.t.Provider,{value:{activeSessionId:h,sessionList:w,msgList:o,msgItem:c,chatting:A,loading:l,searchStr:d,showLike:n,quickAnswerConfig:a,handleChat:u,stopChat:v,createSession:g,updateSession:k,setSearchStr:m}},f().createElement("div",{className:"chat-view-container"},i&&f().createElement("div",{className:"chat-view-selector"},f().createElement(x.Z,null)),f().createElement("div",{className:"chat-view-content"},f().createElement("div",{className:"chat-view"},f().createElement(W.M,{showAvatar:s}),f().createElement(y.D,null)))))}i=J,({e:[a,r,h,o,c,w,l,A,d,u,v,g,k,m],c:[I,n]}=(0,C.A)(i,[V("ai.chat-view",{styleTexts:[_.A,B.A,D.A,R.A]})],[[F(),1,"sessionId"],[F(),1,"agentId"],[F({type:Boolean}),1,"showAvatar"],[F({type:Boolean}),1,"showSessionList"],[F({type:Boolean}),1,"showLike"],[F({type:Number}),1,"enterInterval"],[F({attribute:!1}),1,"quickAnswerConfig"]],0,void 0,q.ReactNextElement)),n()}}]);
|
|
2
|
-
//# sourceMappingURL=chat-view.2f11cf5a.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/chat-view.2f11cf5a.js","mappings":"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","sources":["webpack:///./src/chat-view/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { ChatViewContext, QuickAnswerConfig } from \"./ChatViewContext.js\";\nimport { MessageList } from \"./components/MessageList.js\";\nimport { useChatViewInfo } from \"./hooks/useChatViewInfo.js\";\nimport { SessionList } from \"./components/SessionList.js\";\nimport { SearchInput } from \"./components/SearchInput.js\";\nimport styleText from \"./styles.shadow.css\";\nimport loadStyleText from \"./components/loading.shadow.css\";\nimport markdownStyleText from \"./components/MessageItem/markdown.shadow.css\";\nimport quickAnswerListStyleText from \"./components/QuickAnswerList/quickAnswerList.shadow.css\";\nimport \"@next-core/theme\";\nimport \"./host-context.css\";\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * AI 对话终端\n */\nexport\n@defineElement(\"ai.chat-view\", {\n styleTexts: [\n styleText,\n loadStyleText,\n markdownStyleText,\n quickAnswerListStyleText,\n ],\n})\nclass ChatView extends ReactNextElement {\n @property()\n accessor sessionId: string | undefined;\n\n /**\n * 智能体id\n */\n @property()\n accessor agentId!: string;\n\n /**\n * 是否展示对话用户头像\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showAvatar: boolean | undefined;\n\n /**\n * 是否展示历史会话信息\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showSessionList: boolean | undefined;\n\n /**\n * 是否展示点赞能力\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showLike: boolean | undefined;\n\n /**\n * 输入间隔\n * @default 50\n */\n @property({\n type: Number,\n })\n accessor enterInterval: number | undefined;\n\n /**\n * 快速入口列表\n */\n @property({\n attribute: false,\n })\n accessor quickAnswerConfig: QuickAnswerConfig | undefined;\n\n render() {\n return (\n <ChatViewComponent\n agentId={this.agentId}\n sessionId={this.sessionId}\n showAvatar={this.showAvatar}\n showSessionList={this.showSessionList}\n showLike={this.showLike}\n quickAnswerConfig={this.quickAnswerConfig}\n enterInterval={this.enterInterval}\n />\n );\n }\n}\n\nexport interface ChatViewProps {\n agentId: string;\n sessionId?: string;\n showAvatar?: boolean;\n showSessionList?: boolean;\n showLike?: boolean;\n quickAnswerConfig?: QuickAnswerConfig;\n enterInterval?: number;\n}\n\nexport function ChatViewComponent({\n agentId,\n showAvatar,\n showSessionList = true,\n showLike = true,\n quickAnswerConfig,\n enterInterval,\n}: ChatViewProps) {\n const {\n activeSessionId,\n msgList,\n msgItem,\n sessionList,\n loading,\n chatting,\n searchStr,\n handleChat,\n stopChat,\n createSession,\n updateSession,\n setSearchStr,\n } = useChatViewInfo({\n agentId,\n enterInterval,\n });\n\n return (\n <ChatViewContext.Provider\n value={{\n activeSessionId,\n sessionList,\n msgList,\n msgItem,\n chatting,\n loading,\n searchStr,\n showLike,\n quickAnswerConfig,\n handleChat,\n stopChat,\n createSession,\n updateSession,\n setSearchStr,\n }}\n >\n <div className=\"chat-view-container\">\n {showSessionList && (\n <div className=\"chat-view-selector\">\n <SessionList />\n </div>\n )}\n <div className=\"chat-view-content\">\n <div className=\"chat-view\">\n <MessageList showAvatar={showAvatar} />\n <SearchInput />\n </div>\n </div>\n </div>\n </ChatViewContext.Provider>\n );\n}\n"],"names":["_ChatView","defineElement","property","createDecorators","_A","WeakMap","_B","_C","_D","_E","_F","_G","ChatView","ReactNextElement","constructor","arguments","_classPrivateFieldInitSpec","_init_sessionId","_init_extra_sessionId","_init_agentId","_init_extra_agentId","_init_showAvatar","_init_extra_showAvatar","_init_showSessionList","_init_extra_showSessionList","_init_showLike","_init_extra_showLike","_init_enterInterval","_init_extra_enterInterval","_init_quickAnswerConfig","_init_extra_quickAnswerConfig","sessionId","_classPrivateFieldGet","v","_classPrivateFieldSet","agentId","showAvatar","showSessionList","showLike","enterInterval","quickAnswerConfig","render","React","ChatViewComponent","this","_ref","activeSessionId","msgList","msgItem","sessionList","loading","chatting","searchStr","handleChat","stopChat","createSession","updateSession","setSearchStr","useChatViewInfo","ChatViewContext","Provider","value","className","SessionList","MessageList","SearchInput","_ChatView2","e","c","_initClass","_applyDecs","styleTexts","styleText","loadStyleText","markdownStyleText","quickAnswerListStyleText","type","Boolean","Number","attribute"],"sourceRoot":""}
|