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.
Files changed (223) hide show
  1. package/README.md +3 -3
  2. package/assets/CanvasAudioPlayer-DutgwdiU.js +2 -0
  3. package/assets/ChatDrawer-E6Fog16I.js +11 -0
  4. package/assets/{ChatMessagesArea-CZkiRzmW.js → ChatMessagesArea-Bgwiz_XP.js} +3 -3
  5. package/assets/DeferredAIInputBar-CPkD8Cv9.js +8 -0
  6. package/assets/DeferredAIInputBar-szBPHiNW.css +1 -0
  7. package/assets/DrawnixDeferredFeatures-Cul76-88.js +2 -0
  8. package/assets/{KnowledgeBaseContent-Dan2DUqY.js → KnowledgeBaseContent-DcX5Jofx.js} +6 -6
  9. package/assets/{MVCreator-Dzjl2fXA.js → MVCreator-DllHozYg.js} +8 -8
  10. package/assets/{ModelBenchmarkWorkbench-oy2wue1u.js → ModelBenchmarkWorkbench-Dv9SNYTi.js} +2 -2
  11. package/assets/MusicAnalyzer-CHcQ5t4P.js +1 -0
  12. package/assets/{MusicAnalyzer-BO44f-db.js → MusicAnalyzer-DDeT6g3c.js} +2 -2
  13. package/assets/ResizableDivider-CaG9JQbJ.js +1 -0
  14. package/assets/TaskQueuePanel-BNhNzGp5.js +1 -0
  15. package/assets/{VideoAnalyzer-iiJpoWb6.js → VideoAnalyzer-BSLz1FaI.js} +2 -2
  16. package/assets/ai-generation-preferences-service-BF7QkuJp.js +1 -0
  17. package/assets/arc-BU2KKCa_.js +1 -0
  18. package/assets/arc-DmGoDCEL.js +1 -0
  19. package/assets/{batch-image-generation-B2R0hJW_.js → batch-image-generation-Bg68r_Ql.js} +5 -5
  20. package/assets/{blockDiagram-38ab4fdb-BmWPnNuS.js → blockDiagram-38ab4fdb-BCGEnMME.js} +1 -1
  21. package/assets/{blockDiagram-38ab4fdb-trArAOFP.js → blockDiagram-38ab4fdb-CsZR5uC5.js} +1 -1
  22. package/assets/board-utils-CpAtoKn2.js +1 -0
  23. package/assets/{browser-Dya3c6_X.js → browser-DpICcNby.js} +1 -1
  24. package/assets/{c4Diagram-3d4e48cf-Cvj3RMOv.js → c4Diagram-3d4e48cf-9fuiuFdV.js} +1 -1
  25. package/assets/{c4Diagram-3d4e48cf-CqJrO4Za.js → c4Diagram-3d4e48cf-WM4wd_GR.js} +1 -1
  26. package/assets/{canvas-insertion-Dq3gR9Nw.js → canvas-insertion-CdUQF7IV.js} +3 -3
  27. package/assets/channel-CZjE-WNp.js +1 -0
  28. package/assets/channel-SXZD6bG3.js +1 -0
  29. package/assets/classDiagram-70f12bd4-CBVHTwQu.js +2 -0
  30. package/assets/{classDiagram-70f12bd4-DvrRZ41d.js → classDiagram-70f12bd4-DcYDedz1.js} +2 -2
  31. package/assets/classDiagram-v2-f2320105-CsxWGkSy.js +2 -0
  32. package/assets/classDiagram-v2-f2320105-jpCwaHEd.js +2 -0
  33. package/assets/{clipper-B4i11tN1.js → clipper-jvd5rF5a.js} +1 -1
  34. package/assets/clone-C4mvvMDb.js +1 -0
  35. package/assets/{createText-2e5e7dd3-D7dXlVes.js → createText-2e5e7dd3-CkXS3l7I.js} +2 -2
  36. package/assets/{createText-2e5e7dd3-B8gnT5hD.js → createText-2e5e7dd3-x5lOIwut.js} +1 -1
  37. package/assets/edges-e0da2a9e-CbrF4nbD.js +4 -0
  38. package/assets/{edges-e0da2a9e-CyRAzEMi.js → edges-e0da2a9e-Ch6PBwWs.js} +2 -2
  39. package/assets/{erDiagram-9861fffd-D8yYsjoN.js → erDiagram-9861fffd-Bq07elcI.js} +3 -3
  40. package/assets/{erDiagram-9861fffd-BHbAa_Ka.js → erDiagram-9861fffd-DSlNVuAZ.js} +4 -4
  41. package/assets/{flowDb-956e92f1-DAqb8wjP.js → flowDb-956e92f1-BqPCJlZp.js} +3 -3
  42. package/assets/{flowDb-956e92f1-f30uG4pp.js → flowDb-956e92f1-Ti5YC4Vv.js} +3 -3
  43. package/assets/{flowDiagram-66a62f08-C4Gz9mOM.js → flowDiagram-66a62f08-CPDuG3rY.js} +3 -3
  44. package/assets/{flowDiagram-66a62f08-CBXypoEi.js → flowDiagram-66a62f08-D3GSABFi.js} +1 -1
  45. package/assets/flowDiagram-v2-96b9c2cf-BCcJ-cre.js +1 -0
  46. package/assets/flowDiagram-v2-96b9c2cf-DCVaFEgV.js +1 -0
  47. package/assets/{flowchart-elk-definition-4a651766-CSm5diF6.js → flowchart-elk-definition-4a651766-BH09NeLA.js} +1 -1
  48. package/assets/{flowchart-elk-definition-4a651766-BHB7pRxm.js → flowchart-elk-definition-4a651766-BLaLPCDV.js} +1 -1
  49. package/assets/{ganttDiagram-c361ad54-CU9a9DsJ.js → ganttDiagram-c361ad54-DL9ZeaEc.js} +4 -4
  50. package/assets/ganttDiagram-c361ad54-Sp9M1KHP.js +257 -0
  51. package/assets/{gitGraphDiagram-72cf32ee-B2zj8Xnu.js → gitGraphDiagram-72cf32ee-BSf1fsDV.js} +1 -1
  52. package/assets/{gitGraphDiagram-72cf32ee-BWOgrFeh.js → gitGraphDiagram-72cf32ee-BWwmRKo-.js} +1 -1
  53. package/assets/{graph-Bnmq4jgf.js → graph--nPw8zXQ.js} +1 -1
  54. package/assets/graph-g-2U7grQ.js +1 -0
  55. package/assets/{index-3862675e-CQLKy6RO.js → index-3862675e-BXwbZ2pz.js} +1 -1
  56. package/assets/{index-3862675e-BSxxidV_.js → index-3862675e-D6Zy95zZ.js} +1 -1
  57. package/assets/index-3eqA7Bag.js +1 -0
  58. package/assets/{index-D1ORCZqJ.js → index-7Q-aiwln.js} +2 -2
  59. package/assets/index-B2dttXd7.js +1 -0
  60. package/assets/index-B7V7-Vxz.js +1 -0
  61. package/assets/index-BHPTfCZM.js +1 -0
  62. package/assets/{index-vvV37Q1S.js → index-BP77pG9S.js} +4 -4
  63. package/assets/index-BPR_DyGD.js +1 -0
  64. package/assets/index-BWrcsh8u.js +1 -0
  65. package/assets/{index-D4qm_1m5.js → index-BXzGHPXz.js} +1 -1
  66. package/assets/index-BaCHOxhI.js +1 -0
  67. package/assets/{index-BoglETHF.js → index-Bq8mPedC.js} +2 -2
  68. package/assets/index-BqHZCcen.js +2 -0
  69. package/assets/index-Bti3m-iW.js +1 -0
  70. package/assets/{index-sPNG1_UN.js → index-BwSnJN93.js} +5 -5
  71. package/assets/{index-D5qxbeGT.js → index-C3qD42ws.js} +1 -1
  72. package/assets/{index-VzDb_AHs.js → index-C5eu4uSl.js} +5 -5
  73. package/assets/index-CLJUfzvO.js +1 -0
  74. package/assets/index-CfgvFFx3.js +271 -0
  75. package/assets/index-CmyOpFTN.js +1 -0
  76. package/assets/index-D4pIkh3S.js +1 -0
  77. package/assets/index-D7b5fX1d.js +1 -0
  78. package/assets/index-DH12_HTj.js +13 -0
  79. package/assets/index-DI0OV6F8.js +7 -0
  80. package/assets/index-DIiIUyb-.js +1 -0
  81. package/assets/index-DcZrElEK.js +2 -0
  82. package/assets/index-DllL1sx1.js +1 -0
  83. package/assets/index-DqMndQiP.js +1 -0
  84. package/assets/index-Dz8sghkK.js +1 -0
  85. package/assets/index-QkP3EC02.js +1 -0
  86. package/assets/index-TkfyNewx.js +1 -0
  87. package/assets/index-ZrVeQUWo.js +1 -0
  88. package/assets/index-eZfwJ9bV.js +3 -0
  89. package/assets/{index-VarwiJlL.js → index-gQ7LgvSv.js} +1 -1
  90. package/assets/{infoDiagram-f8f76790-d-BYTW2w.js → infoDiagram-f8f76790-DpFqCCNv.js} +3 -3
  91. package/assets/{infoDiagram-f8f76790-BMsVq8O_.js → infoDiagram-f8f76790-G2JpJJP7.js} +3 -3
  92. package/assets/{journeyDiagram-49397b02-DCtCkoaC.js → journeyDiagram-49397b02-BdESGMrv.js} +1 -1
  93. package/assets/{journeyDiagram-49397b02-CBqb8-ml.js → journeyDiagram-49397b02-DLLTobRM.js} +1 -1
  94. package/assets/{layout-DKqEkE_W.js → layout-CVkuImk4.js} +1 -1
  95. package/assets/layout-WSR0vNPO.js +1 -0
  96. package/assets/line-D3bnG227.js +1 -0
  97. package/assets/line-DQuMJveY.js +1 -0
  98. package/assets/{linear-C6OQYT56.js → linear-CciP-97N.js} +1 -1
  99. package/assets/linear-Z6vFvuwc.js +1 -0
  100. package/assets/{main-i0s2IJTn.css → main-8DNjLY6L.css} +1 -1
  101. package/assets/main-BFEkxCOK.js +56 -0
  102. package/assets/{mermaid.core-CI-VJEiw.js → mermaid.core-CwZQb0ud.js} +5 -5
  103. package/assets/{mindmap-definition-fc14e90a-k_RSypuP.js → mindmap-definition-fc14e90a-BnJ8OOTI.js} +1 -1
  104. package/assets/{mindmap-definition-fc14e90a-DrtlQLES.js → mindmap-definition-fc14e90a-CxQMydCW.js} +1 -1
  105. package/assets/model-benchmark-launcher-Ct3lYXVq.js +1 -0
  106. package/assets/photo-wall-splitter-BZ88W5Zy.js +1 -0
  107. package/assets/{pieDiagram-8a3498a8-CdknGxKY.js → pieDiagram-8a3498a8-BSDdkTeu.js} +5 -5
  108. package/assets/{pieDiagram-8a3498a8-Bpr5V3o5.js → pieDiagram-8a3498a8-D6VtAoja.js} +4 -4
  109. package/assets/ppt-generation-FzjP_rp0.js +48 -0
  110. package/assets/{quadrantDiagram-120e2f19-Dx3qoKDx.js → quadrantDiagram-120e2f19-BbFV0VXY.js} +3 -3
  111. package/assets/{quadrantDiagram-120e2f19-pVIXp9i6.js → quadrantDiagram-120e2f19-C8k2xuBd.js} +3 -3
  112. package/assets/{requirementDiagram-deff3bca-hM4oekUG.js → requirementDiagram-deff3bca-C3xMdzJV.js} +1 -1
  113. package/assets/{requirementDiagram-deff3bca-DD6NY75P.js → requirementDiagram-deff3bca-CpjqKjYZ.js} +1 -1
  114. package/assets/{sankeyDiagram-04a897e0-BsvEG71N.js → sankeyDiagram-04a897e0-BBJJgsFv.js} +5 -5
  115. package/assets/{sankeyDiagram-04a897e0-C9uf1jU5.js → sankeyDiagram-04a897e0-Bjvig9bW.js} +4 -4
  116. package/assets/{sequenceDiagram-704730f1-CNEBmz1G.js → sequenceDiagram-704730f1-DX1MmBN_.js} +4 -4
  117. package/assets/{sequenceDiagram-704730f1-Bpg54z74.js → sequenceDiagram-704730f1-PFC_9IFI.js} +4 -4
  118. package/assets/settings-dialog-CQM4v791.js +1 -0
  119. package/assets/{skill-dsl-parser-DS3VOBFI.js → skill-dsl-parser-syNWYxFu.js} +10 -10
  120. package/assets/{stateDiagram-587899a1-BN2ZP-3x.js → stateDiagram-587899a1-Dc3mI_B_.js} +1 -1
  121. package/assets/stateDiagram-587899a1-SFMUVAam.js +1 -0
  122. package/assets/{stateDiagram-v2-d93cdb3a-BtV1Ziy9.js → stateDiagram-v2-d93cdb3a-DmnBjHpC.js} +1 -1
  123. package/assets/{stateDiagram-v2-d93cdb3a-BLwIM8s1.js → stateDiagram-v2-d93cdb3a-P4Yt2p_j.js} +1 -1
  124. package/assets/{styles-6aaf32cf-aFVlX_lA.js → styles-6aaf32cf-C3jnr3hV.js} +1 -1
  125. package/assets/{styles-6aaf32cf-CGp3i5qu.js → styles-6aaf32cf-b6AdP7fu.js} +1 -1
  126. package/assets/{styles-9a916d00-BK7pejCH.js → styles-9a916d00-BUiD9iBe.js} +4 -4
  127. package/assets/{styles-9a916d00-CSwFWVnr.js → styles-9a916d00-ii0XTdIm.js} +1 -1
  128. package/assets/styles-c10674c1-Bt89Yy8Q.js +116 -0
  129. package/assets/styles-c10674c1-DbTSpy3W.js +116 -0
  130. package/assets/{svgDrawCommon-08f97a94-Cr4rWU-W.js → svgDrawCommon-08f97a94-BK6lD4D6.js} +1 -1
  131. package/assets/{svgDrawCommon-08f97a94-DypvMDvH.js → svgDrawCommon-08f97a94-D4gIV05W.js} +1 -1
  132. package/assets/{timeline-definition-85554ec2-D3-lXEL5.js → timeline-definition-85554ec2-Bl2y548G.js} +1 -1
  133. package/assets/{timeline-definition-85554ec2-DIwHE15c.js → timeline-definition-85554ec2-CWKg_JxG.js} +3 -3
  134. package/assets/{tool-windows-B-a9r3G3.css → tool-windows-CUNbW1Tz.css} +1 -1
  135. package/assets/tool-windows-DOIu9TAD.js +2975 -0
  136. package/assets/ttd-dialog-DI4kQSg8.js +99 -0
  137. package/assets/{useCharacters-DsZ779l-.js → useCharacters-Chv4Ky7x.js} +3 -3
  138. package/assets/useWorkflowSubmission-BizuDmuw.js +70 -0
  139. package/assets/video-analyze-6v3Y-rUE.js +1 -0
  140. package/assets/{video-generation-C7qCz-ZF.js → video-generation-DnmTlWnm.js} +2 -2
  141. package/assets/video-recovery-service-BeRoh0s2.js +1 -0
  142. package/assets/workflow-generation-utils-me381Cax.js +3 -0
  143. package/assets/workflow-submission-service-YOpo7g37.js +4 -0
  144. package/assets/{xychartDiagram-e933f94c-B17Evxfw.js → xychartDiagram-e933f94c-CJX9_9WF.js} +4 -4
  145. package/assets/{xychartDiagram-e933f94c-Dln5PJtU.js → xychartDiagram-e933f94c-Cep8CQEH.js} +3 -3
  146. package/changelog.json +50 -0
  147. package/idle-prefetch-manifest.json +300 -316
  148. package/manifest.json +3 -3
  149. package/package.json +1 -1
  150. package/precache-manifest.json +8 -8
  151. package/sw.js +5 -5
  152. package/version.json +19 -3
  153. package/assets/CanvasAudioPlayer-DwM6PU4W.js +0 -2
  154. package/assets/ChatDrawer-BQTaa6r6.js +0 -11
  155. package/assets/DeferredAIInputBar-BmPgFhXr.css +0 -1
  156. package/assets/DeferredAIInputBar-ObyfJQ0O.js +0 -7
  157. package/assets/DrawnixDeferredFeatures-CFHVLxc5.js +0 -2
  158. package/assets/ModelDropdown-CQTTHEI7.css +0 -1
  159. package/assets/ModelDropdown-DjvIvi8O.js +0 -1
  160. package/assets/MusicAnalyzer-BU5l2wPR.js +0 -1
  161. package/assets/ResizableDivider-CBgTphcS.js +0 -1
  162. package/assets/TaskQueuePanel-CTDuSScf.js +0 -1
  163. package/assets/ai-generation-preferences-service-CqwXb9Cs.js +0 -5
  164. package/assets/arc-BBE0LXa1.js +0 -1
  165. package/assets/arc-h476db6P.js +0 -1
  166. package/assets/channel-DMTz1UNN.js +0 -1
  167. package/assets/channel-DQOY3XLe.js +0 -1
  168. package/assets/classDiagram-70f12bd4-5ACx619h.js +0 -2
  169. package/assets/classDiagram-v2-f2320105-4zQ4jrwi.js +0 -2
  170. package/assets/classDiagram-v2-f2320105-CB4rof84.js +0 -2
  171. package/assets/clone-fuaXEdc-.js +0 -1
  172. package/assets/edges-e0da2a9e-DZalSm7f.js +0 -4
  173. package/assets/flowDiagram-v2-96b9c2cf-C-DFFh54.js +0 -1
  174. package/assets/flowDiagram-v2-96b9c2cf-CWjydvHB.js +0 -1
  175. package/assets/ganttDiagram-c361ad54-DDnbMkWm.js +0 -257
  176. package/assets/graph-BsYIlc-B.js +0 -1
  177. package/assets/index-B10kMZoq.js +0 -1
  178. package/assets/index-B2_XRj3U.js +0 -1
  179. package/assets/index-B4lLv-Sz.js +0 -1
  180. package/assets/index-BFZNUUCR.js +0 -1
  181. package/assets/index-BTSYG2Vy.js +0 -1
  182. package/assets/index-BY5Kvjqg.js +0 -1
  183. package/assets/index-Blf7J5yW.js +0 -1
  184. package/assets/index-BoQA7VaE.js +0 -3
  185. package/assets/index-BzqQ69oU.js +0 -1
  186. package/assets/index-CD2D1BYc.js +0 -2
  187. package/assets/index-CLRs5cWt.js +0 -1
  188. package/assets/index-CLU4LJjR.js +0 -1
  189. package/assets/index-CPDfMZkS.js +0 -1
  190. package/assets/index-CPfhqyDz.js +0 -316
  191. package/assets/index-CU4ySaQE.js +0 -1
  192. package/assets/index-CsCwwmYY.js +0 -1
  193. package/assets/index-Cyz_w8KS.js +0 -7
  194. package/assets/index-D489cJtb.js +0 -1
  195. package/assets/index-D6DebbcI.js +0 -1
  196. package/assets/index-DDtPG6Km.js +0 -1
  197. package/assets/index-DKhTnUBU.js +0 -1
  198. package/assets/index-DMIwLDS8.js +0 -13
  199. package/assets/index-DgsUJgRJ.js +0 -1
  200. package/assets/index-oT8mbA3U.js +0 -2
  201. package/assets/layout-B1ePJO5V.js +0 -1
  202. package/assets/line-C_jmJ6v1.js +0 -1
  203. package/assets/line-DfhCgsyz.js +0 -1
  204. package/assets/linear-ChY5Iu43.js +0 -1
  205. package/assets/main-LCg1nQGB.js +0 -69
  206. package/assets/model-benchmark-launcher-B2MsZXmV.js +0 -1
  207. package/assets/model-benchmark-service-CkIRp-Sq.js +0 -1
  208. package/assets/model-selection-BvdXmVGX.js +0 -1
  209. package/assets/photo-wall-splitter-CVrfkWnh.js +0 -1
  210. package/assets/prompt-optimize-dialog-DLdL2_a1.css +0 -1
  211. package/assets/settings-dialog-CAhU3cfG.js +0 -1
  212. package/assets/stateDiagram-587899a1-CMylUAYu.js +0 -1
  213. package/assets/styles-c10674c1-KfJINP7I.js +0 -116
  214. package/assets/styles-c10674c1-cccyjRUz.js +0 -116
  215. package/assets/tool-windows-CtLXQDGF.js +0 -2847
  216. package/assets/ttd-dialog-BRg3XE5k.js +0 -99
  217. package/assets/use-runtime-models-BH9r4Yc1.js +0 -1
  218. package/assets/use-runtime-models-BgWWl4Ng.css +0 -1
  219. package/assets/useWorkflowSubmission-BeJQ3BuO.js +0 -70
  220. package/assets/video-analyze-aDVIfgUi.js +0 -1
  221. package/assets/video-recovery-service-Dy0xiPr8.js +0 -1
  222. package/assets/workflow-generation-utils-CpMilOwA.js +0 -3
  223. package/assets/workflow-submission-service-CmBBMIis.js +0 -4
