@next-bricks/ai-portal 0.64.5 → 0.64.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.
@@ -1,2 +0,0 @@
1
- "use strict";(globalThis.webpackChunk_next_bricks_ai_portal=globalThis.webpackChunk_next_bricks_ai_portal||[]).push([[288],{8337:(e,t,s)=>{s.d(t,{A:()=>g});var a=s(72591),l=s.n(a),n=s(1740),i=s.n(n),o=s(88128),r=s.n(o),c=s(30855),h=s.n(c),u=s(93051),d=s.n(u),p=s(73656),m=s.n(p),A=s(55111),v={};v.styleTagTransform=m(),v.setAttributes=h(),v.insert=r().bind(null,"head"),v.domAPI=i(),v.insertStyleElement=d(),l()(A.A,v);const g=A.A&&A.A.locals?A.A.locals:void 0},11552:(e,t,s)=>{s.r(t),s.d(t,{ChatPanel:()=>te});var a,l=s(70918),n=s(86121),i=s(70829),o=s(62740),r=s(18769),c=s.n(r),h=s(90870),u=s(30981),d=(s(34419),s(22919)),p=s(18796),m=s(8337),A=s(60128),v=s(67101),g=s(13330),f=s(52208),k=s(40563),b=s(30621),E=s(84766),w=s(9442),y=s(69493),I=s(32360),T=s(40177),C=s(30672),x=s(38717),B=s(6671),R=s(76720);let M,N,F,O,S,W,P,V,_,j,Z,D,G,H,L,U,$,q,K,z;const Q=(0,u.wrapBrick)("eo-modal",{onClose:"close",onConfirm:"confirm",onCancel:"cancel",onOpen:"open"}),{defineElement:J,property:X,method:Y}=(0,h.createDecorators)(),ee=(0,r.forwardRef)(pe);let te;var se=new WeakMap,ae=new WeakMap,le=new WeakMap,ne=new WeakMap,ie=new WeakMap,oe=new WeakMap,re=new WeakMap,ce=new WeakMap,he=new WeakMap,ue=new WeakMap;class de extends u.ReactNextElement{constructor(){super(...arguments),(0,l.A)(this,se,(M(this),F(this))),(0,l.A)(this,ae,(O(this),S(this))),(0,l.A)(this,le,(W(this),P(this))),(0,l.A)(this,ne,(V(this),_(this))),(0,l.A)(this,ie,(j(this),Z(this))),(0,l.A)(this,oe,(D(this),G(this))),(0,l.A)(this,re,(H(this),L(this))),(0,l.A)(this,ce,(U(this),$(this))),(0,l.A)(this,he,(q(this),K(this))),(0,l.A)(this,ue,(z(this),(0,r.createRef)()))}get panelTitle(){return(0,i.A)(se,this)}set panelTitle(e){(0,n.A)(se,this,e)}get aiEmployeeId(){return(0,i.A)(ae,this)}set aiEmployeeId(e){(0,n.A)(ae,this,e)}get cmd(){return(0,i.A)(le,this)}set cmd(e){(0,n.A)(le,this,e)}get width(){return(0,i.A)(ne,this)}set width(e){(0,n.A)(ne,this,e)}get height(){return(0,i.A)(ie,this)}set height(e){(0,n.A)(ie,this,e)}get placeholder(){return(0,i.A)(oe,this)}set placeholder(e){(0,n.A)(oe,this,e)}get uploadOptions(){return(0,i.A)(re,this)}set uploadOptions(e){(0,n.A)(re,this,e)}get help(){return(0,i.A)(ce,this)}set help(e){(0,n.A)(ce,this,e)}get maskClosable(){return(0,i.A)(he,this)}set maskClosable(e){(0,n.A)(he,this,e)}open(){var e;null===(e=(0,i.A)(ue,this).current)||void 0===e||e.open()}close(){var e;null===(e=(0,i.A)(ue,this).current)||void 0===e||e.close()}setInputValue(e){var t;null===(t=(0,i.A)(ue,this).current)||void 0===t||t.setInputValue(e)}send(e){var t;null===(t=(0,i.A)(ue,this).current)||void 0===t||t.send(e)}showFile(e){var t;null===(t=(0,i.A)(ue,this).current)||void 0===t||t.showFile(e)}render(){return c().createElement(ee,{ref:(0,i.A)(ue,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,maskClosable:this.maskClosable})}}function pe(e,t){let{panelTitle:s,aiEmployeeId:a,cmd:l,width:n,height:i,placeholder:o,uploadOptions:h,help:u,maskClosable:M}=e;const N=(0,r.useRef)(null),F=(0,r.useRef)(null),[O,S]=(0,r.useState)(!1),[W,P]=(0,r.useState)(null),[V,_]=(0,r.useState)(null),{conversation:j,tasks:Z,errors:D,humanInputRef:G}=(0,v.u)(W,V),H=!!j,L=null==j?void 0:j.state,U=T.QB.includes(L),$=!W||U||"input-required"===L,{messages:q}=(0,g.p)(H,L,Z,D),K=(0,r.useCallback)(((e,t,s)=>{var a;null===(a=G.current)||void 0===a||a.call(G,e,t,s)}),[G]),[z,J]=(0,r.useState)(!1);(0,r.useEffect)((()=>{let e=!1;return Promise.race([(0,f.L)("light-plus"),new Promise((e=>setTimeout(e,5e3)))]).finally((()=>{e||J(!0)})),()=>{e=!0}}),[]);const X=(0,r.useRef)(null),Y=(0,r.useRef)(null),{scrollable:ee,scrollToBottom:te}=(0,k.i)(H&&z,X,Y),se=(0,r.useCallback)((async e=>{if(W){const{content:t,...s}=e;K(t,void 0,s)}else{S(!0);try{const t=(await d.http.post("api/gateway/logic.llm.aiops_service/api/v1/elevo/conversations",{})).data.conversationId;P(t),_({...e,...a?{aiEmployeeId:a}:null,...l?{cmd:l}:null,conversationId:t})}catch(e){(0,A.handleHttpError)(e)}finally{S(!1)}}}),[a,l,W,K]),[ae,le]=(0,r.useState)(null),[ne,ie]=(0,r.useState)(null),oe=(0,r.useMemo)((()=>({conversationState:L,setActiveFile:le,setActiveImages:ie,humanInput:K})),[L,K]);(0,r.useImperativeHandle)(t,(()=>({open:()=>{var e;null===(e=N.current)||void 0===e||e.open()},close:()=>{var e;null===(e=N.current)||void 0===e||e.close()},setInputValue:e=>{var t;null===(t=F.current)||void 0===t||t.setValue(e)},send:e=>{se(e)},showFile:e=>{le(e)}})),[se]);const re=(null==j?void 0:j.finished)&&!T.Z5.includes(L);return c().createElement(R.j.Provider,{value:oe},c().createElement(Q,{modalTitle:s,width:n,height:i,themeVariant:"elevo",maskClosable:M,noFooter:!0,headerBordered:!0,fullscreenButton:!0,background:`fixed url(${I}) center center / cover no-repeat`,onOpen:()=>{setTimeout((()=>{var e;null===(e=F.current)||void 0===e||e.focus()}),100)},ref:N},c().createElement("div",{className:m.A.panel},W?H&&z?c().createElement("div",{className:m.A.main},c().createElement("div",{className:m.A.chat,ref:X},c().createElement("div",{className:m.A.messages,ref:Y},q.map(((e,t,s)=>c().createElement("div",{className:m.A.message,key:t},"user"===e.role?c().createElement(b.R,{content:e.content,files:e.files}):c().createElement(E.G,{chunks:e.chunks,scopeState:j.state,isLatest:t===s.length-1&&!re,finished:j.finished})))),re&&c().createElement("div",{className:m.A.message},c().createElement(E.G,{earlyFinished:!0})))),c().createElement("button",{className:`${w.A["scroll-down"]} ${y.A["floating-button"]}`,style:{bottom:"30px"},hidden:!ee,onClick:te},c().createElement(C.Bj,{lib:"antd",icon:"down"}))):c().createElement("div",{className:m.A["loading-icon"]},c().createElement(C.Bj,{lib:"antd",theme:"outlined",icon:"loading-3-quarters",spinning:!0})):c().createElement("div",{className:m.A.main},u?c().createElement(p.ReactUseMultipleBricks,{useBrick:u.useBrick}):null),c().createElement("div",{className:m.A.input},c().createElement(C.IV,{ref:F,placeholder:o,suggestionsPlacement:"top",submitDisabled:O||!$,supportsTerminate:!0,uploadOptions:h,onChatSubmit:e=>se(e.detail)})))),ae&&c().createElement(x.d,{file:ae,fromModal:!0}),ne&&c().createElement(B.f,{images:ne,fromModal:!0}))}a=de,({e:[F,O,S,W,P,V,_,j,Z,D,G,H,L,U,$,q,K,z,M],c:[te,N]}=(0,o.A)(a,[J("ai-portal.chat-panel",{shadowOptions:!1})],[[X(),1,"panelTitle"],[X(),1,"aiEmployeeId"],[X({attribute:!1}),1,"cmd"],[X({attribute:!1}),1,"width"],[X({attribute:!1}),1,"height"],[X(),1,"placeholder"],[X({attribute:!1}),1,"uploadOptions"],[X({attribute:!1}),1,"help"],[X({type:Boolean}),1,"maskClosable"],[Y(),2,"open"],[Y(),2,"close"],[Y(),2,"setInputValue"],[Y(),2,"send"],[Y(),2,"showFile"]],0,void 0,u.ReactNextElement)),N()},55111:(e,t,s)=>{s.d(t,{A:()=>o});var a=s(36758),l=s.n(a),n=s(40935),i=s.n(n)()(l());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.0735e831.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chunks/chat-panel.0735e831.js","mappings":"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","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 type { UseBrickConf } from \"@next-core/types\";\nimport { ReactUseMultipleBricks } from \"@next-core/react-runtime\";\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, NON_WORKING_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\";\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 maskClosable?: boolean;\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 /**\n * Whether to close the panel when clicking the mask.\n *\n * @default false\n */\n @property({ type: Boolean })\n accessor maskClosable: boolean | 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 maskClosable={this.maskClosable}\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 maskClosable,\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 const earlyFinished =\n conversation?.finished && !NON_WORKING_STATES.includes(conversationState!);\n\n return (\n <TaskContext.Provider value={taskContextValue}>\n <WrappedModal\n modalTitle={panelTitle}\n width={width}\n height={height}\n themeVariant=\"elevo\"\n maskClosable={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 && !earlyFinished}\n finished={conversation.finished}\n />\n )}\n </div>\n ))}\n {earlyFinished && (\n <div className={styles.message}>\n <AssistantMessage earlyFinished />\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","_I","_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","_init_maskClosable","_init_extra_maskClosable","createRef","panelTitle","_classPrivateFieldGet","v","_classPrivateFieldSet","aiEmployeeId","cmd","width","height","placeholder","uploadOptions","help","maskClosable","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","earlyFinished","finished","NON_WORKING_STATES","TaskContext","Provider","value","modalTitle","themeVariant","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","type","Boolean","___CSS_LOADER_EXPORT___","push","module","id"],"sourceRoot":""}