@next-bricks/ai-portal 0.64.0 → 0.64.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bricks.json +21 -21
- package/dist/chunks/{4820.95bda425.js → 4820.d2a30e2c.js} +2 -2
- package/dist/chunks/4820.d2a30e2c.js.map +1 -0
- package/dist/chunks/chat-panel.a5cadc0d.js +2 -0
- package/dist/chunks/chat-panel.a5cadc0d.js.map +1 -0
- package/dist/chunks/{main.cc3dd9a1.js → main.62ff99bd.js} +2 -2
- package/dist/chunks/{main.cc3dd9a1.js.map → main.62ff99bd.js.map} +1 -1
- package/dist/examples.json +15 -15
- package/dist/{index.5b0a4eb5.js → index.a9bf242c.js} +2 -2
- package/dist/{index.5b0a4eb5.js.map → index.a9bf242c.js.map} +1 -1
- package/dist/manifest.json +175 -169
- package/dist/types.json +1234 -1227
- package/dist-types/chat-panel/index.d.ts +7 -0
- package/package.json +2 -2
- package/dist/chunks/4820.95bda425.js.map +0 -1
- package/dist/chunks/chat-panel.d451898f.js +0 -2
- package/dist/chunks/chat-panel.d451898f.js.map +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(globalThis.webpackChunk_next_bricks_ai_portal=globalThis.webpackChunk_next_bricks_ai_portal||[]).push([[288],{8337:(e,t,a)=>{a.d(t,{A:()=>A});var l=a(72591),s=a.n(l),n=a(1740),i=a.n(n),o=a(88128),r=a.n(o),c=a(30855),h=a.n(c),u=a(93051),d=a.n(u),p=a(73656),m=a.n(p),v=a(55111),g={};g.styleTagTransform=m(),g.setAttributes=h(),g.insert=r().bind(null,"head"),g.domAPI=i(),g.insertStyleElement=d(),s()(v.A,g);const A=v.A&&v.A.locals?v.A.locals:void 0},11552:(e,t,a)=>{a.r(t),a.d(t,{ChatPanel:()=>Y});var l,s=a(70918),n=a(86121),i=a(70829),o=a(62740),r=a(18769),c=a.n(r),h=a(90870),u=a(30981),d=(a(34419),a(22919)),p=a(8337),m=a(60128),v=a(67101),g=a(13330),A=a(52208),f=a(40563),E=a(30621),w=a(84766),k=a(9442),b=a(69493),y=a(32360),I=a(40177),T=a(30672),x=a(38717),R=a(6671),B=a(76720),C=a(18796);let M,N,O,S,F,P,V,W,_,j,Z,D,H,L,G,U,$,q;const K=(0,u.wrapBrick)("eo-modal",{onClose:"close",onConfirm:"confirm",onCancel:"cancel",onOpen:"open"}),{defineElement:z,property:Q,method:J}=(0,h.createDecorators)(),X=(0,r.forwardRef)(he);let Y;var ee=new WeakMap,te=new WeakMap,ae=new WeakMap,le=new WeakMap,se=new WeakMap,ne=new WeakMap,ie=new WeakMap,oe=new WeakMap,re=new WeakMap;class ce extends u.ReactNextElement{constructor(){super(...arguments),(0,s.A)(this,ee,(M(this),O(this))),(0,s.A)(this,te,(S(this),F(this))),(0,s.A)(this,ae,(P(this),V(this))),(0,s.A)(this,le,(W(this),_(this))),(0,s.A)(this,se,(j(this),Z(this))),(0,s.A)(this,ne,(D(this),H(this))),(0,s.A)(this,ie,(L(this),G(this))),(0,s.A)(this,oe,(U(this),$(this))),(0,s.A)(this,re,(q(this),(0,r.createRef)()))}get panelTitle(){return(0,i.A)(ee,this)}set panelTitle(e){(0,n.A)(ee,this,e)}get aiEmployeeId(){return(0,i.A)(te,this)}set aiEmployeeId(e){(0,n.A)(te,this,e)}get cmd(){return(0,i.A)(ae,this)}set cmd(e){(0,n.A)(ae,this,e)}get width(){return(0,i.A)(le,this)}set width(e){(0,n.A)(le,this,e)}get height(){return(0,i.A)(se,this)}set height(e){(0,n.A)(se,this,e)}get placeholder(){return(0,i.A)(ne,this)}set placeholder(e){(0,n.A)(ne,this,e)}get uploadOptions(){return(0,i.A)(ie,this)}set uploadOptions(e){(0,n.A)(ie,this,e)}get help(){return(0,i.A)(oe,this)}set help(e){(0,n.A)(oe,this,e)}open(){var e;null===(e=(0,i.A)(re,this).current)||void 0===e||e.open()}close(){var e;null===(e=(0,i.A)(re,this).current)||void 0===e||e.close()}setInputValue(e){var t;null===(t=(0,i.A)(re,this).current)||void 0===t||t.setInputValue(e)}send(e){var t;null===(t=(0,i.A)(re,this).current)||void 0===t||t.send(e)}showFile(e){var t;null===(t=(0,i.A)(re,this).current)||void 0===t||t.showFile(e)}render(){return c().createElement(X,{ref:(0,i.A)(re,this),panelTitle:this.panelTitle,aiEmployeeId:this.aiEmployeeId,cmd:this.cmd,width:this.width,height:this.height,placeholder:this.placeholder,uploadOptions:this.uploadOptions,help:this.help})}}function he(e,t){let{panelTitle:a,aiEmployeeId:l,cmd:s,width:n,height:i,placeholder:o,uploadOptions:h,help:u}=e;const M=(0,r.useRef)(null),N=(0,r.useRef)(null),[O,S]=(0,r.useState)(!1),[F,P]=(0,r.useState)(null),[V,W]=(0,r.useState)(null),{conversation:_,tasks:j,errors:Z,humanInputRef:D}=(0,v.u)(F,V),H=!!_,L=null==_?void 0:_.state,G=I.QB.includes(L),U=!F||G||"input-required"===L,{messages:$}=(0,g.p)(H,L,j,Z),q=(0,r.useCallback)(((e,t,a)=>{var l;null===(l=D.current)||void 0===l||l.call(D,e,t,a)}),[D]),[z,Q]=(0,r.useState)(!1);(0,r.useEffect)((()=>{let e=!1;return Promise.race([(0,A.L)("light-plus"),new Promise((e=>setTimeout(e,5e3)))]).finally((()=>{e||Q(!0)})),()=>{e=!0}}),[]);const J=(0,r.useRef)(null),X=(0,r.useRef)(null),{scrollable:Y,scrollToBottom:ee}=(0,f.i)(H&&z,J,X),te=(0,r.useCallback)((async e=>{if(F){const{content:t,...a}=e;q(t,void 0,a)}else{S(!0);try{const t=(await d.http.post("api/gateway/logic.llm.aiops_service/api/v1/elevo/conversations",{})).data.conversationId;P(t),W({...e,...l?{aiEmployeeId:l}:null,...s?{cmd:s}:null,conversationId:t})}catch(e){(0,m.handleHttpError)(e)}finally{S(!1)}}}),[l,s,F,q]),[ae,le]=(0,r.useState)(null),[se,ne]=(0,r.useState)(null),ie=(0,r.useMemo)((()=>({conversationState:L,setActiveFile:le,setActiveImages:ne,humanInput:q})),[L,q]);return(0,r.useImperativeHandle)(t,(()=>({open:()=>{var e;null===(e=M.current)||void 0===e||e.open()},close:()=>{var e;null===(e=M.current)||void 0===e||e.close()},setInputValue:e=>{var t;null===(t=N.current)||void 0===t||t.setValue(e)},send:e=>{te(e)},showFile:e=>{le(e)}})),[te]),c().createElement(B.j.Provider,{value:ie},c().createElement(K,{modalTitle:a,width:n,height:i,themeVariant:"elevo",maskClosable:!0,noFooter:!0,headerBordered:!0,fullscreenButton:!0,background:`fixed url(${y}) center center / cover no-repeat`,onOpen:()=>{setTimeout((()=>{var e;null===(e=N.current)||void 0===e||e.focus()}),100)},ref:M},c().createElement("div",{className:p.A.panel},F?H&&z?c().createElement("div",{className:p.A.main},c().createElement("div",{className:p.A.chat,ref:J},c().createElement("div",{className:p.A.messages,ref:X},$.map(((e,t,a)=>c().createElement("div",{className:p.A.message,key:t},"user"===e.role?c().createElement(E.R,{content:e.content,files:e.files}):c().createElement(w.G,{chunks:e.chunks,scopeState:_.state,isLatest:t===a.length-1})))))),c().createElement("button",{className:`${k.A["scroll-down"]} ${b.A["floating-button"]}`,style:{bottom:"30px"},hidden:!Y,onClick:ee},c().createElement(T.Bj,{lib:"antd",icon:"down"}))):c().createElement("div",{className:p.A["loading-icon"]},c().createElement(T.Bj,{lib:"antd",theme:"outlined",icon:"loading-3-quarters",spinning:!0})):c().createElement("div",{className:p.A.main},u?c().createElement(C.ReactUseMultipleBricks,{useBrick:u.useBrick}):null),c().createElement("div",{className:p.A.input},c().createElement(T.IV,{ref:N,placeholder:o,suggestionsPlacement:"top",submitDisabled:O||!U,supportsTerminate:!0,uploadOptions:h,onChatSubmit:e=>te(e.detail)})))),ae&&c().createElement(x.d,{file:ae,fromModal:!0}),se&&c().createElement(R.f,{images:se,fromModal:!0}))}l=ce,({e:[O,S,F,P,V,W,_,j,Z,D,H,L,G,U,$,q,M],c:[Y,N]}=(0,o.A)(l,[z("ai-portal.chat-panel",{shadowOptions:!1})],[[Q(),1,"panelTitle"],[Q(),1,"aiEmployeeId"],[Q({attribute:!1}),1,"cmd"],[Q({attribute:!1}),1,"width"],[Q({attribute:!1}),1,"height"],[Q(),1,"placeholder"],[Q({attribute:!1}),1,"uploadOptions"],[Q({attribute:!1}),1,"help"],[J(),2,"open"],[J(),2,"close"],[J(),2,"setInputValue"],[J(),2,"send"],[J(),2,"showFile"]],0,void 0,u.ReactNextElement)),N()},55111:(e,t,a)=>{a.d(t,{A:()=>o});var l=a(36758),s=a.n(l),n=a(40935),i=a.n(n)()(s());i.push([e.id,".panel--ukaGUcR2{display:flex;flex-direction:column;min-height:300px;height:100%}.main--K5R8dLH9{position:relative;flex:1;min-height:0}.chat--Drl2ThnZ{padding:0 0 20px;height:100%;overflow-y:auto}.messages--Bhaarj69{width:100%;margin:0 auto}.message--TP5bdFpZ + .message--TP5bdFpZ{margin-top:40px}.loading-icon--BjI0pCV1{flex:1;display:flex;align-items:center;justify-content:center;font-size:48px;color:#fff}",""]),i.locals={panel:"panel--ukaGUcR2",main:"main--K5R8dLH9",chat:"chat--Drl2ThnZ",messages:"messages--Bhaarj69",message:"message--TP5bdFpZ","loading-icon":"loading-icon--BjI0pCV1"};const o=i}}]);
|
|
2
|
-
//# sourceMappingURL=chat-panel.d451898f.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/chat-panel.d451898f.js","mappings":"kSAWIA,EAAU,CAAC,EAEfA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IACxBF,EAAQG,OAAS,SAAc,KAAM,QACrCH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKnB,QAAe,KAAW,IAAQM,OAAS,IAAQA,YAASC,C,oYCyBnE,MAAMC,GAAeC,EAAAA,EAAAA,WAYnB,WAAY,CACZC,QAAS,QACTC,UAAW,UACXC,SAAU,SACVC,OAAQ,UAGJ,cAAEC,EAAa,SAAEC,EAAQ,OAAEC,IAAWC,EAAAA,EAAAA,oBAatCC,GAAqBC,EAAAA,EAAAA,YAAWC,IAEtC,IAAAC,EAAA,IAAAC,GAAA,IAAAC,QAAAC,GAAA,IAAAD,QAAAE,GAAA,IAAAF,QAAAG,GAAA,IAAAH,QAAAI,GAAA,IAAAJ,QAAAK,GAAA,IAAAL,QAAAM,GAAA,IAAAN,QAAAO,GAAA,IAAAP,QAAAQ,GAAA,IAAAR,QAIA,MAAAS,WAGwBC,EAAAA,iBAA2CC,WAAAA,GAAA,SAAAC,YAAAC,EAAAA,EAAAA,GAAA,KAAAd,IAAAe,EAAA,MAAAC,EAAA,SAAAF,EAAAA,EAAAA,GAAA,KAAAZ,IAAAe,EAAA,MAAAC,EAAA,SAAAJ,EAAAA,EAAAA,GAAA,KAAAX,IAAAgB,EAAA,MAAAC,EAAA,SAAAN,EAAAA,EAAAA,GAAA,KAAAV,IAAAiB,EAAA,MAAAC,EAAA,SAAAR,EAAAA,EAAAA,GAAA,KAAAT,IAAAkB,EAAA,MAAAC,EAAA,SAAAV,EAAAA,EAAAA,GAAA,KAAAR,IAAAmB,EAAA,MAAAC,EAAA,SAAAZ,EAAAA,EAAAA,GAAA,KAAAP,IAAAoB,EAAA,MAAAC,EAAA,SAoBjEd,EAAAA,EAAAA,GAAA,KAAAN,IAAAqB,EAAA,MAAAC,EAAA,SAMAhB,EAAAA,EAAAA,GAAA,KAAAL,IAAIsB,EAAA,OAAGC,EAAAA,EAAAA,cAA0B,eAxBxBC,GAAU,OAAAC,EAAAA,EAAAA,GAAAlC,GAAA,oBAAViC,CAAUE,IAAAC,EAAAA,EAAAA,GAAApC,GAAA,KAAAmC,EAAA,iBAGVE,GAAY,OAAAH,EAAAA,EAAAA,GAAAhC,GAAA,sBAAZmC,CAAYF,IAAAC,EAAAA,EAAAA,GAAAlC,GAAA,KAAAiC,EAAA,QAGZG,GAAG,OAAAJ,EAAAA,EAAAA,GAAA/B,GAAA,aAAHmC,CAAGH,IAAAC,EAAAA,EAAAA,GAAAjC,GAAA,KAAAgC,EAAA,UAE6BI,GAAK,OAAAL,EAAAA,EAAAA,GAAA9B,GAAA,eAALmC,CAAKJ,IAAAC,EAAAA,EAAAA,GAAAhC,GAAA,KAAA+B,EAAA,WAELK,GAAM,OAAAN,EAAAA,EAAAA,GAAA7B,GAAA,gBAANmC,CAAML,IAAAC,EAAAA,EAAAA,GAAA/B,GAAA,KAAA8B,EAAA,gBAGtCM,GAAW,OAAAP,EAAAA,EAAAA,GAAA5B,GAAA,qBAAXmC,CAAWN,IAAAC,EAAAA,EAAAA,GAAA9B,GAAA,KAAA6B,EAAA,kBAGXO,GAAa,OAAAR,EAAAA,EAAAA,GAAA3B,GAAA,uBAAbmC,CAAaP,IAAAC,EAAAA,EAAAA,GAAA7B,GAAA,KAAA4B,EAAA,SAMbQ,GAAI,OAAAT,EAAAA,EAAAA,GAAA1B,GAAA,cAAJmC,CAAIR,IAAAC,EAAAA,EAAAA,GAAA5B,GAAA,KAAA2B,EAAA,CAKbS,IAAAA,GAAO,IAAAC,EACY,QAAjBA,GAAAX,EAAAA,EAAAA,GAAKzB,GAALqC,MAAUC,eAAO,IAAAF,GAAjBA,EAAmBD,MACrB,CAGAI,KAAAA,GAAQ,IAAAC,EACW,QAAjBA,GAAAf,EAAAA,EAAAA,GAAKzB,GAALqC,MAAUC,eAAO,IAAAE,GAAjBA,EAAmBD,OACrB,CAGAE,aAAAA,CAAcC,GAAiB,IAAAC,EACZ,QAAjBA,GAAAlB,EAAAA,EAAAA,GAAKzB,GAALqC,MAAUC,eAAO,IAAAK,GAAjBA,EAAmBF,cAAcC,EACnC,CAGAE,IAAAA,CAAKC,GAAsB,IAAAC,EACR,QAAjBA,GAAArB,EAAAA,EAAAA,GAAKzB,GAALqC,MAAUC,eAAO,IAAAQ,GAAjBA,EAAmBF,KAAKC,EAC1B,CAGAE,QAAAA,CAASC,GAAgB,IAAAC,EACN,QAAjBA,GAAAxB,EAAAA,EAAAA,GAAKzB,GAALqC,MAAUC,eAAO,IAAAW,GAAjBA,EAAmBF,SAASC,EAC9B,CAEAE,MAAAA,GACE,OACEC,IAAAA,cAAChE,EAAkB,CACjBiE,KAAK3B,EAAAA,EAAAA,GAAKzB,GAALqC,MACLb,WAAYa,KAAKb,WACjBI,aAAcS,KAAKT,aACnBC,IAAKQ,KAAKR,IACVC,MAAOO,KAAKP,MACZC,OAAQM,KAAKN,OACbC,YAAaK,KAAKL,YAClBC,cAAeI,KAAKJ,cACpBC,KAAMG,KAAKH,MAGjB,EAgBF,SAAS7C,GAAwBgE,EAW/BD,GACA,IAXA,WACE5B,EAAU,aACVI,EAAY,IACZC,EAAG,MACHC,EAAK,OACLC,EAAM,YACNC,EAAW,cACXC,EAAa,KACbC,GACwBmB,EAG1B,MAAMC,GAAWC,EAAAA,EAAAA,QAAc,MACzBC,GAAWD,EAAAA,EAAAA,QAAkB,OAE5BE,EAAgBC,IAAqBC,EAAAA,EAAAA,WAAS,IAE9CC,EAAgBC,IAAqBF,EAAAA,EAAAA,UAAwB,OAC7DG,EAAgBC,IAAqBJ,EAAAA,EAAAA,UAC1C,OAGI,aAAEK,EAAY,MAAEC,EAAK,OAAEC,EAAM,cAAEC,IAAkBC,EAAAA,EAAAA,GACrDR,EACAE,GAEIO,IAA0BL,EAC1BM,EAAoBN,aAAY,EAAZA,EAAcO,MAClCC,EAAmBC,EAAAA,GAAYC,SAASJ,GACxCK,GACHf,GACDY,GACsB,mBAAtBF,GAEI,SAAEM,IAAaC,EAAAA,EAAAA,GACnBR,EACAC,EACAL,EACAC,GAGIY,GAAaC,EAAAA,EAAAA,cACjB,CAACC,EAAsBC,EAAiBC,KAA6B,IAAAC,EAC9C,QAArBA,EAAAhB,EAAc7B,eAAO,IAAA6C,GAArBA,EAAAC,KAAAjB,EAAwBa,EAAOC,EAAQC,EAAM,GAE/C,CAACf,KAGIkB,EAAWC,IAAgB3B,EAAAA,EAAAA,WAAS,IAC3C4B,EAAAA,EAAAA,YAAU,KACR,IAAIC,GAAS,EAUb,OATAC,QAAQC,KAAK,EACXC,EAAAA,EAAAA,GAAmB,cAEnB,IAAIF,SAASG,GAAYC,WAAWD,EAAS,SAC5CE,SAAQ,KACJN,GACHF,GAAa,EACf,IAEK,KACLE,GAAS,CAAI,CACd,GACA,IAEH,MAAMO,GAAqBxC,EAAAA,EAAAA,QAAuB,MAC5CyC,GAAmBzC,EAAAA,EAAAA,QAAuB,OAE1C,WAAE0C,EAAU,eAAEC,KAAmBC,EAAAA,EAAAA,GACrC9B,GAAyBgB,EACzBU,EACAC,GAGII,IAAmBrB,EAAAA,EAAAA,cACvBsB,UACE,GAAIzC,EAAJ,CACE,MAAM,QAAElB,KAAYwC,GAAUrC,EAG9BiC,EAAWpC,OAASlE,EAAW0G,EAEjC,KANA,CAOAxB,GAAkB,GAClB,IACE,MAMME,SANY0C,EAAAA,KAAKC,KAGrB,iEACA,CAAC,IAEwBC,KAAK5C,eAChCC,EAAkBD,GAClBG,EAAkB,IACblB,KACCjB,EAAe,CAAEA,gBAAiB,QAClCC,EAAM,CAAEA,OAAQ,KACpB+B,eAAgBA,GAEpB,CAAE,MAAO6C,IACPC,EAAAA,EAAAA,iBAAgBD,EAClB,CAAE,QACA/C,GAAkB,EACpB,CArBA,CAqBA,GAEF,CAAC9B,EAAcC,EAAK+B,EAAgBkB,KAG/B6B,GAAYC,KAAiBjD,EAAAA,EAAAA,UAA0B,OACvDkD,GAAcC,KAAmBnD,EAAAA,EAAAA,UAA8B,MAEhEoD,IAAmBC,EAAAA,EAAAA,UACvB,MAEI1C,oBACAsC,iBACAE,mBACAhC,gBAEJ,CAACR,EAAmBQ,IAyBtB,OAtBAmC,EAAAA,EAAAA,qBACE7D,GACA,KAAM,CACJjB,KAAMA,KAAM,IAAA+E,EACM,QAAhBA,EAAA5D,EAAShB,eAAO,IAAA4E,GAAhBA,EAAkB/E,MAAM,EAE1BI,MAAOA,KAAM,IAAA4E,EACK,QAAhBA,EAAA7D,EAAShB,eAAO,IAAA6E,GAAhBA,EAAkB5E,OAAO,EAE3BE,cAAgBC,IAAoB,IAAA0E,EAClB,QAAhBA,EAAA5D,EAASlB,eAAO,IAAA8E,GAAhBA,EAAkBC,SAAS3E,EAAQ,EAErCE,KAAOC,IACLuD,GAAiBvD,EAAQ,EAE3BE,SAAWC,IACT4D,GAAc5D,EAAK,KAGvB,CAACoD,KAIDjD,IAAAA,cAACmE,EAAAA,EAAYC,SAAQ,CAACC,MAAOT,IAC3B5D,IAAAA,cAAC1E,EAAY,CACXgJ,WAAYjG,EACZM,MAAOA,EACPC,OAAQA,EACR2F,aAAa,QACbC,cAAY,EACZC,UAAQ,EACRC,gBAAc,EACdC,kBAAgB,EAChBC,WAAY,aAAaC,qCACzBlJ,OAAQA,KACN+G,YAAW,KAAM,IAAAoC,EACC,QAAhBA,EAAAzE,EAASlB,eAAO,IAAA2F,GAAhBA,EAAkBC,OAAO,GACxB,IAAI,EAET9E,IAAKE,GAELH,IAAAA,cAAA,OAAKgF,UAAWC,EAAAA,EAAOC,OACnBzE,EAMES,GAAyBgB,EAC3BlC,IAAAA,cAAA,OAAKgF,UAAWC,EAAAA,EAAOE,MACrBnF,IAAAA,cAAA,OAAKgF,UAAWC,EAAAA,EAAOG,KAAMnF,IAAK2C,GAChC5C,IAAAA,cAAA,OAAKgF,UAAWC,EAAAA,EAAOxD,SAAUxB,IAAK4C,GACnCpB,EAAS4D,KAAI,CAACC,EAAKC,EAAOC,IACzBxF,IAAAA,cAAA,OAAKgF,UAAWC,EAAAA,EAAOQ,QAASC,IAAKH,GACrB,SAAbD,EAAIK,KACH3F,IAAAA,cAAC4F,EAAAA,EAAW,CAACrG,QAAS+F,EAAI/F,QAASsG,MAAOP,EAAIO,QAE9C7F,IAAAA,cAAC8F,EAAAA,EAAgB,CACfC,OAAQT,EAAIS,OACZC,WAAYnF,EAAaO,MACzB6E,SAAUV,IAAUC,EAAKU,OAAS,SAO9ClG,IAAAA,cAAA,UACEgF,UAAW,GAAGmB,EAAAA,EAAa,kBAAkBC,EAAAA,EAAe,qBAC5DC,MAAO,CAAEC,OAAQ,QACjBC,QAASzD,EACT0D,QAASzD,IAET/C,IAAAA,cAACyG,EAAAA,GAAW,CAACC,IAAI,OAAOC,KAAK,WAIjC3G,IAAAA,cAAA,OAAKgF,UAAWC,EAAAA,EAAO,iBACrBjF,IAAAA,cAACyG,EAAAA,GAAW,CACVC,IAAI,OACJE,MAAM,WACND,KAAK,qBACLE,UAAQ,KAvCZ7G,IAAAA,cAAA,OAAKgF,UAAWC,EAAAA,EAAOE,MACpBpG,EACCiB,IAAAA,cAAC8G,EAAAA,uBAAsB,CAACC,SAAUhI,EAAKgI,WACrC,MAwCR/G,IAAAA,cAAA,OAAKgF,UAAWC,EAAAA,EAAOpD,OACrB7B,IAAAA,cAACgH,EAAAA,GAAgB,CACf/G,IAAKI,EACLxB,YAAaA,EACboI,qBAAqB,MACrB3G,eAAgBA,IAAmBkB,EACnC0F,mBAAiB,EACjBpI,cAAeA,EACfqI,aAAe7D,GAAML,GAAiBK,EAAE8D,aAK/C5D,IAAcxD,IAAAA,cAACqH,EAAAA,EAAW,CAACxH,KAAM2D,GAAY8D,WAAS,IACtD5D,IAAgB1D,IAAAA,cAACuH,EAAAA,EAAa,CAACC,OAAQ9D,GAAc4D,WAAS,IAGrE,CA/OAG,EAAA3K,KAAAwG,GAAAlG,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAhB,GAAAuK,GAAAvL,EAAAwL,KAAAC,EAAAA,EAAAA,GAAAH,EAAA,CAzEC7L,EAAc,uBAAwB,CACrCiM,eAAe,KACf,EAEChM,IAAU,iBAGVA,IAAU,mBAGVA,EAAS,CAAEiM,WAAW,IAAQ,UAG9BjM,EAAS,CAAEiM,WAAW,IAAQ,YAE9BjM,EAAS,CAAEiM,WAAW,IAAQ,aAE9BjM,IAAU,kBAGVA,EAAS,CAAEiM,WAAW,IAAQ,oBAM9BjM,EAAS,CAAEiM,WAAW,IAAQ,WAK9BhM,IAAQ,WAKRA,IAAQ,YAKRA,IAAQ,oBAKRA,IAAQ,WAKRA,IAAQ,wBAhDaiB,EAAAA,mBAAgB4K,G,sECvFpCI,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,4ZAA6Z,KAEtcH,EAAwB3M,OAAS,CAChC,MAAS,kBACT,KAAQ,iBACR,KAAQ,iBACR,SAAY,qBACZ,QAAW,oBACX,eAAgB,0BAEjB,S","sources":["webpack:///./src/chat-panel/styles.module.css?bf50","webpack:///./src/chat-panel/index.tsx","webpack:///./src/chat-panel/styles.module.css"],"sourcesContent":["\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./styles.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./styles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, {\n createRef,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport type {\n Modal,\n ModalProps,\n ModalEvents,\n ModalMapEvents,\n} from \"@next-bricks/containers/modal\";\nimport { http } from \"@next-core/http\";\nimport styles from \"./styles.module.css\";\nimport type { ChatInput } from \"../chat-input\";\nimport type {\n ActiveImages,\n ChatPayload,\n CommandPayload,\n ExtraChatPayload,\n FileInfo,\n RequestStore,\n UploadOptions,\n} from \"../shared/interfaces\";\nimport { handleHttpError } from \"@next-core/runtime\";\nimport { useConversationDetail } from \"../cruise-canvas/useConversationDetail\";\nimport { useConversationStream } from \"../chat-stream/useConversationStream\";\nimport { preloadHighlighter } from \"@next-shared/markdown\";\nimport { useAutoScroll } from \"../chat-stream/useAutoScroll\";\nimport { UserMessage } from \"../chat-stream/UserMessage/UserMessage\";\nimport { AssistantMessage } from \"../chat-stream/AssistantMessage/AssistantMessage\";\nimport scrollStyles from \"../chat-stream/ScrollDownButton.module.css\";\nimport floatingStyles from \"../shared/FloatingButton.module.css\";\nimport backgroundImage from \"../home-container/images/background.png\";\nimport { DONE_STATES } from \"../shared/constants\";\nimport { WrappedChatInput, WrappedIcon } from \"../shared/bricks\";\nimport { FilePreview } from \"../shared/FilePreview/FilePreview.js\";\nimport { ImagesPreview } from \"../shared/FilePreview/ImagesPreview.js\";\nimport { TaskContext, type TaskContextValue } from \"../shared/TaskContext\";\nimport type { UseBrickConf } from \"@next-core/types\";\nimport { ReactUseMultipleBricks } from \"@next-core/react-runtime\";\n\nconst WrappedModal = wrapBrick<\n Modal,\n ModalProps & {\n themeVariant?: \"default\" | \"elevo\";\n height?: string | number;\n noFooter?: boolean;\n headerBordered?: boolean;\n background?: string;\n fullscreenButton?: boolean;\n },\n ModalEvents,\n ModalMapEvents\n>(\"eo-modal\", {\n onClose: \"close\",\n onConfirm: \"confirm\",\n onCancel: \"cancel\",\n onOpen: \"open\",\n});\n\nconst { defineElement, property, method } = createDecorators();\n\nexport interface ChatPanelProps {\n panelTitle?: string;\n aiEmployeeId?: string;\n cmd?: CommandPayload;\n width?: string | number;\n height?: string | number;\n placeholder?: string;\n uploadOptions?: UploadOptions;\n help?: { useBrick: UseBrickConf };\n}\n\nconst ChatPanelComponent = forwardRef(LegacyChatPanelComponent);\n\n/**\n * 弹出式对话面板。\n */\nexport\n@defineElement(\"ai-portal.chat-panel\", {\n shadowOptions: false,\n})\nclass ChatPanel extends ReactNextElement implements ChatPanelProps {\n @property()\n accessor panelTitle: string | undefined;\n\n @property()\n accessor aiEmployeeId: string | undefined;\n\n @property({ attribute: false })\n accessor cmd: CommandPayload | undefined;\n\n @property({ attribute: false }) accessor width: string | number | undefined;\n\n @property({ attribute: false }) accessor height: string | number | undefined;\n\n @property()\n accessor placeholder: string | undefined;\n\n @property({ attribute: false })\n accessor uploadOptions: UploadOptions | undefined;\n\n /**\n * Show help messages when no conversation exists.\n */\n @property({ attribute: false })\n accessor help: { useBrick: UseBrickConf } | undefined;\n\n #ref = createRef<ChatPanelRef>();\n\n @method()\n open() {\n this.#ref.current?.open();\n }\n\n @method()\n close() {\n this.#ref.current?.close();\n }\n\n @method()\n setInputValue(content: string) {\n this.#ref.current?.setInputValue(content);\n }\n\n @method()\n send(payload: ChatPayload) {\n this.#ref.current?.send(payload);\n }\n\n @method()\n showFile(file: FileInfo) {\n this.#ref.current?.showFile(file);\n }\n\n render() {\n return (\n <ChatPanelComponent\n ref={this.#ref}\n panelTitle={this.panelTitle}\n aiEmployeeId={this.aiEmployeeId}\n cmd={this.cmd}\n width={this.width}\n height={this.height}\n placeholder={this.placeholder}\n uploadOptions={this.uploadOptions}\n help={this.help}\n />\n );\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ninterface ChatPanelComponentProps extends ChatPanelProps {\n // Define react event handlers here.\n}\n\ninterface ChatPanelRef {\n open: () => void;\n close: () => void;\n setInputValue: (content: string) => void;\n send: (payload: ChatPayload) => void;\n showFile: (file: FileInfo) => void;\n}\n\nfunction LegacyChatPanelComponent(\n {\n panelTitle,\n aiEmployeeId,\n cmd,\n width,\n height,\n placeholder,\n uploadOptions,\n help,\n }: ChatPanelComponentProps,\n ref: React.Ref<ChatPanelRef>\n) {\n const modalRef = useRef<Modal>(null);\n const inputRef = useRef<ChatInput>(null);\n\n const [submitDisabled, setSubmitDisabled] = useState(false);\n\n const [conversationId, setConversationId] = useState<string | null>(null);\n const [initialRequest, setInitialRequest] = useState<RequestStore | null>(\n null\n );\n\n const { conversation, tasks, errors, humanInputRef } = useConversationDetail(\n conversationId,\n initialRequest\n );\n const conversationAvailable = !!conversation;\n const conversationState = conversation?.state;\n const conversationDone = DONE_STATES.includes(conversationState!);\n const canChat =\n !conversationId ||\n conversationDone ||\n conversationState === \"input-required\";\n\n const { messages } = useConversationStream(\n conversationAvailable,\n conversationState,\n tasks,\n errors\n );\n\n const humanInput = useCallback(\n (input: string | null, action?: string, extra?: ExtraChatPayload) => {\n humanInputRef.current?.(input, action, extra);\n },\n [humanInputRef]\n );\n\n const [depsReady, setDepsReady] = useState(false);\n useEffect(() => {\n let ignore = false;\n Promise.race([\n preloadHighlighter(\"light-plus\"),\n // Wait at most 5s\n new Promise((resolve) => setTimeout(resolve, 5000)),\n ]).finally(() => {\n if (!ignore) {\n setDepsReady(true);\n }\n });\n return () => {\n ignore = true;\n };\n }, []);\n\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const scrollContentRef = useRef<HTMLDivElement>(null);\n\n const { scrollable, scrollToBottom } = useAutoScroll(\n conversationAvailable && depsReady,\n scrollContainerRef,\n scrollContentRef\n );\n\n const handleChatSubmit = useCallback(\n async (payload: ChatPayload) => {\n if (conversationId) {\n const { content, ...extra } = payload;\n // For follow-up messages, do not pass aiEmployeeId and cmd again,\n // unless passed explicitly.\n humanInput(content, undefined, extra);\n return;\n }\n setSubmitDisabled(true);\n try {\n const res = await http.post<{\n data: { conversationId: string };\n }>(\n \"api/gateway/logic.llm.aiops_service/api/v1/elevo/conversations\",\n {}\n );\n const conversationId = res.data.conversationId;\n setConversationId(conversationId);\n setInitialRequest({\n ...payload,\n ...(aiEmployeeId ? { aiEmployeeId } : null),\n ...(cmd ? { cmd } : null),\n conversationId: conversationId,\n });\n } catch (e) {\n handleHttpError(e);\n } finally {\n setSubmitDisabled(false);\n }\n },\n [aiEmployeeId, cmd, conversationId, humanInput]\n );\n\n const [activeFile, setActiveFile] = useState<FileInfo | null>(null);\n const [activeImages, setActiveImages] = useState<ActiveImages | null>(null);\n\n const taskContextValue = useMemo(\n () =>\n ({\n conversationState,\n setActiveFile,\n setActiveImages,\n humanInput,\n }) as TaskContextValue,\n [conversationState, humanInput]\n );\n\n useImperativeHandle(\n ref,\n () => ({\n open: () => {\n modalRef.current?.open();\n },\n close: () => {\n modalRef.current?.close();\n },\n setInputValue: (content: string) => {\n inputRef.current?.setValue(content);\n },\n send: (payload: ChatPayload) => {\n handleChatSubmit(payload);\n },\n showFile: (file: FileInfo) => {\n setActiveFile(file);\n },\n }),\n [handleChatSubmit]\n );\n\n return (\n <TaskContext.Provider value={taskContextValue}>\n <WrappedModal\n modalTitle={panelTitle}\n width={width}\n height={height}\n themeVariant=\"elevo\"\n maskClosable\n noFooter\n headerBordered\n fullscreenButton\n background={`fixed url(${backgroundImage}) center center / cover no-repeat`}\n onOpen={() => {\n setTimeout(() => {\n inputRef.current?.focus();\n }, 100);\n }}\n ref={modalRef}\n >\n <div className={styles.panel}>\n {!conversationId ? (\n <div className={styles.main}>\n {help ? (\n <ReactUseMultipleBricks useBrick={help.useBrick} />\n ) : null}\n </div>\n ) : conversationAvailable && depsReady ? (\n <div className={styles.main}>\n <div className={styles.chat} ref={scrollContainerRef}>\n <div className={styles.messages} ref={scrollContentRef}>\n {messages.map((msg, index, list) => (\n <div className={styles.message} key={index}>\n {msg.role === \"user\" ? (\n <UserMessage content={msg.content} files={msg.files} />\n ) : (\n <AssistantMessage\n chunks={msg.chunks}\n scopeState={conversation.state}\n isLatest={index === list.length - 1}\n />\n )}\n </div>\n ))}\n </div>\n </div>\n <button\n className={`${scrollStyles[\"scroll-down\"]} ${floatingStyles[\"floating-button\"]}`}\n style={{ bottom: \"30px\" }}\n hidden={!scrollable}\n onClick={scrollToBottom}\n >\n <WrappedIcon lib=\"antd\" icon=\"down\" />\n </button>\n </div>\n ) : (\n <div className={styles[\"loading-icon\"]}>\n <WrappedIcon\n lib=\"antd\"\n theme=\"outlined\"\n icon=\"loading-3-quarters\"\n spinning\n />\n </div>\n )}\n <div className={styles.input}>\n <WrappedChatInput\n ref={inputRef}\n placeholder={placeholder}\n suggestionsPlacement=\"top\"\n submitDisabled={submitDisabled || !canChat}\n supportsTerminate\n uploadOptions={uploadOptions}\n onChatSubmit={(e) => handleChatSubmit(e.detail)}\n />\n </div>\n </div>\n </WrappedModal>\n {activeFile && <FilePreview file={activeFile} fromModal />}\n {activeImages && <ImagesPreview images={activeImages} fromModal />}\n </TaskContext.Provider>\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, `.panel--ukaGUcR2{display:flex;flex-direction:column;min-height:300px;height:100%}.main--K5R8dLH9{position:relative;flex:1;min-height:0}.chat--Drl2ThnZ{padding:0 0 20px;height:100%;overflow-y:auto}.messages--Bhaarj69{width:100%;margin:0 auto}.message--TP5bdFpZ + .message--TP5bdFpZ{margin-top:40px}.loading-icon--BjI0pCV1{flex:1;display:flex;align-items:center;justify-content:center;font-size:48px;color:#fff}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"panel\": `panel--ukaGUcR2`,\n\t\"main\": `main--K5R8dLH9`,\n\t\"chat\": `chat--Drl2ThnZ`,\n\t\"messages\": `messages--Bhaarj69`,\n\t\"message\": `message--TP5bdFpZ`,\n\t\"loading-icon\": `loading-icon--BjI0pCV1`\n};\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","undefined","WrappedModal","wrapBrick","onClose","onConfirm","onCancel","onOpen","defineElement","property","method","createDecorators","ChatPanelComponent","forwardRef","LegacyChatPanelComponent","_ChatPanel","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_ref","ChatPanel","ReactNextElement","constructor","arguments","_classPrivateFieldInitSpec","_initProto","_init_panelTitle","_init_extra_panelTitle","_init_aiEmployeeId","_init_extra_aiEmployeeId","_init_cmd","_init_extra_cmd","_init_width","_init_extra_width","_init_height","_init_extra_height","_init_placeholder","_init_extra_placeholder","_init_uploadOptions","_init_extra_uploadOptions","_init_help","_init_extra_help","createRef","panelTitle","_classPrivateFieldGet","v","_classPrivateFieldSet","aiEmployeeId","cmd","width","height","placeholder","uploadOptions","help","open","_classPrivateFieldGet2","this","current","close","_classPrivateFieldGet3","setInputValue","content","_classPrivateFieldGet4","send","payload","_classPrivateFieldGet5","showFile","file","_classPrivateFieldGet6","render","React","ref","_ref2","modalRef","useRef","inputRef","submitDisabled","setSubmitDisabled","useState","conversationId","setConversationId","initialRequest","setInitialRequest","conversation","tasks","errors","humanInputRef","useConversationDetail","conversationAvailable","conversationState","state","conversationDone","DONE_STATES","includes","canChat","messages","useConversationStream","humanInput","useCallback","input","action","extra","_humanInputRef$curren","call","depsReady","setDepsReady","useEffect","ignore","Promise","race","preloadHighlighter","resolve","setTimeout","finally","scrollContainerRef","scrollContentRef","scrollable","scrollToBottom","useAutoScroll","handleChatSubmit","async","http","post","data","e","handleHttpError","activeFile","setActiveFile","activeImages","setActiveImages","taskContextValue","useMemo","useImperativeHandle","_modalRef$current","_modalRef$current2","_inputRef$current","setValue","TaskContext","Provider","value","modalTitle","themeVariant","maskClosable","noFooter","headerBordered","fullscreenButton","background","backgroundImage","_inputRef$current2","focus","className","styles","panel","main","chat","map","msg","index","list","message","key","role","UserMessage","files","AssistantMessage","chunks","scopeState","isLatest","length","scrollStyles","floatingStyles","style","bottom","hidden","onClick","WrappedIcon","lib","icon","theme","spinning","ReactUseMultipleBricks","useBrick","WrappedChatInput","suggestionsPlacement","supportsTerminate","onChatSubmit","detail","FilePreview","fromModal","ImagesPreview","images","_ChatPanel2","c","_initClass","_applyDecs","shadowOptions","attribute","___CSS_LOADER_EXPORT___","push","module","id"],"sourceRoot":""}
|