@@ -0,0 +1 @@
1
+ import{dw as Ri,dx as Oe,dy as ws,aj as m,dz as Es,ai as e,dA as ks,dB as Ds,cP as zi,dC as Li,dD as $i,dE as Gi,cF as Bi,d0 as Us,aO as ve,dF as Ki,aH as Vs,dG as qs,dH as Is,dI as ji,aU as L,aQ as Ms,dJ as Fi,ah as Ps,aD as Ss,bo as Cs,aT as O,dK as se,dL as As,dM as Se,aS as Ve,dN as re,q as qe,de as he,dg as ce,k as ue,dO as ge,cB as Ce,cb as S,cp as Ts,dP as wi,dQ as Os,dR as Rs,dS as zs,dT as Ls,dU as $s,dV as Gs,aL as Ee,dW as Me,dX as Ne,dY as Ei,dZ as ki,d_ as We,d$ as Ae,e0 as Bs,e1 as Ks,e2 as Fs,e3 as Ze,e4 as W,bt as pe,e5 as Ws,e6 as Zs,bH as Ys,e7 as Hs,aF as Qs,e8 as Xs,e9 as Js,ea as et,eb as it}from"./tool-windows-DOIu9TAD.js";import{ec as Rt,ed as zt}from"./tool-windows-DOIu9TAD.js";import{o as st}from"./model-benchmark-launcher-Ct3lYXVq.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(Ri.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(zi,{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(Li,{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=$i(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(Gi,{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(Bi,{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(Ki,{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),_=qs(s.id),v=Is(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(Ms,{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:Fi,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=it(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=et(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===Rs||s===zs||s===Ls}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 At=({container:s})=>{const{appState:o,setAppState:d}=Ps(),{confirm:g,confirmDialog:_}=Ss({container:s}),{isMobile:v,viewportWidth:G,viewportHeight:H}=Cs(),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=As((u==null?void 0:u.id)||O),es=m.useDeferredValue(de),ii=Se(O,"image"),is=Se(O,"audio"),si=Se(O,"video"),ti=Se(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(Ce.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(Ce.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(Ce.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=Ts(),us=m.useCallback(i=>{const t=[{key:"clone",label:"克隆",icon:e.jsxDEV($s,{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()||Ae);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)||Ae),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||Ae,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 Ws.update(Ee.getCatalogs().filter(N=>j.has(N.profileId))),await re.update(k),await re.setActivePresetId(U);try{localStorage.setItem(Ce.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=Zs(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(Fs,{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||Fi,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:Ae},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(Bs,{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(Ks,{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&&(st({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(Ri.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:Hs(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(Li,{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(zi,{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(Bi,{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=$i(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(Gi,{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=Qs.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(Ki,{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(Xs,{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:Js.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(Ys,{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(Gs,{},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(Os,{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{Rt as IMAGE_MODEL_GROUPED_OPTIONS,At as SettingsDialog,zt as VIDEO_MODEL_OPTIONS};
@@ -1,4 +1,4 @@
1
- import{hL as h}from"./tool-windows-CtLXQDGF.js";const o="system",A="external",M="auto",R="__external_skill__:",y=[{id:"generate_inspiration_board",name:"灵感图",mcpTool:"generate_inspiration_board",description:`灵感图
1
+ import{aC as L}from"./tool-windows-DOIu9TAD.js";const o="system",A="external",M="auto",R="__external_skill__:",y=[{id:"generate_inspiration_board",name:"灵感图",mcpTool:"generate_inspiration_board",description:`灵感图
2
2
 
3
3
  生成创意灵感拼贴图,将多张图片以不规则分割的方式拼合,以散落的横向布局插入画布,营造富有创意感的视觉效果。
4
4
 
@@ -10,7 +10,7 @@ import{hL as h}from"./tool-windows-CtLXQDGF.js";const o="system",A="external",M=
10
10
 
11
11
  调用 generate_inspiration_board
12
12
  - imageCount: 9
13
- - imageSize: 16x9`,type:o},{id:"generate_grid_image",name:"宫格图",mcpTool:"generate_grid_image",description:`宫格图
13
+ - imageSize: 16x9`,type:o,outputType:"image"},{id:"generate_grid_image",name:"宫格图",mcpTool:"generate_grid_image",description:`宫格图
14
14
 
15
15
  生成整齐排列的宫格图片墙,将多张主题相关图片按网格布局排列在画布上,适合产品展示、表情包制作等场景。
16
16
 
@@ -23,7 +23,7 @@ import{hL as h}from"./tool-windows-CtLXQDGF.js";const o="system",A="external",M=
23
23
  调用 generate_grid_image
24
24
  - rows: 3
25
25
  - cols: 3
26
- - layoutStyle: scattered`,type:o},{id:"generate_flowchart",name:"流程图",description:`流程图
26
+ - layoutStyle: scattered`,type:o,outputType:"image"},{id:"generate_flowchart",name:"流程图",description:`流程图
27
27
 
28
28
  你是一个流程图专家。请根据用户的描述,生成 Mermaid 格式的流程图代码,并调用 insert_mermaid 工具将其插入画布。
29
29
 
@@ -44,17 +44,17 @@ import{hL as h}from"./tool-windows-CtLXQDGF.js";const o="system",A="external",M=
44
44
  **要求:**
45
45
  1. 生成标准 SVG 代码,包含 xmlns 和 viewBox。
46
46
  2. 代码简洁,适合作为图标或 Logo。
47
- 3. 必须调用 insert_svg 工具。`,type:o},{id:"generate_ppt",name:"PPT演示",mcpTool:"generate_ppt",description:`PPT演示
47
+ 3. 必须调用 insert_svg 工具。`,type:o},{id:"generate_ppt",name:"生成PPT大纲",mcpTool:"generate_ppt",description:`生成PPT大纲
48
48
 
49
- 生成 PPT 演示文稿大纲并自动布局。
49
+ 生成 PPT 演示文稿大纲、公共风格提示词和每页整图提示词,并自动创建可编辑的 PPT 页面占位。同一画布只保留一套 PPT;再次生成会替换已有 PPT 页面及其内容。
50
50
 
51
- **使用方式:** 输入 PPT 主题,选择「PPT演示」Skill 后提交。
51
+ **使用方式:** 输入 PPT 主题,选择「生成PPT大纲」Skill 后提交。生成后会展开「PPT 编辑」并切换到大纲视图,确认提示词后再生成图片。
52
52
 
53
53
  **适用场景:** 演示文稿、课件制作、汇报材料。
54
54
 
55
55
  **工作流:**
56
56
 
57
- 调用 generate_ppt`,type:o},{id:"role_chat_pm",name:"产品经理",description:`你是一位拥有 10 年经验的资深产品经理,擅长将模糊的业务需求转化为清晰的产品文档。
57
+ 调用 generate_ppt`,type:o,outputType:"ppt"},{id:"role_chat_pm",name:"产品经理",description:`你是一位拥有 10 年经验的资深产品经理,擅长将模糊的业务需求转化为清晰的产品文档。
58
58
 
59
59
  用户会描述一个功能需求或产品想法,请用以下结构回复:
60
60
 
@@ -63,6 +63,6 @@ import{hL as h}from"./tool-windows-CtLXQDGF.js";const o="system",A="external",M=
63
63
  3. **功能要点**:列出 3-5 个核心功能点
64
64
  4. **验收标准**:列出可量化的验收条件
65
65
 
66
- 请保持简洁专业,避免冗余描述。`,type:o}];function k(m){return y.find(n=>n.id===m)}let u=[];function w(m){u=m}function C(){return u}function G(m){return u.find(n=>n.id===m)}const S=/^(调用|CALL)\s+(\S+)/im,I=/^-\s*([\w]+)\s*:\s*(.+)/,P=/^\d+(\.\d+)?$/,x=/^\s*(#|\/\/)/;class E{static parse(n,i,s="skill",t){if(!n||!n.trim())return null;const c=n.split(`
67
- `),r=[];let e=null,p=0;for(const _ of c){const d=_.trim();if(!d||x.test(d))continue;const f=d.match(S);if(f){e&&r.push(e),p++;const l=f[2].replace(/\\(.)/g,"$1");e={id:`${s}-step-${p}`,mcp:l,args:{},options:{mode:"async"},description:`执行 ${l}`,status:"pending"};continue}if(e){const l=d.match(I);if(l){const L=l[1].trim(),g=l[2].trim().replace(/\\(.)/g,"$1"),T=P.test(g)?Number(g):g;e.args[L]=T}}}if(e&&r.push(e),r.length===0)return null;const a=t||i.input;if(a)for(const _ of r)E.injectUserInput(_,String(a));return{steps:r,parseMethod:"regex"}}static injectUserInput(n,i){var c,r;const s=["topic","theme","prompt","query","text","content"];for(const e of s)if(e in n.args)return;const t=h.getTool(n.mcp);if(t){const e=t.inputSchema.required||[],p=t.inputSchema.properties||{};for(const a of s)if(e.includes(a)&&((c=p[a])==null?void 0:c.type)==="string"){n.args[a]=i;return}for(const a of e)if(((r=p[a])==null?void 0:r.type)==="string"&&!(a in n.args)){n.args[a]=i;return}}n.args.theme=i}static isDSLContent(n){return!n||!n.trim()?!1:n.split(`
68
- `).some(s=>S.test(s.trim()))}static extractToolNamesFromContent(n){if(!n||!n.trim())return[];const i=new Set,s=/(调用|CALL)\s+(\S+)/gim;let t;for(;(t=s.exec(n))!==null;){const e=t[2].replace(/\\(.)/g,"$1");i.add(e)}const c=/\b([a-z][a-z0-9]*(?:_[a-z0-9]+)+)\b/g;for(;(t=c.exec(n))!==null;)i.add(t[1]);const r=/mcp:\s*(\S+)/gi;for(;(t=r.exec(n))!==null;){const e=t[1].replace(/\\(.)/g,"$1");i.add(e)}return Array.from(i)}}export{R as E,A as S,y as a,M as b,G as c,E as d,k as f,C as g,w as r};
66
+ 请保持简洁专业,避免冗余描述。`,type:o}];function k(m){return y.find(n=>n.id===m)}let u=[];function w(m){u=m}function C(){return u}function G(m){return u.find(n=>n.id===m)}const S=/^(调用|CALL)\s+(\S+)/im,I=/^-\s*([\w]+)\s*:\s*(.+)/,h=/^\d+(\.\d+)?$/,x=/^\s*(#|\/\/)/;class T{static parse(n,i,s="skill",t){if(!n||!n.trim())return null;const c=n.split(`
67
+ `),r=[];let e=null,p=0;for(const _ of c){const d=_.trim();if(!d||x.test(d))continue;const f=d.match(S);if(f){e&&r.push(e),p++;const l=f[2].replace(/\\(.)/g,"$1");e={id:`${s}-step-${p}`,mcp:l,args:{},options:{mode:"async"},description:`执行 ${l}`,status:"pending"};continue}if(e){const l=d.match(I);if(l){const E=l[1].trim(),g=l[2].trim().replace(/\\(.)/g,"$1"),P=h.test(g)?Number(g):g;e.args[E]=P}}}if(e&&r.push(e),r.length===0)return null;const a=t||i.input;if(a)for(const _ of r)T.injectUserInput(_,String(a));return{steps:r,parseMethod:"regex"}}static injectUserInput(n,i){var c,r;const s=["topic","theme","prompt","query","text","content"];for(const e of s)if(e in n.args)return;const t=L.getTool(n.mcp);if(t){const e=t.inputSchema.required||[],p=t.inputSchema.properties||{};for(const a of s)if(e.includes(a)&&((c=p[a])==null?void 0:c.type)==="string"){n.args[a]=i;return}for(const a of e)if(((r=p[a])==null?void 0:r.type)==="string"&&!(a in n.args)){n.args[a]=i;return}}n.args.theme=i}static isDSLContent(n){return!n||!n.trim()?!1:n.split(`
68
+ `).some(s=>S.test(s.trim()))}static extractToolNamesFromContent(n){if(!n||!n.trim())return[];const i=new Set,s=/(调用|CALL)\s+(\S+)/gim;let t;for(;(t=s.exec(n))!==null;){const e=t[2].replace(/\\(.)/g,"$1");i.add(e)}const c=/\b([a-z][a-z0-9]*(?:_[a-z0-9]+)+)\b/g;for(;(t=c.exec(n))!==null;)i.add(t[1]);const r=/mcp:\s*(\S+)/gi;for(;(t=r.exec(n))!==null;){const e=t[1].replace(/\\(.)/g,"$1");i.add(e)}return Array.from(i)}}export{R as E,A as S,T as a,y as b,M as c,k as d,G as f,C as g,w as r};
@@ -1 +1 @@
1
- import{s as P,d as N,p as W}from"./styles-6aaf32cf-CGp3i5qu.js";import{g as t,d as H,l as b,e as R,k as T,F as v,A as U}from"./index-VzDb_AHs.js";import{G as C}from"./graph-Bnmq4jgf.js";import{l as F}from"./layout-DKqEkE_W.js";import{l as $}from"./line-C_jmJ6v1.js";import"./tool-windows-CtLXQDGF.js";import"./array-BKyUJesY.js";import"./path-CbwjOpE9.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
+ import{s as P,d as N,p as W}from"./styles-6aaf32cf-b6AdP7fu.js";import{g as t,d as H,l as b,e as R,k as T,t as v,u as U}from"./index-C5eu4uSl.js";import{G as C}from"./graph--nPw8zXQ.js";import{l as F}from"./layout-CVkuImk4.js";import{l as $}from"./line-D3bnG227.js";import"./tool-windows-DOIu9TAD.js";import"./array-BKyUJesY.js";import"./path-CbwjOpE9.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 G=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"+G).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)}G++};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();A(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,A=(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=A(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};
@@ -0,0 +1 @@
1
+ import{s as P,d as N,p as W}from"./styles-6aaf32cf-C3jnr3hV.js";import{g as t,d as H,l as b,e as R,k as T,t as v,u as U}from"./mermaid.core-CwZQb0ud.js";import{G as C}from"./graph-g-2U7grQ.js";import{l as F}from"./layout-WSR0vNPO.js";import{l as $}from"./line-DQuMJveY.js";import"./tool-windows-DOIu9TAD.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 G=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"+G).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)}G++};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();A(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,A=(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=A(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 +1 @@
1
- import{s as J,d as B,p as Q,D as X,a as H,b as Z,S as F,c as I}from"./styles-6aaf32cf-CGp3i5qu.js";import{G as tt}from"./graph-Bnmq4jgf.js";import{l as E,g,d as x,A as et,e as ot,k as w}from"./index-VzDb_AHs.js";import{r as st}from"./index-3862675e-CQLKy6RO.js";import"./layout-DKqEkE_W.js";import"./tool-windows-CtLXQDGF.js";import"./edges-e0da2a9e-CyRAzEMi.js";import"./createText-2e5e7dd3-D7dXlVes.js";import"./index-D1ORCZqJ.js";import"./browser-Dya3c6_X.js";import"./line-C_jmJ6v1.js";import"./array-BKyUJesY.js";import"./path-CbwjOpE9.js";const h="rect",C="rectWithTitle",nt="start",it="end",ct="divider",rt="roundedWithTitle",lt="note",at="noteGroup",_="statediagram",dt="state",Et=`${_}-${dt}`,U="transition",St="note",Tt="note-edge",pt=`${U} ${Tt}`,_t=`${_}-${St}`,ut="cluster",Dt=`${_}-${ut}`,bt="cluster-alt",ft=`${_}-${bt}`,V="parent",m="note",At="state",N="----",ht=`${N}${m}`,M=`${N}${V}`,Y="fill:none",W="fill: #333",z="c",q="text",K="normal";let y={},d=0;const yt=function(t){const n=Object.keys(t);for(const e of n)t[e]},gt=function(t,n){return n.db.extract(n.db.getRootDocV2()),n.db.getClasses()};function $t(t){return t==null?"":t.classes?t.classes.join(" "):""}function R(t="",n=0,e="",i=N){const c=e!==null&&e.length>0?`${i}${e}`:"";return`${At}-${t}${c}-${n}`}const A=(t,n,e,i,c,r)=>{const o=e.id,u=$t(i[o]);if(o!=="root"){let T=h;e.start===!0&&(T=nt),e.start===!1&&(T=it),e.type!==H&&(T=e.type),y[o]||(y[o]={id:o,shape:T,description:w.sanitizeText(o,g()),classes:`${u} ${Et}`});const s=y[o];e.description&&(Array.isArray(s.description)?(s.shape=C,s.description.push(e.description)):s.description.length>0?(s.shape=C,s.description===o?s.description=[e.description]:s.description=[s.description,e.description]):(s.shape=h,s.description=e.description),s.description=w.sanitizeTextOrArray(s.description,g())),s.description.length===1&&s.shape===C&&(s.shape=h),!s.type&&e.doc&&(E.info("Setting cluster for ",o,G(e)),s.type="group",s.dir=G(e),s.shape=e.type===Z?ct:rt,s.classes=s.classes+" "+Dt+" "+(r?ft:""));const p={labelStyle:"",shape:s.shape,labelText:s.description,classes:s.classes,style:"",id:o,dir:s.dir,domId:R(o,d),type:s.type,padding:15};if(p.centerLabel=!0,e.note){const l={labelStyle:"",shape:lt,labelText:e.note.text,classes:_t,style:"",id:o+ht+"-"+d,domId:R(o,d,m),type:s.type,padding:15},a={labelStyle:"",shape:at,labelText:e.note.text,classes:s.classes,style:"",id:o+M,domId:R(o,d,V),type:"group",padding:0};d++;const D=o+M;t.setNode(D,a),t.setNode(l.id,l),t.setNode(o,p),t.setParent(o,D),t.setParent(l.id,D);let S=o,b=l.id;e.note.position==="left of"&&(S=l.id,b=o),t.setEdge(S,b,{arrowhead:"none",arrowType:"",style:Y,labelStyle:"",classes:pt,arrowheadStyle:W,labelpos:z,labelType:q,thickness:K})}else t.setNode(o,p)}n&&n.id!=="root"&&(E.trace("Setting node ",o," to be child of its parent ",n.id),t.setParent(o,n.id)),e.doc&&(E.trace("Adding nodes children "),xt(t,e,e.doc,i,c,!r))},xt=(t,n,e,i,c,r)=>{E.trace("items",e),e.forEach(o=>{switch(o.stmt){case I:A(t,n,o,i,c,r);break;case H:A(t,n,o,i,c,r);break;case F:{A(t,n,o.state1,i,c,r),A(t,n,o.state2,i,c,r);const u={id:"edge"+d,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:Y,labelStyle:"",label:w.sanitizeText(o.description,g()),arrowheadStyle:W,labelpos:z,labelType:q,thickness:K,classes:U};t.setEdge(o.state1.id,o.state2.id,u,d),d++}break}})},G=(t,n=X)=>{let e=n;if(t.doc)for(let i=0;i<t.doc.length;i++){const c=t.doc[i];c.stmt==="dir"&&(e=c.value)}return e},Ct=async function(t,n,e,i){E.info("Drawing state diagram (v2)",n),y={},i.db.getDirection();const{securityLevel:c,state:r}=g(),o=r.nodeSpacing||50,u=r.rankSpacing||50;E.info(i.db.getRootDocV2()),i.db.extract(i.db.getRootDocV2()),E.info(i.db.getRootDocV2());const T=i.db.getStates(),s=new tt({multigraph:!0,compound:!0}).setGraph({rankdir:G(i.db.getRootDocV2()),nodesep:o,ranksep:u,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});A(s,void 0,i.db.getRootDocV2(),T,i.db,!0);let p;c==="sandbox"&&(p=x("#i"+n));const l=c==="sandbox"?x(p.nodes()[0].contentDocument.body):x("body"),a=l.select(`[id="${n}"]`),D=l.select("#"+n+" g");await st(D,s,["barb"],_,n);const S=8;et.insertTitle(a,"statediagramTitleText",r.titleTopMargin,i.db.getDiagramTitle());const b=a.node().getBBox(),L=b.width+S*2,P=b.height+S*2;a.attr("class",_);const O=a.node().getBBox();ot(a,P,L,r.useMaxWidth);const k=`${O.x-S} ${O.y-S} ${L} ${P}`;E.debug(`viewBox ${k}`),a.attr("viewBox",k);const j=document.querySelectorAll('[id="'+n+'"] .edgeLabel .label');for(const $ of j){const v=$.getBBox(),f=document.createElementNS("http://www.w3.org/2000/svg",h);f.setAttribute("rx",0),f.setAttribute("ry",0),f.setAttribute("width",v.width),f.setAttribute("height",v.height),$.insertBefore(f,$.firstChild)}},Rt={setConf:yt,getClasses:gt,draw:Ct},mt={parser:Q,db:B,renderer:Rt,styles:J,init:t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute,B.clear()}};export{mt as diagram};
1
+ import{s as J,d as B,p as Q,D as X,a as H,b as Z,S as F,c as I}from"./styles-6aaf32cf-b6AdP7fu.js";import{G as tt}from"./graph--nPw8zXQ.js";import{l as E,g,d as x,u as et,e as ot,k as w}from"./index-C5eu4uSl.js";import{r as st}from"./index-3862675e-BXwbZ2pz.js";import"./layout-CVkuImk4.js";import"./tool-windows-DOIu9TAD.js";import"./edges-e0da2a9e-Ch6PBwWs.js";import"./createText-2e5e7dd3-CkXS3l7I.js";import"./index-7Q-aiwln.js";import"./browser-DpICcNby.js";import"./line-D3bnG227.js";import"./array-BKyUJesY.js";import"./path-CbwjOpE9.js";const h="rect",C="rectWithTitle",nt="start",it="end",ct="divider",rt="roundedWithTitle",lt="note",at="noteGroup",_="statediagram",dt="state",Et=`${_}-${dt}`,U="transition",St="note",Tt="note-edge",pt=`${U} ${Tt}`,_t=`${_}-${St}`,ut="cluster",Dt=`${_}-${ut}`,bt="cluster-alt",ft=`${_}-${bt}`,V="parent",m="note",At="state",N="----",ht=`${N}${m}`,M=`${N}${V}`,Y="fill:none",W="fill: #333",z="c",q="text",K="normal";let y={},d=0;const yt=function(t){const n=Object.keys(t);for(const e of n)t[e]},gt=function(t,n){return n.db.extract(n.db.getRootDocV2()),n.db.getClasses()};function $t(t){return t==null?"":t.classes?t.classes.join(" "):""}function R(t="",n=0,e="",i=N){const c=e!==null&&e.length>0?`${i}${e}`:"";return`${At}-${t}${c}-${n}`}const A=(t,n,e,i,c,r)=>{const o=e.id,u=$t(i[o]);if(o!=="root"){let T=h;e.start===!0&&(T=nt),e.start===!1&&(T=it),e.type!==H&&(T=e.type),y[o]||(y[o]={id:o,shape:T,description:w.sanitizeText(o,g()),classes:`${u} ${Et}`});const s=y[o];e.description&&(Array.isArray(s.description)?(s.shape=C,s.description.push(e.description)):s.description.length>0?(s.shape=C,s.description===o?s.description=[e.description]:s.description=[s.description,e.description]):(s.shape=h,s.description=e.description),s.description=w.sanitizeTextOrArray(s.description,g())),s.description.length===1&&s.shape===C&&(s.shape=h),!s.type&&e.doc&&(E.info("Setting cluster for ",o,G(e)),s.type="group",s.dir=G(e),s.shape=e.type===Z?ct:rt,s.classes=s.classes+" "+Dt+" "+(r?ft:""));const p={labelStyle:"",shape:s.shape,labelText:s.description,classes:s.classes,style:"",id:o,dir:s.dir,domId:R(o,d),type:s.type,padding:15};if(p.centerLabel=!0,e.note){const l={labelStyle:"",shape:lt,labelText:e.note.text,classes:_t,style:"",id:o+ht+"-"+d,domId:R(o,d,m),type:s.type,padding:15},a={labelStyle:"",shape:at,labelText:e.note.text,classes:s.classes,style:"",id:o+M,domId:R(o,d,V),type:"group",padding:0};d++;const D=o+M;t.setNode(D,a),t.setNode(l.id,l),t.setNode(o,p),t.setParent(o,D),t.setParent(l.id,D);let S=o,b=l.id;e.note.position==="left of"&&(S=l.id,b=o),t.setEdge(S,b,{arrowhead:"none",arrowType:"",style:Y,labelStyle:"",classes:pt,arrowheadStyle:W,labelpos:z,labelType:q,thickness:K})}else t.setNode(o,p)}n&&n.id!=="root"&&(E.trace("Setting node ",o," to be child of its parent ",n.id),t.setParent(o,n.id)),e.doc&&(E.trace("Adding nodes children "),xt(t,e,e.doc,i,c,!r))},xt=(t,n,e,i,c,r)=>{E.trace("items",e),e.forEach(o=>{switch(o.stmt){case I:A(t,n,o,i,c,r);break;case H:A(t,n,o,i,c,r);break;case F:{A(t,n,o.state1,i,c,r),A(t,n,o.state2,i,c,r);const u={id:"edge"+d,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:Y,labelStyle:"",label:w.sanitizeText(o.description,g()),arrowheadStyle:W,labelpos:z,labelType:q,thickness:K,classes:U};t.setEdge(o.state1.id,o.state2.id,u,d),d++}break}})},G=(t,n=X)=>{let e=n;if(t.doc)for(let i=0;i<t.doc.length;i++){const c=t.doc[i];c.stmt==="dir"&&(e=c.value)}return e},Ct=async function(t,n,e,i){E.info("Drawing state diagram (v2)",n),y={},i.db.getDirection();const{securityLevel:c,state:r}=g(),o=r.nodeSpacing||50,u=r.rankSpacing||50;E.info(i.db.getRootDocV2()),i.db.extract(i.db.getRootDocV2()),E.info(i.db.getRootDocV2());const T=i.db.getStates(),s=new tt({multigraph:!0,compound:!0}).setGraph({rankdir:G(i.db.getRootDocV2()),nodesep:o,ranksep:u,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});A(s,void 0,i.db.getRootDocV2(),T,i.db,!0);let p;c==="sandbox"&&(p=x("#i"+n));const l=c==="sandbox"?x(p.nodes()[0].contentDocument.body):x("body"),a=l.select(`[id="${n}"]`),D=l.select("#"+n+" g");await st(D,s,["barb"],_,n);const S=8;et.insertTitle(a,"statediagramTitleText",r.titleTopMargin,i.db.getDiagramTitle());const b=a.node().getBBox(),L=b.width+S*2,P=b.height+S*2;a.attr("class",_);const O=a.node().getBBox();ot(a,P,L,r.useMaxWidth);const k=`${O.x-S} ${O.y-S} ${L} ${P}`;E.debug(`viewBox ${k}`),a.attr("viewBox",k);const j=document.querySelectorAll('[id="'+n+'"] .edgeLabel .label');for(const $ of j){const v=$.getBBox(),f=document.createElementNS("http://www.w3.org/2000/svg",h);f.setAttribute("rx",0),f.setAttribute("ry",0),f.setAttribute("width",v.width),f.setAttribute("height",v.height),$.insertBefore(f,$.firstChild)}},Rt={setConf:yt,getClasses:gt,draw:Ct},mt={parser:Q,db:B,renderer:Rt,styles:J,init:t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute,B.clear()}};export{mt as diagram};
@@ -1 +1 @@
1
- import{s as J,d as B,p as Q,D as X,a as H,b as Z,S as F,c as I}from"./styles-6aaf32cf-aFVlX_lA.js";import{G as tt}from"./graph-BsYIlc-B.js";import{l as E,g,d as x,A as et,e as ot,k as w}from"./mermaid.core-CI-VJEiw.js";import{r as st}from"./index-3862675e-BSxxidV_.js";import"./layout-B1ePJO5V.js";import"./tool-windows-CtLXQDGF.js";import"./clone-fuaXEdc-.js";import"./edges-e0da2a9e-DZalSm7f.js";import"./createText-2e5e7dd3-B8gnT5hD.js";import"./line-DfhCgsyz.js";import"./array-B5oSNiGi.js";import"./path-CY0bYimO.js";const h="rect",C="rectWithTitle",nt="start",it="end",ct="divider",rt="roundedWithTitle",lt="note",at="noteGroup",_="statediagram",dt="state",Et=`${_}-${dt}`,U="transition",St="note",Tt="note-edge",pt=`${U} ${Tt}`,_t=`${_}-${St}`,ut="cluster",Dt=`${_}-${ut}`,bt="cluster-alt",ft=`${_}-${bt}`,V="parent",Y="note",At="state",N="----",ht=`${N}${Y}`,M=`${N}${V}`,m="fill:none",W="fill: #333",z="c",q="text",K="normal";let y={},d=0;const yt=function(t){const n=Object.keys(t);for(const e of n)t[e]},gt=function(t,n){return n.db.extract(n.db.getRootDocV2()),n.db.getClasses()};function $t(t){return t==null?"":t.classes?t.classes.join(" "):""}function R(t="",n=0,e="",i=N){const c=e!==null&&e.length>0?`${i}${e}`:"";return`${At}-${t}${c}-${n}`}const A=(t,n,e,i,c,r)=>{const o=e.id,u=$t(i[o]);if(o!=="root"){let T=h;e.start===!0&&(T=nt),e.start===!1&&(T=it),e.type!==H&&(T=e.type),y[o]||(y[o]={id:o,shape:T,description:w.sanitizeText(o,g()),classes:`${u} ${Et}`});const s=y[o];e.description&&(Array.isArray(s.description)?(s.shape=C,s.description.push(e.description)):s.description.length>0?(s.shape=C,s.description===o?s.description=[e.description]:s.description=[s.description,e.description]):(s.shape=h,s.description=e.description),s.description=w.sanitizeTextOrArray(s.description,g())),s.description.length===1&&s.shape===C&&(s.shape=h),!s.type&&e.doc&&(E.info("Setting cluster for ",o,G(e)),s.type="group",s.dir=G(e),s.shape=e.type===Z?ct:rt,s.classes=s.classes+" "+Dt+" "+(r?ft:""));const p={labelStyle:"",shape:s.shape,labelText:s.description,classes:s.classes,style:"",id:o,dir:s.dir,domId:R(o,d),type:s.type,padding:15};if(p.centerLabel=!0,e.note){const l={labelStyle:"",shape:lt,labelText:e.note.text,classes:_t,style:"",id:o+ht+"-"+d,domId:R(o,d,Y),type:s.type,padding:15},a={labelStyle:"",shape:at,labelText:e.note.text,classes:s.classes,style:"",id:o+M,domId:R(o,d,V),type:"group",padding:0};d++;const D=o+M;t.setNode(D,a),t.setNode(l.id,l),t.setNode(o,p),t.setParent(o,D),t.setParent(l.id,D);let S=o,b=l.id;e.note.position==="left of"&&(S=l.id,b=o),t.setEdge(S,b,{arrowhead:"none",arrowType:"",style:m,labelStyle:"",classes:pt,arrowheadStyle:W,labelpos:z,labelType:q,thickness:K})}else t.setNode(o,p)}n&&n.id!=="root"&&(E.trace("Setting node ",o," to be child of its parent ",n.id),t.setParent(o,n.id)),e.doc&&(E.trace("Adding nodes children "),xt(t,e,e.doc,i,c,!r))},xt=(t,n,e,i,c,r)=>{E.trace("items",e),e.forEach(o=>{switch(o.stmt){case I:A(t,n,o,i,c,r);break;case H:A(t,n,o,i,c,r);break;case F:{A(t,n,o.state1,i,c,r),A(t,n,o.state2,i,c,r);const u={id:"edge"+d,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:m,labelStyle:"",label:w.sanitizeText(o.description,g()),arrowheadStyle:W,labelpos:z,labelType:q,thickness:K,classes:U};t.setEdge(o.state1.id,o.state2.id,u,d),d++}break}})},G=(t,n=X)=>{let e=n;if(t.doc)for(let i=0;i<t.doc.length;i++){const c=t.doc[i];c.stmt==="dir"&&(e=c.value)}return e},Ct=async function(t,n,e,i){E.info("Drawing state diagram (v2)",n),y={},i.db.getDirection();const{securityLevel:c,state:r}=g(),o=r.nodeSpacing||50,u=r.rankSpacing||50;E.info(i.db.getRootDocV2()),i.db.extract(i.db.getRootDocV2()),E.info(i.db.getRootDocV2());const T=i.db.getStates(),s=new tt({multigraph:!0,compound:!0}).setGraph({rankdir:G(i.db.getRootDocV2()),nodesep:o,ranksep:u,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});A(s,void 0,i.db.getRootDocV2(),T,i.db,!0);let p;c==="sandbox"&&(p=x("#i"+n));const l=c==="sandbox"?x(p.nodes()[0].contentDocument.body):x("body"),a=l.select(`[id="${n}"]`),D=l.select("#"+n+" g");await st(D,s,["barb"],_,n);const S=8;et.insertTitle(a,"statediagramTitleText",r.titleTopMargin,i.db.getDiagramTitle());const b=a.node().getBBox(),L=b.width+S*2,P=b.height+S*2;a.attr("class",_);const O=a.node().getBBox();ot(a,P,L,r.useMaxWidth);const k=`${O.x-S} ${O.y-S} ${L} ${P}`;E.debug(`viewBox ${k}`),a.attr("viewBox",k);const j=document.querySelectorAll('[id="'+n+'"] .edgeLabel .label');for(const $ of j){const v=$.getBBox(),f=document.createElementNS("http://www.w3.org/2000/svg",h);f.setAttribute("rx",0),f.setAttribute("ry",0),f.setAttribute("width",v.width),f.setAttribute("height",v.height),$.insertBefore(f,$.firstChild)}},Rt={setConf:yt,getClasses:gt,draw:Ct},Vt={parser:Q,db:B,renderer:Rt,styles:J,init:t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute,B.clear()}};export{Vt as diagram};
1
+ import{s as J,d as B,p as Q,D as X,a as H,b as Z,S as F,c as I}from"./styles-6aaf32cf-C3jnr3hV.js";import{G as tt}from"./graph-g-2U7grQ.js";import{l as E,g,d as x,u as et,e as ot,k as w}from"./mermaid.core-CwZQb0ud.js";import{r as st}from"./index-3862675e-D6Zy95zZ.js";import"./layout-WSR0vNPO.js";import"./tool-windows-DOIu9TAD.js";import"./clone-C4mvvMDb.js";import"./edges-e0da2a9e-CbrF4nbD.js";import"./createText-2e5e7dd3-x5lOIwut.js";import"./line-DQuMJveY.js";import"./array-B5oSNiGi.js";import"./path-CY0bYimO.js";const h="rect",C="rectWithTitle",nt="start",it="end",ct="divider",rt="roundedWithTitle",lt="note",at="noteGroup",_="statediagram",dt="state",Et=`${_}-${dt}`,U="transition",St="note",Tt="note-edge",pt=`${U} ${Tt}`,_t=`${_}-${St}`,ut="cluster",Dt=`${_}-${ut}`,bt="cluster-alt",ft=`${_}-${bt}`,V="parent",Y="note",At="state",N="----",ht=`${N}${Y}`,M=`${N}${V}`,m="fill:none",W="fill: #333",z="c",q="text",K="normal";let y={},d=0;const yt=function(t){const n=Object.keys(t);for(const e of n)t[e]},gt=function(t,n){return n.db.extract(n.db.getRootDocV2()),n.db.getClasses()};function $t(t){return t==null?"":t.classes?t.classes.join(" "):""}function R(t="",n=0,e="",i=N){const c=e!==null&&e.length>0?`${i}${e}`:"";return`${At}-${t}${c}-${n}`}const A=(t,n,e,i,c,r)=>{const o=e.id,u=$t(i[o]);if(o!=="root"){let T=h;e.start===!0&&(T=nt),e.start===!1&&(T=it),e.type!==H&&(T=e.type),y[o]||(y[o]={id:o,shape:T,description:w.sanitizeText(o,g()),classes:`${u} ${Et}`});const s=y[o];e.description&&(Array.isArray(s.description)?(s.shape=C,s.description.push(e.description)):s.description.length>0?(s.shape=C,s.description===o?s.description=[e.description]:s.description=[s.description,e.description]):(s.shape=h,s.description=e.description),s.description=w.sanitizeTextOrArray(s.description,g())),s.description.length===1&&s.shape===C&&(s.shape=h),!s.type&&e.doc&&(E.info("Setting cluster for ",o,G(e)),s.type="group",s.dir=G(e),s.shape=e.type===Z?ct:rt,s.classes=s.classes+" "+Dt+" "+(r?ft:""));const p={labelStyle:"",shape:s.shape,labelText:s.description,classes:s.classes,style:"",id:o,dir:s.dir,domId:R(o,d),type:s.type,padding:15};if(p.centerLabel=!0,e.note){const l={labelStyle:"",shape:lt,labelText:e.note.text,classes:_t,style:"",id:o+ht+"-"+d,domId:R(o,d,Y),type:s.type,padding:15},a={labelStyle:"",shape:at,labelText:e.note.text,classes:s.classes,style:"",id:o+M,domId:R(o,d,V),type:"group",padding:0};d++;const D=o+M;t.setNode(D,a),t.setNode(l.id,l),t.setNode(o,p),t.setParent(o,D),t.setParent(l.id,D);let S=o,b=l.id;e.note.position==="left of"&&(S=l.id,b=o),t.setEdge(S,b,{arrowhead:"none",arrowType:"",style:m,labelStyle:"",classes:pt,arrowheadStyle:W,labelpos:z,labelType:q,thickness:K})}else t.setNode(o,p)}n&&n.id!=="root"&&(E.trace("Setting node ",o," to be child of its parent ",n.id),t.setParent(o,n.id)),e.doc&&(E.trace("Adding nodes children "),xt(t,e,e.doc,i,c,!r))},xt=(t,n,e,i,c,r)=>{E.trace("items",e),e.forEach(o=>{switch(o.stmt){case I:A(t,n,o,i,c,r);break;case H:A(t,n,o,i,c,r);break;case F:{A(t,n,o.state1,i,c,r),A(t,n,o.state2,i,c,r);const u={id:"edge"+d,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:m,labelStyle:"",label:w.sanitizeText(o.description,g()),arrowheadStyle:W,labelpos:z,labelType:q,thickness:K,classes:U};t.setEdge(o.state1.id,o.state2.id,u,d),d++}break}})},G=(t,n=X)=>{let e=n;if(t.doc)for(let i=0;i<t.doc.length;i++){const c=t.doc[i];c.stmt==="dir"&&(e=c.value)}return e},Ct=async function(t,n,e,i){E.info("Drawing state diagram (v2)",n),y={},i.db.getDirection();const{securityLevel:c,state:r}=g(),o=r.nodeSpacing||50,u=r.rankSpacing||50;E.info(i.db.getRootDocV2()),i.db.extract(i.db.getRootDocV2()),E.info(i.db.getRootDocV2());const T=i.db.getStates(),s=new tt({multigraph:!0,compound:!0}).setGraph({rankdir:G(i.db.getRootDocV2()),nodesep:o,ranksep:u,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});A(s,void 0,i.db.getRootDocV2(),T,i.db,!0);let p;c==="sandbox"&&(p=x("#i"+n));const l=c==="sandbox"?x(p.nodes()[0].contentDocument.body):x("body"),a=l.select(`[id="${n}"]`),D=l.select("#"+n+" g");await st(D,s,["barb"],_,n);const S=8;et.insertTitle(a,"statediagramTitleText",r.titleTopMargin,i.db.getDiagramTitle());const b=a.node().getBBox(),L=b.width+S*2,P=b.height+S*2;a.attr("class",_);const O=a.node().getBBox();ot(a,P,L,r.useMaxWidth);const k=`${O.x-S} ${O.y-S} ${L} ${P}`;E.debug(`viewBox ${k}`),a.attr("viewBox",k);const j=document.querySelectorAll('[id="'+n+'"] .edgeLabel .label');for(const $ of j){const v=$.getBBox(),f=document.createElementNS("http://www.w3.org/2000/svg",h);f.setAttribute("rx",0),f.setAttribute("ry",0),f.setAttribute("width",v.width),f.setAttribute("height",v.height),$.insertBefore(f,$.firstChild)}},Rt={setConf:yt,getClasses:gt,draw:Ct},Vt={parser:Q,db:B,renderer:Rt,styles:J,init:t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute,B.clear()}};export{Vt as diagram};