aitu-app 0.6.78 → 0.6.80
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/README.md +3 -3
- package/assets/CanvasAudioPlayer-CSFENxi6.js +2 -0
- package/assets/ChatDrawer-CWZQP5R5.css +1 -0
- package/assets/ChatDrawer-sVEVW11M.js +11 -0
- package/assets/ChatMessagesArea-Cnb94V8-.js +7 -0
- package/assets/ChatMessagesArea-PlF5AwzD.css +1 -0
- package/assets/DeferredAIInputBar-D99l6sBS.js +8 -0
- package/assets/DrawnixDeferredFeatures-78cIu-ev.js +2 -0
- package/assets/{KnowledgeBaseContent-DcX5Jofx.js → KnowledgeBaseContent-DZ-1fPZa.js} +10 -10
- package/assets/{MVCreator-DllHozYg.js → MVCreator-BV8KDR6E.js} +8 -8
- package/assets/ModelBenchmarkWorkbench-DL6r0Z_5.js +2 -0
- package/assets/MusicAnalyzer-D9Bpmhym.css +1 -0
- package/assets/{MusicAnalyzer-DDeT6g3c.js → MusicAnalyzer-DQtjf36o.js} +2 -2
- package/assets/{MusicAnalyzer-CHcQ5t4P.js → MusicAnalyzer-u_5sy56T.js} +1 -1
- package/assets/PromptHistoryTool-B-ktaOpK.js +2 -0
- package/assets/PromptHistoryTool-BH7hq916.css +1 -0
- package/assets/ResizableDivider-BpUFdkte.js +1 -0
- package/assets/TaskQueuePanel-BLD1r7_I.js +1 -0
- package/assets/{VideoAnalyzer-BSLz1FaI.js → VideoAnalyzer-Bjv9pyDs.js} +2 -2
- package/assets/ai-generation-preferences-service-BSpgVCHz.js +1 -0
- package/assets/arc-CnA_FoJK.js +1 -0
- package/assets/{arc-BU2KKCa_.js → arc-DDvk_-VM.js} +1 -1
- package/assets/{batch-image-generation-Bg68r_Ql.js → batch-image-generation-N-lwbjRE.js} +3 -3
- package/assets/{blockDiagram-38ab4fdb-BCGEnMME.js → blockDiagram-38ab4fdb-B2G4wjZe.js} +6 -6
- package/assets/{blockDiagram-38ab4fdb-CsZR5uC5.js → blockDiagram-38ab4fdb-DBkZWrKk.js} +1 -1
- package/assets/{browser-DpICcNby.js → browser-ZXTF4AKv.js} +1 -1
- package/assets/{c4Diagram-3d4e48cf-9fuiuFdV.js → c4Diagram-3d4e48cf-BFg-wccg.js} +1 -1
- package/assets/{c4Diagram-3d4e48cf-WM4wd_GR.js → c4Diagram-3d4e48cf-CmyNnfip.js} +1 -1
- package/assets/{canvas-insertion-CdUQF7IV.js → canvas-insertion-CKIoVZ9a.js} +1 -1
- package/assets/channel-BQh3J7kz.js +1 -0
- package/assets/channel-CPsF_uSp.js +1 -0
- package/assets/{classDiagram-70f12bd4-DcYDedz1.js → classDiagram-70f12bd4-BoP-e23u.js} +2 -2
- package/assets/{classDiagram-70f12bd4-CBVHTwQu.js → classDiagram-70f12bd4-UTHJc2XA.js} +1 -1
- package/assets/classDiagram-v2-f2320105-BeBc2H-D.js +2 -0
- package/assets/{classDiagram-v2-f2320105-jpCwaHEd.js → classDiagram-v2-f2320105-Bjwz5ljW.js} +1 -1
- package/assets/{clipper-jvd5rF5a.js → clipper-NoHaeWV4.js} +1 -1
- package/assets/clone-CA2KqVCK.js +1 -0
- package/assets/createText-2e5e7dd3-Bsu7vT-L.js +8 -0
- package/assets/{createText-2e5e7dd3-x5lOIwut.js → createText-2e5e7dd3-DrWUfa-s.js} +1 -1
- package/assets/{edges-e0da2a9e-CbrF4nbD.js → edges-e0da2a9e-B9sYOHRt.js} +1 -1
- package/assets/{edges-e0da2a9e-Ch6PBwWs.js → edges-e0da2a9e-DX4IQMED.js} +1 -1
- package/assets/{erDiagram-9861fffd-DSlNVuAZ.js → erDiagram-9861fffd-B-LfsIMf.js} +1 -1
- package/assets/{erDiagram-9861fffd-Bq07elcI.js → erDiagram-9861fffd-DPdud_LA.js} +1 -1
- package/assets/{flowDb-956e92f1-Ti5YC4Vv.js → flowDb-956e92f1-C3xKlizM.js} +1 -1
- package/assets/{flowDb-956e92f1-BqPCJlZp.js → flowDb-956e92f1-Ck5oiEta.js} +1 -1
- package/assets/{flowDiagram-66a62f08-CPDuG3rY.js → flowDiagram-66a62f08-Bkt2NoHM.js} +4 -4
- package/assets/{flowDiagram-66a62f08-D3GSABFi.js → flowDiagram-66a62f08-CJnxo6dI.js} +1 -1
- package/assets/flowDiagram-v2-96b9c2cf-MnwxRDMO.js +1 -0
- package/assets/flowDiagram-v2-96b9c2cf-U7nNPvdl.js +1 -0
- package/assets/{flowchart-elk-definition-4a651766-BH09NeLA.js → flowchart-elk-definition-4a651766-2XkrsdKI.js} +2 -2
- package/assets/{flowchart-elk-definition-4a651766-BLaLPCDV.js → flowchart-elk-definition-4a651766-ec8y1a8S.js} +1 -1
- package/assets/{ganttDiagram-c361ad54-DL9ZeaEc.js → ganttDiagram-c361ad54-1TA0mZY_.js} +3 -3
- package/assets/{ganttDiagram-c361ad54-Sp9M1KHP.js → ganttDiagram-c361ad54-D-OrVtXV.js} +3 -3
- package/assets/{gitGraphDiagram-72cf32ee-BWwmRKo-.js → gitGraphDiagram-72cf32ee-Blt3RsBD.js} +1 -1
- package/assets/{gitGraphDiagram-72cf32ee-BSf1fsDV.js → gitGraphDiagram-72cf32ee-CKf6xgO1.js} +1 -1
- package/assets/{graph-g-2U7grQ.js → graph-CUYgHJmb.js} +1 -1
- package/assets/{graph--nPw8zXQ.js → graph-WeSRtsZO.js} +1 -1
- package/assets/{index-ZrVeQUWo.js → index--MqiaN5t.js} +1 -1
- package/assets/{index-C5eu4uSl.js → index-0b_TeH8L.js} +11 -11
- package/assets/{index-3862675e-BXwbZ2pz.js → index-3862675e-C2ipEQC8.js} +1 -1
- package/assets/{index-3862675e-D6Zy95zZ.js → index-3862675e-CeX6VlsU.js} +1 -1
- package/assets/{index-CLJUfzvO.js → index-B-J0JJak.js} +1 -1
- package/assets/{index-TkfyNewx.js → index-B7Hj7g41.js} +1 -1
- package/assets/{index-eZfwJ9bV.js → index-BS_v5cOh.js} +1 -1
- package/assets/index-Btk31p7r.js +1 -0
- package/assets/{index-DH12_HTj.js → index-C-Samsu3.js} +2 -2
- package/assets/index-C-llNX01.js +1 -0
- package/assets/index-C8c9icsH.js +2 -0
- package/assets/{index-D7b5fX1d.js → index-CAn2jfNg.js} +1 -1
- package/assets/{index-Dz8sghkK.js → index-CK2zt94U.js} +1 -1
- package/assets/{index-CfgvFFx3.js → index-CP51k4n6.js} +17 -17
- package/assets/{index-DI0OV6F8.js → index-CXBhIy30.js} +1 -1
- package/assets/index-C_Mj1wbj.js +2 -0
- package/assets/{index-BwSnJN93.js → index-CbfE0MBd.js} +1 -1
- package/assets/{index-C3qD42ws.js → index-CjeDxq0c.js} +1 -1
- package/assets/{index-DqMndQiP.js → index-Ct7OFnWK.js} +1 -1
- package/assets/{index-BaCHOxhI.js → index-CxxUIkx1.js} +1 -1
- package/assets/{index-B2dttXd7.js → index-D2Kc-3MO.js} +1 -1
- package/assets/{index-Bq8mPedC.js → index-DK0XEByD.js} +1 -1
- package/assets/{index-DllL1sx1.js → index-DQcV2DYj.js} +1 -1
- package/assets/{index-BP77pG9S.js → index-DSKRBuhn.js} +73 -73
- package/assets/{index-BXzGHPXz.js → index-DXqL8NRE.js} +2 -2
- package/assets/{index-B7V7-Vxz.js → index-DcLrRIlS.js} +1 -1
- package/assets/{index-D4pIkh3S.js → index-DdA-dF0D.js} +1 -1
- package/assets/{index-QkP3EC02.js → index-DdxTnVj5.js} +1 -1
- package/assets/{index-CmyOpFTN.js → index-DmrnShhc.js} +1 -1
- package/assets/{index-Bti3m-iW.js → index-QO0uGVDP.js} +1 -1
- package/assets/{index-BPR_DyGD.js → index-aIKXDB1M.js} +1 -1
- package/assets/{index-DIiIUyb-.js → index-n6JhNACm.js} +1 -1
- package/assets/{index-BWrcsh8u.js → index-qbS_W7PW.js} +1 -1
- package/assets/index-v7iKPBEu.css +1 -0
- package/assets/{infoDiagram-f8f76790-DpFqCCNv.js → infoDiagram-f8f76790-DEWQ3NXc.js} +1 -1
- package/assets/{infoDiagram-f8f76790-G2JpJJP7.js → infoDiagram-f8f76790-u_qjHFCm.js} +3 -3
- package/assets/{journeyDiagram-49397b02-DLLTobRM.js → journeyDiagram-49397b02-C8A30CBr.js} +1 -1
- package/assets/{journeyDiagram-49397b02-BdESGMrv.js → journeyDiagram-49397b02-hQJfqZih.js} +1 -1
- package/assets/{layout-WSR0vNPO.js → layout-CFKTKeqQ.js} +1 -1
- package/assets/{layout-CVkuImk4.js → layout-DvRyabpG.js} +1 -1
- package/assets/{line-D3bnG227.js → line-C72F34Po.js} +1 -1
- package/assets/{line-DQuMJveY.js → line-W5R41tQ1.js} +1 -1
- package/assets/{linear-CciP-97N.js → linear-7FXykgHM.js} +1 -1
- package/assets/{linear-Z6vFvuwc.js → linear-CVyOPUvz.js} +1 -1
- package/assets/main-BO0HWBB1.js +42 -0
- package/assets/{main-8DNjLY6L.css → main-DAuE07rf.css} +1 -1
- package/assets/{mermaid.core-CwZQb0ud.js → mermaid.core-2VcXhn43.js} +4 -4
- package/assets/{mindmap-definition-fc14e90a-BnJ8OOTI.js → mindmap-definition-fc14e90a-CcVXKGg4.js} +1 -1
- package/assets/{mindmap-definition-fc14e90a-CxQMydCW.js → mindmap-definition-fc14e90a-DRDYXe84.js} +2 -2
- package/assets/model-benchmark-launcher-C2qBiDlM.js +1 -0
- package/assets/{photo-wall-splitter-BZ88W5Zy.js → photo-wall-splitter-CFntSOdS.js} +1 -1
- package/assets/{pieDiagram-8a3498a8-BSDdkTeu.js → pieDiagram-8a3498a8-Be9dl9pU.js} +1 -1
- package/assets/{pieDiagram-8a3498a8-D6VtAoja.js → pieDiagram-8a3498a8-DXZOJYBv.js} +5 -5
- package/assets/ppt-generation-B5fKT_by.js +48 -0
- package/assets/{quadrantDiagram-120e2f19-C8k2xuBd.js → quadrantDiagram-120e2f19-DoU7aQSp.js} +3 -3
- package/assets/{quadrantDiagram-120e2f19-BbFV0VXY.js → quadrantDiagram-120e2f19-l5K9mx26.js} +1 -1
- package/assets/{requirementDiagram-deff3bca-C3xMdzJV.js → requirementDiagram-deff3bca-DN_87Wxe.js} +1 -1
- package/assets/{requirementDiagram-deff3bca-CpjqKjYZ.js → requirementDiagram-deff3bca-DOooq7kx.js} +1 -1
- package/assets/retry-image-BmIVuAVu.js +6 -0
- package/assets/{sankeyDiagram-04a897e0-Bjvig9bW.js → sankeyDiagram-04a897e0-BB33nO6_.js} +1 -1
- package/assets/{sankeyDiagram-04a897e0-BBJJgsFv.js → sankeyDiagram-04a897e0-CCa0hwml.js} +2 -2
- package/assets/{sequenceDiagram-704730f1-PFC_9IFI.js → sequenceDiagram-704730f1-CNhXZiix.js} +1 -1
- package/assets/{sequenceDiagram-704730f1-DX1MmBN_.js → sequenceDiagram-704730f1-ZqQ1QrY-.js} +1 -1
- package/assets/settings-dialog-BFuWTeQR.js +1 -0
- package/assets/{skill-dsl-parser-syNWYxFu.js → skill-dsl-parser-b-aB3P5u.js} +1 -1
- package/assets/{stateDiagram-587899a1-Dc3mI_B_.js → stateDiagram-587899a1-BBlOIJr7.js} +1 -1
- package/assets/{stateDiagram-587899a1-SFMUVAam.js → stateDiagram-587899a1-BhomZ0AN.js} +1 -1
- package/assets/{stateDiagram-v2-d93cdb3a-P4Yt2p_j.js → stateDiagram-v2-d93cdb3a-BpJsgMa0.js} +1 -1
- package/assets/stateDiagram-v2-d93cdb3a-CuOn9du2.js +1 -0
- package/assets/{styles-6aaf32cf-C3jnr3hV.js → styles-6aaf32cf-C2WEewoA.js} +1 -1
- package/assets/{styles-6aaf32cf-b6AdP7fu.js → styles-6aaf32cf-CTtf8moq.js} +1 -1
- package/assets/{styles-9a916d00-BUiD9iBe.js → styles-9a916d00-44Xi2-39.js} +1 -1
- package/assets/{styles-9a916d00-ii0XTdIm.js → styles-9a916d00-DUU3VgNe.js} +4 -4
- package/assets/{styles-c10674c1-DbTSpy3W.js → styles-c10674c1--AhWSGg7.js} +1 -1
- package/assets/styles-c10674c1-DS-wE3tK.js +116 -0
- package/assets/{svgDrawCommon-08f97a94-D4gIV05W.js → svgDrawCommon-08f97a94-CXcvtSSy.js} +1 -1
- package/assets/{svgDrawCommon-08f97a94-BK6lD4D6.js → svgDrawCommon-08f97a94-Dyqh4V2s.js} +1 -1
- package/assets/{timeline-definition-85554ec2-Bl2y548G.js → timeline-definition-85554ec2-k788753O.js} +1 -1
- package/assets/{timeline-definition-85554ec2-CWKg_JxG.js → timeline-definition-85554ec2-sw6-UuBe.js} +1 -1
- package/assets/tool-windows-BEnZdJqF.js +2948 -0
- package/assets/{tool-windows-CUNbW1Tz.css → tool-windows-D61Le6TE.css} +1 -1
- package/assets/ttd-dialog-BJzXAZ0l.js +99 -0
- package/assets/useCharacters-DRBoWvvj.css +1 -0
- package/assets/useCharacters-gsV4K8Hn.js +2 -0
- package/assets/{useWorkflowSubmission-BizuDmuw.js → useWorkflowSubmission-XRR21P6Y.js} +10 -10
- package/assets/{video-analyze-6v3Y-rUE.js → video-analyze-CpbnpSiI.js} +1 -1
- package/assets/{video-generation-DnmTlWnm.js → video-generation-BXhS7x-a.js} +2 -2
- package/assets/video-recovery-service-6G2lkWcu.js +1 -0
- package/assets/workflow-generation-utils-CYxtSHl0.js +3 -0
- package/assets/workflow-submission-service-DygSzydV.js +4 -0
- package/assets/{xychartDiagram-e933f94c-CJX9_9WF.js → xychartDiagram-e933f94c-CvTTDwPb.js} +3 -3
- package/assets/{xychartDiagram-e933f94c-Cep8CQEH.js → xychartDiagram-e933f94c-Ga9zi9ha.js} +1 -1
- package/changelog.json +45 -0
- package/idle-prefetch-manifest.json +310 -306
- package/manifest.json +3 -3
- package/package.json +1 -1
- package/precache-manifest.json +10 -10
- package/sitemap.xml +37 -0
- package/sw-debug/app.js +269 -156
- package/sw-debug/backup-restore.js +235 -103
- package/sw-debug/crypto-helper.js +116 -120
- package/sw-debug/duplex-client.js +33 -19
- package/sw-debug/gist-management.js +938 -655
- package/sw-debug/sw-communication.js +87 -50
- package/sw.js +5 -5
- package/version.json +7 -17
- package/assets/CanvasAudioPlayer-DutgwdiU.js +0 -2
- package/assets/ChatDrawer-0jNvKIoI.css +0 -1
- package/assets/ChatDrawer-E6Fog16I.js +0 -11
- package/assets/ChatMessagesArea-Bgwiz_XP.js +0 -250
- package/assets/ChatMessagesArea-DyR_wHFQ.css +0 -1
- package/assets/DeferredAIInputBar-CPkD8Cv9.js +0 -8
- package/assets/DrawnixDeferredFeatures-Cul76-88.js +0 -2
- package/assets/ModelBenchmarkWorkbench-Dv9SNYTi.js +0 -2
- package/assets/MusicAnalyzer-DhtRGpAp.css +0 -1
- package/assets/ResizableDivider-CaG9JQbJ.js +0 -1
- package/assets/TaskQueuePanel-BNhNzGp5.js +0 -1
- package/assets/ai-generation-preferences-service-BF7QkuJp.js +0 -1
- package/assets/arc-DmGoDCEL.js +0 -1
- package/assets/channel-CZjE-WNp.js +0 -1
- package/assets/channel-SXZD6bG3.js +0 -1
- package/assets/classDiagram-v2-f2320105-CsxWGkSy.js +0 -2
- package/assets/clone-C4mvvMDb.js +0 -1
- package/assets/createText-2e5e7dd3-CkXS3l7I.js +0 -5
- package/assets/flowDiagram-v2-96b9c2cf-BCcJ-cre.js +0 -1
- package/assets/flowDiagram-v2-96b9c2cf-DCVaFEgV.js +0 -1
- package/assets/index-3eqA7Bag.js +0 -1
- package/assets/index-7Q-aiwln.js +0 -4
- package/assets/index-B1XP5g7P.css +0 -1
- package/assets/index-BHPTfCZM.js +0 -1
- package/assets/index-BqHZCcen.js +0 -2
- package/assets/index-DcZrElEK.js +0 -2
- package/assets/index-gQ7LgvSv.js +0 -12
- package/assets/main-BFEkxCOK.js +0 -56
- package/assets/model-benchmark-launcher-Ct3lYXVq.js +0 -1
- package/assets/ppt-generation-FzjP_rp0.js +0 -48
- package/assets/settings-dialog-CQM4v791.js +0 -1
- package/assets/stateDiagram-v2-d93cdb3a-DmnBjHpC.js +0 -1
- package/assets/styles-c10674c1-Bt89Yy8Q.js +0 -116
- package/assets/tool-windows-DOIu9TAD.js +0 -2975
- package/assets/ttd-dialog-DI4kQSg8.js +0 -99
- package/assets/useCharacters-Chv4Ky7x.js +0 -7
- package/assets/useCharacters-OrDbG69o.css +0 -1
- package/assets/video-recovery-service-BeRoh0s2.js +0 -1
- package/assets/workflow-generation-utils-me381Cax.js +0 -3
- package/assets/workflow-submission-service-YOpo7g37.js +0 -4
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Opentu CDN Assets v0.6.
|
|
1
|
+
# Opentu CDN Assets v0.6.80
|
|
2
2
|
|
|
3
3
|
> 静态资源包,不含 HTML 文件
|
|
4
4
|
|
|
5
|
-
- unpkg: https://unpkg.com/aitu-app@0.6.
|
|
6
|
-
- jsdelivr: https://cdn.jsdelivr.net/npm/aitu-app@0.6.
|
|
5
|
+
- unpkg: https://unpkg.com/aitu-app@0.6.80/
|
|
6
|
+
- jsdelivr: https://cdn.jsdelivr.net/npm/aitu-app@0.6.80/
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./tool-windows-D61Le6TE.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{Y as s,$ as a,cw as Ne,aQ as q,cx as Ae,cy as _e,bp as Ee,cz as Ce,cA as De,cB as Ue,cC as de,cD as J,cE as $,cF as Ve,cG as qe,cH as ce,a$ as me,cI as Z,cJ as Ie,bj as Se,aO as Te,at as Le,cK as Me,a4 as te,cL as fe,cM as oe,cN as le,cO as ge,cP as Re,cQ as $e,cR as ze,cS as Oe,cT as Fe,cU as Ye,cV as pe,cW as Be,cX as He,am as Qe,cY as We,cZ as Xe,c_ as Ke,c$ as Ge,d0 as Je,d1 as Ze,d2 as ea,d3 as aa}from"./tool-windows-BEnZdJqF.js";const ye=5;function ve(e,o,i){const r=Math.max(0,window.innerWidth-o),f=Math.max(0,window.innerHeight-i);return{x:Math.max(0,Math.min(e.x,r)),y:Math.max(0,Math.min(e.y,f))}}function na(e){try{const o=localStorage.getItem(e);if(!o)return null;const i=JSON.parse(o);if(typeof i.x=="number"&&typeof i.y=="number")return i}catch{}return null}function sa(e,o){try{localStorage.setItem(e,JSON.stringify(o))}catch{}}function ia(e){const{storageKey:o,enabled:i=!0}=e,[r,f]=s.useState(()=>i?na(o):null),[v,x]=s.useState(!1),P=s.useRef(!1),N=s.useRef(null),k=s.useRef(null),g=s.useCallback(p=>{if(!i||p.button!==0)return;const y=k.current;if(!y)return;const m=y.getBoundingClientRect();N.current={startPointerX:p.clientX,startPointerY:p.clientY,startElX:m.left,startElY:m.top,activated:!1,frameId:0}},[i]);s.useEffect(()=>{if(!i)return;const p=m=>{const d=N.current;if(!d)return;const b=m.clientX-d.startPointerX,I=m.clientY-d.startPointerY;if(!d.activated){if(Math.abs(b)<ye&&Math.abs(I)<ye)return;d.activated=!0,x(!0)}cancelAnimationFrame(d.frameId),d.frameId=requestAnimationFrame(()=>{const E=k.current;if(!E)return;const c=ve({x:d.startElX+b,y:d.startElY+I},E.offsetWidth,E.offsetHeight);f(c)})},y=()=>{const m=N.current;if(!m)return;cancelAnimationFrame(m.frameId);const d=m.activated;N.current=null,x(!1),d&&(P.current=!0,requestAnimationFrame(()=>{P.current=!1}),f(b=>(b&&sa(o,b),b)))};return window.addEventListener("pointermove",p),window.addEventListener("pointerup",y),()=>{window.removeEventListener("pointermove",p),window.removeEventListener("pointerup",y)}},[i,o]),s.useEffect(()=>{if(!i||!r)return;const p=()=>{const y=k.current;y&&f(m=>m&&ve(m,y.offsetWidth,y.offsetHeight))};return window.addEventListener("resize",p),()=>window.removeEventListener("resize",p)},[i,!!r]);const w=s.useCallback(()=>{f(null);try{localStorage.removeItem(o)}catch{}},[o]);return{position:r,isDragging:v,wasDraggedRef:P,elementRef:k,handlePointerDown:g,resetPosition:w}}const ta=({volume:e,onVolumeChange:o})=>{const i=s.useRef(null),r=s.useRef(null),f=s.useRef(!1),v=s.useRef(!1),x=s.useRef(!1),[P,N]=s.useState(!1),[k,g]=s.useState(!1),[w,p]=s.useState(!1),y=Math.round(e*100),m={"--canvas-audio-progress":`${e*100}%`},d=()=>{r.current!==null&&(window.clearTimeout(r.current),r.current=null)},b=()=>{d(),N(!0)},I=()=>{d(),N(c=>!c)},E=()=>{d(),!(v.current||x.current)&&(r.current=window.setTimeout(()=>{N(!1)},180))};return s.useEffect(()=>{v.current=k},[k]),s.useEffect(()=>{x.current=w},[w]),s.useEffect(()=>()=>d(),[]),s.useEffect(()=>{if(!P)return;const c=h=>{var A;(A=i.current)!=null&&A.contains(h.target)||(d(),N(!1),p(!1),g(!1),f.current=!1)};return document.addEventListener("pointerdown",c,!0),()=>document.removeEventListener("pointerdown",c,!0)},[P]),s.useEffect(()=>{if(!w)return;const c=()=>{x.current=!1,p(!1),v.current||(d(),r.current=window.setTimeout(()=>{N(!1)},180))};return window.addEventListener("pointerup",c),()=>window.removeEventListener("pointerup",c)},[w]),a.jsxDEV("div",{ref:i,className:Ne("canvas-audio-player__volume",{"canvas-audio-player__volume--expanded":P}),onPointerDown:c=>c.stopPropagation(),onMouseEnter:()=>{v.current=!0,g(!0),d()},onMouseLeave:()=>{v.current=!1,g(!1),E()},onBlur:c=>{var A;const h=c.relatedTarget;h&&((A=i.current)!=null&&A.contains(h))||E()},children:a.jsxDEV("div",{className:"canvas-audio-player__volume-shell",children:[a.jsxDEV("div",{className:"canvas-audio-player__volume-slider-wrap",children:a.jsxDEV("input",{type:"range",min:0,max:1,step:.01,value:e,onFocus:b,onPointerDown:c=>{c.stopPropagation(),x.current=!0,p(!0),b()},onChange:c=>o(Number(c.target.value)),className:"canvas-audio-player__slider canvas-audio-player__slider--volume",style:m,"aria-label":"Playback volume","aria-valuetext":`${y}%`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerVolume.tsx",lineNumber:121,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerVolume.tsx",lineNumber:120,columnNumber:9},void 0),a.jsxDEV("span",{className:"canvas-audio-player__volume-value",children:[y,"%"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerVolume.tsx",lineNumber:141,columnNumber:9},void 0),a.jsxDEV(q,{content:"音量",children:a.jsxDEV("button",{type:"button",className:"canvas-audio-player__volume-toggle",onPointerDown:c=>{c.stopPropagation(),f.current=!0},onClick:()=>{f.current=!1,I()},onFocus:()=>{f.current||b()},onBlur:()=>{f.current=!1},"aria-label":"Volume controls","aria-expanded":P,children:e<=.01?a.jsxDEV(Ae,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerVolume.tsx",lineNumber:166,columnNumber:31},void 0):a.jsxDEV(_e,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerVolume.tsx",lineNumber:166,columnNumber:55},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerVolume.tsx",lineNumber:145,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerVolume.tsx",lineNumber:144,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerVolume.tsx",lineNumber:119,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerVolume.tsx",lineNumber:97,columnNumber:5},void 0)},be="asset:";function oa(e){var o;return(o=e==null?void 0:e.elementId)!=null&&o.startsWith(be)?e.elementId.slice(be.length):null}function he(e){if(typeof e!="number"||!Number.isFinite(e)||e<=0)return"--:--";const o=Math.floor(e),i=Math.floor(o/60),r=o%60;return`${i}:${String(r).padStart(2,"0")}`}function la(e){var i;const o=((i=e.segments[e.segments.length-1])==null?void 0:i.endMs)||0;return he(o/1e3)}const ua=({queue:e,activeQueueIndex:o,queueSource:i,activePlaylistId:r,playing:f=!1,activeReadingSourceId:v,onSelect:x,onPlayAllTracksItem:P})=>{const{assets:N}=Ee(),{playlists:k,playlistItems:g,favoriteAssetIds:w,createPlaylist:p,addAssetToPlaylist:y,removeAssetFromPlaylist:m,toggleFavorite:d}=Ce(),{contextMenu:b,openAt:I,close:E}=De(),[c,h]=s.useState(!1),[A,U]=s.useState(""),[z,C]=s.useState(null),{noteMetas:L,loadReadingSource:W,buildReadingQueue:X}=Ue(),[O,F]=s.useState(i==="reading"?de:J),Y=O===de,S=i==="playlist"&&r?r:J,D=e.filter(n=>!$(n)),ee=Ve(D),K=n=>{const t=oa(n);if(t)return t;if(!(n!=null&&n.audioUrl))return null;const u=N.find(j=>j.type===Le.AUDIO&&j.url===n.audioUrl);return(u==null?void 0:u.id)||null},B=s.useMemo(()=>new Set(S!==J?(g[S]||[]).map(n=>n.assetId?qe({kind:"asset",assetId:n.assetId}):null).filter(n=>!!n):[]),[g,S]),T=s.useCallback(async n=>{if(P){P(n);return}const t=await W(n);t&&(await X(n),x(t))},[P,W,X,x]),M=s.useMemo(()=>L.map(n=>({id:n.id,title:n.title||"未命名笔记",subtitle:new Date(n.updatedAt).toLocaleDateString("zh-CN"),canFavorite:!1,isActive:(v==null?void 0:v.includes(n.id))===!0,isPlaying:f&&(v==null?void 0:v.includes(n.id))===!0})),[L,v,f]);return i==="reading"?a.jsxDEV("div",{className:"canvas-audio-player__playlist",children:[a.jsxDEV(ce,{className:"canvas-audio-player__playlist-tabs",selectedPlaylistId:O,allCount:D.length,allTracksCount:L.length,playlists:k,playlistItems:g,onSelect:F,onCreate:()=>{U(""),h(!0)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerPlaylist.tsx",lineNumber:157,columnNumber:9},void 0),Y?M.length===0?a.jsxDEV("div",{className:"canvas-audio-player__playlist-empty",children:[a.jsxDEV(me,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerPlaylist.tsx",lineNumber:173,columnNumber:15},void 0),a.jsxDEV("span",{children:"知识库还没有笔记"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerPlaylist.tsx",lineNumber:174,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerPlaylist.tsx",lineNumber:172,columnNumber:13},void 0):a.jsxDEV(Z,{className:"canvas-audio-player__playlist-list",items:M,onSelect:n=>void T(n.id),onTogglePlayback:n=>void T(n.id),showPlaybackIndicator:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerPlaylist.tsx",lineNumber:177,columnNumber:13},void 0):a.jsxDEV(Z,{className:"canvas-audio-player__playlist-list audio-track-list--queue",items:e.map((n,t)=>{const u=n;return{id:u.readingSourceId,title:u.title||"朗读轨道",subtitle:la(u),previewImageUrl:u.previewImageUrl,isActive:t===o,isPlaying:t===o,canFavorite:!1}}),onSelect:n=>{const t=e.find(u=>$(u)&&u.readingSourceId===n.id);t&&x(t)},onTogglePlayback:n=>{const t=e.find(u=>$(u)&&u.readingSourceId===n.id);t&&x(t)},showPlaybackIndicator:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerPlaylist.tsx",lineNumber:186,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerPlaylist.tsx",lineNumber:156,columnNumber:7},void 0):a.jsxDEV("div",{className:"canvas-audio-player__playlist",children:[a.jsxDEV(ce,{className:"canvas-audio-player__playlist-tabs",selectedPlaylistId:O,allCount:D.length,allTracksCount:L.length,playlists:k,playlistItems:g,onSelect:F,onCreate:()=>{U(""),h(!0)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerPlaylist.tsx",lineNumber:229,columnNumber:7},void 0),Y?M.length===0?a.jsxDEV("div",{className:"canvas-audio-player__playlist-empty",children:[a.jsxDEV(me,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerPlaylist.tsx",lineNumber:245,columnNumber:13},void 0),a.jsxDEV("span",{children:"知识库还没有笔记"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerPlaylist.tsx",lineNumber:246,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerPlaylist.tsx",lineNumber:244,columnNumber:11},void 0):a.jsxDEV(Z,{className:"canvas-audio-player__playlist-list",items:M,onSelect:n=>void T(n.id),onTogglePlayback:n=>void T(n.id),showPlaybackIndicator:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerPlaylist.tsx",lineNumber:249,columnNumber:11},void 0):a.jsxDEV(Z,{className:"canvas-audio-player__playlist-list audio-track-list--queue",items:D.map((n,t)=>{const u=K(n);return{id:`${n.audioUrl}-${t}`,title:n.title||"未命名音频",subtitle:he(ee.get(n.audioUrl)??n.duration),previewImageUrl:n.previewImageUrl,isActive:t===o,isPlaying:t===o,isFavorite:u?w.has(u):!1,canFavorite:!!u}}),onSelect:n=>{const t=D.find((u,j)=>`${u.audioUrl}-${j}`===n.id);t&&x(t)},onContextMenu:(n,t)=>{const u=D.find((H,ae)=>`${H.audioUrl}-${ae}`===n.id),j=K(u);j&&(t.preventDefault(),t.stopPropagation(),I(t.clientX,t.clientY,{kind:"asset",assetId:j}))},onToggleFavorite:n=>{const t=D.find((j,H)=>`${j.audioUrl}-${H}`===n.id),u=K(t);u&&d(u)},onTogglePlayback:n=>{const t=D.find((u,j)=>`${u.audioUrl}-${j}`===n.id);t&&x(t)},showFavoriteButton:!0,showPlaybackIndicator:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerPlaylist.tsx",lineNumber:258,columnNumber:9},void 0),a.jsxDEV(Ie,{contextMenu:b?{x:b.x,y:b.y,item:b.payload}:null,playlists:k,playlistItems:g,favoriteAssetIds:w,selectedPlaylistId:S===J?null:S,currentPlaylistItemKeys:B,onClose:E,onToggleFavorite:n=>void d(n),onAddToPlaylist:(n,t)=>{n.kind==="asset"&&y(n.assetId,t)},onRemoveFromPlaylist:(n,t)=>{n.kind==="asset"&&m(n.assetId,t)},onCreatePlaylistAndAdd:n=>{n.kind==="asset"&&(C(n.assetId),U(""),h(!0))}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerPlaylist.tsx",lineNumber:307,columnNumber:7},void 0),a.jsxDEV(Se,{visible:c,header:"新建播放列表",onClose:()=>h(!1),onConfirm:async()=>{const n=await p(A);z&&await y(z,n.id),h(!1),U(""),C(null)},onCancel:()=>{h(!1),C(null)},confirmBtn:"确定",cancelBtn:"取消",children:a.jsxDEV(Te,{value:A,onChange:n=>U(String(n)),placeholder:"请输入播放列表名称"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerPlaylist.tsx",lineNumber:363,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerPlaylist.tsx",lineNumber:343,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayerPlaylist.tsx",lineNumber:228,columnNumber:5},void 0)},Pe={sequential:a.jsxDEV(ea,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:45,columnNumber:15},void 0),"list-loop":a.jsxDEV(Ze,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:46,columnNumber:16},void 0),"single-loop":a.jsxDEV(Je,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:47,columnNumber:18},void 0),shuffle:a.jsxDEV(Ge,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:48,columnNumber:12},void 0)},ra=Object.keys(le).map(e=>({value:e,content:le[e],prefixIcon:Pe[e]}));function da(e,o){return aa(o).map(i=>{const r=ge(i),f=Math.abs(i-e)<.001;return{value:i,content:f?`✓ ${r}`:r}})}function xe(e){if(typeof e!="number"||!Number.isFinite(e)||e<=0)return"--:--";const o=Math.floor(e),i=Math.floor(o/60),r=o%60;return`${i}:${String(r).padStart(2,"0")}`}const fa=()=>{const e=Me(),o=s.useRef(null),[i,r]=s.useState(!1),[f,v]=s.useState(()=>{const l=te.getToolState(fe);return(l==null?void 0:l.status)==="open"}),[x,P]=s.useState(()=>{try{return localStorage.getItem(oe.AUDIO_PLAYER_LAYOUT)==="vertical"?"vertical":"horizontal"}catch{return"horizontal"}}),[N,k]=s.useState(()=>typeof window<"u"?window.innerWidth:1024);s.useEffect(()=>{const l=()=>k(window.innerWidth);return window.addEventListener("resize",l),window.addEventListener("orientationchange",l),()=>{window.removeEventListener("resize",l),window.removeEventListener("orientationchange",l)}},[]);const g=N<=768?"vertical":x,[w,p]=s.useState(null),y=N<=768,{position:m,isDragging:d,wasDraggedRef:b,elementRef:I,handlePointerDown:E}=ia({storageKey:oe.AUDIO_PLAYER_POSITION,enabled:!y}),c=s.useMemo(()=>!e.duration||e.duration<=0?0:Math.max(0,Math.min(100,e.currentTime/e.duration*100)),[e.currentTime,e.duration]),h=Number.isFinite(e.currentTime)?e.currentTime:0,A=Number.isFinite(e.duration)?e.duration:0,U=xe(h),z=xe(A),C=e.activeQueueIndex>=0?e.queue[e.activeQueueIndex]:null,L=e.activeTitle||($(C)?C.title:void 0),W=e.activePreviewImageUrl||($(C)?C.previewImageUrl:void 0),X=e.activeQueueIndex>0,O=e.activeQueueIndex>=0&&e.activeQueueIndex<e.queue.length-1,F=e.queue.length>1&&e.activeQueueIndex>=0,Y=F?`${e.activeQueueIndex+1}/${e.queue.length}`:null,S=e.queueSource==="playlist"?e.activePlaylistName||"播放列表":e.activePlaylistName||(e.queueSource==="reading"?"朗读轨道":"画布音频"),D=F?`${S} ${e.activeQueueIndex+1} / ${e.queue.length}`:S,ee=Y?`${Y} · ${U} / ${z}`:`${U} / ${z}`,B=e.queueSource==="reading"&&(!!e.activeReadingSourceId||C!==null&&$(C))||!!e.activeAudioUrl,T=e.mediaType==="audio",M=e.mediaType==="reading"?"reading":"audio",n=le[e.playbackMode],t=Pe[e.playbackMode],u=s.useMemo(()=>da(e.effectivePlaybackRate,M),[e.effectivePlaybackRate,M]),j=ge(e.effectivePlaybackRate),H=`${e.mediaType==="reading"?"语音速度":"播放速度"} ${j}`,ae={"--canvas-audio-progress":`${c}%`},we=s.useCallback(()=>{P(l=>{const _=l==="horizontal"?"vertical":"horizontal";try{localStorage.setItem(oe.AUDIO_PLAYER_LAYOUT,_)}catch{}return _})},[]),je=s.useCallback(async()=>{try{e.playing?e.pausePlayback():await e.resumePlayback()}catch{}},[e]);if(s.useEffect(()=>{if(!B){r(!1),p(null);return}let l=0;const _=()=>{const re=document.querySelector(".ai-input-bar__container");if(!(re instanceof HTMLElement)){p(null);return}const ie=re.getBoundingClientRect(),G={left:Math.round(ie.left),width:Math.round(ie.width),bottom:Math.max(0,Math.round(window.innerHeight-ie.top))};p(Q=>Q&&Q.left===G.left&&Q.width===G.width&&Q.bottom===G.bottom?Q:G)},V=()=>{window.cancelAnimationFrame(l),l=window.requestAnimationFrame(_)},ne=document.querySelector(".ai-input-bar__container"),se=document.querySelector(".ai-input-bar"),R=typeof ResizeObserver<"u"?new ResizeObserver(()=>V()):null;return R&&ne instanceof HTMLElement&&R.observe(ne),R&&se instanceof HTMLElement&&se!==ne&&R.observe(se),V(),window.addEventListener("resize",V),window.addEventListener("orientationchange",V),()=>{window.cancelAnimationFrame(l),window.removeEventListener("resize",V),window.removeEventListener("orientationchange",V),R==null||R.disconnect()}},[B]),s.useEffect(()=>{if(!i)return;const l=_=>{var V;(V=o.current)!=null&&V.contains(_.target)||r(!1)};return document.addEventListener("pointerdown",l,!0),()=>document.removeEventListener("pointerdown",l,!0)},[i]),s.useEffect(()=>{I.current=o.current}),s.useEffect(()=>{const l=te.observeToolStates().subscribe(()=>{const _=te.getToolState(fe);v((_==null?void 0:_.status)==="open")});return()=>l.unsubscribe()},[]),!B||f)return null;const ke=m&&!y?{left:m.x,top:m.y}:{},ue={...w?{"--canvas-audio-mobile-left":`${w.left}px`,"--canvas-audio-mobile-width":`${w.width}px`,"--canvas-audio-mobile-offset":`${w.bottom}px`}:{},...ke};return a.jsxDEV("div",{ref:o,className:Ne("canvas-audio-player",{"canvas-audio-player--playlist-open":i,"canvas-audio-player--positioned":!!m,"canvas-audio-player--dragging":d,"canvas-audio-player--vertical":g==="vertical"}),style:Object.keys(ue).length>0?ue:void 0,children:[a.jsxDEV("button",{type:"button",className:"canvas-audio-player__queue-trigger",onPointerDown:E,onClick:()=>{b.current||r(l=>!l)},"aria-expanded":i,"aria-label":"切换播放列表",children:[a.jsxDEV("div",{className:"canvas-audio-player__cover",children:a.jsxDEV(Re,{src:W,alt:L||"Audio cover",fallbackClassName:"canvas-audio-player__cover-fallback",iconSize:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:370,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:369,columnNumber:9},void 0),a.jsxDEV("div",{className:"canvas-audio-player__meta",children:[a.jsxDEV("div",{className:"canvas-audio-player__title",children:L||"未命名音频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:379,columnNumber:11},void 0),a.jsxDEV("div",{className:"canvas-audio-player__subtitle",children:[a.jsxDEV("span",{className:"canvas-audio-player__subtitle-text canvas-audio-player__subtitle-text--desktop",children:D},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:383,columnNumber:13},void 0),a.jsxDEV("span",{className:"canvas-audio-player__subtitle-text canvas-audio-player__subtitle-text--mobile",children:ee},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:386,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:382,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:378,columnNumber:9},void 0),a.jsxDEV("span",{className:"canvas-audio-player__queue-indicator","aria-hidden":"true",children:a.jsxDEV($e,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:396,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:392,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:359,columnNumber:7},void 0),a.jsxDEV("div",{className:"canvas-audio-player__controls",children:[a.jsxDEV(q,{content:"上一首",children:a.jsxDEV("button",{type:"button",className:"canvas-audio-player__action canvas-audio-player__action--previous",onClick:()=>void e.playPrevious(),disabled:!X,children:a.jsxDEV(ze,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:408,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:402,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:401,columnNumber:9},void 0),a.jsxDEV(q,{content:e.playing?"暂停":"播放",children:a.jsxDEV("button",{type:"button",className:"canvas-audio-player__action canvas-audio-player__action--primary",onClick:()=>void je(),children:e.playing?a.jsxDEV(Oe,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:417,columnNumber:33},void 0):a.jsxDEV(Fe,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:417,columnNumber:55},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:412,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:411,columnNumber:9},void 0),a.jsxDEV(q,{content:"下一首",children:a.jsxDEV("button",{type:"button",className:"canvas-audio-player__action canvas-audio-player__action--next",onClick:()=>void e.playNext(),disabled:!O,children:a.jsxDEV(Ye,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:427,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:421,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:420,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:400,columnNumber:7},void 0),a.jsxDEV("div",{className:"canvas-audio-player__progress",children:[a.jsxDEV("span",{className:"canvas-audio-player__time",children:U},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:433,columnNumber:9},void 0),a.jsxDEV("input",{type:"range",min:0,max:A||0,step:.1,value:Math.min(h,A||h),onChange:l=>{T&&e.seekTo(Number(l.target.value))},className:"canvas-audio-player__slider canvas-audio-player__slider--progress",style:ae,"aria-label":T?"Audio progress":"Reading progress",disabled:!T},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:434,columnNumber:9},void 0),a.jsxDEV("span",{className:"canvas-audio-player__time",children:z},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:450,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:432,columnNumber:7},void 0),a.jsxDEV(ta,{volume:e.volume,onVolumeChange:e.setVolume},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:453,columnNumber:7},void 0),a.jsxDEV(pe,{options:u,trigger:"click",placement:"bottom",minColumnWidth:112,onClick:l=>e.setPlaybackRate(Number(l.value)),children:a.jsxDEV(q,{content:H,children:a.jsxDEV("button",{type:"button",className:"canvas-audio-player__toggle canvas-audio-player__speed-toggle","aria-label":`切换播放速度,当前${j}`,children:a.jsxDEV(Be,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:471,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:466,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:465,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:458,columnNumber:7},void 0),a.jsxDEV(pe,{options:ra,trigger:"click",placement:"bottom",minColumnWidth:132,onClick:l=>e.setPlaybackMode(l.value),children:a.jsxDEV(q,{content:n,children:a.jsxDEV("button",{type:"button",className:"canvas-audio-player__toggle canvas-audio-player__mode-toggle","aria-label":`切换播放模式,当前${n}`,children:t},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:484,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:483,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:476,columnNumber:7},void 0),a.jsxDEV(q,{content:"打开播放器工具",children:a.jsxDEV("button",{type:"button",className:"canvas-audio-player__toggle canvas-audio-player__player-switch canvas-audio-player__switch-toggle",onClick:()=>{Qe(async()=>{const{openMusicPlayerTool:l}=await import("./tool-windows-BEnZdJqF.js").then(_=>_.pm);return{openMusicPlayerTool:l}},__vite__mapDeps([0]),import.meta.url).then(({openMusicPlayerTool:l})=>{l()})},"aria-label":"打开播放器工具",children:a.jsxDEV(He,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:507,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:495,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:494,columnNumber:7},void 0),a.jsxDEV(q,{content:g==="horizontal"?"切换为垂直布局":"切换为水平布局",children:a.jsxDEV("button",{type:"button",className:"canvas-audio-player__toggle canvas-audio-player__layout-toggle",onClick:we,style:{display:N<=768?"none":""},children:g==="horizontal"?a.jsxDEV(We,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:523,columnNumber:13},void 0):a.jsxDEV(Xe,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:525,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:516,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:511,columnNumber:7},void 0),a.jsxDEV(q,{content:"关闭播放器",children:a.jsxDEV("button",{type:"button",className:"canvas-audio-player__close",onClick:e.stopPlayback,children:a.jsxDEV(Ke,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:536,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:531,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:530,columnNumber:7},void 0),i?a.jsxDEV(ua,{queue:e.queue,activeQueueIndex:e.activeQueueIndex,queueSource:e.queueSource,activePlaylistId:e.activePlaylistId,playing:e.playing,activeReadingSourceId:e.activeReadingSourceId,onSelect:l=>{$(l)?e.toggleReadingPlayback(l):e.togglePlayback(l),r(!1)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:541,columnNumber:9},void 0):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/audio-node-element/CanvasAudioPlayer.tsx",lineNumber:349,columnNumber:5},void 0)};export{fa as CanvasAudioPlayer};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@charset "UTF-8";.chat-drawer{position:fixed;top:0;right:0;bottom:0;z-index:4010;display:flex;flex-direction:column;width:max(375px,50vw);max-width:var(--aitu-toolbar-side-panel-max-width, calc(100vw - 58px) );background:#fff;border-left:1px solid var(--td-component-border);box-shadow:-4px 0 16px #00000014;transform:translate(100%);opacity:0;visibility:hidden;pointer-events:none;transition:transform .3s ease-out,opacity .16s ease-out,visibility 0s linear .3s;color-scheme:light}.chat-drawer--open{transform:translate(0);opacity:1;visibility:visible;pointer-events:auto;transition:transform .3s ease-out,opacity .16s ease-out}.chat-drawer--dragging{transition:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chat-drawer__resize-handle{position:absolute;top:0;left:-4px;width:8px;height:100%;cursor:ew-resize;z-index:10}.chat-drawer__resize-handle:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:4px;height:40px;background:transparent;border-radius:2px;transition:background .2s ease}.chat-drawer__resize-handle:hover:before{background:var(--td-brand-color-light-hover)}.chat-drawer__resize-handle:active:before{background:var(--td-brand-color)}.chat-drawer__body{height:100%;display:flex;flex-direction:column;overflow:hidden}.chat-drawer__header{flex-shrink:0;display:flex;flex-direction:column;padding:12px 16px;border-bottom:1px solid #f0f0f0;background:#ffffffd9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);gap:12px;position:sticky;top:0;z-index:100;min-width:0}.chat-drawer__header-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.chat-drawer__header-bottom{display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:6px 12px;background:#00000008;border-radius:12px;min-width:0}.chat-drawer__session-actions{display:flex;align-items:center;gap:4px;padding-right:4px;flex-shrink:0;margin-left:auto}.chat-drawer__title{margin:0;font-size:16px;font-weight:700;color:var(--td-text-color-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;letter-spacing:-.02em}.chat-drawer__title--editable{cursor:pointer;border-radius:6px;padding:4px 8px;margin:-4px -8px;transition:all .2s ease}.chat-drawer__title--editable:hover{background:#f39c120d;color:var(--td-brand-color)}.chat-drawer__title-input{flex:1;min-width:150px;width:100%;font-size:16px;font-weight:700;color:var(--td-text-color-primary);background:#fff;border:2px solid var(--td-brand-color);border-radius:8px;padding:4px 8px;outline:none;box-sizing:border-box;box-shadow:0 4px 12px #f39c121a}.chat-drawer__actions{display:flex;gap:2px;flex-shrink:0}.chat-drawer__content{display:flex;flex-direction:column;overflow:hidden;height:calc(100vh - 108px)}.chat-drawer__close-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:50%;cursor:pointer;color:var(--td-text-color-placeholder);transition:all .2s cubic-bezier(.4,0,.2,1)}.chat-drawer__close-btn:hover{background:#f39c1214;color:var(--td-brand-color);transform:rotate(90deg)}.chat-drawer__close-btn--active{background:#f39c121a;color:var(--td-brand-color);border:1px solid rgba(243,156,18,.2)}.aitu-toolbar-dock-right .chat-drawer{right:var(--aitu-toolbar-right-dock-width, 0px)}.aitu-toolbar-dock-right .chat-drawer.chat-drawer--open{box-shadow:100vw 0 0 100vw #fff,-4px 0 16px #00000014}.chat-drawer-trigger{position:fixed;top:50%;right:0;z-index:4011;display:flex;align-items:center;justify-content:center;width:18px;height:48px;background:#fff;border:1px solid var(--td-component-border);border-right:none;border-radius:8px 0 0 8px;cursor:pointer;transform:translateY(-50%);transition:all .3s ease;box-shadow:-2px 0 8px #0000000f}.chat-drawer-trigger:hover{background:var(--td-bg-color-container-hover)}.chat-drawer-trigger__icon{color:var(--td-text-color-secondary);transition:transform .2s ease}.chat-drawer-trigger--active{transform:translateY(-50%) scaleX(-1)}.message-list{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:16px}.message-list__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--td-text-color-placeholder);text-align:center;padding:24px}.message-list__loading{display:flex;align-items:center;gap:8px;padding:12px;color:var(--td-text-color-secondary)}.message-item{display:flex;gap:12px;max-width:100%}.message-item--user{flex-direction:row-reverse}.message-item--user .message-item__bubble{background:linear-gradient(135deg,#f39c12,#e67e22);color:#fff;border-radius:12px 12px 4px;box-shadow:0 4px 12px #f39c1233}.message-item--assistant .message-item__bubble{background:#fff;color:var(--td-text-color-primary);border-radius:12px 12px 12px 4px;border:1px solid var(--td-component-border);box-shadow:0 2px 8px #0000000a}.message-item__avatar{flex-shrink:0;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--td-bg-color-secondarycontainer);color:var(--td-text-color-secondary);font-size:14px}.message-item__content{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}.message-item__bubble{padding:12px 16px;word-break:break-word;white-space:pre-wrap;line-height:1.6;font-size:14px}.message-item__actions{display:flex;gap:8px;opacity:0;transition:opacity .2s ease}.message-item:hover .message-item__actions{opacity:1}.message-item__action-btn{padding:4px 8px;font-size:12px;background:transparent;border:1px solid var(--td-component-border);border-radius:4px;cursor:pointer;color:var(--td-text-color-secondary);transition:all .2s ease}.message-item__action-btn:hover{background:var(--td-bg-color-container-hover);color:var(--td-text-color-primary)}.message-item__error{color:var(--td-error-color);font-size:12px;padding:8px;background:var(--td-error-color-1);border-radius:4px}.message-item__time{font-size:11px;color:var(--td-text-color-placeholder)}.message-input{padding:16px;border-top:1px solid var(--td-component-border);background:var(--td-bg-color-container)}.message-input__container{display:flex;align-items:flex-end;gap:12px;padding:12px;background:var(--td-bg-color-secondarycontainer);border-radius:12px;border:1px solid var(--td-component-border);transition:border-color .2s ease}.message-input__textarea{flex:1;min-height:24px;max-height:120px;padding:0;background:transparent;border:none;outline:none;resize:none;font-size:14px;line-height:1.5;color:var(--td-text-color-primary)}.message-input__textarea::-moz-placeholder{color:var(--td-text-color-placeholder)}.message-input__textarea::placeholder{color:var(--td-text-color-placeholder)}.message-input__actions{display:flex;gap:8px;align-items:center}.message-input__btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:transparent;border:none;border-radius:50%;cursor:pointer;color:var(--td-text-color-secondary);transition:all .2s ease}.message-input__btn:hover:not(:disabled){background:#f39c121a;color:var(--td-brand-color)}.message-input__btn:disabled{opacity:.5;cursor:not-allowed}.message-input__btn--send{background:linear-gradient(135deg,#f39c12,#e67e22);color:#fff}.message-input__btn--send:hover:not(:disabled){transform:scale(1.05);box-shadow:0 4px 12px #f39c124d;color:#fff}.message-input__btn--stop{background:var(--td-error-color);color:#fff}.message-input__btn--stop:hover:not(:disabled){background:var(--td-error-color-hover);color:#fff}.attachment-preview{display:flex;flex-wrap:wrap;gap:8px;padding:8px 0}.attachment-preview__item{position:relative;display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--td-bg-color-container);border:1px solid var(--td-component-border);border-radius:6px;font-size:12px;color:var(--td-text-color-secondary)}.attachment-preview__icon{flex-shrink:0}.attachment-preview__name{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment-preview__remove{position:absolute;top:-6px;right:-6px;width:16px;height:16px;padding:0;background:var(--td-error-color);border:none;border-radius:50%;cursor:pointer;color:#fff;font-size:10px;display:flex;align-items:center;justify-content:center}.attachment-preview__image{width:48px;height:48px;-o-object-fit:cover;object-fit:cover;border-radius:4px}.session-list{position:absolute;top:93px;left:0;right:0;z-index:100;background:#fff;border-bottom:1px solid var(--td-component-border);max-height:400px;overflow-y:auto;box-shadow:0 4px 12px #0000001a}.session-list__header{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;background:#fafafa;border-bottom:1px solid #f0f0f0}.session-list__title{font-size:12px;font-weight:600;color:var(--td-text-color-primary)}.session-list__new-btn{padding:4px 12px;font-size:12px;background:#fff;border:1px solid #d9d9d9;border-radius:6px;cursor:pointer;color:var(--td-text-color-secondary);transition:all .2s ease}.session-list__new-btn:hover{background:#f39c120d;border-color:var(--td-brand-color);color:var(--td-brand-color)}.session-list__items{padding:8px}.session-list__empty{padding:16px;text-align:center;color:var(--td-text-color-placeholder);font-size:13px}.session-item{display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:6px;cursor:pointer;transition:background .2s ease}.session-item:hover{background:var(--td-bg-color-container-hover)}.session-item--active .session-item__title{color:var(--td-brand-color);font-weight:600}.session-item--active .session-item__time{color:var(--td-brand-color);opacity:.7}.session-item--active{background:#f39c121a;border:1px solid rgba(243,156,18,.2)}.session-item--editing{cursor:default}.session-item__content{flex:1;min-width:0}.session-item__title{font-size:13px;color:var(--td-text-color-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-item__title-input{width:100%;font-size:13px;color:var(--td-text-color-primary);background:var(--td-bg-color-container);border:1px solid var(--td-brand-color);border-radius:4px;padding:2px 6px;outline:none;box-sizing:border-box}.session-item__title-input:focus{border-color:var(--td-brand-color);box-shadow:0 0 0 2px #0052d91a}.session-item__time{font-size:11px;color:var(--td-text-color-placeholder)}.session-item__actions{display:flex;align-items:center;gap:2px;opacity:0;transition:opacity .2s ease}.session-item__edit,.session-item__delete{padding:4px;background:transparent;border:none;border-radius:4px;cursor:pointer;color:var(--td-text-color-secondary);transition:all .2s ease}.session-item__edit:hover{background:#f39c121a;color:var(--td-brand-color)}.session-item__delete:hover{background:var(--td-error-color-1);color:var(--td-error-color)}.session-item:hover .session-item__actions{opacity:1}.streaming-text__cursor{display:inline-block;width:2px;height:1em;background:var(--td-brand-color);margin-left:2px;animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}@media(max-width:768px){.chat-drawer{width:100vw!important;max-width:100vw!important;border-left:none;border-radius:0;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}.chat-drawer__resize-handle{display:none}.chat-drawer__header{padding:8px 12px;padding-top:calc(env(safe-area-inset-top,0px) + 8px)}.chat-drawer__header-top{gap:4px}.chat-drawer__title{font-size:15px}.chat-drawer__close-btn{width:36px;height:36px;min-width:36px}.chat-drawer__content{height:calc(100vh - 108px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}.chat-drawer-trigger{display:none}.chat-messages-list{padding:12px}.chat-message{max-width:95%}.enhanced-chat-input{padding:8px 12px;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 8px)}.enhanced-chat-input__form{padding:6px}.enhanced-chat-input__textarea{min-height:60px;font-size:15px}.enhanced-chat-input__send{width:36px;height:36px;min-width:36px}}@media(max-width:640px){.chat-drawer__header,.chat-drawer__header-bottom{padding:4px 8px;gap:4px}.chat-drawer__title{font-size:14px}.chat-drawer__session-actions{gap:2px}.session-list{top:80px;max-height:50vh}.session-list__header{padding:4px 12px}.session-list__new-btn{padding:6px 10px;font-size:11px}.session-item{padding:4px 8px}.session-item__title{font-size:12px}.chat-messages-list{padding:8px;gap:12px}.chat-message-content{padding:8px 12px;font-size:13px}.chat-message-avatar{width:28px;height:28px}.chat-message-avatar svg{width:14px;height:14px}.enhanced-chat-input{padding:4px 8px;max-height:140px}.enhanced-chat-input__form{padding:4px;border-radius:12px}.enhanced-chat-input__textarea{min-height:44px;max-height:80px;padding:8px 10px;font-size:14px}.enhanced-chat-input__selection{gap:4px;padding-bottom:4px;margin-bottom:4px}.enhanced-chat-input__selection-item{width:32px;height:32px}.enhanced-chat-input__selection-item--text{min-width:48px;max-width:100px;padding:4px 8px}.model-selector__trigger{padding:3px 8px;font-size:11px}.model-selector__dropdown{min-width:280px;max-width:calc(100vw - 32px)}.model-selector__item{padding:8px 10px}.model-selector__item-name{font-size:13px}.model-selector__item-desc{font-size:11px}}@media(max-width:480px){.chat-drawer__header-bottom .chat-drawer__session-actions{display:none}.enhanced-chat-input__selection-item{width:28px;height:28px}.enhanced-chat-input__send{width:32px;height:32px;min-width:32px}.model-selector--variant-capsule .model-selector__trigger{padding:2px 6px;font-size:10px}.model-selector__trigger-text{max-width:60px}}.chat-section{display:flex;flex-direction:column;height:calc(100vh - 268px);overflow:hidden;padding:0!important}.chat-messages{flex:1;display:flex;flex-direction:column;overflow:hidden;padding:0!important}.chat-messages-list{flex:1;overflow-y:auto;padding:16px 0 16px 16px;display:flex;flex-direction:column;gap:16px}.chat-message{display:flex;flex-wrap:wrap;gap:12px;max-width:90%;padding:0!important}.chat-message--user{flex-direction:row-reverse;align-self:flex-end}.chat-message--user .chat-message-content{background:linear-gradient(135deg,#f39c12,#e67e22);color:#fff;border-radius:12px 12px 4px;border:none;box-shadow:0 4px 12px #f39c1233}.chat-message--assistant{align-self:flex-start}.chat-message--assistant .chat-message-content{background:#fff;border-radius:12px 12px 12px 4px;border:1px solid var(--td-component-border);box-shadow:0 2px 8px #0000000a}.chat-message--error .chat-message-content{background:var(--td-error-color-1);border:1px solid var(--td-error-color-3);color:var(--td-error-color-7)}.chat-message--error .chat-message-avatar{background:var(--td-error-color-1);color:var(--td-error-color)}.chat-message-avatar{width:32px;height:32px;border-radius:50%;background:var(--td-bg-color-secondarycontainer);display:flex;align-items:center;justify-content:center;flex-shrink:0}.chat-message-avatar svg{width:18px;height:18px;color:var(--td-text-color-secondary)}.chat-message-content{padding:12px 16px;font-size:14px;line-height:1.6;color:var(--td-text-color-primary);word-break:break-word;-webkit-user-select:text;-moz-user-select:text;user-select:text;cursor:text}.chat-message-content::-moz-selection{background-color:rgba(var(--td-brand-color-rgb),.3)}.chat-message-content::selection{background-color:rgba(var(--td-brand-color-rgb),.3)}.chat-message-content p{margin:0 0 8px}.chat-message-content p:last-child{margin-bottom:0}.chat-message-content pre{margin:12px 0;padding:12px;background:var(--td-bg-color-page);border-radius:8px;overflow-x:auto;font-size:13px}.chat-message-content pre code{background:none;padding:0}.chat-message-content code{background:var(--td-bg-color-page);padding:2px 6px;border-radius:4px;font-size:13px;font-family:SF Mono,Monaco,monospace}.chat-message-content ul,.chat-message-content ol{margin:8px 0;padding-left:24px}.chat-message-content blockquote{margin:12px 0;padding-left:12px;border-left:3px solid var(--td-brand-color);color:var(--td-text-color-secondary)}.chat-message-actions{flex-basis:100%;display:flex;justify-content:flex-end;flex-direction:row!important;align-items:center;gap:8px;margin-top:0;opacity:0;transition:opacity .2s ease;--spacing: 5px}.chat-message:hover .chat-message-actions{opacity:1}.chat-message--user .chat-message-actions{margin-left:0;justify-content:flex-end}.chat-message--user .chat-message-actions .chat-message-content{padding:0!important}.chat-message-actions button{padding:6px 12px;background:var(--td-bg-color-container);border:1px solid var(--td-component-border);border-radius:6px;cursor:pointer;color:var(--td-text-color-secondary);font-size:12px;transition:all .2s ease}.chat-message-actions button:hover{background:var(--td-bg-color-container-hover);color:var(--td-text-color-primary);border-color:var(--td-brand-color)}.chat-loading{display:flex;align-items:center;gap:8px;padding:16px;color:var(--td-text-color-secondary);font-size:14px}.chat-loading--full{flex:1;height:100%;justify-content:center;flex-direction:column}.chat-loading__spinner{width:16px;height:16px;border:2px solid var(--td-bg-color-secondarycontainer);border-top-color:var(--td-brand-color);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.chat-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;text-align:center}.chat-empty h3{margin:0 0 8px;font-size:18px;font-weight:600;color:var(--td-text-color-primary)}.chat-empty p{margin:0;color:var(--td-text-color-placeholder);font-size:14px}.chat-input{padding:16px 24px;border-top:1px solid var(--td-component-border);background:var(--td-bg-color-container)}.chat-input-form{display:flex;align-items:flex-end;gap:12px;background:var(--td-bg-color-container);border-radius:16px;padding:8px;box-shadow:0 2px 12px #0000000f;transition:all .3s ease}.chat-input-form:focus-within{box-shadow:0 4px 20px #5a4fcf26}.chat-input-formtextarea:focus{border:none!important}.chat-input-field{flex:1;width:100%;min-height:44px;max-height:120px;padding:8px;background:transparent;border:none;border-radius:12px;resize:none;font-size:15px;line-height:1.6;color:var(--td-text-color-primary);outline:none;transition:all .2s ease}.chat-input-field::-moz-placeholder{color:var(--td-text-color-placeholder)}.chat-input-field::placeholder{color:var(--td-text-color-placeholder)}.chat-input-submit{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#5a4fcf,#7b68ee);border:none;border-radius:12px;cursor:pointer;color:#fff;transition:all .3s ease;box-shadow:0 2px 8px #5a4fcf40}.chat-input-submit:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 16px #5a4fcf59}.chat-input-submit:active:not(:disabled){transform:translateY(0)}.chat-input-submit:disabled{background:var(--td-bg-color-component-disabled);color:var(--td-text-color-disabled);cursor:not-allowed;box-shadow:none}.chat-input-submit svg{width:20px;height:20px}.enhanced-chat-input{position:relative;flex-shrink:0;max-height:160px;padding:12px 16px;border-top:1px solid var(--td-component-border);background:#fff;overflow-y:auto}.enhanced-chat-input__selection{display:flex;flex-wrap:wrap;gap:8px;padding-bottom:8px;margin-bottom:8px;border-bottom:1px dashed var(--td-component-border);align-items:center}.enhanced-chat-input__selection-item{position:relative;width:36px;height:36px;border-radius:4px;overflow:hidden;background:#f5f5f5;flex-shrink:0;cursor:pointer;transition:transform .15s ease;display:flex;align-items:center;justify-content:center}.enhanced-chat-input__selection-item:hover{transform:scale(1.05)}.enhanced-chat-input__selection-item img,.enhanced-chat-input__selection-item video{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;background:#f5f5f5}.enhanced-chat-input__selection-item--graphics{border:1px solid #f39c12}.enhanced-chat-input__selection-item--video{border:2px solid #3b82f6}.enhanced-chat-input__selection-item--text{width:auto;height:auto;min-width:64px;max-width:180px;padding:8px 12px;background:#eff6ff;border:1px solid #bfdbfe;display:flex;align-items:center;justify-content:flex-start}.enhanced-chat-input__form{display:flex;align-items:flex-start;gap:8px;background:#fff;border-radius:16px;padding:8px;border:1px solid var(--td-component-border);box-shadow:0 2px 12px #0000000f;transition:all .3s ease}.enhanced-chat-input__form:focus-within{border-color:var(--td-brand-color);box-shadow:0 4px 20px #f39c1226}.enhanced-chat-input__input-wrapper{position:relative;flex:1}.enhanced-chat-input__highlight-layer{position:absolute;top:0;left:0;right:0;bottom:0;padding:10px 12px;font-size:14px;line-height:1.5;white-space:pre-wrap;word-wrap:break-word;word-break:break-word;pointer-events:none;font-family:inherit;overflow:hidden;z-index:1;box-sizing:border-box}.enhanced-chat-input__highlight-text{color:transparent}.enhanced-chat-input__highlight-tag{color:transparent;border-radius:3px;box-decoration-break:clone;-webkit-box-decoration-break:clone;padding:0 2px;margin:0 -2px}.enhanced-chat-input__highlight-tag--image{background:#e5393526}.enhanced-chat-input__highlight-tag--video{background:#ff980026}.enhanced-chat-input__highlight-tag--param{background:#9c27b026}.enhanced-chat-input__highlight-tag--count{background:#2196f326}.enhanced-chat-input__textarea{position:relative;z-index:2;width:100%;min-height:88px;max-height:120px;padding:10px 12px;background:transparent;border:none;border-radius:12px;resize:none;font-size:14px;line-height:1.5;font-family:inherit;color:var(--td-text-color-primary);outline:none;caret-color:var(--td-brand-color)}.enhanced-chat-input__textarea::-moz-placeholder{color:var(--td-text-color-placeholder)}.enhanced-chat-input__textarea::placeholder{color:var(--td-text-color-placeholder)}.enhanced-chat-input__send{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:#f3f4f6;border:none;border-radius:50%;color:#9ca3af;cursor:not-allowed;transition:all .2s ease;flex-shrink:0}.enhanced-chat-input__send--active{background:#f59e0b;color:#fff;cursor:pointer;box-shadow:0 2px 8px #f59e0b66}.enhanced-chat-input__send--active:hover{background:#d97706;transform:scale(1.05)}.enhanced-chat-input__send:disabled{background:#f3f4f6;color:#9ca3af;cursor:not-allowed;box-shadow:none}.enhanced-chat-input__send svg{width:20px;height:20px}.mermaid-renderer{position:relative;margin:12px 0;padding:16px;background:var(--td-bg-color-container);border:1px solid var(--td-component-border);border-radius:12px;overflow-x:auto;transition:all .2s ease}.mermaid-renderer:hover{border-color:var(--td-brand-color);box-shadow:0 2px 8px #00000014}.mermaid-renderer__loading{display:flex;align-items:center;justify-content:center;padding:24px;color:var(--td-text-color-placeholder);font-size:14px}.mermaid-renderer__container{display:flex;justify-content:center;align-items:center;cursor:pointer;transition:transform .2s ease}.mermaid-renderer__container:hover{transform:scale(1.02)}.mermaid-renderer__container svg{max-width:100%;height:auto}.mermaid-renderer__hint{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:12px;padding:8px;color:var(--td-text-color-placeholder);font-size:12px;opacity:0;transition:opacity .2s ease}.mermaid-renderer__hint svg{width:16px;height:16px}.mermaid-renderer:hover .mermaid-renderer__hint{opacity:1}.mermaid-renderer--error{background:var(--td-error-color-1);border-color:var(--td-error-color-3)}.mermaid-renderer__error{color:var(--td-error-color-7);font-size:14px}.mermaid-renderer__error strong{display:block;margin-bottom:8px}.mermaid-renderer__error pre{margin:8px 0;padding:8px;background:var(--td-bg-color-container);border-radius:4px;font-size:12px;overflow-x:auto}.mermaid-renderer__error details{margin-top:12px}.mermaid-renderer__error details summary{cursor:pointer;color:var(--td-text-color-secondary);font-size:12px;padding:8px}.mermaid-renderer__error details summary:hover{color:var(--td-text-color-primary)}.mermaid-preview-dialog .t-dialog__body{padding:24px;max-height:80vh;overflow:auto;background:var(--td-bg-color-container)}.mermaid-preview-content{display:flex;justify-content:center;align-items:center;min-height:400px}.mermaid-preview-content svg{max-width:100%;height:auto}.model-selector{position:relative;min-width:0}.model-selector__trigger{display:inline-flex;align-items:center;justify-content:space-between;gap:6px;padding:4px 10px;background:#fff;border:1px solid #e5e7eb;border-radius:14px;font-size:12px;font-weight:500;color:var(--td-text-color-secondary);cursor:pointer;transition:all .2s ease;outline:none;width:auto;flex-wrap:nowrap;white-space:nowrap}.model-selector__trigger:hover{background:#f9fafb;border-color:var(--td-brand-color);color:var(--td-text-color-primary)}.model-selector__trigger--active{border-color:var(--td-brand-color);box-shadow:0 0 0 2px rgba(var(--td-brand-color-rgb),.1)}.model-selector--variant-form{width:100%;flex:none}.model-selector--variant-form .model-selector__trigger{display:flex;align-items:center;width:100%;max-width:100%;padding:8px 12px;border-radius:6px;background:#fff;border:1px solid #e5e7eb;min-height:36px;box-sizing:border-box;justify-content:flex-start;gap:8px}.model-selector--variant-form .model-selector__trigger:hover{border-color:var(--td-brand-color)}.model-selector--variant-form .model-selector__trigger--active{border-color:var(--td-brand-color);box-shadow:0 0 0 2px #f39c121a}.model-selector--variant-form .model-selector__trigger-content{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.model-selector--variant-form .model-selector__trigger-health{flex-shrink:0}.model-selector--variant-form .model-selector__trigger-text{font-size:14px;color:var(--td-text-color-primary);text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.model-selector--variant-form .model-selector__trigger-icon{flex-shrink:0;color:#9ca3af}.model-selector--variant-capsule{flex:none;width:auto}.model-selector--variant-capsule .model-selector__trigger{width:auto;max-width:none;background:#0000000a;border:none;padding:4px 12px;border-radius:10px;color:var(--td-text-color-primary)}.model-selector--variant-capsule .model-selector__trigger:hover{background:#00000014}.model-selector--variant-capsule .model-selector__trigger--active{background:#f39c121a;color:var(--td-brand-color);box-shadow:none}.model-selector__trigger-content{display:flex;align-items:center;gap:6px;flex:1;min-width:0;overflow:hidden;flex-wrap:nowrap}.model-selector__trigger-icon-provider{flex-shrink:0;width:16px;height:16px;border-radius:50%}.model-selector__trigger-health{margin-left:-2px;margin-right:2px;flex-shrink:0;display:inline-flex;align-items:center}.model-selector__trigger-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.model-selector__trigger-icon{flex-shrink:0;color:var(--td-text-color-placeholder);transition:transform .2s ease;width:14px;height:14px}.model-selector__trigger-icon--open{transform:rotate(180deg)}.model-selector__dropdown{position:absolute;top:calc(100% + 8px);left:0;z-index:1000;min-width:360px;max-width:440px;background:#fff;border:1px solid #e5e7eb;border-radius:12px;box-shadow:0 8px 16px #0000001a,0 3px 6px #0000000f;overflow:hidden;animation:slideDown .15s cubic-bezier(.16,1,.3,1)}.model-selector__search{padding:12px 12px 8px;background:#fff}.model-selector__search .t-input{font-size:13px;border-radius:8px}.model-selector__search .t-input .t-input__inner{padding:8px 12px;font-size:13px}.model-selector__search .t-input:focus,.model-selector__search .t-input.t-is-focused{border-color:var(--td-brand-color);box-shadow:0 0 0 2px rgba(var(--td-brand-color-rgb),.1)}.model-selector__list{max-height:480px;overflow-y:auto;padding:12px}.model-selector__list::-webkit-scrollbar{width:6px}.model-selector__list::-webkit-scrollbar-track{background:transparent}.model-selector__list::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:20px}.model-selector__list::-webkit-scrollbar-thumb:hover{background:#9ca3af}.model-selector__empty{padding:32px 16px;text-align:center;font-size:13px;color:#9ca3af}.model-selector__group{margin-bottom:16px}.model-selector__group:last-child{margin-bottom:0}.model-selector__group:not(:first-child){padding-top:12px;border-top:1px solid #f3f4f6}.model-selector__group-header{padding:8px 10px 6px;font-size:11px;font-weight:700;color:#9ca3af;text-transform:uppercase;letter-spacing:.8px}.model-selector__item{display:flex;align-items:center;gap:12px;width:100%;padding:10px 12px;background:transparent;border:1px solid transparent;border-radius:8px;text-align:left;cursor:pointer;transition:all .15s ease;outline:none;position:relative}.model-selector__item:hover{background:#f9fafb}.model-selector__item--active{background:#f39c121a;border-color:#f39c1233}.model-selector__item--active .model-selector__item-name{color:#d97706;font-weight:600}.model-selector__item--active .model-selector__item-desc{color:#d97706;opacity:.7}.model-selector__item--active .model-selector__check{color:#f39c12}.model-selector__item--active .model-selector__item-icon{border:1px solid rgba(243,156,18,.3)}.model-selector__item-icon{flex-shrink:0;width:24px;height:24px;border-radius:50%}.model-selector__item-icon--text{display:inline-flex;align-items:center;justify-content:center;background:#f3f4f6;color:#4b5563;font-size:11px;font-weight:700;line-height:1}.model-selector__item-content{flex:1;min-width:0}.model-selector__item-header{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:4px}.model-selector__item-name{font-size:14px;font-weight:500;color:var(--td-text-color-primary)}.model-selector__item-provider{display:inline-flex;align-items:center;max-width:160px;padding:0 6px;border-radius:999px;border:1px solid rgba(37,99,235,.18);background:#2563eb14;color:#1d4ed8;font-size:11px;font-weight:600;line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1}.model-selector__item-desc{font-size:12px;color:var(--td-text-color-placeholder);line-height:1.5}.model-selector__item-price{font-size:11px;color:var(--td-text-color-placeholder);white-space:nowrap;margin-left:auto}.model-selector__badges{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.model-selector__badge{display:inline-block;padding:3px 7px;font-size:10px;font-weight:600;border-radius:5px;white-space:nowrap;letter-spacing:.2px}.model-selector__badge.badge-new,.model-selector__badge.badge-pro{background:#f39c121a;color:#d97706;border:1px solid rgba(243,156,18,.2);text-transform:uppercase}.model-selector__badge.badge-fast{background:#ecfdf5;color:#059669;border:1px solid #a7f3d0}.model-selector__badge.badge-multimodal{background:#eff6ff;color:#2563eb;border:1px solid #bfdbfe}.model-selector__badge.badge-reasoning{background:#fff7ed;color:#ea580c;border:1px solid #ffedd5}.model-selector__badge.badge-economic{background:#f0fdf4;color:#16a34a;border:1px solid #bbf7d0}.model-selector__check{flex-shrink:0;color:var(--td-brand-color);margin-left:auto}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./tool-windows-D61Le6TE.css","./index-I7GscWS1.css","./main-DAuE07rf.css","./index-CJ7peDFP.css","./MediaLibrarySidebar-CNCXXhfY.css","./ChatMessagesArea-PlF5AwzD.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{aJ as ie,Y as s,$ as r,fa as vt,aR as Dt,bM as rt,ca as Mt,aQ as _e,fV as It,bn as jt,fW as Ct,bv as Se,bz as Tt,bu as Oe,bw as At,fX as it,dQ as Rt,fY as Ye,fZ as Ut,db as Vt,aO as qt,aP as Lt,f_ as Wt,f$ as $t,g0 as Pt,da as zt,el as Ht,ek as Ft,g1 as Gt,g2 as Kt,b2 as Bt,g3 as ot,H as Je,y as Q,g4 as Xt,g5 as Ot,g6 as Yt,g7 as Jt,g8 as Qt,g9 as Zt,ga as es,gb as ts,q as qe,dF as ss,ds as as,k as ns,du as rs,dG as is,gc as os,gd as cs,aE as ls,bt as Qe,al as ds,dc as us,bk as ms,aY as fs,am as ct}from"./tool-windows-BEnZdJqF.js";import{S as hs,i as ps,u as ws}from"./index-CP51k4n6.js";import{a as gs}from"./main-BO0HWBB1.js";const lt=ie.memo(({session:t,isActive:e,onSelect:i,onDelete:d,onRename:g})=>{const[o,c]=s.useState(!1),[l,S]=s.useState(t.title),y=s.useRef(null),N=s.useCallback(()=>{o||i()},[i,o]),E=s.useCallback(x=>{x.stopPropagation(),d()},[d]),C=s.useCallback(x=>{x.stopPropagation(),S(t.title),c(!0)},[t.title]),k=s.useCallback(()=>{const x=l.trim();x&&x!==t.title&&g(x),c(!1)},[l,t.title,g]),$=s.useCallback(()=>{S(t.title),c(!1)},[t.title]),_=s.useCallback(x=>{x.key==="Enter"?(x.preventDefault(),k()):x.key==="Escape"&&(x.preventDefault(),$())},[k,$]),v=s.useCallback(x=>{S(x.target.value)},[]);s.useEffect(()=>{o&&y.current&&(y.current.focus(),y.current.select())},[o]);const P=s.useMemo(()=>{const x=new Date(t.updatedAt),O=new Date;return x.toDateString()===O.toDateString()?x.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}):x.toLocaleDateString("zh-CN",{month:"short",day:"numeric"})},[t.updatedAt]);return r.jsxDEV("div",{className:`session-item ${e?"session-item--active":""} ${o?"session-item--editing":""}`,"data-track":"chat_click_session_select",onClick:N,role:"button",tabIndex:0,onKeyDown:x=>!o&&x.key==="Enter"&&N(),children:[r.jsxDEV("div",{className:"session-item__content",children:[o?r.jsxDEV("input",{ref:y,className:"session-item__title-input",value:l,onChange:v,onKeyDown:_,onBlur:k,onClick:x=>x.stopPropagation(),maxLength:50},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/SessionItem.tsx",lineNumber:101,columnNumber:13},void 0):r.jsxDEV("div",{className:"session-item__title",children:t.title},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/SessionItem.tsx",lineNumber:112,columnNumber:13},void 0),r.jsxDEV("div",{className:"session-item__time",children:P},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/SessionItem.tsx",lineNumber:114,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/SessionItem.tsx",lineNumber:99,columnNumber:9},void 0),!o&&r.jsxDEV("div",{className:"session-item__actions",children:[r.jsxDEV("button",{className:"session-item__edit","data-track":"chat_click_session_edit",onClick:C,"aria-label":`编辑会话标题: ${t.title}`,children:r.jsxDEV(vt,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/SessionItem.tsx",lineNumber:124,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/SessionItem.tsx",lineNumber:118,columnNumber:13},void 0),r.jsxDEV("button",{className:"session-item__delete","data-track":"chat_click_session_delete",onClick:E,"aria-label":`删除会话: ${t.title}`,children:r.jsxDEV(Dt,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/SessionItem.tsx",lineNumber:132,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/SessionItem.tsx",lineNumber:126,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/SessionItem.tsx",lineNumber:117,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/SessionItem.tsx",lineNumber:91,columnNumber:7},void 0)});lt.displayName="SessionItem";const dt=ie.memo(({sessions:t,activeSessionId:e,onSelectSession:i,onNewSession:d,onDeleteSession:g,onRenameSession:o})=>{const[c,l]=ie.useState(null),S=s.useCallback(k=>{i(k)},[i]),y=s.useCallback(k=>{l(k)},[]),N=s.useCallback(()=>{c&&(g(c),l(null))},[c,g]),E=s.useCallback(()=>{l(null)},[]),C=s.useCallback((k,$)=>{o(k,$)},[o]);return r.jsxDEV("div",{className:"session-list",children:[r.jsxDEV("div",{className:"session-list__header",children:[r.jsxDEV("span",{className:"session-list__title",children:"会话列表"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/SessionList.tsx",lineNumber:49,columnNumber:11},void 0),r.jsxDEV("button",{className:"session-list__new-btn","data-track":"chat_click_session_new",onClick:d,"aria-label":"新建会话",children:[r.jsxDEV(rt,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/SessionList.tsx",lineNumber:56,columnNumber:13},void 0),r.jsxDEV("span",{children:"新建"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/SessionList.tsx",lineNumber:57,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/SessionList.tsx",lineNumber:50,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/SessionList.tsx",lineNumber:48,columnNumber:9},void 0),r.jsxDEV("div",{className:"session-list__items",children:t.length===0?r.jsxDEV("div",{className:"session-list__empty",children:"暂无会话"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/SessionList.tsx",lineNumber:62,columnNumber:13},void 0):t.map(k=>r.jsxDEV(lt,{session:k,isActive:k.id===e,onSelect:()=>S(k.id),onDelete:()=>y(k.id),onRename:$=>C(k.id,$)},k.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/SessionList.tsx",lineNumber:65,columnNumber:15},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/SessionList.tsx",lineNumber:60,columnNumber:9},void 0),r.jsxDEV(Mt,{open:c!==null,title:"删除会话",description:"确定删除此会话吗?删除后无法恢复。",confirmText:"删除",cancelText:"取消",danger:!0,onOpenChange:k=>{k||E()},onConfirm:N},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/SessionList.tsx",lineNumber:77,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/SessionList.tsx",lineNumber:47,columnNumber:7},void 0)});dt.displayName="SessionList";const ut=ie.memo(({isOpen:t,onClick:e,drawerWidth:i})=>{const d={right:t&&i?`calc(var(--aitu-toolbar-right-dock-width, 0px) + ${i-18}px)`:"var(--aitu-toolbar-right-dock-width, 0px)"};return r.jsxDEV(_e,{content:t?"收起对话":"展开对话",children:r.jsxDEV("button",{className:`chat-drawer-trigger ${t?"chat-drawer-trigger--active":""}`,"data-track":t?"chat_click_drawer_close":"chat_click_drawer_open",onClick:e,"aria-label":t?"收起对话":"展开对话","aria-expanded":t,style:d,children:r.jsxDEV(It,{size:16,className:"chat-drawer-trigger__icon"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawerTrigger.tsx",lineNumber:42,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawerTrigger.tsx",lineNumber:30,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawerTrigger.tsx",lineNumber:29,columnNumber:7},void 0)});ut.displayName="ChatDrawerTrigger";function Ee(t){return t.sourceProfileName||it[t.vendor]||t.id}const xs=ie.memo(({model:t})=>{const e=Ht(t.sourceProfileId,t.id);return e?r.jsxDEV("span",{className:"model-selector__item-price",children:e},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:60,columnNumber:12},void 0):null}),Ns=ie.memo(({model:t})=>{const e=Ft(t.sourceProfileId,t.id);return e!=null&&e.description?r.jsxDEV("div",{className:"model-selector__item-desc",children:e.description},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:69,columnNumber:7},void 0):null});function bs(t,e){var o;const i=Ee(t),d=(o=t.description)==null?void 0:o.trim(),g=(e==null?void 0:e.includeProvider)??!0;return d?!g||d.includes(i)?d:`${i} · ${d}`:g?i:""}function Ss(t){return Ee(t).trim().slice(0,1).toUpperCase()||"M"}const mt=ie.memo(({className:t,value:e,valueRef:i,onChange:d,variant:g="capsule"})=>{var q;const o=jt("text"),c=((q=o[0])==null?void 0:q.id)||Ct,[l,S]=s.useState(c),[y,N]=s.useState(()=>Se(null,c)),E=e??l,C=i===void 0?y:i,[k,$]=s.useState(!1),[_,v]=s.useState(""),[P,x]=s.useState(null),O=s.useRef(null),B=s.useRef(null);s.useEffect(()=>{!e&&c&&l!==c&&(S(c),N(Se(null,c)))},[c,l,e]),s.useEffect(()=>{if(!k)return;const p=h=>{const W=h.target;O.current&&!O.current.contains(W)&&B.current&&!B.current.contains(W)&&($(!1),v(""))},u=setTimeout(()=>{document.addEventListener("mousedown",p)},100);return()=>{clearTimeout(u),document.removeEventListener("mousedown",p)}},[k]);const G=s.useMemo(()=>E?Tt(E,C):null,[E,C]),R=s.useMemo(()=>{if(Oe(o,E,C)||!E)return o;const u=At("text",E,C);return u?[u,...o]:o},[o,E,C]),b=s.useMemo(()=>Oe(R,E,C)||R.find(p=>p.id===E),[R,E,C]),I=s.useCallback(p=>{const u=Se(p.sourceProfileId||null,p.id);e===void 0&&S(p.id),i===void 0&&N(u),d==null||d(p.id,u),$(!1),v("")},[e,i,d]),L=s.useCallback(()=>{const p=!k;$(p),p?x((b==null?void 0:b.vendor)||null):v("")},[b==null?void 0:b.vendor,k]),V=s.useMemo(()=>{const p=new Map,u=[];return R.forEach(h=>{p.has(h.vendor)||(u.push(h.vendor),p.set(h.vendor,0)),p.set(h.vendor,(p.get(h.vendor)??0)+1)}),u.map(h=>({id:h,label:it[h],count:p.get(h)??0,icon:r.jsxDEV(Rt,{vendor:h,size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:225,columnNumber:15},void 0)}))},[R]),ne=s.useCallback(p=>{x(p)},[]),oe=s.useMemo(()=>{const p=_.toLowerCase().trim();return p?R.filter(u=>{var W,Y;const h=Ee(u).toLowerCase();return u.id.toLowerCase().includes(p)||u.label.toLowerCase().includes(p)||((W=u.shortLabel)==null?void 0:W.toLowerCase().includes(p))||((Y=u.description)==null?void 0:Y.toLowerCase().includes(p))||h.includes(p)}):P?R.filter(u=>u.vendor===P):R},[_,P,R]),[X,ee]=s.useState({top:0,left:0,width:0,bottom:0,placement:"bottom",maxHeight:480});s.useLayoutEffect(()=>{if(!k)return;const p=()=>{if(!B.current)return;const u=B.current.getBoundingClientRect(),h=window.innerHeight,W=h-u.bottom,Y=u.top,de=W<400&&Y>W?"top":"bottom",te=de==="top"?Y-16:h-u.bottom-16;ee({top:u.top,left:u.left,width:u.width,bottom:u.bottom,placement:de,maxHeight:Math.min(Math.max(te,200),600)})};return p(),window.addEventListener("resize",p),window.addEventListener("scroll",p,!0),()=>{window.removeEventListener("resize",p),window.removeEventListener("scroll",p,!0)}},[k]);const le=()=>{if(!k)return null;const p=r.jsxDEV("div",{ref:O,className:"model-selector__dropdown",style:{position:"fixed",zIndex:Vt.DROPDOWN_PORTAL,left:X.left,top:X.placement==="bottom"?X.bottom+8:"auto",bottom:X.placement==="top"?window.innerHeight-X.top+8:"auto",minWidth:360,width:g==="form"?X.width:"auto",maxHeight:X.maxHeight,visibility:X.width===0?"hidden":"visible",transformOrigin:X.placement==="bottom"?"top left":"bottom left",display:"flex",flexDirection:"column"},onClick:u=>u.stopPropagation(),children:[r.jsxDEV("div",{className:"model-selector__search",children:r.jsxDEV(qt,{value:_,onChange:v,placeholder:"搜索模型...",prefixIcon:r.jsxDEV(Lt,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:339,columnNumber:27},void 0),clearable:!0,autofocus:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:335,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:334,columnNumber:11},void 0),r.jsxDEV(Wt,{tabs:V,activeTab:P,onTabChange:ne,searchQuery:_,compact:!0,children:r.jsxDEV("div",{className:"model-selector__list",children:oe.length===0?r.jsxDEV("div",{className:"model-selector__empty",children:"未找到匹配的模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:354,columnNumber:17},void 0):oe.map(u=>{const h=$t(u),W=h===G,Y=!!_.trim(),de=bs(u,{includeProvider:!Y});return r.jsxDEV("button",{className:`model-selector__item ${W?"model-selector__item--active":""}`,"data-track":"chat_click_model_select",onClick:()=>I(u),children:[r.jsxDEV("span",{className:"model-selector__item-icon model-selector__item-icon--text","aria-hidden":"true",children:Ss(u)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:372,columnNumber:23},void 0),r.jsxDEV("div",{className:"model-selector__item-content",children:[r.jsxDEV("div",{className:"model-selector__item-header",children:[r.jsxDEV("span",{className:"model-selector__item-name",children:u.shortLabel||u.label},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:380,columnNumber:27},void 0),Y?r.jsxDEV("span",{className:"model-selector__item-provider",children:Ee(u)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:384,columnNumber:29},void 0):null,r.jsxDEV(Ye,{modelId:u.id,profileId:u.sourceProfileId||null},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:388,columnNumber:27},void 0),r.jsxDEV(Pt,{modelId:u.id},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:392,columnNumber:27},void 0),r.jsxDEV(xs,{model:u},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:393,columnNumber:27},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:379,columnNumber:25},void 0),de?r.jsxDEV("div",{className:"model-selector__item-desc",children:de},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:396,columnNumber:27},void 0):r.jsxDEV(Ns,{model:u},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:400,columnNumber:27},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:378,columnNumber:23},void 0),W&&r.jsxDEV("svg",{className:"model-selector__check",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:r.jsxDEV("path",{d:"M13.3334 4L6.00002 11.3333L2.66669 8",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:411,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:404,columnNumber:25},void 0)]},h,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:364,columnNumber:21},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:352,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:345,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:306,columnNumber:9},void 0);return zt.createPortal(p,document.body)};return r.jsxDEV("div",{className:`model-selector ${t||""} model-selector--variant-${g}`,children:[r.jsxDEV("button",{ref:B,className:`model-selector__trigger ${k?"model-selector__trigger--active":""}`,"data-track":"chat_click_model_selector",onClick:L,"aria-label":"选择模型","aria-expanded":k,children:[r.jsxDEV("div",{className:"model-selector__trigger-content",children:[r.jsxDEV(Ye,{modelId:(b==null?void 0:b.id)||E,profileId:(b==null?void 0:b.sourceProfileId)||null,className:"model-selector__trigger-health"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:449,columnNumber:13},void 0),r.jsxDEV("span",{className:"model-selector__trigger-text",children:(b==null?void 0:b.shortLabel)||(b==null?void 0:b.label)||"选择模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:454,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:448,columnNumber:11},void 0),r.jsxDEV(Ut,{size:16,className:`model-selector__trigger-icon ${k?"model-selector__trigger-icon--open":""}`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:458,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:438,columnNumber:9},void 0),le()]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ModelSelector.tsx",lineNumber:433,columnNumber:7},void 0)});mt.displayName="ModelSelector";const ft=s.forwardRef(({selectedContent:t,onSend:e,disabled:i=!1,placeholder:d="输入消息..."},g)=>{const o=s.useRef(null),c=s.useRef(null),[l,S]=s.useState(""),y=t.length>0,{addHistory:N}=Gt();s.useImperativeHandle(g,()=>({setContent:_=>{var v;S(_),(v=o.current)==null||v.focus()},getContent:()=>l,focus:()=>{var _;return(_=o.current)==null?void 0:_.focus()}}),[l]);const E=s.useCallback(()=>{const _=l.trim();if(!_&&t.length===0)return;const v=[];_&&v.push({type:"text",text:_}),t.forEach((x,O)=>{x.type==="image"||x.type==="graphics"?v.push({type:"data-file",data:{filename:`${x.type}-${O+1}.png`,mediaType:"image/png",url:x.url||""}}):x.type==="video"&&v.push({type:"data-file",data:{filename:`video-${O+1}.mp4`,mediaType:"video/mp4",url:x.url||""}})});const P={id:`msg_${Date.now()}`,role:"user",parts:v};_&&N(_,y,"agent"),Promise.resolve(e(P)).catch(x=>{console.error("[EnhancedChatInput] send failed:",x)}),S("")},[l,t,e,N,y]),C=s.useCallback(_=>{_.nativeEvent.isComposing||_.key==="Enter"&&!_.shiftKey&&(_.preventDefault(),E())},[E]);s.useEffect(()=>{o.current&&(o.current.style.height="auto",o.current.style.height=`${Math.min(o.current.scrollHeight,120)}px`)},[l]);const k=()=>t.length===0?null:r.jsxDEV("div",{className:"enhanced-chat-input__selection",children:r.jsxDEV(hs,{items:t,language:"zh",enableHoverPreview:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/EnhancedChatInput.tsx",lineNumber:138,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/EnhancedChatInput.tsx",lineNumber:137,columnNumber:7},void 0),$=(l.trim()||t.length>0)&&!i;return r.jsxDEV("div",{className:"enhanced-chat-input",ref:c,children:[k(),r.jsxDEV("div",{className:"enhanced-chat-input__form",children:[r.jsxDEV("div",{className:"enhanced-chat-input__input-wrapper",children:r.jsxDEV("textarea",{ref:o,className:"enhanced-chat-input__textarea",value:l,onChange:_=>S(_.target.value),onKeyDown:C,placeholder:y?"描述你想要的效果...":d,disabled:i,rows:4},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/EnhancedChatInput.tsx",lineNumber:155,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/EnhancedChatInput.tsx",lineNumber:154,columnNumber:9},void 0),r.jsxDEV("button",{className:`enhanced-chat-input__send ${$?"enhanced-chat-input__send--active":""}`,onClick:E,disabled:!$,"aria-label":"发送",children:r.jsxDEV(Kt,{size:20},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/EnhancedChatInput.tsx",lineNumber:173,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/EnhancedChatInput.tsx",lineNumber:167,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/EnhancedChatInput.tsx",lineNumber:153,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/EnhancedChatInput.tsx",lineNumber:150,columnNumber:5},void 0)});ft.displayName="EnhancedChatInput";const ye={MAX_TITLE_LENGTH:30,DRAWER_MIN_WIDTH:320,DRAWER_MAX_WIDTH:500,DRAWER_DEFAULT_WIDTH_RATIO:.3},we={DRAWER_STATE:"aitu:chat:drawer-state",ACTIVE_SESSION:"aitu:chat:active-session",DATABASE_NAME:"aitu-chat",SESSIONS_STORE:"sessions",MESSAGES_STORE:"messages"},xe=ot.createInstance({name:we.DATABASE_NAME,storeName:we.SESSIONS_STORE}),he=ot.createInstance({name:we.DATABASE_NAME,storeName:we.MESSAGES_STORE});function ht(){return Bt()}function ys(t){const e=t.trim().replace(/\n/g," ");return e.length<=ye.MAX_TITLE_LENGTH?e:e.slice(0,ye.MAX_TITLE_LENGTH-3)+"..."}async function ks(){const t=Date.now(),e={id:ht(),title:"新对话",createdAt:t,updatedAt:t,messageCount:0};return await xe.setItem(e.id,e),e}async function ve(t){return xe.getItem(t)}async function _s(){const t=[];return await xe.iterate(e=>{t.push(e)}),await new Promise(e=>{typeof window<"u"&&"requestIdleCallback"in window?window.requestIdleCallback(()=>e(),{timeout:50}):setTimeout(e,0)}),t.sort((e,i)=>i.updatedAt-e.updatedAt)}async function We(t,e){const i=await ve(t);if(i){const d={...i,...e,updatedAt:Date.now()};await xe.setItem(t,d)}}async function Es(t){const e=await pt(t);for(const i of e)await he.removeItem(i.id);await xe.removeItem(t)}async function vs(t){await he.setItem(t.id,t);const e=await ve(t.sessionId);if(e){const i={messageCount:e.messageCount+1,updatedAt:Date.now()};await We(t.sessionId,i)}}async function pt(t){const e=[];return await he.iterate(i=>{i.sessionId===t&&e.push(i)}),e.sort((i,d)=>i.timestamp-d.timestamp)}async function Ds(t,e){const i=await he.getItem(t);if(i){const d={...i,...e};await he.setItem(t,d)}}async function Ms(t){const e=await he.getItem(t);if(e){await he.removeItem(t);const i=await ve(e.sessionId);i&&await We(e.sessionId,{messageCount:Math.max(0,i.messageCount-1)})}}const Ze={isOpen:!1,width:Math.min(ye.DRAWER_MAX_WIDTH,Math.max(ye.DRAWER_MIN_WIDTH,window.innerWidth*ye.DRAWER_DEFAULT_WIDTH_RATIO)),activeSessionId:null};function wt(){try{const t=localStorage.getItem(we.DRAWER_STATE);if(t)return{...Ze,...JSON.parse(t)}}catch(t){console.error("[ChatStorage] Failed to get drawer state:",t)}return Ze}function Is(t){try{const i={...wt(),...t};localStorage.setItem(we.DRAWER_STATE,JSON.stringify(i))}catch(e){console.error("[ChatStorage] Failed to set drawer state:",e)}}async function js(){await xe.clear(),await he.clear(),localStorage.removeItem(we.DRAWER_STATE)}const M={createSession:ks,getSession:ve,getAllSessions:_s,updateSession:We,deleteSession:Es,addMessage:vs,getMessages:pt,updateMessage:Ds,deleteMessage:Ms,getDrawerState:wt,setDrawerState:Is,clearAllData:js,generateId:ht,generateTitle:ys};var Z=(t=>(t.SENDING="sending",t.STREAMING="streaming",t.SUCCESS="success",t.FAILED="failed",t))(Z||{}),ae=(t=>(t.USER="user",t.ASSISTANT="assistant",t))(ae||{});let ce=null;function gt(t){const e={};let i=1,d=1,g=1,o=t;return o=o.replace(/data:image\/[^;]+;base64,[A-Za-z0-9+/=]+/g,c=>{const l=`[图片${i}]`;return e[l]=c,i++,l}),o=o.replace(/data:video\/[^;]+;base64,[A-Za-z0-9+/=]+/g,c=>{const l=`[视频${d}]`;return e[l]=c,d++,l}),o=o.replace(/blob:[^\s"'<>]+/g,c=>{const l=`[媒体${g}]`;return e[l]=c,g++,l}),o=o.replace(/https?:\/\/[^\s"'<>]+\.(png|jpg|jpeg|gif|webp|svg|bmp)(\?[^\s"'<>]*)?/gi,c=>{const l=`[图片${i}]`;return e[l]=c,i++,l}),o=o.replace(/https?:\/\/[^\s"'<>]+\.(mp4|webm|mov|avi|mkv)(\?[^\s"'<>]*)?/gi,c=>{const l=`[视频${d}]`;return e[l]=c,d++,l}),{sanitized:o,urlMap:e}}function Cs(t,e){let i=t;for(const[d,g]of Object.entries(e))i=i.split(d).join(g);return i}async function Ts(t,e={}){const i={};let d=e.maxImageCount??Number.POSITIVE_INFINITY;return{geminiMessages:await Promise.all(t.filter(o=>o.status==="success"||o.status==="streaming").map(async o=>{const{sanitized:c,urlMap:l}=gt(o.content);Object.assign(i,l);const S=[{type:"text",text:c}];if(e.includeImageAttachments&&o.role===ae.USER&&o.attachments&&o.attachments.length>0&&d>0){const y=await es(o.attachments,d);d-=y.length,S.push(...y)}return{role:o.role===ae.USER?"user":"assistant",content:S}})),urlMap:i}}async function As(t,e,i=[],d,g,o){return Rs(t,e,i,d,g,o)}async function Rs(t,e,i=[],d,g,o){ce&&ce.abort(),ce=new AbortController;const c=ce.signal,l=Date.now().toString(),S=Date.now(),y=(typeof g=="string"?g:g==null?void 0:g.modelId)||Je.getConfig().modelName||"unknown";try{Q.trackModelCall({taskId:l,taskType:"chat",model:y,promptLength:e.length,hasUploadedImage:i.length>0,startTime:S});const N=Xt("text",g),E=Ot(N==null?void 0:N.binding),C=Yt(N==null?void 0:N.binding),k=Jt(i),$=Math.max(C-k,0),{geminiMessages:_,urlMap:v}=await Ts(t,{includeImageAttachments:E,maxImageCount:$}),{sanitized:P,urlMap:x}=gt(e),O={...v,...x},B=Qt(_),G=Math.max(C-B,0),R=[{type:"text",text:P}];if(E&&i.length>0&&G>0){const V=await Zt(i,G);R.push(...V)}const b=[];o&&b.push({role:"system",content:[{type:"text",text:o}]}),b.push(..._,{role:"user",content:R});let I="";if(await Je.sendChat(b,V=>{if(c.aborted)return;const ne=Cs(V,O);I=ne,d({type:"content",content:ne})},c,g||void 0),c.aborted)throw new Error("Request cancelled");const L=Date.now()-S;return Q.trackModelSuccess({taskId:l,taskType:"chat",model:y,duration:L,resultSize:I.length}),d({type:"done"}),ce=null,I}catch(N){ce=null;const E=Date.now()-S;if(c.aborted||N.message==="Request cancelled"||N.name==="AbortError")throw Q.trackTaskCancellation({taskId:l,taskType:"chat",duration:E}),d({type:"done"}),new Error("Request cancelled");const C=N instanceof Error?N.message:"Unknown error occurred";throw Q.trackModelFailure({taskId:l,taskType:"chat",model:y,duration:E,error:C}),d({type:"error",error:C}),N}}function Us(){ce&&(ce.abort(),ce=null)}function Vs(){return ce!==null}const et={sendChatMessage:As,stopGeneration:Us,isGenerating:Vs},Le="[[WORKFLOW_MESSAGE]]",qs=["generate_image","generate_video","generate_long_video","generate_audio","generate_grid_image","generate_photo_wall","generate_inspiration_board","generate_ppt"];function Ls(t){if(!qs.includes(t.name)||!ts(t.name))return t;const e=qe.get(),i=ss(t.name,{...t.arguments},{fallbackModels:{image:e.imageModelName||rs(),video:e.videoModelName||ns(),audio:e.audioModelName||as()}});return{...t,arguments:i}}function Ws(t){const e=[];t.aiAnalysis&&e.push(t.aiAnalysis);const i=t.steps.filter(c=>c.status==="completed"),d=t.steps.filter(c=>c.status==="failed");if(i.length>0||d.length>0){const c=[];i.length>0&&c.push(`成功执行 ${i.length} 个工具`),d.length>0&&c.push(`${d.length} 个工具执行失败`),c.length>0&&e.push(`[执行结果: ${c.join(",")}]`)}const g=t.steps.map(c=>{const l={};for(const[S,y]of Object.entries(c.args||{}))S!=="context"&&(typeof y=="string"&&y.length>200?l[S]=y.substring(0,200)+"...":l[S]=y);return{mcp:c.mcp,args:l}}),o={content:e.join(`
|
|
3
|
+
`)||`已完成任务: ${t.name}`,next:g};return JSON.stringify(o)}function $s(t){const e=[{type:"text",text:t.content}];if(t.attachments&&t.attachments.length>0)for(const i of t.attachments)e.push({type:"data-file",data:{filename:i.name,mediaType:i.type,url:i.data}});return{id:t.id,role:t.role===ae.USER?"user":"assistant",parts:e}}function Ps(t,e){const d=t.parts.filter(c=>c.type==="text").map(c=>c.text).join(""),o=t.parts.filter(c=>c.type==="data-file").map((c,l)=>{const S=c.data;return{id:`${t.id}-att-${l}`,name:S.filename,type:S.mediaType,size:0,data:S.url,isBlob:!1}});return{id:t.id,sessionId:e,role:t.role==="user"?ae.USER:ae.ASSISTANT,content:d,timestamp:Date.now(),status:Z.SUCCESS,attachments:o.length>0?o:void 0}}function zs(t){return t.workflow&&t.content.startsWith(Le)?{...t,content:Ws(t.workflow)}:t}function tt(t){return t.parts.filter(e=>e.type==="text").map(e=>e.text).join("")}ps();function Hs(t){const{sessionId:e,temporaryModel:i,onToolCalls:d,onWorkflowUpdate:g}=t,o=s.useRef(is()),c=s.useRef(d);c.current=d;const l=s.useRef(g);l.current=g;const S=s.useRef(i);S.current=i;const[y,N]=s.useState([]),[E,C]=s.useState("ready"),[k,$]=s.useState(!1),_=s.useRef(null),v=s.useRef([]),P=s.useRef(!1);s.useEffect(()=>{if(!e){N([]),v.current=[];return}(async()=>{$(!0);try{const I=await M.getMessages(e);v.current=I,N(I.map($s))}catch(I){console.error("[useChatHandler] Failed to load messages:",I),N([]),v.current=[]}finally{$(!1)}})()},[e]);const x=s.useCallback(async b=>{if(!e)return;if(P.current){console.warn("[useChatHandler] Message already being sent, ignoring duplicate call");return}P.current=!0,C("submitted");const I=Ps(b,e);await M.addMessage(I),N(q=>[...q,b]);const L=await M.getSession(e);await M.updateSession(e,{updatedAt:Date.now(),messageCount:((L==null?void 0:L.messageCount)||0)+1});const V=M.generateId();_.current=V;const ne={id:V,role:"assistant",parts:[{type:"text",text:""}]};N(q=>[...q,ne]),C("streaming");const oe=v.current.map(zs);oe.push(I),v.current=[...v.current,I];const X=tt(b);let ee="",le=!1;try{await et.sendChatMessage(oe.slice(0,-1),X,I.attachments||[],q=>{if(q.type==="content"&&q.content)ee=q.content,N(p=>p.map(u=>u.id===V?{...u,parts:[{type:"text",text:ee}]}:u));else if(q.type==="done"){const p=os(ee),u=cs(ee)||ee;if(p.length>0&&c.current){const W=p.map(te=>Ls(te)),Y=async()=>{const te=[];for(const ue of W)try{const me=await ls.executeTool(ue);te.push({toolCall:ue,success:me.success,data:me.data,error:me.error,taskId:me.taskId})}catch(me){te.push({toolCall:ue,success:!1,error:me.message||"工具执行失败"})}return te},de=`${Le}${V}`;N(te=>te.map(ue=>ue.id===V?{...ue,parts:[{type:"text",text:de}]}:ue)),c.current(W,V,Y,u)}C("ready");const h={id:V,sessionId:e,role:ae.ASSISTANT,content:p.length>0?`${Le}${V}`:ee,timestamp:Date.now(),status:p.length>0?Z.STREAMING:Z.SUCCESS};M.addMessage(h),v.current=[...v.current,h],M.updateSession(e,{updatedAt:Date.now(),messageCount:((L==null?void 0:L.messageCount)||0)+2}),_.current=null,P.current=!1}else if(q.type==="error"&&q.error){le=!0,C("error");const p=`❌ 错误: ${q.error}`;N(h=>h.map(W=>W.id===V?{...W,parts:[{type:"text",text:p}]}:W));const u={id:V,sessionId:e,role:ae.ASSISTANT,content:p,timestamp:Date.now(),status:Z.FAILED,error:q.error};M.addMessage(u),v.current=[...v.current,u],_.current=null,P.current=!1}},S.current,o.current)}catch(q){if(q.message!=="Request cancelled"&&!le){C("error"),console.error("[useChatHandler] Stream error:",q);const p=`❌ 错误: ${q.message||"未知错误"}`;if(N(u=>u.map(h=>h.id===V?{...h,parts:[{type:"text",text:p}]}:h)),e&&V){const u={id:V,sessionId:e,role:ae.ASSISTANT,content:p,timestamp:Date.now(),status:Z.FAILED,error:q.message||"未知错误"};M.addMessage(u),v.current=[...v.current,u]}}_.current=null,P.current=!1}},[e]),O=s.useCallback(async()=>{if(et.stopGeneration(),C("ready"),_.current&&e){const b=y.find(I=>I.id===_.current);if(b){const I=tt(b),L={id:b.id,sessionId:e,role:ae.ASSISTANT,content:I,timestamp:Date.now(),status:Z.SUCCESS};await M.addMessage(L)}_.current=null}},[e,y]),B=s.useCallback(b=>{if(y.length<2)return;const I=[...y].reverse().findIndex(oe=>oe.role==="user");if(I===-1)return;const L=y.length-1-I,V=y[L],ne=y.slice(0,L+1);N(ne),x(V)},[y,x]),G=s.useCallback((b,I)=>{N(b),I&&(v.current=I)},[]),R=s.useCallback((b,I)=>{v.current=v.current.map(L=>L.id===b?{...L,workflow:I}:L)},[]);return{messages:y,status:E,sendMessage:x,stop:O,regenerate:B,setMessages:N,setMessagesWithRaw:G,updateRawMessageWorkflow:R,isLoading:k}}const Fs=ie.lazy(()=>ct(()=>import("./ChatMessagesArea-Cnb94V8-.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url)),st="[[WORKFLOW_MESSAGE]]";function Gs(t,e){switch(t){case"generate_image":return`生成图片: ${((e==null?void 0:e.prompt)||"").substring(0,30)}...`;case"generate_video":return`生成视频: ${((e==null?void 0:e.prompt)||"").substring(0,30)}...`;case"generate_audio":return`生成音频: ${((e==null?void 0:e.prompt)||"").substring(0,30)}...`;case"generate_text":return`生成文本: ${((e==null?void 0:e.prompt)||"").substring(0,30)}...`;case"generate_grid_image":return`生成宫格图: ${((e==null?void 0:e.theme)||"").substring(0,30)}...`;case"canvas_insertion":return"插入到画布";case"generate_mermaid":return"生成流程图";case"generate_mindmap":return"生成思维导图";default:return`执行 ${t}`}}const at="chat-drawer-width",Ks=Math.max(375,window.innerWidth*.5),nt=375,Bs=s.forwardRef(({defaultOpen:t=!1,onOpenChange:e},i)=>{const[d,g]=s.useState(()=>M.getDrawerState().isOpen??t),[o,c]=s.useState([]),[l,S]=s.useState(null),[y,N]=s.useState(!1),[E,C]=s.useState(()=>{const n=localStorage.getItem(at);if(n){const a=parseInt(n,10);if(!isNaN(a)&&a>=nt)return Math.min(a,window.innerWidth-60)}return Ks}),[k,$]=s.useState(!1),_=s.useRef(null),[v,P]=s.useState(()=>Qe("text").modelId),[x,O]=s.useState(()=>{const n=Qe("text");return Se(n.profileId,n.modelId)}),[B,G]=s.useState(new Map),R=s.useRef(null),[b,I]=s.useState(null),{executeRetry:L,selectedContent:V,setIsDrawerOpen:ne,setDrawerWidth:oe}=gs();s.useEffect(()=>{ne(d)},[d,ne]),s.useEffect(()=>{oe(E)},[E,oe]);const X=ie.useRef(null),ee=ie.useRef(null),{appState:le,setAppState:q}=ds();s.useEffect(()=>{if(!k)return;const n=f=>{const m=window.innerWidth-f.clientX,w=Math.max(nt,Math.min(m,window.innerWidth-60));C(w)},a=()=>{$(!1),localStorage.setItem(at,String(E))};return document.addEventListener("mousemove",n),document.addEventListener("mouseup",a),document.body.style.userSelect="none",document.body.style.cursor="ew-resize",()=>{document.removeEventListener("mousemove",n),document.removeEventListener("mouseup",a),document.body.style.userSelect="",document.body.style.cursor=""}},[k,E]),s.useEffect(()=>{const n=()=>{const a=window.innerWidth-60;E>a&&C(a)};return window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[E]);const p=s.useCallback(n=>{n.preventDefault(),$(!0)},[]),u=s.useCallback(async(n,a,f,m)=>{var U,D;const T={id:`workflow-${Date.now()}`,name:"AI 智能生成",generationType:(U=n[0])!=null&&U.name.includes("video")?"video":(D=n[0])!=null&&D.name.includes("audio")?"audio":"image",prompt:m||"",aiAnalysis:m,count:n.length,steps:n.map((j,F)=>({id:`step-${F}`,mcp:j.name,status:"pending",description:Gs(j.name,j.arguments),args:j.arguments}))};G(j=>{const F=new Map(j);return F.set(a,T),F}),R.current=a,M.updateMessage(a,{workflow:T});try{const j=await f();Q.track("chat_tool_execution_complete",{success:!0,resultCount:j.length}),Q.track("ai_modality_used",{modality:"agent",action:"tool_execution_completed",source:"chat_drawer",success:!0,toolCount:n.length,resultCount:j.length}),G(F=>{const A=new Map(F),z=A.get(a);if(z){const K={...z,steps:z.steps.map((fe,be)=>{const J=j[be];return{...fe,status:J!=null&&J.success?"completed":"failed",error:J==null?void 0:J.error,result:J==null?void 0:J.data}})};A.set(a,K),M.updateMessage(a,{workflow:K,status:Z.SUCCESS})}return A})}catch(j){console.error("[ChatDrawer] Tool execution failed:",j),G(F=>{const A=new Map(F),z=A.get(a);if(z){const K={...z,steps:z.steps.map(fe=>({...fe,status:"failed",error:j.message||"执行失败"}))};A.set(a,K),M.updateMessage(a,{workflow:K,status:Z.FAILED})}return A})}},[]),h=Hs({sessionId:l,temporaryModel:x||v,onToolCalls:u}),W=s.useRef(h.sendMessage);W.current=h.sendMessage,s.useEffect(()=>{(async()=>{const a=M.getDrawerState(),f=await M.getAllSessions();c(f);let m=null;if(a.activeSessionId?(m=a.activeSessionId,S(a.activeSessionId)):f.length>0&&(m=f[0].id,S(f[0].id)),m)try{const w=await M.getMessages(m),T=new Map;for(const D of w)D.workflow&&T.set(D.id,D.workflow);G(T);const U=w.find(D=>D.workflow&&D.status===Z.STREAMING);R.current=(U==null?void 0:U.id)||null}catch(w){console.error("[ChatDrawer] Failed to load workflow messages:",w)}})()},[]),s.useEffect(()=>{M.setDrawerState({isOpen:d,activeSessionId:l})},[d,l]),s.useEffect(()=>{if(l&&re.current){const n=re.current;re.current=null,setTimeout(()=>{W.current(n)},100)}},[l]),s.useEffect(()=>{if(!le.openSettings&&re.current){const n=qe.get();if(n!=null&&n.apiKey){const a=re.current;re.current=null,l?setTimeout(()=>{W.current(a)},100):(async()=>{const f=await M.createSession();c(m=>[f,...m]),S(f.id),re.current=a})()}}},[le.openSettings,l]),s.useEffect(()=>{const n=a=>{a.key==="Escape"&&d&&(g(!1),e==null||e(!1))};return window.addEventListener("keydown",n),()=>window.removeEventListener("keydown",n)},[d,e]),s.useEffect(()=>{let n=null;return(async()=>{const{workflowSubmissionService:f}=await ct(async()=>{const{workflowSubmissionService:m}=await import("./workflow-submission-service-DygSzydV.js").then(w=>w.a);return{workflowSubmissionService:m}},__vite__mapDeps([0]),import.meta.url);n=f.subscribeToAllEvents(m=>{const w=m;G(T=>{let U=null;for(const[A,z]of T.entries())if(z.id===w.workflowId){U=A;break}if(!U)return T;const D=T.get(U);if(!D)return T;const j=new Map(T);let F;switch(w.type){case"step":{F={...D,steps:D.steps.map(A=>A.id===w.stepId?{...A,status:w.status||A.status,result:w.result??A.result,error:w.error??A.error}:A)};break}case"steps_added":{const z=(w.steps||[]).map(K=>({id:K.id,mcp:K.mcp,args:K.args,description:K.description,status:K.status}));F={...D,steps:[...D.steps,...z]};break}case"completed":case"failed":{const A=w.type==="completed"?"completed":"failed";F={...D,status:A,steps:D.steps.map(z=>{if(z.status==="running"||z.status==="pending"){const K=z.result;return K!=null&&K.taskId?z:{...z,status:A,error:w.type==="failed"?w.error:void 0}}return z})};break}default:return T}return j.set(U,F),M.updateMessage(U,{workflow:F}),j})})})().catch(f=>{console.error("[ChatDrawer] Failed to setup workflow sync:",f)}),()=>{n==null||n.unsubscribe()}},[]),s.useEffect(()=>{if(!y)return;const n=f=>{const m=f.target;m.closest(".t-dialog")===null&&X.current&&!X.current.contains(m)&&ee.current&&!ee.current.contains(m)&&N(!1)},a=setTimeout(()=>{document.addEventListener("mousedown",n)},100);return()=>{clearTimeout(a),document.removeEventListener("mousedown",n)}},[y]);const Y=s.useCallback(()=>{g(n=>{const a=!n;return e==null||e(a),a})},[e]),de=s.useCallback(()=>{g(!1),e==null||e(!1)},[e]),te=s.useCallback(async()=>{Q.track("chat_session_create");const n=await M.createSession();c(a=>[n,...a]),S(n.id),N(!1),G(new Map),R.current=null,P(void 0)},[]),ue=s.useCallback(()=>{N(n=>!n)},[]),me=s.useCallback(async n=>{Q.track("chat_session_select"),S(n),N(!1),P(void 0);try{const a=await M.getMessages(n),f=new Map;for(const w of a)w.workflow&&f.set(w.id,w.workflow);G(f);const m=a.find(w=>w.workflow&&w.status===Z.STREAMING);R.current=(m==null?void 0:m.id)||null}catch(a){console.error("[ChatDrawer] Failed to load workflow messages:",a),G(new Map),R.current=null}},[]),xt=s.useCallback(async n=>{Q.track("chat_session_delete"),await M.deleteSession(n),c(a=>{const f=a.filter(m=>m.id!==n);if(l===n){const m=f[0]||null;S((m==null?void 0:m.id)||null)}return f})},[l]),De=s.useCallback(async(n,a)=>{Q.track("chat_session_rename"),await M.updateSession(n,{title:a}),c(f=>f.map(m=>m.id===n?{...m,title:a}:m))},[]),re=ie.useRef(null),Ne=s.useCallback(async n=>{try{Q.track("chat_message_send",{hasImages:n.parts.some(f=>f.type==="image_url")}),Q.track("ai_modality_used",{modality:"agent",action:"message_send",source:"chat_drawer",hasImages:n.parts.some(f=>f.type==="image_url"),partCount:n.parts.length,textLength:n.parts.filter(f=>f.type==="text").reduce((f,m)=>f+String(m.text||"").length,0)});const a=qe.get();if(!(a!=null&&a.apiKey)){re.current=n,q({...le,openSettings:!0});return}if(re.current=null,!l){const f=await M.createSession();c(m=>[f,...m]),S(f.id),re.current=n;return}await h.sendMessage(n)}catch(a){console.error("[ChatDrawer] send message failed:",a),re.current=n}},[l,h,le,q]),$e=s.useCallback(async n=>{var Xe;const{context:a,workflow:f,textModel:m,autoOpen:w=!0}=n;w&&(g(!0),e==null||e(!0)),m&&P(m);const T=await M.createSession(),U=[];a.userInstruction&&U.push(a.userInstruction),a.selection.texts.length>0&&U.push(`
|
|
4
|
+
📝 选中的文本:
|
|
5
|
+
${a.selection.texts.join(`
|
|
6
|
+
`)}`),a.selection.texts.length===0&&!a.userInstruction&&a.finalPrompt&&U.push(`
|
|
7
|
+
提示词:
|
|
8
|
+
${a.finalPrompt}`);const D=[],j=a.model.isExplicit?`模型: ${a.model.id}`:`模型: ${a.model.id} (默认)`;D.push(j),a.params.count>1&&D.push(`数量: ${a.params.count}`),D.length>0&&U.push(`
|
|
9
|
+
---
|
|
10
|
+
${D.join(" • ")}`);const F=U.join(`
|
|
11
|
+
`);let A="新任务";if(a.finalPrompt)A=a.finalPrompt;else if(a.selection.texts.length>0)A=a.selection.texts[0];else if(a.userInstruction){const H=a.userInstruction.indexOf(":"),se=a.userInstruction.indexOf(":"),Ve=H>=0&&se>=0?Math.min(H,se):Math.max(H,se);Ve>=0&&Ve<a.userInstruction.length-1?A=a.userInstruction.substring(Ve+1).trim():A=a.userInstruction}else a.model.id&&(A=`模型: ${a.model.id}`);const z=A;await M.updateSession(T.id,{title:z}),T.title=z,c(H=>[T,...H]),S(T.id);const K=Date.now(),fe=`msg_${K}_user`,be=[{type:"text",text:F}],J=[...a.selection.images,...a.selection.graphics];for(let H=0;H<J.length;H++)be.push({type:"data-file",data:{filename:`image-${H+1}.png`,mediaType:"image/png",url:J[H]}});for(let H=0;H<a.selection.videos.length;H++)be.push({type:"data-file",data:{filename:`video-${H+1}.mp4`,mediaType:"video/mp4",url:a.selection.videos[H]}});const _t={id:fe,role:"user",parts:be},ge=`msg_${K}_workflow`,Et={id:ge,role:"assistant",parts:[{type:"text",text:`${st}${ge}`}]};G(H=>{const se=new Map(H);return se.set(ge,f),se}),R.current=ge;const Ke={id:fe,sessionId:T.id,role:ae.USER,content:F,timestamp:Date.now(),status:Z.SUCCESS,aiContext:a,attachments:J.length>0||a.selection.videos.length>0?[...J.map((H,se)=>({id:`${fe}-img-${se}`,name:`image-${se+1}.png`,type:"image/png",size:0,data:H,isBlob:!1})),...a.selection.videos.map((H,se)=>({id:`${fe}-vid-${se}`,name:`video-${se+1}.mp4`,type:"video/mp4",size:0,data:H,isBlob:!1}))]:void 0};await M.addMessage(Ke);const Be={id:ge,sessionId:T.id,role:ae.ASSISTANT,content:`${st}${ge}`,timestamp:Date.now(),status:Z.STREAMING,workflow:f};await M.addMessage(Be),(Xe=h.setMessagesWithRaw)==null||Xe.call(h,[_t,Et],[Ke,Be])},[h,e]),Pe=s.useCallback(async n=>{var f;let a=R.current;if(!a){for(const[m,w]of B.entries())if(w.id===n.id){a=m,R.current=m;break}}a&&(G(m=>{const w=new Map(m);return w.set(a,n),w}),M.updateMessage(a,{workflow:n}),(f=h.updateRawMessageWorkflow)==null||f.call(h,a,n))},[l,o,h,B]),ze=s.useCallback(n=>{const a=R.current;a&&G(f=>{var T;const m=new Map(f),w=m.get(a);if(w){const U=w.logs||[],D={...w,logs:[...U,n]};m.set(a,D),M.updateMessage(a,{workflow:D}),(T=h.updateRawMessageWorkflow)==null||T.call(h,a,D)}return m})},[h]),Me=s.useRef(null),He=s.useCallback(n=>{const a=R.current;a&&G(f=>{const m=new Map(f),w=m.get(a);if(w){const T=w.logs||[];let U=-1;for(let j=T.length-1;j>=0;j--)if(T[j].type==="thinking"){U=j;break}let D;if(U>=0){const j=[...T],F=j[U];j[U]={...F,content:F.content+n},D={...w,logs:j}}else D={...w,logs:[...T,{type:"thinking",timestamp:Date.now(),content:n}]};m.set(a,D),Me.current&&clearTimeout(Me.current),Me.current=setTimeout(()=>{var j;M.updateMessage(a,{workflow:D}),(j=h.updateRawMessageWorkflow)==null||j.call(h,a,D)},500)}return m})},[h]),Ie=s.useCallback(async(n,a,f)=>{if(!b){Q.track("chat_workflow_retry",{stepIndex:f});try{I(n),R.current=n,await L(a,f)}finally{I(null)}}},[L,b]);s.useImperativeHandle(i,()=>({open:()=>{g(!0),e==null||e(!0)},close:()=>{g(!1),e==null||e(!1)},toggle:Y,sendMessage:async n=>{g(!0),e==null||e(!0);const a={id:`msg_${Date.now()}`,role:"user",parts:[{type:"text",text:n}]};await Ne(a)},sendWorkflowMessage:$e,updateWorkflowMessage:Pe,appendAgentLog:ze,updateThinkingContent:He,isOpen:()=>d,retryWorkflowFromStep:async(n,a)=>{let f=null;for(const[m,w]of B.entries())if(w.id===n.id){f=m;break}f?await Ie(f,n,a):console.warn("[ChatDrawer] Could not find message ID for workflow retry",n.id)}}),[d,Y,Ne,$e,Pe,ze,He,e,B,Ie]);const Nt=s.useMemo(()=>({...h,sendMessage:Ne}),[h,Ne]),je=o.find(n=>n.id===l),pe=(je==null?void 0:je.title)||"新对话",[Ce,Te]=s.useState(!1),[Ae,Re]=s.useState(""),ke=s.useRef(null),bt=s.useCallback(()=>{Re(pe),Te(!0)},[pe]),Ue=s.useCallback(async()=>{const n=Ae.trim();n&&n!==pe&&l&&await De(l,n),Te(!1)},[Ae,pe,l,De]),Fe=s.useCallback(()=>{Re(pe),Te(!1)},[pe]),St=s.useCallback(n=>{n.key==="Enter"?(n.preventDefault(),Ue()):n.key==="Escape"&&(n.preventDefault(),Fe())},[Ue,Fe]);s.useEffect(()=>{Ce&&ke.current&&(ke.current.focus(),ke.current.select())},[Ce]);const Ge=s.useRef(null);ws(Ge,{enableCopy:!0,stopPropagation:!0});const[yt,kt]=s.useState(!1);return s.useEffect(()=>{d&&kt(!0)},[d]),r.jsxDEV(r.Fragment,{children:[r.jsxDEV(ut,{isOpen:d,onClick:Y,drawerWidth:E},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1341,columnNumber:9},void 0),r.jsxDEV("div",{className:`chat-drawer ${us} ${d?"chat-drawer--open":""} ${k?"chat-drawer--dragging":""}`,style:{width:E},"data-testid":"chat-drawer",children:[r.jsxDEV("div",{ref:_,className:"chat-drawer__resize-handle",onMouseDown:p},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1355,columnNumber:11},void 0),r.jsxDEV("div",{ref:Ge,className:"chat-drawer__body",children:[r.jsxDEV("div",{className:"chat-drawer__header",children:[r.jsxDEV("div",{className:"chat-drawer__header-top",children:[r.jsxDEV(_e,{content:"关闭",children:r.jsxDEV("button",{className:"chat-drawer__close-btn","data-track":"chat_click_drawer_close",onClick:de,"aria-label":"关闭对话",children:r.jsxDEV(ms,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1370,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1364,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1363,columnNumber:17},void 0),Ce?r.jsxDEV("input",{ref:ke,className:"chat-drawer__title-input",value:Ae,onChange:n=>Re(n.target.value),onKeyDown:St,onBlur:Ue,maxLength:50},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1374,columnNumber:19},void 0):r.jsxDEV("h2",{className:"chat-drawer__title chat-drawer__title--editable",onClick:bt,title:"点击编辑标题",children:pe},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1384,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1362,columnNumber:15},void 0),r.jsxDEV("div",{className:"chat-drawer__header-bottom",children:[r.jsxDEV(mt,{value:v,valueRef:x,onChange:(n,a)=>{P(n),O(a||Se(null,n))}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1394,columnNumber:17},void 0),r.jsxDEV("div",{className:"chat-drawer__session-actions",children:[r.jsxDEV(_e,{content:"会话列表",children:r.jsxDEV("button",{ref:ee,className:`chat-drawer__close-btn ${y?"chat-drawer__close-btn--active":""}`,"data-track":"chat_click_sessions_toggle",onClick:ue,"aria-label":"会话列表",children:r.jsxDEV(fs,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1415,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1406,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1405,columnNumber:19},void 0),r.jsxDEV(_e,{content:"新对话",children:r.jsxDEV("button",{className:"chat-drawer__close-btn","data-track":"chat_click_new_session",onClick:te,"aria-label":"新对话",children:r.jsxDEV(rt,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1425,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1419,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1418,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1404,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1393,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1361,columnNumber:13},void 0),y&&r.jsxDEV("div",{ref:X,children:r.jsxDEV(dt,{sessions:o,activeSessionId:l,onSelectSession:me,onNewSession:te,onDeleteSession:xt,onRenameSession:De},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1434,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1433,columnNumber:15},void 0),r.jsxDEV("div",{className:"chat-drawer__content",children:[yt&&r.jsxDEV(s.Suspense,{fallback:r.jsxDEV("div",{className:"chat-loading chat-loading--full",children:r.jsxDEV("div",{className:"chat-loading__spinner"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1450,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1449,columnNumber:21},void 0),children:r.jsxDEV(Fs,{handler:Nt,workflowMessages:B,retryingWorkflowId:b,handleWorkflowRetry:Ie},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1454,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1447,columnNumber:17},void 0),r.jsxDEV(ft,{selectedContent:V,onSend:Ne,placeholder:"支持连续对话"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1463,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1445,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1360,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1347,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatDrawer.tsx",lineNumber:1340,columnNumber:7},void 0)});Bs.displayName="ChatDrawer";export{Bs as C,mt as M,dt as S,ut as a,lt as b};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{Y as c,$ as e,d4 as V,aZ as q,d5 as S,d6 as C,bQ as $}from"./tool-windows-BEnZdJqF.js";import{MermaidRenderer as I}from"./index-C8c9icsH.js";import{M as B}from"./index-DSKRBuhn.js";import"./ChatDrawer-sVEVW11M.js";import"./index-CP51k4n6.js";import"./video-generation-BXhS7x-a.js";import"./canvas-insertion-CKIoVZ9a.js";import"./board-utils-CpAtoKn2.js";import"./index-D2Kc-3MO.js";import"./ppt-generation-B5fKT_by.js";import"./video-analyze-CpbnpSiI.js";import"./main-BO0HWBB1.js";import"./katex-Cu_Erd72.js";import"./index-DXqL8NRE.js";import"./browser-ZXTF4AKv.js";/* empty css */const L={pending:"○",running:"◉",completed:"✓",failed:"✗",skipped:"⊘"},T={pending:"待执行",running:"执行中",completed:"已完成",failed:"失败",skipped:"已跳过"};function O(s){const u=[],g=/```mermaid\s*([\s\S]*?)```/gi;let m=0,i;for(;(i=g.exec(s))!==null;){const o=s.slice(m,i.index);o.trim()&&u.push(e.jsxDEV(B,{markdown:o,readOnly:!0,showModeSwitch:!1,initialMode:"wysiwyg",className:"chat-markdown"},`md-${u.length}`,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:43,columnNumber:9},this)),u.push(e.jsxDEV(I,{code:i[1].trim(),className:"chat-markdown__mermaid"},`mermaid-${u.length}`,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:55,columnNumber:7},this)),m=g.lastIndex}const b=s.slice(m);return(b.trim()||u.length===0)&&u.push(e.jsxDEV(B,{markdown:b,readOnly:!0,showModeSwitch:!1,initialMode:"wysiwyg",className:"chat-markdown"},`md-${u.length}`,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:67,columnNumber:7},this)),u}const P=({step:s,index:u,isCurrentStep:g})=>{const[m,i]=c.useState(!1),b=L[s.status],o=T[s.status],v=Object.keys(s.args).length>0,_=s.result!==void 0&&s.result!==null,r=v||_||!!s.error||s.duration!==void 0,l=t=>{if(!t)return null;const N={};for(const[d,h]of Object.entries(t))d==="context"?N[d]="[AgentExecutionContext]":typeof h=="string"&&h.length>200?N[d]=h.substring(0,200)+"...":N[d]=h;return N},f=c.useMemo(()=>v&&JSON.stringify(l(s.args),null,2)||"",[v,s.args]);return e.jsxDEV("div",{className:`workflow-bubble-step workflow-bubble-step--${s.status} ${g?"workflow-bubble-step--current":""}`,children:[e.jsxDEV("div",{className:"workflow-bubble-step__main",onClick:()=>r&&i(!m),style:{cursor:r?"pointer":"default"},children:[e.jsxDEV("div",{className:"workflow-bubble-step__index",children:u+1},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:134,columnNumber:9},void 0),e.jsxDEV("div",{className:`workflow-bubble-step__status workflow-bubble-step__status--${s.status}`,children:s.status==="running"?e.jsxDEV("span",{className:"workflow-bubble-step__spinner"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:137,columnNumber:13},void 0):b},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:135,columnNumber:9},void 0),e.jsxDEV("div",{className:"workflow-bubble-step__content",children:[e.jsxDEV("div",{className:"workflow-bubble-step__title",children:s.description},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:143,columnNumber:11},void 0),e.jsxDEV("div",{className:"workflow-bubble-step__status-text",children:o},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:144,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:142,columnNumber:9},void 0),r&&e.jsxDEV("div",{className:`workflow-bubble-step__expand ${m?"workflow-bubble-step__expand--open":""}`,children:"▼"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:147,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:129,columnNumber:7},void 0),m&&r&&e.jsxDEV("div",{className:"workflow-bubble-step__details",children:[e.jsxDEV("div",{className:"workflow-bubble-step__detail-row",children:[e.jsxDEV("span",{className:"workflow-bubble-step__label",children:"工具:"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:157,columnNumber:13},void 0),e.jsxDEV("code",{className:"workflow-bubble-step__tool",children:s.mcp},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:158,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:156,columnNumber:11},void 0),v?e.jsxDEV("div",{className:"workflow-bubble-step__detail-row workflow-bubble-step__detail-row--block",children:[e.jsxDEV("span",{className:"workflow-bubble-step__label",children:"输入参数:"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:164,columnNumber:15},void 0),e.jsxDEV("pre",{className:"workflow-bubble-step__args",children:f},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:165,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:163,columnNumber:13},void 0):null,s.duration!==void 0&&e.jsxDEV("div",{className:"workflow-bubble-step__detail-row",children:[e.jsxDEV("span",{className:"workflow-bubble-step__label",children:"耗时:"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:174,columnNumber:15},void 0),e.jsxDEV("span",{children:[s.duration,"ms"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:175,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:173,columnNumber:13},void 0),_?e.jsxDEV("div",{className:"workflow-bubble-step__detail-row workflow-bubble-step__detail-row--block",children:[e.jsxDEV("span",{className:"workflow-bubble-step__label",children:"执行结果:"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:182,columnNumber:15},void 0),e.jsxDEV("div",{className:"workflow-bubble-step__result",children:typeof s.result=="string"?s.result:String(JSON.stringify(s.result,null,2))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:183,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:181,columnNumber:13},void 0):null,s.error&&e.jsxDEV("div",{className:"workflow-bubble-step__detail-row workflow-bubble-step__detail-row--block",children:[e.jsxDEV("span",{className:"workflow-bubble-step__label",children:"错误信息:"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:194,columnNumber:15},void 0),e.jsxDEV("div",{className:"workflow-bubble-step__error",children:s.error},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:195,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:193,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:154,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:126,columnNumber:5},void 0)},z=({log:s})=>{const[u,g]=c.useState(!1);if(s.type==="thinking"){const m=s.content,i=m.length>200,b=u?m:m.substring(0,200);return e.jsxDEV("div",{className:"agent-log agent-log--thinking",children:[e.jsxDEV("div",{className:"agent-log__header",children:[e.jsxDEV("span",{className:"agent-log__icon",children:"💭"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:222,columnNumber:11},void 0),e.jsxDEV("span",{className:"agent-log__title",children:"AI 分析"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:223,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:221,columnNumber:9},void 0),e.jsxDEV("div",{className:"agent-log__content",children:[e.jsxDEV("pre",{className:"agent-log__thinking-text",children:[b,i&&!u&&"..."]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:226,columnNumber:11},void 0),i&&e.jsxDEV("button",{className:"agent-log__toggle",onClick:()=>g(!u),children:u?"收起":"展开全部"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:231,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:225,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:220,columnNumber:7},void 0)}if(s.type==="tool_call")return e.jsxDEV("div",{className:"agent-log agent-log--tool-call",children:[e.jsxDEV("div",{className:"agent-log__header agent-log__header--clickable",onClick:()=>g(!u),children:[e.jsxDEV("span",{className:"agent-log__icon",children:"🔧"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:250,columnNumber:11},void 0),e.jsxDEV("span",{className:"agent-log__title",children:["调用工具: ",s.toolName]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:251,columnNumber:11},void 0),e.jsxDEV("span",{className:`agent-log__expand ${u?"agent-log__expand--open":""}`,children:"▼"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:252,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:246,columnNumber:9},void 0),u&&e.jsxDEV("div",{className:"agent-log__content",children:e.jsxDEV("pre",{className:"agent-log__args",children:JSON.stringify(s.args,null,2)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:258,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:257,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:245,columnNumber:7},void 0);if(s.type==="tool_result"){const m=s.success?"success":"error",i=s.success?"✅":"❌",b=s.data!==void 0&&s.data!==null;return e.jsxDEV("div",{className:`agent-log agent-log--tool-result agent-log--${m}`,children:[e.jsxDEV("div",{className:"agent-log__header agent-log__header--clickable",onClick:()=>g(!u),children:[e.jsxDEV("span",{className:"agent-log__icon",children:i},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:278,columnNumber:11},void 0),e.jsxDEV("span",{className:"agent-log__title",children:[s.toolName," ",s.success?"执行成功":"执行失败"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:279,columnNumber:11},void 0),e.jsxDEV("span",{className:`agent-log__expand ${u?"agent-log__expand--open":""}`,children:"▼"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:282,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:274,columnNumber:9},void 0),u&&e.jsxDEV("div",{className:"agent-log__content",children:[s.error&&e.jsxDEV("div",{className:"agent-log__error",children:s.error},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:289,columnNumber:15},void 0),b&&e.jsxDEV("pre",{className:"agent-log__data",children:typeof s.data=="string"?s.data:String(JSON.stringify(s.data,null,2))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:292,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:287,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:273,columnNumber:7},void 0)}return s.type==="retry"?e.jsxDEV("div",{className:"agent-log agent-log--retry",children:e.jsxDEV("div",{className:"agent-log__header",children:[e.jsxDEV("span",{className:"agent-log__icon",children:"🔄"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:308,columnNumber:11},void 0),e.jsxDEV("span",{className:"agent-log__title",children:["重试 #",s.attempt,": ",s.reason]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:309,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:307,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:306,columnNumber:7},void 0):null},R=({workflow:s,className:u="",onRetry:g,isRetrying:m=!1})=>{const i=c.useMemo(()=>s.steps.map(a=>{const n=a.result,x=!!(n!=null&&n.taskId),p=a.result!==void 0&&a.result!==null,k=a.duration!==void 0;if((a.status==="running"||a.status==="pending")&&!x){if(a.error)return{...a,status:"failed"};if(p||k)return{...a,status:"completed"}}return a}),[s.steps]),b=c.useMemo(()=>s.generationType==="image"&&i.some(a=>a.mcp==="generate_image"||a.mcp==="generate_grid_image"||a.mcp==="generate_inspiration_board"),[s.generationType,i]),o=c.useMemo(()=>{const a=i,n=a.length,x=a.filter(j=>j.status==="completed").length,p=a.filter(j=>j.status==="failed").length,k=a.filter(j=>j.status==="running").length;let w="pending";if(p>0)w="failed";else if(x===n&&n>0)if(b){const j=s.postProcessingStatus;j==="completed"?w="completed":j==="failed"?w="failed":w="running"}else w="completed";else(k>0||x>0)&&(w="running");return{status:w,totalSteps:n,completedSteps:x}},[i,s.postProcessingStatus,b]),v=o.totalSteps>0?o.completedSteps/o.totalSteps*100:0,_=c.useMemo(()=>{const a={pending:"待开始",running:"执行中",completed:"已完成",failed:"执行失败"},n=i.every(x=>x.status==="completed");return n&&b&&s.postProcessingStatus==="processing"?"正在插入画布":n&&b&&!s.postProcessingStatus?"正在处理":a[o.status]},[o.status,i,s.postProcessingStatus,b]),r=o.status==="completed",l=o.status==="failed",f=o.status==="running",t=c.useMemo(()=>{var a,n,x;if(!r)return"";for(let p=i.length-1;p>=0;p-=1){const k=(a=i[p])==null?void 0:a.result;if(k){if(typeof k=="string"){const w=k.trim();if(w)return w;continue}if(typeof k=="object"&&k!==null){const w=k,j=((n=w.data)==null?void 0:n.content)||((x=w.data)==null?void 0:x.response)||w.content||w.response;if(typeof j=="string"){const W=j.trim();if(W)return W}}}}return s.aiAnalysis||""},[r,i,s.aiAnalysis]),N=c.useMemo(()=>{const a=["generate_image","generate_video","generate_grid_image","generate_inspiration_board","generate_long_video"];return i.some(n=>a.includes(n.mcp||""))},[i]),d=c.useMemo(()=>!r&&!l?null:l?{variant:"info",icon:"❌",text:"生成失败"}:t?{variant:"markdown",icon:"✨",markdown:t}:N?{variant:"info",icon:"✅",text:"已生成"}:{variant:"info",icon:"ℹ️",text:"未生成任何内容"},[r,l,t,N]),h=c.useMemo(()=>!d||d.variant!=="markdown"?null:d.markdown,[d]),y=c.useMemo(()=>i.findIndex(a=>a.status==="running"),[i]),M=c.useMemo(()=>i.findIndex(a=>a.status==="failed"),[i]);c.useRef(null);const E=c.useRef(null);c.useEffect(()=>{f&&requestAnimationFrame(()=>{E.current&&E.current.scrollIntoView({behavior:"smooth",block:"end"})})},[y,f,i.length]);const U=l&&s.retryContext&&M>=0,D=()=>{g&&M>=0&&g(M)};return e.jsxDEV("div",{ref:E,className:`workflow-bubble chat-message chat-message--assistant ${u}`,children:[e.jsxDEV("div",{className:"chat-message-avatar",children:e.jsxDEV("span",{children:s.generationType==="image"?"🖼️":s.generationType==="video"?"🎬":s.generationType==="audio"?"🎵":"📝"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:552,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:551,columnNumber:7},void 0),e.jsxDEV("div",{className:"workflow-bubble__content chat-message-content",children:[e.jsxDEV("div",{className:"workflow-bubble__header",children:[e.jsxDEV("span",{className:"workflow-bubble__title",children:s.name},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:565,columnNumber:11},void 0),e.jsxDEV("div",{className:"workflow-bubble__status-info",children:[e.jsxDEV("span",{className:`workflow-bubble__status workflow-bubble__status--${o.status}`,children:_},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:567,columnNumber:13},void 0),e.jsxDEV("span",{className:"workflow-bubble__progress-text",children:[o.completedSteps,"/",o.totalSteps]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:570,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:566,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:564,columnNumber:9},void 0),e.jsxDEV("div",{className:"workflow-bubble__progress",children:e.jsxDEV("div",{className:`workflow-bubble__progress-bar workflow-bubble__progress-bar--${o.status}`,style:{width:`${v}%`}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:578,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:577,columnNumber:9},void 0),s.prompt&&e.jsxDEV("div",{className:"workflow-bubble__prompt",children:[e.jsxDEV("span",{className:"workflow-bubble__label",children:"请求:"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:587,columnNumber:13},void 0),e.jsxDEV("span",{className:"workflow-bubble__prompt-text",children:s.prompt.length>100?`${s.prompt.substring(0,100)}...`:s.prompt},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:588,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:586,columnNumber:11},void 0),e.jsxDEV("div",{className:"workflow-bubble__steps",children:i.map((a,n)=>e.jsxDEV(P,{step:a,index:n,isCurrentStep:n===y&&f},a.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:599,columnNumber:13},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:597,columnNumber:9},void 0),s.logs&&s.logs.length>0&&e.jsxDEV("div",{className:"workflow-bubble__logs",children:[e.jsxDEV("div",{className:"workflow-bubble__logs-header",children:e.jsxDEV("span",{className:"workflow-bubble__logs-title",children:"执行详情"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:612,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:611,columnNumber:13},void 0),e.jsxDEV("div",{className:"workflow-bubble__logs-list",children:s.logs.map((a,n)=>e.jsxDEV(z,{log:a},`log-${n}-${a.timestamp}`,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:616,columnNumber:17},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:614,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:610,columnNumber:11},void 0),d&&d.variant!=="markdown"&&e.jsxDEV("div",{className:`workflow-bubble__summary workflow-bubble__summary--${d.variant}`,children:[e.jsxDEV("span",{className:"workflow-bubble__summary-icon",children:d.icon},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:625,columnNumber:13},void 0),e.jsxDEV("span",{children:d.text},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:626,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:624,columnNumber:11},void 0),d&&d.variant==="markdown"&&h&&e.jsxDEV("div",{className:"workflow-bubble__summary workflow-bubble__summary--success workflow-bubble__summary--markdown",children:[e.jsxDEV("span",{className:"workflow-bubble__summary-icon",children:d.icon},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:632,columnNumber:13},void 0),e.jsxDEV("div",{className:"workflow-bubble__summary-markdown",children:e.jsxDEV("div",{className:"workflow-bubble__markdown-message",children:e.jsxDEV("div",{className:"workflow-bubble__markdown-content",children:O(h)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:635,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:634,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:633,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:631,columnNumber:11},void 0),l&&e.jsxDEV("div",{className:"workflow-bubble__summary workflow-bubble__summary--error",children:[e.jsxDEV("span",{className:"workflow-bubble__summary-icon",children:"❌"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:646,columnNumber:13},void 0),e.jsxDEV("span",{children:"执行失败,请重试"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:647,columnNumber:13},void 0),U&&g&&e.jsxDEV("button",{className:"workflow-bubble__retry-btn",onClick:D,disabled:m,children:m?"重试中...":"🔄 从失败步骤重试"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:649,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:645,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:562,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/WorkflowMessageBubble.tsx",lineNumber:550,columnNumber:5},void 0)},F=({message:s,className:u=""})=>{const g=c.useRef(null),{text:m,meta:i,images:b}=c.useMemo(()=>{var d,h,y,M,E,U,D;let r="";const l=[];for(const a of s.parts)if(a.type==="text")r+=a.text;else if(a.type==="data-file"){const n=a.data;((d=n==null?void 0:n.mediaType)!=null&&d.startsWith("image/")||(h=n==null?void 0:n.url)!=null&&h.startsWith("data:image/"))&&l.push({url:n.url,filename:n.filename||"image"})}const f=s;if(f.aiContext){const a=f.aiContext,n=[];return(y=a.model)!=null&&y.id&&n.push({label:a.model.id,icon:e.jsxDEV(V,{size:"12px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/UserMessageBubble.tsx",lineNumber:62,columnNumber:57},void 0)}),((M=a.params)==null?void 0:M.count)>1&&n.push({label:`${a.params.count} 张`,icon:e.jsxDEV(q,{size:"12px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/UserMessageBubble.tsx",lineNumber:67,columnNumber:68},void 0)}),(E=a.params)!=null&&E.size&&n.push({label:a.params.size,icon:e.jsxDEV(S,{size:"12px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/UserMessageBubble.tsx",lineNumber:72,columnNumber:60},void 0)}),((D=(U=a.selection)==null?void 0:U.texts)==null?void 0:D.length)>0&&n.push({label:`${a.selection.texts.length} 段文本`,icon:e.jsxDEV(C,{size:"12px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/UserMessageBubble.tsx",lineNumber:77,columnNumber:80},void 0)}),{text:a.userInstruction||a.finalPrompt||r,meta:n,images:l}}let t=r;const N=[];if(t.includes(`
|
|
2
|
+
---
|
|
3
|
+
`)){const a=t.split(`
|
|
4
|
+
---
|
|
5
|
+
`);t=a[0],a[1].split(" • ").forEach(x=>{const p=x.replace(/模型:\s*/,"").replace(/数量:\s*/,"").replace(/尺寸:\s*/,"").trim();if(p){let k=e.jsxDEV(V,{size:"12px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/UserMessageBubble.tsx",lineNumber:99,columnNumber:22},void 0);x.includes("数量")&&(k=e.jsxDEV(q,{size:"12px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/UserMessageBubble.tsx",lineNumber:100,columnNumber:40},void 0)),x.includes("尺寸")&&(k=e.jsxDEV(S,{size:"12px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/UserMessageBubble.tsx",lineNumber:101,columnNumber:40},void 0)),N.push({label:p,icon:k})}})}else{const a=t.split(`
|
|
6
|
+
`),n=[];for(const x of a){const p=x.trim();if(p.startsWith("模型:")||p.startsWith("数量:")||p.startsWith("提示词:")){const k=p.replace(/.*:\s*/,"").trim();let w=e.jsxDEV(V,{size:"12px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/UserMessageBubble.tsx",lineNumber:114,columnNumber:22},void 0);p.includes("数量")&&(w=e.jsxDEV(q,{size:"12px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/UserMessageBubble.tsx",lineNumber:115,columnNumber:50},void 0)),N.push({label:k,icon:w})}else p.startsWith("📝 选中的文本:")?N.push({label:p.replace("📝 ","").trim(),icon:e.jsxDEV(C,{size:"12px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/UserMessageBubble.tsx",lineNumber:118,columnNumber:80},void 0)}):p&&!p.startsWith("💬 用户指令:")&&n.push(x)}t=n.join(`
|
|
7
|
+
`).trim()}if(!t&&N.length>0){const a=r.match(/💬 用户指令:\s*([\s\S]*?)(?=\n模型:|\n数量:|$)/);a&&a[1].trim()&&(t=a[1].trim())}return{text:t||r,meta:N,images:l}},[s.parts,s.aiContext]),o=c.useCallback(r=>{r.stopPropagation()},[]),v=c.useCallback(r=>{if((r.ctrlKey||r.metaKey)&&r.key==="c"){const f=window.getSelection(),t=f==null?void 0:f.toString();t&&($(t).catch(N=>{console.error("Failed to copy text:",N)}),r.stopPropagation())}},[]);c.useEffect(()=>{const r=g.current;if(r)return r.addEventListener("pointerdown",o),r.addEventListener("pointerup",o),r.addEventListener("mousedown",o),r.addEventListener("mouseup",o),r.addEventListener("click",o),r.addEventListener("keydown",v),()=>{r.removeEventListener("pointerdown",o),r.removeEventListener("pointerup",o),r.removeEventListener("mousedown",o),r.removeEventListener("mouseup",o),r.removeEventListener("click",o),r.removeEventListener("keydown",v)}},[o,v]);const _=b.length===0&&(!i||i.length===0);return e.jsxDEV("div",{className:`user-bubble chat-message chat-message--user ${_?"user-bubble--text-only":""} ${u}`,children:[e.jsxDEV("div",{className:"chat-message-avatar",children:e.jsxDEV("span",{children:"👤"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/UserMessageBubble.tsx",lineNumber:189,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/UserMessageBubble.tsx",lineNumber:188,columnNumber:7},void 0),e.jsxDEV("div",{className:"user-bubble__content chat-message-content",children:[b.length>0&&e.jsxDEV("div",{className:`user-bubble__images user-bubble__images--${Math.min(b.length,4)}`,children:b.map((r,l)=>e.jsxDEV("div",{className:"user-bubble__image-wrapper",children:e.jsxDEV("img",{src:r.url,alt:r.filename,className:"user-bubble__image",loading:"lazy"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/UserMessageBubble.tsx",lineNumber:197,columnNumber:17},void 0)},l,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/UserMessageBubble.tsx",lineNumber:196,columnNumber:15},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/UserMessageBubble.tsx",lineNumber:194,columnNumber:11},void 0),m&&e.jsxDEV("div",{ref:g,className:"user-bubble__text user-bubble__text--selectable",children:m},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/UserMessageBubble.tsx",lineNumber:210,columnNumber:11},void 0),i&&i.length>0&&e.jsxDEV("div",{className:"user-bubble__meta-tags",children:i.map((r,l)=>e.jsxDEV("div",{className:"user-bubble__meta-tag",children:[e.jsxDEV("span",{className:"user-bubble__meta-icon",children:r.icon},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/UserMessageBubble.tsx",lineNumber:223,columnNumber:17},void 0),e.jsxDEV("span",{className:"user-bubble__meta-label",children:r.label},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/UserMessageBubble.tsx",lineNumber:224,columnNumber:17},void 0)]},l,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/UserMessageBubble.tsx",lineNumber:222,columnNumber:15},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/UserMessageBubble.tsx",lineNumber:220,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/UserMessageBubble.tsx",lineNumber:191,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/UserMessageBubble.tsx",lineNumber:187,columnNumber:5},void 0)},A="[[WORKFLOW_MESSAGE]]",oe=({handler:s,workflowMessages:u,retryingWorkflowId:g,handleWorkflowRetry:m,className:i="chat-section"})=>{const b=c.useCallback(l=>{const f=l.parts.find(t=>t.type==="text");if(f&&"text"in f){const t=f.text;if(t.startsWith(A))return t.replace(A,"")}return null},[]),o=c.useCallback(l=>l.parts.some(f=>f.type==="data-file"),[]),v=c.useCallback(l=>l.parts.filter(t=>t.type==="text"&&"text"in t).map(t=>typeof t.text=="string"?t.text:String(t.text??"")).join(""),[]),_=s.status==="submitted"||s.status==="streaming",r=s.messages.length===0&&!_;return e.jsxDEV("div",{className:i,children:e.jsxDEV("div",{className:"chat-messages",children:e.jsxDEV("div",{className:"chat-messages-list",children:[s.messages.map((l,f)=>{const t=b(l);if(t){const h=u.get(t);if(h)return e.jsxDEV(R,{workflow:h,onRetry:y=>m(t,h,y),isRetrying:g===t},l.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatMessagesArea.tsx",lineNumber:69,columnNumber:19},void 0)}const N=l.parts.some(h=>h.type==="text"&&"text"in h&&typeof h.text=="string"&&h.text.startsWith("❌ 错误")),d=`chat-message chat-message--${l.role} ${N?"chat-message--error":""}`;return l.role==="user"&&o(l)?e.jsxDEV(F,{message:l},l.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatMessagesArea.tsx",lineNumber:96,columnNumber:17},void 0):e.jsxDEV("div",{className:d,"data-message-id":l.id,"data-message-last":f===s.messages.length-1,children:[e.jsxDEV("div",{className:"chat-message-avatar",children:e.jsxDEV("span",{children:l.role==="user"?"👤":"🤖"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatMessagesArea.tsx",lineNumber:108,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatMessagesArea.tsx",lineNumber:107,columnNumber:17},void 0),e.jsxDEV("div",{className:"chat-message-content",children:e.jsxDEV(B,{markdown:v(l),readOnly:!0,showModeSwitch:!1,initialMode:"wysiwyg",className:"chat-markdown"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatMessagesArea.tsx",lineNumber:111,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatMessagesArea.tsx",lineNumber:110,columnNumber:17},void 0),l.role==="assistant"&&!N&&e.jsxDEV("div",{className:"chat-message-actions"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatMessagesArea.tsx",lineNumber:120,columnNumber:19},void 0)]},l.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatMessagesArea.tsx",lineNumber:101,columnNumber:15},void 0)}),_&&e.jsxDEV("div",{className:"chat-loading",children:[e.jsxDEV("div",{className:"chat-loading__spinner"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatMessagesArea.tsx",lineNumber:127,columnNumber:15},void 0),e.jsxDEV("span",{children:"思考中..."},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatMessagesArea.tsx",lineNumber:128,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatMessagesArea.tsx",lineNumber:126,columnNumber:13},void 0),r&&e.jsxDEV("div",{className:"chat-empty",children:[e.jsxDEV("h3",{children:"开始对话"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatMessagesArea.tsx",lineNumber:133,columnNumber:15},void 0),e.jsxDEV("p",{children:"输入消息与AI助手交流"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatMessagesArea.tsx",lineNumber:134,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatMessagesArea.tsx",lineNumber:132,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatMessagesArea.tsx",lineNumber:61,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatMessagesArea.tsx",lineNumber:60,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/chat-drawer/ChatMessagesArea.tsx",lineNumber:59,columnNumber:5},void 0)};export{oe as ChatMessagesArea,oe as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@charset "UTF-8";.workflow-bubble{display:flex;gap:12px;max-width:90%;align-self:flex-start}.workflow-bubble .chat-message-avatar{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#e8f5e9,#c8e6c9);font-size:16px;flex-shrink:0}.workflow-bubble__content{flex:1;min-width:0;padding:12px 16px;background:#fff;border-radius:12px 12px 12px 4px;border:1px solid var(--td-component-border);box-shadow:0 2px 8px #0000000a}.workflow-bubble__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.workflow-bubble__title{font-size:14px;font-weight:600;color:var(--td-text-color-primary)}.workflow-bubble__status-info{display:flex;align-items:center;gap:8px}.workflow-bubble__status{font-size:12px;padding:2px 8px;border-radius:10px;font-weight:500}.workflow-bubble__status--pending{background:var(--td-bg-color-component);color:var(--td-text-color-secondary)}.workflow-bubble__status--running{background:#5a4fcf1a;color:var(--td-brand-color)}.workflow-bubble__status--completed{background:var(--td-success-color-1);color:var(--td-success-color)}.workflow-bubble__status--failed{background:var(--td-error-color-1);color:var(--td-error-color)}.workflow-bubble__progress-text{font-size:12px;color:var(--td-text-color-placeholder);font-variant-numeric:tabular-nums;min-width:2.5em;text-align:right}.workflow-bubble__progress{height:4px;background:var(--td-bg-color-component);border-radius:2px;margin-bottom:12px;overflow:hidden}.workflow-bubble__progress-bar{height:100%;border-radius:2px;transition:width .3s ease}.workflow-bubble__progress-bar--pending{background:var(--td-bg-color-component-disabled)}.workflow-bubble__progress-bar--running{background:linear-gradient(90deg,var(--td-brand-color) 0%,var(--td-brand-color-hover) 100%)}.workflow-bubble__progress-bar--completed{background:var(--td-success-color)}.workflow-bubble__progress-bar--failed{background:var(--td-error-color)}.workflow-bubble__analysis{display:flex;flex-direction:column;gap:4px;margin-bottom:12px;padding:8px 12px;background:linear-gradient(135deg,#5a4fcf14,#7b68ee0d);border-radius:6px;font-size:13px;border-left:3px solid var(--td-brand-color)}.workflow-bubble__analysis-text{color:var(--td-text-color-primary);word-break:break-word;line-height:1.5}.workflow-bubble__prompt{display:flex;gap:8px;margin-bottom:12px;padding:8px 12px;background:rgba(var(--td-brand-color-rgb),.02);border-left:2px solid var(--td-brand-color);border-radius:2px 6px 6px 2px;font-size:13px}.workflow-bubble__label{color:var(--td-text-color-placeholder);font-weight:500;flex-shrink:0}.workflow-bubble__prompt-text{color:var(--td-text-color-secondary);word-break:break-word;font-style:italic}.workflow-bubble__steps{display:flex;flex-direction:column;gap:0;border:1px solid #f0f0f0;border-radius:8px;overflow:hidden}.workflow-bubble__summary{display:flex;align-items:center;gap:8px;margin-top:12px;padding:8px 12px;border-radius:8px;font-size:13px;font-weight:500;border:1px solid transparent}.workflow-bubble__summary--success{background:var(--td-success-color-1);color:var(--td-success-color-7);border-color:var(--td-success-color-2)}.workflow-bubble__summary--info{background:var(--td-bg-color-secondarycontainer);color:var(--td-text-color-secondary);border-color:var(--td-component-border)}.workflow-bubble__summary--error{background:var(--td-error-color-1);color:var(--td-error-color-7);border-color:var(--td-error-color-2)}.workflow-bubble__summary--markdown{align-items:flex-start;font-weight:400;background:transparent;padding:0;border:none}.workflow-bubble__summary-icon{font-size:14px}.workflow-bubble__summary-markdown{flex:1;min-width:0}.workflow-bubble__summary-markdown .chat-message,.workflow-bubble__summary-markdown .chat-message-content{background:transparent;border:0;padding:0;margin:0}.workflow-bubble__retry-btn{margin-left:auto;padding:4px 12px;font-size:12px;font-weight:500;color:#fff;background:linear-gradient(135deg,#f39c12,#e67e22);border:none;border-radius:16px;cursor:pointer;transition:all .2s ease;white-space:nowrap}.workflow-bubble__retry-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 2px 8px #f39c1266}.workflow-bubble__retry-btn:active:not(:disabled){transform:translateY(0)}.workflow-bubble__retry-btn:disabled{opacity:.6;cursor:not-allowed}.workflow-bubble-step{transition:all .2s ease;background:#fff}.workflow-bubble-step:not(:last-child){border-bottom:1px solid #f5f5f5}.workflow-bubble-step--current{background:rgba(var(--td-brand-color-rgb),.02)}.workflow-bubble-step__main{display:flex;align-items:center;gap:8px;padding:12px;transition:background .2s ease}.workflow-bubble-step__main:hover{background:var(--td-bg-color-container-hover)}.workflow-bubble-step__index{width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;color:var(--td-text-color-placeholder);background:var(--td-bg-color-secondarycontainer);border-radius:50%;flex-shrink:0}.workflow-bubble-step__status{width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-size:12px;flex-shrink:0;line-height:1}.workflow-bubble-step__status--pending{color:var(--td-text-color-placeholder)}.workflow-bubble-step__status--running{color:var(--td-brand-color);background:#5a4fcf1a;border-radius:4px}.workflow-bubble-step__status--completed{color:var(--td-success-color)}.workflow-bubble-step__status--failed{color:var(--td-error-color)}.workflow-bubble-step__status--skipped{color:var(--td-text-color-disabled)}.workflow-bubble-step__spinner{display:inline-block;width:12px;height:12px;border:2px solid var(--td-brand-color-light);border-top-color:var(--td-brand-color);border-radius:50%;animation:workflow-spin .8s linear infinite}.workflow-bubble-step__content{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:2px}.workflow-bubble-step__title{font-size:13px;font-weight:500;color:var(--td-text-color-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}.workflow-bubble-step__status-text{font-size:11px;color:var(--td-text-color-placeholder);line-height:1}.workflow-bubble-step__expand{font-size:10px;color:var(--td-text-color-placeholder);transition:transform .2s ease;margin-left:auto;display:flex;align-items:center}.workflow-bubble-step__expand--open{transform:rotate(180deg)}.workflow-bubble-step__details{padding:0 12px 12px;background:transparent}.workflow-bubble-step__detail-row{display:flex;align-items:flex-start;gap:8px;margin-bottom:4px;font-size:12px}.workflow-bubble-step__detail-row:last-child{margin-bottom:0}.workflow-bubble-step__detail-row--block{flex-direction:column;align-items:flex-start;gap:4px}.workflow-bubble-step__label{color:var(--td-text-color-placeholder);font-weight:500;flex-shrink:0;min-width:unset}.workflow-bubble-step__tool{padding:1px 6px;background:var(--td-bg-color-secondarycontainer);border-radius:4px;font-family:SF Mono,Monaco,monospace;font-size:11px;color:var(--td-text-color-secondary)}.workflow-bubble-step__args,.workflow-bubble-step__result{width:100%;margin:0;padding:8px 12px;background:#fafafa;border:1px solid #f0f0f0;border-radius:6px;font-size:11px;font-family:SF Mono,Monaco,monospace;white-space:pre-wrap;word-break:break-all;max-height:200px;overflow-y:auto;color:var(--td-text-color-secondary);line-height:1.6}.workflow-bubble-step__error{width:100%;padding:8px 12px;background:var(--td-error-color-1);border:1px solid var(--td-error-color-2);border-radius:6px;font-size:12px;color:var(--td-error-color-7)}@keyframes workflow-spin{to{transform:rotate(360deg)}}.workflow-bubble__logs{margin-top:12px;border-top:1px solid var(--td-component-border);padding-top:12px}.workflow-bubble__logs-header{display:flex;align-items:center;margin-bottom:8px}.workflow-bubble__logs-title{font-size:12px;font-weight:500;color:var(--td-text-color-secondary)}.workflow-bubble__logs-list{display:flex;flex-direction:column;gap:8px}.agent-log{border-radius:8px;overflow:hidden;background:#fff;border:1px solid #f0f0f0}.agent-log__header{display:flex;align-items:center;gap:8px;padding:8px 12px;font-size:12px}.agent-log__header--clickable{cursor:pointer;transition:background .2s ease}.agent-log__header--clickable:hover{background:var(--td-bg-color-container-hover)}.agent-log__icon{font-size:14px;flex-shrink:0}.agent-log__title{flex:1;color:var(--td-text-color-secondary);font-weight:500}.agent-log__expand{font-size:10px;color:var(--td-text-color-placeholder);transition:transform .2s ease}.agent-log__expand--open{transform:rotate(180deg)}.agent-log__content{padding:8px 12px;border-top:1px solid #f5f5f5;background:#fafafa}.agent-log__thinking-text{margin:0;font-size:12px;line-height:1.6;color:var(--td-text-color-secondary);white-space:pre-wrap;word-break:break-word;font-family:inherit}.agent-log__toggle{margin-top:4px;padding:2px 8px;font-size:11px;color:var(--td-brand-color);background:transparent;border:none;cursor:pointer}.agent-log__toggle:hover{text-decoration:underline}.agent-log__args,.agent-log__data{margin:0;padding:8px;font-size:11px;font-family:SF Mono,Monaco,monospace;background:#fff;border:1px solid #f0f0f0;border-radius:6px;white-space:pre-wrap;word-break:break-all;max-height:150px;overflow-y:auto;color:var(--td-text-color-secondary);line-height:1.5}.agent-log__error{padding:8px;font-size:12px;color:var(--td-error-color-7);background:var(--td-error-color-1);border:1px solid var(--td-error-color-2);border-radius:6px;margin-bottom:4px}.agent-log--thinking{border-left:3px solid var(--td-brand-color)}.agent-log--tool-call{border-left:3px solid var(--td-warning-color)}.agent-log--tool-result.agent-log--success{border-left:3px solid var(--td-success-color)}.agent-log--tool-result.agent-log--error{border-left:3px solid var(--td-error-color)}.agent-log--retry{border-left:3px solid var(--td-warning-color);background:var(--td-warning-color-1)}.user-bubble{display:flex;gap:8px;padding:8px 12px}.user-bubble__content{max-width:80%;display:flex;flex-direction:column;gap:0;overflow:hidden;border-radius:12px 12px 4px;box-shadow:0 2px 8px #f39c1226;background:#fff;border:1px solid rgba(243,156,18,.1)}.user-bubble--text-only .user-bubble__content{background:transparent;border:none;box-shadow:none}.user-bubble--text-only .user-bubble__text{border-radius:16px 16px 4px;box-shadow:0 2px 12px #f39c1233}.user-bubble__images{display:grid;gap:2px;overflow:hidden}.user-bubble__images--1{grid-template-columns:1fr}.user-bubble__images--2{grid-template-columns:repeat(2,1fr)}.user-bubble__images--3{grid-template-columns:repeat(3,1fr)}.user-bubble__images--4{grid-template-columns:repeat(2,1fr)}.user-bubble__image-wrapper{position:relative;aspect-ratio:1;overflow:hidden;background-color:#0000000d}.user-bubble__image{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:transform .2s ease}.user-bubble__image:hover{transform:scale(1.05)}.user-bubble__text{padding:12px 16px;background:linear-gradient(135deg,#f39c12,#e67e22);color:#fff;word-break:break-word;white-space:pre-wrap;line-height:1.5;font-size:14px;font-weight:500}.user-bubble__text--selectable{-webkit-user-select:text;-moz-user-select:text;user-select:text;cursor:text}.user-bubble__text--selectable::-moz-selection{background-color:#fff6;color:#fff}.user-bubble__text--selectable::selection{background-color:#fff6;color:#fff}.user-bubble__meta-tags{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:4px 16px;background:#fafafa;border-top:1px solid #f0f0f0;min-height:32px}.user-bubble__meta-tag{display:inline-flex;align-items:center;gap:4px;color:var(--td-text-color-placeholder);font-size:11px;font-weight:400;transition:all .2s ease}.user-bubble__meta-tag:not(:last-child):after{content:"";width:1px;height:10px;background:#e0e0e0;margin-left:8px}.user-bubble__meta-tag:hover{color:var(--td-text-color-secondary)}.user-bubble__meta-tag:hover .user-bubble__meta-icon{color:var(--td-brand-color)}.user-bubble__meta-icon{display:flex;align-items:center;justify-content:center;color:var(--td-text-color-placeholder);transition:color .2s ease}.user-bubble__meta-label{white-space:nowrap}
|