aitu-app 0.6.76 → 0.6.78
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-DutgwdiU.js +2 -0
- package/assets/ChatDrawer-E6Fog16I.js +11 -0
- package/assets/{ChatMessagesArea-CZkiRzmW.js → ChatMessagesArea-Bgwiz_XP.js} +3 -3
- package/assets/DeferredAIInputBar-CPkD8Cv9.js +8 -0
- package/assets/DeferredAIInputBar-szBPHiNW.css +1 -0
- package/assets/DrawnixDeferredFeatures-Cul76-88.js +2 -0
- package/assets/{KnowledgeBaseContent-Dan2DUqY.js → KnowledgeBaseContent-DcX5Jofx.js} +6 -6
- package/assets/{MVCreator-Dzjl2fXA.js → MVCreator-DllHozYg.js} +8 -8
- package/assets/{ModelBenchmarkWorkbench-oy2wue1u.js → ModelBenchmarkWorkbench-Dv9SNYTi.js} +2 -2
- package/assets/MusicAnalyzer-CHcQ5t4P.js +1 -0
- package/assets/{MusicAnalyzer-BO44f-db.js → MusicAnalyzer-DDeT6g3c.js} +2 -2
- package/assets/ResizableDivider-CaG9JQbJ.js +1 -0
- package/assets/TaskQueuePanel-BNhNzGp5.js +1 -0
- package/assets/{VideoAnalyzer-iiJpoWb6.js → VideoAnalyzer-BSLz1FaI.js} +2 -2
- package/assets/ai-generation-preferences-service-BF7QkuJp.js +1 -0
- package/assets/arc-BU2KKCa_.js +1 -0
- package/assets/arc-DmGoDCEL.js +1 -0
- package/assets/{batch-image-generation-B2R0hJW_.js → batch-image-generation-Bg68r_Ql.js} +5 -5
- package/assets/{blockDiagram-38ab4fdb-BmWPnNuS.js → blockDiagram-38ab4fdb-BCGEnMME.js} +1 -1
- package/assets/{blockDiagram-38ab4fdb-trArAOFP.js → blockDiagram-38ab4fdb-CsZR5uC5.js} +1 -1
- package/assets/board-utils-CpAtoKn2.js +1 -0
- package/assets/{browser-Dya3c6_X.js → browser-DpICcNby.js} +1 -1
- package/assets/{c4Diagram-3d4e48cf-Cvj3RMOv.js → c4Diagram-3d4e48cf-9fuiuFdV.js} +1 -1
- package/assets/{c4Diagram-3d4e48cf-CqJrO4Za.js → c4Diagram-3d4e48cf-WM4wd_GR.js} +1 -1
- package/assets/{canvas-insertion-Dq3gR9Nw.js → canvas-insertion-CdUQF7IV.js} +3 -3
- package/assets/channel-CZjE-WNp.js +1 -0
- package/assets/channel-SXZD6bG3.js +1 -0
- package/assets/classDiagram-70f12bd4-CBVHTwQu.js +2 -0
- package/assets/{classDiagram-70f12bd4-DvrRZ41d.js → classDiagram-70f12bd4-DcYDedz1.js} +2 -2
- package/assets/classDiagram-v2-f2320105-CsxWGkSy.js +2 -0
- package/assets/classDiagram-v2-f2320105-jpCwaHEd.js +2 -0
- package/assets/{clipper-B4i11tN1.js → clipper-jvd5rF5a.js} +1 -1
- package/assets/clone-C4mvvMDb.js +1 -0
- package/assets/{createText-2e5e7dd3-D7dXlVes.js → createText-2e5e7dd3-CkXS3l7I.js} +2 -2
- package/assets/{createText-2e5e7dd3-B8gnT5hD.js → createText-2e5e7dd3-x5lOIwut.js} +1 -1
- package/assets/edges-e0da2a9e-CbrF4nbD.js +4 -0
- package/assets/{edges-e0da2a9e-CyRAzEMi.js → edges-e0da2a9e-Ch6PBwWs.js} +2 -2
- package/assets/{erDiagram-9861fffd-D8yYsjoN.js → erDiagram-9861fffd-Bq07elcI.js} +3 -3
- package/assets/{erDiagram-9861fffd-BHbAa_Ka.js → erDiagram-9861fffd-DSlNVuAZ.js} +4 -4
- package/assets/{flowDb-956e92f1-DAqb8wjP.js → flowDb-956e92f1-BqPCJlZp.js} +3 -3
- package/assets/{flowDb-956e92f1-f30uG4pp.js → flowDb-956e92f1-Ti5YC4Vv.js} +3 -3
- package/assets/{flowDiagram-66a62f08-C4Gz9mOM.js → flowDiagram-66a62f08-CPDuG3rY.js} +3 -3
- package/assets/{flowDiagram-66a62f08-CBXypoEi.js → flowDiagram-66a62f08-D3GSABFi.js} +1 -1
- package/assets/flowDiagram-v2-96b9c2cf-BCcJ-cre.js +1 -0
- package/assets/flowDiagram-v2-96b9c2cf-DCVaFEgV.js +1 -0
- package/assets/{flowchart-elk-definition-4a651766-CSm5diF6.js → flowchart-elk-definition-4a651766-BH09NeLA.js} +1 -1
- package/assets/{flowchart-elk-definition-4a651766-BHB7pRxm.js → flowchart-elk-definition-4a651766-BLaLPCDV.js} +1 -1
- package/assets/{ganttDiagram-c361ad54-CU9a9DsJ.js → ganttDiagram-c361ad54-DL9ZeaEc.js} +4 -4
- package/assets/ganttDiagram-c361ad54-Sp9M1KHP.js +257 -0
- package/assets/{gitGraphDiagram-72cf32ee-B2zj8Xnu.js → gitGraphDiagram-72cf32ee-BSf1fsDV.js} +1 -1
- package/assets/{gitGraphDiagram-72cf32ee-BWOgrFeh.js → gitGraphDiagram-72cf32ee-BWwmRKo-.js} +1 -1
- package/assets/{graph-Bnmq4jgf.js → graph--nPw8zXQ.js} +1 -1
- package/assets/graph-g-2U7grQ.js +1 -0
- package/assets/{index-3862675e-CQLKy6RO.js → index-3862675e-BXwbZ2pz.js} +1 -1
- package/assets/{index-3862675e-BSxxidV_.js → index-3862675e-D6Zy95zZ.js} +1 -1
- package/assets/index-3eqA7Bag.js +1 -0
- package/assets/{index-D1ORCZqJ.js → index-7Q-aiwln.js} +2 -2
- package/assets/index-B2dttXd7.js +1 -0
- package/assets/index-B7V7-Vxz.js +1 -0
- package/assets/index-BHPTfCZM.js +1 -0
- package/assets/{index-vvV37Q1S.js → index-BP77pG9S.js} +4 -4
- package/assets/index-BPR_DyGD.js +1 -0
- package/assets/index-BWrcsh8u.js +1 -0
- package/assets/{index-D4qm_1m5.js → index-BXzGHPXz.js} +1 -1
- package/assets/index-BaCHOxhI.js +1 -0
- package/assets/{index-BoglETHF.js → index-Bq8mPedC.js} +2 -2
- package/assets/index-BqHZCcen.js +2 -0
- package/assets/index-Bti3m-iW.js +1 -0
- package/assets/{index-sPNG1_UN.js → index-BwSnJN93.js} +5 -5
- package/assets/{index-D5qxbeGT.js → index-C3qD42ws.js} +1 -1
- package/assets/{index-VzDb_AHs.js → index-C5eu4uSl.js} +5 -5
- package/assets/index-CLJUfzvO.js +1 -0
- package/assets/index-CfgvFFx3.js +271 -0
- package/assets/index-CmyOpFTN.js +1 -0
- package/assets/index-D4pIkh3S.js +1 -0
- package/assets/index-D7b5fX1d.js +1 -0
- package/assets/index-DH12_HTj.js +13 -0
- package/assets/index-DI0OV6F8.js +7 -0
- package/assets/index-DIiIUyb-.js +1 -0
- package/assets/index-DcZrElEK.js +2 -0
- package/assets/index-DllL1sx1.js +1 -0
- package/assets/index-DqMndQiP.js +1 -0
- package/assets/index-Dz8sghkK.js +1 -0
- package/assets/index-QkP3EC02.js +1 -0
- package/assets/index-TkfyNewx.js +1 -0
- package/assets/index-ZrVeQUWo.js +1 -0
- package/assets/index-eZfwJ9bV.js +3 -0
- package/assets/{index-VarwiJlL.js → index-gQ7LgvSv.js} +1 -1
- package/assets/{infoDiagram-f8f76790-d-BYTW2w.js → infoDiagram-f8f76790-DpFqCCNv.js} +3 -3
- package/assets/{infoDiagram-f8f76790-BMsVq8O_.js → infoDiagram-f8f76790-G2JpJJP7.js} +3 -3
- package/assets/{journeyDiagram-49397b02-DCtCkoaC.js → journeyDiagram-49397b02-BdESGMrv.js} +1 -1
- package/assets/{journeyDiagram-49397b02-CBqb8-ml.js → journeyDiagram-49397b02-DLLTobRM.js} +1 -1
- package/assets/{layout-DKqEkE_W.js → layout-CVkuImk4.js} +1 -1
- package/assets/layout-WSR0vNPO.js +1 -0
- package/assets/line-D3bnG227.js +1 -0
- package/assets/line-DQuMJveY.js +1 -0
- package/assets/{linear-C6OQYT56.js → linear-CciP-97N.js} +1 -1
- package/assets/linear-Z6vFvuwc.js +1 -0
- package/assets/{main-i0s2IJTn.css → main-8DNjLY6L.css} +1 -1
- package/assets/main-BFEkxCOK.js +56 -0
- package/assets/{mermaid.core-CI-VJEiw.js → mermaid.core-CwZQb0ud.js} +5 -5
- package/assets/{mindmap-definition-fc14e90a-k_RSypuP.js → mindmap-definition-fc14e90a-BnJ8OOTI.js} +1 -1
- package/assets/{mindmap-definition-fc14e90a-DrtlQLES.js → mindmap-definition-fc14e90a-CxQMydCW.js} +1 -1
- package/assets/model-benchmark-launcher-Ct3lYXVq.js +1 -0
- package/assets/photo-wall-splitter-BZ88W5Zy.js +1 -0
- package/assets/{pieDiagram-8a3498a8-CdknGxKY.js → pieDiagram-8a3498a8-BSDdkTeu.js} +5 -5
- package/assets/{pieDiagram-8a3498a8-Bpr5V3o5.js → pieDiagram-8a3498a8-D6VtAoja.js} +4 -4
- package/assets/ppt-generation-FzjP_rp0.js +48 -0
- package/assets/{quadrantDiagram-120e2f19-Dx3qoKDx.js → quadrantDiagram-120e2f19-BbFV0VXY.js} +3 -3
- package/assets/{quadrantDiagram-120e2f19-pVIXp9i6.js → quadrantDiagram-120e2f19-C8k2xuBd.js} +3 -3
- package/assets/{requirementDiagram-deff3bca-hM4oekUG.js → requirementDiagram-deff3bca-C3xMdzJV.js} +1 -1
- package/assets/{requirementDiagram-deff3bca-DD6NY75P.js → requirementDiagram-deff3bca-CpjqKjYZ.js} +1 -1
- package/assets/{sankeyDiagram-04a897e0-BsvEG71N.js → sankeyDiagram-04a897e0-BBJJgsFv.js} +5 -5
- package/assets/{sankeyDiagram-04a897e0-C9uf1jU5.js → sankeyDiagram-04a897e0-Bjvig9bW.js} +4 -4
- package/assets/{sequenceDiagram-704730f1-CNEBmz1G.js → sequenceDiagram-704730f1-DX1MmBN_.js} +4 -4
- package/assets/{sequenceDiagram-704730f1-Bpg54z74.js → sequenceDiagram-704730f1-PFC_9IFI.js} +4 -4
- package/assets/settings-dialog-CQM4v791.js +1 -0
- package/assets/{skill-dsl-parser-DS3VOBFI.js → skill-dsl-parser-syNWYxFu.js} +10 -10
- package/assets/{stateDiagram-587899a1-BN2ZP-3x.js → stateDiagram-587899a1-Dc3mI_B_.js} +1 -1
- package/assets/stateDiagram-587899a1-SFMUVAam.js +1 -0
- package/assets/{stateDiagram-v2-d93cdb3a-BtV1Ziy9.js → stateDiagram-v2-d93cdb3a-DmnBjHpC.js} +1 -1
- package/assets/{stateDiagram-v2-d93cdb3a-BLwIM8s1.js → stateDiagram-v2-d93cdb3a-P4Yt2p_j.js} +1 -1
- package/assets/{styles-6aaf32cf-aFVlX_lA.js → styles-6aaf32cf-C3jnr3hV.js} +1 -1
- package/assets/{styles-6aaf32cf-CGp3i5qu.js → styles-6aaf32cf-b6AdP7fu.js} +1 -1
- package/assets/{styles-9a916d00-BK7pejCH.js → styles-9a916d00-BUiD9iBe.js} +4 -4
- package/assets/{styles-9a916d00-CSwFWVnr.js → styles-9a916d00-ii0XTdIm.js} +1 -1
- package/assets/styles-c10674c1-Bt89Yy8Q.js +116 -0
- package/assets/styles-c10674c1-DbTSpy3W.js +116 -0
- package/assets/{svgDrawCommon-08f97a94-Cr4rWU-W.js → svgDrawCommon-08f97a94-BK6lD4D6.js} +1 -1
- package/assets/{svgDrawCommon-08f97a94-DypvMDvH.js → svgDrawCommon-08f97a94-D4gIV05W.js} +1 -1
- package/assets/{timeline-definition-85554ec2-D3-lXEL5.js → timeline-definition-85554ec2-Bl2y548G.js} +1 -1
- package/assets/{timeline-definition-85554ec2-DIwHE15c.js → timeline-definition-85554ec2-CWKg_JxG.js} +3 -3
- package/assets/{tool-windows-B-a9r3G3.css → tool-windows-CUNbW1Tz.css} +1 -1
- package/assets/tool-windows-DOIu9TAD.js +2975 -0
- package/assets/ttd-dialog-DI4kQSg8.js +99 -0
- package/assets/{useCharacters-DsZ779l-.js → useCharacters-Chv4Ky7x.js} +3 -3
- package/assets/useWorkflowSubmission-BizuDmuw.js +70 -0
- package/assets/video-analyze-6v3Y-rUE.js +1 -0
- package/assets/{video-generation-C7qCz-ZF.js → video-generation-DnmTlWnm.js} +2 -2
- package/assets/video-recovery-service-BeRoh0s2.js +1 -0
- package/assets/workflow-generation-utils-me381Cax.js +3 -0
- package/assets/workflow-submission-service-YOpo7g37.js +4 -0
- package/assets/{xychartDiagram-e933f94c-B17Evxfw.js → xychartDiagram-e933f94c-CJX9_9WF.js} +4 -4
- package/assets/{xychartDiagram-e933f94c-Dln5PJtU.js → xychartDiagram-e933f94c-Cep8CQEH.js} +3 -3
- package/changelog.json +50 -0
- package/idle-prefetch-manifest.json +300 -316
- package/manifest.json +3 -3
- package/package.json +1 -1
- package/precache-manifest.json +8 -8
- package/sw.js +5 -5
- package/version.json +19 -3
- package/assets/CanvasAudioPlayer-DwM6PU4W.js +0 -2
- package/assets/ChatDrawer-BQTaa6r6.js +0 -11
- package/assets/DeferredAIInputBar-BmPgFhXr.css +0 -1
- package/assets/DeferredAIInputBar-ObyfJQ0O.js +0 -7
- package/assets/DrawnixDeferredFeatures-CFHVLxc5.js +0 -2
- package/assets/ModelDropdown-CQTTHEI7.css +0 -1
- package/assets/ModelDropdown-DjvIvi8O.js +0 -1
- package/assets/MusicAnalyzer-BU5l2wPR.js +0 -1
- package/assets/ResizableDivider-CBgTphcS.js +0 -1
- package/assets/TaskQueuePanel-CTDuSScf.js +0 -1
- package/assets/ai-generation-preferences-service-CqwXb9Cs.js +0 -5
- package/assets/arc-BBE0LXa1.js +0 -1
- package/assets/arc-h476db6P.js +0 -1
- package/assets/channel-DMTz1UNN.js +0 -1
- package/assets/channel-DQOY3XLe.js +0 -1
- package/assets/classDiagram-70f12bd4-5ACx619h.js +0 -2
- package/assets/classDiagram-v2-f2320105-4zQ4jrwi.js +0 -2
- package/assets/classDiagram-v2-f2320105-CB4rof84.js +0 -2
- package/assets/clone-fuaXEdc-.js +0 -1
- package/assets/edges-e0da2a9e-DZalSm7f.js +0 -4
- package/assets/flowDiagram-v2-96b9c2cf-C-DFFh54.js +0 -1
- package/assets/flowDiagram-v2-96b9c2cf-CWjydvHB.js +0 -1
- package/assets/ganttDiagram-c361ad54-DDnbMkWm.js +0 -257
- package/assets/graph-BsYIlc-B.js +0 -1
- package/assets/index-B10kMZoq.js +0 -1
- package/assets/index-B2_XRj3U.js +0 -1
- package/assets/index-B4lLv-Sz.js +0 -1
- package/assets/index-BFZNUUCR.js +0 -1
- package/assets/index-BTSYG2Vy.js +0 -1
- package/assets/index-BY5Kvjqg.js +0 -1
- package/assets/index-Blf7J5yW.js +0 -1
- package/assets/index-BoQA7VaE.js +0 -3
- package/assets/index-BzqQ69oU.js +0 -1
- package/assets/index-CD2D1BYc.js +0 -2
- package/assets/index-CLRs5cWt.js +0 -1
- package/assets/index-CLU4LJjR.js +0 -1
- package/assets/index-CPDfMZkS.js +0 -1
- package/assets/index-CPfhqyDz.js +0 -316
- package/assets/index-CU4ySaQE.js +0 -1
- package/assets/index-CsCwwmYY.js +0 -1
- package/assets/index-Cyz_w8KS.js +0 -7
- package/assets/index-D489cJtb.js +0 -1
- package/assets/index-D6DebbcI.js +0 -1
- package/assets/index-DDtPG6Km.js +0 -1
- package/assets/index-DKhTnUBU.js +0 -1
- package/assets/index-DMIwLDS8.js +0 -13
- package/assets/index-DgsUJgRJ.js +0 -1
- package/assets/index-oT8mbA3U.js +0 -2
- package/assets/layout-B1ePJO5V.js +0 -1
- package/assets/line-C_jmJ6v1.js +0 -1
- package/assets/line-DfhCgsyz.js +0 -1
- package/assets/linear-ChY5Iu43.js +0 -1
- package/assets/main-LCg1nQGB.js +0 -69
- package/assets/model-benchmark-launcher-B2MsZXmV.js +0 -1
- package/assets/model-benchmark-service-CkIRp-Sq.js +0 -1
- package/assets/model-selection-BvdXmVGX.js +0 -1
- package/assets/photo-wall-splitter-CVrfkWnh.js +0 -1
- package/assets/prompt-optimize-dialog-DLdL2_a1.css +0 -1
- package/assets/settings-dialog-CAhU3cfG.js +0 -1
- package/assets/stateDiagram-587899a1-CMylUAYu.js +0 -1
- package/assets/styles-c10674c1-KfJINP7I.js +0 -116
- package/assets/styles-c10674c1-cccyjRUz.js +0 -116
- package/assets/tool-windows-CtLXQDGF.js +0 -2847
- package/assets/ttd-dialog-BRg3XE5k.js +0 -99
- package/assets/use-runtime-models-BH9r4Yc1.js +0 -1
- package/assets/use-runtime-models-BgWWl4Ng.css +0 -1
- package/assets/useWorkflowSubmission-BeJQ3BuO.js +0 -70
- package/assets/video-analyze-aDVIfgUi.js +0 -1
- package/assets/video-recovery-service-Dy0xiPr8.js +0 -1
- package/assets/workflow-generation-utils-CpMilOwA.js +0 -3
- package/assets/workflow-submission-service-CmBBMIis.js +0 -4
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{lW as a,lX as n,lY as o,lZ as l,hG as r}from"./tool-windows-CtLXQDGF.js";const c=a(null);function i(){return{id:o,name:"模型测试",description:"批量测试图、文、视频、音频模型,快速比较速度与主观效果",icon:"🧪",category:"ai-tools",component:o,defaultWidth:1280,defaultHeight:860}}function u(t){const e=n.getManifestById(o)||i();return t&&l().set(c,{...t,launchedAt:Date.now()}),r.openTool(e,{autoMaximize:!0}),!0}export{c as b,u as o};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{fS as T,bn as v,kK as R,fy as B,hw as g,lD as b,lE as E,h8 as N}from"./tool-windows-CtLXQDGF.js";const _=[{id:"text-fast-json",modality:"text",label:"极速短问答",prompt:'请只输出一行 JSON:{"animal":"cat","emoji":"🐱","lang":"zh"}'},{id:"image-single-object",modality:"image",label:"单物体白底",prompt:"一个橙色陶瓷马克杯,白色背景,简洁产品图",size:"1024x1024"},{id:"video-single-shot",modality:"video",label:"单镜头短视频",prompt:"白色背景下,一个橙色马克杯缓慢旋转,单镜头,干净光线",size:"1280x720",duration:5},{id:"audio-short-instrumental",modality:"audio",label:"短音乐片段",prompt:"轻快 lo-fi 钢琴旋律,无人声,简洁温暖",title:"Benchmark Sample",tags:"lofi,piano,instrumental"}];function w(s,t,e=Number.MAX_SAFE_INTEGER){return(s??e)-(t??e)}function z(s){const t=_.find(e=>e.modality===s);if(!t)throw new Error(`缺少默认测试提示词:${s}`);return t}function L(s,t){return _.find(e=>e.id===s)||z(t)}function Q(s,t,e={}){if(t.length===0)return[];const o=new Set(t),r=s.filter(n=>o.has(n));if(r.length>0)return r;const a=e.fallback||"all";if(a==="none")return[];if(a==="first"){const n=Math.max(1,e.limit||1);return t.slice(0,n)}const i=typeof e.limit=="number"?Math.max(1,e.limit):void 0;return i?t.slice(0,i):t}function Z(s,t){const e=[...s];return e.sort((o,r)=>{if(o.status==="completed"&&r.status!=="completed")return-1;if(o.status!=="completed"&&r.status==="completed")return 1;if(t==="value-for-money"){const i=A(o),u=(A(r)??-1)-(i??-1);if(u!==0)return u}if(t==="cost"){const i=w(o.estimatedCost,r.estimatedCost);if(i!==0)return i}const a=w(o.firstResponseMs??o.totalDurationMs,r.firstResponseMs??r.totalDurationMs);if(a!==0)return a;if(t==="balanced"||t==="cost"){const i=(r.userScore??-1)-(o.userScore??-1);if(i!==0)return i}return w(o.totalDurationMs,r.totalDurationMs)}),e}function A(s,t){if(s.status!=="completed")return null;const e=s.userScore??3,o=s.totalDurationMs,r=o!=null?Math.max(0,1-o/12e4)*20:0,a=Math.min(100,e*20+r),i=s.estimatedCost??t??null;if(i===null)return null;const n=a/(i*1e3+1);return Math.min(10,Math.max(1,Math.round(n)))}const I="aitu:model-benchmark:sessions",F=12,k=4e3,M=12e4,j=2;function $(s,t){return`${s}::${t}`}function S(s){if(s)return s.length>k?`${s.slice(0,k)}...`:s}function y(s){if(s&&!(s.startsWith("data:")&&s.length>M))return s.length>M?s.slice(0,M):s}function P(s){var t;return{text:S(s.text),url:y(s.url),urls:(t=s.urls)==null?void 0:t.map(e=>y(e)).filter(Boolean),format:s.format,duration:s.duration,title:S(s.title),rawData:s.rawData}}function K(s){return{...s,errorSummary:S(s.errorSummary||void 0)||null,preview:P(s.preview)}}function O(s){return{...s,prompt:S(s.prompt)||s.prompt,entries:s.entries.map(K)}}function D(s){return[...s].sort((t,e)=>e.updatedAt-t.updatedAt).slice(0,F).map(O)}function G(s,t){const{modality:e,compareMode:o,targets:r}=s,a=e==="text"?"文本":e==="image"?"图片":e==="video"?"视频":"音频";let i="";o==="cross-provider"&&r.length>0?i=r[0].modelLabel:o==="cross-model"&&r.length>0?i=r[0].profileName:i="自定义批测";const n=new Date(t).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"});return`${i} · ${a} · ${n}`}function U(s){return{...s,id:R(),status:"pending",startedAt:null,firstResponseAt:null,completedAt:null,firstResponseMs:null,totalDurationMs:null,estimatedCost:null,errorSummary:null,preview:{},userScore:null,favorite:!1,rejected:!1}}function x(s){return s instanceof Error&&s.message||"请求失败"}function h(s,t){B.track(s,{area:"model_benchmark",...t})}async function X(s,t){var n,u,l;let e=null;const o=g(s.profileId,s.modelId),r=[{role:"user",content:[{type:"text",text:t}]}],a=await N.sendChat(r,d=>{!e&&d.trim()&&(e=Date.now())},void 0,o),i=((l=(u=(n=a.choices)==null?void 0:n[0])==null?void 0:u.message)==null?void 0:l.content)||"";return{firstResponseAt:e,text:i,title:i.slice(0,32),rawData:a}}async function q(s,t,e){let o=null;const r=g(s.profileId,s.modelId),a=b("image",s.modelId,r);if(!a||a.kind!=="image")throw new Error(`未找到图片适配器:${s.modelId}`);const i={prompt:t,model:s.modelId,modelRef:r,size:e.size,params:{n:1,onSubmitted:()=>{o||(o=Date.now())},onProgress:()=>{o||(o=Date.now())}}},n=await a.generateImage(E("image",r),i);return{firstResponseAt:o,url:n.url,urls:n.urls,format:n.format,rawData:n.raw}}async function V(s,t,e){let o=null;const r=g(s.profileId,s.modelId),a=b("video",s.modelId,r);if(!a||a.kind!=="video")throw new Error(`未找到视频适配器:${s.modelId}`);const i={prompt:t,model:s.modelId,modelRef:r,size:e.size,duration:e.duration,params:{onSubmitted:()=>{o||(o=Date.now())},onProgress:()=>{o||(o=Date.now())}}},n=await a.generateVideo(E("video",r),i);return{firstResponseAt:o,url:n.url,format:n.format,duration:n.duration,rawData:n.raw}}async function H(s,t,e){let o=null;const r=g(s.profileId,s.modelId),a=b("audio",s.modelId,r);if(!a||a.kind!=="audio")throw new Error(`未找到音频适配器:${s.modelId}`);const i={prompt:t,model:s.modelId,modelRef:r,title:e.title,tags:e.tags,params:{onSubmitted:()=>{o||(o=Date.now())},onProgress:()=>{o||(o=Date.now())}}},n=await a.generateAudio(E("audio",r),i);return{firstResponseAt:o,url:n.url,urls:n.urls,format:n.format,duration:n.duration,title:n.title,text:n.resultKind==="lyrics"?n.lyricsText:void 0,rawData:n.raw}}async function Y(s,t,e){switch(s.modality){case"text":return X(s,t);case"image":return q(s,t,e);case"video":return V(s,t,e);case"audio":return H(s,t,e);default:throw new Error("不支持的测试模态")}}class J{constructor(){this.state$=new T({sessions:[],activeSessionId:null,ready:!1}),this.load()}async load(){var t;if(!v.isAvailable()){this.state$.next({sessions:[],activeSessionId:null,ready:!0});return}try{const e=await v.get(I),o=D((e==null?void 0:e.sessions)||[]),r=o.some(a=>a.id===(e==null?void 0:e.activeSessionId))?(e==null?void 0:e.activeSessionId)||null:((t=o[0])==null?void 0:t.id)||null;this.state$.next({sessions:o,activeSessionId:r,ready:!0})}catch(e){console.warn("[ModelBenchmark] failed to load state:",e),this.state$.next({sessions:[],activeSessionId:null,ready:!0})}}persist(){const t=this.state$.value;v.set(I,{sessions:D(t.sessions),activeSessionId:t.activeSessionId,ready:!0})}mutate(t){const e=t(this.state$.value);this.state$.next(e),this.persist()}observe(){return this.state$.asObservable()}getState(){return this.state$.value}getLatestEntryStatus(t,e){const o=$(t,e);for(const r of this.state$.value.sessions)for(const a of r.entries)if(a.selectionKey===o&&a.status!=="pending")return a.status;return null}getModelBenchmarkSummary(t){let e=!1,o=!1,r=null,a=null;for(const i of this.state$.value.sessions)for(const n of i.entries){if(n.modelId!==t)continue;n.favorite&&(e=!0),n.rejected&&(o=!0),a===null&&n.userScore!=null&&(a=n.userScore);const u=A(n);u!==null&&(r===null||u>r)&&(r=u)}return{hasFavorite:e,hasRejected:o,bestValueScore:r,latestUserScore:a}}setActiveSession(t){this.mutate(e=>({...e,activeSessionId:t}))}createSession(t){const e=Date.now(),o={id:R(),title:G(t,e),modality:t.modality,compareMode:t.compareMode,promptPresetId:t.promptPresetId,prompt:t.prompt,status:"draft",rankingMode:t.rankingMode,createdAt:e,updatedAt:e,source:t.source||"manual",entries:t.targets.map(U)};return this.mutate(r=>({...r,sessions:D([o,...r.sessions]),activeSessionId:o.id})),h("model_benchmark_session_created",{sessionId:o.id,modality:o.modality,compareMode:o.compareMode,source:o.source,targetCount:o.entries.length,promptPresetId:o.promptPresetId,promptLength:o.prompt.length}),o}removeSession(t){this.mutate(e=>{var r;const o=e.sessions.filter(a=>a.id!==t);return{...e,sessions:o,activeSessionId:e.activeSessionId===t?((r=o[0])==null?void 0:r.id)||null:e.activeSessionId}})}setRankingMode(t,e){this.mutate(o=>({...o,sessions:o.sessions.map(r=>r.id===t?{...r,rankingMode:e,updatedAt:Date.now()}:r)}))}setEntryFeedback(t,e,o){this.mutate(r=>({...r,sessions:r.sessions.map(a=>a.id===t?{...a,updatedAt:Date.now(),entries:a.entries.map(i=>i.id===e?{...i,...o}:i)}:a)}))}async runSession(t,e=j){const o=this.state$.value.sessions.find(d=>d.id===t);if(!o||o.entries.length===0)return;const r=Date.now();h("model_benchmark_session_started",{sessionId:t,modality:o.modality,compareMode:o.compareMode,source:o.source,targetCount:o.entries.length,concurrency:e,promptPresetId:o.promptPresetId,promptLength:o.prompt.length});const a=L(o.promptPresetId,o.modality),i=[...o.entries];this.mutate(d=>({...d,activeSessionId:t,sessions:d.sessions.map(c=>c.id===t?{...c,status:"running",updatedAt:Date.now(),entries:c.entries.map(m=>({...m,status:"pending",startedAt:null,firstResponseAt:null,completedAt:null,firstResponseMs:null,totalDurationMs:null,errorSummary:null,preview:{}}))}:c)}));let n=0;const u=Math.max(1,Math.min(e,i.length));await Promise.all(Array.from({length:u}).map(async()=>{for(;n<i.length;){const d=i[n];n+=1,d&&await this.runEntry(t,d.id,a)}})),this.mutate(d=>({...d,sessions:d.sessions.map(c=>{if(c.id!==t)return c;const m=c.entries.filter(C=>C.status==="failed").length,f=m===c.entries.length,p=m>0;return{...c,status:f?"failed":p?"partial":"completed",updatedAt:Date.now()}})}));const l=this.state$.value.sessions.find(d=>d.id===t);if(l){const d=l.entries.filter(m=>m.status==="completed").length,c=l.entries.filter(m=>m.status==="failed").length;h("model_benchmark_session_completed",{sessionId:t,modality:l.modality,compareMode:l.compareMode,source:l.source,status:l.status,targetCount:l.entries.length,completedCount:d,failedCount:c,durationMs:Date.now()-r})}}async runEntry(t,e,o){var a,i;const r=Date.now();this.mutate(n=>({...n,sessions:n.sessions.map(u=>u.id===t?{...u,updatedAt:r,entries:u.entries.map(l=>l.id===e?{...l,status:"running",startedAt:r}:l)}:u)}));try{const n=this.state$.value.sessions.find(m=>m.id===t),u=n==null?void 0:n.entries.find(m=>m.id===e);if(!n||!u)return;const l=await Y(u,n.prompt,o),d=Date.now(),c=l.firstResponseAt||d;this.mutate(m=>({...m,sessions:m.sessions.map(f=>f.id===t?{...f,updatedAt:d,entries:f.entries.map(p=>p.id===e?{...p,status:"completed",completedAt:d,firstResponseAt:c,firstResponseMs:c-r,totalDurationMs:d-r,preview:P(l),errorSummary:null}:p)}:f)})),h("model_benchmark_entry_completed",{sessionId:t,entryId:e,modality:u.modality,compareMode:n.compareMode,profileId:u.profileId,profileName:u.profileName,modelId:u.modelId,vendor:u.vendor,firstResponseMs:c-r,totalDurationMs:d-r,hasPreview:!!(l.text||l.url||(a=l.urls)!=null&&a.length),resultCount:((i=l.urls)==null?void 0:i.length)||(l.url||l.text?1:0),format:l.format})}catch(n){const u=Date.now(),l=this.state$.value.sessions.find(c=>c.id===t),d=l==null?void 0:l.entries.find(c=>c.id===e);this.mutate(c=>({...c,sessions:c.sessions.map(m=>m.id===t?{...m,updatedAt:u,entries:m.entries.map(f=>f.id===e?{...f,status:"failed",completedAt:u,totalDurationMs:u-r,errorSummary:x(n)}:f)}:m)})),d&&l&&h("model_benchmark_entry_failed",{sessionId:t,entryId:e,modality:d.modality,compareMode:l.compareMode,profileId:d.profileId,profileName:d.profileName,modelId:d.modelId,vendor:d.vendor,totalDurationMs:u-r,errorMessage:x(n)})}}}function ee(s,t,e){return{profileId:s,profileName:t,modelId:e.id,modelLabel:e.shortLabel||e.label||e.id,modality:e.type,vendor:e.vendor,selectionKey:e.selectionKey||$(s,e.id)}}const te=new J;export{Z as a,ee as b,A as c,z as g,te as m,Q as r};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{hw as e}from"./tool-windows-CtLXQDGF.js";function f(i,r){return r!=null&&r.profileId?`${r.profileId}::${i}`:i}function s(i){return i.selectionKey||(i.sourceProfileId?`${i.sourceProfileId}::${i.id}`:i.id)}function o(i){return i?e(i.sourceProfileId||null,i.id):null}function p(i,r,t){if(!r)return;const c=f(r,t),u=(t==null?void 0:t.profileId)||null;return i.find(n=>s(n)===c)||i.find(n=>n.id===r&&(n.sourceProfileId||null)===u)||(u===null?i.find(n=>n.id===r&&!n.sourceProfileId):void 0)||i.find(n=>n.id===r)}export{f as a,s as b,p as f,o as g};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{kA as W,kB as K,kC as z,kD as _,kE as N}from"./tool-windows-CtLXQDGF.js";const F=800,Y=1e5,b=240,G=.8;function I(){return new Promise(d=>setTimeout(d,0))}function tt(d){const{width:a,height:l,data:s}=d,c=[];for(let g=0;g<l;g++){let m=0;for(let f=0;f<a;f++){const y=(g*a+f)*4,u=s[y],x=s[y+1],w=s[y+2];u>=b&&x>=b&&w>=b&&m++}m/a>=G&&c.push(g)}const i=[];for(let g=0;g<a;g++){let m=0;for(let f=0;f<l;f++){const y=(f*a+g)*4,u=s[y],x=s[y+1],w=s[y+2];u>=b&&x>=b&&w>=b&&m++}m/l>=G&&i.push(g)}const o=z(c,3),t=z(i,3);if(!(o.length>=1&&t.length>=0||o.length>=0&&t.length>=1))return{success:!1};const e=o.length+1,n=t.length+1,h=e*n;return h<2||h>16?{success:!1}:{success:!0,rows:e,cols:n,horizontalLines:o,verticalLines:t}}function nt(d,a,l,s){const c=[],i=[0,...l,a],o=[0,...s,d];for(let t=0;t<i.length-1;t++)for(let r=0;r<o.length-1;r++){const e=o[r],n=i[t],h=o[r+1],g=i[t+1],m=2,f=e+m,y=n+m,u=h-e-m*2,x=g-n-m*2;u>20&&x>20&&c.push({x:f,y,width:u,height:x})}return c}function et(d,a,l){return .299*d+.587*a+.114*l}async function ot(d){const{width:a,height:l,data:s}=d,c=new Float32Array(a*l);let i=0;const o=new Float32Array(a*l);for(let t=0;t<a*l;t++){const r=t*4;o[t]=et(s[r],s[r+1],s[r+2])}for(let t=1;t<l-1;t++)for(let r=1;r<a-1;r++){const e=t*a+r,n=-o[e-a-1]+o[e-a+1]+-2*o[e-1]+2*o[e+1]+-o[e+a-1]+o[e+a+1],h=-o[e-a-1]-2*o[e-a]-o[e-a+1]+o[e+a-1]+2*o[e+a]+o[e+a+1];c[e]=Math.sqrt(n*n+h*h),i++,i%Y===0&&await I()}return c}function it(d){const{width:a,height:l,data:s}=d,c=[],i=Math.min(20,Math.floor(Math.min(a,l)/10)),o=[{startX:0,startY:0},{startX:a-i,startY:0},{startX:0,startY:l-i},{startX:a-i,startY:l-i}];for(const e of o)for(let n=0;n<i;n++)for(let h=0;h<i;h++){const g=e.startX+h,m=e.startY+n;if(g>=0&&g<a&&m>=0&&m<l){const f=(m*a+g)*4;c.push({r:s[f],g:s[f+1],b:s[f+2]})}}const t=c.reduce((e,n)=>({r:e.r+n.r,g:e.g+n.g,b:e.b+n.b}),{r:0,g:0,b:0}),r=c.length;return{r:Math.round(t.r/r),g:Math.round(t.g/r),b:Math.round(t.b/r)}}function at(d,a,l,s,c=30){const i=Math.abs(d-s.r),o=Math.abs(a-s.g),t=Math.abs(l-s.b);return i<=c&&o<=c&&t<=c}async function st(d,a,l){const{width:s,height:c,data:i}=d,o=new Uint8Array(s*c),t=new Uint8Array(s*c),r=50,e=50;o.fill(1);const n=Math.ceil(s*c/2),h=new Uint32Array(n);let g=0,m=0;const f=(u,x)=>{if(u<0||u>=s||x<0||x>=c)return;const w=x*s+u;t[w]||(t[w]=1,h[m%n]=w,m++)};for(let u=0;u<s;u++)f(u,0),f(u,c-1);for(let u=1;u<c-1;u++)f(0,u),f(s-1,u);let y=0;for(;g<m;){const u=h[g%n];g++;const x=u%s,w=Math.floor(u/s),E=u*4,p=i[E],C=i[E+1],X=i[E+2],D=a[u],B=at(p,C,X,l,e),L=_(p,C,X),S=N(p,C,X,240),P=D<r;((B||L)&&P||S)&&(o[u]=0,f(x+1,w),f(x-1,w),f(x,w+1),f(x,w-1)),y++,y%Y===0&&await I()}return o}async function rt(d){const{width:a,height:l,data:s}=d,c=new Uint8Array(a*l);let i=0;for(let o=0;o<l;o++)for(let t=0;t<a;t++){const r=(o*a+t)*4,e=s[r],n=s[r+1],h=s[r+2];_(e,n,h)||N(e,n,h)?c[o*a+t]=0:c[o*a+t]=1,i++,i%Y===0&&await I()}return c}async function ct(d,a,l,s=2){const c=new Uint8Array(d.length);let i=0;for(let o=0;o<l;o++)for(let t=0;t<a;t++){let r=!1;for(let e=-s;e<=s&&!r;e++)for(let n=-s;n<=s&&!r;n++){const h=t+n,g=o+e;h>=0&&h<a&&g>=0&&g<l&&d[g*a+h]===1&&(r=!0)}c[o*a+t]=r?1:0,i++,i%Y===0&&await I()}return c}async function ht(d,a,l){const s=new Int32Array(d.length);let c=0,i=0;const o=[];for(let t=0;t<l;t++)for(let r=0;r<a;r++){const e=t*a+r;if(!(d[e]===0||s[e]!==0))for(c++,o.push({x:r,y:t});o.length>0;){const{x:n,y:h}=o.shift(),g=h*a+n;n<0||n>=a||h<0||h>=l||d[g]===0||s[g]!==0||(s[g]=c,o.push({x:n+1,y:h}),o.push({x:n-1,y:h}),o.push({x:n,y:h+1}),o.push({x:n,y:h-1}),o.push({x:n+1,y:h+1}),o.push({x:n-1,y:h-1}),o.push({x:n+1,y:h-1}),o.push({x:n-1,y:h+1}),i++,i%Y===0&&await I())}}return{labels:s,count:c}}function lt(d,a,l,s){const c=[];for(let i=0;i<s;i++)c.push({minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0,pixelCount:0});for(let i=0;i<l;i++)for(let o=0;o<a;o++){const t=d[i*a+o];if(t>0){const r=c[t-1];r.minX=Math.min(r.minX,o),r.maxX=Math.max(r.maxX,o),r.minY=Math.min(r.minY,i),r.maxY=Math.max(r.maxY,i),r.pixelCount++}}return c.map(i=>({x:i.minX,y:i.minY,width:i.maxX-i.minX+1,height:i.maxY-i.minY+1,area:i.pixelCount})).filter(i=>i.width>0&&i.height>0)}function dt(d,a=.3,l=20){if(d.length===0)return[];const s=[...d].sort((o,t)=>t.area-o.area),c=[],i=new Set;for(let o=0;o<s.length;o++){if(i.has(o))continue;let t={...s[o]};i.add(o);let r=!0;for(;r;){r=!1;for(let e=0;e<s.length;e++){if(i.has(e))continue;const n=s[e],h=Math.max(0,Math.min(t.x+t.width,n.x+n.width)-Math.max(t.x,n.x)),g=Math.max(0,Math.min(t.y+t.height,n.y+n.height)-Math.max(t.y,n.y)),m=h*g,f=n.width*n.height,y=m>f*a,u=Math.abs(t.x-n.x-n.width)<l||Math.abs(n.x-t.x-t.width)<l||Math.abs(t.y-n.y-n.height)<l||Math.abs(n.y-t.y-t.height)<l;if(y||m>0&&u){const x=Math.min(t.x,n.x),w=Math.min(t.y,n.y),E=Math.max(t.x+t.width,n.x+n.width),p=Math.max(t.y+t.height,n.y+n.height);t={x,y:w,width:E-x,height:p-w,area:(E-x)*(p-w)},i.add(e),r=!0}}}c.push({x:t.x,y:t.y,width:t.width,height:t.height})}return c}async function ut(d,a={}){const{minRegionSize:l=5e3,minRegionRatio:s=.01}=a,c=await W(d),{naturalWidth:i,naturalHeight:o}=c,t=i*o,r=Math.max(i,o),e=r>F?F/r:1,n=Math.round(i*e),h=Math.round(o*e),g=document.createElement("canvas");g.width=n,g.height=h;const m=g.getContext("2d",{willReadFrequently:!0});if(!m)throw new Error("Failed to get canvas context");m.drawImage(c,0,0,n,h);const f=m.getImageData(0,0,n,h),y=tt(f);if(y.success&&y.horizontalLines&&y.verticalLines){const v=nt(n,h,y.horizontalLines,y.verticalLines).map(R=>e<1?{x:Math.round(R.x/e),y:Math.round(R.y/e),width:Math.round(R.width/e),height:Math.round(R.height/e)}:R);return{count:v.length,regions:v}}const u=Math.max(10,Math.round(Math.min(n,h)*.02)),x=n+u*2,w=h+u*2,E=document.createElement("canvas");E.width=x,E.height=w;const p=E.getContext("2d",{willReadFrequently:!0});if(!p)throw new Error("Failed to get padded canvas context");p.fillStyle="#E0E0E0",p.fillRect(0,0,x,w),p.drawImage(g,u,u);const C=p.getImageData(0,0,x,w);await I();const X=await ot(C);await I();const D=it(C);let B=await st(C,X,D);await I();const L=B.reduce((M,v)=>M+v,0),S=x*w,P=L/S;(P>.95||P<.05)&&(B=await rt(C)),await I(),B=await ct(B,x,w,3),await I();const{labels:H,count:O}=await ht(B,x,w);await I();const V=lt(H,x,w,O),U=Math.max(l*e*e,t*e*e*s),j=V.filter(M=>M.area>=U),Q=dt(j),A=2,k=Q.map(M=>{const v=Math.max(0,M.x-u-A),R=Math.max(0,M.y-u-A),Z=Math.min(n,M.x+M.width-u+A),J=Math.min(h,M.y+M.height-u+A),T=Math.max(0,Z-v),q=Math.max(0,J-R);return e<1?{x:Math.round(v/e),y:Math.round(R/e),width:Math.round(T/e),height:Math.round(q/e)}:{x:v,y:R,width:T,height:q}}).filter(M=>M.width>0&&M.height>0);return{count:k.length,regions:k}}async function $(d,a=0,l=5,s=0,c=0){if(a>=l){const r=await W(d);return[{id:`photo-wall-${Date.now()}-${Math.random().toString(36).substring(2,6)}`,imageData:d,originalIndex:0,width:r.naturalWidth,height:r.naturalHeight,sourceX:s,sourceY:c}]}const i=await ut(d);if(i.count<=1){const r=await K(d,{borderRatio:.3}),e=await W(r),n=e.naturalWidth,h=e.naturalHeight;return n<50||h<50?[]:[{id:`photo-wall-${Date.now()}-${Math.random().toString(36).substring(2,6)}`,imageData:r,originalIndex:0,width:n,height:h,sourceX:s,sourceY:c}]}const o=await W(d),t=[];for(let r=0;r<i.regions.length;r++){const e=i.regions[r],n=document.createElement("canvas");n.width=e.width,n.height=e.height;const h=n.getContext("2d");if(!h)continue;h.drawImage(o,e.x,e.y,e.width,e.height,0,0,e.width,e.height);const g=n.toDataURL("image/jpeg",.92),m=await $(g,a+1,l,s+e.x,c+e.y);t.push(...m)}return t}async function mt(d){const l=(await $(d,0,5)).map((s,c)=>({...s,id:`photo-wall-${Date.now()}-${c}`,originalIndex:c}));return l.sort((s,c)=>c.width*c.height-s.width*s.height),l}export{ut as detectPhotoWallRegions,mt as splitPhotoWall};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.prompt-optimize-dialog{width:min(560px,100vw - 32px);padding:0;border-radius:14px;overflow:hidden;box-shadow:0 20px 48px #0f172a2e}.prompt-optimize-dialog__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 20px 14px;border-bottom:1px solid rgba(15,23,42,.08)}.prompt-optimize-dialog__headline{min-width:0}.prompt-optimize-dialog__title{margin:0;font-size:18px;font-weight:600;color:var(--color-text-primary, #111827)}.prompt-optimize-dialog__description{margin:6px 0 0;font-size:13px;line-height:1.5;color:var(--color-text-secondary, #6b7280)}.prompt-optimize-dialog__close{flex-shrink:0;width:30px;height:30px;border:none;border-radius:8px;background:transparent;color:var(--color-text-secondary, #6b7280);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.prompt-optimize-dialog__close:hover{background:#0f172a0f;color:var(--color-text-primary, #111827)}.prompt-optimize-dialog__body{display:flex;flex-direction:column;gap:16px;padding:18px 20px}.prompt-optimize-dialog__section{display:flex;flex-direction:column;gap:8px}.prompt-optimize-dialog__label{font-size:13px;font-weight:600;color:var(--color-text-primary, #111827)}.prompt-optimize-dialog__mode-switch{display:flex;gap:10px;flex-wrap:wrap}.prompt-optimize-dialog__mode-btn{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 14px;border:1px solid rgba(15,23,42,.1);border-radius:10px;background:#fff;color:var(--color-text-secondary, #6b7280);cursor:pointer;transition:all .2s ease}.prompt-optimize-dialog__mode-btn:hover:not(:disabled){border-color:#f59e0b59;color:var(--color-text-primary, #111827)}.prompt-optimize-dialog__mode-btn--active{border-color:#f59e0b66;background:#f59e0b1a;color:#b45309}.prompt-optimize-dialog__source{max-height:132px;overflow:auto;padding:12px 13px;border:1px solid rgba(15,23,42,.08);border-radius:10px;background:#f8fafc;color:var(--color-text-primary, #111827);font-size:13px;line-height:1.6;white-space:pre-wrap;word-break:break-word}.prompt-optimize-dialog__textarea{width:100%;min-height:104px;padding:12px 13px;border:1px solid var(--color-border, #d9d9d9);border-radius:10px;resize:vertical;font:inherit;line-height:1.6;color:var(--color-text-primary, #111827);background:#fff}.prompt-optimize-dialog__textarea:focus{outline:none;border-color:var(--color-primary, #0052d9);box-shadow:0 0 0 2px #0052d91a}.prompt-optimize-dialog__model{width:100%}.prompt-optimize-dialog__footer{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px 18px;border-top:1px solid rgba(15,23,42,.08);background:#fafafa}.prompt-optimize-dialog__footer-btn{min-width:92px;height:36px;padding:0 16px;border-radius:10px;border:1px solid transparent;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease}.prompt-optimize-dialog__footer-btn--secondary{border-color:#0f172a1a;background:#fff;color:var(--color-text-primary, #111827)}.prompt-optimize-dialog__footer-btn--secondary:hover:not(:disabled){background:#f8fafc}.prompt-optimize-dialog__footer-btn--primary{background:#f59e0b;color:#fff;box-shadow:0 8px 18px #f59e0b3d}.prompt-optimize-dialog__footer-btn--primary:hover:not(:disabled){background:#d97706}.prompt-optimize-dialog__footer-btn:disabled,.prompt-optimize-dialog__mode-btn:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}@media(max-width:768px){.prompt-optimize-dialog{width:min(100vw - 20px,560px)}.prompt-optimize-dialog__header,.prompt-optimize-dialog__body,.prompt-optimize-dialog__footer{padding-left:16px;padding-right:16px}.prompt-optimize-dialog__footer{flex-direction:column-reverse}.prompt-optimize-dialog__footer-btn{width:100%}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{iJ as ws,r as m,iK as Es,y as e,iz as ks,iA as Ds,bW as Ri,iL as zi,bw as Li,hk as Us,bV as ve,iM as $i,aI as Vs,iN as qs,iO as ji,al as L,i9 as Is,iP as Gi,bL as Ms,bm as Ps,eP as Ss,iQ as O,iR as se,iS as Ve,iu as re,he as qe,hg as he,hh as ce,hf as ue,hy as ge,gQ as Se,fy as S,iT as Cs,iU as wi,iB as As,iV as Ts,iW as Os,iX as Rs,cV as zs,iY as Ls,iZ as Ee,i_ as Me,i$ as Ne,fJ as Ei,j0 as ki,j1 as We,j2 as Ce,j3 as $s,j4 as Gs,j5 as Bs,j6 as Ze,j7 as W,hw as pe,j8 as Ks,j9 as Fs,ja as Ws,jb as Zs,jc as Ys}from"./tool-windows-CtLXQDGF.js";import{jd as $t,je as Gt}from"./tool-windows-CtLXQDGF.js";import{D as Bi,g as Oe,a as Ki,b as Fi,c as Hs,d as Qs,e as Ae,f as Xs,h as Js}from"./use-runtime-models-BH9r4Yc1.js";import{M as et}from"./ModelDropdown-DjvIvi8O.js";import{o as it}from"./model-benchmark-launcher-B2MsZXmV.js";import{m as st}from"./model-benchmark-service-CkIRp-Sq.js";const Di={all:"全部",image:"图片",video:"视频",audio:"音频",text:"文本"},tt={image:"图片",video:"视频",audio:"音频",text:"文本"},nt={image:"图",video:"视",audio:"音",text:"文"},Ui=["text","image","video","audio"];function at(s,o){const d=o.trim().toLowerCase();return d?[s.id,s.label,s.shortLabel,s.shortCode,s.description,s.sourceProfileName,Oe(s.vendor)].filter(Boolean).some(g=>g==null?void 0:g.toLowerCase().includes(d)):!0}function dt(s){return ws(s)}function Vi(s,o){const d=new Map;for(const _ of s){const v=d.get(_.vendor)||{vendor:_.vendor,models:[],counts:{image:0,video:0,audio:0,text:0},selectedCount:0};v.models.push(_),v.counts[_.type]+=1,o.has(_.id)&&(v.selectedCount+=1),d.set(_.vendor,v)}const g=new Map(Bi.map((_,v)=>[_,v]));return Array.from(d.values()).sort((_,v)=>{const G=g.get(_.vendor)??Number.MAX_SAFE_INTEGER,H=g.get(v.vendor)??Number.MAX_SAFE_INTEGER;return G!==H?G-H:v.models.length-_.models.length})}function ot(s){return["image","video","audio","text"].filter(o=>s.counts[o]>0).map(o=>({type:o,models:dt(s.models.filter(d=>d.type===o))})).sort((o,d)=>d.models.length!==o.models.length?d.models.length-o.models.length:Ui.indexOf(o.type)-Ui.indexOf(d.type))}const lt=({open:s,container:o,models:d,selectedModelIds:g,onClose:_,onConfirm:v,onTestModel:G})=>{const[H,fe]=m.useState(""),[J,_e]=m.useState("all"),[B,E]=m.useState(g),[M,$]=m.useState({});m.useEffect(()=>{var A,Y;if(!s)return;fe(""),_e("all"),E(g);const c=new Set(g),w=Vi(d,c),y=((A=w.find(K=>K.selectedCount>0))==null?void 0:A.vendor)||((Y=w[0])==null?void 0:Y.vendor)||null,I={};w.forEach(K=>{I[K.vendor]=K.vendor===y}),$(I)},[d,s,g]);const te=m.useMemo(()=>({all:d.length,image:d.filter(c=>c.type==="image").length,video:d.filter(c=>c.type==="video").length,audio:d.filter(c=>c.type==="audio").length,text:d.filter(c=>c.type==="text").length}),[d]),F=m.useMemo(()=>{const c=H.trim(),w=J==="all"?d:d.filter(y=>y.type===J);return c?w.filter(y=>at(y,c)):w},[J,d,H]),h=m.useMemo(()=>new Set(B),[B]),C=m.useMemo(()=>Vi(F,h),[h,F]),V=B.length,Z=m.useMemo(()=>({image:d.filter(c=>c.type==="image"&&h.has(c.id)).length,video:d.filter(c=>c.type==="video"&&h.has(c.id)).length,text:d.filter(c=>c.type==="text"&&h.has(c.id)).length}),[d,h]),ne=F.length>0&&F.every(c=>h.has(c.id)),ee=m.useMemo(()=>d.filter(c=>Es(c.id)).map(c=>c.id),[d]),ke=ee.length>0&&ee.every(c=>h.has(c));m.useEffect(()=>{C.length===0||C.some(y=>M[y.vendor])||!Object.values(M).some(Boolean)||$(C.reduce((y,I,A)=>(y[I.vendor]=A===0,y),{}))},[M,C]);const De=c=>{E(w=>w.includes(c)?w.filter(y=>y!==c):[...w,c])},ye=()=>{const c=F.map(y=>y.id),w=c.every(y=>h.has(y));E(y=>w?y.filter(I=>!c.includes(I)):Array.from(new Set([...y,...c])))},Ue=()=>{E(c=>Array.from(new Set([...c,...ee])))},ae=c=>{$(w=>{const y=!w[c],I={};return C.forEach(A=>{I[A.vendor]=A.vendor===c?y:!1}),I})};return e.jsxDEV(ks,{open:s,onOpenChange:c=>!c&&_(),children:e.jsxDEV(Ds,{className:"model-discovery-dialog",container:o,"data-testid":"model-discovery-dialog",children:[e.jsxDEV("div",{className:"model-discovery-dialog__header",children:[e.jsxDEV("div",{className:"model-discovery-dialog__headline",children:[e.jsxDEV("h3",{className:"model-discovery-dialog__title",children:"获取模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:216,columnNumber:13},void 0),e.jsxDEV("div",{className:"model-discovery-dialog__header-stats",children:[e.jsxDEV("span",{className:"model-discovery-dialog__header-pill",children:["已发现 ",d.length]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:218,columnNumber:15},void 0),e.jsxDEV("span",{className:"model-discovery-dialog__header-pill",children:["品牌 ",C.length]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:221,columnNumber:15},void 0),e.jsxDEV("span",{className:"model-discovery-dialog__header-pill model-discovery-dialog__header-pill--accent",children:["已选 ",V]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:224,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:217,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:215,columnNumber:11},void 0),e.jsxDEV("button",{type:"button",className:"model-discovery-dialog__close",onClick:_,"aria-label":"关闭",children:e.jsxDEV(Ri,{size:18},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:235,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:229,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:214,columnNumber:9},void 0),e.jsxDEV("div",{className:"model-discovery-dialog__toolbar",children:e.jsxDEV("label",{className:"model-discovery-dialog__search",children:[e.jsxDEV(zi,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:241,columnNumber:13},void 0),e.jsxDEV("input",{type:"text",value:H,onChange:c=>fe(c.target.value),placeholder:"搜索模型名称、ID 或品牌"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:242,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:240,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:239,columnNumber:9},void 0),e.jsxDEV("div",{className:"model-discovery-dialog__type-tabs",children:Object.keys(Di).map(c=>{const w=J===c;return e.jsxDEV("button",{type:"button",className:`model-discovery-dialog__type-tab ${w?"model-discovery-dialog__type-tab--active":""}`,onClick:()=>_e(c),children:[e.jsxDEV("span",{children:Di[c]},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:263,columnNumber:17},void 0),e.jsxDEV("span",{className:"model-discovery-dialog__type-tab-count",children:te[c]},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:264,columnNumber:17},void 0)]},c,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:255,columnNumber:15},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:251,columnNumber:9},void 0),e.jsxDEV("div",{className:"model-discovery-dialog__body",children:C.length===0?e.jsxDEV("div",{className:"model-discovery-dialog__empty",children:H.trim()?"没有匹配的模型":"暂无模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:274,columnNumber:13},void 0):e.jsxDEV("div",{className:"model-discovery-dialog__group-list",children:C.map(c=>{const w=Ki(c.vendor),y=ot(c),I=!!M[c.vendor];return e.jsxDEV("section",{className:`model-discovery-dialog__vendor-group ${I?"model-discovery-dialog__vendor-group--expanded":""}`,style:{"--vendor-accent":w.accent,"--vendor-surface":w.surface,"--vendor-border":w.border},children:[e.jsxDEV("button",{type:"button",className:"model-discovery-dialog__vendor-header",onClick:()=>ae(c.vendor),children:[e.jsxDEV("div",{className:"model-discovery-dialog__vendor-main",children:[e.jsxDEV("span",{className:"model-discovery-dialog__vendor-logo-shell",children:e.jsxDEV(Fi,{vendor:c.vendor,size:22},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:307,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:306,columnNumber:25},void 0),e.jsxDEV("div",{className:"model-discovery-dialog__vendor-copy",children:[e.jsxDEV("span",{className:"model-discovery-dialog__vendor-name",children:Oe(c.vendor)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:310,columnNumber:27},void 0),e.jsxDEV("div",{className:"model-discovery-dialog__vendor-meta",children:y.map(({type:A,models:Y})=>e.jsxDEV("span",{className:"model-discovery-dialog__vendor-meta-pill",children:[nt[A]," ",Y.length]},`${c.vendor}-${A}`,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:316,columnNumber:33},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:313,columnNumber:27},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:309,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:305,columnNumber:23},void 0),e.jsxDEV("span",{className:"model-discovery-dialog__vendor-spacer"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:328,columnNumber:23},void 0),e.jsxDEV("div",{className:"model-discovery-dialog__vendor-side",children:[c.selectedCount>0?e.jsxDEV("span",{className:"model-discovery-dialog__vendor-selected",children:["已选 ",c.selectedCount]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:332,columnNumber:27},void 0):null,e.jsxDEV("span",{className:"model-discovery-dialog__vendor-count",children:c.models.length},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:336,columnNumber:25},void 0),e.jsxDEV("span",{className:`model-discovery-dialog__vendor-chevron ${I?"model-discovery-dialog__vendor-chevron--expanded":""}`,children:e.jsxDEV(Li,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:346,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:339,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:330,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:300,columnNumber:21},void 0),I?e.jsxDEV("div",{className:"model-discovery-dialog__vendor-body",children:y.map(({type:A,models:Y})=>e.jsxDEV("div",{className:"model-discovery-dialog__type-section",children:[e.jsxDEV("div",{className:"model-discovery-dialog__type-section-header",children:[e.jsxDEV("span",{className:"model-discovery-dialog__type-section-title",children:tt[A]},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:359,columnNumber:31},void 0),e.jsxDEV("span",{className:"model-discovery-dialog__type-section-count",children:Y.length},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:362,columnNumber:31},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:358,columnNumber:29},void 0),e.jsxDEV("div",{className:"model-discovery-dialog__model-stack",children:Y.map(K=>{const de=h.has(K.id);return e.jsxDEV("label",{className:`model-discovery-dialog__item ${de?"model-discovery-dialog__item--checked":""}`,children:[e.jsxDEV("input",{type:"checkbox",className:"model-discovery-dialog__checkbox",checked:de,onChange:()=>De(K.id)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:380,columnNumber:37},void 0),e.jsxDEV("span",{className:"model-discovery-dialog__checkmark",children:de?e.jsxDEV(Us,{size:12},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:387,columnNumber:50},void 0):null},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:386,columnNumber:37},void 0),e.jsxDEV("div",{className:"model-discovery-dialog__item-body",children:e.jsxDEV("div",{className:`model-discovery-dialog__item-id ${de?"model-discovery-dialog__item-id--checked":""}`,children:K.id},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:391,columnNumber:39},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:390,columnNumber:37},void 0),G?e.jsxDEV(ve,{content:"测试此模型",showArrow:!1,children:e.jsxDEV("button",{type:"button",className:"model-discovery-dialog__item-test",onClick:xe=>{xe.preventDefault(),xe.stopPropagation(),G(K.id)},children:e.jsxDEV($i,{size:13},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:412,columnNumber:43},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:403,columnNumber:41},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:402,columnNumber:39},void 0):null]},K.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:372,columnNumber:35},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:367,columnNumber:29},void 0)]},`${c.vendor}-${A}`,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:354,columnNumber:27},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:352,columnNumber:23},void 0):null]},c.vendor,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:285,columnNumber:19},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:278,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:272,columnNumber:9},void 0),e.jsxDEV("div",{className:"model-discovery-dialog__footer",children:[e.jsxDEV("span",{className:"model-discovery-dialog__selection-count",children:["已选 ",V," 个 · 图 ",Z.image," / 视"," ",Z.video," / 文 ",Z.text]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:432,columnNumber:11},void 0),e.jsxDEV("div",{className:"model-discovery-dialog__footer-bulk",children:[e.jsxDEV("button",{type:"button",className:"model-discovery-dialog__ghost-button",onClick:ye,disabled:F.length===0,children:ne?"取消当前筛选":"全选"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:437,columnNumber:13},void 0),e.jsxDEV("button",{type:"button",className:"model-discovery-dialog__ghost-button",onClick:Ue,disabled:ee.length===0||ke,children:"选中推荐模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:445,columnNumber:13},void 0),e.jsxDEV("button",{type:"button",className:"model-discovery-dialog__ghost-button model-discovery-dialog__ghost-button--muted",onClick:()=>E([]),disabled:B.length===0,children:"清空"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:453,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:436,columnNumber:11},void 0),e.jsxDEV("div",{className:"model-discovery-dialog__actions",children:[e.jsxDEV("button",{type:"button",className:"model-discovery-dialog__button model-discovery-dialog__button--secondary",onClick:_,children:"取消"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:463,columnNumber:13},void 0),e.jsxDEV("button",{type:"button",className:"model-discovery-dialog__button model-discovery-dialog__button--primary",onClick:()=>v(B),children:"添加模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:470,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:462,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:431,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:209,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/model-discovery-dialog.tsx",lineNumber:208,columnNumber:5},void 0)},rt=Vs.memo(({profile:s,onUpdateProfile:o})=>{const[d,g]=m.useState(!1),_=Hs(s.id),v=qs(s),G=(v==null?void 0:v.pricingUrl)||"",H=(v==null?void 0:v.cnyPerUsd)??1,fe=(v==null?void 0:v.pricingGroup)||"default",J=m.useCallback(async()=>{if(v){g(!0);try{await ji.fetchAndCache(s.id,v.pricingUrl,s.apiKey,v.pricingGroup,v.cnyPerUsd,{force:!0,promoteToAutoRefresh:!0}),L.success("价格信息已同步")}catch(E){L.error(`获取价格失败: ${E instanceof Error?E.message:"未知错误"}`)}finally{g(!1)}}},[v,s.id,s.apiKey]),_e=m.useCallback(async E=>{const M=String(E);if(o($=>({...$,pricingGroup:M})),!!v){g(!0);try{await ji.fetchAndCache(s.id,v.pricingUrl,s.apiKey,M,v.cnyPerUsd)}catch{}finally{g(!1)}}},[o,v,s.id,s.apiKey]),B=_.map(E=>({label:E.displayName||E.name,value:E.name}));return e.jsxDEV("div",{className:"settings-dialog__pricing-group",children:[e.jsxDEV("div",{className:"settings-dialog__pricing-row",children:[e.jsxDEV("div",{className:"settings-dialog__field settings-dialog__field--column",style:{flex:1,minWidth:0},children:[e.jsxDEV("label",{className:"settings-dialog__label settings-dialog__label--stacked",children:"模型价格 URL"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/pricing-field-group.tsx",lineNumber:78,columnNumber:13},void 0),e.jsxDEV("input",{type:"text",className:"settings-dialog__input",value:G,onChange:E=>o(M=>({...M,pricingUrl:E.target.value})),placeholder:"如 https://api.tu-zi.com/api/pricing"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/pricing-field-group.tsx",lineNumber:81,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/pricing-field-group.tsx",lineNumber:77,columnNumber:11},void 0),e.jsxDEV("div",{className:"settings-dialog__field settings-dialog__field--column",style:{width:110,flexShrink:0},children:[e.jsxDEV("label",{className:"settings-dialog__label settings-dialog__label--stacked",children:"¥/1USD"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/pricing-field-group.tsx",lineNumber:92,columnNumber:13},void 0),e.jsxDEV("input",{type:"number",className:"settings-dialog__input",value:H,step:.01,min:0,onChange:E=>o(M=>({...M,cnyPerUsd:parseFloat(E.target.value)||0}))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/pricing-field-group.tsx",lineNumber:95,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/pricing-field-group.tsx",lineNumber:91,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/pricing-field-group.tsx",lineNumber:76,columnNumber:9},void 0),e.jsxDEV("div",{className:"settings-dialog__pricing-row",children:[B.length>0?e.jsxDEV("div",{className:"settings-dialog__field settings-dialog__field--column",style:{flex:1,minWidth:0},children:[e.jsxDEV("label",{className:"settings-dialog__label settings-dialog__label--stacked",children:"当前分组"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/pricing-field-group.tsx",lineNumber:113,columnNumber:15},void 0),e.jsxDEV(Is,{value:fe,options:B,onChange:E=>_e(E),style:{width:"100%"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/pricing-field-group.tsx",lineNumber:116,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/pricing-field-group.tsx",lineNumber:112,columnNumber:13},void 0):null,e.jsxDEV("button",{type:"button",className:"settings-dialog__button settings-dialog__button--fetch",style:{alignSelf:"flex-end",height:32,flexShrink:0},onClick:J,disabled:d||!G,children:d?"同步中":"获取价格"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/pricing-field-group.tsx",lineNumber:124,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/pricing-field-group.tsx",lineNumber:110,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/pricing-field-group.tsx",lineNumber:75,columnNumber:7},void 0)});function ct(s,o){return{id:o,name:`供应商 ${s}`,iconUrl:"",providerType:"openai-compatible",baseUrl:"",apiKey:"",authType:"bearer",imageApiCompatibility:Gi,enabled:!0,capabilities:{supportsModelsEndpoint:!0,supportsText:!0,supportsImage:!0,supportsVideo:!0,supportsAudio:!0,supportsTools:!0}}}const qi="aitu:settings:provider-nav",ut=980,gt=[{value:"providers",label:"供应商"},{value:"presets",label:"模型预设"},{value:"canvas",label:"画布显示"},{value:"speech",label:"语音播放"}],mt=["openai-compatible","gemini-compatible","custom"],Nt=["auto","openai-gpt-image","tuzi-gpt-image","openai-compatible-basic"],Ii={image:"图片",video:"视频",audio:"音频",text:"文本"},pt={image:"图片模型",video:"视频模型",audio:"音频模型",text:"文本模型"},ft=m.memo(function({profileId:o,modelId:d}){const g=Js(o,d);return g?e.jsxDEV("span",{className:"settings-dialog__model-price",children:g},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:161,columnNumber:10},this):null}),xt=m.memo(function({profileId:o,modelId:d}){const g=Xs(o,d);return g!=null&&g.description?e.jsxDEV(ve,{content:g.description,placement:"top",children:e.jsxDEV("span",{className:"settings-dialog__model-type-item-id settings-dialog__model-type-item-id--has-desc",children:d},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:179,columnNumber:7},this)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:178,columnNumber:5},this):e.jsxDEV("span",{className:"settings-dialog__model-type-item-id",children:d},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:174,columnNumber:7},this)});function bt(s,o,d,g){return o===0&&d===0?null:g===0&&d>0?`已清空 ${s} 的已添加模型`:o>0&&d>0?`已更新 ${s} 的模型(新增 ${o} 个,移除 ${d} 个)`:o>0?`已为 ${s} 添加 ${o} 个模型`:`已从 ${s} 移除 ${d} 个模型`}const ht=["text","image","video","audio"],Ye={"openai-compatible":{label:"OpenAI 兼容"},"gemini-compatible":{label:"Gemini 兼容"},custom:{label:"自定义接入"}},He={auto:{label:"自动"},"openai-gpt-image":{label:"OpenAI GPT Image"},"tuzi-gpt-image":{label:"Tuzi GPT 兼容"},"openai-compatible-basic":{label:"OpenAI-compatible 通用兼容(兜底)"}};function vt(s){return s==="auto"||s==="openai-gpt-image"||s==="tuzi-gpt-image"||s==="openai-compatible-basic"?s:s==="tuzi-compatible"?"tuzi-gpt-image":"auto"}function _t(s){const o=s.baseUrl.trim().toLowerCase();return o.includes("api.openai.com")?"openai-gpt-image":o.includes("api.tu-zi.com")?"tuzi-gpt-image":"openai-compatible-basic"}function yt(s){const o=vt(s.imageApiCompatibility);if(o==="auto"){const d=_t(s);return`默认推荐显式选择 OpenAI GPT Image;如果保留自动模式,GPT Image 模型当前会解析为 ${He[d].label}。`}return o==="openai-gpt-image"?"默认推荐模式。适用于官方 GPT Image 请求格式,也便于后续继续扩展官方图生图能力。":`同一个图片模型在不同 API Key 或网关下可能需要不同接口格式;当前已固定为 ${He[o].label}。`}const Mi=["amber","sky","mint","rose","violet"];function Pi(s){return s.reduce((o,d)=>(o[d.type]+=1,o),{image:0,video:0,audio:0,text:0})}function jt(s,o){const d=o.trim().toLowerCase();return d?[s.id,s.label,s.shortLabel,s.shortCode,s.description,s.sourceProfileName,Oe(s.vendor)].filter(Boolean).some(g=>g==null?void 0:g.toLowerCase().includes(d)):!0}function wt(s){const o=new Set,d=[];return s.forEach(g=>{const _=`${g.type}:${g.id}`;o.has(_)||(o.add(_),d.push(g))}),d}function Si(s){return s?["image","video","audio","text"].filter(o=>!!W(s[o])).length:0}function Ci(s,o){const d=o.find(g=>g.id===s.id);return d?Mt(d,s)?"saved":"dirty":"new"}function Te(s){return JSON.stringify(s)}function Et(s){return typeof s.iconUrl!="string"?null:s.iconUrl.trim()||null}function kt(s){var g;const o=s.trim();if(!o)return"供";const d=o.match(/[A-Za-z0-9]+/g);return d!=null&&d[0]?d[0][0].toUpperCase():((g=Array.from(o)[0])==null?void 0:g.toUpperCase())||"供"}function Dt(s){const o=Array.from(`${s.id}-${s.providerType}-${s.name}`).reduce((d,g,_)=>d+g.charCodeAt(0)*(_+1),0);return Mi[o%Mi.length]}function me(s){return JSON.parse(JSON.stringify(s))}function Qe(s){return`${s}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function Ai(s){return ct(s,Qe("profile"))}function Ut(){if(typeof window>"u")return null;const s=window.__aituPendingProviderNavigationIntent||null;return window.__aituPendingProviderNavigationIntent=void 0,s}function Ti(s){return"bearer"}function Ie(s){return s===O||s===Ts||s===Os||s===Rs}const Oi=({profile:s,size:o="regular"})=>{const d=Et(s),[g,_]=m.useState(d);m.useEffect(()=>{_(d)},[d]);const v=Dt(s),G=kt(s.name);return e.jsxDEV("span",{className:`settings-dialog__provider-avatar settings-dialog__provider-avatar--${v} ${o==="large"?"settings-dialog__provider-avatar--large":""}`,"aria-hidden":"true",children:g?e.jsxDEV("img",{src:g,alt:`${s.name} 图标`,className:"settings-dialog__provider-avatar-image",loading:"lazy",onError:()=>_(null)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:516,columnNumber:9},void 0):e.jsxDEV("span",{className:"settings-dialog__provider-avatar-text",children:G},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:524,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:509,columnNumber:5},void 0)};function Vt(s,o){return{id:Qe("preset"),name:"新预设",text:Ne(pe(s,o.text||null)),image:Ne(pe(s,o.image||null)),video:Ne(pe(s,o.video||null)),audio:Ne(pe(s,o.audio||null))}}function qt(s,o,d){const g=s[o],_=d.defaultModelRef!==void 0?d.defaultModelRef:pe(d.profileId!==void 0?d.profileId:Me(g),d.defaultModelId!==void 0?d.defaultModelId:W(g));return{...s,[o]:Ne(_)}}function It(s,o){const d={...s};return["image","video","audio","text"].forEach(g=>{Me(d[g])===o&&(d[g]=Ne(null))}),d}function Mt(s,o){return JSON.stringify(s)===JSON.stringify(o)}function Pt(s){return s.flatMap(({profile:o,models:d})=>d.map(g=>({...g,sourceProfileId:o.id,sourceProfileName:o.name,selectionKey:g.selectionKey||`${o.id}::${g.id}`})))}const Rt=({container:s})=>{const{appState:o,setAppState:d}=Ms(),{confirm:g,confirmDialog:_}=Ps({container:s}),{isMobile:v,viewportWidth:G,viewportHeight:H}=Ss(),fe=m.useRef(null),[J,_e]=m.useState(0),[B,E]=m.useState("providers"),[M,$]=m.useState(O),[te,F]=m.useState(se),[h,C]=m.useState([]),[V,Z]=m.useState([]),[ne,ee]=m.useState(se),[ke,De]=m.useState([]),[ye,Ue]=m.useState(""),[ae,c]=m.useState(""),[w,y]=m.useState(""),[I,A]=m.useState(""),[Y,K]=m.useState(!0),[de,xe]=m.useState(""),[Xe,Pe]=m.useState(!1),[Wi,Re]=m.useState(""),[Je,ei]=m.useState(!1),[Zi,oe]=m.useState("catalog"),[Yi,je]=m.useState("catalog"),[Hi,Qi]=m.useState(new Set),Xi=i=>{Qi(t=>{const a=new Set(t);return a.has(i)?a.delete(i):a.add(i),a})},u=h.find(i=>i.id===M)||h[0]||null,Ji=u?yt(u):"同一个图片模型在不同 API Key 或网关下可能需要不同接口格式;不确定时使用自动。",T=V.find(i=>i.id===te)||V[0]||null,R=Qs((u==null?void 0:u.id)||O),es=m.useDeferredValue(de),ii=Ae(O,"image"),is=Ae(O,"audio"),si=Ae(O,"video"),ti=Ae(O,"text"),ss=h.filter(i=>i.enabled),x=v||G<=ut,ni=x&&(J>0?J<600:G<600),ze=!!u&&!!u.apiKey.trim(),ts=Te({profiles:h,presets:V,activePresetId:ne,audioModelName:ye,imageModelName:ae,videoModelName:w,textModelName:I,showWorkZoneCard:Y}),ai=o.openSettings&&ts!==Wi;m.useEffect(()=>{const i=fe.current;if(!i||typeof ResizeObserver>"u")return;const t=new ResizeObserver(a=>{var l;const n=(l=a[0])==null?void 0:l.contentRect.width;n&&_e(r=>Math.abs(r-n)<1?r:n)});return t.observe(i),()=>{t.disconnect()}},[o.openSettings]);const ns=i=>{S.trackUIInteraction({area:"settings",action:"view_changed",control:"settings_nav",value:i,source:"settings_dialog"}),E(i),x&&(i==="providers"&&oe("catalog"),i==="presets"&&je("catalog"))},as=i=>{S.trackUIInteraction({area:"settings",action:"provider_selected",control:"provider_list",source:"settings_dialog",metadata:{profileId:i,isManagedProfile:Ie(i)}}),$(i),x&&oe("detail")},ds=i=>{S.trackUIInteraction({area:"settings",action:"preset_selected",control:"preset_list",source:"settings_dialog",metadata:{presetId:i}}),F(i),x&&je("detail")},os=()=>{try{return localStorage.getItem(Se.WORKZONE_CARD_VISIBLE)!=="false"}catch{return!0}},Le=()=>{const i=me(Ve.get()),t=me(re.get()),a=re.getActivePresetId()||se,n=qe.get(),l=os();De(i),Re(Te({profiles:i,presets:t,activePresetId:a,audioModelName:n.audioModelName||he(),imageModelName:n.imageModelName||ce(),videoModelName:n.videoModelName||ue(),textModelName:n.textModelName||ge(),showWorkZoneCard:l}))};m.useEffect(()=>{var p;if(!o.openSettings)return;const i=me(Ve.get()),t=me(re.get()),a=re.getActivePresetId()||se,n=qe.get();let l=!0;const r=Ut(),f=(r==null?void 0:r.action)==="select"&&i.some(j=>j.id===r.profileId)?r.profileId:((p=i[0])==null?void 0:p.id)||O;C(i),Z(t),De(i),ee(a),$(j=>{var k;return r?f:i.some(U=>U.id===j)?j:((k=i[0])==null?void 0:k.id)||O}),F(j=>{var k;return t.some(U=>U.id===j)?j:((k=t[0])==null?void 0:k.id)||se}),Ue(n.audioModelName||he()),c(n.imageModelName||ce()),y(n.videoModelName||ue()),A(n.textModelName||ge());try{l=localStorage.getItem(Se.WORKZONE_CARD_VISIBLE)!=="false"}catch{l=!0}K(l),E("providers"),oe(r&&x?"detail":"catalog"),je("catalog"),xe(""),Pe(!1),Re(Te({profiles:i,presets:t,activePresetId:a,audioModelName:n.audioModelName||he(),imageModelName:n.imageModelName||ce(),videoModelName:n.videoModelName||ue(),textModelName:n.textModelName||ge(),showWorkZoneCard:l})),(r==null?void 0:r.action)==="create"&&oi(r,i)},[o.openSettings]),m.useEffect(()=>{if(!M&&h[0]){$(h[0].id);return}M&&h.length>0&&!h.some(i=>i.id===M)&&$(h[0].id)},[h,M]),m.useEffect(()=>{if(!te&&V[0]){F(V[0].id);return}te&&V.length>0&&!V.some(i=>i.id===te)&&F(V[0].id)},[V,te]),m.useEffect(()=>{xe("")},[M,B]);const be=(i,t)=>{C(a=>a.map(n=>n.id===i?t(n):n))},ls=(i,t)=>{Z(a=>a.map(n=>n.id===i?t(n):n))},di=async(i,t)=>{var a,n;try{const l=qe.get(),r=((a=i.find(D=>D.id===t))==null?void 0:a.id)||((n=i[0])==null?void 0:n.id)||se,f=i.find(D=>D.id===r)||i[0]||null,p=W(f==null?void 0:f.audio)||l.audioModelName||he(),j=W(f==null?void 0:f.image)||l.imageModelName||ce(),k=W(f==null?void 0:f.video)||l.videoModelName||ue(),U=W(f==null?void 0:f.text)||l.textModelName||l.chatModel||ge();return await re.update(me(i)),await re.setActivePresetId(r),await qe.update({audioModelName:p,imageModelName:j,videoModelName:k,textModelName:U,chatModel:U}),Z(i),ee(r),Ue(p),c(j),y(k),A(U),Le(),!0}catch(l){return console.error("Failed to persist preset configuration:",l),L.error("预设保存失败,请重试"),!1}},rs=async(i,t)=>{if(S.trackUIInteraction({area:"settings",action:"provider_enabled_changed",control:"provider_enabled_switch",value:t,source:"settings_dialog",metadata:{profileId:i,isManagedProfile:Ie(i)}}),C(a=>a.map(n=>n.id===i?{...n,enabled:t}:n)),!!ke.some(a=>a.id===i))try{await Ve.update(me(Ve.get()).map(a=>a.id===i?{...a,enabled:t}:a)),Le()}catch(a){console.error("Failed to persist provider enabled state:",a),C(n=>n.map(l=>l.id===i?{...l,enabled:!t}:l)),L.error("供应商状态保存失败,请重试")}},cs=async i=>{S.trackUIInteraction({area:"settings",action:"workzone_card_visibility_changed",control:"workzone_card_switch",value:i,source:"settings_dialog"}),K(i);try{localStorage.setItem(Se.WORKZONE_CARD_VISIBLE,String(i)),window.dispatchEvent(new CustomEvent("workzone-visibility-changed")),Le()}catch(t){console.error("Failed to persist canvas visibility state:",t),K(!i),L.error("画布显示配置保存失败,请重试")}},oi=(i,t)=>{var r;const a=t||h;if(E("providers"),x&&oe("detail"),i.action==="select"){const f=a.some(p=>p.id===i.profileId)?i.profileId:((r=a[a.length-1])==null?void 0:r.id)||O;return $(f),a}const n=Ai(a.length+1),l=[...a,n];return C(l),$(n.id),l},li=()=>{const i=Ai(h.length+1);S.trackUIInteraction({area:"settings",action:"provider_added",control:"add_provider",source:"settings_dialog",metadata:{profilesCount:h.length+1}}),C(t=>[...t,i]),$(i.id),E("providers"),x&&oe("detail")};m.useEffect(()=>{if(!o.openSettings)return;const i=t=>{const a=t.detail;a&&oi(a)};return window.addEventListener(qi,i),()=>{window.removeEventListener(qi,i)}},[o.openSettings,x,h]);const ri=async i=>{var l;if(Ie(i))return;const t=h.find(r=>r.id===i);if(!await g({title:"确认删除供应商",description:`确定要删除供应商「${(t==null?void 0:t.name)||"未命名供应商"}」吗?相关预设里的路由会被清空。`,confirmText:"删除",cancelText:"取消",danger:!0}))return;S.trackUIInteraction({area:"settings",action:"provider_deleted",control:"delete_provider",source:"settings_dialog",metadata:{profileId:i,profilesCount:Math.max(0,h.length-1)}});const n=h.filter(r=>r.id!==i);C(n),Z(r=>r.map(f=>It(f,i))),M===i&&$(((l=n[0])==null?void 0:l.id)||O),x&&oe("catalog")},ci=m.useCallback(i=>{const t=h.find(n=>n.id===i);if(!t)return;const a={...me(t),id:Qe("profile"),name:`${t.name} (副本)`};C(n=>[...n,a]),S.trackUIInteraction({area:"settings",action:"provider_cloned",control:"clone_provider",source:"settings_dialog",metadata:{profileId:i,clonedProfileId:a.id,profilesCount:h.length+1}}),$(a.id),E("providers"),x&&oe("detail")},[h,x]),$e=Cs(),us=m.useCallback(i=>{const t=[{key:"clone",label:"克隆",icon:e.jsxDEV(zs,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1247,columnNumber:17},void 0),onSelect:ci}];return Ie(i)||t.push({key:"divider",type:"divider"},{key:"delete",label:"删除",icon:e.jsxDEV(wi,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1257,columnNumber:19},void 0),danger:!0,onSelect:ri}),t},[ci]),ui=()=>{var a;const i=((a=ss[0])==null?void 0:a.id)||null,t=Vt(i,{audio:ye||he(),image:ae||ce(),video:w||ue(),text:I||ge()});Z(n=>[...n,t]),S.trackUIInteraction({area:"settings",action:"preset_added",control:"add_preset",source:"settings_dialog",metadata:{presetId:t.id,presetsCount:V.length+1,hasFallbackProfile:!!i}}),F(t.id),E("presets"),x&&je("detail")},gs=async i=>{var l,r;if(V.length<=1)return;const t=V.find(f=>f.id===i);if(!await g({title:"确认删除预设",description:`确定要删除预设「${(t==null?void 0:t.name)||"未命名预设"}」吗?此操作不可撤销。`,confirmText:"删除",cancelText:"取消",danger:!0}))return;S.trackUIInteraction({area:"settings",action:"preset_deleted",control:"delete_preset",source:"settings_dialog",metadata:{presetId:i,presetsCount:Math.max(0,V.length-1)}});const n=V.filter(f=>f.id!==i);Z(n),ne===i&&ee(((l=n[0])==null?void 0:l.id)||se),te===i&&F(((r=n[0])==null?void 0:r.id)||se),x&&je("catalog")},gi=(i,t)=>{if(!T)return;const a=V.map(n=>n.id===T.id?qt(n,i,{defaultModelRef:t}):n);Z(a),S.trackUIInteraction({area:"settings",action:"route_model_changed",control:"route_model_dropdown",value:i,source:"settings_dialog",metadata:{presetId:T.id,routeType:i,hasModel:!!(t!=null&&t.modelId),hasProfile:!!(t!=null&&t.profileId)}}),di(a,ne)},ms=async()=>{if(!u){L.warning("请先选择供应商配置");return}if(ai){const a=L.loading("正在保存当前配置...",0),n=await pi(!1);if(L.close(a),!n)return}const i=u.apiKey.trim(),t=Ze(u.baseUrl.trim()||Ce);if(!i){L.warning("请先填写 API Key");return}try{S.trackUIInteraction({area:"settings",action:"model_discovery_started",control:"fetch_models",source:"settings_dialog",metadata:{profileId:u.id}}),await Ee.discover(u.id,t,i),S.trackUIInteraction({area:"settings",action:"model_discovery_succeeded",control:"fetch_models",source:"settings_dialog",metadata:{profileId:u.id}}),Pe(!0)}catch(a){const n=a instanceof Error?a.message:"模型同步失败";S.trackUIInteraction({area:"settings",action:"model_discovery_failed",control:"fetch_models",source:"settings_dialog",metadata:{profileId:u.id,error:n}}),Ee.setError(u.id,n),L.error({content:n,duration:3600})}},mi=(i,t)=>{var r,f,p;if(!u)return;const a=Ee.applySelection(u.id,i),n=a.models;if(u.id===O){const j=n.filter(b=>b.type==="image"),k=n.filter(b=>b.type==="video"),U=n.filter(b=>b.type==="text"),D=R.discoveredModels.filter(b=>b.type==="image").map(b=>b.id),Q=R.discoveredModels.filter(b=>b.type==="video").map(b=>b.id),q=R.discoveredModels.filter(b=>b.type==="text").map(b=>b.id);!j.some(b=>b.id===ae)&&D.includes(ae)&&c(((r=j[0])==null?void 0:r.id)||ce()),!k.some(b=>b.id===w)&&Q.includes(w)&&y(((f=k[0])==null?void 0:f.id)||ue()),!U.some(b=>b.id===I)&&q.includes(I)&&A(((p=U[0])==null?void 0:p.id)||ge())}const l=(t==null?void 0:t.successMessage)||bt(u.name,a.addedModelIds.length,a.removedModelIds.length,n.length);l&&L.success(l),S.trackUIInteraction({area:"settings",action:"discovered_models_applied",control:"model_discovery_dialog",source:"settings_dialog",metadata:{profileId:u.id,selectedCount:n.length,addedCount:a.addedModelIds.length,removedCount:a.removedModelIds.length}}),Pe(!1)},Ns=i=>{if(!u)return;if(!R.selectedModelIds.includes(i)){L.warning("该模型不是当前分组动态添加的模型,无法在此移除");return}const t=R.selectedModelIds.filter(a=>a!==i);mi(t)},Ni=()=>{d(i=>({...i,openSettings:!1}))},pi=async(i=!1)=>{var t,a,n,l,r,f;if(Je)return!1;ei(!0);try{const p=h.map(N=>{var we;const z=N.baseUrl.trim()?Ze(N.baseUrl):"";return{...N,name:N.name.trim()||"未命名供应商",iconUrl:((we=N.iconUrl)==null?void 0:we.trim())||void 0,baseUrl:z,apiKey:N.apiKey.trim()}}),j=new Set(p.map(N=>N.id)),k=V.map(N=>{const z={...N,name:N.name.trim()||"未命名预设",audio:{...N.audio},image:{...N.image},video:{...N.video},text:{...N.text}};return["image","video","audio","text"].forEach(we=>{const _i=z[we],Fe=Me(_i),yi=W(_i);if(Fe&&!j.has(Fe)){z[we]=Ne(pe(null,yi));return}z[we]=Ne(pe(Fe,yi))}),z}),U=((t=k.find(N=>N.id===ne))==null?void 0:t.id)||((a=k[0])==null?void 0:a.id)||se,D=k.find(N=>N.id===U)||k[0]||null,Q=p.find(N=>N.id===O)||p[0],q=Ze((Q==null?void 0:Q.baseUrl)||Ce),b=ye.trim()||((n=is[0])==null?void 0:n.id)||he(),ie=ae.trim()||((l=ii[0])==null?void 0:l.id)||ce(),P=w.trim()||((r=si[0])==null?void 0:r.id)||ue(),X=I.trim()||((f=ti[0])==null?void 0:f.id)||ge(),Ke=W(D==null?void 0:D.image)||ie,le=W(D==null?void 0:D.video)||P,ys=W(D==null?void 0:D.audio)||b,js=W(D==null?void 0:D.text)||X;p.forEach(N=>{Ee.invalidateIfConfigChanged(N.id,N.baseUrl||Ce,N.apiKey||"")}),await qe.update({apiKey:(Q==null?void 0:Q.apiKey)||"",baseUrl:q,audioModelName:ys,imageModelName:Ke,videoModelName:le,textModelName:js}),await Ve.update(p),await Ks.update(Ee.getCatalogs().filter(N=>j.has(N.profileId))),await re.update(k),await re.setActivePresetId(U);try{localStorage.setItem(Se.WORKZONE_CARD_VISIBLE,String(Y)),window.dispatchEvent(new CustomEvent("workzone-visibility-changed"))}catch{}return C(p),De(me(p)),Z(k),ee(U),Ue(b),c(ie),y(P),A(X),Re(Te({profiles:p,presets:k,activePresetId:U,audioModelName:b,imageModelName:ie,videoModelName:P,textModelName:X,showWorkZoneCard:Y})),i&&Ni(),S.trackUIInteraction({area:"settings",action:"settings_saved",control:"save_settings",source:"settings_dialog",metadata:{closeAfterSave:i,profilesCount:p.length,presetsCount:k.length,enabledProfilesCount:p.filter(N=>N.enabled).length}}),p.forEach(N=>{const z=Fs(N.baseUrl);S.track("provider_endpoint_configured",{profileId:N.id,providerType:N.providerType,providerOrigin:z==null?void 0:z.origin,providerHost:z==null?void 0:z.host,providerProtocol:z==null?void 0:z.protocol,enabled:N.enabled,authType:N.authType,supportsText:N.capabilities.supportsText,supportsImage:N.capabilities.supportsImage,supportsVideo:N.capabilities.supportsVideo,supportsAudio:N.capabilities.supportsAudio,supportsTools:N.capabilities.supportsTools,hasApiKey:!!N.apiKey})}),!0}catch(p){return console.error("Failed to persist settings drafts:",p),S.trackUIInteraction({area:"settings",action:"settings_save_failed",control:"save_settings",source:"settings_dialog",metadata:{closeAfterSave:i,error:p instanceof Error?p.message:String(p)}}),L.error("设置保存失败,请稍后重试"),!1}finally{ei(!1)}},ps=()=>{if(!ai){Ni();return}(async()=>{const i=L.loading("正在保存设置...",0),t=await pi(!0);L.close(i),t||L.warning("设置尚未保存,请检查后重试")})()},fs=()=>{Xe||Je||ps()},fi=()=>e.jsxDEV("div",{className:"settings-dialog__sidebar-shell settings-dialog__sidebar-shell--catalog",children:[e.jsxDEV("div",{className:"settings-dialog__sidebar-summary",children:[e.jsxDEV("div",{className:"settings-dialog__sidebar-summary-row",children:[e.jsxDEV("span",{className:"settings-dialog__sidebar-summary-title",children:"供应商目录"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1788,columnNumber:11},void 0),x?e.jsxDEV("button",{type:"button",className:"settings-dialog__sidebar-summary-action",onClick:li,children:"新增供应商"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1792,columnNumber:13},void 0):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1787,columnNumber:9},void 0),x?e.jsxDEV("span",{className:"settings-dialog__sidebar-summary-text",children:"先从列表里选择供应商,再进入对应的配置页面。"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1802,columnNumber:11},void 0):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1786,columnNumber:7},void 0),e.jsxDEV("div",{className:"settings-dialog__sidebar-list",children:h.map(i=>{const t=i.id===(u==null?void 0:u.id);return e.jsxDEV("div",{className:`settings-dialog__provider-row ${t?"settings-dialog__provider-row--active":""} ${i.enabled?"":"settings-dialog__provider-row--disabled"}`,onContextMenu:a=>{a.preventDefault(),$e.open(a,i.id)},children:[e.jsxDEV("button",{type:"button",className:"settings-dialog__provider-select",onClick:()=>as(i.id),"aria-pressed":t,children:[e.jsxDEV("span",{className:"settings-dialog__provider-select-main",children:[e.jsxDEV(Oi,{profile:i},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1832,columnNumber:19},void 0),e.jsxDEV("span",{className:"settings-dialog__provider-copy",children:[e.jsxDEV("span",{className:"settings-dialog__provider-name-row",children:[e.jsxDEV("span",{className:"settings-dialog__provider-name",children:i.name},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1835,columnNumber:23},void 0),i.id===O?e.jsxDEV("span",{className:"settings-dialog__provider-tag",children:"默认"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1839,columnNumber:25},void 0):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1834,columnNumber:21},void 0),x?e.jsxDEV("span",{className:"settings-dialog__provider-meta",children:[e.jsxDEV("span",{children:Ye[i.providerType].label},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1846,columnNumber:25},void 0),e.jsxDEV("span",{children:i.enabled?"启用":"停用"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1849,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1845,columnNumber:23},void 0):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1833,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1831,columnNumber:17},void 0),x?e.jsxDEV(We,{size:16,className:"settings-dialog__provider-arrow","aria-hidden":"true"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1855,columnNumber:19},void 0):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1825,columnNumber:15},void 0),e.jsxDEV("div",{className:"settings-dialog__provider-switch",children:[e.jsxDEV("span",{className:"settings-dialog__provider-switch-copy",children:i.enabled?"启用":"停用"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1864,columnNumber:17},void 0),e.jsxDEV(Ei,{size:"small",value:i.enabled,disabled:i.id===O,onChange:a=>void rs(i.id,a)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1867,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1863,columnNumber:15},void 0)]},i.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1813,columnNumber:13},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1808,columnNumber:7},void 0),e.jsxDEV(Bs,{state:$e.contextMenu,items:us,onClose:$e.close,zIndex:2e4},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1884,columnNumber:7},void 0),x?null:e.jsxDEV("button",{type:"button",className:"settings-dialog__sidebar-add",onClick:li,children:[e.jsxDEV("span",{className:"settings-dialog__sidebar-add-icon",children:"+"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1897,columnNumber:11},void 0),e.jsxDEV("span",{children:"新增供应商"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1898,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1892,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1785,columnNumber:5},void 0),xi=()=>e.jsxDEV("div",{className:"settings-dialog__sidebar-shell",children:[e.jsxDEV("div",{className:"settings-dialog__sidebar-summary",children:[e.jsxDEV("div",{className:"settings-dialog__sidebar-summary-row",children:[e.jsxDEV("span",{className:"settings-dialog__sidebar-summary-title",children:"默认模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1908,columnNumber:11},void 0),x?e.jsxDEV("button",{type:"button",className:"settings-dialog__sidebar-summary-action",onClick:ui,children:"新增预设"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1912,columnNumber:13},void 0):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1907,columnNumber:9},void 0),x?e.jsxDEV("span",{className:"settings-dialog__sidebar-summary-text",children:"先选中一个预设,再进入详情页调整默认路由。"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1922,columnNumber:11},void 0):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1906,columnNumber:7},void 0),e.jsxDEV("div",{className:"settings-dialog__sidebar-list",children:V.map(i=>{const t=i.id===(T==null?void 0:T.id),a=i.id===ne,n=Si(i);return e.jsxDEV("button",{type:"button",className:`settings-dialog__sidebar-item ${t?"settings-dialog__sidebar-item--active":""}`,onClick:()=>ds(i.id),children:[e.jsxDEV("div",{className:"settings-dialog__sidebar-item-head",children:[e.jsxDEV("div",{className:"settings-dialog__sidebar-item-top",children:[e.jsxDEV("span",{children:i.name},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1945,columnNumber:19},void 0),a?e.jsxDEV("span",{className:"settings-dialog__sidebar-badge settings-dialog__sidebar-badge--accent",children:"当前"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1947,columnNumber:21},void 0):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1944,columnNumber:17},void 0),x?e.jsxDEV(We,{size:16,className:"settings-dialog__sidebar-item-arrow","aria-hidden":"true"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1953,columnNumber:19},void 0):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1943,columnNumber:15},void 0),e.jsxDEV("div",{className:"settings-dialog__sidebar-item-meta",children:[e.jsxDEV("span",{children:[n,"/3 已配置"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1962,columnNumber:17},void 0),x?e.jsxDEV("span",{children:a?"正在生效":"点击查看详情"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1964,columnNumber:19},void 0):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1961,columnNumber:15},void 0)]},i.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1935,columnNumber:13},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1928,columnNumber:7},void 0),x?null:e.jsxDEV("button",{type:"button",className:"settings-dialog__sidebar-add",onClick:ui,children:[e.jsxDEV("span",{className:"settings-dialog__sidebar-add-icon",children:"+"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1978,columnNumber:11},void 0),e.jsxDEV("span",{children:"新增预设"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1979,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1973,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1905,columnNumber:5},void 0),bi=(i,t)=>e.jsxDEV("div",{className:"settings-dialog__workspace settings-dialog__workspace--single",children:e.jsxDEV("div",{className:"settings-dialog__content-panel settings-dialog__content-panel--compact",children:e.jsxDEV("div",{className:"settings-dialog__mobile-stage",children:t},i,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1988,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1987,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1986,columnNumber:5},void 0),hi=(i=!1)=>{if(!u)return e.jsxDEV("div",{className:"settings-dialog__empty-panel",children:"请选择一个供应商。"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:1998,columnNumber:9},void 0);const t=Pi(R.models),a=Ci(u,ke),n=t.image+t.video+t.text;return e.jsxDEV("div",{className:`settings-dialog__content-panel settings-dialog__content-panel--providers ${i?"settings-dialog__content-panel--detail":""}`,children:[i?e.jsxDEV("div",{className:"settings-dialog__compact-stage-header",children:[e.jsxDEV("button",{type:"button",className:"settings-dialog__compact-back",onClick:()=>oe("catalog"),children:[e.jsxDEV(ki,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2021,columnNumber:15},void 0),e.jsxDEV("span",{children:"返回供应商目录"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2022,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2016,columnNumber:13},void 0),e.jsxDEV("div",{className:"settings-dialog__compact-stage-copy",children:[e.jsxDEV("span",{className:"settings-dialog__compact-stage-eyebrow",children:"供应商配置"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2025,columnNumber:15},void 0),e.jsxDEV("p",{className:"settings-dialog__compact-stage-text",children:"进入详情后再编辑接口信息、密钥和模型同步配置。"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2028,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2024,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2015,columnNumber:11},void 0):null,e.jsxDEV("div",{className:"settings-dialog__section settings-dialog__section--compact",children:e.jsxDEV("div",{className:"settings-dialog__panel-header",children:[e.jsxDEV("div",{className:"settings-dialog__profile-hero",children:[e.jsxDEV(Oi,{profile:u,size:"large"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2037,columnNumber:15},void 0),e.jsxDEV("div",{children:[e.jsxDEV("h3",{className:"settings-dialog__section-title",children:u.name},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2039,columnNumber:17},void 0),e.jsxDEV("div",{className:"settings-dialog__inline-meta",children:[e.jsxDEV("span",{children:Ye[u.providerType].label},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2043,columnNumber:19},void 0),e.jsxDEV("span",{children:u.enabled?"启用":"停用"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2046,columnNumber:19},void 0),e.jsxDEV("span",{children:[n," 个模型"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2047,columnNumber:19},void 0),e.jsxDEV("span",{children:a==="saved"?"已保存":"未保存"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2048,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2042,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2038,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2036,columnNumber:13},void 0),Ie(u.id)?null:e.jsxDEV("button",{type:"button",className:"settings-dialog__danger-button",onClick:()=>ri(u.id),children:"删除"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2053,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2035,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2034,columnNumber:9},void 0),e.jsxDEV("div",{className:"settings-dialog__section",children:[e.jsxDEV("div",{className:"settings-dialog__section-header",children:e.jsxDEV("div",{children:e.jsxDEV("h3",{className:"settings-dialog__section-title",children:"基础配置"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2067,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2066,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2065,columnNumber:11},void 0),e.jsxDEV("div",{className:"settings-dialog__grid",children:[e.jsxDEV("div",{className:"settings-dialog__field settings-dialog__field--column",children:[e.jsxDEV("label",{className:"settings-dialog__label settings-dialog__label--stacked",children:"名称"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2073,columnNumber:15},void 0),e.jsxDEV("input",{type:"text",className:"settings-dialog__input",value:u.name,onChange:l=>be(u.id,r=>({...r,name:l.target.value}))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2076,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2072,columnNumber:13},void 0),e.jsxDEV("div",{className:"settings-dialog__field settings-dialog__field--column",children:[e.jsxDEV("label",{className:"settings-dialog__label settings-dialog__label--stacked",children:"接口类型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2090,columnNumber:15},void 0),e.jsxDEV("select",{className:"settings-dialog__select",value:u.providerType,onChange:l=>be(u.id,r=>{const f=l.target.value,p=Ti(r.providerType),j=Ti();return{...r,providerType:f,authType:r.authType===p?j:r.authType}}),children:mt.map(l=>e.jsxDEV("option",{value:l,children:Ye[l].label},l,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2118,columnNumber:19},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2093,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2089,columnNumber:13},void 0),e.jsxDEV("div",{className:"settings-dialog__field settings-dialog__field--column settings-dialog__field--full",children:[e.jsxDEV("label",{className:"settings-dialog__label settings-dialog__label--stacked",children:"图片接口格式"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2126,columnNumber:15},void 0),e.jsxDEV("select",{className:"settings-dialog__select",value:u.imageApiCompatibility||Gi,onChange:l=>be(u.id,r=>({...r,imageApiCompatibility:l.target.value})),children:Nt.map(l=>e.jsxDEV("option",{value:l,children:He[l].label},l,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2144,columnNumber:19},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2129,columnNumber:15},void 0),e.jsxDEV("span",{className:"settings-dialog__field-hint",children:Ji},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2149,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2125,columnNumber:13},void 0),e.jsxDEV("div",{className:"settings-dialog__field settings-dialog__field--column settings-dialog__field--full",children:[e.jsxDEV("label",{className:"settings-dialog__label settings-dialog__label--stacked",children:"图标 URL"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2155,columnNumber:15},void 0),e.jsxDEV("input",{type:"url",className:"settings-dialog__input",value:u.iconUrl||"",onChange:l=>be(u.id,r=>({...r,iconUrl:l.target.value})),placeholder:"可选,留空时自动生成默认图标"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2158,columnNumber:15},void 0),e.jsxDEV("span",{className:"settings-dialog__field-hint",children:"支持填写远程图片地址;未填写时将根据供应商名称生成默认图标。"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2170,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2154,columnNumber:13},void 0),e.jsxDEV("div",{className:"settings-dialog__field settings-dialog__field--column settings-dialog__field--full",children:[e.jsxDEV("label",{className:"settings-dialog__label settings-dialog__label--stacked",children:"API 地址"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2176,columnNumber:15},void 0),e.jsxDEV("input",{type:"text",className:"settings-dialog__input",value:u.baseUrl,onChange:l=>be(u.id,r=>({...r,baseUrl:l.target.value})),placeholder:Ce},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2179,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2175,columnNumber:13},void 0),e.jsxDEV("div",{className:"settings-dialog__field settings-dialog__field--column settings-dialog__field--full",children:[e.jsxDEV("div",{className:"settings-dialog__label-with-tooltip settings-dialog__label-with-tooltip--left",children:[e.jsxDEV("label",{className:"settings-dialog__label settings-dialog__label--stacked",children:"API Key"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2195,columnNumber:17},void 0),e.jsxDEV(ve,{content:e.jsxDEV("div",{style:{maxWidth:480},children:["您可以从以下地址获取 API Key:",e.jsxDEV("br",{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2202,columnNumber:23},void 0),e.jsxDEV("a",{href:"https://api.tu-zi.com/token",target:"_blank",rel:"noopener noreferrer",style:{color:"#F39C12",textDecoration:"none",display:"inline-block",marginBottom:8},children:"api.tu-zi.com/token"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2203,columnNumber:23},void 0),e.jsxDEV("div",{style:{position:"relative",width:"100%",paddingTop:"56.25%",marginTop:8,borderRadius:8,overflow:"hidden",backgroundColor:"#000",boxShadow:"0 4px 16px rgba(0,0,0,0.2)"},children:e.jsxDEV("iframe",{title:"Bilibili tutorial video",src:"//player.bilibili.com/player.html?isOutside=true&aid=116171584049629&bvid=BV1k4PqzPEKz&cid=36455319822&p=1",allowFullScreen:!0,style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",border:0}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2228,columnNumber:25},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2216,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2200,columnNumber:21},void 0),placement:"top",theme:"light",showArrow:!1,overlayStyle:{maxWidth:"none"},children:e.jsxDEV($s,{className:"settings-dialog__tooltip-icon"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2249,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2198,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2194,columnNumber:15},void 0),e.jsxDEV("div",{style:{display:"flex",gap:"8px",alignItems:"center",width:"100%",flexDirection:x?"column":"row"},children:[e.jsxDEV("input",{type:"password",className:"settings-dialog__input",style:{flex:x?"none":1,width:"100%"},value:u.apiKey,onChange:l=>be(u.id,r=>({...r,apiKey:l.target.value})),autoComplete:"off"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2261,columnNumber:17},void 0),e.jsxDEV("button",{type:"button",className:"settings-dialog__button settings-dialog__button--fetch",style:{whiteSpace:"nowrap",height:x?"42px":"32px",width:x?"100%":"auto"},onClick:ms,disabled:!ze||R.status==="loading",children:R.status==="loading"?e.jsxDEV(e.Fragment,{children:[e.jsxDEV(Gs,{size:15,className:"settings-dialog__button-spinner"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2289,columnNumber:23},void 0),"同步中"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2288,columnNumber:21},void 0):"获取模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2274,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2252,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2193,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2071,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2064,columnNumber:9},void 0),e.jsxDEV(rt,{profile:u,onUpdateProfile:l=>be(u.id,l)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2304,columnNumber:9},void 0),u.id===O?e.jsxDEV("div",{className:"settings-dialog__section settings-dialog__section--compact",children:e.jsxDEV("div",{className:"settings-dialog__compat-card",children:[e.jsxDEV("div",{className:"settings-dialog__compat-title",children:"兼容默认模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2314,columnNumber:15},void 0),e.jsxDEV("div",{className:"settings-dialog__compat-meta",children:[e.jsxDEV("span",{children:["图片:",ae||ce()]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2316,columnNumber:17},void 0),e.jsxDEV("span",{children:["视频:",w||ue()]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2317,columnNumber:17},void 0),e.jsxDEV("span",{children:["音频:",ye||he()]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2318,columnNumber:17},void 0),e.jsxDEV("span",{children:["文本:",I||ge()]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2319,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2315,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2313,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2312,columnNumber:11},void 0):null,xs()]},i?`provider-detail-${u.id}`:void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2008,columnNumber:7},void 0)},Ge=m.useCallback(i=>{i.profileId&&(it({profileId:i.profileId,modelId:i.modelId,modality:i.modality,compareMode:i.compareMode}),S.trackUIInteraction({area:"settings",action:"model_benchmark_launched",control:"model_benchmark",source:"settings_dialog",metadata:{profileId:i.profileId,modality:i.modality,compareMode:i.compareMode,hasModel:!!i.modelId}}))},[d]),xs=()=>{const i=u?Ci(u,ke):"saved",t=!!(u!=null&&u.apiKey.trim())&&i==="saved"&&R.status!=="loading",a=(u==null?void 0:u.id)===O,n=wt(R.models),l=new Map(Bi.map((q,b)=>[q,b])),r=es.trim(),f=Pi(n),p=n.filter(q=>jt(q,r)),j=ht.map(q=>({type:q,models:p.filter(b=>b.type===q).sort((b,ie)=>{const P=l.get(b.vendor)??Number.MAX_SAFE_INTEGER,X=l.get(ie.vendor)??Number.MAX_SAFE_INTEGER;return P!==X?P-X:Ws(b,ie)})})).filter(q=>q.models.length>0),k=ze||n.length>0,U=n.length>0&&p.length===0&&!!r,D=R.status==="error"&&n.length===0,Q=!ze&&n.length===0;return e.jsxDEV("div",{className:"settings-dialog__section",children:[e.jsxDEV("div",{className:"settings-dialog__section-header",children:e.jsxDEV("div",{children:[e.jsxDEV("h3",{className:"settings-dialog__section-title",children:"模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2411,columnNumber:13},void 0),e.jsxDEV("div",{className:"settings-dialog__inline-meta",children:[e.jsxDEV("span",{children:["已添加 ",n.length," 个"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2413,columnNumber:15},void 0),e.jsxDEV("span",{children:["图 ",f.image]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2414,columnNumber:15},void 0),e.jsxDEV("span",{children:["视 ",f.video]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2415,columnNumber:15},void 0),e.jsxDEV("span",{children:["音 ",f.audio]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2416,columnNumber:15},void 0),e.jsxDEV("span",{children:["文 ",f.text]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2417,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2412,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2410,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2409,columnNumber:9},void 0),k?e.jsxDEV("div",{className:"settings-dialog__model-toolbar",children:e.jsxDEV("label",{className:`settings-dialog__model-search ${n.length===0?"settings-dialog__model-search--disabled":""}`,children:[e.jsxDEV(zi,{size:15},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2431,columnNumber:15},void 0),e.jsxDEV("input",{type:"text",value:de,onChange:q=>xe(q.target.value),placeholder:n.length>0?"搜索模型 ID、名称或品牌":"获取模型后可搜索",disabled:n.length===0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2432,columnNumber:15},void 0),de?e.jsxDEV("button",{type:"button",className:"settings-dialog__model-search-clear",onClick:()=>xe(""),"aria-label":"清空搜索",children:e.jsxDEV(Ri,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2450,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2444,columnNumber:17},void 0):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2424,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2423,columnNumber:11},void 0):null,j.length>0?e.jsxDEV("div",{className:"settings-dialog__model-type-groups",children:j.map(({type:q,models:b})=>{const ie=Hi.has(q);return e.jsxDEV("div",{className:"settings-dialog__model-type-group",children:[e.jsxDEV("div",{className:"settings-dialog__model-type-header",style:{cursor:"pointer"},onClick:()=>Xi(q),children:[e.jsxDEV("div",{className:"settings-dialog__model-type-meta",children:[ie?e.jsxDEV(We,{size:16,className:"settings-dialog__model-type-toggle"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2471,columnNumber:25},void 0):e.jsxDEV(Li,{size:16,className:"settings-dialog__model-type-toggle"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2476,columnNumber:25},void 0),e.jsxDEV("span",{className:"settings-dialog__model-type-title",children:pt[q]},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2481,columnNumber:23},void 0),e.jsxDEV("span",{className:"settings-dialog__model-type-count",children:b.length},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2484,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2469,columnNumber:21},void 0),e.jsxDEV("button",{type:"button",className:"settings-dialog__model-group-test",onClick:P=>{P.stopPropagation(),u&&Ge({profileId:u.id,modality:q,compareMode:"cross-model"})},disabled:!t,title:t?"测试当前供应商这一组模型":"请先保存供应商配置并确保 API Key 可用",children:"测试本组"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2488,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2464,columnNumber:19},void 0),!ie&&e.jsxDEV("div",{className:"settings-dialog__model-type-list",children:b.map(P=>{const X=Ki(P.vendor),Ke=!a||R.selectedModelIds.includes(P.id);return e.jsxDEV("div",{className:"settings-dialog__model-type-item",style:{"--model-brand-accent":X.accent,"--model-brand-surface":X.surface,"--model-brand-border":X.border},children:[e.jsxDEV("span",{className:"settings-dialog__model-type-item-logo",children:e.jsxDEV(Fi,{vendor:P.vendor,size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2531,columnNumber:31},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2530,columnNumber:29},void 0),e.jsxDEV("div",{className:"settings-dialog__model-type-item-copy",children:[e.jsxDEV(xt,{profileId:u.id,modelId:P.id},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2537,columnNumber:31},void 0),e.jsxDEV("span",{className:"settings-dialog__model-type-item-vendor",children:Oe(P.vendor)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2541,columnNumber:31},void 0),e.jsxDEV(ft,{profileId:u.id,modelId:P.id},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2544,columnNumber:31},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2536,columnNumber:29},void 0),e.jsxDEV("div",{className:"settings-dialog__model-type-item-btns",children:[(()=>{const le=st.getLatestEntryStatus(u.id,P.id);return le==="completed"?e.jsxDEV(ve,{content:"上次测试成功",showArrow:!1,children:e.jsxDEV("span",{className:"settings-dialog__model-tip-trigger",children:e.jsxDEV("span",{className:"settings-dialog__model-status settings-dialog__model-status--ok"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2563,columnNumber:41},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2562,columnNumber:39},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2558,columnNumber:37},void 0):le==="failed"?e.jsxDEV(ve,{content:"上次测试失败",showArrow:!1,children:e.jsxDEV("span",{className:"settings-dialog__model-tip-trigger",children:e.jsxDEV("span",{className:"settings-dialog__model-status settings-dialog__model-status--fail"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2574,columnNumber:41},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2573,columnNumber:39},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2569,columnNumber:37},void 0):null})(),e.jsxDEV(ve,{content:t?"测试":"请先保存供应商配置并确保 API Key 可用",showArrow:!1,children:e.jsxDEV("span",{className:"settings-dialog__model-tip-trigger",children:e.jsxDEV("button",{type:"button",className:"settings-dialog__model-icon-btn settings-dialog__model-icon-btn--test",onClick:le=>{le.stopPropagation(),u&&Ge({profileId:u.id,modality:q,modelId:P.id,compareMode:"cross-provider"})},disabled:!t,children:e.jsxDEV($i,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2604,columnNumber:37},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2589,columnNumber:35},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2588,columnNumber:33},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2580,columnNumber:31},void 0),Ke?e.jsxDEV(ve,{content:"移除此模型",showArrow:!1,children:e.jsxDEV("span",{className:"settings-dialog__model-tip-trigger",children:e.jsxDEV("button",{type:"button",className:"settings-dialog__model-icon-btn settings-dialog__model-icon-btn--delete",onClick:le=>{le.stopPropagation(),Ns(P.id)},children:e.jsxDEV(wi,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2622,columnNumber:39},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2614,columnNumber:37},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2613,columnNumber:35},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2609,columnNumber:33},void 0):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2549,columnNumber:29},void 0)]},P.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2519,columnNumber:27},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2511,columnNumber:21},void 0)]},q,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2463,columnNumber:17},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2458,columnNumber:11},void 0):U?e.jsxDEV("div",{className:"settings-dialog__model-empty",children:"没有匹配的模型,试试搜索品牌名或更完整的模型 ID。"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2638,columnNumber:11},void 0):D?e.jsxDEV("div",{className:"settings-dialog__model-empty settings-dialog__model-empty--error",children:[e.jsxDEV(Zs,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2643,columnNumber:13},void 0),e.jsxDEV("span",{children:R.error||"模型获取失败,请稍后重试"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2644,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2642,columnNumber:11},void 0):Q?e.jsxDEV("div",{className:"settings-dialog__model-empty",children:"填写 API Key 后即可获取模型,获取完成后可在这里检索和浏览。"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2647,columnNumber:11},void 0):e.jsxDEV("div",{className:"settings-dialog__model-empty",children:"还没有已添加的模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2651,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2408,columnNumber:7},void 0)},bs=(i,t,a)=>{const n=Me(a),l=W(a);return h.filter(r=>r.id===n||r.enabled&&r.capabilities[t]).map(r=>{const p=(r.id===O?i==="image"?ii:i==="video"?si:ti:Ee.getState(r.id).models.filter(j=>j.type===i)).filter((j,k,U)=>U.findIndex(D=>D.id===j.id)===k);return r.id===n&&l&&!p.some(j=>j.id===l)&&p.unshift({id:l,label:l,shortLabel:l,type:i,vendor:Ys.OTHER}),{profile:r,models:p}}).filter(r=>r.models.length>0)},Be=(i,t,a)=>{var k;const n=bs(i,a,t),l=Me(t),r=W(t),f=((k=h.find(U=>U.id===l))==null?void 0:k.name)||"未配置",p=Pt(n),j=l&&r?`${l}::${r}`:r||void 0;return e.jsxDEV("div",{className:`settings-dialog__route-card settings-dialog__route-card--${i}`,children:[e.jsxDEV("div",{className:"settings-dialog__route-card-top",children:e.jsxDEV("div",{className:"settings-dialog__route-card-title",children:Ii[i]},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2736,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2735,columnNumber:9},void 0),e.jsxDEV("div",{className:"settings-dialog__stack",children:[e.jsxDEV("div",{className:"settings-dialog__field settings-dialog__field--column",children:[e.jsxDEV("label",{className:"settings-dialog__label settings-dialog__label--stacked",children:"默认模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2742,columnNumber:13},void 0),e.jsxDEV("div",{className:"settings-dialog__route-model-picker",children:[e.jsxDEV(et,{variant:"form",selectedModel:r||"",selectedSelectionKey:j,models:p,providerProfilesOverride:h,placement:"down",placeholder:`搜索${Ii[i]}模型或供应商`,allowCustomValue:!1,showProviderAction:!1,onSelect:(U,D)=>{gi(i,D||pe(null,U))},disabled:p.length===0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2746,columnNumber:15},void 0),r?e.jsxDEV("button",{type:"button",className:"settings-dialog__route-clear",onClick:()=>gi(i,null),children:"清空"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2765,columnNumber:17},void 0):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2745,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2741,columnNumber:11},void 0),e.jsxDEV("div",{className:"settings-dialog__route-meta",children:[e.jsxDEV("span",{children:f},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2777,columnNumber:13},void 0),e.jsxDEV("span",{children:r||"未选择模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2778,columnNumber:13},void 0),n.length===0?e.jsxDEV("span",{children:"暂无可选模型"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2779,columnNumber:41},void 0):null]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2776,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2740,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2732,columnNumber:7},void 0)},vi=(i=!1)=>{if(!T)return e.jsxDEV("div",{className:"settings-dialog__empty-panel",children:"请选择一个默认模型预设。"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2789,columnNumber:9},void 0);const t=Si(T),a=T.id===ne;return e.jsxDEV("div",{className:`settings-dialog__content-panel ${i?"settings-dialog__content-panel--detail":""}`,children:[i?e.jsxDEV("div",{className:"settings-dialog__compact-stage-header",children:[e.jsxDEV("button",{type:"button",className:"settings-dialog__compact-back",onClick:()=>je("catalog"),children:[e.jsxDEV(ki,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2812,columnNumber:15},void 0),e.jsxDEV("span",{children:"返回模型预设"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2813,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2807,columnNumber:13},void 0),e.jsxDEV("div",{className:"settings-dialog__compact-stage-copy",children:[e.jsxDEV("span",{className:"settings-dialog__compact-stage-eyebrow",children:"模型预设"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2816,columnNumber:15},void 0),e.jsxDEV("p",{className:"settings-dialog__compact-stage-text",children:"在这里设置图片、视频和文本模型的默认路由。"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2819,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2815,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2806,columnNumber:11},void 0):null,e.jsxDEV("div",{className:"settings-dialog__section",children:[e.jsxDEV("div",{className:"settings-dialog__panel-header",children:[e.jsxDEV("div",{children:[e.jsxDEV("h3",{className:"settings-dialog__section-title",children:T.name},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2828,columnNumber:15},void 0),e.jsxDEV("div",{className:"settings-dialog__inline-meta",children:[e.jsxDEV("span",{children:a?"当前预设":"未激活"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2832,columnNumber:17},void 0),e.jsxDEV("span",{children:[t,"/3 已配置"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2833,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2831,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2827,columnNumber:13},void 0),e.jsxDEV("div",{className:"settings-dialog__inline-row",children:[e.jsxDEV("button",{type:"button",className:"settings-dialog__ghost-button",onClick:()=>{di(V,T.id)},children:"设为当前预设"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2837,columnNumber:15},void 0),e.jsxDEV("button",{type:"button",className:"settings-dialog__danger-button",onClick:()=>gs(T.id),disabled:V.length<=1,children:"删除预设"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2849,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2836,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2826,columnNumber:11},void 0),e.jsxDEV("div",{className:"settings-dialog__grid",children:e.jsxDEV("div",{className:"settings-dialog__field settings-dialog__field--column settings-dialog__field--full",children:[e.jsxDEV("label",{className:"settings-dialog__label settings-dialog__label--stacked",children:"预设名称"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2862,columnNumber:15},void 0),e.jsxDEV("input",{type:"text",className:"settings-dialog__input",value:T.name,onChange:n=>ls(T.id,l=>({...l,name:n.target.value}))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2865,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2861,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2860,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2825,columnNumber:9},void 0),e.jsxDEV("div",{className:"settings-dialog__routes",children:[Be("image",T.image,"supportsImage"),Be("video",T.video,"supportsVideo"),Be("text",T.text,"supportsText")]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2880,columnNumber:9},void 0)]},i?`preset-detail-${T.id}`:void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2799,columnNumber:7},void 0)},hs=()=>e.jsxDEV("div",{className:"settings-dialog__workspace settings-dialog__workspace--single",children:e.jsxDEV("div",{className:"settings-dialog__content-panel settings-dialog__content-panel--canvas",children:[x?e.jsxDEV("div",{className:"settings-dialog__compact-stage-header",children:e.jsxDEV("div",{className:"settings-dialog__compact-stage-copy",children:[e.jsxDEV("span",{className:"settings-dialog__compact-stage-eyebrow",children:"画布显示"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2903,columnNumber:15},void 0),e.jsxDEV("p",{className:"settings-dialog__compact-stage-text",children:"手机上会以更集中的卡片形式展示,方便快速切换画布相关开关。"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2906,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2902,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2901,columnNumber:11},void 0):null,e.jsxDEV("div",{className:"settings-dialog__section settings-dialog__section--canvas-card",children:[e.jsxDEV("div",{className:"settings-dialog__section-header",children:e.jsxDEV("div",{children:e.jsxDEV("h3",{className:"settings-dialog__section-title",children:"画布显示配置"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2915,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2914,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2913,columnNumber:11},void 0),e.jsxDEV("div",{className:"settings-dialog__preference settings-dialog__preference--panel",children:[e.jsxDEV("div",{className:"settings-dialog__toggle-copy",children:[e.jsxDEV("span",{className:"settings-dialog__toggle-title",children:"任务进度卡片"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2921,columnNumber:15},void 0),e.jsxDEV("span",{className:"settings-dialog__toggle-desc",children:"在画布中显示任务进度卡片,便于追踪当前生成状态。"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2924,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2920,columnNumber:13},void 0),e.jsxDEV(Ei,{size:"small",value:Y,onChange:i=>void cs(i)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2928,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2919,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2912,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2899,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2898,columnNumber:5},void 0),vs=()=>e.jsxDEV("aside",{className:"settings-dialog__nav",children:e.jsxDEV("div",{className:"settings-dialog__nav-shell",children:e.jsxDEV("div",{className:"settings-dialog__nav-list",children:gt.map(i=>e.jsxDEV("button",{type:"button",className:`settings-dialog__nav-item ${B===i.value?"settings-dialog__nav-item--active":""}`,onClick:()=>ns(i.value),children:e.jsxDEV("span",{className:"settings-dialog__nav-item-title",children:i.label},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2957,columnNumber:17},void 0)},i.value,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2947,columnNumber:15},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2945,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2944,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2943,columnNumber:7},void 0),_s=()=>B==="canvas"?hs():B==="speech"?e.jsxDEV(Ls,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2974,columnNumber:14},void 0):B==="presets"?ni?Yi==="catalog"?bi("presets-catalog",xi()):vi(!0):e.jsxDEV("div",{className:`settings-dialog__workspace ${x?"settings-dialog__workspace--show-sidebar":""}`,children:[e.jsxDEV("aside",{className:"settings-dialog__sidebar",children:xi()},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2990,columnNumber:11},void 0),vi(!1)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:2985,columnNumber:9},void 0):ni?Zi==="catalog"?bi("providers-catalog",fi()):hi(!0):e.jsxDEV("div",{className:`settings-dialog__workspace ${x?"settings-dialog__workspace--show-sidebar":""}`,children:[e.jsxDEV("aside",{className:"settings-dialog__sidebar",children:fi()},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:3010,columnNumber:9},void 0),hi(!1)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:3005,columnNumber:7},void 0);return e.jsxDEV(e.Fragment,{children:[e.jsxDEV(As,{id:"settings-dialog",visible:o.openSettings,title:"设置",onClose:fs,width:x?"100%":"88%",height:x?"100%":"88%",minWidth:x?Math.max(320,Math.min(G-16,640)):1080,minHeight:x?Math.max(520,Math.min(H-16,820)):680,x:"center",y:"center",maximizable:!0,minimizable:!1,resizable:!x,movable:!x,modal:!1,className:"winbox-ai-generation winbox-tool-window winbox-settings-window",container:s,background:"#ffffff",children:e.jsxDEV("div",{ref:fe,className:`settings-dialog ${x?"settings-dialog--compact":""}`,"data-testid":"settings-dialog",children:e.jsxDEV("div",{className:"settings-dialog__layout",children:[vs(),e.jsxDEV("div",{className:"settings-dialog__main",children:_s()},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:3057,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:3055,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:3048,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:3020,columnNumber:7},void 0),e.jsxDEV(lt,{open:Xe,container:s,models:R.discoveredModels,selectedModelIds:R.selectedModelIds,onClose:()=>Pe(!1),onConfirm:mi,onTestModel:i=>{if(!u)return;const t=R.discoveredModels.find(a=>a.id===i);Ge({profileId:u.id,modelId:i,modality:(t==null?void 0:t.type)||"image",compareMode:"cross-provider"})}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:3061,columnNumber:7},void 0),_]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/settings-dialog/settings-dialog.tsx",lineNumber:3019,columnNumber:5},void 0)};export{$t as IMAGE_MODEL_GROUPED_OPTIONS,Rt as SettingsDialog,Gt as VIDEO_MODEL_OPTIONS};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as P,d as N,p as W}from"./styles-6aaf32cf-aFVlX_lA.js";import{g as t,d as H,l as b,e as R,k as T,an as v,A as U}from"./mermaid.core-CI-VJEiw.js";import{G as C}from"./graph-BsYIlc-B.js";import{l as F}from"./layout-B1ePJO5V.js";import{l as $}from"./line-DfhCgsyz.js";import"./tool-windows-CtLXQDGF.js";import"./array-B5oSNiGi.js";import"./path-CY0bYimO.js";const O=e=>e.append("circle").attr("class","start-state").attr("r",t().state.sizeUnit).attr("cx",t().state.padding+t().state.sizeUnit).attr("cy",t().state.padding+t().state.sizeUnit),X=e=>e.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",t().state.textHeight).attr("class","divider").attr("x2",t().state.textHeight*2).attr("y1",0).attr("y2",0),J=(e,i)=>{const o=e.append("text").attr("x",2*t().state.padding).attr("y",t().state.textHeight+2*t().state.padding).attr("font-size",t().state.fontSize).attr("class","state-title").text(i.id),c=o.node().getBBox();return e.insert("rect",":first-child").attr("x",t().state.padding).attr("y",t().state.padding).attr("width",c.width+2*t().state.padding).attr("height",c.height+2*t().state.padding).attr("rx",t().state.radius),o},Y=(e,i)=>{const o=function(l,m,w){const E=l.append("tspan").attr("x",2*t().state.padding).text(m);w||E.attr("dy",t().state.textHeight)},s=e.append("text").attr("x",2*t().state.padding).attr("y",t().state.textHeight+1.3*t().state.padding).attr("font-size",t().state.fontSize).attr("class","state-title").text(i.descriptions[0]).node().getBBox(),g=s.height,p=e.append("text").attr("x",t().state.padding).attr("y",g+t().state.padding*.4+t().state.dividerMargin+t().state.textHeight).attr("class","state-description");let a=!0,r=!0;i.descriptions.forEach(function(l){a||(o(p,l,r),r=!1),a=!1});const y=e.append("line").attr("x1",t().state.padding).attr("y1",t().state.padding+g+t().state.dividerMargin/2).attr("y2",t().state.padding+g+t().state.dividerMargin/2).attr("class","descr-divider"),x=p.node().getBBox(),d=Math.max(x.width,s.width);return y.attr("x2",d+3*t().state.padding),e.insert("rect",":first-child").attr("x",t().state.padding).attr("y",t().state.padding).attr("width",d+2*t().state.padding).attr("height",x.height+g+2*t().state.padding).attr("rx",t().state.radius),e},I=(e,i,o)=>{const c=t().state.padding,s=2*t().state.padding,g=e.node().getBBox(),p=g.width,a=g.x,r=e.append("text").attr("x",0).attr("y",t().state.titleShift).attr("font-size",t().state.fontSize).attr("class","state-title").text(i.id),x=r.node().getBBox().width+s;let d=Math.max(x,p);d===p&&(d=d+s);let l;const m=e.node().getBBox();i.doc,l=a-c,x>p&&(l=(p-d)/2+c),Math.abs(a-m.x)<c&&x>p&&(l=a-(x-p)/2);const w=1-t().state.textHeight;return e.insert("rect",":first-child").attr("x",l).attr("y",w).attr("class",o?"alt-composit":"composit").attr("width",d).attr("height",m.height+t().state.textHeight+t().state.titleShift+1).attr("rx","0"),r.attr("x",l+c),x<=p&&r.attr("x",a+(d-s)/2-x/2+c),e.insert("rect",":first-child").attr("x",l).attr("y",t().state.titleShift-t().state.textHeight-t().state.padding).attr("width",d).attr("height",t().state.textHeight*3).attr("rx",t().state.radius),e.insert("rect",":first-child").attr("x",l).attr("y",t().state.titleShift-t().state.textHeight-t().state.padding).attr("width",d).attr("height",m.height+3+2*t().state.textHeight).attr("rx",t().state.radius),e},_=e=>(e.append("circle").attr("class","end-state-outer").attr("r",t().state.sizeUnit+t().state.miniPadding).attr("cx",t().state.padding+t().state.sizeUnit+t().state.miniPadding).attr("cy",t().state.padding+t().state.sizeUnit+t().state.miniPadding),e.append("circle").attr("class","end-state-inner").attr("r",t().state.sizeUnit).attr("cx",t().state.padding+t().state.sizeUnit+2).attr("cy",t().state.padding+t().state.sizeUnit+2)),q=(e,i)=>{let o=t().state.forkWidth,c=t().state.forkHeight;if(i.parentId){let s=o;o=c,c=s}return e.append("rect").style("stroke","black").style("fill","black").attr("width",o).attr("height",c).attr("x",t().state.padding).attr("y",t().state.padding)},Z=(e,i,o,c)=>{let s=0;const g=c.append("text");g.style("text-anchor","start"),g.attr("class","noteText");let p=e.replace(/\r\n/g,"<br/>");p=p.replace(/\n/g,"<br/>");const a=p.split(T.lineBreakRegex);let r=1.25*t().state.noteMargin;for(const y of a){const x=y.trim();if(x.length>0){const d=g.append("tspan");if(d.text(x),r===0){const l=d.node().getBBox();r+=l.height}s+=r,d.attr("x",i+t().state.noteMargin),d.attr("y",o+s+1.25*t().state.noteMargin)}}return{textWidth:g.node().getBBox().width,textHeight:s}},K=(e,i)=>{i.attr("class","state-note");const o=i.append("rect").attr("x",0).attr("y",t().state.padding),c=i.append("g"),{textWidth:s,textHeight:g}=Z(e,0,0,c);return o.attr("height",g+2*t().state.noteMargin),o.attr("width",s+t().state.noteMargin*2),o},L=function(e,i){const o=i.id,c={id:o,label:i.id,width:0,height:0},s=e.append("g").attr("id",o).attr("class","stateGroup");i.type==="start"&&O(s),i.type==="end"&&_(s),(i.type==="fork"||i.type==="join")&&q(s,i),i.type==="note"&&K(i.note.text,s),i.type==="divider"&&X(s),i.type==="default"&&i.descriptions.length===0&&J(s,i),i.type==="default"&&i.descriptions.length>0&&Y(s,i);const g=s.node().getBBox();return c.width=g.width+2*t().state.padding,c.height=g.height+2*t().state.padding,c};let A=0;const Q=function(e,i,o){const c=function(r){switch(r){case N.relationType.AGGREGATION:return"aggregation";case N.relationType.EXTENSION:return"extension";case N.relationType.COMPOSITION:return"composition";case N.relationType.DEPENDENCY:return"dependency"}};i.points=i.points.filter(r=>!Number.isNaN(r.y));const s=i.points,g=$().x(function(r){return r.x}).y(function(r){return r.y}).curve(v),p=e.append("path").attr("d",g(s)).attr("id","edge"+A).attr("class","transition");let a="";if(t().state.arrowMarkerAbsolute&&(a=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,a=a.replace(/\(/g,"\\("),a=a.replace(/\)/g,"\\)")),p.attr("marker-end","url("+a+"#"+c(N.relationType.DEPENDENCY)+"End)"),o.title!==void 0){const r=e.append("g").attr("class","stateLabel"),{x:y,y:x}=U.calcLabelPosition(i.points),d=T.getRows(o.title);let l=0;const m=[];let w=0,E=0;for(let u=0;u<=d.length;u++){const h=r.append("text").attr("text-anchor","middle").text(d[u]).attr("x",y).attr("y",x+l),f=h.node().getBBox();w=Math.max(w,f.width),E=Math.min(E,f.x),b.info(f.x,y,x+l),l===0&&(l=h.node().getBBox().height,b.info("Title height",l,x)),m.push(h)}let k=l*d.length;if(d.length>1){const u=(d.length-1)*l*.5;m.forEach((h,f)=>h.attr("y",x+f*l-u)),k=l*d.length}const n=r.node().getBBox();r.insert("rect",":first-child").attr("class","box").attr("x",y-w/2-t().state.padding/2).attr("y",x-k/2-t().state.padding/2-3.5).attr("width",w+t().state.padding).attr("height",k+t().state.padding),b.info(n)}A++};let B;const z={},V=function(){},j=function(e){e.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},D=function(e,i,o,c){B=t().state;const s=t().securityLevel;let g;s==="sandbox"&&(g=H("#i"+i));const p=s==="sandbox"?H(g.nodes()[0].contentDocument.body):H("body"),a=s==="sandbox"?g.nodes()[0].contentDocument:document;b.debug("Rendering diagram "+e);const r=p.select(`[id='${i}']`);j(r);const y=c.db.getRootDoc();G(y,r,void 0,!1,p,a,c);const x=B.padding,d=r.node().getBBox(),l=d.width+x*2,m=d.height+x*2,w=l*1.75;R(r,m,w,B.useMaxWidth),r.attr("viewBox",`${d.x-B.padding} ${d.y-B.padding} `+l+" "+m)},tt=e=>e?e.length*B.fontSizeFactor:1,G=(e,i,o,c,s,g,p)=>{const a=new C({compound:!0,multigraph:!0});let r,y=!0;for(r=0;r<e.length;r++)if(e[r].stmt==="relation"){y=!1;break}o?a.setGraph({rankdir:"LR",multigraph:!0,compound:!0,ranker:"tight-tree",ranksep:y?1:B.edgeLengthFactor,nodeSep:y?1:50,isMultiGraph:!0}):a.setGraph({rankdir:"TB",multigraph:!0,compound:!0,ranksep:y?1:B.edgeLengthFactor,nodeSep:y?1:50,ranker:"tight-tree",isMultiGraph:!0}),a.setDefaultEdgeLabel(function(){return{}}),p.db.extract(e);const x=p.db.getStates(),d=p.db.getRelations(),l=Object.keys(x);for(const n of l){const u=x[n];o&&(u.parentId=o);let h;if(u.doc){let f=i.append("g").attr("id",u.id).attr("class","stateGroup");h=G(u.doc,f,u.id,!c,s,g,p);{f=I(f,u,c);let S=f.node().getBBox();h.width=S.width,h.height=S.height+B.padding/2,z[u.id]={y:B.compositTitleSize}}}else h=L(i,u);if(u.note){const f={descriptions:[],id:u.id+"-note",note:u.note,type:"note"},S=L(i,f);u.note.position==="left of"?(a.setNode(h.id+"-note",S),a.setNode(h.id,h)):(a.setNode(h.id,h),a.setNode(h.id+"-note",S)),a.setParent(h.id,h.id+"-group"),a.setParent(h.id+"-note",h.id+"-group")}else a.setNode(h.id,h)}b.debug("Count=",a.nodeCount(),a);let m=0;d.forEach(function(n){m++,b.debug("Setting edge",n),a.setEdge(n.id1,n.id2,{relation:n,width:tt(n.title),height:B.labelHeight*T.getRows(n.title).length,labelpos:"c"},"id"+m)}),F(a),b.debug("Graph after layout",a.nodes());const w=i.node();a.nodes().forEach(function(n){n!==void 0&&a.node(n)!==void 0?(b.warn("Node "+n+": "+JSON.stringify(a.node(n))),s.select("#"+w.id+" #"+n).attr("transform","translate("+(a.node(n).x-a.node(n).width/2)+","+(a.node(n).y+(z[n]?z[n].y:0)-a.node(n).height/2)+" )"),s.select("#"+w.id+" #"+n).attr("data-x-shift",a.node(n).x-a.node(n).width/2),g.querySelectorAll("#"+w.id+" #"+n+" .divider").forEach(h=>{const f=h.parentElement;let S=0,M=0;f&&(f.parentElement&&(S=f.parentElement.getBBox().width),M=parseInt(f.getAttribute("data-x-shift"),10),Number.isNaN(M)&&(M=0)),h.setAttribute("x1",0-M+8),h.setAttribute("x2",S-M-8)})):b.debug("No Node "+n+": "+JSON.stringify(a.node(n)))});let E=w.getBBox();a.edges().forEach(function(n){n!==void 0&&a.edge(n)!==void 0&&(b.debug("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(a.edge(n))),Q(i,a.edge(n),a.edge(n).relation))}),E=w.getBBox();const k={id:o||"root",label:o||"root",width:0,height:0};return k.width=E.width+2*B.padding,k.height=E.height+2*B.padding,b.debug("Doc rendered",k,a),k},et={setConf:V,draw:D},lt={parser:W,db:N,renderer:et,styles:P,init:e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute,N.clear()}};export{lt as diagram};
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import{G as R}from"./graph-Bnmq4jgf.js";import{S as G,B as F,C as U,D as j,l as g,g as S,d as C,A as H,p as K,q as N,r as E,o as L,u as z,k as q,t as W}from"./index-VzDb_AHs.js";import{r as X}from"./index-3862675e-CQLKy6RO.js";import{or as J,ok as Q}from"./tool-windows-CtLXQDGF.js";import{c as Y}from"./channel-DMTz1UNN.js";function Z(e){return typeof e=="string"?new G([document.querySelectorAll(e)],[document.documentElement]):new G([U(e)],F)}function be(e,l){return!!e.children(l).length}function fe(e){return A(e.v)+":"+A(e.w)+":"+A(e.name)}var O=/:/g;function A(e){return e?String(e).replace(O,"\\:"):""}function ee(e,l){l&&e.attr("style",l)}function ue(e,l,c){l&&e.attr("class",l).attr("class",c+" "+e.attr("class"))}function we(e,l){var c=l.graph();if(J(c)){var a=c.transition;if(Q(a))return a(e)}return e}function te(e,l){var c=e.append("foreignObject").attr("width","100000"),a=c.append("xhtml:div");a.attr("xmlns","http://www.w3.org/1999/xhtml");var i=l.label;switch(typeof i){case"function":a.insert(i);break;case"object":a.insert(function(){return i});break;default:a.html(i)}ee(a,l.labelStyle),a.style("display","inline-block"),a.style("white-space","nowrap");var d=a.node().getBoundingClientRect();return c.attr("width",d.width).attr("height",d.height),c}const P={},re=function(e){const l=Object.keys(e);for(const c of l)P[c]=e[c]},V=async function(e,l,c,a,i,d){const u=a.select(`[id="${c}"]`),n=Object.keys(e);for(const p of n){const r=e[p];let y="default";r.classes.length>0&&(y=r.classes.join(" ")),y=y+" flowchart-label";const w=N(r.styles);let t=r.text!==void 0?r.text:r.id,s;if(g.info("vertex",r,r.labelType),r.labelType==="markdown")g.info("vertex",r,r.labelType);else if(W(S().flowchart.htmlLabels))s=te(u,{label:t}).node(),s.parentNode.removeChild(s);else{const k=i.createElementNS("http://www.w3.org/2000/svg","text");k.setAttribute("style",w.labelStyle.replace("color:","fill:"));const _=t.split(q.lineBreakRegex);for(const $ of _){const v=i.createElementNS("http://www.w3.org/2000/svg","tspan");v.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),v.setAttribute("dy","1em"),v.setAttribute("x","1"),v.textContent=$,k.appendChild(v)}s=k}let b=0,o="";switch(r.type){case"round":b=5,o="rect";break;case"square":o="rect";break;case"diamond":o="question";break;case"hexagon":o="hexagon";break;case"odd":o="rect_left_inv_arrow";break;case"lean_right":o="lean_right";break;case"lean_left":o="lean_left";break;case"trapezoid":o="trapezoid";break;case"inv_trapezoid":o="inv_trapezoid";break;case"odd_right":o="rect_left_inv_arrow";break;case"circle":o="circle";break;case"ellipse":o="ellipse";break;case"stadium":o="stadium";break;case"subroutine":o="subroutine";break;case"cylinder":o="cylinder";break;case"group":o="rect";break;case"doublecircle":o="doublecircle";break;default:o="rect"}const T=await z(t,S());l.setNode(r.id,{labelStyle:w.labelStyle,shape:o,labelText:T,labelType:r.labelType,rx:b,ry:b,class:y,style:w.style,id:r.id,link:r.link,linkTarget:r.linkTarget,tooltip:d.db.getTooltip(r.id)||"",domId:d.db.lookUpDomId(r.id),haveCallback:r.haveCallback,width:r.type==="group"?500:void 0,dir:r.dir,type:r.type,props:r.props,padding:S().flowchart.padding}),g.info("setNode",{labelStyle:w.labelStyle,labelType:r.labelType,shape:o,labelText:T,rx:b,ry:b,class:y,style:w.style,id:r.id,domId:d.db.lookUpDomId(r.id),width:r.type==="group"?500:void 0,type:r.type,dir:r.dir,props:r.props,padding:S().flowchart.padding})}},M=async function(e,l,c){g.info("abc78 edges = ",e);let a=0,i={},d,u;if(e.defaultStyle!==void 0){const n=N(e.defaultStyle);d=n.style,u=n.labelStyle}for(const n of e){a++;const p="L-"+n.start+"-"+n.end;i[p]===void 0?(i[p]=0,g.info("abc78 new entry",p,i[p])):(i[p]++,g.info("abc78 new entry",p,i[p]));let r=p+"-"+i[p];g.info("abc78 new link id to be used is",p,r,i[p]);const y="LS-"+n.start,w="LE-"+n.end,t={style:"",labelStyle:""};switch(t.minlen=n.length||1,n.type==="arrow_open"?t.arrowhead="none":t.arrowhead="normal",t.arrowTypeStart="arrow_open",t.arrowTypeEnd="arrow_open",n.type){case"double_arrow_cross":t.arrowTypeStart="arrow_cross";case"arrow_cross":t.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":t.arrowTypeStart="arrow_point";case"arrow_point":t.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":t.arrowTypeStart="arrow_circle";case"arrow_circle":t.arrowTypeEnd="arrow_circle";break}let s="",b="";switch(n.stroke){case"normal":s="fill:none;",d!==void 0&&(s=d),u!==void 0&&(b=u),t.thickness="normal",t.pattern="solid";break;case"dotted":t.thickness="normal",t.pattern="dotted",t.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":t.thickness="thick",t.pattern="solid",t.style="stroke-width: 3.5px;fill:none;";break;case"invisible":t.thickness="invisible",t.pattern="solid",t.style="stroke-width: 0;fill:none;";break}if(n.style!==void 0){const o=N(n.style);s=o.style,b=o.labelStyle}t.style=t.style+=s,t.labelStyle=t.labelStyle+=b,n.interpolate!==void 0?t.curve=E(n.interpolate,L):e.defaultInterpolate!==void 0?t.curve=E(e.defaultInterpolate,L):t.curve=E(P.curve,L),n.text===void 0?n.style!==void 0&&(t.arrowheadStyle="fill: #333"):(t.arrowheadStyle="fill: #333",t.labelpos="c"),t.labelType=n.labelType,t.label=await z(n.text.replace(q.lineBreakRegex,`
|
|
2
|
-
`),S()),n.style===void 0&&(t.style=t.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),t.labelStyle=t.labelStyle.replace("color:","fill:"),t.id=r,t.classes="flowchart-link "+y+" "+w,l.setEdge(n.start,n.end,t,a)}},le=function(e,l){return l.db.getClasses()},ae=async function(e,l,c,a){g.info("Drawing flowchart");let i=a.db.getDirection();i===void 0&&(i="TD");const{securityLevel:d,flowchart:u}=S(),n=u.nodeSpacing||50,p=u.rankSpacing||50;let r;d==="sandbox"&&(r=C("#i"+l));const y=d==="sandbox"?C(r.nodes()[0].contentDocument.body):C("body"),w=d==="sandbox"?r.nodes()[0].contentDocument:document,t=new R({multigraph:!0,compound:!0}).setGraph({rankdir:i,nodesep:n,ranksep:p,marginx:0,marginy:0}).setDefaultEdgeLabel(function(){return{}});let s;const b=a.db.getSubGraphs();g.info("Subgraphs - ",b);for(let f=b.length-1;f>=0;f--)s=b[f],g.info("Subgraph - ",s),a.db.addVertex(s.id,{text:s.title,type:s.labelType},"group",void 0,s.classes,s.dir);const o=a.db.getVertices(),T=a.db.getEdges();g.info("Edges",T);let k=0;for(k=b.length-1;k>=0;k--){s=b[k],Z("cluster").append("text");for(let f=0;f<s.nodes.length;f++)g.info("Setting up subgraphs",s.nodes[f],s.id),t.setParent(s.nodes[f],s.id)}await V(o,t,l,y,w,a),await M(T,t);const _=y.select(`[id="${l}"]`),$=y.select("#"+l+" g");if(await X($,t,["point","circle","cross"],"flowchart",l),H.insertTitle(_,"flowchartTitleText",u.titleTopMargin,a.db.getDiagramTitle()),K(t,_,u.diagramPadding,u.useMaxWidth),a.db.indexNodes("subGraph"+k),!u.htmlLabels){const f=w.querySelectorAll('[id="'+l+'"] .edgeLabel .label');for(const x of f){const m=x.getBBox(),h=w.createElementNS("http://www.w3.org/2000/svg","rect");h.setAttribute("rx",0),h.setAttribute("ry",0),h.setAttribute("width",m.width),h.setAttribute("height",m.height),x.insertBefore(h,x.firstChild)}}Object.keys(o).forEach(function(f){const x=o[f];if(x.link){const m=C("#"+l+' [id="'+f+'"]');if(m){const h=w.createElementNS("http://www.w3.org/2000/svg","a");h.setAttributeNS("http://www.w3.org/2000/svg","class",x.classes.join(" ")),h.setAttributeNS("http://www.w3.org/2000/svg","href",x.link),h.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),d==="sandbox"?h.setAttributeNS("http://www.w3.org/2000/svg","target","_top"):x.linkTarget&&h.setAttributeNS("http://www.w3.org/2000/svg","target",x.linkTarget);const B=m.insert(function(){return h},":first-child"),D=m.select(".label-container");D&&B.append(function(){return D.node()});const I=m.select(".label");I&&B.append(function(){return I.node()})}}})},he={setConf:re,addVertices:V,addEdges:M,getClasses:le,draw:ae},oe=(e,l)=>{const c=Y,a=c(e,"r"),i=c(e,"g"),d=c(e,"b");return j(a,i,d,l)},ne=e=>`.label {
|
|
3
|
-
font-family: ${e.fontFamily};
|
|
4
|
-
color: ${e.nodeTextColor||e.textColor};
|
|
5
|
-
}
|
|
6
|
-
.cluster-label text {
|
|
7
|
-
fill: ${e.titleColor};
|
|
8
|
-
}
|
|
9
|
-
.cluster-label span,p {
|
|
10
|
-
color: ${e.titleColor};
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
.label text,span,p {
|
|
14
|
-
fill: ${e.nodeTextColor||e.textColor};
|
|
15
|
-
color: ${e.nodeTextColor||e.textColor};
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
.node rect,
|
|
19
|
-
.node circle,
|
|
20
|
-
.node ellipse,
|
|
21
|
-
.node polygon,
|
|
22
|
-
.node path {
|
|
23
|
-
fill: ${e.mainBkg};
|
|
24
|
-
stroke: ${e.nodeBorder};
|
|
25
|
-
stroke-width: 1px;
|
|
26
|
-
}
|
|
27
|
-
.flowchart-label text {
|
|
28
|
-
text-anchor: middle;
|
|
29
|
-
}
|
|
30
|
-
// .flowchart-label .text-outer-tspan {
|
|
31
|
-
// text-anchor: middle;
|
|
32
|
-
// }
|
|
33
|
-
// .flowchart-label .text-inner-tspan {
|
|
34
|
-
// text-anchor: start;
|
|
35
|
-
// }
|
|
36
|
-
|
|
37
|
-
.node .katex path {
|
|
38
|
-
fill: #000;
|
|
39
|
-
stroke: #000;
|
|
40
|
-
stroke-width: 1px;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
.node .label {
|
|
44
|
-
text-align: center;
|
|
45
|
-
}
|
|
46
|
-
.node.clickable {
|
|
47
|
-
cursor: pointer;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
.arrowheadPath {
|
|
51
|
-
fill: ${e.arrowheadColor};
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
.edgePath .path {
|
|
55
|
-
stroke: ${e.lineColor};
|
|
56
|
-
stroke-width: 2.0px;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
.flowchart-link {
|
|
60
|
-
stroke: ${e.lineColor};
|
|
61
|
-
fill: none;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
.edgeLabel {
|
|
65
|
-
background-color: ${e.edgeLabelBackground};
|
|
66
|
-
rect {
|
|
67
|
-
opacity: 0.5;
|
|
68
|
-
background-color: ${e.edgeLabelBackground};
|
|
69
|
-
fill: ${e.edgeLabelBackground};
|
|
70
|
-
}
|
|
71
|
-
text-align: center;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/* For html labels only */
|
|
75
|
-
.labelBkg {
|
|
76
|
-
background-color: ${oe(e.edgeLabelBackground,.5)};
|
|
77
|
-
// background-color:
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
.cluster rect {
|
|
81
|
-
fill: ${e.clusterBkg};
|
|
82
|
-
stroke: ${e.clusterBorder};
|
|
83
|
-
stroke-width: 1px;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
.cluster text {
|
|
87
|
-
fill: ${e.titleColor};
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
.cluster span,p {
|
|
91
|
-
color: ${e.titleColor};
|
|
92
|
-
}
|
|
93
|
-
/* .cluster div {
|
|
94
|
-
color: ${e.titleColor};
|
|
95
|
-
} */
|
|
96
|
-
|
|
97
|
-
div.mermaidTooltip {
|
|
98
|
-
position: absolute;
|
|
99
|
-
text-align: center;
|
|
100
|
-
max-width: 200px;
|
|
101
|
-
padding: 2px;
|
|
102
|
-
font-family: ${e.fontFamily};
|
|
103
|
-
font-size: 12px;
|
|
104
|
-
background: ${e.tertiaryColor};
|
|
105
|
-
border: 1px solid ${e.border2};
|
|
106
|
-
border-radius: 2px;
|
|
107
|
-
pointer-events: none;
|
|
108
|
-
z-index: 100;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
.flowchartTitleText {
|
|
112
|
-
text-anchor: middle;
|
|
113
|
-
font-size: 18px;
|
|
114
|
-
fill: ${e.textColor};
|
|
115
|
-
}
|
|
116
|
-
`,ge=ne;export{ee as a,te as b,we as c,ue as d,fe as e,ge as f,he as g,be as i,Z as s};
|