@next-bricks/ai-portal 0.39.5 → 0.39.6

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.
Files changed (46) hide show
  1. package/dist/bricks.json +12 -11
  2. package/dist/chunks/1967.118ab1ff.js +2 -0
  3. package/dist/chunks/1967.118ab1ff.js.map +1 -0
  4. package/dist/chunks/382.673901e0.js +2 -0
  5. package/dist/chunks/{382.7a717a6b.js.map → 382.673901e0.js.map} +1 -1
  6. package/dist/chunks/71.d73556e8.js +2 -0
  7. package/dist/chunks/71.d73556e8.js.map +1 -0
  8. package/dist/chunks/{8616.00ec7d55.js → 8616.ceae4e7b.js} +3 -3
  9. package/dist/chunks/{8616.00ec7d55.js.map → 8616.ceae4e7b.js.map} +1 -1
  10. package/dist/chunks/chat-box.95d5030b.js +2 -0
  11. package/dist/chunks/chat-box.95d5030b.js.map +1 -0
  12. package/dist/chunks/goal-card-list.3808c3ae.js +3 -0
  13. package/dist/chunks/goal-card-list.3808c3ae.js.map +1 -0
  14. package/dist/chunks/{main.851452d9.js → main.70faece8.js} +2 -2
  15. package/dist/chunks/{main.851452d9.js.map → main.70faece8.js.map} +1 -1
  16. package/dist/chunks/preview-container.260a045a.js +2 -0
  17. package/dist/chunks/preview-container.260a045a.js.map +1 -0
  18. package/dist/chunks/project-conversations.972403a2.js +3 -0
  19. package/dist/chunks/project-conversations.972403a2.js.map +1 -0
  20. package/dist/examples.json +6 -6
  21. package/dist/index.910aa848.js +2 -0
  22. package/dist/{index.8d65faed.js.map → index.910aa848.js.map} +1 -1
  23. package/dist/manifest.json +80 -56
  24. package/dist/types.json +39 -1
  25. package/dist-types/chat-box/index.d.ts +10 -1
  26. package/dist-types/goal-card-list/CardItem/CardItem.d.ts +3 -1
  27. package/dist-types/goal-card-list/i18n.d.ts +2 -1
  28. package/dist-types/goal-card-list/index.d.ts +2 -0
  29. package/package.json +2 -2
  30. package/dist/chunks/1967.8a8887a8.js +0 -2
  31. package/dist/chunks/1967.8a8887a8.js.map +0 -1
  32. package/dist/chunks/382.7a717a6b.js +0 -2
  33. package/dist/chunks/71.dd436f51.js +0 -2
  34. package/dist/chunks/71.dd436f51.js.map +0 -1
  35. package/dist/chunks/chat-box.8bcfda44.js +0 -2
  36. package/dist/chunks/chat-box.8bcfda44.js.map +0 -1
  37. package/dist/chunks/goal-card-list.d0dfa31e.js +0 -3
  38. package/dist/chunks/goal-card-list.d0dfa31e.js.map +0 -1
  39. package/dist/chunks/preview-container.ec727678.js +0 -2
  40. package/dist/chunks/preview-container.ec727678.js.map +0 -1
  41. package/dist/chunks/project-conversations.758d7189.js +0 -3
  42. package/dist/chunks/project-conversations.758d7189.js.map +0 -1
  43. package/dist/index.8d65faed.js +0 -2
  44. /package/dist/chunks/{8616.00ec7d55.js.LICENSE.txt → 8616.ceae4e7b.js.LICENSE.txt} +0 -0
  45. /package/dist/chunks/{goal-card-list.d0dfa31e.js.LICENSE.txt → goal-card-list.3808c3ae.js.LICENSE.txt} +0 -0
  46. /package/dist/chunks/{project-conversations.758d7189.js.LICENSE.txt → project-conversations.972403a2.js.LICENSE.txt} +0 -0
@@ -1,3 +1,3 @@
1
- /*! For license information please see 8616.00ec7d55.js.LICENSE.txt */
2
- "use strict";(globalThis.webpackChunk_next_bricks_ai_portal=globalThis.webpackChunk_next_bricks_ai_portal||[]).push([[8616],{26785:(e,t,i)=>{i.d(t,{Y:()=>b});var a=i(89575),n=i(18769),o=i.n(n),r=i(21302),l=i.n(r),s=i(53373),c=i.n(s),d=i(57372);const p=async(e,t)=>(await d.http.post("api/gateway/logic.llm.aiops_service/api/v1/llm/agent/flow/search",e,t)).data;var m=i(41030),u=i(99671),g=i(42965),h=i(97907),E=i(98343);const b=(0,n.forwardRef)(x);function x(e,t){let{activeId:i,actions:r,urlTemplate:s,onActionClick:d,onHistoryClick:b}=e;const x=(0,n.useRef)(null),[f,v]=(0,n.useState)(null),[y,k]=(0,n.useState)(),[w,T]=(0,n.useState)();(0,n.useEffect)((()=>{Promise.all([p({next_token:w},{interceptorParams:{ignoreLoadingBar:!0}}),new Promise((e=>setTimeout(e,500)))]).then((e=>{let[t]=e;v((e=>[...null!=e?e:[],...t.data])),k(t.next_token)})).catch((e=>{console.error("Error loading chat history:",e)}))}),[w]);const A=(0,n.useMemo)((()=>{const e=new Map,t=l()(),i=t.clone().startOf("day"),a=i.clone().subtract(1,"day"),n=i.clone().subtract(7,"days"),o=i.clone().subtract(30,"days"),r=+i/1e3,s=+a/1e3,c=+n/1e3,d=+o/1e3,p=+t.clone().startOf("year")/1e3;for(const t of null!=f?f:[]){let i;i=t.startTime>=r?(0,u.t)(u.K.TODAY):t.startTime>=s?(0,u.t)(u.K.YESTERDAY):t.startTime>=c?(0,u.t)(u.K.PREVIOUS_7_DAYS):t.startTime>=d?(0,u.t)(u.K.PREVIOUS_30_DAYS):t.startTime>=p?l()(1e3*t.startTime).format("MMMM"):l()(1e3*t.startTime).format("YYYY");let a=e.get(i);a||e.set(i,a={title:i,items:[]}),a.items.push(t)}return[...e.values()]}),[f]),[O,_]=(0,n.useState)(null),N=(0,n.useRef)(null);(0,n.useEffect)((()=>{const e=N.current,t=x.current;if(!e||!y||!t)return;const i=new IntersectionObserver((e=>{for(const t of e)t.isIntersecting&&T(y)}),{root:t});return i.observe(e),()=>{i.disconnect()}}),[y]);const S=(0,n.useRef)(0),C=(0,n.useCallback)((async()=>{try{const e=++S.current,t=await p({},{interceptorParams:{ignoreLoadingBar:!0}});if(e!==S.current)return;v((e=>{const i=null!=e?e:[],a=t.data,n=new Set(a.map((e=>e.id))),o=new Map(a.map((e=>[e.id,e])));let r=!1,l=!1,s=!0;for(const e of i){const t=o.get(e.id);if(!t)break;if(r=!0,l=s&&t!==a[0]||!(0,m.isEqual)(t,e),l)break;s=!1}return r?l?[...a,...i.filter((e=>!n.has(e.id)))]:e:(k(t.next_token),a)}))}catch(e){console.error("Error pulling chat history:",e)}}),[]);return(0,n.useImperativeHandle)(t,(()=>({pull:C})),[C]),f?o().createElement("div",{className:"history",ref:x},o().createElement("ul",null,A.map((e=>o().createElement("li",{key:e.title,className:"group"},o().createElement("div",{className:"group-title"},e.title),o().createElement("ul",{className:"items"},e.items.map((e=>o().createElement("li",{key:e.id},o().createElement(g.EM,(0,a.A)({className:c()("item",{"actions-active":e.id===O,active:e.id===i}),onClick:b},s?{url:(0,E.Q)(s,e)}:null),o().createElement("div",{className:"item-title",title:e.title},e.title),o().createElement(g.qu,{className:"actions",actions:r,onActionClick:t=>{d({action:t.detail,item:e})},onVisibleChange:t=>{_(t.detail?e.id:null)}}),!h.QB.includes(e.state)&&o().createElement("div",{className:"working"})))))))))),y&&o().createElement("div",{className:"load-more",ref:N},o().createElement(g.Bj,{lib:"antd",icon:"loading-3-quarters",spinning:!0}))):o().createElement("div",{className:"history"},o().createElement("div",{className:"loading"},o().createElement(g.Bj,{lib:"antd",theme:"outlined",icon:"loading-3-quarters",spinning:!0})))}},42965:(e,t,i)=>{i.d(t,{Bj:()=>n,EM:()=>o,JQ:()=>l,Py:()=>c,qb:()=>r,qu:()=>s});var a=i(11280);const n=(0,a.wrapBrick)("eo-icon"),o=(0,a.wrapBrick)("eo-link"),r=(0,a.wrapBrick)("eo-dropdown-actions",{onActionClick:"action.click",onVisibleChange:"visible.change"}),l=(0,a.wrapBrick)("eo-easyops-avatar"),s=(0,a.wrapBrick)("eo-mini-actions",{onActionClick:"action.click",onVisibleChange:"visible.change"}),c=(0,a.wrapBrick)("ai-portal.icon-button")},45646:(e,t,i)=>{i.d(t,{D:()=>E});var a=i(89575),n=i(18769),o=i.n(n),r=i(53373),l=i.n(r),s=i(57372);const c=async(e,t)=>(await s.http.get("api/gateway/logic.llm.aiops_service/api/v1/elevo/conversations",{...t,params:e})).data;var d=i(41030),p=i(99671),m=i(42965),u=i(97907),g=i(98343);const h={lib:"fa",icon:"plus"},E=(0,n.forwardRef)(b);function b(e,t){let{historyActiveId:i,historyActions:r,historyUrlTemplate:E,projectActiveId:b,projectUrlTemplate:x,projectActions:f,onActionClick:v,onHistoryClick:y,onProjectActionClick:k,onAddProject:w}=e;const T=(0,n.useRef)(null),[A,O]=(0,n.useState)(null),[_,N]=(0,n.useState)(!1),[S,C]=(0,n.useState)(!1),[I,R]=(0,n.useState)(null),[P,Y]=(0,n.useState)(!1),[U,D]=(0,n.useState)(),[j,M]=(0,n.useState)(),[B,V]=(0,n.useState)(!1),L=(0,n.useRef)(!0),[H,J]=(0,n.useState)([]),q=(0,n.useMemo)((()=>[...null!=r?r:[],{isDropdown:!0,text:(0,p.t)(p.K.MOVE_TO_PROJECT),disabled:!(null!=A&&A.length),items:null==A?void 0:A.map((e=>({event:"move",key:e.instanceId,text:e.name,project:e})))}]),[r,A]);(0,n.useEffect)((()=>{(async()=>{try{const e=await(async()=>(await s.http.get("api/gateway/logic.llm.aiops_service/api/v1/elevo/projects",{params:{page:1,page_size:3e3}})).data)();O(e.list)}catch(e){console.error("Error loading projects:",e),C(!0),O([])}})()}),[]),(0,n.useEffect)((()=>{Promise.all([c({token:j,limit:30,onlyOwner:!0,onlyUnrelatedProject:!0},{interceptorParams:{ignoreLoadingBar:!0}}),...L.current?[]:[new Promise((e=>setTimeout(e,500)))]]).then((e=>{let[t]=e;L.current=!1,R((e=>[...null!=e?e:[],...t.conversations])),D(t.nextToken)})).catch((e=>{console.error("Error loading chat history:",e),R([]),V(!0)}))}),[j]);const[z,G]=(0,n.useState)(null),K=(0,n.useRef)(null);(0,n.useEffect)((()=>{const e=K.current,t=T.current;if(!e||!U||!t||P)return;const i=new IntersectionObserver((e=>{for(const t of e)t.isIntersecting&&M(U)}),{root:t});return i.observe(e),()=>{i.disconnect()}}),[U,P]);const W=(0,n.useRef)(0),Q=(0,n.useCallback)((async()=>{try{const e=++W.current,t=await c({limit:30,onlyOwner:!0,onlyUnrelatedProject:!0},{interceptorParams:{ignoreLoadingBar:!0}});if(e!==W.current)return;R((e=>{const i=null!=e?e:[],a=t.conversations,n=new Set(a.map((e=>e.conversationId))),o=new Map(a.map((e=>[e.conversationId,e])));let r=!1,l=!1,s=!0;for(const e of i){const t=o.get(e.conversationId);if(!t)break;if(r=!0,l=s&&t!==a[0]||!(0,d.isEqual)(t,e),l)break;s=!1}return r?l?[...a,...i.filter((e=>!n.has(e.conversationId)))]:e:(D(t.nextToken),a)}))}catch(e){console.error("Error pulling chat history:",e)}}),[]);(0,n.useImperativeHandle)(t,(()=>({pull:Q,removeProject:e=>{O((t=>t?t.filter((t=>t.instanceId!==e)):t))},addProject:e=>{O((t=>t?[...t,e]:[e]))},moveConversation:e=>{J((t=>[...t,e]))}})),[Q]);const F=(0,n.useMemo)((()=>I&&I.length?I.filter((e=>!H.includes(e.conversationId))):I),[I,H]);return o().createElement("div",{className:"history",ref:T},o().createElement("div",{className:l()("section",{collapsed:_})},o().createElement("div",{className:"section-title"},o().createElement("div",{className:"section-label",onClick:()=>N((e=>!e))},(0,p.t)(p.K.PROJECTS),o().createElement(m.Bj,{lib:"fa",icon:"angle-down"})),o().createElement(m.Py,{icon:h,variant:"mini-light",tooltip:(0,p.t)(p.K.CREATE_PROJECT),onClick:w})),o().createElement("ul",{className:"items"},S?o().createElement("li",{className:"error"},"Failed to load project"):A?A.map((e=>o().createElement("li",{key:e.instanceId},o().createElement(m.EM,(0,a.A)({className:l()("item",{"actions-active":e.instanceId===z,active:e.instanceId===b}),onClick:y},x?{url:(0,g.Q)(x,e)}:null),o().createElement("div",{className:"item-title",title:e.name},e.name||(0,p.t)(p.K.UNNAMED)),o().createElement(m.qu,{className:"actions",actions:f,onActionClick:t=>{k({action:t.detail,project:e})},onVisibleChange:t=>{G(t.detail?e.instanceId:null)}}))))):o().createElement("li",{className:"loading"},o().createElement(m.Bj,{lib:"antd",theme:"outlined",icon:"loading-3-quarters",spinning:!0})))),o().createElement("div",{className:l()("section",{collapsed:P})},o().createElement("div",{className:"section-title"},o().createElement("div",{className:"section-label",onClick:()=>Y((e=>!e))},(0,p.t)(p.K.HISTORY),o().createElement(m.Bj,{lib:"fa",icon:"angle-down"}))),o().createElement("ul",{className:"items"},F?F.map((e=>o().createElement("li",{key:e.conversationId},o().createElement(m.EM,(0,a.A)({className:l()("item",{"actions-active":e.conversationId===z,active:e.conversationId===i}),onClick:y},E?{url:(0,g.Q)(E,e)}:null),o().createElement("div",{className:"item-title",title:e.title},e.title||(0,p.t)(p.K.UNTITLED)),o().createElement(m.qu,{className:"actions",actions:q,onActionClick:t=>{v({action:t.detail,item:e})},onVisibleChange:t=>{G(t.detail?e.conversationId:null)}}),!u.QB.includes(e.state)&&o().createElement("div",{className:"working"}))))):o().createElement("li",{className:"loading"},o().createElement(m.Bj,{lib:"antd",theme:"outlined",icon:"loading-3-quarters",spinning:!0})),B?o().createElement("li",{className:"error"},"Failed to load chat history"):null),!P&&U&&o().createElement("div",{className:"load-more",ref:K},o().createElement(m.Bj,{lib:"antd",icon:"loading-3-quarters",spinning:!0}))))}},48688:(e,t,i)=>{e.exports=i.p+"images/e47076cc.png"},61408:(e,t,i)=>{i.d(t,{A:()=>l});var a=i(36758),n=i.n(a),o=i(40935),r=i.n(o)()(n());r.push([e.id,':host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.sidebar{position:relative;z-index:1;width:260px;height:100%;background:rgba(246,247,249,0.4);border-radius:12px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:24px 12px 1px;display:flex;flex-direction:column;transition:transform 0.3s ease-in-out}.logo-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:30px;margin-left:4px}.logo-link::part(link){display:block}.logo{vertical-align:middle}.new-chat::part(link){display:flex;gap:0;align-items:center;color:var(--elevo-color-brand);font-size:14px;text-align:left;cursor:pointer}.sidebar .new-chat::part(link){background:#f0f4ff;border-radius:8px;border:1px solid #c9d7ff;padding:9px 13px;font-weight:500;margin-bottom:16px}.sidebar .new-chat::part(link):hover{background:rgba(201,215,255,0.5)}.new-chat-icon{font-size:16px;margin-right:5px}.footer{border-top:1px solid rgba(0,0,0,0.04);padding:9px 12px;margin:0 -12px}.dropdown{display:block}.account{background:none;border:none;border-radius:8px;padding:6px 10px;display:block;width:100%;text-align:left;cursor:pointer}.account:hover{background:rgba(0,0,0,0.04)}.alternative{position:fixed;top:8px;left:8px;padding:6px 10px 6px 8px;display:flex;align-items:center;opacity:0;z-index:1;transition:opacity 0.2s ease-in-out;background:rgba(255,255,255,0);border-radius:8px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.alternative .new-chat::part(link){padding:4px;margin-left:16px;font-size:12px}.alternative .new-chat::part(link):hover{color:#7891ff}.alternative .new-chat::part(link):active{color:#0911b3}.container{width:270px;padding:10px 0 10px 10px;height:100%;transition:width 0.3s ease-in-out,padding 0.3s ease-in-out}.container.collapsed{width:0;padding:10px 0;overflow:visible}.container.collapsed .sidebar{transform:translateX(-100%)}.container.collapsed .alternative{opacity:1}:host([bordered]) .sidebar{background:rgba(246,247,249,0.5);border:1px solid rgba(0,0,0,0.1);box-shadow:2px 3px 6px 0px rgba(184,187,205,0.2);padding:23px 11px 0}:host([behavior="drawer"]){z-index:1;width:0}:host(:not([behavior="drawer"])) .alternative .new-chat{display:none}.mask{position:fixed;top:0;right:0;bottom:0;left:0}.links{border-bottom:1px solid rgba(0,0,0,0.06);padding-bottom:16px;margin-bottom:16px}.link{display:block}.link + .link{margin-top:4px}.link::part(link){display:flex;gap:0;align-items:center;padding:7px 10px;border-radius:8px;color:#000}.link::part(link):hover{background:rgba(0,0,0,0.04)}.link .icon{font-size:16px;margin-right:10px}.link .title{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.history{flex:1;min-height:0;overflow-y:auto;margin:0 -12px;padding:0 12px}.history ul{list-style:none;margin:0;padding:0}.history .section + .section{margin-top:14px}.history .section-title{display:flex;align-items:center;justify-content:space-between;height:30px;margin-bottom:6px;padding:0 8px}.history .section-label{display:flex;align-items:center;height:24px;padding:0 8px;margin-left:-8px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500;font-size:12px;color:#8c8c8c;border-radius:8px}.history .section-label eo-icon{vertical-align:middle;margin-left:6px;transition:transform 0.2s ease-in-out}.history .section-label:hover{background:rgba(0,0,0,0.04)}.history .collapsed > ul{display:none}.history .collapsed .section-label eo-icon{transform:rotate(-90deg)}.history .error,.history .loading{display:flex;align-items:center;height:36px;padding:0 8px}.history .loading{justify-content:center}.history .error{color:var(--color-error)}.history .group + .group{margin-top:15px}.history .group-title{font-weight:500;font-size:12px;color:#000;padding:8px;height:36px;line-height:20px}.history .item{display:block}.history .item::part(link){display:flex;align-items:center;padding:0 8px;height:36px;border-radius:8px;color:#000}.history .item.active::part(link){background:rgba(0,0,0,0.06)}.history .item.actions-active::part(link),.history .item::part(link):hover{background:rgba(0,0,0,0.04)}.history .item-title{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.history .actions{cursor:auto}.history .item:not(:hover):not(.actions-active) .actions{display:none}.history .working{width:8px;height:8px;border-radius:8px;background:var(--elevo-color-brand);margin:0 7px}.history .item.actions-active .working,.history .item:hover .working,.history .item.active .working{display:none}.history .load-more{display:flex;justify-content:center;align-items:center;height:36px}',""]);const l=r.toString()},99671:(e,t,i)=>{i.d(t,{I:()=>s,K:()=>n,NS:()=>l,t:()=>c});var a=i(87117);let n=function(e){return e.NEW_CHAT="NEW_CHAT",e.LOGOUT="LOGOUT",e.TODAY="TODAY",e.YESTERDAY="YESTERDAY",e.PREVIOUS_7_DAYS="PREVIOUS_7_DAYS",e.PREVIOUS_30_DAYS="PREVIOUS_30_DAYS",e.SWITCH_LANGUAGE="SWITCH_LANGUAGE",e.PROJECTS="PROJECTS",e.HISTORY="HISTORY",e.CREATE_PROJECT="CREATE_PROJECT",e.MOVE_TO_PROJECT="MOVE_TO_PROJECT",e.UNTITLED="UNTITLED",e.UNNAMED="UNNAMED",e}({});const o={[n.NEW_CHAT]:"New chat",[n.LOGOUT]:"Logout",[n.TODAY]:"Today",[n.YESTERDAY]:"Yesterday",[n.PREVIOUS_7_DAYS]:"Previous 7 days",[n.PREVIOUS_30_DAYS]:"Previous 30 days",[n.SWITCH_LANGUAGE]:"中文",[n.PROJECTS]:"Project management",[n.HISTORY]:"Chat history",[n.CREATE_PROJECT]:"Create project",[n.MOVE_TO_PROJECT]:"Move to project",[n.UNTITLED]:"Untitled",[n.UNNAMED]:"Unnamed"},r={[n.NEW_CHAT]:"新对话",[n.LOGOUT]:"登出",[n.TODAY]:"今天",[n.YESTERDAY]:"昨天",[n.PREVIOUS_7_DAYS]:"过去7天",[n.PREVIOUS_30_DAYS]:"过去30天",[n.SWITCH_LANGUAGE]:"English",[n.PROJECTS]:"项目管理",[n.HISTORY]:"历史对话",[n.CREATE_PROJECT]:"创建项目",[n.MOVE_TO_PROJECT]:"移动到项目",[n.UNTITLED]:"无标题",[n.UNNAMED]:"未命名"},l="bricks/ai-portal/elevo-sidebar",s={en:o,zh:r},c=a.i18n.getFixedT(null,l)}}]);
3
- //# sourceMappingURL=8616.00ec7d55.js.map
1
+ /*! For license information please see 8616.ceae4e7b.js.LICENSE.txt */
2
+ "use strict";(globalThis.webpackChunk_next_bricks_ai_portal=globalThis.webpackChunk_next_bricks_ai_portal||[]).push([[8616],{26785:(e,t,i)=>{i.d(t,{Y:()=>f});var a=i(89575),n=i(18769),o=i.n(n),r=i(21302),l=i.n(r),s=i(53373),c=i.n(s),d=i(57372);const p=async(e,t)=>(await d.http.post("api/gateway/logic.llm.aiops_service/api/v1/llm/agent/flow/search",e,t)).data;var m=i(41030),u=i(99671),g=i(42965),h=i(97907),E=i(98343);const f=(0,n.forwardRef)(b);function b(e,t){let{activeId:i,actions:r,urlTemplate:s,onActionClick:d,onHistoryClick:f}=e;const b=(0,n.useRef)(null),[v,x]=(0,n.useState)(null),[y,k]=(0,n.useState)(),[w,T]=(0,n.useState)();(0,n.useEffect)((()=>{Promise.all([p({next_token:w},{interceptorParams:{ignoreLoadingBar:!0}}),new Promise((e=>setTimeout(e,500)))]).then((e=>{let[t]=e;x((e=>[...null!=e?e:[],...t.data])),k(t.next_token)})).catch((e=>{console.error("Error loading chat history:",e)}))}),[w]);const A=(0,n.useMemo)((()=>{const e=new Map,t=l()(),i=t.clone().startOf("day"),a=i.clone().subtract(1,"day"),n=i.clone().subtract(7,"days"),o=i.clone().subtract(30,"days"),r=+i/1e3,s=+a/1e3,c=+n/1e3,d=+o/1e3,p=+t.clone().startOf("year")/1e3;for(const t of null!=v?v:[]){let i;i=t.startTime>=r?(0,u.t)(u.K.TODAY):t.startTime>=s?(0,u.t)(u.K.YESTERDAY):t.startTime>=c?(0,u.t)(u.K.PREVIOUS_7_DAYS):t.startTime>=d?(0,u.t)(u.K.PREVIOUS_30_DAYS):t.startTime>=p?l()(1e3*t.startTime).format("MMMM"):l()(1e3*t.startTime).format("YYYY");let a=e.get(i);a||e.set(i,a={title:i,items:[]}),a.items.push(t)}return[...e.values()]}),[v]),[O,_]=(0,n.useState)(null),N=(0,n.useRef)(null);(0,n.useEffect)((()=>{const e=N.current,t=b.current;if(!e||!y||!t)return;const i=new IntersectionObserver((e=>{for(const t of e)t.isIntersecting&&T(y)}),{root:t});return i.observe(e),()=>{i.disconnect()}}),[y]);const S=(0,n.useRef)(0),C=(0,n.useCallback)((async()=>{try{const e=++S.current,t=await p({},{interceptorParams:{ignoreLoadingBar:!0}});if(e!==S.current)return;x((e=>{const i=null!=e?e:[],a=t.data,n=new Set(a.map((e=>e.id))),o=new Map(a.map((e=>[e.id,e])));let r=!1,l=!1,s=!0;for(const e of i){const t=o.get(e.id);if(!t)break;if(r=!0,l=s&&t!==a[0]||!(0,m.isEqual)(t,e),l)break;s=!1}return r?l?[...a,...i.filter((e=>!n.has(e.id)))]:e:(k(t.next_token),a)}))}catch(e){console.error("Error pulling chat history:",e)}}),[]);return(0,n.useImperativeHandle)(t,(()=>({pull:C})),[C]),v?o().createElement("div",{className:"history",ref:b},o().createElement("ul",null,A.map((e=>o().createElement("li",{key:e.title,className:"group"},o().createElement("div",{className:"group-title"},e.title),o().createElement("ul",{className:"items"},e.items.map((e=>o().createElement("li",{key:e.id},o().createElement(g.EM,(0,a.A)({className:c()("item",{"actions-active":e.id===O,active:e.id===i}),onClick:f},s?{url:(0,E.Q)(s,e)}:null),o().createElement("div",{className:"item-title",title:e.title},e.title),o().createElement(g.qu,{className:"actions",actions:r,onActionClick:t=>{d({action:t.detail,item:e})},onVisibleChange:t=>{_(t.detail?e.id:null)}}),!h.QB.includes(e.state)&&o().createElement("div",{className:"working"})))))))))),y&&o().createElement("div",{className:"load-more",ref:N},o().createElement(g.Bj,{lib:"antd",icon:"loading-3-quarters",spinning:!0}))):o().createElement("div",{className:"history"},o().createElement("div",{className:"loading"},o().createElement(g.Bj,{lib:"antd",theme:"outlined",icon:"loading-3-quarters",spinning:!0})))}},42965:(e,t,i)=>{i.d(t,{Bj:()=>n,EM:()=>o,JQ:()=>l,Py:()=>c,qb:()=>r,qu:()=>s});var a=i(11280);const n=(0,a.wrapBrick)("eo-icon"),o=(0,a.wrapBrick)("eo-link"),r=(0,a.wrapBrick)("eo-dropdown-actions",{onActionClick:"action.click",onVisibleChange:"visible.change"}),l=(0,a.wrapBrick)("eo-easyops-avatar"),s=(0,a.wrapBrick)("eo-mini-actions",{onActionClick:"action.click",onVisibleChange:"visible.change"}),c=(0,a.wrapBrick)("ai-portal.icon-button")},45646:(e,t,i)=>{i.d(t,{D:()=>E});var a=i(89575),n=i(18769),o=i.n(n),r=i(53373),l=i.n(r),s=i(57372);const c=async(e,t)=>(await s.http.get("api/gateway/logic.llm.aiops_service/api/v1/elevo/conversations",{...t,params:e})).data;var d=i(41030),p=i(99671),m=i(42965),u=i(97907),g=i(98343);const h={lib:"fa",icon:"plus"},E=(0,n.forwardRef)(f);function f(e,t){let{historyActiveId:i,historyActions:r,historyUrlTemplate:E,projectActiveId:f,projectUrlTemplate:b,projectActions:v,onActionClick:x,onHistoryClick:y,onProjectActionClick:k,onAddProject:w}=e;const T=(0,n.useRef)(null),[A,O]=(0,n.useState)(null),[_,N]=(0,n.useState)(!1),[S,C]=(0,n.useState)(!1),[I,R]=(0,n.useState)(null),[P,Y]=(0,n.useState)(!1),[U,D]=(0,n.useState)(),[j,M]=(0,n.useState)(),[B,V]=(0,n.useState)(!1),L=(0,n.useRef)(!0),[H,J]=(0,n.useState)([]),q=(0,n.useMemo)((()=>[...null!=r?r:[],{isDropdown:!0,text:(0,p.t)(p.K.MOVE_TO_PROJECT),disabled:!(null!=A&&A.length),items:null==A?void 0:A.map((e=>({event:"move",key:e.instanceId,text:e.name,project:e})))}]),[r,A]);(0,n.useEffect)((()=>{(async()=>{try{const e=await(async()=>(await s.http.get("api/gateway/logic.llm.aiops_service/api/v1/elevo/projects",{params:{page:1,page_size:3e3}})).data)();O(e.list)}catch(e){console.error("Error loading projects:",e),C(!0),O([])}})()}),[]),(0,n.useEffect)((()=>{Promise.all([c({token:j,limit:30,onlyOwner:!0,onlyUnrelatedProject:!0},{interceptorParams:{ignoreLoadingBar:!0}}),...L.current?[]:[new Promise((e=>setTimeout(e,500)))]]).then((e=>{let[t]=e;L.current=!1,R((e=>[...null!=e?e:[],...t.conversations])),D(t.nextToken)})).catch((e=>{console.error("Error loading chat history:",e),R([]),V(!0)}))}),[j]);const[z,G]=(0,n.useState)(null),K=(0,n.useRef)(null);(0,n.useEffect)((()=>{const e=K.current,t=T.current;if(!e||!U||!t||P)return;const i=new IntersectionObserver((e=>{for(const t of e)t.isIntersecting&&M(U)}),{root:t});return i.observe(e),()=>{i.disconnect()}}),[U,P]);const W=(0,n.useRef)(0),Q=(0,n.useCallback)((async()=>{try{const e=++W.current,t=await c({limit:30,onlyOwner:!0,onlyUnrelatedProject:!0},{interceptorParams:{ignoreLoadingBar:!0}});if(e!==W.current)return;R((e=>{const i=null!=e?e:[],a=t.conversations,n=new Set(a.map((e=>e.conversationId))),o=new Map(a.map((e=>[e.conversationId,e])));let r=!1,l=!1,s=!0;for(const e of i){const t=o.get(e.conversationId);if(!t)break;if(r=!0,l=s&&t!==a[0]||!(0,d.isEqual)(t,e),l)break;s=!1}return r?l?[...a,...i.filter((e=>!n.has(e.conversationId)))]:e:(D(t.nextToken),a)}))}catch(e){console.error("Error pulling chat history:",e)}}),[]);(0,n.useImperativeHandle)(t,(()=>({pull:Q,removeProject:e=>{O((t=>t?t.filter((t=>t.instanceId!==e)):t))},addProject:e=>{O((t=>t?[...t,e]:[e]))},moveConversation:e=>{J((t=>[...t,e]))}})),[Q]);const F=(0,n.useMemo)((()=>I&&I.length?I.filter((e=>!H.includes(e.conversationId))):I),[I,H]);return o().createElement("div",{className:"history",ref:T},o().createElement("div",{className:l()("section",{collapsed:_})},o().createElement("div",{className:"section-title"},o().createElement("div",{className:"section-label",onClick:()=>N((e=>!e))},(0,p.t)(p.K.PROJECTS),o().createElement(m.Bj,{lib:"fa",icon:"angle-down"})),o().createElement(m.Py,{icon:h,variant:"mini-light",tooltip:(0,p.t)(p.K.CREATE_PROJECT),onClick:w})),o().createElement("ul",{className:"items"},S?o().createElement("li",{className:"error"},"Failed to load project"):A?A.map((e=>o().createElement("li",{key:e.instanceId},o().createElement(m.EM,(0,a.A)({className:l()("item",{"actions-active":e.instanceId===z,active:e.instanceId===f}),onClick:y},b?{url:(0,g.Q)(b,e)}:null),o().createElement("div",{className:"item-title",title:e.name},e.name||(0,p.t)(p.K.UNNAMED)),o().createElement(m.qu,{className:"actions",actions:v,onActionClick:t=>{k({action:t.detail,project:e})},onVisibleChange:t=>{G(t.detail?e.instanceId:null)}}))))):o().createElement("li",{className:"loading"},o().createElement(m.Bj,{lib:"antd",theme:"outlined",icon:"loading-3-quarters",spinning:!0})))),o().createElement("div",{className:l()("section",{collapsed:P})},o().createElement("div",{className:"section-title"},o().createElement("div",{className:"section-label",onClick:()=>Y((e=>!e))},(0,p.t)(p.K.HISTORY),o().createElement(m.Bj,{lib:"fa",icon:"angle-down"}))),o().createElement("ul",{className:"items"},F?F.map((e=>o().createElement("li",{key:e.conversationId},o().createElement(m.EM,(0,a.A)({className:l()("item",{"actions-active":e.conversationId===z,active:e.conversationId===i}),onClick:y},E?{url:(0,g.Q)(E,e)}:null),o().createElement("div",{className:"item-title",title:e.title},e.title||(0,p.t)(p.K.UNTITLED)),o().createElement(m.qu,{className:"actions",actions:q,onActionClick:t=>{x({action:t.detail,item:e})},onVisibleChange:t=>{G(t.detail?e.conversationId:null)}}),!u.QB.includes(e.state)&&o().createElement("div",{className:"working"}))))):o().createElement("li",{className:"loading"},o().createElement(m.Bj,{lib:"antd",theme:"outlined",icon:"loading-3-quarters",spinning:!0})),B?o().createElement("li",{className:"error"},"Failed to load chat history"):null),!P&&U&&o().createElement("div",{className:"load-more",ref:K},o().createElement(m.Bj,{lib:"antd",icon:"loading-3-quarters",spinning:!0}))))}},48688:(e,t,i)=>{e.exports=i.p+"images/e47076cc.png"},61408:(e,t,i)=>{i.d(t,{A:()=>l});var a=i(36758),n=i.n(a),o=i(40935),r=i.n(o)()(n());r.push([e.id,':host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.sidebar{position:relative;z-index:1;width:260px;height:100%;background:rgba(246,247,249,0.5);border:1px solid rgba(255,255,255,0.3);border-radius:12px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:23px 11px 0;display:flex;flex-direction:column;transition:transform 0.3s ease-in-out}.logo-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:30px;margin-left:4px}.logo-link::part(link){display:block}.logo{vertical-align:middle}.new-chat::part(link){display:flex;gap:0;align-items:center;color:var(--elevo-color-brand);font-size:14px;text-align:left;cursor:pointer}.sidebar .new-chat::part(link){background:#f0f4ff;border-radius:8px;border:1px solid #c9d7ff;padding:9px 13px;font-weight:500;margin-bottom:16px}.sidebar .new-chat::part(link):hover{background:rgba(201,215,255,0.5)}.new-chat-icon{font-size:16px;margin-right:5px}.footer{border-top:1px solid rgba(0,0,0,0.04);padding:9px 12px;margin:0 -12px}.dropdown{display:block}.account{background:none;border:none;border-radius:8px;padding:6px 10px;display:block;width:100%;text-align:left;cursor:pointer}.account:hover{background:rgba(0,0,0,0.04)}.alternative{position:fixed;top:8px;left:8px;padding:6px 10px 6px 8px;display:flex;align-items:center;opacity:0;z-index:1;transition:opacity 0.2s ease-in-out;background:rgba(255,255,255,0);border-radius:8px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.alternative .new-chat::part(link){padding:4px;margin-left:16px;font-size:12px}.alternative .new-chat::part(link):hover{color:#7891ff}.alternative .new-chat::part(link):active{color:#0911b3}.container{width:270px;padding:10px 0 10px 10px;height:100%;transition:width 0.3s ease-in-out,padding 0.3s ease-in-out}.container.collapsed{width:0;padding:10px 0;overflow:visible}.container.collapsed .sidebar{transform:translateX(-100%)}.container.collapsed .alternative{opacity:1}:host([behavior="drawer"]){z-index:1;width:0}:host(:not([behavior="drawer"])) .alternative .new-chat{display:none}.mask{position:fixed;top:0;right:0;bottom:0;left:0}.links{border-bottom:1px solid rgba(0,0,0,0.06);padding-bottom:16px;margin-bottom:16px}.link{display:block}.link + .link{margin-top:4px}.link::part(link){display:flex;gap:0;align-items:center;padding:7px 10px;border-radius:8px;color:#000}.link::part(link):hover{background:rgba(0,0,0,0.04)}.link .icon{font-size:16px;margin-right:10px}.link .title{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.history{flex:1;min-height:0;overflow-y:auto;margin:0 -12px;padding:0 12px}.history ul{list-style:none;margin:0;padding:0}.history .section + .section{margin-top:14px}.history .section-title{display:flex;align-items:center;justify-content:space-between;height:30px;margin-bottom:6px;padding:0 8px}.history .section-label{display:flex;align-items:center;height:24px;padding:0 8px;margin-left:-8px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500;font-size:12px;color:#8c8c8c;border-radius:8px}.history .section-label eo-icon{vertical-align:middle;margin-left:6px;transition:transform 0.2s ease-in-out}.history .section-label:hover{background:rgba(0,0,0,0.04)}.history .collapsed > ul{display:none}.history .collapsed .section-label eo-icon{transform:rotate(-90deg)}.history .error,.history .loading{display:flex;align-items:center;height:36px;padding:0 8px}.history .loading{justify-content:center}.history .error{color:var(--color-error)}.history .group + .group{margin-top:15px}.history .group-title{font-weight:500;font-size:12px;color:#000;padding:8px;height:36px;line-height:20px}.history .item{display:block}.history .item::part(link){display:flex;align-items:center;padding:0 8px;height:36px;border-radius:8px;color:#000}.history .item.active::part(link){background:rgba(0,0,0,0.06)}.history .item.actions-active::part(link),.history .item::part(link):hover{background:rgba(0,0,0,0.04)}.history .item-title{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.history .actions{cursor:auto}.history .item:not(:hover):not(.actions-active) .actions{display:none}.history .working{width:8px;height:8px;border-radius:8px;background:var(--elevo-color-brand);margin:0 7px}.history .item.actions-active .working,.history .item:hover .working,.history .item.active .working{display:none}.history .load-more{display:flex;justify-content:center;align-items:center;height:36px}',""]);const l=r.toString()},99671:(e,t,i)=>{i.d(t,{I:()=>s,K:()=>n,NS:()=>l,t:()=>c});var a=i(87117);let n=function(e){return e.NEW_CHAT="NEW_CHAT",e.LOGOUT="LOGOUT",e.TODAY="TODAY",e.YESTERDAY="YESTERDAY",e.PREVIOUS_7_DAYS="PREVIOUS_7_DAYS",e.PREVIOUS_30_DAYS="PREVIOUS_30_DAYS",e.SWITCH_LANGUAGE="SWITCH_LANGUAGE",e.PROJECTS="PROJECTS",e.HISTORY="HISTORY",e.CREATE_PROJECT="CREATE_PROJECT",e.MOVE_TO_PROJECT="MOVE_TO_PROJECT",e.UNTITLED="UNTITLED",e.UNNAMED="UNNAMED",e}({});const o={[n.NEW_CHAT]:"New chat",[n.LOGOUT]:"Logout",[n.TODAY]:"Today",[n.YESTERDAY]:"Yesterday",[n.PREVIOUS_7_DAYS]:"Previous 7 days",[n.PREVIOUS_30_DAYS]:"Previous 30 days",[n.SWITCH_LANGUAGE]:"中文",[n.PROJECTS]:"Project management",[n.HISTORY]:"Chat history",[n.CREATE_PROJECT]:"Create project",[n.MOVE_TO_PROJECT]:"Move to project",[n.UNTITLED]:"Untitled",[n.UNNAMED]:"Unnamed"},r={[n.NEW_CHAT]:"新对话",[n.LOGOUT]:"登出",[n.TODAY]:"今天",[n.YESTERDAY]:"昨天",[n.PREVIOUS_7_DAYS]:"过去7天",[n.PREVIOUS_30_DAYS]:"过去30天",[n.SWITCH_LANGUAGE]:"English",[n.PROJECTS]:"项目管理",[n.HISTORY]:"历史对话",[n.CREATE_PROJECT]:"创建项目",[n.MOVE_TO_PROJECT]:"移动到项目",[n.UNTITLED]:"无标题",[n.UNNAMED]:"未命名"},l="bricks/ai-portal/elevo-sidebar",s={en:o,zh:r},c=a.i18n.getFixedT(null,l)}}]);
3
+ //# sourceMappingURL=8616.ceae4e7b.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/8616.00ec7d55.js","mappings":"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","sources":["webpack:///../../node_modules/@next-api-sdk/llm-sdk/dist/esm/api/llm/agent_flow/searchTaskForAgentFlow.js","webpack:///./src/elevo-sidebar/LegacyChatHistory.tsx","webpack:///./src/elevo-sidebar/bricks.ts","webpack:///../../node_modules/@next-api-sdk/llm-sdk/dist/esm/api/llm/elevo/getElevoProjects.js","webpack:///../../node_modules/@next-api-sdk/llm-sdk/dist/esm/api/llm/elevo/listElevoConversations.js","webpack:///./src/elevo-sidebar/ChatHistory.tsx","webpack:///./src/elevo-sidebar/styles.shadow.css","webpack:///./src/elevo-sidebar/i18n.ts"],"sourcesContent":["import { http } from \"@next-core/http\";\n/**\n * @description 分页查询agent flow, 默认只查询最近三个页的数据\n * @endpoint POST /api/v1/llm/agent/flow/search\n */\nexport const AgentFlowApi_searchTaskForAgentFlow = async (data, options) => /**! @contract easyops.api.llm.agent_flow.SearchTaskForAgentFlow@1.0.0 */(await http.post(\"api/gateway/logic.llm.aiops_service/api/v1/llm/agent/flow/search\", data, options)).data;\n//# sourceMappingURL=searchTaskForAgentFlow.js.map","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport moment from \"moment\";\nimport classNames from \"classnames\";\nimport { AgentFlowApi_searchTaskForAgentFlow } from \"@next-api-sdk/llm-sdk\";\nimport type {\n ActionType,\n SimpleActionType,\n} from \"@next-bricks/basic/mini-actions\";\nimport { isEqual } from \"lodash\";\nimport { K, t } from \"./i18n.js\";\nimport type { TaskState } from \"../cruise-canvas/interfaces.js\";\nimport { WrappedIcon, WrappedLink, WrappedMiniActions } from \"./bricks.js\";\nimport { DONE_STATES } from \"../shared/constants.js\";\nimport type { ChatHistoryRef } from \"./ChatHistory.js\";\nimport { parseTemplate } from \"../shared/parseTemplate.js\";\n\ninterface LegacyHistoryItem {\n id: string;\n title: string;\n startTime: number;\n state?: TaskState;\n}\n\ninterface LegacyGroupedHistory {\n title: string;\n items: LegacyHistoryItem[];\n}\n\nexport interface LegacyActionClickDetail {\n action: SimpleActionType;\n item: LegacyHistoryItem;\n}\n\nexport interface LegacyChatHistoryProps {\n activeId?: string;\n urlTemplate?: string;\n actions?: ActionType[];\n onActionClick: (detail: LegacyActionClickDetail) => void;\n onHistoryClick: () => void;\n}\n\nexport const LegacyChatHistory = forwardRef(LowLevelChatHistory);\n\nexport function LowLevelChatHistory(\n {\n activeId,\n actions,\n urlTemplate,\n onActionClick,\n onHistoryClick,\n }: LegacyChatHistoryProps,\n ref: React.Ref<ChatHistoryRef>\n) {\n const rootRef = useRef<HTMLDivElement | null>(null);\n const [list, setList] = useState<LegacyHistoryItem[] | null>(null);\n const [nextToken, setNextToken] = useState<string | undefined>();\n const [loadNextToken, setLoadNextToken] = useState<string | undefined>();\n\n useEffect(() => {\n Promise.all([\n AgentFlowApi_searchTaskForAgentFlow(\n { next_token: loadNextToken },\n {\n interceptorParams: {\n ignoreLoadingBar: true,\n },\n }\n ),\n new Promise((resolve) => setTimeout(resolve, 500)), // Force a minimum delay\n ])\n .then(([data]) => {\n setList((prev) => [\n ...(prev ?? []),\n ...(data.data as LegacyHistoryItem[]),\n ]);\n setNextToken(data.next_token);\n })\n .catch((error) => {\n if (process.env.NODE_ENV !== \"test\") {\n // eslint-disable-next-line no-console\n console.error(\"Error loading chat history:\", error);\n }\n });\n }, [loadNextToken]);\n\n const groups = useMemo(() => {\n const groupMap = new Map<string, LegacyGroupedHistory>();\n // Group history by\n // - today\n // - yesterday\n // - previous 7 days\n // - previous 30 days\n // - each month this year\n // - each year before.\n const now = moment();\n const startOfDay = now.clone().startOf(\"day\");\n const yesterday = startOfDay.clone().subtract(1, \"day\");\n const sevenDaysAgo = startOfDay.clone().subtract(7, \"days\");\n const thirtyDaysAgo = startOfDay.clone().subtract(30, \"days\");\n const thisYear = now.clone().startOf(\"year\");\n\n const timestamps = {\n startOfDay: +startOfDay / 1000,\n yesterday: +yesterday / 1000,\n sevenDaysAgo: +sevenDaysAgo / 1000,\n thirtyDaysAgo: +thirtyDaysAgo / 1000,\n thisYear: +thisYear / 1000,\n };\n for (const item of list ?? []) {\n let groupKey: string;\n if (item.startTime >= timestamps.startOfDay) {\n groupKey = t(K.TODAY);\n } else if (item.startTime >= timestamps.yesterday) {\n groupKey = t(K.YESTERDAY);\n } else if (item.startTime >= timestamps.sevenDaysAgo) {\n groupKey = t(K.PREVIOUS_7_DAYS);\n } else if (item.startTime >= timestamps.thirtyDaysAgo) {\n groupKey = t(K.PREVIOUS_30_DAYS);\n } else if (item.startTime >= timestamps.thisYear) {\n groupKey = moment(item.startTime * 1000).format(\"MMMM\");\n } else {\n groupKey = moment(item.startTime * 1000).format(\"YYYY\");\n }\n let group = groupMap.get(groupKey);\n if (!group) {\n groupMap.set(groupKey, (group = { title: groupKey, items: [] }));\n }\n group.items.push(item);\n }\n\n return [...groupMap.values()];\n }, [list]);\n\n const [actionsVisible, setActionsVisible] = useState<string | null>(null);\n\n const nextRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n const next = nextRef.current;\n const root = rootRef.current;\n if (!next || !nextToken || !root) {\n return;\n }\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n setLoadNextToken(nextToken);\n }\n }\n },\n { root }\n );\n observer.observe(next);\n return () => {\n observer.disconnect();\n };\n }, [nextToken]);\n\n const pullIdRef = useRef(0);\n\n const pull = useCallback(async () => {\n try {\n const pullId = ++pullIdRef.current;\n const tempList = await AgentFlowApi_searchTaskForAgentFlow(\n {},\n {\n interceptorParams: {\n ignoreLoadingBar: true,\n },\n }\n );\n if (pullId !== pullIdRef.current) {\n // Ignore this pull if a newer one has been triggered\n return;\n }\n setList((prev) => {\n const prevList = prev ?? [];\n const newList = tempList.data as LegacyHistoryItem[];\n const newIds = new Set(newList.map((item) => item.id));\n const newItemsMap = new Map(newList.map((item) => [item.id, item]));\n\n let foundIntersection = false;\n let foundChanged = false;\n let isFirst = true;\n for (const item of prevList) {\n const newItem = newItemsMap.get(item.id);\n if (newItem) {\n foundIntersection = true;\n foundChanged =\n (isFirst && newItem !== newList[0]) || !isEqual(newItem, item);\n if (foundChanged) {\n break;\n }\n } else {\n break;\n }\n isFirst = false;\n }\n\n if (!foundIntersection) {\n setNextToken(tempList.next_token);\n return newList;\n }\n\n if (foundChanged) {\n return [\n ...newList,\n ...prevList.filter((item) => !newIds.has(item.id)),\n ];\n }\n\n return prev;\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Error pulling chat history:\", error);\n }\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n pull,\n }),\n [pull]\n );\n\n if (!list) {\n return (\n <div className=\"history\">\n <div className=\"loading\">\n <WrappedIcon\n lib=\"antd\"\n theme=\"outlined\"\n icon=\"loading-3-quarters\"\n spinning\n />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"history\" ref={rootRef}>\n <ul>\n {groups.map((group) => (\n <li key={group.title} className=\"group\">\n <div className=\"group-title\">{group.title}</div>\n <ul className=\"items\">\n {group.items.map((item) => (\n <li key={item.id}>\n <WrappedLink\n className={classNames(\"item\", {\n \"actions-active\": item.id === actionsVisible,\n active: item.id === activeId,\n })}\n onClick={onHistoryClick}\n {...(urlTemplate\n ? { url: parseTemplate(urlTemplate, item) }\n : null)}\n >\n <div className=\"item-title\" title={item.title}>\n {item.title}\n </div>\n <WrappedMiniActions\n className=\"actions\"\n actions={actions}\n onActionClick={(e) => {\n onActionClick({ action: e.detail, item });\n }}\n onVisibleChange={(e) => {\n setActionsVisible(e.detail ? item.id : null);\n }}\n />\n {!DONE_STATES.includes(item.state!) && (\n <div className=\"working\"></div>\n )}\n </WrappedLink>\n </li>\n ))}\n </ul>\n </li>\n ))}\n </ul>\n {nextToken && (\n <div className=\"load-more\" ref={nextRef}>\n <WrappedIcon lib=\"antd\" icon=\"loading-3-quarters\" spinning />\n </div>\n )}\n </div>\n );\n}\n","import { 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\";\nimport type {\n EoDropdownActions,\n DropdownActionsProps,\n DropdownActionsEvents,\n DropdownActionsEventsMapping,\n} from \"@next-bricks/basic/dropdown-actions\";\nimport type {\n EoEasyopsAvatar,\n EoEasyopsAvatarProps,\n} from \"@next-bricks/basic/easyops-avatar\";\nimport type {\n EoMiniActions,\n EoMiniActionsEvents,\n EoMiniActionsEventsMapping,\n EoMiniActionsProps,\n} from \"@next-bricks/basic/mini-actions\";\nimport type { IconButton, IconButtonProps } from \"../icon-button\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nexport const WrappedDropdownActions = wrapBrick<\n EoDropdownActions,\n DropdownActionsProps,\n DropdownActionsEvents,\n DropdownActionsEventsMapping\n>(\"eo-dropdown-actions\", {\n onActionClick: \"action.click\",\n onVisibleChange: \"visible.change\",\n});\nexport const WrappedEasyopsAvatar = wrapBrick<\n EoEasyopsAvatar,\n EoEasyopsAvatarProps\n>(\"eo-easyops-avatar\");\nexport const WrappedMiniActions = wrapBrick<\n EoMiniActions,\n EoMiniActionsProps,\n EoMiniActionsEvents,\n EoMiniActionsEventsMapping\n>(\"eo-mini-actions\", {\n onActionClick: \"action.click\",\n onVisibleChange: \"visible.change\",\n});\nexport const WrappedIconButton = wrapBrick<IconButton, IconButtonProps>(\n \"ai-portal.icon-button\"\n);\n","import { http } from \"@next-core/http\";\n/**\n * @description 获取elevo项目列表\n * @endpoint list /api/v1/elevo/projects\n */\nexport const ElevoApi_getElevoProjects = async (params, options) => /**! @contract easyops.api.llm.elevo.GetElevoProjects@1.0.0 */(await http.get(\"api/gateway/logic.llm.aiops_service/api/v1/elevo/projects\", {\n ...options,\n params\n})).data;\n//# sourceMappingURL=getElevoProjects.js.map","import { http } from \"@next-core/http\";\n/**\n * @description 获取elevo会话列表\n * @endpoint GET /api/v1/elevo/conversations\n */\nexport const ElevoApi_listElevoConversations = async (params, options) => /**! @contract easyops.api.llm.elevo.ListElevoConversations@1.0.0 */(await http.get(\"api/gateway/logic.llm.aiops_service/api/v1/elevo/conversations\", {\n ...options,\n params\n})).data;\n//# sourceMappingURL=listElevoConversations.js.map","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport classNames from \"classnames\";\nimport {\n ElevoApi_listElevoConversations,\n ElevoApi_getElevoProjects,\n type ElevoApi_ListElevoConversationsRequestParams,\n} from \"@next-api-sdk/llm-sdk\";\nimport type {\n ActionType,\n SimpleActionType,\n} from \"@next-bricks/basic/mini-actions\";\nimport type { GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport { isEqual } from \"lodash\";\nimport { K, t } from \"./i18n.js\";\nimport type { TaskState } from \"../cruise-canvas/interfaces.js\";\nimport {\n WrappedIcon,\n WrappedLink,\n WrappedMiniActions,\n WrappedIconButton,\n} from \"./bricks.js\";\nimport { DONE_STATES } from \"../shared/constants.js\";\nimport { parseTemplate } from \"../shared/parseTemplate.js\";\n\nconst ADD_ICON: GeneralIconProps = {\n lib: \"fa\",\n icon: \"plus\",\n};\n\nexport interface HistoryItem {\n conversationId: string;\n title: string;\n startTime: number;\n state?: TaskState;\n}\n\nexport interface GroupedHistory {\n title: string;\n items: HistoryItem[];\n}\n\nexport interface ActionClickDetail {\n action: SimpleActionType;\n item: HistoryItem;\n project?: Project;\n}\n\nexport interface ProjectActionClickDetail {\n action: SimpleActionType;\n project: Project;\n}\n\nexport interface Project {\n /** 实例ID */\n instanceId: string;\n /** 项目名称 */\n name: string;\n /** 项目描述 */\n description: string;\n /** 状态 */\n state: \"active\" | \"inactive\";\n /** 默认数字人ID */\n defaultAiEmployeeId: string;\n /** 创建者 */\n creator: string;\n /** 创建时间 */\n ctime: string;\n /** 修改时间 */\n mtime: string;\n /** 修改者 */\n modifier: string;\n}\n\nexport interface ChatHistoryProps {\n historyActiveId?: string;\n historyUrlTemplate?: string;\n historyActions?: ActionType[];\n projectActiveId?: string;\n projectUrlTemplate?: string;\n projectActions?: ActionType[];\n onActionClick: (detail: ActionClickDetail) => void;\n onHistoryClick: () => void;\n onProjectActionClick: (detail: ProjectActionClickDetail) => void;\n onAddProject: () => void;\n}\n\nexport interface ChatHistoryRef {\n pull: () => void;\n removeProject?: (projectId: string) => void;\n addProject?: (project: Project) => void;\n moveConversation?: (conversationId: string) => void;\n}\n\nexport const ChatHistory = forwardRef(LowLevelChatHistory);\n\nexport function LowLevelChatHistory(\n {\n historyActiveId,\n historyActions,\n historyUrlTemplate,\n projectActiveId,\n projectUrlTemplate,\n projectActions,\n onActionClick,\n onHistoryClick,\n onProjectActionClick,\n onAddProject,\n }: ChatHistoryProps,\n ref: React.Ref<ChatHistoryRef>\n) {\n const rootRef = useRef<HTMLDivElement | null>(null);\n const [projects, setProjects] = useState<Project[] | null>(null);\n const [projectsCollapsed, setProjectsCollapsed] = useState(false);\n const [projectsError, setProjectsError] = useState(false);\n const [historyList, setHistoryList] = useState<HistoryItem[] | null>(null);\n const [historyCollapsed, setHistoryCollapsed] = useState(false);\n const [nextToken, setNextToken] = useState<string | undefined>();\n const [loadNextToken, setLoadNextToken] = useState<string | undefined>();\n const [historyError, setHistoryError] = useState(false);\n const initialRef = useRef(true);\n const [movedConversations, setMovedConversations] = useState<string[]>([]);\n\n const mergedHistoryActions = useMemo(\n () =>\n [\n ...(historyActions ?? []),\n {\n isDropdown: true,\n text: t(K.MOVE_TO_PROJECT),\n disabled: !projects?.length,\n items: projects?.map((project) => ({\n event: \"move\",\n key: project.instanceId,\n text: project.name,\n project,\n })),\n },\n ] as ActionType[],\n [historyActions, projects]\n );\n\n useEffect(() => {\n (async () => {\n try {\n const projects = await ElevoApi_getElevoProjects({\n page: 1,\n page_size: 3000,\n });\n setProjects(projects.list as Project[]);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Error loading projects:\", error);\n setProjectsError(true);\n setProjects([]);\n }\n })();\n }, []);\n\n useEffect(() => {\n Promise.all([\n ElevoApi_listElevoConversations(\n {\n token: loadNextToken,\n limit: 30,\n onlyOwner: true,\n onlyUnrelatedProject: true,\n } as ElevoApi_ListElevoConversationsRequestParams,\n {\n interceptorParams: {\n ignoreLoadingBar: true,\n },\n }\n ),\n ...(initialRef.current\n ? []\n : [\n new Promise((resolve) => setTimeout(resolve, 500)), // Force a minimum delay\n ]),\n ])\n .then(([data]) => {\n initialRef.current = false;\n setHistoryList((prev) => [\n ...(prev ?? []),\n ...(data.conversations as HistoryItem[]),\n ]);\n setNextToken(data.nextToken);\n })\n .catch((error) => {\n // eslint-disable-next-line no-console\n console.error(\"Error loading chat history:\", error);\n setHistoryList([]);\n setHistoryError(true);\n });\n }, [loadNextToken]);\n\n const [actionsVisible, setActionsVisible] = useState<string | null>(null);\n\n const nextRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n const next = nextRef.current;\n const root = rootRef.current;\n if (!next || !nextToken || !root || historyCollapsed) {\n return;\n }\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n setLoadNextToken(nextToken);\n }\n }\n },\n { root }\n );\n observer.observe(next);\n return () => {\n observer.disconnect();\n };\n }, [nextToken, historyCollapsed]);\n\n const pullIdRef = useRef(0);\n\n const pull = useCallback(async () => {\n try {\n const pullId = ++pullIdRef.current;\n const tempList = await ElevoApi_listElevoConversations(\n {\n limit: 30,\n onlyOwner: true,\n onlyUnrelatedProject: true,\n } as ElevoApi_ListElevoConversationsRequestParams,\n {\n interceptorParams: {\n ignoreLoadingBar: true,\n },\n }\n );\n if (pullId !== pullIdRef.current) {\n // Ignore this pull if a newer one has been triggered\n return;\n }\n setHistoryList((prev) => {\n const prevList = prev ?? [];\n const newList = tempList.conversations as HistoryItem[];\n const newIds = new Set(newList.map((item) => item.conversationId));\n const newItemsMap = new Map(\n newList.map((item) => [item.conversationId, item])\n );\n\n let foundIntersection = false;\n let foundChanged = false;\n let isFirst = true;\n for (const item of prevList) {\n const newItem = newItemsMap.get(item.conversationId);\n if (newItem) {\n foundIntersection = true;\n foundChanged =\n (isFirst && newItem !== newList[0]) || !isEqual(newItem, item);\n if (foundChanged) {\n break;\n }\n } else {\n break;\n }\n isFirst = false;\n }\n\n if (!foundIntersection) {\n setNextToken(tempList.nextToken);\n return newList;\n }\n\n if (foundChanged) {\n return [\n ...newList,\n ...prevList.filter((item) => !newIds.has(item.conversationId)),\n ];\n }\n\n return prev;\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Error pulling chat history:\", error);\n }\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n pull,\n removeProject: (projectId: string) => {\n setProjects((prev) =>\n prev ? prev.filter((p) => p.instanceId !== projectId) : prev\n );\n },\n addProject: (project: Project) => {\n setProjects((prev) => (prev ? [...prev, project] : [project]));\n },\n moveConversation: (conversationId: string) => {\n setMovedConversations((prev) => [...prev, conversationId]);\n },\n }),\n [pull]\n );\n\n const filteredHistoryList = useMemo(() => {\n if (!historyList || !historyList.length) {\n return historyList;\n }\n return historyList.filter(\n (item) => !movedConversations.includes(item.conversationId)\n );\n }, [historyList, movedConversations]);\n\n return (\n <div className=\"history\" ref={rootRef}>\n <div className={classNames(\"section\", { collapsed: projectsCollapsed })}>\n <div className=\"section-title\">\n <div\n className=\"section-label\"\n onClick={() => setProjectsCollapsed((prev) => !prev)}\n >\n {t(K.PROJECTS)}\n <WrappedIcon lib=\"fa\" icon=\"angle-down\" />\n </div>\n <WrappedIconButton\n icon={ADD_ICON}\n variant=\"mini-light\"\n tooltip={t(K.CREATE_PROJECT)}\n onClick={onAddProject}\n />\n </div>\n <ul className=\"items\">\n {projectsError ? (\n <li className=\"error\">Failed to load project</li>\n ) : projects ? (\n projects.map((project) => (\n <li key={project.instanceId}>\n <WrappedLink\n className={classNames(\"item\", {\n \"actions-active\": project.instanceId === actionsVisible,\n active: project.instanceId === projectActiveId,\n })}\n onClick={onHistoryClick}\n {...(projectUrlTemplate\n ? { url: parseTemplate(projectUrlTemplate, project) }\n : null)}\n >\n <div className=\"item-title\" title={project.name}>\n {project.name || t(K.UNNAMED)}\n </div>\n <WrappedMiniActions\n className=\"actions\"\n actions={projectActions}\n onActionClick={(e) => {\n onProjectActionClick({ action: e.detail, project });\n }}\n onVisibleChange={(e) => {\n setActionsVisible(e.detail ? project.instanceId : null);\n }}\n />\n </WrappedLink>\n </li>\n ))\n ) : (\n <li className=\"loading\">\n <WrappedIcon\n lib=\"antd\"\n theme=\"outlined\"\n icon=\"loading-3-quarters\"\n spinning\n />\n </li>\n )}\n </ul>\n </div>\n <div className={classNames(\"section\", { collapsed: historyCollapsed })}>\n <div className=\"section-title\">\n <div\n className=\"section-label\"\n onClick={() => setHistoryCollapsed((prev) => !prev)}\n >\n {t(K.HISTORY)}\n <WrappedIcon lib=\"fa\" icon=\"angle-down\" />\n </div>\n </div>\n <ul className=\"items\">\n {filteredHistoryList ? (\n filteredHistoryList.map((item) => (\n <li key={item.conversationId}>\n <WrappedLink\n className={classNames(\"item\", {\n \"actions-active\": item.conversationId === actionsVisible,\n active: item.conversationId === historyActiveId,\n })}\n onClick={onHistoryClick}\n {...(historyUrlTemplate\n ? { url: parseTemplate(historyUrlTemplate, item) }\n : null)}\n >\n <div className=\"item-title\" title={item.title}>\n {item.title || t(K.UNTITLED)}\n </div>\n <WrappedMiniActions\n className=\"actions\"\n actions={mergedHistoryActions}\n onActionClick={(e) => {\n onActionClick({ action: e.detail, item });\n }}\n onVisibleChange={(e) => {\n setActionsVisible(e.detail ? item.conversationId : null);\n }}\n />\n {!DONE_STATES.includes(item.state!) && (\n <div className=\"working\"></div>\n )}\n </WrappedLink>\n </li>\n ))\n ) : (\n <li className=\"loading\">\n <WrappedIcon\n lib=\"antd\"\n theme=\"outlined\"\n icon=\"loading-3-quarters\"\n spinning\n />\n </li>\n )}\n {historyError ? (\n <li className=\"error\">Failed to load chat history</li>\n ) : null}\n </ul>\n {!historyCollapsed && nextToken && (\n <div className=\"load-more\" ref={nextRef}>\n <WrappedIcon lib=\"antd\" icon=\"loading-3-quarters\" spinning />\n </div>\n )}\n </div>\n </div>\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, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.sidebar{position:relative;z-index:1;width:260px;height:100%;background:rgba(246,247,249,0.4);border-radius:12px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:24px 12px 1px;display:flex;flex-direction:column;transition:transform 0.3s ease-in-out}.logo-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:30px;margin-left:4px}.logo-link::part(link){display:block}.logo{vertical-align:middle}.new-chat::part(link){display:flex;gap:0;align-items:center;color:var(--elevo-color-brand);font-size:14px;text-align:left;cursor:pointer}.sidebar .new-chat::part(link){background:#f0f4ff;border-radius:8px;border:1px solid #c9d7ff;padding:9px 13px;font-weight:500;margin-bottom:16px}.sidebar .new-chat::part(link):hover{background:rgba(201,215,255,0.5)}.new-chat-icon{font-size:16px;margin-right:5px}.footer{border-top:1px solid rgba(0,0,0,0.04);padding:9px 12px;margin:0 -12px}.dropdown{display:block}.account{background:none;border:none;border-radius:8px;padding:6px 10px;display:block;width:100%;text-align:left;cursor:pointer}.account:hover{background:rgba(0,0,0,0.04)}.alternative{position:fixed;top:8px;left:8px;padding:6px 10px 6px 8px;display:flex;align-items:center;opacity:0;z-index:1;transition:opacity 0.2s ease-in-out;background:rgba(255,255,255,0);border-radius:8px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.alternative .new-chat::part(link){padding:4px;margin-left:16px;font-size:12px}.alternative .new-chat::part(link):hover{color:#7891ff}.alternative .new-chat::part(link):active{color:#0911b3}.container{width:270px;padding:10px 0 10px 10px;height:100%;transition:width 0.3s ease-in-out,padding 0.3s ease-in-out}.container.collapsed{width:0;padding:10px 0;overflow:visible}.container.collapsed .sidebar{transform:translateX(-100%)}.container.collapsed .alternative{opacity:1}:host([bordered]) .sidebar{background:rgba(246,247,249,0.5);border:1px solid rgba(0,0,0,0.1);box-shadow:2px 3px 6px 0px rgba(184,187,205,0.2);padding:23px 11px 0}:host([behavior=\"drawer\"]){z-index:1;width:0}:host(:not([behavior=\"drawer\"])) .alternative .new-chat{display:none}.mask{position:fixed;top:0;right:0;bottom:0;left:0}.links{border-bottom:1px solid rgba(0,0,0,0.06);padding-bottom:16px;margin-bottom:16px}.link{display:block}.link + .link{margin-top:4px}.link::part(link){display:flex;gap:0;align-items:center;padding:7px 10px;border-radius:8px;color:#000}.link::part(link):hover{background:rgba(0,0,0,0.04)}.link .icon{font-size:16px;margin-right:10px}.link .title{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.history{flex:1;min-height:0;overflow-y:auto;margin:0 -12px;padding:0 12px}.history ul{list-style:none;margin:0;padding:0}.history .section + .section{margin-top:14px}.history .section-title{display:flex;align-items:center;justify-content:space-between;height:30px;margin-bottom:6px;padding:0 8px}.history .section-label{display:flex;align-items:center;height:24px;padding:0 8px;margin-left:-8px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500;font-size:12px;color:#8c8c8c;border-radius:8px}.history .section-label eo-icon{vertical-align:middle;margin-left:6px;transition:transform 0.2s ease-in-out}.history .section-label:hover{background:rgba(0,0,0,0.04)}.history .collapsed > ul{display:none}.history .collapsed .section-label eo-icon{transform:rotate(-90deg)}.history .error,.history .loading{display:flex;align-items:center;height:36px;padding:0 8px}.history .loading{justify-content:center}.history .error{color:var(--color-error)}.history .group + .group{margin-top:15px}.history .group-title{font-weight:500;font-size:12px;color:#000;padding:8px;height:36px;line-height:20px}.history .item{display:block}.history .item::part(link){display:flex;align-items:center;padding:0 8px;height:36px;border-radius:8px;color:#000}.history .item.active::part(link){background:rgba(0,0,0,0.06)}.history .item.actions-active::part(link),.history .item::part(link):hover{background:rgba(0,0,0,0.04)}.history .item-title{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.history .actions{cursor:auto}.history .item:not(:hover):not(.actions-active) .actions{display:none}.history .working{width:8px;height:8px;border-radius:8px;background:var(--elevo-color-brand);margin:0 7px}.history .item.actions-active .working,.history .item:hover .working,.history .item.active .working{display:none}.history .load-more{display:flex;justify-content:center;align-items:center;height:36px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n NEW_CHAT = \"NEW_CHAT\",\n LOGOUT = \"LOGOUT\",\n TODAY = \"TODAY\",\n YESTERDAY = \"YESTERDAY\",\n PREVIOUS_7_DAYS = \"PREVIOUS_7_DAYS\",\n PREVIOUS_30_DAYS = \"PREVIOUS_30_DAYS\",\n SWITCH_LANGUAGE = \"SWITCH_LANGUAGE\",\n PROJECTS = \"PROJECTS\",\n HISTORY = \"HISTORY\",\n CREATE_PROJECT = \"CREATE_PROJECT\",\n MOVE_TO_PROJECT = \"MOVE_TO_PROJECT\",\n UNTITLED = \"UNTITLED\",\n UNNAMED = \"UNNAMED\",\n}\n\nconst en: Locale = {\n [K.NEW_CHAT]: \"New chat\",\n [K.LOGOUT]: \"Logout\",\n [K.TODAY]: \"Today\",\n [K.YESTERDAY]: \"Yesterday\",\n [K.PREVIOUS_7_DAYS]: \"Previous 7 days\",\n [K.PREVIOUS_30_DAYS]: \"Previous 30 days\",\n [K.SWITCH_LANGUAGE]: \"中文\",\n [K.PROJECTS]: \"Project management\",\n [K.HISTORY]: \"Chat history\",\n [K.CREATE_PROJECT]: \"Create project\",\n [K.MOVE_TO_PROJECT]: \"Move to project\",\n [K.UNTITLED]: \"Untitled\",\n [K.UNNAMED]: \"Unnamed\",\n};\n\nconst zh: Locale = {\n [K.NEW_CHAT]: \"新对话\",\n [K.LOGOUT]: \"登出\",\n [K.TODAY]: \"今天\",\n [K.YESTERDAY]: \"昨天\",\n [K.PREVIOUS_7_DAYS]: \"过去7天\",\n [K.PREVIOUS_30_DAYS]: \"过去30天\",\n [K.SWITCH_LANGUAGE]: \"English\",\n [K.PROJECTS]: \"项目管理\",\n [K.HISTORY]: \"历史对话\",\n [K.CREATE_PROJECT]: \"创建项目\",\n [K.MOVE_TO_PROJECT]: \"移动到项目\",\n [K.UNTITLED]: \"无标题\",\n [K.UNNAMED]: \"未命名\",\n};\n\nexport const NS = \"bricks/ai-portal/elevo-sidebar\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n"],"names":["AgentFlowApi_searchTaskForAgentFlow","async","data","options","http","post","LegacyChatHistory","forwardRef","LowLevelChatHistory","_ref","ref","activeId","actions","urlTemplate","onActionClick","onHistoryClick","rootRef","useRef","list","setList","useState","nextToken","setNextToken","loadNextToken","setLoadNextToken","useEffect","Promise","all","next_token","interceptorParams","ignoreLoadingBar","resolve","setTimeout","then","_ref2","prev","catch","error","console","groups","useMemo","groupMap","Map","now","moment","startOfDay","clone","startOf","yesterday","subtract","sevenDaysAgo","thirtyDaysAgo","timestamps","item","groupKey","startTime","t","K","TODAY","YESTERDAY","PREVIOUS_7_DAYS","PREVIOUS_30_DAYS","format","group","get","set","title","items","push","values","actionsVisible","setActionsVisible","nextRef","next","current","root","observer","IntersectionObserver","entries","entry","isIntersecting","observe","disconnect","pullIdRef","pull","useCallback","pullId","tempList","prevList","newList","newIds","Set","map","id","newItemsMap","foundIntersection","foundChanged","isFirst","newItem","isEqual","filter","has","useImperativeHandle","React","className","key","WrappedLink","_extends","classNames","active","onClick","url","parseTemplate","WrappedMiniActions","e","action","detail","onVisibleChange","DONE_STATES","includes","state","WrappedIcon","lib","icon","spinning","theme","wrapBrick","WrappedDropdownActions","WrappedEasyopsAvatar","WrappedIconButton","ElevoApi_listElevoConversations","params","ADD_ICON","ChatHistory","historyActiveId","historyActions","historyUrlTemplate","projectActiveId","projectUrlTemplate","projectActions","onProjectActionClick","onAddProject","projects","setProjects","projectsCollapsed","setProjectsCollapsed","projectsError","setProjectsError","historyList","setHistoryList","historyCollapsed","setHistoryCollapsed","historyError","setHistoryError","initialRef","movedConversations","setMovedConversations","mergedHistoryActions","isDropdown","text","MOVE_TO_PROJECT","disabled","length","project","event","instanceId","name","page","page_size","ElevoApi_getElevoProjects","token","limit","onlyOwner","onlyUnrelatedProject","conversations","conversationId","removeProject","projectId","p","addProject","moveConversation","filteredHistoryList","collapsed","PROJECTS","variant","tooltip","CREATE_PROJECT","UNNAMED","HISTORY","UNTITLED","___CSS_LOADER_EXPORT___","module","toString","en","NEW_CHAT","LOGOUT","SWITCH_LANGUAGE","zh","NS","locales","i18n","getFixedT"],"sourceRoot":""}
1
+ {"version":3,"file":"chunks/8616.ceae4e7b.js","mappings":"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","sources":["webpack:///../../node_modules/@next-api-sdk/llm-sdk/dist/esm/api/llm/agent_flow/searchTaskForAgentFlow.js","webpack:///./src/elevo-sidebar/LegacyChatHistory.tsx","webpack:///./src/elevo-sidebar/bricks.ts","webpack:///../../node_modules/@next-api-sdk/llm-sdk/dist/esm/api/llm/elevo/getElevoProjects.js","webpack:///../../node_modules/@next-api-sdk/llm-sdk/dist/esm/api/llm/elevo/listElevoConversations.js","webpack:///./src/elevo-sidebar/ChatHistory.tsx","webpack:///./src/elevo-sidebar/styles.shadow.css","webpack:///./src/elevo-sidebar/i18n.ts"],"sourcesContent":["import { http } from \"@next-core/http\";\n/**\n * @description 分页查询agent flow, 默认只查询最近三个页的数据\n * @endpoint POST /api/v1/llm/agent/flow/search\n */\nexport const AgentFlowApi_searchTaskForAgentFlow = async (data, options) => /**! @contract easyops.api.llm.agent_flow.SearchTaskForAgentFlow@1.0.0 */(await http.post(\"api/gateway/logic.llm.aiops_service/api/v1/llm/agent/flow/search\", data, options)).data;\n//# sourceMappingURL=searchTaskForAgentFlow.js.map","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport moment from \"moment\";\nimport classNames from \"classnames\";\nimport { AgentFlowApi_searchTaskForAgentFlow } from \"@next-api-sdk/llm-sdk\";\nimport type {\n ActionType,\n SimpleActionType,\n} from \"@next-bricks/basic/mini-actions\";\nimport { isEqual } from \"lodash\";\nimport { K, t } from \"./i18n.js\";\nimport type { TaskState } from \"../cruise-canvas/interfaces.js\";\nimport { WrappedIcon, WrappedLink, WrappedMiniActions } from \"./bricks.js\";\nimport { DONE_STATES } from \"../shared/constants.js\";\nimport type { ChatHistoryRef } from \"./ChatHistory.js\";\nimport { parseTemplate } from \"../shared/parseTemplate.js\";\n\ninterface LegacyHistoryItem {\n id: string;\n title: string;\n startTime: number;\n state?: TaskState;\n}\n\ninterface LegacyGroupedHistory {\n title: string;\n items: LegacyHistoryItem[];\n}\n\nexport interface LegacyActionClickDetail {\n action: SimpleActionType;\n item: LegacyHistoryItem;\n}\n\nexport interface LegacyChatHistoryProps {\n activeId?: string;\n urlTemplate?: string;\n actions?: ActionType[];\n onActionClick: (detail: LegacyActionClickDetail) => void;\n onHistoryClick: () => void;\n}\n\nexport const LegacyChatHistory = forwardRef(LowLevelChatHistory);\n\nexport function LowLevelChatHistory(\n {\n activeId,\n actions,\n urlTemplate,\n onActionClick,\n onHistoryClick,\n }: LegacyChatHistoryProps,\n ref: React.Ref<ChatHistoryRef>\n) {\n const rootRef = useRef<HTMLDivElement | null>(null);\n const [list, setList] = useState<LegacyHistoryItem[] | null>(null);\n const [nextToken, setNextToken] = useState<string | undefined>();\n const [loadNextToken, setLoadNextToken] = useState<string | undefined>();\n\n useEffect(() => {\n Promise.all([\n AgentFlowApi_searchTaskForAgentFlow(\n { next_token: loadNextToken },\n {\n interceptorParams: {\n ignoreLoadingBar: true,\n },\n }\n ),\n new Promise((resolve) => setTimeout(resolve, 500)), // Force a minimum delay\n ])\n .then(([data]) => {\n setList((prev) => [\n ...(prev ?? []),\n ...(data.data as LegacyHistoryItem[]),\n ]);\n setNextToken(data.next_token);\n })\n .catch((error) => {\n if (process.env.NODE_ENV !== \"test\") {\n // eslint-disable-next-line no-console\n console.error(\"Error loading chat history:\", error);\n }\n });\n }, [loadNextToken]);\n\n const groups = useMemo(() => {\n const groupMap = new Map<string, LegacyGroupedHistory>();\n // Group history by\n // - today\n // - yesterday\n // - previous 7 days\n // - previous 30 days\n // - each month this year\n // - each year before.\n const now = moment();\n const startOfDay = now.clone().startOf(\"day\");\n const yesterday = startOfDay.clone().subtract(1, \"day\");\n const sevenDaysAgo = startOfDay.clone().subtract(7, \"days\");\n const thirtyDaysAgo = startOfDay.clone().subtract(30, \"days\");\n const thisYear = now.clone().startOf(\"year\");\n\n const timestamps = {\n startOfDay: +startOfDay / 1000,\n yesterday: +yesterday / 1000,\n sevenDaysAgo: +sevenDaysAgo / 1000,\n thirtyDaysAgo: +thirtyDaysAgo / 1000,\n thisYear: +thisYear / 1000,\n };\n for (const item of list ?? []) {\n let groupKey: string;\n if (item.startTime >= timestamps.startOfDay) {\n groupKey = t(K.TODAY);\n } else if (item.startTime >= timestamps.yesterday) {\n groupKey = t(K.YESTERDAY);\n } else if (item.startTime >= timestamps.sevenDaysAgo) {\n groupKey = t(K.PREVIOUS_7_DAYS);\n } else if (item.startTime >= timestamps.thirtyDaysAgo) {\n groupKey = t(K.PREVIOUS_30_DAYS);\n } else if (item.startTime >= timestamps.thisYear) {\n groupKey = moment(item.startTime * 1000).format(\"MMMM\");\n } else {\n groupKey = moment(item.startTime * 1000).format(\"YYYY\");\n }\n let group = groupMap.get(groupKey);\n if (!group) {\n groupMap.set(groupKey, (group = { title: groupKey, items: [] }));\n }\n group.items.push(item);\n }\n\n return [...groupMap.values()];\n }, [list]);\n\n const [actionsVisible, setActionsVisible] = useState<string | null>(null);\n\n const nextRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n const next = nextRef.current;\n const root = rootRef.current;\n if (!next || !nextToken || !root) {\n return;\n }\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n setLoadNextToken(nextToken);\n }\n }\n },\n { root }\n );\n observer.observe(next);\n return () => {\n observer.disconnect();\n };\n }, [nextToken]);\n\n const pullIdRef = useRef(0);\n\n const pull = useCallback(async () => {\n try {\n const pullId = ++pullIdRef.current;\n const tempList = await AgentFlowApi_searchTaskForAgentFlow(\n {},\n {\n interceptorParams: {\n ignoreLoadingBar: true,\n },\n }\n );\n if (pullId !== pullIdRef.current) {\n // Ignore this pull if a newer one has been triggered\n return;\n }\n setList((prev) => {\n const prevList = prev ?? [];\n const newList = tempList.data as LegacyHistoryItem[];\n const newIds = new Set(newList.map((item) => item.id));\n const newItemsMap = new Map(newList.map((item) => [item.id, item]));\n\n let foundIntersection = false;\n let foundChanged = false;\n let isFirst = true;\n for (const item of prevList) {\n const newItem = newItemsMap.get(item.id);\n if (newItem) {\n foundIntersection = true;\n foundChanged =\n (isFirst && newItem !== newList[0]) || !isEqual(newItem, item);\n if (foundChanged) {\n break;\n }\n } else {\n break;\n }\n isFirst = false;\n }\n\n if (!foundIntersection) {\n setNextToken(tempList.next_token);\n return newList;\n }\n\n if (foundChanged) {\n return [\n ...newList,\n ...prevList.filter((item) => !newIds.has(item.id)),\n ];\n }\n\n return prev;\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Error pulling chat history:\", error);\n }\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n pull,\n }),\n [pull]\n );\n\n if (!list) {\n return (\n <div className=\"history\">\n <div className=\"loading\">\n <WrappedIcon\n lib=\"antd\"\n theme=\"outlined\"\n icon=\"loading-3-quarters\"\n spinning\n />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"history\" ref={rootRef}>\n <ul>\n {groups.map((group) => (\n <li key={group.title} className=\"group\">\n <div className=\"group-title\">{group.title}</div>\n <ul className=\"items\">\n {group.items.map((item) => (\n <li key={item.id}>\n <WrappedLink\n className={classNames(\"item\", {\n \"actions-active\": item.id === actionsVisible,\n active: item.id === activeId,\n })}\n onClick={onHistoryClick}\n {...(urlTemplate\n ? { url: parseTemplate(urlTemplate, item) }\n : null)}\n >\n <div className=\"item-title\" title={item.title}>\n {item.title}\n </div>\n <WrappedMiniActions\n className=\"actions\"\n actions={actions}\n onActionClick={(e) => {\n onActionClick({ action: e.detail, item });\n }}\n onVisibleChange={(e) => {\n setActionsVisible(e.detail ? item.id : null);\n }}\n />\n {!DONE_STATES.includes(item.state!) && (\n <div className=\"working\"></div>\n )}\n </WrappedLink>\n </li>\n ))}\n </ul>\n </li>\n ))}\n </ul>\n {nextToken && (\n <div className=\"load-more\" ref={nextRef}>\n <WrappedIcon lib=\"antd\" icon=\"loading-3-quarters\" spinning />\n </div>\n )}\n </div>\n );\n}\n","import { 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\";\nimport type {\n EoDropdownActions,\n DropdownActionsProps,\n DropdownActionsEvents,\n DropdownActionsEventsMapping,\n} from \"@next-bricks/basic/dropdown-actions\";\nimport type {\n EoEasyopsAvatar,\n EoEasyopsAvatarProps,\n} from \"@next-bricks/basic/easyops-avatar\";\nimport type {\n EoMiniActions,\n EoMiniActionsEvents,\n EoMiniActionsEventsMapping,\n EoMiniActionsProps,\n} from \"@next-bricks/basic/mini-actions\";\nimport type { IconButton, IconButtonProps } from \"../icon-button\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nexport const WrappedDropdownActions = wrapBrick<\n EoDropdownActions,\n DropdownActionsProps,\n DropdownActionsEvents,\n DropdownActionsEventsMapping\n>(\"eo-dropdown-actions\", {\n onActionClick: \"action.click\",\n onVisibleChange: \"visible.change\",\n});\nexport const WrappedEasyopsAvatar = wrapBrick<\n EoEasyopsAvatar,\n EoEasyopsAvatarProps\n>(\"eo-easyops-avatar\");\nexport const WrappedMiniActions = wrapBrick<\n EoMiniActions,\n EoMiniActionsProps,\n EoMiniActionsEvents,\n EoMiniActionsEventsMapping\n>(\"eo-mini-actions\", {\n onActionClick: \"action.click\",\n onVisibleChange: \"visible.change\",\n});\nexport const WrappedIconButton = wrapBrick<IconButton, IconButtonProps>(\n \"ai-portal.icon-button\"\n);\n","import { http } from \"@next-core/http\";\n/**\n * @description 获取elevo项目列表\n * @endpoint list /api/v1/elevo/projects\n */\nexport const ElevoApi_getElevoProjects = async (params, options) => /**! @contract easyops.api.llm.elevo.GetElevoProjects@1.0.0 */(await http.get(\"api/gateway/logic.llm.aiops_service/api/v1/elevo/projects\", {\n ...options,\n params\n})).data;\n//# sourceMappingURL=getElevoProjects.js.map","import { http } from \"@next-core/http\";\n/**\n * @description 获取elevo会话列表\n * @endpoint GET /api/v1/elevo/conversations\n */\nexport const ElevoApi_listElevoConversations = async (params, options) => /**! @contract easyops.api.llm.elevo.ListElevoConversations@1.0.0 */(await http.get(\"api/gateway/logic.llm.aiops_service/api/v1/elevo/conversations\", {\n ...options,\n params\n})).data;\n//# sourceMappingURL=listElevoConversations.js.map","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport classNames from \"classnames\";\nimport {\n ElevoApi_listElevoConversations,\n ElevoApi_getElevoProjects,\n type ElevoApi_ListElevoConversationsRequestParams,\n} from \"@next-api-sdk/llm-sdk\";\nimport type {\n ActionType,\n SimpleActionType,\n} from \"@next-bricks/basic/mini-actions\";\nimport type { GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport { isEqual } from \"lodash\";\nimport { K, t } from \"./i18n.js\";\nimport type { TaskState } from \"../cruise-canvas/interfaces.js\";\nimport {\n WrappedIcon,\n WrappedLink,\n WrappedMiniActions,\n WrappedIconButton,\n} from \"./bricks.js\";\nimport { DONE_STATES } from \"../shared/constants.js\";\nimport { parseTemplate } from \"../shared/parseTemplate.js\";\n\nconst ADD_ICON: GeneralIconProps = {\n lib: \"fa\",\n icon: \"plus\",\n};\n\nexport interface HistoryItem {\n conversationId: string;\n title: string;\n startTime: number;\n state?: TaskState;\n}\n\nexport interface GroupedHistory {\n title: string;\n items: HistoryItem[];\n}\n\nexport interface ActionClickDetail {\n action: SimpleActionType;\n item: HistoryItem;\n project?: Project;\n}\n\nexport interface ProjectActionClickDetail {\n action: SimpleActionType;\n project: Project;\n}\n\nexport interface Project {\n /** 实例ID */\n instanceId: string;\n /** 项目名称 */\n name: string;\n /** 项目描述 */\n description: string;\n /** 状态 */\n state: \"active\" | \"inactive\";\n /** 默认数字人ID */\n defaultAiEmployeeId: string;\n /** 创建者 */\n creator: string;\n /** 创建时间 */\n ctime: string;\n /** 修改时间 */\n mtime: string;\n /** 修改者 */\n modifier: string;\n}\n\nexport interface ChatHistoryProps {\n historyActiveId?: string;\n historyUrlTemplate?: string;\n historyActions?: ActionType[];\n projectActiveId?: string;\n projectUrlTemplate?: string;\n projectActions?: ActionType[];\n onActionClick: (detail: ActionClickDetail) => void;\n onHistoryClick: () => void;\n onProjectActionClick: (detail: ProjectActionClickDetail) => void;\n onAddProject: () => void;\n}\n\nexport interface ChatHistoryRef {\n pull: () => void;\n removeProject?: (projectId: string) => void;\n addProject?: (project: Project) => void;\n moveConversation?: (conversationId: string) => void;\n}\n\nexport const ChatHistory = forwardRef(LowLevelChatHistory);\n\nexport function LowLevelChatHistory(\n {\n historyActiveId,\n historyActions,\n historyUrlTemplate,\n projectActiveId,\n projectUrlTemplate,\n projectActions,\n onActionClick,\n onHistoryClick,\n onProjectActionClick,\n onAddProject,\n }: ChatHistoryProps,\n ref: React.Ref<ChatHistoryRef>\n) {\n const rootRef = useRef<HTMLDivElement | null>(null);\n const [projects, setProjects] = useState<Project[] | null>(null);\n const [projectsCollapsed, setProjectsCollapsed] = useState(false);\n const [projectsError, setProjectsError] = useState(false);\n const [historyList, setHistoryList] = useState<HistoryItem[] | null>(null);\n const [historyCollapsed, setHistoryCollapsed] = useState(false);\n const [nextToken, setNextToken] = useState<string | undefined>();\n const [loadNextToken, setLoadNextToken] = useState<string | undefined>();\n const [historyError, setHistoryError] = useState(false);\n const initialRef = useRef(true);\n const [movedConversations, setMovedConversations] = useState<string[]>([]);\n\n const mergedHistoryActions = useMemo(\n () =>\n [\n ...(historyActions ?? []),\n {\n isDropdown: true,\n text: t(K.MOVE_TO_PROJECT),\n disabled: !projects?.length,\n items: projects?.map((project) => ({\n event: \"move\",\n key: project.instanceId,\n text: project.name,\n project,\n })),\n },\n ] as ActionType[],\n [historyActions, projects]\n );\n\n useEffect(() => {\n (async () => {\n try {\n const projects = await ElevoApi_getElevoProjects({\n page: 1,\n page_size: 3000,\n });\n setProjects(projects.list as Project[]);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Error loading projects:\", error);\n setProjectsError(true);\n setProjects([]);\n }\n })();\n }, []);\n\n useEffect(() => {\n Promise.all([\n ElevoApi_listElevoConversations(\n {\n token: loadNextToken,\n limit: 30,\n onlyOwner: true,\n onlyUnrelatedProject: true,\n } as ElevoApi_ListElevoConversationsRequestParams,\n {\n interceptorParams: {\n ignoreLoadingBar: true,\n },\n }\n ),\n ...(initialRef.current\n ? []\n : [\n new Promise((resolve) => setTimeout(resolve, 500)), // Force a minimum delay\n ]),\n ])\n .then(([data]) => {\n initialRef.current = false;\n setHistoryList((prev) => [\n ...(prev ?? []),\n ...(data.conversations as HistoryItem[]),\n ]);\n setNextToken(data.nextToken);\n })\n .catch((error) => {\n // eslint-disable-next-line no-console\n console.error(\"Error loading chat history:\", error);\n setHistoryList([]);\n setHistoryError(true);\n });\n }, [loadNextToken]);\n\n const [actionsVisible, setActionsVisible] = useState<string | null>(null);\n\n const nextRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n const next = nextRef.current;\n const root = rootRef.current;\n if (!next || !nextToken || !root || historyCollapsed) {\n return;\n }\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n setLoadNextToken(nextToken);\n }\n }\n },\n { root }\n );\n observer.observe(next);\n return () => {\n observer.disconnect();\n };\n }, [nextToken, historyCollapsed]);\n\n const pullIdRef = useRef(0);\n\n const pull = useCallback(async () => {\n try {\n const pullId = ++pullIdRef.current;\n const tempList = await ElevoApi_listElevoConversations(\n {\n limit: 30,\n onlyOwner: true,\n onlyUnrelatedProject: true,\n } as ElevoApi_ListElevoConversationsRequestParams,\n {\n interceptorParams: {\n ignoreLoadingBar: true,\n },\n }\n );\n if (pullId !== pullIdRef.current) {\n // Ignore this pull if a newer one has been triggered\n return;\n }\n setHistoryList((prev) => {\n const prevList = prev ?? [];\n const newList = tempList.conversations as HistoryItem[];\n const newIds = new Set(newList.map((item) => item.conversationId));\n const newItemsMap = new Map(\n newList.map((item) => [item.conversationId, item])\n );\n\n let foundIntersection = false;\n let foundChanged = false;\n let isFirst = true;\n for (const item of prevList) {\n const newItem = newItemsMap.get(item.conversationId);\n if (newItem) {\n foundIntersection = true;\n foundChanged =\n (isFirst && newItem !== newList[0]) || !isEqual(newItem, item);\n if (foundChanged) {\n break;\n }\n } else {\n break;\n }\n isFirst = false;\n }\n\n if (!foundIntersection) {\n setNextToken(tempList.nextToken);\n return newList;\n }\n\n if (foundChanged) {\n return [\n ...newList,\n ...prevList.filter((item) => !newIds.has(item.conversationId)),\n ];\n }\n\n return prev;\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Error pulling chat history:\", error);\n }\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n pull,\n removeProject: (projectId: string) => {\n setProjects((prev) =>\n prev ? prev.filter((p) => p.instanceId !== projectId) : prev\n );\n },\n addProject: (project: Project) => {\n setProjects((prev) => (prev ? [...prev, project] : [project]));\n },\n moveConversation: (conversationId: string) => {\n setMovedConversations((prev) => [...prev, conversationId]);\n },\n }),\n [pull]\n );\n\n const filteredHistoryList = useMemo(() => {\n if (!historyList || !historyList.length) {\n return historyList;\n }\n return historyList.filter(\n (item) => !movedConversations.includes(item.conversationId)\n );\n }, [historyList, movedConversations]);\n\n return (\n <div className=\"history\" ref={rootRef}>\n <div className={classNames(\"section\", { collapsed: projectsCollapsed })}>\n <div className=\"section-title\">\n <div\n className=\"section-label\"\n onClick={() => setProjectsCollapsed((prev) => !prev)}\n >\n {t(K.PROJECTS)}\n <WrappedIcon lib=\"fa\" icon=\"angle-down\" />\n </div>\n <WrappedIconButton\n icon={ADD_ICON}\n variant=\"mini-light\"\n tooltip={t(K.CREATE_PROJECT)}\n onClick={onAddProject}\n />\n </div>\n <ul className=\"items\">\n {projectsError ? (\n <li className=\"error\">Failed to load project</li>\n ) : projects ? (\n projects.map((project) => (\n <li key={project.instanceId}>\n <WrappedLink\n className={classNames(\"item\", {\n \"actions-active\": project.instanceId === actionsVisible,\n active: project.instanceId === projectActiveId,\n })}\n onClick={onHistoryClick}\n {...(projectUrlTemplate\n ? { url: parseTemplate(projectUrlTemplate, project) }\n : null)}\n >\n <div className=\"item-title\" title={project.name}>\n {project.name || t(K.UNNAMED)}\n </div>\n <WrappedMiniActions\n className=\"actions\"\n actions={projectActions}\n onActionClick={(e) => {\n onProjectActionClick({ action: e.detail, project });\n }}\n onVisibleChange={(e) => {\n setActionsVisible(e.detail ? project.instanceId : null);\n }}\n />\n </WrappedLink>\n </li>\n ))\n ) : (\n <li className=\"loading\">\n <WrappedIcon\n lib=\"antd\"\n theme=\"outlined\"\n icon=\"loading-3-quarters\"\n spinning\n />\n </li>\n )}\n </ul>\n </div>\n <div className={classNames(\"section\", { collapsed: historyCollapsed })}>\n <div className=\"section-title\">\n <div\n className=\"section-label\"\n onClick={() => setHistoryCollapsed((prev) => !prev)}\n >\n {t(K.HISTORY)}\n <WrappedIcon lib=\"fa\" icon=\"angle-down\" />\n </div>\n </div>\n <ul className=\"items\">\n {filteredHistoryList ? (\n filteredHistoryList.map((item) => (\n <li key={item.conversationId}>\n <WrappedLink\n className={classNames(\"item\", {\n \"actions-active\": item.conversationId === actionsVisible,\n active: item.conversationId === historyActiveId,\n })}\n onClick={onHistoryClick}\n {...(historyUrlTemplate\n ? { url: parseTemplate(historyUrlTemplate, item) }\n : null)}\n >\n <div className=\"item-title\" title={item.title}>\n {item.title || t(K.UNTITLED)}\n </div>\n <WrappedMiniActions\n className=\"actions\"\n actions={mergedHistoryActions}\n onActionClick={(e) => {\n onActionClick({ action: e.detail, item });\n }}\n onVisibleChange={(e) => {\n setActionsVisible(e.detail ? item.conversationId : null);\n }}\n />\n {!DONE_STATES.includes(item.state!) && (\n <div className=\"working\"></div>\n )}\n </WrappedLink>\n </li>\n ))\n ) : (\n <li className=\"loading\">\n <WrappedIcon\n lib=\"antd\"\n theme=\"outlined\"\n icon=\"loading-3-quarters\"\n spinning\n />\n </li>\n )}\n {historyError ? (\n <li className=\"error\">Failed to load chat history</li>\n ) : null}\n </ul>\n {!historyCollapsed && nextToken && (\n <div className=\"load-more\" ref={nextRef}>\n <WrappedIcon lib=\"antd\" icon=\"loading-3-quarters\" spinning />\n </div>\n )}\n </div>\n </div>\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, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.sidebar{position:relative;z-index:1;width:260px;height:100%;background:rgba(246,247,249,0.5);border:1px solid rgba(255,255,255,0.3);border-radius:12px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:23px 11px 0;display:flex;flex-direction:column;transition:transform 0.3s ease-in-out}.logo-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:30px;margin-left:4px}.logo-link::part(link){display:block}.logo{vertical-align:middle}.new-chat::part(link){display:flex;gap:0;align-items:center;color:var(--elevo-color-brand);font-size:14px;text-align:left;cursor:pointer}.sidebar .new-chat::part(link){background:#f0f4ff;border-radius:8px;border:1px solid #c9d7ff;padding:9px 13px;font-weight:500;margin-bottom:16px}.sidebar .new-chat::part(link):hover{background:rgba(201,215,255,0.5)}.new-chat-icon{font-size:16px;margin-right:5px}.footer{border-top:1px solid rgba(0,0,0,0.04);padding:9px 12px;margin:0 -12px}.dropdown{display:block}.account{background:none;border:none;border-radius:8px;padding:6px 10px;display:block;width:100%;text-align:left;cursor:pointer}.account:hover{background:rgba(0,0,0,0.04)}.alternative{position:fixed;top:8px;left:8px;padding:6px 10px 6px 8px;display:flex;align-items:center;opacity:0;z-index:1;transition:opacity 0.2s ease-in-out;background:rgba(255,255,255,0);border-radius:8px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.alternative .new-chat::part(link){padding:4px;margin-left:16px;font-size:12px}.alternative .new-chat::part(link):hover{color:#7891ff}.alternative .new-chat::part(link):active{color:#0911b3}.container{width:270px;padding:10px 0 10px 10px;height:100%;transition:width 0.3s ease-in-out,padding 0.3s ease-in-out}.container.collapsed{width:0;padding:10px 0;overflow:visible}.container.collapsed .sidebar{transform:translateX(-100%)}.container.collapsed .alternative{opacity:1}:host([behavior=\"drawer\"]){z-index:1;width:0}:host(:not([behavior=\"drawer\"])) .alternative .new-chat{display:none}.mask{position:fixed;top:0;right:0;bottom:0;left:0}.links{border-bottom:1px solid rgba(0,0,0,0.06);padding-bottom:16px;margin-bottom:16px}.link{display:block}.link + .link{margin-top:4px}.link::part(link){display:flex;gap:0;align-items:center;padding:7px 10px;border-radius:8px;color:#000}.link::part(link):hover{background:rgba(0,0,0,0.04)}.link .icon{font-size:16px;margin-right:10px}.link .title{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.history{flex:1;min-height:0;overflow-y:auto;margin:0 -12px;padding:0 12px}.history ul{list-style:none;margin:0;padding:0}.history .section + .section{margin-top:14px}.history .section-title{display:flex;align-items:center;justify-content:space-between;height:30px;margin-bottom:6px;padding:0 8px}.history .section-label{display:flex;align-items:center;height:24px;padding:0 8px;margin-left:-8px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500;font-size:12px;color:#8c8c8c;border-radius:8px}.history .section-label eo-icon{vertical-align:middle;margin-left:6px;transition:transform 0.2s ease-in-out}.history .section-label:hover{background:rgba(0,0,0,0.04)}.history .collapsed > ul{display:none}.history .collapsed .section-label eo-icon{transform:rotate(-90deg)}.history .error,.history .loading{display:flex;align-items:center;height:36px;padding:0 8px}.history .loading{justify-content:center}.history .error{color:var(--color-error)}.history .group + .group{margin-top:15px}.history .group-title{font-weight:500;font-size:12px;color:#000;padding:8px;height:36px;line-height:20px}.history .item{display:block}.history .item::part(link){display:flex;align-items:center;padding:0 8px;height:36px;border-radius:8px;color:#000}.history .item.active::part(link){background:rgba(0,0,0,0.06)}.history .item.actions-active::part(link),.history .item::part(link):hover{background:rgba(0,0,0,0.04)}.history .item-title{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.history .actions{cursor:auto}.history .item:not(:hover):not(.actions-active) .actions{display:none}.history .working{width:8px;height:8px;border-radius:8px;background:var(--elevo-color-brand);margin:0 7px}.history .item.actions-active .working,.history .item:hover .working,.history .item.active .working{display:none}.history .load-more{display:flex;justify-content:center;align-items:center;height:36px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n NEW_CHAT = \"NEW_CHAT\",\n LOGOUT = \"LOGOUT\",\n TODAY = \"TODAY\",\n YESTERDAY = \"YESTERDAY\",\n PREVIOUS_7_DAYS = \"PREVIOUS_7_DAYS\",\n PREVIOUS_30_DAYS = \"PREVIOUS_30_DAYS\",\n SWITCH_LANGUAGE = \"SWITCH_LANGUAGE\",\n PROJECTS = \"PROJECTS\",\n HISTORY = \"HISTORY\",\n CREATE_PROJECT = \"CREATE_PROJECT\",\n MOVE_TO_PROJECT = \"MOVE_TO_PROJECT\",\n UNTITLED = \"UNTITLED\",\n UNNAMED = \"UNNAMED\",\n}\n\nconst en: Locale = {\n [K.NEW_CHAT]: \"New chat\",\n [K.LOGOUT]: \"Logout\",\n [K.TODAY]: \"Today\",\n [K.YESTERDAY]: \"Yesterday\",\n [K.PREVIOUS_7_DAYS]: \"Previous 7 days\",\n [K.PREVIOUS_30_DAYS]: \"Previous 30 days\",\n [K.SWITCH_LANGUAGE]: \"中文\",\n [K.PROJECTS]: \"Project management\",\n [K.HISTORY]: \"Chat history\",\n [K.CREATE_PROJECT]: \"Create project\",\n [K.MOVE_TO_PROJECT]: \"Move to project\",\n [K.UNTITLED]: \"Untitled\",\n [K.UNNAMED]: \"Unnamed\",\n};\n\nconst zh: Locale = {\n [K.NEW_CHAT]: \"新对话\",\n [K.LOGOUT]: \"登出\",\n [K.TODAY]: \"今天\",\n [K.YESTERDAY]: \"昨天\",\n [K.PREVIOUS_7_DAYS]: \"过去7天\",\n [K.PREVIOUS_30_DAYS]: \"过去30天\",\n [K.SWITCH_LANGUAGE]: \"English\",\n [K.PROJECTS]: \"项目管理\",\n [K.HISTORY]: \"历史对话\",\n [K.CREATE_PROJECT]: \"创建项目\",\n [K.MOVE_TO_PROJECT]: \"移动到项目\",\n [K.UNTITLED]: \"无标题\",\n [K.UNNAMED]: \"未命名\",\n};\n\nexport const NS = \"bricks/ai-portal/elevo-sidebar\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n"],"names":["AgentFlowApi_searchTaskForAgentFlow","async","data","options","http","post","LegacyChatHistory","forwardRef","LowLevelChatHistory","_ref","ref","activeId","actions","urlTemplate","onActionClick","onHistoryClick","rootRef","useRef","list","setList","useState","nextToken","setNextToken","loadNextToken","setLoadNextToken","useEffect","Promise","all","next_token","interceptorParams","ignoreLoadingBar","resolve","setTimeout","then","_ref2","prev","catch","error","console","groups","useMemo","groupMap","Map","now","moment","startOfDay","clone","startOf","yesterday","subtract","sevenDaysAgo","thirtyDaysAgo","timestamps","item","groupKey","startTime","t","K","TODAY","YESTERDAY","PREVIOUS_7_DAYS","PREVIOUS_30_DAYS","format","group","get","set","title","items","push","values","actionsVisible","setActionsVisible","nextRef","next","current","root","observer","IntersectionObserver","entries","entry","isIntersecting","observe","disconnect","pullIdRef","pull","useCallback","pullId","tempList","prevList","newList","newIds","Set","map","id","newItemsMap","foundIntersection","foundChanged","isFirst","newItem","isEqual","filter","has","useImperativeHandle","React","className","key","WrappedLink","_extends","classNames","active","onClick","url","parseTemplate","WrappedMiniActions","e","action","detail","onVisibleChange","DONE_STATES","includes","state","WrappedIcon","lib","icon","spinning","theme","wrapBrick","WrappedDropdownActions","WrappedEasyopsAvatar","WrappedIconButton","ElevoApi_listElevoConversations","params","ADD_ICON","ChatHistory","historyActiveId","historyActions","historyUrlTemplate","projectActiveId","projectUrlTemplate","projectActions","onProjectActionClick","onAddProject","projects","setProjects","projectsCollapsed","setProjectsCollapsed","projectsError","setProjectsError","historyList","setHistoryList","historyCollapsed","setHistoryCollapsed","historyError","setHistoryError","initialRef","movedConversations","setMovedConversations","mergedHistoryActions","isDropdown","text","MOVE_TO_PROJECT","disabled","length","project","event","instanceId","name","page","page_size","ElevoApi_getElevoProjects","token","limit","onlyOwner","onlyUnrelatedProject","conversations","conversationId","removeProject","projectId","p","addProject","moveConversation","filteredHistoryList","collapsed","PROJECTS","variant","tooltip","CREATE_PROJECT","UNNAMED","HISTORY","UNTITLED","___CSS_LOADER_EXPORT___","module","toString","en","NEW_CHAT","LOGOUT","SWITCH_LANGUAGE","zh","NS","locales","i18n","getFixedT"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(globalThis.webpackChunk_next_bricks_ai_portal=globalThis.webpackChunk_next_bricks_ai_portal||[]).push([[2052,6573],{433:(e,t,n)=>{n.d(t,{I:()=>l,K:()=>o,NS:()=>s,t:()=>c});var r=n(87117);let o=function(e){return e.ASK_ANY_THING="ASK_ANYTHING",e.COMMON_TASKS="COMMON_TASKS",e}({});const i={[o.ASK_ANY_THING]:"Ask anything",[o.COMMON_TASKS]:"Common tasks"},a={[o.ASK_ANY_THING]:"询问任何问题",[o.COMMON_TASKS]:"常用任务"},s="bricks/ai-portal/chat-box",l={en:i,zh:a},c=r.i18n.getFixedT(null,s)},11369:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(17545);function o(e){var t=function(e){if("object"!=(0,r.A)(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=(0,r.A)(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==(0,r.A)(t)?t:t+""}},12559:(e,t,n)=>{function r(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}n.d(t,{A:()=>r})},17545:(e,t,n)=>{function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}n.d(t,{A:()=>r})},24586:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(11369);function o(e,t,n){return(t=(0,r.A)(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},26902:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(17545);function o(e){if(Object(e)!==e)throw TypeError("right-hand side of 'in' should be an object, got "+(null!==e?(0,r.A)(e):"null"));return e}},36758:e=>{e.exports=function(e){return e[1]}},40935:e=>{e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",r=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),r&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),r&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,r,o,i){"string"==typeof e&&(e=[[null,e,void 0]]);var a={};if(r)for(var s=0;s<this.length;s++){var l=this[s][0];null!=l&&(a[l]=!0)}for(var c=0;c<e.length;c++){var u=[].concat(e[c]);r&&a[u[0]]||(void 0!==i&&(void 0===u[5]||(u[1]="@layer".concat(u[5].length>0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=i),n&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=n):u[2]=n),o&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=o):u[4]="".concat(o)),t.push(u))}},t}},47008:(e,t,n)=>{n.d(t,{A:()=>f});var r=n(36758),o=n.n(r),i=n(40935),a=n.n(i),s=n(20062),l=n.n(s),c=new URL(n(47336),n.b),u=a()(o()),d=l()(c);u.push([e.id,`:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.root{color:#262626;background:url(${d}) no-repeat center bottom;background-size:100% 104px;padding:12px 12px 29px}.container{position:relative;background:#ffffff;box-shadow:0px 2px 4px 0px rgba(38,45,65,0.1);border-radius:16px;border:1px solid #dadfe8}.container:has(textarea:focus){border-color:#b7c3d8}textarea{display:block;width:100%;padding:10px 16px 50px;color:var(--antd-input-color);border-radius:16px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,0.5);font-size:14px;line-height:22px;height:120px}textarea::placeholder{color:rgba(0,0,0,0.4)}.btn-send:focus,\ntextarea:focus{outline:none}.actions-bar{position:absolute;bottom:12px;left:14px;right:14px;display:flex;align-items:flex-end;justify-content:space-between}.btn-send{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--elevo-color-brand);border:none;border-radius:8px;color:#fff;flex-shrink:0}.btn-send[disabled]{background:rgba(0,0,0,0.15)}.btn-send:not([disabled]){cursor:pointer}.btn-send:not([disabled]):hover{background:#5166ff}.btn-send:not([disabled]):active{background:#1e33cc}`,""]);const f=u.toString()},47336:(e,t,n)=>{e.exports=n.p+"images/25c20165.png"},62740:(e,t,n)=>{n.d(t,{A:()=>s});var r=n(17545),o=n(26902);function i(e,t,n){"symbol"==(0,r.A)(t)&&(t=(t=t.description)?"["+t+"]":"");try{Object.defineProperty(e,"name",{configurable:!0,value:n?n+" "+t:t})}catch(e){}return e}var a=n(11369);function s(e,t,n,s,l,c){var u,d,f,p,h,b,m,g=Symbol.metadata||Symbol.for("Symbol.metadata"),v=Object.defineProperty,x=Object.create,y=[x(null),x(null)],A=t.length;function w(t,n,r){return function(o,i){n&&(i=o,o=e);for(var a=0;a<t.length;a++)i=t[a].apply(o,r?[i]:[]);return r?i:o}}function S(e,t,n,r){if("function"!=typeof e&&(r||void 0!==e))throw new TypeError(t+" must "+(n||"be")+" a function"+(r?"":" or undefined"));return e}function k(e,t,n,o,a,s,l,c,f,p,h){function b(e){if(!h(e))throw new TypeError("Attempted to access private element on non-instance")}var m=[].concat(t[0]),g=t[3],x=!l,A=1===a,k=3===a,C=4===a,E=2===a;function z(t,n,r){return function(o,i){return n&&(i=o,o=e),r&&r(o),R[t].call(o,i)}}if(!x){var R={},N=[],T=k?"get":C||A?"set":"value";if(f?(p||A?R={get:i((function(){return g(this)}),o,"get"),set:function(e){t[4](this,e)}}:R[T]=g,p||i(R[T],o,E?"":T)):p||(R=Object.getOwnPropertyDescriptor(e,o)),!p&&!f){if((d=y[+c][o])&&7!=(d^a))throw Error("Decorating two elements with the same name ("+R[T].name+") is not supported yet");y[+c][o]=a<3?1:a}}for(var _=e,j=m.length-1;j>=0;j-=n?2:1){var K=S(m[j],"A decorator","be",!0),M=n?m[j-1]:void 0,O={},P={kind:["field","accessor","method","getter","setter","class"][a],name:o,metadata:u,addInitializer:function(e,t){if(e.v)throw Error("attempted to call addInitializer after decoration was finished");S(t,"An initializer","be",!0),s.push(t)}.bind(null,O)};if(x)d=K.call(M,_,P),O.v=1,S(d,"class decorators","return")&&(_=d);else if(P.static=c,P.private=f,d=P.access={has:f?h.bind():function(e){return o in e}},C||(d.get=f?E?function(e){return b(e),R.value}:z("get",0,b):function(e){return e[o]}),E||k||(d.set=f?z("set",0,b):function(e,t){e[o]=t}),_=K.call(M,A?{get:R.get,set:R.set}:R[T],P),O.v=1,A){if("object"==(0,r.A)(_)&&_)(d=S(_.get,"accessor.get"))&&(R.get=d),(d=S(_.set,"accessor.set"))&&(R.set=d),(d=S(_.init,"accessor.init"))&&N.unshift(d);else if(void 0!==_)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else S(_,(p?"field":"method")+" decorators","return")&&(p?N.unshift(_):R[T]=_)}return a<2&&l.push(w(N,c,1),w(s,c,0)),p||x||(f?A?l.splice(-1,0,z("get",c),z("set",c)):l.push(E?R[T]:S.call.bind(R[T])):v(e,o,R)),_}function C(e){return v(e,g,{configurable:!0,enumerable:!0,value:u})}return void 0!==c&&(u=c[g]),u=x(null==u?null:u),h=[],b=function(e){e&&h.push(w(e))},m=function(t,r){for(var i=0;i<n.length;i++){var s=n[i],c=s[1],u=7&c;if((8&c)==t&&!u==r){var d=s[2],b=!!s[3],m=16&c;k(t?e:e.prototype,s,m,b?"#"+d:(0,a.A)(d),u,u<2?[]:t?p=p||[]:f=f||[],h,!!t,b,r,t&&b?function(t){return(0,o.A)(t)===e}:l)}}},m(8,0),m(0,0),m(8,1),m(0,1),b(f),b(p),d=h,A||C(e),{e:d,get c(){var n=[];return A&&[C(e=k(e,[t],s,e.name,5,n)),w(n,1)]}}}},67707:(e,t,n)=>{n.r(t),n.d(t,{ChatBox:()=>B,ChatBoxComponent:()=>I,LegacyChatBoxComponent:()=>$});var r,o=n(74635),i=n(70918),a=n(24586),s=n(26902),l=n(5536),c=n(86121),u=n(70829),d=n(62740),f=n(18769),p=n.n(f),h=n(7921),b=n(11280),m=n(71451),g=(n(65168),n(87117)),v=n(433),x=n(47008);let y,A,w,S,k,C,E,z,R,N,T,_;(0,g.initializeI18n)(v.NS,v.I);const j=(0,b.wrapBrick)("eo-icon"),{defineElement:K,property:M,event:O,method:P}=(0,h.createDecorators)(),I=(0,f.forwardRef)($);let B;var H=new WeakMap,V=new WeakMap,F=new WeakMap,W=new WeakMap,D=new WeakSet,Y=new WeakMap;class G extends b.ReactNextElement{constructor(){super(...arguments),(0,o.A)(this,D),(0,a.A)(this,"ref",(y(this),(0,f.createRef)())),(0,i.A)(this,H,w(this)),(0,i.A)(this,V,(S(this),k(this))),(0,i.A)(this,F,(C(this),E(this))),(0,i.A)(this,W,(z(this),R(this))),(0,i.A)(this,Y,(_(this),e=>{(0,l.A)(D,this,N).emit(e)}))}get disabled(){return(0,u.A)(H,this)}set disabled(e){(0,c.A)(H,this,e)}get placeholder(){return(0,u.A)(V,this)}set placeholder(e){(0,c.A)(V,this,e)}get autoFocus(){return(0,u.A)(F,this)}set autoFocus(e){(0,c.A)(F,this,e)}setValue(e){var t;null===(t=this.ref.current)||void 0===t||t.setValue(e)}getValue(){var e;return null===(e=this.ref.current)||void 0===e?void 0:e.getValue()}render(){return p().createElement(I,{disabled:this.disabled,placeholder:this.placeholder,autoFocus:this.autoFocus,onSubmit:(0,u.A)(Y,this),ref:this.ref})}}function $(e,t){let{disabled:n,placeholder:r,autoFocus:o,onSubmit:i}=e;const a=(0,f.useRef)(null),s=(0,f.useRef)(null),[l,c]=(0,f.useState)(""),u=(0,f.useRef)("");(0,f.useImperativeHandle)(t,(()=>({setValue:e=>{u.current=e,c(e)},getValue:()=>u.current})));const d=(0,f.useCallback)((e=>{e.currentTarget.value&&(null==i||i(e.currentTarget.value))}),[i]),h=(0,f.useCallback)((e=>{u.current=e.target.value,c(e.target.value)}),[]),b=(0,f.useCallback)((()=>{null==i||i(u.current)}),[i]);return(0,f.useEffect)((()=>{o&&Promise.resolve().then((()=>{var e;null===(e=s.current)||void 0===e||e.focus()}))}),[]),p().createElement("div",{className:"root"},p().createElement("div",{className:"container",ref:a},p().createElement(m.e,{containerRef:a,ref:s,value:l,minRows:58/22,paddingSize:60,autoResize:!0,disabled:n,placeholder:null!=r?r:(0,v.t)(v.K.ASK_ANY_THING),submitWhen:"enter-without-shift",onSubmit:d,onChange:h}),p().createElement("div",{className:"actions-bar"},p().createElement("div",null,p().createElement("slot",{name:"actions"})),p().createElement("button",{className:"btn-send",disabled:!l,onClick:b},p().createElement(j,{lib:"fa",prefix:"fas",icon:"arrow-up"})))))}r=G,({e:[w,S,k,C,E,z,R,N,T,_,y],c:[B,A]}=(0,d.A)(r,[K("ai-portal.chat-box",{styleTexts:[x.A]})],[[M({type:Boolean}),1,"disabled"],[M(),1,"placeholder"],[M({type:Boolean}),1,"autoFocus"],[O({type:"message.submit"}),1,"messageSubmit",e=>(0,u.A)(W,e),(e,t)=>(0,c.A)(W,e,t)],[P(),2,"setValue"],[P(),2,"getValue"]],0,(e=>Y.has((0,s.A)(e))),b.ReactNextElement)),A()},70829:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(12559);function o(e,t){return e.get((0,r.A)(e,t))}},70918:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(72016);function o(e,t,n){(0,r.A)(e,t),t.set(e,n)}},71451:(e,t,n)=>{n.d(t,{e:()=>u});var r=n(89575),o=n(18769),i=n(59435),a=n(99126);const s=["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"];let l;const c=/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"metaKey":"ctrlKey",u=o.forwardRef(d);function d(e,t){let{autoResize:n,minRows:u,maxRows:d,borderSize:f,paddingSize:p,containerRef:h,value:b,style:m,submitWhen:g,onChange:v,onSubmit:x,onKeyDown:y,onCompositionStart:A,onCompositionEnd:w,...S}=e;const k=null==n||n,[C,E]=(0,o.useState)(null!=b?b:""),z=(0,o.useRef)(null),[R,N]=(0,o.useState)(null);(0,o.useImperativeHandle)(t,(()=>({focus:()=>{const e=z.current;if(e){var t;const n=null===(t=e.value)||void 0===t?void 0:t.length;e.focus(),n&&e.setSelectionRange(n,n)}}})),[]);const T=(0,o.useCallback)((()=>{const e=z.current;if(e&&k){const t=function(e,t){const{minRows:n=null,maxRows:r=null,borderSize:o=2,paddingSize:i=8}=null!=t?t:{};l||(l=document.createElement("textarea"),l.setAttribute("tab-index","-1"),l.setAttribute("aria-hidden","true"),document.body.appendChild(l));const a=window.getComputedStyle(e),c=s.map((e=>`${e}:${a.getPropertyValue(e)}`)).join(";");let u,d,f;l.setAttribute("style",`${c};\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 pointer-events: none!important;\n`),l.value=e.value||e.placeholder||"";let p=l.scrollHeight+o;if(null!==n||null!==r){const e=parseFloat(window.getComputedStyle(l).getPropertyValue("line-height"));null!==n&&(u=e*n+i+o,p=Math.max(u,p)),null!==r&&(d=e*r+i+o,p<=d&&(f="hidden"),p=Math.min(d,p))}const h={height:p,overflowY:f,resize:"none"};return u&&(h.minHeight=u),d&&(h.maxHeight=d),h}(e,{minRows:u,maxRows:d,borderSize:f,paddingSize:p});(0,i.flushSync)((()=>{N(t)}))}}),[k,d,u,f,p]);(0,o.useEffect)((()=>{E(null!=b?b:"")}),[b]),(0,o.useEffect)((()=>{T()}),[T,C]);const _=(0,o.useRef)(!1),j=(0,o.useCallback)((e=>{_.current=!0,null==A||A(e)}),[A]),K=(0,o.useCallback)((e=>{_.current=!1,null==w||w(e)}),[w]),M=(0,o.useCallback)((e=>{_.current||("Enter"===e.key&&("enter-without-shift"===g?!e.shiftKey:"enter-with-mod"===g&&e[c])&&(e.preventDefault(),e.stopPropagation(),null==x||x(e)),null==y||y(e))}),[y,x,g]);return(0,o.useEffect)((()=>{const e=null==h?void 0:h.current;if(!e||!k)return;let t;const n=new a.A((n=>{for(const r of n)if(r.target===e){const e=r.contentBoxSize?r.contentBoxSize[0]?r.contentBoxSize[0].inlineSize:r.contentBoxSize.inlineSize:r.contentRect.width;if(void 0!==e&&e!==t){const n=!t;t=e,n||requestAnimationFrame(T)}}}));return n.observe(e),()=>{n.disconnect()}}),[k,h,T]),o.createElement("textarea",(0,r.A)({},S,{ref:z,value:C,style:{...m,...R},onChange:e=>{E(e.target.value),null==v||v(e)},onCompositionStart:j,onCompositionEnd:K,onKeyDown:M}))}},72016:(e,t,n)=>{function r(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}n.d(t,{A:()=>r})},86121:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(12559);function o(e,t,n){return e.set((0,r.A)(e,t),n),n}}}]);
2
+ //# sourceMappingURL=chat-box.95d5030b.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunks/chat-box.95d5030b.js","mappings":"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","sources":["webpack:///./src/chat-box/i18n.ts","webpack:///../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/assertClassBrand.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/checkInRHS.js","webpack:///../../node_modules/css-loader/dist/runtime/noSourceMaps.js","webpack:///../../node_modules/css-loader/dist/runtime/api.js","webpack:///./src/chat-box/styles.shadow.css","webpack:///../../node_modules/@babel/runtime/helpers/esm/setFunctionName.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/applyDecs2311.js","webpack:///./src/chat-box/index.tsx","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet2.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js","webpack:///../../../src/utils/calculateAutoSizeStyle.ts","webpack:///../../src/TextareaAutoResize.tsx","webpack:///../../node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet2.js"],"sourcesContent":["import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n ASK_ANY_THING = \"ASK_ANYTHING\",\n COMMON_TASKS = \"COMMON_TASKS\",\n}\n\nconst en: Locale = {\n [K.ASK_ANY_THING]: \"Ask anything\",\n [K.COMMON_TASKS]: \"Common tasks\",\n};\n\nconst zh: Locale = {\n [K.ASK_ANY_THING]: \"询问任何问题\",\n [K.COMMON_TASKS]: \"常用任务\",\n};\n\nexport const NS = \"bricks/ai-portal/chat-box\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","export default function _assertClassBrand(e, t, n) {\n if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n;\n throw new TypeError(\"Private element is not present on this object\");\n}","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _typeof from \"./typeof.js\";\nexport default function _checkInRHS(e) {\n if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? _typeof(e) : \"null\"));\n return e;\n}","\"use strict\";\n\nmodule.exports = function (i) {\n return i[1];\n};","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\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(\"./images/bg.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___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}*{box-sizing:border-box}.root{color:#262626;background:url(${___CSS_LOADER_URL_REPLACEMENT_0___}) no-repeat center bottom;background-size:100% 104px;padding:12px 12px 29px}.container{position:relative;background:#ffffff;box-shadow:0px 2px 4px 0px rgba(38,45,65,0.1);border-radius:16px;border:1px solid #dadfe8}.container:has(textarea:focus){border-color:#b7c3d8}textarea{display:block;width:100%;padding:10px 16px 50px;color:var(--antd-input-color);border-radius:16px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,0.5);font-size:14px;line-height:22px;height:120px}textarea::placeholder{color:rgba(0,0,0,0.4)}.btn-send:focus,\ntextarea:focus{outline:none}.actions-bar{position:absolute;bottom:12px;left:14px;right:14px;display:flex;align-items:flex-end;justify-content:space-between}.btn-send{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--elevo-color-brand);border:none;border-radius:8px;color:#fff;flex-shrink:0}.btn-send[disabled]{background:rgba(0,0,0,0.15)}.btn-send:not([disabled]){cursor:pointer}.btn-send:not([disabled]):hover{background:#5166ff}.btn-send:not([disabled]):active{background:#1e33cc}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import _typeof from \"./typeof.js\";\nexport default function setFunctionName(e, t, n) {\n \"symbol\" == _typeof(t) && (t = (t = t.description) ? \"[\" + t + \"]\" : \"\");\n try {\n Object.defineProperty(e, \"name\", {\n configurable: !0,\n value: n ? n + \" \" + t : t\n });\n } catch (e) {}\n return e;\n}","import _typeof from \"./typeof.js\";\nimport checkInRHS from \"./checkInRHS.js\";\nimport setFunctionName from \"./setFunctionName.js\";\nimport toPropertyKey from \"./toPropertyKey.js\";\nexport default function applyDecs2311(e, t, n, r, o, i) {\n var a,\n c,\n u,\n s,\n f,\n l,\n p,\n d = Symbol.metadata || Symbol[\"for\"](\"Symbol.metadata\"),\n m = Object.defineProperty,\n h = Object.create,\n y = [h(null), h(null)],\n v = t.length;\n function g(t, n, r) {\n return function (o, i) {\n n && (i = o, o = e);\n for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []);\n return r ? i : o;\n };\n }\n function b(e, t, n, r) {\n if (\"function\" != typeof e && (r || void 0 !== e)) throw new TypeError(t + \" must \" + (n || \"be\") + \" a function\" + (r ? \"\" : \" or undefined\"));\n return e;\n }\n function applyDec(e, t, n, r, o, i, u, s, f, l, p) {\n function d(e) {\n if (!p(e)) throw new TypeError(\"Attempted to access private element on non-instance\");\n }\n var h = [].concat(t[0]),\n v = t[3],\n w = !u,\n D = 1 === o,\n S = 3 === o,\n j = 4 === o,\n E = 2 === o;\n function I(t, n, r) {\n return function (o, i) {\n return n && (i = o, o = e), r && r(o), P[t].call(o, i);\n };\n }\n if (!w) {\n var P = {},\n k = [],\n F = S ? \"get\" : j || D ? \"set\" : \"value\";\n if (f ? (l || D ? P = {\n get: setFunctionName(function () {\n return v(this);\n }, r, \"get\"),\n set: function set(e) {\n t[4](this, e);\n }\n } : P[F] = v, l || setFunctionName(P[F], r, E ? \"\" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) {\n if ((c = y[+s][r]) && 7 != (c ^ o)) throw Error(\"Decorating two elements with the same name (\" + P[F].name + \") is not supported yet\");\n y[+s][r] = o < 3 ? 1 : o;\n }\n }\n for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) {\n var z = b(h[O], \"A decorator\", \"be\", !0),\n A = n ? h[O - 1] : void 0,\n H = {},\n K = {\n kind: [\"field\", \"accessor\", \"method\", \"getter\", \"setter\", \"class\"][o],\n name: r,\n metadata: a,\n addInitializer: function (e, t) {\n if (e.v) throw Error(\"attempted to call addInitializer after decoration was finished\");\n b(t, \"An initializer\", \"be\", !0), i.push(t);\n }.bind(null, H)\n };\n if (w) c = z.call(A, N, K), H.v = 1, b(c, \"class decorators\", \"return\") && (N = c);else if (K[\"static\"] = s, K[\"private\"] = f, c = K.access = {\n has: f ? p.bind() : function (e) {\n return r in e;\n }\n }, j || (c.get = f ? E ? function (e) {\n return d(e), P.value;\n } : I(\"get\", 0, d) : function (e) {\n return e[r];\n }), E || S || (c.set = f ? I(\"set\", 0, d) : function (e, t) {\n e[r] = t;\n }), N = z.call(A, D ? {\n get: P.get,\n set: P.set\n } : P[F], K), H.v = 1, D) {\n if (\"object\" == _typeof(N) && N) (c = b(N.get, \"accessor.get\")) && (P.get = c), (c = b(N.set, \"accessor.set\")) && (P.set = c), (c = b(N.init, \"accessor.init\")) && k.unshift(c);else if (void 0 !== N) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\");\n } else b(N, (l ? \"field\" : \"method\") + \" decorators\", \"return\") && (l ? k.unshift(N) : P[F] = N);\n }\n return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I(\"get\", s), I(\"set\", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N;\n }\n function w(e) {\n return m(e, d, {\n configurable: !0,\n enumerable: !0,\n value: a\n });\n }\n return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function l(e) {\n e && f.push(g(e));\n }, p = function p(t, r) {\n for (var i = 0; i < n.length; i++) {\n var a = n[i],\n c = a[1],\n l = 7 & c;\n if ((8 & c) == t && !l == r) {\n var p = a[2],\n d = !!a[3],\n m = 16 & c;\n applyDec(t ? e : e.prototype, a, m, d ? \"#\" + p : toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) {\n return checkInRHS(t) === e;\n } : o);\n }\n }\n }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), {\n e: c,\n get c() {\n var n = [];\n return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)];\n }\n };\n}","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n useImperativeHandle,\n createRef,\n} from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport {\n TextareaAutoResize,\n type TextareaAutoResizeRef,\n} from \"@next-shared/form\";\nimport \"@next-core/theme\";\nimport { initializeI18n } from \"@next-core/i18n\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { K, NS, locales, t } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\n\ninitializeI18n(NS, locales);\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport const ChatBoxComponent = forwardRef(LegacyChatBoxComponent);\n\nexport interface ChatBoxProps {\n disabled?: boolean;\n placeholder?: string;\n autoFocus?: boolean;\n}\n\nexport interface Suggestion {\n title: string;\n content: string;\n}\n\nexport interface ChatBoxRef {\n setValue: (value: string) => void;\n getValue: () => string;\n}\n\n/**\n * 构件 `ai-portal.chat-box`\n */\nexport\n@defineElement(\"ai-portal.chat-box\", {\n styleTexts: [styleText],\n})\nclass ChatBox extends ReactNextElement implements ChatBoxProps {\n ref = createRef<ChatBoxRef>();\n\n @property({ type: Boolean })\n accessor disabled: boolean | undefined;\n\n @property()\n accessor placeholder: string | undefined;\n\n @property({ type: Boolean })\n accessor autoFocus: boolean | undefined;\n\n @event({ type: \"message.submit\" })\n accessor #messageSubmit!: EventEmitter<string>;\n\n #handleMessageSubmit = (value: string) => {\n this.#messageSubmit.emit(value);\n };\n\n @method()\n setValue(value: string) {\n this.ref.current?.setValue(value);\n }\n\n @method()\n getValue() {\n return this.ref.current?.getValue();\n }\n\n render() {\n return (\n <ChatBoxComponent\n disabled={this.disabled}\n placeholder={this.placeholder}\n autoFocus={this.autoFocus}\n onSubmit={this.#handleMessageSubmit}\n ref={this.ref}\n />\n );\n }\n}\n\nexport interface ChatBoxComponentProps extends ChatBoxProps {\n // Define react event handlers here.\n onSubmit?: (value: string) => void;\n ref?: React.Ref<ChatBoxRef>;\n}\n\nexport function LegacyChatBoxComponent(\n { disabled, placeholder, autoFocus, onSubmit }: ChatBoxComponentProps,\n ref: React.Ref<ChatBoxRef>\n) {\n const containerRef = useRef<HTMLDivElement>(null);\n const textareaRef = useRef<TextareaAutoResizeRef>(null);\n const [value, setValue] = useState(\"\");\n const valueRef = useRef(\"\");\n\n useImperativeHandle(ref, () => ({\n setValue: (value: string) => {\n valueRef.current = value;\n setValue(value);\n },\n getValue: () => {\n return valueRef.current;\n },\n }));\n\n const handleSubmit = useCallback(\n (e: React.FormEvent<HTMLTextAreaElement>) => {\n if (e.currentTarget.value) {\n onSubmit?.(e.currentTarget.value);\n }\n },\n [onSubmit]\n );\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n valueRef.current = e.target.value;\n setValue(e.target.value);\n },\n []\n );\n\n const handleSubmitClick = useCallback(() => {\n onSubmit?.(valueRef.current);\n }, [onSubmit]);\n\n useEffect(\n () => {\n if (autoFocus) {\n Promise.resolve().then(() => {\n textareaRef.current?.focus();\n });\n }\n },\n // One-time focus\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n return (\n <div className=\"root\">\n <div className=\"container\" ref={containerRef}>\n <TextareaAutoResize\n containerRef={containerRef}\n ref={textareaRef}\n value={value}\n minRows={58 / 22}\n paddingSize={60}\n autoResize\n disabled={disabled}\n placeholder={placeholder ?? t(K.ASK_ANY_THING)}\n submitWhen=\"enter-without-shift\"\n onSubmit={handleSubmit}\n onChange={handleChange}\n />\n <div className=\"actions-bar\">\n <div>\n <slot name=\"actions\"></slot>\n </div>\n <button\n className=\"btn-send\"\n disabled={!value}\n onClick={handleSubmitClick}\n >\n <WrappedIcon lib=\"fa\" prefix=\"fas\" icon=\"arrow-up\" />\n </button>\n </div>\n </div>\n </div>\n );\n}\n","import assertClassBrand from \"./assertClassBrand.js\";\nexport default function _classPrivateFieldGet2(s, a) {\n return s.get(assertClassBrand(s, a));\n}","import checkPrivateRedeclaration from \"./checkPrivateRedeclaration.js\";\nexport default function _classPrivateFieldInitSpec(obj, privateMap, value) {\n checkPrivateRedeclaration(obj, privateMap);\n privateMap.set(obj, value);\n}","// istanbul ignore file\nimport type React from \"react\";\n\nconst 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 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];\n\nlet hiddenTextarea: HTMLTextAreaElement | undefined;\n\nexport interface AutoSizeOptions {\n minRows?: number | null;\n maxRows?: number | null;\n borderSize?: number;\n paddingSize?: number;\n}\n\n/**\n * 计算 textarea 高度\n * https://github.com/react-component/textarea/blob/1c0026fbe30e5f7dff1fca695b2cf262246381ca/src/calculateNodeHeight.tsx\n */\nexport default function calculateAutoSizeStyle(\n uiTextNode: HTMLTextAreaElement,\n options?: AutoSizeOptions\n): React.CSSProperties {\n const {\n minRows = null,\n maxRows = null,\n borderSize = 2,\n paddingSize = 8,\n } = options ?? {};\n\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;\n let maxHeight: number | undefined;\n let overflowY: React.CSSProperties[\"overflowY\"];\n\n let height = hiddenTextarea.scrollHeight + borderSize;\n\n if (minRows !== null || maxRows !== null) {\n const singleRowHeight =\n process.env.NODE_ENV === \"test\"\n ? 22\n : parseFloat(\n window\n .getComputedStyle(hiddenTextarea)\n .getPropertyValue(\"line-height\")\n );\n if (minRows !== null) {\n minHeight = singleRowHeight * minRows + paddingSize + borderSize;\n height = Math.max(minHeight, height);\n }\n if (maxRows !== null) {\n maxHeight = singleRowHeight * maxRows + paddingSize + borderSize;\n if (height <= maxHeight) {\n overflowY = \"hidden\";\n }\n height = Math.min(maxHeight, height);\n }\n }\n\n const style: React.CSSProperties = {\n height,\n overflowY,\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 useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { flushSync } from \"react-dom\";\nimport ResizeObserver from \"resize-observer-polyfill\";\nimport calculateAutoSizeStyle from \"./utils/calculateAutoSizeStyle.js\";\n\n// istanbul ignore next\nconst modKey = /Mac|iPod|iPhone|iPad/.test(navigator.platform)\n ? \"metaKey\"\n : \"ctrlKey\";\n\nexport interface TextareaAutoResizeProps\n extends React.DetailedHTMLProps<\n React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n HTMLTextAreaElement\n > {\n /** @default true */\n autoResize?: boolean;\n minRows?: number | null;\n maxRows?: number | null;\n /** @default 2 */\n borderSize?: number;\n /** @default 8 */\n paddingSize?: number;\n containerRef?: React.RefObject<HTMLElement>;\n submitWhen?: \"enter-without-shift\" | \"enter-with-mod\";\n}\n\nexport interface TextareaAutoResizeRef {\n focus(): void;\n}\n\nexport const TextareaAutoResize = React.forwardRef<\n TextareaAutoResizeRef,\n TextareaAutoResizeProps\n>(LegacyTextareaAutoResize);\n\nfunction LegacyTextareaAutoResize(\n {\n autoResize: _autoResize,\n minRows,\n maxRows,\n borderSize,\n paddingSize,\n containerRef,\n value: propValue,\n style,\n submitWhen,\n onChange,\n onSubmit,\n onKeyDown,\n onCompositionStart,\n onCompositionEnd,\n ...props\n }: TextareaAutoResizeProps,\n ref: React.ForwardedRef<TextareaAutoResizeRef>\n): React.JSX.Element {\n const autoResize = _autoResize ?? true;\n const [value, setValue] = useState(propValue ?? \"\");\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const [autoStyle, setAutoStyle] = useState<React.CSSProperties | null>(null);\n\n useImperativeHandle(\n ref,\n () => ({\n focus: () => {\n const textarea = textareaRef.current;\n // istanbul ignore else: defensive check\n if (textarea) {\n const valueLength = textarea.value?.length;\n textarea.focus();\n valueLength && textarea.setSelectionRange(valueLength, valueLength);\n }\n },\n }),\n []\n );\n\n const doAutoResize = useCallback(() => {\n const textarea = textareaRef.current;\n if (textarea && autoResize) {\n const style = calculateAutoSizeStyle(textarea, {\n minRows,\n maxRows,\n borderSize,\n paddingSize,\n });\n // istanbul ignore next\n if (process.env.NODE_ENV === \"test\") {\n setAutoStyle(style);\n } else {\n flushSync(() => {\n setAutoStyle(style);\n });\n }\n }\n }, [autoResize, maxRows, minRows, borderSize, paddingSize]);\n\n const handleInputChange = (\n e: React.ChangeEvent<HTMLTextAreaElement>\n ): void => {\n setValue(e.target.value);\n onChange?.(e);\n };\n\n useEffect(() => {\n setValue(propValue ?? \"\");\n }, [propValue]);\n\n useEffect(() => {\n doAutoResize();\n }, [doAutoResize, value]);\n\n const compositionRef = useRef(false);\n\n const handleCompositionStart = useCallback(\n (e: React.CompositionEvent<HTMLTextAreaElement>) => {\n compositionRef.current = true;\n onCompositionStart?.(e);\n },\n [onCompositionStart]\n );\n\n const handleCompositionEnd = useCallback(\n (e: React.CompositionEvent<HTMLTextAreaElement>) => {\n compositionRef.current = false;\n onCompositionEnd?.(e);\n },\n [onCompositionEnd]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (compositionRef.current) {\n // Ignore key events during composition\n return;\n }\n\n if (\n e.key === \"Enter\" &&\n (submitWhen === \"enter-without-shift\"\n ? !e.shiftKey\n : submitWhen === \"enter-with-mod\" && e[modKey])\n ) {\n e.preventDefault();\n e.stopPropagation();\n onSubmit?.(e);\n }\n\n onKeyDown?.(e);\n },\n [onKeyDown, onSubmit, submitWhen]\n );\n\n // istanbul ignore next\n useEffect(() => {\n const container = containerRef?.current;\n if (!container || !autoResize) {\n return;\n }\n let previousInlineSize: number | undefined;\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === container) {\n // istanbul ignore next: compatibility\n const currentInlineSize = entry.contentBoxSize\n ? entry.contentBoxSize[0]\n ? entry.contentBoxSize[0].inlineSize\n : (entry.contentBoxSize as unknown as ResizeObserverSize)\n .inlineSize\n : entry.contentRect.width;\n if (\n currentInlineSize !== undefined &&\n currentInlineSize !== previousInlineSize\n ) {\n const isInitial = !previousInlineSize;\n previousInlineSize = currentInlineSize;\n if (!isInitial) {\n requestAnimationFrame(doAutoResize);\n }\n }\n }\n }\n });\n observer.observe(container);\n return () => {\n observer.disconnect();\n };\n }, [autoResize, containerRef, doAutoResize]);\n\n return (\n <textarea\n {...props}\n ref={textareaRef}\n value={value}\n style={{\n ...style,\n ...autoStyle,\n }}\n onChange={handleInputChange}\n onCompositionStart={handleCompositionStart}\n onCompositionEnd={handleCompositionEnd}\n onKeyDown={handleKeyDown}\n />\n );\n}\n","export default function _checkPrivateRedeclaration(obj, privateCollection) {\n if (privateCollection.has(obj)) {\n throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n }\n}","import assertClassBrand from \"./assertClassBrand.js\";\nexport default function _classPrivateFieldSet2(s, a, r) {\n return s.set(assertClassBrand(s, a), r), r;\n}"],"names":["K","en","ASK_ANY_THING","COMMON_TASKS","zh","NS","locales","t","i18n","getFixedT","toPropertyKey","i","e","Symbol","toPrimitive","call","r","TypeError","String","_assertClassBrand","n","has","arguments","length","_typeof","o","iterator","constructor","prototype","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","_checkInRHS","module","exports","cssWithMappingToString","list","toString","this","map","item","content","needLayer","concat","join","modules","media","dedupe","supports","layer","undefined","alreadyImportedModules","k","id","_k","push","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","setFunctionName","description","applyDecs2311","a","c","u","s","f","l","p","d","metadata","m","h","create","y","v","g","apply","b","applyDec","w","D","S","j","E","I","P","F","get","set","getOwnPropertyDescriptor","Error","name","N","O","z","A","H","kind","addInitializer","bind","access","init","unshift","splice","checkInRHS","initializeI18n","WrappedIcon","wrapBrick","defineElement","property","event","method","createDecorators","ChatBoxComponent","forwardRef","LegacyChatBoxComponent","_ChatBox","_A","WeakMap","_B","_C","_D","_ChatBox_brand","WeakSet","_handleMessageSubmit","ChatBox","ReactNextElement","_classPrivateMethodInitSpec","_initProto","createRef","_classPrivateFieldInitSpec","_init_disabled","_init_extra_disabled","_init_placeholder","_init_extra_placeholder","_init_autoFocus","_init_extra_autoFocus","_init_messageSubmit","_init_extra_messageSubmit","_classPrivateGetter","_get_messageSubmit","emit","disabled","_classPrivateFieldGet","_classPrivateFieldSet","placeholder","autoFocus","setValue","_this$ref$current","ref","current","getValue","_this$ref$current2","render","React","onSubmit","_ref","containerRef","useRef","textareaRef","useState","valueRef","useImperativeHandle","handleSubmit","useCallback","currentTarget","handleChange","target","handleSubmitClick","useEffect","Promise","resolve","then","_textareaRef$current","focus","className","TextareaAutoResize","minRows","paddingSize","autoResize","submitWhen","onChange","onClick","lib","prefix","icon","_ChatBox2","_set_messageSubmit","_initClass","_applyDecs","styleTexts","styleText","type","Boolean","_","_classPrivateFieldGet2","privateMap","SIZING_STYLE","hiddenTextarea","modKey","test","navigator","platform","LegacyTextareaAutoResize","_autoResize","maxRows","borderSize","propValue","style","onKeyDown","onCompositionStart","onCompositionEnd","props","autoStyle","setAutoStyle","textarea","_textarea$value","valueLength","setSelectionRange","doAutoResize","uiTextNode","options","document","createElement","setAttribute","body","appendChild","uiTextNodeStyle","window","getComputedStyle","sizingStyle","getPropertyValue","minHeight","maxHeight","overflowY","height","scrollHeight","singleRowHeight","parseFloat","Math","max","min","resize","calculateAutoSizeStyle","flushSync","compositionRef","handleCompositionStart","handleCompositionEnd","handleKeyDown","shiftKey","preventDefault","stopPropagation","container","previousInlineSize","observer","ResizeObserver","entries","entry","currentInlineSize","contentBoxSize","inlineSize","contentRect","width","isInitial","requestAnimationFrame","observe","disconnect","_extends","_checkPrivateRedeclaration","privateCollection","_classPrivateFieldSet2"],"sourceRoot":""}
@@ -0,0 +1,3 @@
1
+ /*! For license information please see goal-card-list.3808c3ae.js.LICENSE.txt */
2
+ (globalThis.webpackChunk_next_bricks_ai_portal=globalThis.webpackChunk_next_bricks_ai_portal||[]).push([[2052,4322],{2373:(t,e,n)=>{"use strict";let i;function r(t){return t?function(){if("boolean"!=typeof i){const t=document.createElement("div");t.setAttribute("contenteditable","PLAINTEXT-ONLY"),i="plaintext-only"===t.contentEditable}return i}()?"plaintext-only":"true":"false"}n.d(e,{U:()=>r})},5536:(t,e,n)=>{"use strict";n.d(e,{A:()=>r});var i=n(12559);function r(t,e,n){return n((0,i.A)(t,e))}},10335:(t,e,n)=>{"use strict";n.d(e,{A:()=>s});var i=n(36758),r=n.n(i),o=n(40935),a=n.n(o)()(r());a.push([t.id,":host{display:inline-block}:host([hidden]){display:none}.goal-container{display:flex;flex-direction:column;gap:4px}",""]);const s=a.toString()},11369:(t,e,n)=>{"use strict";n.d(e,{A:()=>r});var i=n(17545);function r(t){var e=function(t){if("object"!=(0,i.A)(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=(0,i.A)(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==(0,i.A)(e)?e:e+""}},12559:(t,e,n)=>{"use strict";function i(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}n.d(e,{A:()=>i})},17545:(t,e,n)=>{"use strict";function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}n.d(e,{A:()=>i})},26902:(t,e,n)=>{"use strict";n.d(e,{A:()=>r});var i=n(17545);function r(t){if(Object(t)!==t)throw TypeError("right-hand side of 'in' should be an object, got "+(null!==t?(0,i.A)(t):"null"));return t}},30404:(t,e,n)=>{"use strict";n.r(e),n.d(e,{GoalCardList:()=>V});var i,r=n(74635),o=n(70918),a=n(26902),s=n(5536),c=n(86121),l=n(70829),u=n(62740),p=n(18769),d=n.n(p),m=n(7921),g=n(11280),h=(n(65168),n(87117)),f=n(46134),v=n(46342),y=n(10335),A=n(71513);let b,S,T,k,w,E,x,C,N,_,U,I,W,j,M,P,L,O,R,K,z,D,B;(0,h.initializeI18n)(f.NS,f.I);const{defineElement:G,property:H,event:F}=(0,m.createDecorators)();let V;var X=new WeakMap,Y=new WeakMap,$=new WeakMap,q=new WeakMap,J=new WeakSet,Q=new WeakMap,Z=new WeakMap,tt=new WeakMap,et=new WeakMap,nt=new WeakMap,it=new WeakMap,rt=new WeakMap;class ot extends g.ReactNextElement{constructor(){super(...arguments),(0,r.A)(this,J),(0,o.A)(this,X,S(this)),(0,o.A)(this,Y,(T(this),k(this))),(0,o.A)(this,$,(w(this),E(this))),(0,o.A)(this,q,(x(this),C(this))),(0,o.A)(this,Q,(U(this),t=>{(0,s.A)(J,this,N).emit(t)})),(0,o.A)(this,Z,I(this)),(0,o.A)(this,tt,(M(this),t=>{(0,s.A)(J,this,W).emit(t)})),(0,o.A)(this,et,P(this)),(0,o.A)(this,nt,(R(this),t=>{(0,s.A)(J,this,L).emit(t)})),(0,o.A)(this,it,K(this)),(0,o.A)(this,rt,(B(this),t=>{(0,s.A)(J,this,z).emit(t)}))}get goalList(){return(0,l.A)(X,this)}set goalList(t){(0,c.A)(X,this,t)}get cardStyle(){return(0,l.A)(Y,this)}set cardStyle(t){(0,c.A)(Y,this,t)}get activeKey(){return(0,l.A)($,this)}set activeKey(t){(0,c.A)($,this,t)}render(){return d().createElement(at,{goalList:this.goalList,cardStyle:this.cardStyle,onTitleChange:(0,l.A)(nt,this),onStatusChange:(0,l.A)(tt,this),onItemClick:(0,l.A)(Q,this),onNewChat:(0,l.A)(rt,this),activeKey:this.activeKey})}}function at(t){let{goalList:e,cardStyle:n,onTitleChange:i,onStatusChange:r,onItemClick:o,onNewChat:a,activeKey:s}=t;const[c,l]=(0,p.useState)(e);(0,p.useEffect)((()=>{l(e)}),[e]);const u=(t,e,n,i)=>{const r={...t,[e]:n};l(null==c?void 0:c.map((t=>t.instanceId===r.instanceId?r:t))),null==i||i(r)};return d().createElement("div",{className:"goal-container"},null==c?void 0:c.map((t=>d().createElement(A.B,{key:t.instanceId,isActive:s===t.instanceId,goalItem:t,cardStyle:n,onTitleChange:e=>((t,e)=>{u(e,"title",t,i)})(e,t),onStatusChange:e=>((t,e)=>{u(e,"state",t,r)})(e,t),onNewChat:()=>null==a?void 0:a(t),onClick:()=>null==o?void 0:o(t)}))))}i=ot,({e:[S,T,k,w,E,x,C,N,_,U,I,W,j,M,P,L,O,R,K,z,D,B],c:[V,b]}=(0,u.A)(i,[G("ai-portal.goal-card-list",{styleTexts:[y.A,v.A]})],[[H({attribute:!1}),1,"goalList"],[H({attribute:!1}),1,"cardStyle"],[H(),1,"activeKey"],[F({type:"item.click"}),1,"itemClickEvent",t=>(0,l.A)(q,t),(t,e)=>(0,c.A)(q,t,e)],[F({type:"item.status.change"}),1,"itemStatusChangeEvent",t=>(0,l.A)(Z,t),(t,e)=>(0,c.A)(Z,t,e)],[F({type:"item.title.change"}),1,"itemTitleChangeEvent",t=>(0,l.A)(et,t),(t,e)=>(0,c.A)(et,t,e)],[F({type:"item.new.chat"}),1,"itemNewChatEvent",t=>(0,l.A)(it,t),(t,e)=>(0,c.A)(it,t,e)]],0,(t=>rt.has((0,a.A)(t))),g.ReactNextElement)),b()},36758:t=>{"use strict";t.exports=function(t){return t[1]}},40935:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n="",i=void 0!==e[5];return e[4]&&(n+="@supports (".concat(e[4],") {")),e[2]&&(n+="@media ".concat(e[2]," {")),i&&(n+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),n+=t(e),i&&(n+="}"),e[2]&&(n+="}"),e[4]&&(n+="}"),n})).join("")},e.i=function(t,n,i,r,o){"string"==typeof t&&(t=[[null,t,void 0]]);var a={};if(i)for(var s=0;s<this.length;s++){var c=this[s][0];null!=c&&(a[c]=!0)}for(var l=0;l<t.length;l++){var u=[].concat(t[l]);i&&a[u[0]]||(void 0!==o&&(void 0===u[5]||(u[1]="@layer".concat(u[5].length>0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=o),n&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=n):u[2]=n),r&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=r):u[4]="".concat(r)),e.push(u))}},e}},46134:(t,e,n)=>{"use strict";n.d(e,{I:()=>a,K:()=>r,NS:()=>o,t:()=>s});var i=n(87117);let r=function(t){return t.UN_START_STATUS="UN_START_STATUS",t.RUNNING_STATUS="RUNNING_STATUS",t.COMPLETED_STATUS="COMPLETED_STATUS",t.NEW_CHAT="NEW_CHAT",t}({});const o="bricks/ai-portal/goal-card-list",a={en:{UN_START_STATUS:"Not Start",RUNNING_STATUS:"Running",COMPLETED_STATUS:"Completed",NEW_CHAT:"New Chat"},zh:{UN_START_STATUS:"未开始",RUNNING_STATUS:"运行中",COMPLETED_STATUS:"已完成",NEW_CHAT:"新对话"}},s=i.i18n.getFixedT(null,o)},46342:(t,e,n)=>{"use strict";n.d(e,{A:()=>s});var i=n(36758),r=n.n(i),o=n(40935),a=n.n(o)()(r());a.push([t.id,".goal-item{display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;padding:14px 24px;background-color:rgba(255,255,255,0.6);border-radius:8px;-webkit-user-select:none;user-select:none}.goal-item:hover{background-color:rgba(0,0,0,0.05)}.goal-item:hover .end .operation{display:block}.goal-item:hover .end .info{display:none}.goal-item.completed .serial-number,.goal-item.completed .title{color:#bfbfbf}.goal-item.active{background:rgba(37,64,255,0.1);border:1px solid #2540ff}.goal-item > *{-webkit-user-select:auto;user-select:auto}.goal-item .start,.goal-item .end{display:flex;align-items:center}.goal-item .start{flex:1;min-width:0;column-gap:16px;min-width:0}.goal-item .end{flex-shrink:0;column-gap:30px}.goal-item .end .operation{display:none}.goal-item .end .operation .new-chat::part(button){height:28px;font-size:13px;padding:5px 10px}.goal-item .end .info{display:inline-flex;align-items:center;column-gap:16px}.goal-item .serial-number{font-weight:400;color:var(--palette-gray-7)}.goal-item .title{font-weight:500;padding:2px 4px;color:var(--palette-gray-10);border:1px solid transparent;border-radius:8px;cursor:pointer;min-width:0}.goal-item .title:hover{background-color:rgba(255,255,255,0.6);border:1px solid var(--palette-gray-5);cursor:text}.goal-item .title:focus{outline:none;background-color:rgba(255,255,255,0.6);border:1px solid var(--elevo-color-brand)}.goal-item .icon{border-radius:8px;padding:4px;margin-top:4px}.goal-item .icon:hover{background-color:rgba(0,0,0,0.04)}.goal-item .message{color:var(--palette-gray-7);display:inline-flex;align-items:center;column-gap:6px}.goal-item .message .count{font-weight:500;color:var(--palette-gray-10)}.goal-item:not(.editing) .title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}",""]);const s=a.toString()},53373:(t,e)=>{var n;!function(){"use strict";var i={}.hasOwnProperty;function r(){for(var t="",e=0;e<arguments.length;e++){var n=arguments[e];n&&(t=a(t,o(n)))}return t}function o(t){if("string"==typeof t||"number"==typeof t)return t;if("object"!=typeof t)return"";if(Array.isArray(t))return r.apply(null,t);if(t.toString!==Object.prototype.toString&&!t.toString.toString().includes("[native code]"))return t.toString();var e="";for(var n in t)i.call(t,n)&&t[n]&&(e=a(e,n));return e}function a(t,e){return e?t?t+" "+e:t+e:t}t.exports?(r.default=r,t.exports=r):void 0===(n=function(){return r}.apply(e,[]))||(t.exports=n)}()},62740:(t,e,n)=>{"use strict";n.d(e,{A:()=>s});var i=n(17545),r=n(26902);function o(t,e,n){"symbol"==(0,i.A)(e)&&(e=(e=e.description)?"["+e+"]":"");try{Object.defineProperty(t,"name",{configurable:!0,value:n?n+" "+e:e})}catch(t){}return t}var a=n(11369);function s(t,e,n,s,c,l){var u,p,d,m,g,h,f,v=Symbol.metadata||Symbol.for("Symbol.metadata"),y=Object.defineProperty,A=Object.create,b=[A(null),A(null)],S=e.length;function T(e,n,i){return function(r,o){n&&(o=r,r=t);for(var a=0;a<e.length;a++)o=e[a].apply(r,i?[o]:[]);return i?o:r}}function k(t,e,n,i){if("function"!=typeof t&&(i||void 0!==t))throw new TypeError(e+" must "+(n||"be")+" a function"+(i?"":" or undefined"));return t}function w(t,e,n,r,a,s,c,l,d,m,g){function h(t){if(!g(t))throw new TypeError("Attempted to access private element on non-instance")}var f=[].concat(e[0]),v=e[3],A=!c,S=1===a,w=3===a,E=4===a,x=2===a;function C(e,n,i){return function(r,o){return n&&(o=r,r=t),i&&i(r),N[e].call(r,o)}}if(!A){var N={},_=[],U=w?"get":E||S?"set":"value";if(d?(m||S?N={get:o((function(){return v(this)}),r,"get"),set:function(t){e[4](this,t)}}:N[U]=v,m||o(N[U],r,x?"":U)):m||(N=Object.getOwnPropertyDescriptor(t,r)),!m&&!d){if((p=b[+l][r])&&7!=(p^a))throw Error("Decorating two elements with the same name ("+N[U].name+") is not supported yet");b[+l][r]=a<3?1:a}}for(var I=t,W=f.length-1;W>=0;W-=n?2:1){var j=k(f[W],"A decorator","be",!0),M=n?f[W-1]:void 0,P={},L={kind:["field","accessor","method","getter","setter","class"][a],name:r,metadata:u,addInitializer:function(t,e){if(t.v)throw Error("attempted to call addInitializer after decoration was finished");k(e,"An initializer","be",!0),s.push(e)}.bind(null,P)};if(A)p=j.call(M,I,L),P.v=1,k(p,"class decorators","return")&&(I=p);else if(L.static=l,L.private=d,p=L.access={has:d?g.bind():function(t){return r in t}},E||(p.get=d?x?function(t){return h(t),N.value}:C("get",0,h):function(t){return t[r]}),x||w||(p.set=d?C("set",0,h):function(t,e){t[r]=e}),I=j.call(M,S?{get:N.get,set:N.set}:N[U],L),P.v=1,S){if("object"==(0,i.A)(I)&&I)(p=k(I.get,"accessor.get"))&&(N.get=p),(p=k(I.set,"accessor.set"))&&(N.set=p),(p=k(I.init,"accessor.init"))&&_.unshift(p);else if(void 0!==I)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else k(I,(m?"field":"method")+" decorators","return")&&(m?_.unshift(I):N[U]=I)}return a<2&&c.push(T(_,l,1),T(s,l,0)),m||A||(d?S?c.splice(-1,0,C("get",l),C("set",l)):c.push(x?N[U]:k.call.bind(N[U])):y(t,r,N)),I}function E(t){return y(t,v,{configurable:!0,enumerable:!0,value:u})}return void 0!==l&&(u=l[v]),u=A(null==u?null:u),g=[],h=function(t){t&&g.push(T(t))},f=function(e,i){for(var o=0;o<n.length;o++){var s=n[o],l=s[1],u=7&l;if((8&l)==e&&!u==i){var p=s[2],h=!!s[3],f=16&l;w(e?t:t.prototype,s,f,h?"#"+p:(0,a.A)(p),u,u<2?[]:e?m=m||[]:d=d||[],g,!!e,h,i,e&&h?function(e){return(0,r.A)(e)===t}:c)}}},f(8,0),f(0,0),f(8,1),f(0,1),h(d),h(m),p=g,S||E(t),{e:p,get c(){var n=[];return S&&[E(t=w(t,[e],s,t.name,5,n)),T(n,1)]}}}},70829:(t,e,n)=>{"use strict";n.d(e,{A:()=>r});var i=n(12559);function r(t,e){return t.get((0,i.A)(t,e))}},70918:(t,e,n)=>{"use strict";n.d(e,{A:()=>r});var i=n(72016);function r(t,e,n){(0,i.A)(t,e),e.set(t,n)}},71513:(t,e,n)=>{"use strict";n.d(e,{B:()=>v});var i=n(18769),r=n.n(i),o=n(87117),a=n(11280),s=n(53373),c=n.n(s),l=n(46134),u=n(2373);(0,o.initializeI18n)(l.NS,l.I);const p=(0,a.wrapBrick)("eo-icon"),d=(0,a.wrapBrick)("eo-dropdown-actions",{onActionClick:"action.click",onVisibleChange:"visible.change"}),m=(0,a.wrapBrick)("eo-easyops-avatar"),g=(0,a.wrapBrick)("eo-button"),h={ready:"uncheck-status",working:"active-status",completed:"check-status"},f=[{key:"ready",icon:{icon:"uncheck-status",lib:"easyops",category:"colored-common"},text:(0,l.t)(l.K.UN_START_STATUS)},{key:"working",icon:{icon:"active-status",lib:"easyops",category:"colored-common"},text:(0,l.t)(l.K.RUNNING_STATUS)},{key:"completed",icon:{icon:"check-status",lib:"easyops",category:"colored-common"},text:(0,l.t)(l.K.COMPLETED_STATUS)}];function v(t){let{goalItem:e,cardStyle:n,onStatusChange:o,onTitleChange:a,onClick:s,onNewChat:v,isActive:y}=t;const{state:A,index:b,title:S,conversations:T,leader:k}=e,w=(0,i.useRef)(!1),E=(0,i.useCallback)((()=>{w.current=!0}),[]),x=(0,i.useCallback)((()=>{w.current=!1}),[]),[C,N]=(0,i.useState)(!1),_=(0,i.useCallback)((()=>{N(!0)}),[]),U=(0,i.useCallback)((t=>{N(!1);const e=t.currentTarget.textContent;null!==e&&S!==e&&(null==a||a(e))}),[S,a]),I=(0,i.useCallback)((t=>{w.current||"Enter"===t.key&&(t.preventDefault(),t.currentTarget.blur())}),[]);return r().createElement("div",{className:c()("goal-item",e.state,{editing:C},{active:y}),style:{paddingLeft:`${e.offsetX}px`,...n},onClick:s},r().createElement("div",{className:"start"},r().createElement(d,{actions:f,onActionClick:t=>{return e=t.detail,void(null==o||o(e.key));var e}},r().createElement(p,{className:"icon",lib:"easyops",category:"colored-common",icon:h[A],onClick:t=>t.stopPropagation()})),r().createElement("span",{className:"serial-number"},b),r().createElement("span",{className:"title",onClick:t=>t.stopPropagation(),onFocus:_,onBlur:U,onKeyDown:I,onCompositionStart:E,onCompositionEnd:x,contentEditable:(0,u.U)(!0),suppressContentEditableWarning:!0},S)),r().createElement("div",{className:"end"},r().createElement("div",{className:"info"},r().createElement("div",{className:"message"},r().createElement(p,{lib:"easyops",category:"common",icon:"message"}),r().createElement("span",{className:"count"},T||0)),r().createElement(m,{nameOrInstanceId:null==k?void 0:k.instanceId,size:"small"})),r().createElement("div",{className:"operation",onClick:t=>t.stopPropagation()},r().createElement(g,{className:"new-chat",themeVariant:"elevo",type:"neutral",size:"small",onClick:v},(0,l.t)(l.K.NEW_CHAT)))))}},72016:(t,e,n)=>{"use strict";function i(t,e){if(e.has(t))throw new TypeError("Cannot initialize the same private elements twice on an object")}n.d(e,{A:()=>i})},74635:(t,e,n)=>{"use strict";n.d(e,{A:()=>r});var i=n(72016);function r(t,e){(0,i.A)(t,e),e.add(t)}},86121:(t,e,n)=>{"use strict";n.d(e,{A:()=>r});var i=n(12559);function r(t,e,n){return t.set((0,i.A)(t,e),n),n}}}]);
3
+ //# sourceMappingURL=goal-card-list.3808c3ae.js.map