aitu-app 0.6.78 → 0.6.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/README.md +3 -3
  2. package/assets/CanvasAudioPlayer-CSFENxi6.js +2 -0
  3. package/assets/ChatDrawer-CWZQP5R5.css +1 -0
  4. package/assets/ChatDrawer-sVEVW11M.js +11 -0
  5. package/assets/ChatMessagesArea-Cnb94V8-.js +7 -0
  6. package/assets/ChatMessagesArea-PlF5AwzD.css +1 -0
  7. package/assets/DeferredAIInputBar-D99l6sBS.js +8 -0
  8. package/assets/DrawnixDeferredFeatures-78cIu-ev.js +2 -0
  9. package/assets/{KnowledgeBaseContent-DcX5Jofx.js → KnowledgeBaseContent-DZ-1fPZa.js} +10 -10
  10. package/assets/{MVCreator-DllHozYg.js → MVCreator-BV8KDR6E.js} +8 -8
  11. package/assets/ModelBenchmarkWorkbench-DL6r0Z_5.js +2 -0
  12. package/assets/MusicAnalyzer-D9Bpmhym.css +1 -0
  13. package/assets/{MusicAnalyzer-DDeT6g3c.js → MusicAnalyzer-DQtjf36o.js} +2 -2
  14. package/assets/{MusicAnalyzer-CHcQ5t4P.js → MusicAnalyzer-u_5sy56T.js} +1 -1
  15. package/assets/PromptHistoryTool-B-ktaOpK.js +2 -0
  16. package/assets/PromptHistoryTool-BH7hq916.css +1 -0
  17. package/assets/ResizableDivider-BpUFdkte.js +1 -0
  18. package/assets/TaskQueuePanel-BLD1r7_I.js +1 -0
  19. package/assets/{VideoAnalyzer-BSLz1FaI.js → VideoAnalyzer-Bjv9pyDs.js} +2 -2
  20. package/assets/ai-generation-preferences-service-BSpgVCHz.js +1 -0
  21. package/assets/arc-CnA_FoJK.js +1 -0
  22. package/assets/{arc-BU2KKCa_.js → arc-DDvk_-VM.js} +1 -1
  23. package/assets/{batch-image-generation-Bg68r_Ql.js → batch-image-generation-N-lwbjRE.js} +3 -3
  24. package/assets/{blockDiagram-38ab4fdb-BCGEnMME.js → blockDiagram-38ab4fdb-B2G4wjZe.js} +6 -6
  25. package/assets/{blockDiagram-38ab4fdb-CsZR5uC5.js → blockDiagram-38ab4fdb-DBkZWrKk.js} +1 -1
  26. package/assets/{browser-DpICcNby.js → browser-ZXTF4AKv.js} +1 -1
  27. package/assets/{c4Diagram-3d4e48cf-9fuiuFdV.js → c4Diagram-3d4e48cf-BFg-wccg.js} +1 -1
  28. package/assets/{c4Diagram-3d4e48cf-WM4wd_GR.js → c4Diagram-3d4e48cf-CmyNnfip.js} +1 -1
  29. package/assets/{canvas-insertion-CdUQF7IV.js → canvas-insertion-CKIoVZ9a.js} +1 -1
  30. package/assets/channel-BQh3J7kz.js +1 -0
  31. package/assets/channel-CPsF_uSp.js +1 -0
  32. package/assets/{classDiagram-70f12bd4-DcYDedz1.js → classDiagram-70f12bd4-BoP-e23u.js} +2 -2
  33. package/assets/{classDiagram-70f12bd4-CBVHTwQu.js → classDiagram-70f12bd4-UTHJc2XA.js} +1 -1
  34. package/assets/classDiagram-v2-f2320105-BeBc2H-D.js +2 -0
  35. package/assets/{classDiagram-v2-f2320105-jpCwaHEd.js → classDiagram-v2-f2320105-Bjwz5ljW.js} +1 -1
  36. package/assets/{clipper-jvd5rF5a.js → clipper-NoHaeWV4.js} +1 -1
  37. package/assets/clone-CA2KqVCK.js +1 -0
  38. package/assets/createText-2e5e7dd3-Bsu7vT-L.js +8 -0
  39. package/assets/{createText-2e5e7dd3-x5lOIwut.js → createText-2e5e7dd3-DrWUfa-s.js} +1 -1
  40. package/assets/{edges-e0da2a9e-CbrF4nbD.js → edges-e0da2a9e-B9sYOHRt.js} +1 -1
  41. package/assets/{edges-e0da2a9e-Ch6PBwWs.js → edges-e0da2a9e-DX4IQMED.js} +1 -1
  42. package/assets/{erDiagram-9861fffd-DSlNVuAZ.js → erDiagram-9861fffd-B-LfsIMf.js} +1 -1
  43. package/assets/{erDiagram-9861fffd-Bq07elcI.js → erDiagram-9861fffd-DPdud_LA.js} +1 -1
  44. package/assets/{flowDb-956e92f1-Ti5YC4Vv.js → flowDb-956e92f1-C3xKlizM.js} +1 -1
  45. package/assets/{flowDb-956e92f1-BqPCJlZp.js → flowDb-956e92f1-Ck5oiEta.js} +1 -1
  46. package/assets/{flowDiagram-66a62f08-CPDuG3rY.js → flowDiagram-66a62f08-Bkt2NoHM.js} +4 -4
  47. package/assets/{flowDiagram-66a62f08-D3GSABFi.js → flowDiagram-66a62f08-CJnxo6dI.js} +1 -1
  48. package/assets/flowDiagram-v2-96b9c2cf-MnwxRDMO.js +1 -0
  49. package/assets/flowDiagram-v2-96b9c2cf-U7nNPvdl.js +1 -0
  50. package/assets/{flowchart-elk-definition-4a651766-BH09NeLA.js → flowchart-elk-definition-4a651766-2XkrsdKI.js} +2 -2
  51. package/assets/{flowchart-elk-definition-4a651766-BLaLPCDV.js → flowchart-elk-definition-4a651766-ec8y1a8S.js} +1 -1
  52. package/assets/{ganttDiagram-c361ad54-DL9ZeaEc.js → ganttDiagram-c361ad54-1TA0mZY_.js} +3 -3
  53. package/assets/{ganttDiagram-c361ad54-Sp9M1KHP.js → ganttDiagram-c361ad54-D-OrVtXV.js} +3 -3
  54. package/assets/{gitGraphDiagram-72cf32ee-BWwmRKo-.js → gitGraphDiagram-72cf32ee-Blt3RsBD.js} +1 -1
  55. package/assets/{gitGraphDiagram-72cf32ee-BSf1fsDV.js → gitGraphDiagram-72cf32ee-CKf6xgO1.js} +1 -1
  56. package/assets/{graph-g-2U7grQ.js → graph-CUYgHJmb.js} +1 -1
  57. package/assets/{graph--nPw8zXQ.js → graph-WeSRtsZO.js} +1 -1
  58. package/assets/{index-ZrVeQUWo.js → index--MqiaN5t.js} +1 -1
  59. package/assets/{index-C5eu4uSl.js → index-0b_TeH8L.js} +11 -11
  60. package/assets/{index-3862675e-BXwbZ2pz.js → index-3862675e-C2ipEQC8.js} +1 -1
  61. package/assets/{index-3862675e-D6Zy95zZ.js → index-3862675e-CeX6VlsU.js} +1 -1
  62. package/assets/{index-CLJUfzvO.js → index-B-J0JJak.js} +1 -1
  63. package/assets/{index-TkfyNewx.js → index-B7Hj7g41.js} +1 -1
  64. package/assets/{index-eZfwJ9bV.js → index-BS_v5cOh.js} +1 -1
  65. package/assets/index-Btk31p7r.js +1 -0
  66. package/assets/{index-DH12_HTj.js → index-C-Samsu3.js} +2 -2
  67. package/assets/index-C-llNX01.js +1 -0
  68. package/assets/index-C8c9icsH.js +2 -0
  69. package/assets/{index-D7b5fX1d.js → index-CAn2jfNg.js} +1 -1
  70. package/assets/{index-Dz8sghkK.js → index-CK2zt94U.js} +1 -1
  71. package/assets/{index-CfgvFFx3.js → index-CP51k4n6.js} +17 -17
  72. package/assets/{index-DI0OV6F8.js → index-CXBhIy30.js} +1 -1
  73. package/assets/index-C_Mj1wbj.js +2 -0
  74. package/assets/{index-BwSnJN93.js → index-CbfE0MBd.js} +1 -1
  75. package/assets/{index-C3qD42ws.js → index-CjeDxq0c.js} +1 -1
  76. package/assets/{index-DqMndQiP.js → index-Ct7OFnWK.js} +1 -1
  77. package/assets/{index-BaCHOxhI.js → index-CxxUIkx1.js} +1 -1
  78. package/assets/{index-B2dttXd7.js → index-D2Kc-3MO.js} +1 -1
  79. package/assets/{index-Bq8mPedC.js → index-DK0XEByD.js} +1 -1
  80. package/assets/{index-DllL1sx1.js → index-DQcV2DYj.js} +1 -1
  81. package/assets/{index-BP77pG9S.js → index-DSKRBuhn.js} +73 -73
  82. package/assets/{index-BXzGHPXz.js → index-DXqL8NRE.js} +2 -2
  83. package/assets/{index-B7V7-Vxz.js → index-DcLrRIlS.js} +1 -1
  84. package/assets/{index-D4pIkh3S.js → index-DdA-dF0D.js} +1 -1
  85. package/assets/{index-QkP3EC02.js → index-DdxTnVj5.js} +1 -1
  86. package/assets/{index-CmyOpFTN.js → index-DmrnShhc.js} +1 -1
  87. package/assets/{index-Bti3m-iW.js → index-QO0uGVDP.js} +1 -1
  88. package/assets/{index-BPR_DyGD.js → index-aIKXDB1M.js} +1 -1
  89. package/assets/{index-DIiIUyb-.js → index-n6JhNACm.js} +1 -1
  90. package/assets/{index-BWrcsh8u.js → index-qbS_W7PW.js} +1 -1
  91. package/assets/index-v7iKPBEu.css +1 -0
  92. package/assets/{infoDiagram-f8f76790-DpFqCCNv.js → infoDiagram-f8f76790-DEWQ3NXc.js} +1 -1
  93. package/assets/{infoDiagram-f8f76790-G2JpJJP7.js → infoDiagram-f8f76790-u_qjHFCm.js} +3 -3
  94. package/assets/{journeyDiagram-49397b02-DLLTobRM.js → journeyDiagram-49397b02-C8A30CBr.js} +1 -1
  95. package/assets/{journeyDiagram-49397b02-BdESGMrv.js → journeyDiagram-49397b02-hQJfqZih.js} +1 -1
  96. package/assets/{layout-WSR0vNPO.js → layout-CFKTKeqQ.js} +1 -1
  97. package/assets/{layout-CVkuImk4.js → layout-DvRyabpG.js} +1 -1
  98. package/assets/{line-D3bnG227.js → line-C72F34Po.js} +1 -1
  99. package/assets/{line-DQuMJveY.js → line-W5R41tQ1.js} +1 -1
  100. package/assets/{linear-CciP-97N.js → linear-7FXykgHM.js} +1 -1
  101. package/assets/{linear-Z6vFvuwc.js → linear-CVyOPUvz.js} +1 -1
  102. package/assets/main-BO0HWBB1.js +42 -0
  103. package/assets/{main-8DNjLY6L.css → main-DAuE07rf.css} +1 -1
  104. package/assets/{mermaid.core-CwZQb0ud.js → mermaid.core-2VcXhn43.js} +4 -4
  105. package/assets/{mindmap-definition-fc14e90a-BnJ8OOTI.js → mindmap-definition-fc14e90a-CcVXKGg4.js} +1 -1
  106. package/assets/{mindmap-definition-fc14e90a-CxQMydCW.js → mindmap-definition-fc14e90a-DRDYXe84.js} +2 -2
  107. package/assets/model-benchmark-launcher-C2qBiDlM.js +1 -0
  108. package/assets/{photo-wall-splitter-BZ88W5Zy.js → photo-wall-splitter-CFntSOdS.js} +1 -1
  109. package/assets/{pieDiagram-8a3498a8-BSDdkTeu.js → pieDiagram-8a3498a8-Be9dl9pU.js} +1 -1
  110. package/assets/{pieDiagram-8a3498a8-D6VtAoja.js → pieDiagram-8a3498a8-DXZOJYBv.js} +5 -5
  111. package/assets/ppt-generation-B5fKT_by.js +48 -0
  112. package/assets/{quadrantDiagram-120e2f19-C8k2xuBd.js → quadrantDiagram-120e2f19-DoU7aQSp.js} +3 -3
  113. package/assets/{quadrantDiagram-120e2f19-BbFV0VXY.js → quadrantDiagram-120e2f19-l5K9mx26.js} +1 -1
  114. package/assets/{requirementDiagram-deff3bca-C3xMdzJV.js → requirementDiagram-deff3bca-DN_87Wxe.js} +1 -1
  115. package/assets/{requirementDiagram-deff3bca-CpjqKjYZ.js → requirementDiagram-deff3bca-DOooq7kx.js} +1 -1
  116. package/assets/retry-image-BmIVuAVu.js +6 -0
  117. package/assets/{sankeyDiagram-04a897e0-Bjvig9bW.js → sankeyDiagram-04a897e0-BB33nO6_.js} +1 -1
  118. package/assets/{sankeyDiagram-04a897e0-BBJJgsFv.js → sankeyDiagram-04a897e0-CCa0hwml.js} +2 -2
  119. package/assets/{sequenceDiagram-704730f1-PFC_9IFI.js → sequenceDiagram-704730f1-CNhXZiix.js} +1 -1
  120. package/assets/{sequenceDiagram-704730f1-DX1MmBN_.js → sequenceDiagram-704730f1-ZqQ1QrY-.js} +1 -1
  121. package/assets/settings-dialog-BFuWTeQR.js +1 -0
  122. package/assets/{skill-dsl-parser-syNWYxFu.js → skill-dsl-parser-b-aB3P5u.js} +1 -1
  123. package/assets/{stateDiagram-587899a1-Dc3mI_B_.js → stateDiagram-587899a1-BBlOIJr7.js} +1 -1
  124. package/assets/{stateDiagram-587899a1-SFMUVAam.js → stateDiagram-587899a1-BhomZ0AN.js} +1 -1
  125. package/assets/{stateDiagram-v2-d93cdb3a-P4Yt2p_j.js → stateDiagram-v2-d93cdb3a-BpJsgMa0.js} +1 -1
  126. package/assets/stateDiagram-v2-d93cdb3a-CuOn9du2.js +1 -0
  127. package/assets/{styles-6aaf32cf-C3jnr3hV.js → styles-6aaf32cf-C2WEewoA.js} +1 -1
  128. package/assets/{styles-6aaf32cf-b6AdP7fu.js → styles-6aaf32cf-CTtf8moq.js} +1 -1
  129. package/assets/{styles-9a916d00-BUiD9iBe.js → styles-9a916d00-44Xi2-39.js} +1 -1
  130. package/assets/{styles-9a916d00-ii0XTdIm.js → styles-9a916d00-DUU3VgNe.js} +4 -4
  131. package/assets/{styles-c10674c1-DbTSpy3W.js → styles-c10674c1--AhWSGg7.js} +1 -1
  132. package/assets/styles-c10674c1-DS-wE3tK.js +116 -0
  133. package/assets/{svgDrawCommon-08f97a94-D4gIV05W.js → svgDrawCommon-08f97a94-CXcvtSSy.js} +1 -1
  134. package/assets/{svgDrawCommon-08f97a94-BK6lD4D6.js → svgDrawCommon-08f97a94-Dyqh4V2s.js} +1 -1
  135. package/assets/{timeline-definition-85554ec2-Bl2y548G.js → timeline-definition-85554ec2-k788753O.js} +1 -1
  136. package/assets/{timeline-definition-85554ec2-CWKg_JxG.js → timeline-definition-85554ec2-sw6-UuBe.js} +1 -1
  137. package/assets/tool-windows-BEnZdJqF.js +2948 -0
  138. package/assets/{tool-windows-CUNbW1Tz.css → tool-windows-D61Le6TE.css} +1 -1
  139. package/assets/ttd-dialog-BJzXAZ0l.js +99 -0
  140. package/assets/useCharacters-DRBoWvvj.css +1 -0
  141. package/assets/useCharacters-gsV4K8Hn.js +2 -0
  142. package/assets/{useWorkflowSubmission-BizuDmuw.js → useWorkflowSubmission-XRR21P6Y.js} +10 -10
  143. package/assets/{video-analyze-6v3Y-rUE.js → video-analyze-CpbnpSiI.js} +1 -1
  144. package/assets/{video-generation-DnmTlWnm.js → video-generation-BXhS7x-a.js} +2 -2
  145. package/assets/video-recovery-service-6G2lkWcu.js +1 -0
  146. package/assets/workflow-generation-utils-CYxtSHl0.js +3 -0
  147. package/assets/workflow-submission-service-DygSzydV.js +4 -0
  148. package/assets/{xychartDiagram-e933f94c-CJX9_9WF.js → xychartDiagram-e933f94c-CvTTDwPb.js} +3 -3
  149. package/assets/{xychartDiagram-e933f94c-Cep8CQEH.js → xychartDiagram-e933f94c-Ga9zi9ha.js} +1 -1
  150. package/changelog.json +45 -0
  151. package/idle-prefetch-manifest.json +310 -306
  152. package/manifest.json +3 -3
  153. package/package.json +1 -1
  154. package/precache-manifest.json +10 -10
  155. package/sitemap.xml +37 -0
  156. package/sw-debug/app.js +269 -156
  157. package/sw-debug/backup-restore.js +235 -103
  158. package/sw-debug/crypto-helper.js +116 -120
  159. package/sw-debug/duplex-client.js +33 -19
  160. package/sw-debug/gist-management.js +938 -655
  161. package/sw-debug/sw-communication.js +87 -50
  162. package/sw.js +5 -5
  163. package/version.json +7 -17
  164. package/assets/CanvasAudioPlayer-DutgwdiU.js +0 -2
  165. package/assets/ChatDrawer-0jNvKIoI.css +0 -1
  166. package/assets/ChatDrawer-E6Fog16I.js +0 -11
  167. package/assets/ChatMessagesArea-Bgwiz_XP.js +0 -250
  168. package/assets/ChatMessagesArea-DyR_wHFQ.css +0 -1
  169. package/assets/DeferredAIInputBar-CPkD8Cv9.js +0 -8
  170. package/assets/DrawnixDeferredFeatures-Cul76-88.js +0 -2
  171. package/assets/ModelBenchmarkWorkbench-Dv9SNYTi.js +0 -2
  172. package/assets/MusicAnalyzer-DhtRGpAp.css +0 -1
  173. package/assets/ResizableDivider-CaG9JQbJ.js +0 -1
  174. package/assets/TaskQueuePanel-BNhNzGp5.js +0 -1
  175. package/assets/ai-generation-preferences-service-BF7QkuJp.js +0 -1
  176. package/assets/arc-DmGoDCEL.js +0 -1
  177. package/assets/channel-CZjE-WNp.js +0 -1
  178. package/assets/channel-SXZD6bG3.js +0 -1
  179. package/assets/classDiagram-v2-f2320105-CsxWGkSy.js +0 -2
  180. package/assets/clone-C4mvvMDb.js +0 -1
  181. package/assets/createText-2e5e7dd3-CkXS3l7I.js +0 -5
  182. package/assets/flowDiagram-v2-96b9c2cf-BCcJ-cre.js +0 -1
  183. package/assets/flowDiagram-v2-96b9c2cf-DCVaFEgV.js +0 -1
  184. package/assets/index-3eqA7Bag.js +0 -1
  185. package/assets/index-7Q-aiwln.js +0 -4
  186. package/assets/index-B1XP5g7P.css +0 -1
  187. package/assets/index-BHPTfCZM.js +0 -1
  188. package/assets/index-BqHZCcen.js +0 -2
  189. package/assets/index-DcZrElEK.js +0 -2
  190. package/assets/index-gQ7LgvSv.js +0 -12
  191. package/assets/main-BFEkxCOK.js +0 -56
  192. package/assets/model-benchmark-launcher-Ct3lYXVq.js +0 -1
  193. package/assets/ppt-generation-FzjP_rp0.js +0 -48
  194. package/assets/settings-dialog-CQM4v791.js +0 -1
  195. package/assets/stateDiagram-v2-d93cdb3a-DmnBjHpC.js +0 -1
  196. package/assets/styles-c10674c1-Bt89Yy8Q.js +0 -116
  197. package/assets/tool-windows-DOIu9TAD.js +0 -2975
  198. package/assets/ttd-dialog-DI4kQSg8.js +0 -99
  199. package/assets/useCharacters-Chv4Ky7x.js +0 -7
  200. package/assets/useCharacters-OrDbG69o.css +0 -1
  201. package/assets/video-recovery-service-BeRoh0s2.js +0 -1
  202. package/assets/workflow-generation-utils-me381Cax.js +0 -3
  203. package/assets/workflow-submission-service-YOpo7g37.js +0 -4
@@ -0,0 +1,8 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./tool-windows-D61Le6TE.css"])))=>i.map(i=>d[i]);
2
+ import{br as Se,am as Sn,g1 as bs,aF as da,Y as c,bS as Zt,y as Be,h2 as Xn,a4 as en,$ as m,g_ as ua,h3 as ma,X as xs,bB as Et,T as pa,h4 as fa,h5 as ha,h6 as ga,gm as gn,gj as bn,H as ba,Z as xa,_ as Oi,h7 as wa,D as ya,gl as Ia,dp as Ke,h8 as Fn,q as Mn,d_ as Jn,k as Mt,ds as Ct,du as ht,gE as _n,d9 as ni,da as ii,h9 as qi,cQ as si,db as ai,dc as Cn,ha as ws,au as ys,hb as Na,hc as ka,de as ri,bV as va,gb as Sa,hd as _a,c_ as Da,he as Ea,fV as Ma,bN as Ca,bm as oi,ay as Ta,a$ as ja,gD as Aa,gR as Pa,d7 as Ua,R as Dn,hf as Qn,aJ as Is,bn as xn,bp as Va,hg as mt,hh as Hn,bv as gt,bt as St,bw as pt,d8 as Wi,dq as Li,dx as Ra,dH as Ve,hi as Gn,Q as Ba,hj as Fi,aW as tt,at as Hi,ax as za,dr as Oa,bD as qa,bE as Wa,hk as Ns,g as $n,hl as Gi,S as ks,hm as $i,s as Ki,dn as Yi,dm as Zi,aE as Xi,cw as wn,as as La,ar as Fa,bJ as yn,gU as Ha,eJ as Ga,az as $a,bP as Ka,hn as Ya,ho as Ji,hp as Za}from"./tool-windows-BEnZdJqF.js";import{p as Xa,a as Ja,b as Qa,u as er,c as tr,d as In,e as _t,W as nr}from"./useWorkflowSubmission-XRR21P6Y.js";import{m as ir,u as sr,b as ar,i as rr,c as or}from"./main-BO0HWBB1.js";import{u as cr,S as lr,i as dr}from"./index-CP51k4n6.js";import{u as ur,r as mr,g as pr,a as fr,b as hr,l as gr,c as Kn,s as br,d as xr,P as wr}from"./ai-generation-preferences-service-BSpgVCHz.js";import{setCanvasBoard as Qi}from"./canvas-insertion-CKIoVZ9a.js";import{s as es}from"./board-utils-CpAtoKn2.js";import{s as ts}from"./workflow-submission-service-DygSzydV.js";import{r as vs,S as yr,b as ei,c as it,d as Yn,f as ns}from"./skill-dsl-parser-b-aB3P5u.js";import"./video-generation-BXhS7x-a.js";import"./index-D2Kc-3MO.js";import"./ppt-generation-B5fKT_by.js";import"./video-analyze-CpbnpSiI.js";const _e="external-skill-packages";let ci=[],En=[],ti=!1;async function Ye(){var t,n;if(!ti){try{let e=await Se.get(_e),s=null;try{s=await Ir()}catch(r){console.warn("[ExternalSkillService] 预构建 bundle 加载失败(非致命):",r)}if(!(e&&Array.isArray(e)&&e.length>0))s&&s.skills&&s.skills.length>0&&(e=[{name:s.name||"baoyu-skills",skills:s.skills,metadata:s.metadata}],await Se.set(_e,e));else if(s&&s.skills&&s.skills.length>0){const r=(t=s.metadata)==null?void 0:t.bundleVersion,a=e.find(u=>u.name===(s.name||"baoyu-skills")),f=(n=a==null?void 0:a.metadata)==null?void 0:n.bundleVersion;if(r&&r!==f){const u={name:s.name||"baoyu-skills",skills:s.skills,metadata:s.metadata},d=e.filter(y=>y.name!==u.name);e=[u,...d],await Se.set(_e,e)}else if(!r&&!f){const u={name:s.name||"baoyu-skills",skills:s.skills,metadata:s.metadata},d=e.filter(y=>y.name!==u.name);e=[u,...d],await Se.set(_e,e)}}e&&Array.isArray(e)&&await Tn(e)}catch(e){console.error("[ExternalSkillService] 初始化失败:",e)}ti=!0}}async function Ir(){try{const t=await Sn(()=>import("./external-skills-BcV6ATYi.js"),[],import.meta.url);return t.default||t}catch{return null}}async function Nr(){return await Ye(),[...ci]}async function li(t){await Ye();const n=await Se.get(_e),e=n&&Array.isArray(n)?[...n]:[],s=e.findIndex(o=>o.name===t.name);s>=0?e[s]=t:e.push(t),await Se.set(_e,e),await Tn(e)}async function kr(t){await Ye();const n=await Se.get(_e);if(!n||!Array.isArray(n))return;const e=n.filter(s=>s.name!==t);await Se.set(_e,e),await Tn(e)}async function vr(t){await Ye();const n=await Se.get(_e);if(!n)return[];const e=n.find(s=>s.name===t);return(e==null?void 0:e.skills)??[]}async function Sr(){return await Ye(),[...En]}async function _r(){await Ye();const t=await Se.get(_e);return t?t.flatMap(n=>n.skills):[]}async function Ss(t){await Ye();const n=await Se.get(_e);if(!n)return null;for(const e of n){const s=e.skills.find(o=>o.id===t);if(s)return s}return null}async function Dr(t){const n=await Ss(t);return(n==null?void 0:n.content)??null}async function Er(t,n){var S;const s=await(await Sn(async()=>{const{default:x}=await import("./tool-windows-BEnZdJqF.js").then(b=>b.j);return{default:x}},__vite__mapDeps([0]),import.meta.url)).default.loadAsync(t);let o=null;const r=((S=s.file(/\.claude-plugin\/marketplace\.json$/))==null?void 0:S[0])||s.file("marketplace.json");if(r){const x=await r.async("text");o=Ja(x)}const a=n||(o==null?void 0:o.name)||t.name.replace(/\.zip$/i,""),f=[],u=/(?:^|\/)(skills\/([^/]+)\/SKILL\.md)$/;for(const[x,b]of Object.entries(s.files)){if(b.dir)continue;const h=x.match(u);if(h){const j=h[2],I=await b.async("text"),D=new Map,M=x.substring(0,x.lastIndexOf("SKILL.md"));for(const[E,g]of Object.entries(s.files))if(!g.dir&&E.startsWith(M)&&E!==x){const A=E.substring(M.length);if(A.startsWith("references/")||A.startsWith("prompts/")){const B=await g.async("text");D.set(A,B)}}f.push({dirName:j,skillMdContent:I,references:D.size>0?D:void 0})}}if(f.length===0)throw new Error("ZIP 文件中未找到有效的 Skill(预期路径: skills/*/SKILL.md)");const d=Qa(f,a,o),y={name:a,url:void 0,skills:d,metadata:o==null?void 0:o.metadata};return await li(y),y}async function Mr(t,n="custom"){const e=Xa(t);if(!e)throw new Error("无法解析 SKILL.md 内容,请检查格式是否正确(需包含 YAML front matter)");const s={id:`${n}:${e.name}`,name:e.name,description:e.description,type:yr,content:e.body,source:n};await Ye();const o=await Se.get(_e),r=o&&Array.isArray(o)?[...o]:[];let a=r.find(u=>u.name===n);a||(a={name:n,skills:[],metadata:{description:"手动导入的 Skill"}},r.push(a));const f=a.skills.findIndex(u=>u.id===s.id);return f>=0?a.skills[f]=s:a.skills.push(s),await Se.set(_e,r),await Tn(r),s}async function Cr(t){await li(t)}async function Tn(t){ci=t.map(e=>({name:e.name,url:e.url,skillCount:e.skills.length,metadata:e.metadata})),En=[];for(const e of t)for(const s of e.skills)En.push({id:s.id,name:s.name,description:s.description,source:s.source,sourceUrl:s.sourceUrl,category:s.category,outputType:s.outputType});const n=t.flatMap(e=>e.skills);vs(n)}async function Tr(){await Se.remove(_e),ci=[],En=[],vs([]),ti=!1}const di={initialize:Ye,getPackages:Nr,addPackage:li,removePackage:kr,getSkillsByPackage:vr,getAllExternalSkillsMeta:Sr,getAllExternalSkills:_r,getSkillById:Ss,getSkillContentById:Dr,importFromZip:Er,importFromPastedContent:Mr,importFromBundle:Cr,clearAll:Tr},jr=({generationType:t,onSelectPrompt:n,language:e,extraActions:s,onBeforeOpenMyPrompts:o})=>{const{history:r,removeHistory:a,refreshHistory:f}=bs({deduplicateWithPresets:!1,modelTypeFilter:t==="image"||t==="video"?void 0:t}),{imageHistory:u,videoHistory:d}=ur(),{confirm:y,confirmDialog:S}=da(),[x,b]=c.useState(!1),[,h]=c.useState(0),j=c.useRef(null),I=c.useRef(null),D=c.useRef(null),M=e==="zh"?"我的提示词":"My Prompts",E=t==="image"||t==="video"?mr({generationType:t,language:e,promptContents:pr(t,e,t==="image"?u:d),imageHistory:u,videoHistory:d}):fr({generationType:t,language:e,aiInputHistory:r,imageHistory:u,videoHistory:d});c.useEffect(()=>Zt.subscribeChanges(()=>{f(),h(q=>q+1)}),[f]),c.useEffect(()=>()=>{I.current&&clearTimeout(I.current),D.current&&clearTimeout(D.current)},[]);const g=c.useCallback(()=>{D.current&&(clearTimeout(D.current),D.current=null),I.current=setTimeout(()=>{f(),h(q=>q+1),x||Be.trackPromptAction({action:"open_panel",surface:"ai_input_prompt_popover",promptType:t,itemCount:E.length}),b(!0)},150)},[t,x,E.length,f]),A=c.useCallback(()=>{I.current&&(clearTimeout(I.current),I.current=null),D.current=setTimeout(()=>{b(!1)},200)},[]),B=c.useCallback(q=>{n({content:q.content,modelType:q.modelType,scene:q.scene}),b(!1)},[n]),Q=c.useCallback(async q=>{const N=E.find(W=>W.id===q);!N||!await y({title:e==="zh"?"确认删除提示词":"Delete Prompt",description:e==="zh"?"确定要删除这条提示词吗?此操作不可撤销。":"Are you sure you want to delete this prompt? This action cannot be undone.",confirmText:e==="zh"?"删除":"Delete",cancelText:e==="zh"?"取消":"Cancel",danger:!0})||(Zt.deletePrompt(t,N.content),N.historyId&&t!=="image"&&t!=="video"?a(N.historyId):h(W=>W+1))},[y,t,e,E,a]),ee=c.useCallback(q=>{const N=E.find(P=>P.id===q);N&&(Zt.isPinned(t,N.content)?Zt.unpinPrompt(t,N.content):Zt.pinPrompt(t,N.content),h(P=>P+1))},[t,E]),ie=c.useCallback(()=>{const q=Xn.find(W=>W.id==="prompt-history");if(!q){Be.trackPromptAction({action:"open_tool",surface:"ai_input_prompt_popover",promptType:t,status:"failed",metadata:{tool_id:"prompt-history",reason:"tool_not_found"}});return}o==null||o();const N=en.getToolState("prompt-history");console.info("[PromptHistoryPopover] open my prompts",{generationType:t,beforeStatus:N==null?void 0:N.status,beforeInstanceId:N==null?void 0:N.instanceId,beforeIsLauncher:N==null?void 0:N.isLauncher,beforeIsPinned:N==null?void 0:N.isPinned}),Be.trackPromptAction({action:"open_tool",surface:"ai_input_prompt_popover",promptType:t,status:"success",metadata:{tool_id:q.id}}),b(!1),en.openTool(q,{componentProps:{initialCategory:t}});const P=en.getToolState("prompt-history");console.info("[PromptHistoryPopover] requested my prompts open",{generationType:t,afterStatus:P==null?void 0:P.status,afterInstanceId:P==null?void 0:P.instanceId,afterIsLauncher:P==null?void 0:P.isLauncher,afterIsPinned:P==null?void 0:P.isPinned})},[t,o]);return m.jsxDEV("div",{ref:j,className:"prompt-history-popover",children:[m.jsxDEV("div",{className:"prompt-history-popover__actions",children:[m.jsxDEV("button",{className:"prompt-history-popover__trigger",title:M,"data-track":"ai_input_click_history",onMouseEnter:g,onMouseLeave:A,children:m.jsxDEV(ua,{size:18},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/PromptHistoryPopover.tsx",lineNumber:276,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/PromptHistoryPopover.tsx",lineNumber:269,columnNumber:9},void 0),s]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/PromptHistoryPopover.tsx",lineNumber:268,columnNumber:7},void 0),x&&m.jsxDEV("div",{className:"prompt-history-popover__panel-wrapper",onMouseEnter:g,onMouseLeave:A,children:m.jsxDEV(ma,{title:M,items:E,onSelect:B,onTogglePin:ee,onDelete:Q,onTitleClick:ie,language:e,showCount:!0,analyticsSurface:"ai_input_prompt_popover",analyticsPromptType:t},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/PromptHistoryPopover.tsx",lineNumber:288,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/PromptHistoryPopover.tsx",lineNumber:283,columnNumber:9},void 0),S]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/PromptHistoryPopover.tsx",lineNumber:267,columnNumber:5},void 0)};function Ar(t){var n;return!!((n=t.params)!=null&&n.longVideoMeta)}function Pr(t){var n;return((n=t.params)==null?void 0:n.longVideoMeta)||null}class Tt{constructor(){this.isInitialized=!1,this.batches=new Map,this.initTimestamp=0}static getInstance(){return Tt.instance||(Tt.instance=new Tt),Tt.instance}initialize(){this.isInitialized||(this.isInitialized=!0,this.initTimestamp=Date.now(),xs.observeTaskUpdates().subscribe(n=>{if(n.type==="taskUpdated"&&n.task.status===Et.COMPLETED&&n.task.type===pa.VIDEO&&Ar(n.task)){if((n.task.completedAt||0)<this.initTimestamp)return;this.handleSegmentCompleted(n.task).catch(s=>{console.error("[LongVideoChain] Error handling completed segment:",s)})}}))}async handleSegmentCompleted(n){var d;const e=Pr(n);if(!e)return;const{segmentIndex:s,totalSegments:o,scripts:r,batchId:a}=e,f=(d=n.result)==null?void 0:d.url;let u=this.batches.get(a);if(u||(u={batchId:a,totalSegments:o,completedSegments:new Map,processedSegments:new Set,creatingNextFor:null,isMerging:!1,mergeCompleted:!1,scripts:r||[],characterReferenceUrls:e.characterReferenceUrls,characterDescription:e.characterDescription},this.batches.set(a,u)),!u.processedSegments.has(s)){if(u.processedSegments.add(s),f&&u.completedSegments.set(s,f),u.completedSegments.size===o){await this.mergeAndInsert(u);return}if(u.creatingNextFor!==s&&s<o){u.creatingNextFor=s;try{await this.createNextSegment(n,e,r,f,u.characterReferenceUrls,u.characterDescription)}finally{u.creatingNextFor=null}}}}async createNextSegment(n,e,s,o,r,a){const f=e.segmentIndex+1,u=s.find(S=>S.index===f);if(!u){console.error(`[LongVideoChain] Script not found for segment ${f}`);return}let d;if(o)try{d=(await fa(o)).dataUrl}catch(S){console.error("[LongVideoChain] Failed to extract last frame:",S)}const y={...e,segmentIndex:f,needsLastFrame:f<e.totalSegments,characterReferenceUrls:r??e.characterReferenceUrls,characterDescription:a??e.characterDescription};ha(u,y,d)}async mergeAndInsert(n){if(!(n.isMerging||n.mergeCompleted)){n.isMerging=!0;try{const e=[];for(let a=1;a<=n.totalSegments;a++){const f=n.completedSegments.get(a);f&&e.push(f)}if(e.length===0){console.error("[LongVideoChain] No video URLs to merge");return}const s=this.extractTransitions(n),r=await ir(e,(a,f,u)=>{const d=u||`${f} ${a.toFixed(1)}%`},{transitions:s,transitionDuration:.5});await this.insertMergedVideo(r.url),n.mergeCompleted=!0,this.cleanupBatch(n.batchId)}catch(e){console.error("[LongVideoChain] Merge failed:",e),this.cleanupBatch(n.batchId)}finally{n.isMerging=!1}}}async insertMergedVideo(n){try{await ga("video",n)}catch(e){console.error("[LongVideoChain] Failed to insert video to canvas:",e)}}extractTransitions(n){return!n.scripts||n.scripts.length===0?[]:n.scripts.sort((e,s)=>e.index-s.index).slice(0,-1).map(e=>e.transition_hint||"cut")}cleanupBatch(n){const e=this.batches.get(n);e&&(e.completedSegments.clear(),e.processedSegments.clear(),this.batches.delete(n))}getBatchStatus(n){const e=this.batches.get(n);return e?{completed:e.completedSegments.size,total:e.totalSegments,isMerging:e.isMerging,mergeCompleted:e.mergeCompleted}:null}}const Ur=Tt.getInstance();function Vr(){Ur.initialize()}function is(){return`img-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}async function ss(t){return new Promise((n,e)=>{const s=new Image,o=t.startsWith("http")&&!t.startsWith(location.origin);s.crossOrigin="anonymous",s.onload=()=>n(s),s.onerror=()=>{e(o?new Error("无法加载外部图片,可能是跨域 (CORS) 限制。请先下载图片到本地后再操作。"):new Error("图片加载失败,请检查图片是否有效"))},s.src=t})}function Rr(t,n=.92){return t.toDataURL("image/jpeg",n)}class Br{async split(n,e){const{rows:s,cols:o}=e;if(s<1||o<1)throw new Error("Grid rows and cols must be at least 1");const r=await ss(n),a=r.naturalWidth,f=r.naturalHeight,u=Math.floor(a/o),d=Math.floor(f/s),y=[];for(let S=0;S<s;S++)for(let x=0;x<o;x++){const b=S*o+x,h=x*u,j=S*d,I=document.createElement("canvas");I.width=u,I.height=d;const D=I.getContext("2d");if(!D)throw new Error("Failed to get canvas 2d context");D.drawImage(r,h,j,u,d,0,0,u,d);const M=Rr(I);y.push({id:is(),imageData:M,originalIndex:b,width:u,height:d})}return y}async splitToBlob(n,e){const{rows:s,cols:o}=e;if(s<1||o<1)throw new Error("Grid rows and cols must be at least 1");const r=await ss(n),a=r.naturalWidth,f=r.naturalHeight,u=Math.floor(a/o),d=Math.floor(f/s),y=[];for(let S=0;S<s;S++)for(let x=0;x<o;x++){const b=S*o+x,h=x*u,j=S*d,I=document.createElement("canvas");I.width=u,I.height=d;const D=I.getContext("2d");if(!D)throw new Error("Failed to get canvas 2d context");D.drawImage(r,h,j,u,d,0,0,u,d);const M=await new Promise((g,A)=>{I.toBlob(B=>{B?g(B):A(new Error("Failed to create blob"))},"image/png",.92)}),E=URL.createObjectURL(M);y.push({id:is(),imageData:E,originalIndex:b,width:u,height:d})}return y}revokeBlobUrls(n){for(const e of n)e.imageData.startsWith("blob:")&&URL.revokeObjectURL(e.imageData)}}const as=new Br;function je(t,n){return Math.random()*(n-t)+t}function Nn(t){const n=[...t];for(let e=n.length-1;e>0;e--){const s=Math.floor(Math.random()*(e+1));[n[e],n[s]]=[n[s],n[e]]}return n}class zr{calculate(n,e,s,o){switch(e){case"scattered":return this.scatteredLayout(n,s,o);case"grid":return this.gridLayout(n,s);case"circular":return this.circularLayout(n,s,o);case"inspiration-board":return this.inspirationBoardLayout(n,s,o);default:return console.warn(`[LayoutEngine] Unknown layout style: ${e}, falling back to grid`),this.gridLayout(n,s)}}scatteredLayout(n,e,s){const{maxRotation:o=15,minScale:r=.85,maxScale:a=1.15,positionJitter:f=40}=s||{},{canvasWidth:u,canvasHeight:d,startX:y,startY:S,gap:x=20}=e,b=n.length,h=Math.ceil(Math.sqrt(b)),j=Math.ceil(b/h),I=Math.max(...n.map(ee=>ee.width)),D=Math.max(...n.map(ee=>ee.height)),M=u-x*2,E=d-x*2,g=M/h,A=E/j,B=Math.min((g-x)/I,(A-x)/D,1),Q=Nn(n.map((ee,ie)=>ie));return n.map((ee,ie)=>{const q=Math.floor(ie/h),N=ie%h,P=y+x+N*g+g/2,W=S+x+q*A+A/2,Z=je(-f,f),L=je(-f,f),oe=je(-o,o),De=je(r,a),Ee=B*De,jt=ee.width*Ee,tn=ee.height*Ee;return{...ee,x:P+Z-jt/2,y:W+L-tn/2,rotation:oe,scale:Ee,zIndex:Q[ie]}})}gridLayout(n,e){const{canvasWidth:s,canvasHeight:o,startX:r,startY:a,gap:f=20}=e,u=n.length,d=Math.ceil(Math.sqrt(u)),y=Math.ceil(u/d),S=Math.max(...n.map(M=>M.width)),x=Math.max(...n.map(M=>M.height)),b=s-f*(d+1),h=o-f*(y+1),j=b/d,I=h/y,D=Math.min(j/S,I/x,1);return n.map((M,E)=>{const g=Math.floor(E/d),A=E%d,B=M.width*D,Q=M.height*D,ee=r+f+A*(j+f),ie=a+f+g*(I+f),q=ee+(j-B)/2,N=ie+(I-Q)/2;return{...M,x:q,y:N,rotation:0,scale:D,zIndex:E}})}circularLayout(n,e,s){const{centerIndex:o=-1,radius:r,startAngle:a=-90}=s||{},{canvasWidth:f,canvasHeight:u,startX:d,startY:y}=e,S=d+f/2,x=y+u/2,b=o>=0&&o<n.length?n.filter((N,P)=>P!==o):n,h=o>=0&&o<n.length?n[o]:null,j=Math.max(...n.map(N=>N.width)),I=Math.max(...n.map(N=>N.height)),D=Math.max(j,I),M=b.length,E=D*.8,g=M*D*1.2,A=Math.max(E,g/(2*Math.PI)),B=r||Math.min(A,Math.min(f,u)/2-D/2),Q=Math.min(f,u),ee=Math.min(Q*.25/D,1),ie=[];if(h){const N=h.width*ee*1.2,P=h.height*ee*1.2;ie.push({...h,x:S-N/2,y:x-P/2,rotation:0,scale:ee*1.2,zIndex:M})}const q=360/M;return b.forEach((N,P)=>{const Z=(a+P*q)*Math.PI/180,L=N.width*ee,oe=N.height*ee,De=S+B*Math.cos(Z)-L/2,Ee=x+B*Math.sin(Z)-oe/2;ie.push({...N,x:De,y:Ee,rotation:0,scale:ee,zIndex:P})}),ie}inspirationBoardLayout(n,e,s){const{minWidthRatio:o=gn.minWidthRatio,maxWidthRatio:r=gn.maxWidthRatio,maxRotation:a=gn.maxRotation,gap:f=gn.gap}=s||{},{canvasWidth:u,canvasHeight:d,startX:y,startY:S}=e,x=n.length,b=this.assignSizeCategories(x),h=n.reduce((A,B)=>A+B.width,0)/x,j=n.reduce((A,B)=>A+B.height,0)/x,I=u||1200,D=d||600,M=Math.min(I*.25/h,D*.4/j,1),E=this.calculateInspirationBoardPositions(x,I,D,f),g=Nn(n.map((A,B)=>B));return n.map((A,B)=>{const Q=E[B],ee=b[B];let ie;switch(ee){case"large":ie=je(1.2,r);break;case"medium":ie=je(.9,1.1);break;case"small":ie=je(o,.85);break;default:ie=1}const q=M*ie,N=je(-a,a),P=je(-20,20),W=je(-15,15),Z=A.width*q,L=A.height*q;return{...A,x:y+Q.x+P-Z/2,y:S+Q.y+W-L/2,rotation:N,scale:q,zIndex:g[B]}})}assignSizeCategories(n){const e=[],s=Math.max(2,Math.floor(n*.25)),o=Math.max(2,Math.floor(n*.25)),r=n-s-o;for(let a=0;a<s;a++)e.push("large");for(let a=0;a<r;a++)e.push("medium");for(let a=0;a<o;a++)e.push("small");return Nn(e)}calculateInspirationBoardPositions(n,e,s,o){const r=[],a=Math.ceil(n/4),f=Math.ceil(n/a),u=(e-o*2)/f,d=(s-o*2)/a;for(let y=0;y<n;y++){const S=Math.floor(y/f),x=y%f,b=o+x*u+u/2,h=o+S*d+d/2,j=je(-u*.3,u*.3),I=je(-d*.2,d*.2);r.push({x:b+j,y:h+I})}return Nn(r)}calculateRequiredSize(n,e,s=.5){const o=n.length,r=Math.ceil(Math.sqrt(o)),a=Math.ceil(o/r),f=Math.max(...n.map(b=>b.width)),u=Math.max(...n.map(b=>b.height)),d=20,y=e==="scattered"?60:40,S=r*f*s+(r+1)*d+y*2,x=a*u*s+(a+1)*d+y*2;return{width:S,height:x}}}const rs=new zr;class Or{constructor(){this.board=null}setBoard(n){this.board=n}getBoard(){return this.board}async generate(n){const{theme:e,gridConfig:s=bn.gridConfig,layoutStyle:o=bn.layoutStyle,imageSize:r=bn.imageSize,imageQuality:a=bn.imageQuality}=n;try{const f=this.buildPrompt(e,s),u=await ba.generateImage(f,{size:r,quality:a,response_format:"url"});if(!u.data||u.data.length===0)throw new Error("AI 生成图片失败:未返回图片数据");const d=u.data[0].url||u.data[0].b64_json,y=d&&xa(String(d));if(!y)throw new Error("AI 生成图片失败:未返回图片 URL");const S=await Oi.getImageForAI(y),x=S.type==="base64"?S.value:y,b=await as.split(x,s),h=this.calculateLayoutParams(b),j=rs.calculate(b,o,h);return{success:!0,originalImageUrl:y,elements:j}}catch(f){return console.error("[GridImageService] Generation failed:",f),{success:!1,error:f.message||"宫格图生成失败"}}}async processExistingImage(n,e,s="scattered"){try{const o=await Oi.getImageForAI(n),r=o.type==="base64"?o.value:n,a=await as.split(r,e),f=this.calculateLayoutParams(a),u=rs.calculate(a,s,f);return{success:!0,originalImageUrl:n,elements:u}}catch(o){return console.error("[GridImageService] Processing failed:",o),{success:!1,error:o.message||"宫格图处理失败"}}}async insertToBoard(n,e){if(!this.board)throw new Error("画板未初始化,请先调用 setBoard");let s=(e==null?void 0:e[0])??100,o=e==null?void 0:e[1];if(o===void 0){const a=wa(this.board);o=(a==null?void 0:a[1])??100,s=(a==null?void 0:a[0])??s}const r=[...n].sort((a,f)=>a.zIndex-f.zIndex);for(const a of r){const f=s+a.x,u=o+a.y,d={url:a.imageData,width:a.width*a.scale,height:a.height*a.scale};ya.insertImage(this.board,d,[f,u])}}async generateAndInsert(n,e){const s=await this.generate(n);return s.success&&s.elements&&await this.insertToBoard(s.elements,e),s}buildPrompt(n,e){const s=Ia.zh;return s(n,e.rows,e.cols)}calculateLayoutParams(n){const e=n.reduce((b,h)=>b+h.width,0),s=n.reduce((b,h)=>b+h.height,0),o=n.length,r=Math.ceil(Math.sqrt(o)),a=Math.ceil(o/r),f=e/o,u=s/o,d=30,y=50,S=r*f+(r+1)*d+y*2,x=a*u+(a+1)*d+y*2;return{canvasWidth:S,canvasHeight:x,startX:0,startY:0,gap:d}}}const os=new Or;function qr(t){return{cleanText:t,selectedAudioModel:null,selectedImageModel:null,selectedVideoModel:null,selectedParams:[],selectedCount:null}}function Wr(){const t=Mn.get();return(t==null?void 0:t.imageModelName)||ht()}function Lr(){const t=Mn.get();return(t==null?void 0:t.videoModelName)||Mt()}function Fr(){const t=Mn.get();return(t==null?void 0:t.audioModelName)||Ct()}function cs(){const t=Mn.get();return(t==null?void 0:t.textModelName)||Jn()}function Hr(t,n,e){if(n.length>0)return n.join(`
3
+ `);if(t){if(e===1)return"请仔细分析这张图片的内容、风格、构图、色调和艺术特点,推测生成这张图片可能使用的原始提示词,然后基于你推测的提示词重新生成一张全新的、风格相似但内容不完全相同的图片。不要直接复制原图。";if(e>1)return"请分析这些图片的主题、风格和视觉元素,找出它们之间的共同点或关联性,然后创造性地将它们融合成一张全新的、和谐统一的图片。融合时请保持各图片的精华元素,确保最终作品在构图、色调和风格上协调一致。"}return""}function Xt(t){return t.replace(":","x").toLowerCase()}function Gr(t,n,e){const s=n.texts.length>0||n.images.length>0||n.videos.length>0||n.graphics.length>0,o=n.texts,r=n.images.length+n.graphics.length,a=qr(t),f=a.cleanText.trim().length>0;let u=(e==null?void 0:e.generationType)||"image",d,y=!1;if(e!=null&&e.modelId){const g=Ke(e.modelId);e.generationType||((g==null?void 0:g.type)==="video"?u="video":(g==null?void 0:g.type)==="audio"?u="audio":(g==null?void 0:g.type)==="text"?u="text":u="image"),d=e.modelId,y=!0}else a.selectedAudioModel?(u="audio",d=a.selectedAudioModel,y=!0):a.selectedVideoModel?(u="video",d=a.selectedVideoModel,y=!0):a.selectedImageModel?(u="image",d=a.selectedImageModel,y=!0):!s&&f&&!(e!=null&&e.generationType)?(u="agent",d=cs()):u==="video"?d=Lr():u==="audio"?d=Fr():u==="text"||u==="agent"?d=cs():d=Wr();let S;(e==null?void 0:e.generationType)==="image"||(e==null?void 0:e.generationType)==="video"||(e==null?void 0:e.generationType)==="audio"||(e==null?void 0:e.generationType)==="text"?S="direct_generation":(e==null?void 0:e.generationType)==="agent"?S="agent_flow":S=f?"agent_flow":"direct_generation";const x=a.cleanText.trim(),b=o.join(`
4
+ `).trim();let h;if(b&&x?h=`${b}
5
+
6
+ ${x}`:x?h=x:b?h=b:s&&r>0?h=u==="text"?"":Hr(s,[],r):h="",d.startsWith("mj")&&(e!=null&&e.params)){const g=hr(e.params);g&&(h=[h,g].filter(Boolean).join(" "))}const j=(e==null?void 0:e.count)||a.selectedCount||1;let I,D,M;if(e!=null&&e.params){u!=="audio"&&u!=="text"&&u!=="agent"&&!d.startsWith("mj")&&e.params.size&&(I=Xt(e.params.size)),e.params.duration&&(D=e.params.duration);const g={};for(const[A,B]of Object.entries(e.params))A!=="size"&&A!=="duration"&&B&&(g[A]=B);Object.keys(g).length>0&&(M=g)}if(!I&&(e!=null&&e.size)&&e.size!=="auto"&&(I=Xt(e.size)),!I&&(e==null?void 0:e.size)!=="auto"){for(const g of a.selectedParams)if(g.id==="size"){I=Xt(g.value);break}}if(!D){for(const g of a.selectedParams)if(g.id==="duration"){D=g.value;break}}if(!I&&(e==null?void 0:e.size)!=="auto"&&u!=="text"&&u!=="agent"&&u!=="audio"){const g=Ke(d);if((g==null?void 0:g.type)==="image"&&g.imageDefaults)I="1x1";else if((g==null?void 0:g.type)==="video"&&g.videoDefaults){const A=Fn(d,(e==null?void 0:e.modelRef)||d,e==null?void 0:e.params);I=Xt(A.size||g.videoDefaults.size),D||(D=A.duration||g.videoDefaults.duration)}else if(u==="image")I="1x1";else if(u==="video"){const A=Fn(d,(e==null?void 0:e.modelRef)||d,e==null?void 0:e.params);I=Xt(A.size),D||(D=A.duration)}}!D&&u==="video"&&(D=Fn(d,(e==null?void 0:e.modelRef)||d,e==null?void 0:e.params).duration);const E=a.cleanText.trim();return{scenario:S,generationType:u,modelId:d,modelRef:(e==null?void 0:e.modelRef)||null,defaultModels:e==null?void 0:e.defaultModels,defaultModelRefs:e==null?void 0:e.defaultModelRefs,isModelExplicit:y,prompt:h,userInstruction:E,rawInput:t,count:j,size:I,duration:D,extraParams:M,parseResult:a,hasExtraContent:f,selection:n}}const Zn={id:it,name:"自动"},ls=ei.map(t=>({id:t.id,name:t.name,isSystem:!0,mcpTool:t.mcpTool,outputType:t.outputType})),$r=({value:t,onSelect:n,onSelectSkill:e,onAddSkill:s,disabled:o=!1})=>{const[r,a]=c.useState(!1),[f,u]=c.useState([]),[d,y]=c.useState([]),[S,x]=c.useState(""),[b,h]=c.useState(0),j=c.useRef(null),I=c.useRef(null),D=c.useCallback(async()=>{try{const P=(await _n.getAllDirectories()).find(oe=>oe.name==="Skill");if(!P)return;const W=await _n.getNoteMetasByDirectory(P.id),Z=new Set(ei.map(oe=>oe.id)),L=W.filter(oe=>!Z.has(oe.id)).map(oe=>{var De;return{id:oe.id,name:oe.title,outputType:((De=oe.metadata)==null?void 0:De.outputType)||void 0}});u(L)}catch{}},[]),M=c.useCallback(async()=>{try{const N=await di.getAllExternalSkillsMeta(),P=new Set(ei.map(Z=>Z.id)),W=N.filter(Z=>!P.has(Z.id)).map(Z=>({id:Z.id,name:Z.name,isExternal:!0,source:Z.source,outputType:Z.outputType}));y(W)}catch{}},[]);c.useEffect(()=>{if(r){D(),M(),x("");const P=[Zn,...ls,...d,...f].findIndex(W=>W.id===t);h(P>=0?P:0),setTimeout(()=>{var W;return(W=I.current)==null?void 0:W.focus()},50)}},[r,t]),c.useEffect(()=>{if(r&&j.current){const N=j.current.children[b];N&&N.scrollIntoView({block:"nearest"})}},[b,r]);const E=c.useCallback(N=>{N.preventDefault(),!o&&a(P=>!P)},[o]),g=c.useCallback(N=>{n(N.id),e==null||e(N),a(!1)},[n,e]),A=c.useCallback(N=>{N.stopPropagation(),a(!1),s()},[s]),B=[Zn,...ls,...d,...f],Q=S.trim()?B.filter(N=>N.name.toLowerCase().includes(S.toLowerCase())||N.id.toLowerCase().includes(S.toLowerCase())):B,ee=B.length>15,ie=c.useCallback(N=>N==="Escape"?(a(!1),!0):N==="ArrowDown"?(h(P=>P<Q.length-1?P+1:0),!0):N==="ArrowUp"?(h(P=>P>0?P-1:Q.length-1),!0):N==="Enter"||N===" "||N==="Tab"?(b<Q.length&&g(Q[b]),!0):!1,[b,Q,g]),q=Q.find(N=>N.id===t)||Zn;return m.jsxDEV(ni,{isOpen:r,setIsOpen:a,disabled:o,openKeys:["Enter"," ","ArrowDown","ArrowUp"],onOpenKey:ie,children:({containerRef:N,menuRef:P,portalPosition:W,handleTriggerKeyDown:Z})=>m.jsxDEV("div",{className:"skill-dropdown",ref:N,children:[m.jsxDEV("button",{className:`skill-dropdown__trigger ${r?"skill-dropdown__trigger--open":""}`,onMouseDown:E,onKeyDown:Z,disabled:o,type:"button",title:`Skill: ${q.name}`,children:[m.jsxDEV("span",{className:"skill-dropdown__icon-prefix",children:m.jsxDEV(qi,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:212,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:211,columnNumber:13},void 0),m.jsxDEV("span",{className:"skill-dropdown__label",children:q.name},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:214,columnNumber:13},void 0),m.jsxDEV(si,{size:14,className:`skill-dropdown__chevron ${r?"skill-dropdown__chevron--open":""}`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:215,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:203,columnNumber:11},void 0),r&&ii.createPortal(m.jsxDEV("div",{ref:P,className:`skill-dropdown__menu ${Cn}`,style:{position:"fixed",zIndex:ai.DROPDOWN_PORTAL,left:W.left,bottom:window.innerHeight-W.top+8},onMouseDown:L=>L.stopPropagation(),onClick:L=>L.stopPropagation(),children:[m.jsxDEV("div",{className:"skill-dropdown__header",children:[m.jsxDEV(qi,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:235,columnNumber:19},void 0),m.jsxDEV("span",{children:"Skill"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:236,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:234,columnNumber:17},void 0),ee&&m.jsxDEV("div",{className:"skill-dropdown__search",children:m.jsxDEV("input",{ref:I,type:"text",className:"skill-dropdown__search-input",placeholder:"搜索 Skill...",value:S,onChange:L=>{x(L.target.value),h(0)},onMouseDown:L=>L.stopPropagation(),onKeyDown:L=>L.stopPropagation()},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:240,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:239,columnNumber:19},void 0),m.jsxDEV("div",{ref:j,className:"skill-dropdown__list",children:Q.map((L,oe)=>{const De=L.id===t,Ee=oe===b;return m.jsxDEV("div",{className:`skill-dropdown__item ${De?"skill-dropdown__item--selected":""} ${Ee?"skill-dropdown__item--highlighted":""}`,onClick:()=>g(L),onMouseEnter:()=>h(oe),children:[m.jsxDEV("span",{className:"skill-dropdown__item-label",children:L.name},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:266,columnNumber:25},void 0),L.outputType==="image"&&m.jsxDEV(ws,{size:12,className:"skill-dropdown__item-image-icon"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:268,columnNumber:27},void 0),L.outputType==="video"&&m.jsxDEV(ys,{size:12,className:"skill-dropdown__item-image-icon"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:271,columnNumber:27},void 0),L.outputType==="ppt"&&m.jsxDEV(Na,{size:12,className:"skill-dropdown__item-image-icon"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:274,columnNumber:27},void 0),L.outputType==="audio"&&m.jsxDEV(ka,{size:12,className:"skill-dropdown__item-image-icon"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:277,columnNumber:27},void 0),L.isSystem&&m.jsxDEV("span",{className:"skill-dropdown__item-badge",children:"系统"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:280,columnNumber:27},void 0),L.isExternal&&m.jsxDEV("span",{className:"skill-dropdown__item-badge",children:"系统"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:283,columnNumber:27},void 0),De&&m.jsxDEV(ri,{size:14,className:"skill-dropdown__item-check"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:286,columnNumber:27},void 0)]},L.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:260,columnNumber:23},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:255,columnNumber:17},void 0),m.jsxDEV("div",{className:"skill-dropdown__divider"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:292,columnNumber:17},void 0),m.jsxDEV("div",{className:"skill-dropdown__add-btn",onClick:A,onMouseDown:L=>L.preventDefault(),children:[m.jsxDEV(va,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:298,columnNumber:19},void 0),m.jsxDEV("span",{children:"添加 Skill"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:299,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:293,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:222,columnNumber:15},void 0),document.body)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:202,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/SkillDropdown.tsx",lineNumber:194,columnNumber:5},void 0)},ds=["image","video","audio"];function Kr(t){if(t==="image"||t==="video"||t==="audio")return t}function Dt(t){if(!t)return[];const n=Kr(t.outputType);if(n)return[n];if(t.outputType==="text")return[];const e=new Set,s=Sa(t.mcpTool);s&&e.add(s);const o=[t.id,t.name,t.description,t.content].filter(Boolean).join(`
7
+ `);if(o)for(const r of ds)Yr(r).some(f=>o.includes(f))&&e.add(r);return ds.filter(r=>e.has(r))}function Yr(t){switch(t){case"image":return["generate_image","generate_grid_image","generate_photo_wall","generate_inspiration_board"];case"video":return["generate_video","generate_long_video"];case"audio":return["generate_audio"]}}var qe=(t=>(t.VIDEO="视频创作",t.IMAGE="图片生成",t.MINDMAP="思维导图",t.FLOWCHART="流程图",t.GRID="宫格图",t.SVG="SVG矢量图",t))(qe||{});const Jt=3,us=[{id:"grid-emoji",title:"智能拆分宫格图",description:"宫格图,风格统一",prompt:"生成16宫格猫咪表情包",category:qe.GRID,imageUrl:"https://tuziphoto.codernote.club/aitu/gonggetu.jpg",badgeColor:"badge--grid"},{id:"flowchart-process",title:"业务流程图",description:"使用 Mermaid 语法生成清晰的流程图",prompt:"绘制一个用户注册登录的流程图,包含邮箱验证、密码校验、短信验证码、登录成功/失败等节点",category:qe.FLOWCHART,imageUrl:"https://tuziphoto.codernote.club/aitu/liuchengtu.png",badgeColor:"badge--flowchart"},{id:"mindmap-project",title:"项目规划脑图",description:"快速生成结构化的思维导图,梳理项目计划",prompt:"创建一个关于「移动应用开发」的思维导图,包含需求分析、UI设计、前端开发、后端开发、测试上线等主要分支",category:qe.MINDMAP,imageUrl:"https://tuziphoto.codernote.club/aitu/siweidaotu.png",badgeColor:"badge--mindmap"}],Zr={[qe.VIDEO]:{bg:"#fce7f3",text:"#be185d"},[qe.IMAGE]:{bg:"#dbeafe",text:"#1d4ed8"},[qe.MINDMAP]:{bg:"#dcfce7",text:"#15803d"},[qe.FLOWCHART]:{bg:"#fef3c7",text:"#b45309"},[qe.GRID]:{bg:"#f3e8ff",text:"#7c3aed"},[qe.SVG]:{bg:"#e0e7ff",text:"#4338ca"}},Xr=({template:t,onClick:n})=>{const e=Zr[t.category],s=o=>{o.preventDefault()};return m.jsxDEV("div",{className:"inspiration-card",onMouseDown:s,onClick:n,"data-track":`inspiration_click_${t.id}`,children:[m.jsxDEV("div",{className:"inspiration-card__image-wrapper",children:[m.jsxDEV("img",{src:t.imageUrl,alt:t.title,className:"inspiration-card__image",loading:"lazy"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationCard.tsx",lineNumber:29,columnNumber:9},void 0),m.jsxDEV("span",{className:"inspiration-card__badge",style:{backgroundColor:e.bg,color:e.text},children:t.category},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationCard.tsx",lineNumber:37,columnNumber:9},void 0),m.jsxDEV("div",{className:"inspiration-card__hover-overlay",children:m.jsxDEV("div",{className:"inspiration-card__arrow",children:m.jsxDEV(_a,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationCard.tsx",lineNumber:50,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationCard.tsx",lineNumber:49,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationCard.tsx",lineNumber:48,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationCard.tsx",lineNumber:28,columnNumber:7},void 0),m.jsxDEV("div",{className:"inspiration-card__content",children:[m.jsxDEV("h3",{className:"inspiration-card__title",children:t.title},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationCard.tsx",lineNumber:57,columnNumber:9},void 0),m.jsxDEV("p",{className:"inspiration-card__description",children:t.description},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationCard.tsx",lineNumber:58,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationCard.tsx",lineNumber:56,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationCard.tsx",lineNumber:21,columnNumber:5},void 0)},ms="aitu_hide_inspiration_board",Jr=({isCanvasEmpty:t,onSelectPrompt:n,onOpenPromptTool:e,visible:s=!0,className:o=""})=>{const[r,a]=c.useState(0),[f,u]=c.useState(!1);c.useEffect(()=>{localStorage.getItem(ms)==="true"&&u(!0)},[]);const d=Math.ceil(us.length/Jt),y=d>1,S=us.slice(r*Jt,(r+1)*Jt),x=c.useCallback(I=>{I.preventDefault(),I.stopPropagation(),a(D=>(D-1+d)%d)},[d]),b=c.useCallback(I=>{I.preventDefault(),I.stopPropagation(),a(D=>(D+1)%d)},[d]),h=c.useCallback(I=>{n({prompt:I,modelType:"agent"})},[n]),j=c.useCallback(I=>{I.preventDefault(),I.stopPropagation(),u(!0),localStorage.setItem(ms,"true")},[]);return!t||!s||f?null:m.jsxDEV("div",{className:`inspiration-board ${o}`,children:[m.jsxDEV("div",{className:"inspiration-board__header",children:[m.jsxDEV("h3",{className:"inspiration-board__title",children:"灵感创意"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationBoard.tsx",lineNumber:83,columnNumber:9},void 0),m.jsxDEV("button",{className:"inspiration-board__hide-btn",onClick:j,onMouseDown:I=>I.preventDefault(),title:"不再提示","data-track":"inspiration_click_hide",children:[m.jsxDEV(Da,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationBoard.tsx",lineNumber:93,columnNumber:11},void 0),m.jsxDEV("span",{children:"不再提示"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationBoard.tsx",lineNumber:94,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationBoard.tsx",lineNumber:86,columnNumber:9},void 0),e&&m.jsxDEV("button",{className:"inspiration-board__prompt-btn",onClick:e,onMouseDown:I=>I.preventDefault(),title:"提示词工具","data-track":"inspiration_click_prompt_tool",children:[m.jsxDEV(Ea,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationBoard.tsx",lineNumber:106,columnNumber:13},void 0),m.jsxDEV("span",{children:"提示词"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationBoard.tsx",lineNumber:107,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationBoard.tsx",lineNumber:99,columnNumber:11},void 0),y&&m.jsxDEV("div",{className:"inspiration-board__pagination",children:[m.jsxDEV("span",{className:"inspiration-board__page-indicator",children:[r+1," / ",d]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationBoard.tsx",lineNumber:113,columnNumber:13},void 0),m.jsxDEV("div",{className:"inspiration-board__nav-buttons",children:[m.jsxDEV("button",{className:"inspiration-board__nav-btn",onMouseDown:I=>I.preventDefault(),onClick:x,"aria-label":"上一页","data-track":"inspiration_click_prev",children:m.jsxDEV(Ma,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationBoard.tsx",lineNumber:124,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationBoard.tsx",lineNumber:117,columnNumber:15},void 0),m.jsxDEV("button",{className:"inspiration-board__nav-btn",onMouseDown:I=>I.preventDefault(),onClick:b,"aria-label":"下一页","data-track":"inspiration_click_next",children:m.jsxDEV(Ca,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationBoard.tsx",lineNumber:133,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationBoard.tsx",lineNumber:126,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationBoard.tsx",lineNumber:116,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationBoard.tsx",lineNumber:112,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationBoard.tsx",lineNumber:82,columnNumber:7},void 0),m.jsxDEV("div",{className:"inspiration-board__grid",children:[S.map(I=>m.jsxDEV(Xr,{template:I,onClick:()=>h(I.prompt)},I.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationBoard.tsx",lineNumber:143,columnNumber:11},void 0)),S.length<Jt&&Array.from({length:Jt-S.length}).map((I,D)=>m.jsxDEV("div",{className:"inspiration-card inspiration-card--placeholder"},`placeholder-${D}`,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationBoard.tsx",lineNumber:153,columnNumber:13},void 0))]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationBoard.tsx",lineNumber:141,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/inspiration-board/InspirationBoard.tsx",lineNumber:78,columnNumber:5},void 0)},ft=[{value:"image",label:"图片",icon:m.jsxDEV(ws,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/GenerationTypeDropdown.tsx",lineNumber:17,columnNumber:40},void 0),zh:"图片",en:"Image"},{value:"video",label:"视频",icon:m.jsxDEV(ys,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/GenerationTypeDropdown.tsx",lineNumber:18,columnNumber:40},void 0),zh:"视频",en:"Video"},{value:"audio",label:"音频",icon:m.jsxDEV(ja,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/GenerationTypeDropdown.tsx",lineNumber:19,columnNumber:40},void 0),zh:"音频",en:"Audio"},{value:"text",label:"文本",icon:m.jsxDEV(Aa,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/GenerationTypeDropdown.tsx",lineNumber:20,columnNumber:39},void 0),zh:"文本",en:"Text"},{value:"agent",label:"Agent",icon:m.jsxDEV(Pa,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/GenerationTypeDropdown.tsx",lineNumber:21,columnNumber:43},void 0),zh:"Agent",en:"Agent"}],Qr=({value:t,onSelect:n,disabled:e=!1})=>{const[s,o]=c.useState(!1),{language:r}=oi(),[a,f]=c.useState(0),u=c.useRef(null);c.useEffect(()=>{if(s){const b=ft.findIndex(h=>h.value===t);f(b>=0?b:0)}},[s,t]),c.useEffect(()=>{if(s&&u.current){const b=u.current.children[a];b&&b.scrollIntoView({block:"nearest"})}},[a,s]);const d=c.useCallback(b=>{b.preventDefault(),!e&&o(h=>!h)},[e]),y=c.useCallback(b=>{n(b),o(!1)},[n]),S=c.useCallback(b=>b==="Escape"?(o(!1),!0):b==="ArrowDown"?(f(h=>h<ft.length-1?h+1:0),!0):b==="ArrowUp"?(f(h=>h>0?h-1:ft.length-1),!0):b==="Enter"||b===" "||b==="Tab"?(y(ft[a].value),!0):!1,[a,y]),x=ft.find(b=>b.value===t)||ft[0];return m.jsxDEV(ni,{isOpen:s,setIsOpen:o,disabled:e,openKeys:["Enter"," ","ArrowDown","ArrowUp"],onOpenKey:S,children:({containerRef:b,menuRef:h,portalPosition:j,handleTriggerKeyDown:I})=>m.jsxDEV("div",{className:"generation-type-dropdown",ref:b,children:[m.jsxDEV("button",{className:`generation-type-dropdown__trigger ${s?"generation-type-dropdown__trigger--open":""}`,onMouseDown:d,onKeyDown:I,disabled:e,type:"button",title:`${r==="zh"?"生成类型":"Type"}: ${r==="zh"?x.zh:x.en} (↑↓ Tab)`,children:[m.jsxDEV("span",{className:"generation-type-dropdown__icon-prefix",children:x.icon},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/GenerationTypeDropdown.tsx",lineNumber:107,columnNumber:13},void 0),m.jsxDEV("span",{className:"generation-type-dropdown__label",children:r==="zh"?x.zh:x.en},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/GenerationTypeDropdown.tsx",lineNumber:108,columnNumber:13},void 0),m.jsxDEV(si,{size:14,className:`generation-type-dropdown__chevron ${s?"generation-type-dropdown__chevron--open":""}`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/GenerationTypeDropdown.tsx",lineNumber:111,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/GenerationTypeDropdown.tsx",lineNumber:99,columnNumber:11},void 0),s&&ii.createPortal(m.jsxDEV("div",{ref:h,className:`generation-type-dropdown__menu ${Cn}`,style:{position:"fixed",zIndex:ai.DROPDOWN_PORTAL,left:j.left,bottom:window.innerHeight-j.top+8},onMouseDown:D=>D.stopPropagation(),onClick:D=>D.stopPropagation(),children:[m.jsxDEV("div",{className:"generation-type-dropdown__header",children:[m.jsxDEV(Ta,{size:14},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/GenerationTypeDropdown.tsx",lineNumber:127,columnNumber:17},void 0),m.jsxDEV("span",{children:r==="zh"?"生成类型 (↑↓ Tab)":"Generation type (↑↓ Tab)"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/GenerationTypeDropdown.tsx",lineNumber:128,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/GenerationTypeDropdown.tsx",lineNumber:126,columnNumber:15},void 0),m.jsxDEV("div",{ref:u,className:"generation-type-dropdown__list",children:ft.map((D,M)=>{const E=D.value===t,g=M===a;return m.jsxDEV("div",{className:`generation-type-dropdown__item ${E?"generation-type-dropdown__item--selected":""} ${g?"generation-type-dropdown__item--highlighted":""}`,onClick:()=>y(D.value),onMouseEnter:()=>f(M),children:[m.jsxDEV("span",{className:"generation-type-dropdown__item-icon",children:D.icon},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/GenerationTypeDropdown.tsx",lineNumber:141,columnNumber:23},void 0),m.jsxDEV("span",{className:"generation-type-dropdown__item-label",children:r==="zh"?D.zh:D.en},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/GenerationTypeDropdown.tsx",lineNumber:142,columnNumber:23},void 0),E&&m.jsxDEV(ri,{size:14,className:"generation-type-dropdown__item-check"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/GenerationTypeDropdown.tsx",lineNumber:145,columnNumber:38},void 0)]},D.value,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/GenerationTypeDropdown.tsx",lineNumber:135,columnNumber:21},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/GenerationTypeDropdown.tsx",lineNumber:130,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/GenerationTypeDropdown.tsx",lineNumber:114,columnNumber:13},void 0),document.body)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/GenerationTypeDropdown.tsx",lineNumber:98,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/GenerationTypeDropdown.tsx",lineNumber:90,columnNumber:5},void 0)},Qt=[1,2,3,4,5,10,20],eo=({value:t,onSelect:n,disabled:e=!1,isOpen:s,onOpenChange:o})=>{const{value:r,setValue:a}=Ua({controlledValue:s,defaultValue:!1,onChange:o}),{language:f}=oi(),[u,d]=c.useState(0),y=c.useRef(null);c.useEffect(()=>{if(r){const h=Qt.indexOf(t);d(h>=0?h:0)}},[r,t]),c.useEffect(()=>{if(r&&y.current){const h=y.current.children[u];h&&h.scrollIntoView({block:"nearest"})}},[u,r]);const S=c.useCallback(h=>{h.preventDefault(),!e&&a(!r)},[e,r,a]),x=c.useCallback(h=>{n(h),a(!1)},[n]),b=c.useCallback(h=>h==="Escape"?(a(!1),!0):h==="ArrowDown"?(d(j=>j<Qt.length-1?j+1:0),!0):h==="ArrowUp"?(d(j=>j>0?j-1:Qt.length-1),!0):h==="Enter"||h===" "||h==="Tab"?(x(Qt[u]),!0):!1,[u,x]);return m.jsxDEV(ni,{isOpen:r,setIsOpen:a,disabled:e,openKeys:["Enter"," ","ArrowDown","ArrowUp"],onOpenKey:b,children:({containerRef:h,menuRef:j,portalPosition:I,handleTriggerKeyDown:D})=>m.jsxDEV("div",{className:"count-dropdown",ref:h,children:[m.jsxDEV("button",{className:`count-dropdown__trigger ${r?"count-dropdown__trigger--open":""}`,onMouseDown:S,onKeyDown:D,disabled:e,type:"button",title:`${f==="zh"?"生成数量":"Count"}: ${t} (↑↓ Tab)`,children:[m.jsxDEV("span",{className:"count-dropdown__label",children:[t,f==="zh"?"个":""]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/CountDropdown.tsx",lineNumber:110,columnNumber:13},void 0),m.jsxDEV(si,{size:14,className:`count-dropdown__chevron ${r?"count-dropdown__chevron--open":""}`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/CountDropdown.tsx",lineNumber:113,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/CountDropdown.tsx",lineNumber:102,columnNumber:11},void 0),r&&ii.createPortal(m.jsxDEV("div",{ref:j,className:`count-dropdown__menu ${Cn}`,style:{position:"fixed",zIndex:ai.DROPDOWN_PORTAL,left:I.left,bottom:window.innerHeight-I.top+8},onMouseDown:M=>M.stopPropagation(),onClick:M=>M.stopPropagation(),children:[m.jsxDEV("div",{className:"count-dropdown__header",children:m.jsxDEV("span",{children:f==="zh"?"生成数量 (↑↓ Tab)":"Count (↑↓ Tab)"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/CountDropdown.tsx",lineNumber:129,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/CountDropdown.tsx",lineNumber:128,columnNumber:15},void 0),m.jsxDEV("div",{ref:y,className:"count-dropdown__list",children:Qt.map((M,E)=>{const g=M===t,A=E===u;return m.jsxDEV("div",{className:`count-dropdown__item ${g?"count-dropdown__item--selected":""} ${A?"count-dropdown__item--highlighted":""}`,onClick:()=>x(M),onMouseEnter:()=>d(E),children:[m.jsxDEV("span",{className:"count-dropdown__item-label",children:[M,f==="zh"?"个":M>1?" items":" item"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/CountDropdown.tsx",lineNumber:142,columnNumber:23},void 0),g&&m.jsxDEV(ri,{size:14,className:"count-dropdown__item-check"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/CountDropdown.tsx",lineNumber:145,columnNumber:38},void 0)]},M,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/CountDropdown.tsx",lineNumber:136,columnNumber:21},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/CountDropdown.tsx",lineNumber:131,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/CountDropdown.tsx",lineNumber:116,columnNumber:13},void 0),document.body)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/CountDropdown.tsx",lineNumber:101,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/CountDropdown.tsx",lineNumber:93,columnNumber:5},void 0)},_s=["right","bottom","left","top"],kn=4;function to(t,n,e,s,o=32){const r=s<=2?s:s<=4?2:3,a=Math.floor(e/r),f=e%r;return[t[0]+f*(n.width+o),t[1]+a*(n.height+o)]}function Ds(t,n){const{ignoreElementIds:e=[],ignoreTypes:s=["workzone"],extraOccupiedRects:o=[]}=n;return[...t.children.filter(no).filter(r=>!s.includes(r.type??"")&&!e.includes(r.id??"")).map(r=>({...Dn.getRectangleByPoints(r.points),id:r.id,type:r.type})),...o]}function no(t){return typeof t=="object"&&t!==null&&Array.isArray(t.points)&&t.points.length===2}function Es(t,n,e){return t.x<n.x+n.width+e&&t.x+t.width+e>n.x&&t.y<n.y+n.height+e&&t.y+t.height+e>n.y}function io(t,n,e,s){const o=[t];for(let r=1;r<=s;r+=1)o.push([t[0]+n*r,t[1]],[t[0],t[1]+e*r],[t[0]+n*r,t[1]+e*r],[t[0]-n*r,t[1]],[t[0]-n*r,t[1]+e*r],[t[0],t[1]-e*r],[t[0]+n*r,t[1]-e*r],[t[0]-n*r,t[1]-e*r]);return o}function so(t,n,e,s,o){const r=Math.max(o,32),a=Math.max(Math.round(Math.min(n.width,n.height)*.16),28),f=Math.max(Math.round(Math.min(n.width,n.height)*.12),18),u=n.width+a,d=n.height+a,y=[];for(let S=0;S<e;S+=1){const x=Math.floor(S/kn),b=S%kn,h=Math.min(kn,e-x*kn),j=b-(h-1)/2,I=t.x+t.width/2-n.width/2,D=t.y+t.height/2-n.height/2,M=Math.abs(j)*f;let E=I,g=D;switch(s){case"right":E=t.x+t.width+r+x*u+M,g=D+j*(n.height+a);break;case"left":E=t.x-r-n.width-x*u-M,g=D+j*(n.height+a);break;case"top":E=I+j*(n.width+a),g=t.y-r-n.height-x*d-M;break;case"bottom":default:E=I+j*(n.width+a),g=t.y+t.height+r+x*d+M;break}y.push([Math.round(E),Math.round(g)])}return y}function ps(t,n,e,s,o){return t.reduce((a,f)=>{const u={x:f[0],y:f[1],width:n.width,height:n.height};return a+e.filter(d=>Es(u,d,s)).length},0)*1e3+_s.indexOf(o)*10}function ao(t,n,e,s,o){var d;const{gap:r=40,padding:a=16}=o,f=Ds(t,o),u=_s.map(y=>({side:y,positions:so(n,e,s,y,r)}));return u.sort((y,S)=>ps(y.positions,e,f,a,y.side)-ps(S.positions,e,f,a,S.side)),((d=u[0])==null?void 0:d.positions)??[]}function ro(t,n,e,s,o={}){const{frameRect:r,extraOccupiedRects:a=[],...f}=o,u={...f,extraOccupiedRects:a},d=r?ao(t,r,e,s,u):Array.from({length:s},(S,x)=>to(n,e,x,s,u.gap)),y=[...a];return d.map(S=>{const x=oo(t,S,e,{...u,extraOccupiedRects:y});return y.push({x:x[0],y:x[1],width:e.width,height:e.height}),x})}function oo(t,n,e,s={}){const{gap:o=40,padding:r=16,maxSearchRadius:a=6}=s,f=Ds(t,s),u=e.width+o,d=e.height+o,y=io(n,u,d,a);for(const S of y){const x={x:S[0],y:S[1],width:e.width,height:e.height};if(!f.some(h=>Es(x,h,r)))return S}return[n[0],n[1]+d*(a+1)]}function bt(t){return typeof t=="string"&&t.trim()?t.trim():null}function co(t){return t==="image"||t==="video"||t==="audio"||t==="text"||t==="agent"}function lo(t){if(!t||typeof t!="object")return!1;const n=t;return typeof n.modelId=="string"&&n.modelId.trim().length>0&&(n.profileId===null||typeof n.profileId=="string")&&(n.providerIdHint===null||typeof n.providerIdHint=="string")&&(n.vendorHint===null||typeof n.vendorHint=="string")&&typeof n.updatedAt=="number"&&Number.isFinite(n.updatedAt)}function ui(){try{const t=window.localStorage.getItem(Qn);if(!t)return{};const n=JSON.parse(t);if(!n||typeof n!="object")return{};const e={};return Object.entries(n).forEach(([s,o])=>{co(s)&&lo(o)&&(e[s]={modelId:o.modelId.trim(),profileId:bt(o.profileId),providerIdHint:bt(o.providerIdHint),vendorHint:bt(o.vendorHint),updatedAt:o.updatedAt})}),e}catch{return{}}}function Ms(t){try{if(!Object.values(t).some(Boolean)){window.localStorage.removeItem(Qn);return}window.localStorage.setItem(Qn,JSON.stringify(t))}catch{}}function uo(t){const n=ui();return n[t]?n[t]||null:t==="agent"&&n.text||null}function fs(t,n){var o;const e=bt(n.modelId);if(!e){Cs(t);return}const s=ui();s[t]={modelId:e,profileId:bt((o=n.modelRef)==null?void 0:o.profileId),providerIdHint:bt(n.providerIdHint),vendorHint:bt(n.vendorHint),updatedAt:Date.now()},Ms(s)}function Cs(t){const n=ui();n[t]&&(delete n[t],Ms(n))}function nt(t,n,e,s){var r;const o=t.metadata||{};return{id:t.id,name:t.name,generationType:t.generationType,prompt:o.prompt||((r=n==null?void 0:n.aiContext)==null?void 0:r.finalPrompt)||"",aiAnalysis:t.aiAnalysis,count:o.count,createdAt:t.createdAt,status:t.status,steps:t.steps.map(a=>({id:a.id,description:a.description,status:a.status,mcp:a.mcp,args:a.args,result:a.result,error:a.error,duration:a.duration,options:a.options})),retryContext:n,postProcessingStatus:e,insertedCount:s}}function mo(t,n){return t==="generate_image"?"image":t==="generate_video"||t==="generate_long_video"?"video":t==="generate_audio"?"audio":t==="generate_text"?"text":n.scenarioType==="skill_flow"||n.generationType==="agent"?"agent":n.generationType==="image"||n.generationType==="video"||n.generationType==="audio"||n.generationType==="text"?n.generationType:"agent"}function po(t,n){const e=typeof n.args.prompt=="string"?n.args.prompt.trim():t.metadata.prompt.trim(),s=(t.metadata.rawInput||t.metadata.userInstruction||t.metadata.prompt||e).trim().slice(0,2e3),o=t.scenarioType==="skill_flow"?t.name.trim():void 0,r=mo(n.mcp,t);return{initialPrompt:s,sentPrompt:e.slice(0,2e3),category:r,skillId:t.skillId,skillName:o,tags:[r,o].filter(Boolean)}}function vn(t,n){return n.args.promptMeta||!["generate_image","generate_video","generate_long_video","generate_audio","generate_text"].includes(n.mcp)?n:{...n,args:{...n.args,promptMeta:po(t,n)}}}let hs=!1;hs||(dr(),Vr(),di.initialize().catch(t=>{console.warn("[AIInputBar] 外部 Skill 服务初始化失败(非致命):",t)}),hs=!0);function Ts(t){return t.selectionKey||(t.sourceProfileId?`${t.sourceProfileId}::${t.id}`:t.id)}function Re(t,n){return n!=null&&n.profileId?`${n.profileId}::${t}`:t}function Oe(t){return t?gt(t.sourceProfileId||null,t.id):null}function fo(t){return t<=0?"0":t<=20?"1-20":t<=100?"21-100":t<=300?"101-300":t<=800?"301-800":"800+"}const ho=1,js=4,go=6,bo=1.5;function gs(t,n){const e=window.getComputedStyle(t),s=Number.parseFloat(e.fontSize)||15,o=Number.parseFloat(e.lineHeight)||s*bo,r=Number.parseFloat(e.paddingTop)+Number.parseFloat(e.paddingBottom),a=Number.parseFloat(e.borderTopWidth)+Number.parseFloat(e.borderBottomWidth);return Math.ceil(o*n+r+a)}function xo(t,n){if(!t)return;if(!n){t.style.height="",t.style.overflowY="";return}const e=gs(t,js),s=gs(t,go);t.style.height="auto";const o=t.scrollHeight,r=Math.min(Math.max(o,e),s);t.style.height=`${r}px`,t.style.overflowY=o>s?"auto":"hidden"}function Ie(t,n,e){if(!n)return;const s=Re(n,e),o=(e==null?void 0:e.profileId)||null;return t.find(r=>Ts(r)===s)||t.find(r=>r.id===n&&(r.sourceProfileId||null)===o)||(o===null?t.find(r=>r.id===n&&!r.sourceProfileId):void 0)||t.find(r=>r.id===n)}function wo(t,n){return t==="agent"&&n==="text"?"agent":n}function yo(t){if(!t)return!1;const n=t.toLowerCase();return n.includes("#video")?!0:[".mp4",".webm",".mov",".avi",".mkv",".m4v",".flv",".wmv"].some(s=>n.includes(s))}const As=Is.memo(({language:t,onSelectionChange:n,externalBoardRef:e,onCanvasEmptyChange:s,isDataReady:o,onFrameSelected:r})=>{const a=or(),f=c.useRef(a);f.current=a,c.useEffect(()=>(Ji(a),Qi(a),es(a),ts(a),os.setBoard(a),e&&(e.current=a),()=>{Ji(null),Qi(null),es(null),ts(null),os.setBoard(null),e&&(e.current=null)}),[a,e]);const u=c.useRef(s);u.current=s,c.useEffect(()=>{if(!a||!u.current||!o)return;const x=setInterval(()=>{var h;const b=a.children||[];(h=u.current)==null||h.call(u,b.length===0)},500);return()=>{clearInterval(x)}},[a,o]);const d=c.useRef(n);d.current=n;const y=c.useRef(r);return y.current=r,c.useEffect(()=>{const S=async()=>{var j,I,D,M;const b=f.current;if(!b)return;const h=Ns(b);if(h.length===1&&ks(h[0])){const E=h[0],g=Dn.getRectangleByPoints(E.points);(j=y.current)==null||j.call(y,{id:E.id,width:g.width,height:g.height})}else(I=y.current)==null||I.call(y,null);if(h.length===0){d.current([]);return}try{const E=await Ya(b),g=[];E.graphicsImage&&g.push({url:E.graphicsImage,name:t==="zh"?"图形元素":"Graphics",type:"graphics",width:(D=E.graphicsImageDimensions)==null?void 0:D.width,height:(M=E.graphicsImageDimensions)==null?void 0:M.height});for(const A of E.remainingImages){const B=A.url||"",Q=yo(B);g.push({url:B,name:A.name||(Q?`video-${Date.now()}`:`image-${Date.now()}`),type:Q?"video":"image",width:A.width,height:A.height})}E.remainingText&&E.remainingText.trim()&&g.push({type:"text",text:E.remainingText.trim(),name:t==="zh"?"文字内容":"Text Content"}),d.current(g)}catch(E){console.error("Failed to process selected content:",E),d.current([])}};S();const x=()=>{setTimeout(S,50)};return document.addEventListener("mouseup",x),()=>{document.removeEventListener("mouseup",x)}},[t]),null});As.displayName="SelectionWatcher";const Ps=Is.memo(({className:t,isDataReady:n,onEnableToolWindows:e})=>{const{language:s}=oi(),o=xn("image"),r=xn("video"),a=xn("audio"),f=xn("text"),u=sr(),d=er(),{addHistory:y}=bs(),{addAsset:S}=Va(),x=c.useRef(u.sendWorkflowMessage);x.current=u.sendWorkflowMessage;const b=c.useRef(u.updateWorkflowMessage);b.current=u.updateWorkflowMessage;const h=c.useRef(u.appendAgentLog);h.current=u.appendAgentLog;const j=c.useRef(u.updateThinkingContent);j.current=u.updateThinkingContent;const I=c.useRef(u.setSelectedContent);I.current=u.setSelectedContent;const D=c.useRef(u.registerRetryHandler);D.current=u.registerRetryHandler;const M=c.useRef(null),E=c.useRef([]),g=c.useRef(null),A=gr(),B=c.useCallback((i,l,p)=>{if(!i)return;const w=E.current,v=(p!=null&&p.workflowId&&(p!=null&&p.batchId)&&typeof p.batchIndex=="number"?mt.getAnchorByBatchSlot(i,{workflowId:p.workflowId,batchId:p.batchId,batchIndex:p.batchIndex}):null)||(p!=null&&p.workflowId?mt.getAnchorByWorkflowId(i,p.workflowId):null)||(w[0]?mt.getAnchorById(i,w[0]):null);if(!v)return;const C=v.taskIds.includes(l)?v.taskIds:[...v.taskIds,l];mt.updateAnchor(i,v.id,{taskIds:C,primaryTaskId:v.primaryTaskId||l})},[]),Q=c.useCallback((i,l,p)=>{const w=E.current;w.length===0||!i||w.forEach(v=>{mt.updateAnchor(i,v,Hn(l,p))})},[]),ee=c.useCallback(i=>{const l=E.current;l.length===0||!i||(l.forEach(p=>{mt.removeAnchor(i,p)}),E.current=[])},[]),ie=c.useCallback((i,l)=>{const p=uo(i);if(!p)return;const w=Ie(l,p.modelId,gt(p.profileId,p.modelId));if(w)return w;Cs(i)},[]),q=c.useCallback((i,l)=>{const p=ie(i,l);if(p)return p;const v=St(i==="video"?"video":i==="audio"?"audio":i==="text"||i==="agent"?"text":"image"),C=Ie(l,v.modelId,gt(v.profileId,v.modelId));if(C)return C;const z=i==="video"?Mt():i==="audio"?Ct():i==="text"||i==="agent"?Jn():ht();return Ie(l,z,null)||l[0]},[ie]),N=A.generationType,W=q(N,N==="video"?r:N==="audio"?a:N==="text"||N==="agent"?f:o)||Ke(A.selectedModel)||Ke(N==="video"?Mt():N==="audio"?Ct():N==="text"||N==="agent"?Jn():ht()),Z=q("image",o)||Ke(ht()),L=q("video",r)||Ke(Mt()),oe=q("audio",a)||Ke(Ct()),De=St("image"),Ee=(Z==null?void 0:Z.id)||De.modelId||ht(),jt=Oe(Z)||gt(De.profileId,De.modelId),tn=Re((W==null?void 0:W.id)||Ee,Oe(W)||jt),mi=N==="agent"?{}:Kn(N,(W==null?void 0:W.id)||Ee,tn,A.selectedParams),[ge,st]=c.useState(""),[Us,Vs]=c.useState(!1),[jn,An]=c.useState([]),[At,xt]=c.useState([]),[We,at]=c.useState(!1),we=c.useRef(null),[Pt,rt]=c.useState(!1),[Rs,Bs]=c.useState(null),[k,Le]=c.useState(N),[ye,Pn]=c.useState(A.selectedSkillId||it),[R,pi]=c.useState((W==null?void 0:W.id)||Ee),[F,fi]=c.useState(Oe(W)||jt),[Fe,hi]=c.useState((Z==null?void 0:Z.id)||ht()),[Ze,gi]=c.useState(Oe(Z)),[He,bi]=c.useState((L==null?void 0:L.id)||Mt()),[Xe,xi]=c.useState(Oe(L)),[Ge,wi]=c.useState((oe==null?void 0:oe.id)||Ct()),[Je,yi]=c.useState(Oe(oe)),[Un,Qe]=c.useState([]),nn=c.useMemo(()=>{if(k!=="image"||Ie(o,R,F))return o;const l=pt("image",R,F);return l?[l,...o]:o},[k,o,R,F]),sn=c.useMemo(()=>{if(k!=="video"||Ie(r,R,F))return r;const l=pt("video",R,F);return l?[l,...r]:r},[k,R,F,r]),an=c.useMemo(()=>{if(k!=="audio"||Ie(a,R,F))return a;const l=pt("audio",R,F);return l?[l,...a]:a},[a,k,R,F]),rn=c.useMemo(()=>{if(k!=="text"&&k!=="agent"||Ie(f,R,F))return f;const l=pt("text",R,F);return l?[l,...f]:f},[k,R,F,f]),Ut=c.useMemo(()=>{if(Ie(o,Fe,Ze))return o;const l=pt("image",Fe,Ze);return l?[l,...o]:o},[o,Fe,Ze]),Vt=c.useMemo(()=>{if(Ie(r,He,Xe))return r;const l=pt("video",He,Xe);return l?[l,...r]:r},[He,Xe,r]),Rt=c.useMemo(()=>{if(Ie(a,Ge,Je))return a;const l=pt("audio",Ge,Je);return l?[l,...a]:a},[a,Ge,Je]),[Me,on]=c.useState(()=>{if(N==="agent")return{};const i=(W==null?void 0:W.id)||Ee,l=Wi(i).find(p=>p.id==="size");return{...mi,...i.startsWith("mj")||!l?{}:{size:mi.size||Li(i)}}}),Bt=c.useRef(Me),Ii=c.useRef(N==="agent"?"agent":`${N}:${tn}`);c.useEffect(()=>{Bt.current=Me},[Me]);const[zt,Ni]=c.useState(A.selectedCount),[ki,Vn]=c.useState(!1),[vi,Rn]=c.useState(!1),[Si,Bn]=c.useState(!1),ot=c.useRef(null),zs=c.useCallback(i=>{Vn(i),i||(ot.current=null)},[]),Os=c.useCallback(i=>{Rn(i),i||(ot.current=null)},[]),qs=c.useCallback(i=>{Bn(i),i||(ot.current=null)},[]),[_i,Ot]=c.useState(!1),be=c.useMemo(()=>[...At,...jn],[At,jn]),ct=c.useMemo(()=>({invalidFile:s==="zh"?"请上传图片文件":"Please upload image files",fileTooLarge:s==="zh"?"图片大小不能超过 25MB":"Image size cannot exceed 25MB",loadFailed:s==="zh"?"加载图片失败":"Failed to load image",compressionFailed:s==="zh"?"图片压缩失败":"Image compression failed",compressing:i=>s==="zh"?`正在压缩图片 (${i.toFixed(1)}MB)...`:`Compressing image (${i.toFixed(1)}MB)...`,compressed:(i,l)=>s==="zh"?`压缩完成: ${i.toFixed(1)}MB → ${l.toFixed(1)}MB`:`Compressed: ${i.toFixed(1)}MB → ${l.toFixed(1)}MB`}),[s]);c.useEffect(()=>{const i=k==="video"?sn:k==="audio"?an:k==="text"||k==="agent"?rn:nn,p=Ie(i,R,F)||q(k,i);if(p){const w=Re(R,F),v=Ts(p);w!==v&&(pi(p.id),fi(Oe(p)))}k!=="agent"&&Pn(it),(k==="agent"||k==="text"||k==="audio")&&Ni(1)},[an,k,nn,q,R,F,rn,sn]),c.useEffect(()=>{const i=(l,p,w,v,C,z)=>{if(Ie(p,w,v))return;const U=q(l,p);U&&(C(U.id),z(Oe(U)))};i("image",Ut,Fe,Ze,hi,gi),i("video",Vt,He,Xe,bi,xi),i("audio",Rt,Ge,Je,wi,yi)},[q,Ge,Je,Fe,Ze,He,Xe,Rt,Ut,Vt]);const cn=c.useMemo(()=>k==="video"?sn:k==="audio"?an:k==="text"||k==="agent"?rn:nn,[an,k,nn,rn,sn]);c.useEffect(()=>{let i=!1;return(async()=>{var z;if(k!=="agent"||ye===it){Qe([]);return}const p=Yn(ye);if(p){Qe(Dt(p));return}const w=ns(ye);if(w){Qe(Dt(w));return}const v=await di.getSkillById(ye);if(i)return;if(v){Qe(Dt(v));return}const C=await _n.getNoteById(ye);i||Qe(C?Dt({id:C.id,name:C.title,content:C.content,outputType:(z=C.metadata)==null?void 0:z.outputType}):[])})().catch(()=>{i||Qe([])}),()=>{i=!0}},[k,ye]);const qt=c.useMemo(()=>{var p;if(k==="agent")return[];if(k==="video")return Ra(R,F||R,Me);const i=Wi(R);return k!=="audio"?i:(Me.sunoAction||((p=i.find(w=>w.id==="sunoAction"))==null?void 0:p.defaultValue)||"music")==="lyrics"?i.filter(w=>w.id==="sunoAction"||w.id==="mv"||w.id==="title"||w.id==="tags"):i},[k,R,F,Me]);c.useEffect(()=>{if(!Pt)return;const i=l=>{const p=l.target;dn.current&&!dn.current.contains(p)&&rt(!1)};return document.addEventListener("mousedown",i),()=>document.removeEventListener("mousedown",i)},[Pt]),c.useEffect(()=>()=>{we.current&&clearTimeout(we.current)},[]),c.useEffect(()=>{const i=l=>{var p;((p=l.detail)==null?void 0:p.type)!=="image"&&(we.current&&(clearTimeout(we.current),we.current=null),at(!1))};return window.addEventListener("ai-generation-complete",i),()=>{window.removeEventListener("ai-generation-complete",i)}},[]),c.useEffect(()=>{const i=xs.observeTaskUpdates().subscribe(l=>{var U,K;const p=l.task,w=d.getWorkflow();if(!w)return;const v=w.steps.find(O=>{const Y=O.result;return(Y==null?void 0:Y.taskId)===p.id});if(!v)return;let C=v.status,z=v.result,$=v.error;switch(p.status){case Et.PENDING:case Et.PROCESSING:C="running";break;case Et.COMPLETED:C="completed",z={...typeof z=="object"?z:{},taskId:p.id,result:p.result};break;case Et.FAILED:C="failed",$=((U=p.error)==null?void 0:U.message)||"任务执行失败";break;case Et.CANCELLED:C="skipped";break}if(C!==v.status){if(d.updateStep(v.id,C,z,$),C==="failed"){const Y=(K=v.options)==null?void 0:K.batchId;Y&&w.steps.forEach(te=>{var me;te.id!==v.id&&((me=te.options)==null?void 0:me.batchId)===Y&&te.status==="running"&&d.updateStep(te.id,"skipped",void 0,"前置任务失败")})}const O=d.getWorkflow();if(O){const Y=nt(O,M.current||void 0);b.current(Y);const te=g.current,me=Ae.current;te&&me&&Ve.updateWorkflow(me,te,Y)}}});return()=>i.unsubscribe()},[d]);const Di=c.useRef(void 0),ln=c.useRef(void 0);c.useEffect(()=>{const i=Gn.observeCompletionEvents().subscribe(l=>{const p=d.getWorkflow(),w=p==null?void 0:p.steps.find(z=>{const $=z.result;return($==null?void 0:$.taskId)===l.taskId});let v,C;switch(l.type){case"postProcessingStarted":v="processing";break;case"postProcessingCompleted":v="completed",C=l.result.insertedCount;break;case"postProcessingFailed":v="failed";break}if(Di.current=v,C!==void 0&&(ln.current=(ln.current||0)+C),p&&w){const z=d.getWorkflow();if(z){const $=nt(z,M.current||void 0,v,ln.current);b.current($);const U=g.current,K=Ae.current;U&&K&&Ve.updateWorkflow(K,U,$)}}if(l.type==="postProcessingCompleted"){const z=l.result.firstElementPosition;we.current&&(clearTimeout(we.current),we.current=null),at(!1),setTimeout(async()=>{var K;u.closeChatDrawer();const $=g.current,U=Ae.current;if($&&U){const O=d.getWorkflow();if(O==null?void 0:O.steps.every(te=>te.status==="completed"||te.status==="failed"||te.status==="skipped")){const{workflowCompletionService:te}=await Sn(async()=>{const{workflowCompletionService:V}=await import("./tool-windows-BEnZdJqF.js").then(ae=>ae.po);return{workflowCompletionService:V}},__vite__mapDeps([0]),import.meta.url);(O==null?void 0:O.steps.every(V=>{const ae=V.result;return ae!=null&&ae.taskId?te.isPostProcessingCompleted(ae.taskId):!0}))&&(Ve.removeWorkZone(U,$),g.current=null)}}if(z&&U){const O=(K=U.host)==null?void 0:K.getBoundingClientRect();if(O){const Y=U.viewport.zoom,te=z[0]-O.width/(2*Y),me=z[1]-O.height/(2*Y);Ba.updateViewport(U,[te,me],Y)}}},500),Di.current=void 0,ln.current=void 0}});return()=>i.unsubscribe()},[d,u]);const Ae=c.useRef(null),{submitWorkflow:Ei}=tr({boardRef:Ae,workZoneIdRef:g}),Ce=c.useRef(null),dn=c.useRef(null),Mi=c.useRef(null);cr(Ce,{enableCopy:!0,stopPropagation:!0}),c.useEffect(()=>{const i=l=>{const p=l.detail;if(p!=null&&p.generationType&&Le(p.generationType),p!=null&&p.skillId){Pn(p.skillId);const w=Yn(p.skillId);w&&Qe(Dt(w))}rt(!0),requestAnimationFrame(()=>{var w;(w=Ce.current)==null||w.focus()})};return window.addEventListener(Fi,i),()=>{window.removeEventListener(Fi,i)}},[]);const Ws=c.useCallback(i=>{var l;st(i.prompt),Le("agent"),(l=Ce.current)==null||l.focus(),Be.track("inspiration_selected",{promptLength:i.prompt.length,modelType:i.modelType})},[]),Ls=c.useCallback(i=>{var l;st(i.content),i.modelType&&(i.modelType==="image"?Le("image"):i.modelType==="video"?Le("video"):i.modelType==="audio"?Le("audio"):i.modelType==="text"?Le("text"):i.modelType==="agent"&&Le("agent")),(l=Ce.current)==null||l.focus()},[]),Fs=c.useCallback(()=>{const i=Xn.find(l=>l.id==="knowledge-base");i&&(window.__kbPendingNavigation={directoryName:"Skill",autoCreateNote:!0},en.openTool(i),setTimeout(()=>{window.dispatchEvent(new CustomEvent("kb:navigate",{detail:{directoryName:"Skill",autoCreateNote:!0}}))},300))},[]),Ci=c.useCallback((i="ai_input_bar")=>{const l=Xn.find(p=>p.id==="banana-prompt");if(!l){console.warn("[AIInputBar] Banana prompt tool not found"),Be.trackPromptAction({action:"open_tool",surface:i,promptType:k,prompt:ge,source:i,status:"failed",metadata:{tool_id:"banana-prompt",reason:"tool_not_found"}});return}Be.trackPromptAction({action:"open_tool",surface:i,promptType:k,prompt:ge,source:i,status:"success",metadata:{tool_id:l.id,tool_type:"external_prompt_library"}}),en.openTool(l)},[k,ge]),Hs=c.useCallback(()=>{Ci("inspiration_board")},[Ci]),Gs=c.useCallback(async i=>{try{const l=new Image;l.onload=()=>{const p={type:"image",url:i.url,name:i.name||`素材-${Date.now()}`,width:l.naturalWidth||void 0,height:l.naturalHeight||void 0};xt(w=>[...w,p]),Ot(!1)},l.onerror=()=>{const p={type:"image",url:i.url,name:i.name||`素材-${Date.now()}`};xt(w=>[...w,p]),Ot(!1)},l.src=i.url}catch(l){console.error("Failed to select asset from library:",l),Ot(!1)}},[]),$s=c.useCallback(()=>{var i;(i=Mi.current)==null||i.click()},[]),Ti=c.useCallback(i=>new Promise((l,p)=>{const w=new FileReader;w.onload=()=>{const v=w.result,C=new Image;C.onload=()=>{l({url:v,width:C.naturalWidth,height:C.naturalHeight})},C.onerror=()=>{l({url:v,width:0,height:0})},C.src=v},w.onerror=p,w.readAsDataURL(i)}),[]),un=c.useCallback(async i=>{const l=Array.from(i);if(l.length===0)return;const p=[];for(const[w,v]of l.entries()){if(!v.type.startsWith("image/")){tt.error(ct.invalidFile);continue}if(v.size>25*1024*1024){tt.error(ct.fileTooLarge);continue}try{let C=v;if(v.size>10*1024*1024){const{compressImageBlob:O,getCompressionStrategy:Y}=await Sn(async()=>{const{compressImageBlob:V,getCompressionStrategy:ae}=await import("./tool-windows-BEnZdJqF.js").then(re=>re.pa);return{compressImageBlob:V,getCompressionStrategy:ae}},__vite__mapDeps([0]),import.meta.url),te=Y(v.size/(1024*1024)),me=tt.loading({content:ct.compressing(v.size/(1024*1024)),duration:0,placement:"top"});try{C=await O(v,te.targetSizeMB),tt.close(me),tt.success({content:ct.compressed(v.size/(1024*1024),C.size/(1024*1024)),duration:2})}catch(V){tt.close(me),console.error("[AIInputBar] Failed to compress image:",V),tt.error(ct.compressionFailed);continue}}const z=C instanceof File?C:new File([C],v.name||`pasted-image-${Date.now()}.png`,{type:C.type||v.type||"image/png"});S(z,Hi.IMAGE,za.LOCAL,z.name).catch(O=>{console.warn("[AIInputBar] Failed to add asset to library:",O)});const{url:$,width:U,height:K}=await Ti(z);p.push({type:"image",url:$,name:z.name||`上传图片 ${w+1}`,width:U||void 0,height:K||void 0})}catch(C){console.error("[AIInputBar] Failed to import local image:",C),tt.error(ct.loadFailed)}}p.length>0&&xt(w=>[...w,...p])},[S,Ti,ct]),Ks=c.useCallback(async i=>{const l=i.target.files;!l||l.length===0||(await un(l),i.target.value="")},[un]),Ys=c.useCallback(i=>{An(i)},[]),ji=c.useRef(null),Zs=c.useCallback(i=>{if(ji.current=i,!i)return;const l=ar(i.width,i.height,R);l&&on(p=>({...p,size:l}))},[R]),Xs=c.useCallback(i=>{i<At.length&&xt(l=>l.filter((p,w)=>w!==i))},[At.length]);c.useEffect(()=>{I.current(be.map(i=>({type:i.type,url:i.url,text:i.text,name:i.name})))},[be]),c.useEffect(()=>{const i=l=>{var U,K;const p=(U=l.clipboardData)==null?void 0:U.items;if(!p||p.length===0||!Array.from(p).some(O=>O.type.startsWith("image/")))return;const v=document.activeElement,C=dn.current;if(!(!!C&&(C.contains(v)||Pt&&(v===document.body||(v==null?void 0:v.tagName)==="BODY"))))return;const $=[];for(const O of Array.from(p)){if(!O.type.startsWith("image/"))continue;const Y=O.getAsFile();Y&&$.push(Y)}$.length!==0&&(l.preventDefault(),un($),(K=Ce.current)==null||K.focus())};return document.addEventListener("paste",i),()=>{document.removeEventListener("paste",i)}},[un,Pt]);const wt=c.useCallback(()=>{if(ot.current!==null){const i=ot.current;st(l=>l.substring(0,i)+l.substring(i+1)),ot.current=null}},[]),mn=c.useCallback(i=>{const l=wo(k,i.type);Be.track("ai_input_change_model",{model:i.id,type:i.type,profileId:i.sourceProfileId||null}),wt(),Le(l),pi(i.id);const p=Oe(i);fi(p),fs(l,{modelId:i.id,modelRef:p,providerIdHint:i.sourceProfileId||(p==null?void 0:p.profileId),vendorHint:i.vendor}),on(l==="agent"?{}:Kn(l,i.id,Re(i.id,p))),Vn(!1),setTimeout(()=>{var w;return(w=Ce.current)==null?void 0:w.focus()},0)},[wt,k]),Js=c.useCallback(i=>{const l=Ie(cn,i,F)||Ie(cn,i,null)||Ke(i);l&&mn(l)},[mn,cn,F]),Qs=c.useCallback(i=>{mn(i)},[mn]),pn=c.useCallback((i,l)=>{const p=Oe(l);i==="image"?(hi(l.id),gi(p)):i==="video"?(bi(l.id),xi(p)):(wi(l.id),yi(p)),fs(i,{modelId:l.id,modelRef:p,providerIdHint:l.sourceProfileId||(p==null?void 0:p.profileId),vendorHint:l.vendor}),Be.track("ai_input_change_agent_media_model",{model:l.id,type:i,profileId:l.sourceProfileId||null})},[]),zn=c.useCallback((i,l,p)=>{const w=i==="image"?Ut:i==="video"?Vt:Rt,v=Ie(w,l,p||null)||Ie(w,l,null)||Ke(l);v&&pn(i,v)},[pn,Rt,Ut,Vt]),On=c.useCallback((i,l)=>{pn(i,l)},[pn]),ea=c.useCallback(i=>{Qe(Dt(i))},[]),Ai=c.useMemo(()=>({image:Fe,video:He,audio:Ge}),[Ge,Fe,He]),Pi=c.useMemo(()=>({image:Ze,video:Xe,audio:Je}),[Je,Ze,Xe]);c.useEffect(()=>{const i=(U,K)=>{const O=Object.keys(U),Y=Object.keys(K);return O.length!==Y.length?!1:O.every(te=>U[te]===K[te])},l=k==="agent"?"agent":`${k}:${Re(R,F)}`,p=k==="agent"?{}:Ii.current===l?Bt.current||{}:Kn(k,R,Re(R,F),Bt.current),w={},v=qt.find(U=>U.id==="size"),C=p.size,z=!C||!(v!=null&&v.options)||v.options.some(U=>U.value===C);!R.startsWith("mj")&&v&&(w.size=C&&z?C:v.defaultValue||Li(R)),qt.forEach(U=>{if(U.id==="size")return;const K=p[U.id],O=!K||U.valueType!=="enum"||!U.options||U.options.some(Y=>Y.value===K);K&&O?w[U.id]=K:U.defaultValue&&(w[U.id]=U.defaultValue)});const $=Oa(R,w);i(Bt.current||{},$)||(on($),Bt.current=$),Ii.current=l},[k,R,F,qt]),c.useEffect(()=>{br({generationType:k,selectedModel:R,selectedParams:Me,selectedCount:zt,selectedSkillId:ye}),k!=="agent"&&xr(k,R,Me,Re(R,F))},[k,R,F,Me,zt,ye]);const ta=c.useCallback((i,l,p)=>{wt(),on(w=>{const v={...w};return l===void 0||l===""?delete v[i]:v[i]=l,v}),p!=null&&p.keepOpen||(Rn(!1),setTimeout(()=>{var w;return(w=Ce.current)==null?void 0:w.focus()},0))},[wt]),na=c.useCallback(i=>{wt(),Ni(i),Bn(!1),setTimeout(()=>{var l;return(l=Ce.current)==null?void 0:l.focus()},0)},[wt]),qn=c.useCallback(async()=>{var i,l,p,w,v,C,z,$;if(!(!ge.trim()&&be.length===0)&&!We){at(!0);try{if(!qa(k==="video"?"video":k==="audio"?"audio":k==="text"||k==="agent"?"text":"image",F||R)&&!await Wa()){at(!1);return}const O=be.filter(_=>_.type==="image"&&_.url),Y=be.filter(_=>_.type==="graphics"&&_.url),te=[...O,...Y].map(_=>{if(_.width&&_.height)return{width:_.width,height:_.height}}).filter(_=>_!==void 0),me={texts:be.filter(_=>_.type==="text"&&_.text).map(_=>_.text),images:O.map(_=>_.url),videos:be.filter(_=>_.type==="video"&&_.url).map(_=>_.url),graphics:Y.map(_=>_.url),imageDimensions:te},V=Gr(ge,me,{modelId:R,modelRef:F,params:Me,generationType:k,count:zt,defaultModels:k==="agent"?Ai:void 0,defaultModelRefs:k==="agent"?Pi:void 0}),ae=[...me.images,...me.graphics];let re;if(k==="agent"&&ye!==it){const _=Yn(ye);if(_)try{re=await In(V,_,ae)}catch(G){console.warn("[AIInputBar] 系统 Skill 工作流转换失败,降级到通用工作流:",G),re=_t(V,ae)}else{const G=ns(ye);if(G)try{re=await In(V,{id:G.id,name:G.name,type:"external",content:G.content,outputType:G.outputType},ae)}catch(H){console.warn("[AIInputBar] 外部 Skill 工作流转换失败,降级到角色扮演:",H),re=await In(V,{id:G.id,name:G.name,type:"external",content:G.content,outputType:G.outputType},ae).catch(()=>_t(V,ae))}else try{const H=await _n.getNoteById(ye);if(H){const se=((i=H.metadata)==null?void 0:i.outputType)||void 0;re=await In(V,{id:H.id,name:H.title,type:"user",content:H.content,outputType:se},ae)}else re=_t(V,ae)}catch{re=_t(V,ae)}}re||(console.warn("[AIInputBar] Skill 工作流未能生成,降级到通用工作流"),re=_t(V,ae))}else re=_t(V,ae);const X=Ae.current;if(X){const se=(l=X.host)==null?void 0:l.getBoundingClientRect(),fe=((p=X.viewport)==null?void 0:p.zoom)||1,he=((v=(w=X.viewport)==null?void 0:w.origination)==null?void 0:v[0])||0,Pe=((z=(C=X.viewport)==null?void 0:C.origination)==null?void 0:z[1])||0,Ht=X.children.filter(xe=>xe.type!=="workzone"),hn=he+((se==null?void 0:se.width)||0)/2/fe,It=Pe+((se==null?void 0:se.height)||0)/2/fe;let ke=hn-200,ne=It,Nt=ke,et=It-240/2;if(Ht.length>0){const xe=Ns(X);let le=!1;if(xe.length>0)try{const de=$n(X,xe,!1);xe.every(ve=>Gi.isDrawElement(ve)&&Gi.isImage(ve)||rr(ve))&&de.width>de.height?(ke=de.x+de.width+50,ne=de.y):(ke=de.x,ne=de.y+de.height+50),Nt=ke,et=ne,le=!0}catch(de){console.warn("[AIInputBar] Failed to calculate position for selected elements:",de)}if(!le){let de=null,$t=-1/0;for(const ve of Ht)try{const vt=$n(X,[ve],!1),Kt=vt.y+vt.height;Kt>$t&&($t=Kt,de=ve)}catch(vt){console.warn("[AIInputBar] Failed to get rectangle for element:",vt)}if(de){const ve=$n(X,[de],!1);ke=ve.x,ne=ve.y+ve.height+50,Nt=ke,et=ne}}}const dt=nt(re),kt=ji.current;let Gt,ut,Ri;if(kt){const xe=X.children.find(le=>le.id===kt.id);if(xe&&ks(xe)){Gt=kt.id,ut={width:kt.width,height:kt.height};const le=Dn.getRectangleByPoints(xe.points);Ri=le,ke=le.x,ne=le.y}}if(V.generationType==="image"){const xe=Math.max(V.count??1,1),le=xe>1,de=le?void 0:Gt,$t=le?void 0:ut,ve=[],vt=`wf_batch_${re.id}`,Kt=de?null:ro(X,[ke,ne],$i({workflowId:re.id,expectedInsertPosition:[ke,ne],requestedSize:V.size,requestedCount:1,zoom:fe,title:dt.name||"图片生成",...Hn("submitted")}).size??{width:320,height:180},xe,{frameRect:le?Ri:void 0});for(let Ue=0;Ue<xe;Ue+=1){let Yt=$i({workflowId:re.id,expectedInsertPosition:[ke,ne],targetFrameId:de,targetFrameDimensions:$t,frameAffinityId:le?Gt:void 0,frameAffinityDimensions:le?ut:void 0,requestedSize:V.size,requestedCount:le?1:xe,batchId:le?vt:void 0,batchIndex:le?Ue+1:void 0,batchTotal:le?xe:void 0,zoom:fe,title:dt.name||"图片生成",...Hn("submitted")});if(!de){const zi=Kt?Kt[Ue]??Yt.position:Yt.position;Yt={...Yt,position:zi,expectedInsertPosition:zi}}const la=mt.insertAnchor(X,Yt);ve.push(la)}E.current=ve.map(Ue=>Ue.id),g.current=null;const[Bi]=ve;Bi&&setTimeout(()=>{const Ue=Dn.getRectangleByPoints(Bi.points);Ki(X,[Ue.x+Ue.width/2,Ue.y+Ue.height/2],100)},100)}else{const xe=Ve.insertWorkZone(X,{workflow:dt,position:[Nt,et],size:{width:360,height:240},expectedInsertPosition:[ke,ne],targetFrameId:Gt,targetFrameDimensions:ut,zoom:fe});g.current=xe.id,E.current=[],setTimeout(()=>{const le=Nt+180,de=et+240/2;Ki(X,[le,de],100)},100)}}const T=St("image"),J=St("video"),ue=St("audio"),Ne={rawInput:ge,userInstruction:V.userInstruction,model:{id:V.modelId,type:V.generationType,isExplicit:V.isModelExplicit},modelRef:V.modelRef,defaultModels:V.defaultModels||{audio:ue.modelId||Ct(),image:T.modelId||ht(),video:J.modelId||Mt()},defaultModelRefs:V.defaultModelRefs||{audio:gt(ue.profileId,ue.modelId),image:gt(T.profileId,T.modelId),video:gt(J.profileId,J.modelId)},params:{count:V.count,size:V.size,duration:V.duration},selection:me,finalPrompt:V.prompt},pe=St("text").modelId,Te={aiContext:Ne,referenceImages:ae,textModel:pe};M.current=Te;try{const _=Date.now(),{usedSW:G}=await Ei(V,ae,Te,re);if(G){if(k==="image"&&Q(X,"accepted"),ge.trim()){const H=ge.trim(),se=be.length>0;y(H,se,k),k==="image"?Yi(H):k==="video"&&Zi(H)}st(""),An([]),xt([]),we.current&&clearTimeout(we.current),we.current=setTimeout(()=>{at(!1),we.current=null},1e3);return}}catch(_){console.warn("[AIInputBar] SW execution failed, falling back to main thread:",_)}if(k==="image"&&Q(X,"handoff"),ge.trim()){const _=ge.trim(),G=be.length>0;y(_,G,k),k==="image"?Yi(_):k==="video"&&Zi(_)}st(""),An([]),xt([]),we.current&&clearTimeout(we.current),we.current=setTimeout(()=>{at(!1),we.current=null},1e3);const Wt=[],$e=[],fn=(_,G)=>({onChunk:H=>{j.current(H)},onAddSteps:H=>{d.updateStep(_.id,"completed",{analysis:"completed"},void 0,Date.now()-G);const se=H.map((he,Pe)=>vn(re,{...he,status:he.status==="completed"?"completed":"pending",options:{mode:"queue",batchId:`agent_${Date.now()}`,batchIndex:Pe+1,batchTotal:H.length,globalIndex:Pe+1}}));d.addSteps(se),$e.push(...se),H.forEach(he=>{h.current({type:"tool_call",timestamp:Date.now(),toolName:he.mcp,args:he.args})});const fe=nt(d.getWorkflow(),M.current||void 0);b.current(fe),g.current&&X&&Ve.updateWorkflow(X,g.current,fe)},onUpdateStep:(H,se,fe,he)=>{d.updateStep(H,se,fe,he),h.current({type:"tool_result",timestamp:Date.now(),toolName:H,success:se==="completed",data:fe,error:he});const Pe=nt(d.getWorkflow(),M.current||void 0);b.current(Pe),g.current&&X&&Ve.updateWorkflow(X,g.current,Pe)}});let ze=!1;const yt=()=>{const _=nt(d.getWorkflow(),M.current||void 0);b.current(_),g.current&&X&&Ve.updateWorkflow(X,g.current,_)},Lt=async _=>{var se,fe,he,Pe,Ht,hn;const G=Date.now(),H=$e.length;d.updateStep(_.id,"running"),yt();try{const It={..._.options,...fn(_,G)},ke=vn(re,_),ne=await Xi.executeTool({name:ke.mcp,arguments:ke.args},It),Nt=(fe=(se=d.getWorkflow())==null?void 0:se.steps.find(et=>et.id===_.id))==null?void 0:fe.status;if(ne.success){if(ne.taskId)Wt.push(ne.taskId),d.updateStep(_.id,"running",{taskId:ne.taskId}),B(X,ne.taskId,{workflowId:re.id,batchId:(he=_.options)==null?void 0:he.batchId,batchIndex:(Pe=_.options)==null?void 0:Pe.batchIndex});else if(Nt==="running"){const et=ne.type==="text"&&ne.data&&typeof ne.data=="object"&&"content"in ne.data?{content:ne.data.content}:ne.data;d.updateStep(_.id,"completed",et,void 0,Date.now()-G);const dt=_.mcp==="generate_text"?(Ht=ne.data)==null?void 0:Ht.content:_.mcp==="ai_analyze"?(hn=ne.data)==null?void 0:hn.response:void 0;if((_.mcp==="generate_text"||_.mcp==="ai_analyze")&&dt&&dt.trim()&&$e.length===H){const ut={id:`${_.id}-insert-text`,mcp:"insert_to_canvas",args:{items:[{type:"text",content:dt}]},description:_.mcp==="generate_text"?"将生成文本插入画布":"将 AI 回复插入画布",status:"pending"};d.addSteps([ut]),$e.push(ut)}}}else return d.updateStep(_.id,"failed",void 0,ne.error||"执行失败",Date.now()-G),!1;return!0}catch(It){return d.updateStep(_.id,"failed",void 0,String(It)),!1}finally{yt()}};for(const _ of re.steps){if(ze){d.updateStep(_.id,"skipped"),yt();continue}await Lt(_)||(ze=!0)}if(!ze&&$e.length>0){const _=d.getWorkflow();for(const G of $e){if(ze){d.updateStep(G.id,"skipped"),yt();continue}const H=($=d.getWorkflow())==null?void 0:$.steps.find(fe=>fe.id===G.id);if(!H){console.warn(`[AIInputBar] Step ${G.id} not found in workflow!`);continue}if(H.status==="completed")continue;await Lt(H)||(ze=!0)}}const ce=d.getWorkflow(),Ln=ce==null?void 0:ce.steps.every(_=>_.status==="completed"||_.status==="failed"||_.status==="skipped"),Ft=Wt.length>0;if(Ln&&!Ft){const _=g.current,G=E.current,H=Ae.current;(_||G.length>0)&&H&&(ce!=null&&ce.steps.every(fe=>{const he=fe.result;return he!=null&&he.taskId?Gn.isPostProcessingCompleted(he.taskId):!0}))&&setTimeout(()=>{_&&(Ve.removeWorkZone(H,_),g.current=null),G.length>0&&(Q(H,"completed"),ee(H))},1500)}}catch(U){console.error("Failed to create generation task:",U),k==="image"&&Q(Ae.current,"failed",{error:U instanceof Error?U.message:"创建图片任务失败"}),d.abortWorkflow(),at(!1)}}},[ge,be,We,R,F,d,Ei,y,Me,Ai,Pi,k,zt,B,Q,ee]),Wn=c.useCallback(async(i,l,p)=>{var X;const w=i.retryContext;if(!w){console.error("[AIInputBar] No retry context available for workflow");return}p&&(g.current=p);const v={id:i.id,name:i.name,description:`重试: ${i.name}`,scenarioType:i.steps.some(T=>T.mcp==="ai_analyze")?"agent_flow":"direct_generation",generationType:i.generationType,steps:i.steps.map((T,J)=>({id:T.id,mcp:T.mcp,args:T.args,description:T.description,status:J<l?T.status:"pending",result:J<l?T.result:void 0,error:J<l?T.error:void 0,duration:J<l?T.duration:void 0,options:T.options})),metadata:{prompt:i.prompt,userInstruction:w.aiContext.userInstruction,rawInput:w.aiContext.rawInput,modelId:w.aiContext.model.id,modelRef:w.aiContext.modelRef,defaultModels:w.aiContext.defaultModels,defaultModelRefs:w.aiContext.defaultModelRefs,isModelExplicit:w.aiContext.model.isExplicit,count:i.count,size:w.aiContext.params.size,duration:w.aiContext.params.duration,referenceImages:w.referenceImages,selection:w.aiContext.selection},createdAt:Date.now()};d.startWorkflow(v),h.current({type:"retry",timestamp:Date.now(),reason:`从步骤 ${l+1} 开始重试`,attempt:1});const C=Ae.current,z=()=>{const T=nt(d.getWorkflow(),w);b.current(T),g.current&&C&&Ve.updateWorkflow(C,g.current,T)},$=nt(v,w);b.current($),g.current&&C&&Ve.updateWorkflow(C,g.current,$);const U=(T,J)=>({onChunk:ue=>{j.current(ue)},onAddSteps:ue=>{d.updateStep(T.id,"completed",{analysis:"completed"},void 0,Date.now()-J);const Ne=ue.map((pe,Te)=>vn(v,{...pe,status:pe.status==="completed"?"completed":"pending",options:{mode:"queue",batchId:`agent_${Date.now()}`,batchIndex:Te+1,batchTotal:ue.length,globalIndex:Te+1}}));d.addSteps(Ne),K.push(...Ne),ue.forEach(pe=>{h.current({type:"tool_call",timestamp:Date.now(),toolName:pe.mcp,args:pe.args})}),z()},onUpdateStep:(ue,Ne,pe,Te)=>{d.updateStep(ue,Ne,pe,Te),h.current({type:"tool_result",timestamp:Date.now(),toolName:ue,success:Ne==="completed",data:pe,error:Te}),z()}}),K=[];let O=!1;const Y=new Map;i.steps.forEach(T=>{var ue;const J=(ue=T.result)==null?void 0:ue.taskId;J&&Y.set(T.id,J)});const te=async T=>{var Ne,pe,Te,Wt,$e,fn;const J=Date.now(),ue=K.length;d.updateStep(T.id,"running"),z();try{const ze=Y.get(T.id),yt={...T.options,...U(T,J),...ze?{retryTaskId:ze}:{}},Lt=vn(v,T),ce=await Xi.executeTool({name:Lt.mcp,arguments:Lt.args},yt),Ln=(pe=(Ne=d.getWorkflow())==null?void 0:Ne.steps.find(Ft=>Ft.id===T.id))==null?void 0:pe.status;if(ce.success){if(ce.taskId)d.updateStep(T.id,"running",{taskId:ce.taskId}),B(C,ce.taskId,{workflowId:i.id,batchId:(Te=T.options)==null?void 0:Te.batchId,batchIndex:(Wt=T.options)==null?void 0:Wt.batchIndex});else if(Ln==="running"){const Ft=ce.type==="text"&&ce.data&&typeof ce.data=="object"&&"content"in ce.data?{content:ce.data.content}:ce.data;d.updateStep(T.id,"completed",Ft,void 0,Date.now()-J);const _=T.mcp==="generate_text"?($e=ce.data)==null?void 0:$e.content:T.mcp==="ai_analyze"?(fn=ce.data)==null?void 0:fn.response:void 0;if((T.mcp==="generate_text"||T.mcp==="ai_analyze")&&_&&_.trim()&&K.length===ue){const se={id:`${T.id}-insert-text`,mcp:"insert_to_canvas",args:{items:[{type:"text",content:_}]},description:T.mcp==="generate_text"?"将生成文本插入画布":"将 AI 回复插入画布",status:"pending"};d.addSteps([se]),K.push(se)}}}else return d.updateStep(T.id,"failed",void 0,ce.error||"执行失败",Date.now()-J),!1;return!0}catch(ze){return d.updateStep(T.id,"failed",void 0,String(ze)),!1}finally{z()}},me=v.steps.slice(l);for(const T of me){if(O){d.updateStep(T.id,"skipped"),z();continue}await te(T)||(O=!0)}if(!O&&K.length>0)for(const T of K){if(O){d.updateStep(T.id,"skipped"),z();continue}const J=(X=d.getWorkflow())==null?void 0:X.steps.find(Ne=>Ne.id===T.id);if(!J||J.status==="completed")continue;await te(J)||(O=!0)}const V=d.getWorkflow(),ae=V==null?void 0:V.steps.every(T=>T.status==="completed"||T.status==="failed"||T.status==="skipped"),re=V==null?void 0:V.steps.some(T=>{var J;return(J=T.result)==null?void 0:J.taskId});if(ae&&!re){const T=g.current,J=Ae.current;T&&J&&(V!=null&&V.steps.every(Ne=>{const pe=Ne.result;return pe!=null&&pe.taskId?Gn.isPostProcessingCompleted(pe.taskId):!0}))&&setTimeout(()=>{Ve.removeWorkZone(J,T),g.current=null},1500)}},[d,B]);c.useEffect(()=>{D.current(Wn);const i=Ae.current;i&&(i.__executeWorkflowRetry=Wn)},[Wn]);const ia=c.useCallback(i=>{var l;if(!i.nativeEvent.isComposing&&!(i.key==="Enter"&&(i.shiftKey||i.altKey))){if((ki||vi||Si)&&(i.key==="Enter"||i.key==="Tab")){i.preventDefault();return}if(i.key==="Enter"){i.preventDefault(),Be.track("ai_input_submit_keyboard"),qn();return}if(i.key==="Escape"){rt(!1),(l=Ce.current)==null||l.blur();return}}},[qn]),sa=c.useCallback(()=>{Be.track("ai_input_focus_textarea"),rt(!0)},[]),aa=c.useCallback(()=>{Be.track("ai_input_blur_textarea"),rt(!1)},[]),ra=c.useCallback(i=>{const l=i.target.value,p=i.target.selectionStart||l.length;if(st(l),p>0){const w=l[p-1],v=p>1?l[p-2]:" ";w==="#"&&(v===" "||v===`
8
+ `||p===1)&&(ot.current=p-1,Vn(!0),Rn(!1),Bn(!1))}},[]),oa=c.useMemo(()=>JSON.stringify({generationType:k,model:R,profileId:(F==null?void 0:F.profileId)||null,hasAttachedContent:be.length>0,attachedCount:be.length,promptLengthBucket:fo(ge.trim().length)}),[be.length,k,ge,R,F==null?void 0:F.profileId]),Ui=ge.trim().length>0||be.length>0,Vi=Rs===!0,ca=jn.some(i=>{var l;return i.type==="text"&&((l=i.text)==null?void 0:l.trim())}),lt=Pt||be.length>0||Us;return c.useLayoutEffect(()=>{xo(Ce.current,lt)},[lt,ge]),m.jsxDEV("div",{ref:dn,className:wn("ai-input-bar",Cn,t,{"ai-input-bar--with-inspiration":Vi}),"data-testid":"ai-input-bar",children:[m.jsxDEV(As,{language:s,onSelectionChange:Ys,externalBoardRef:Ae,onCanvasEmptyChange:Bs,isDataReady:n,onFrameSelected:Zs},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4007,columnNumber:9},void 0),m.jsxDEV(Jr,{isCanvasEmpty:Vi,onSelectPrompt:Ws,onOpenPromptTool:Hs},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4016,columnNumber:9},void 0),m.jsxDEV("div",{className:wn("ai-input-bar__container",{"ai-input-bar__container--expanded":lt}),children:[m.jsxDEV("div",{className:"ai-input-bar__bottom-bar",children:[m.jsxDEV("input",{ref:Mi,type:"file",accept:"image/*",multiple:!0,onChange:Ks,style:{display:"none"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4028,columnNumber:13},void 0),m.jsxDEV("button",{className:"ai-input-bar__upload-btn",onMouseDown:i=>{i.preventDefault(),i.stopPropagation()},onClick:$s,title:s==="zh"?"上传图片":"Upload images","data-track":"ai_input_click_upload",children:m.jsxDEV(La,{size:18},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4047,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4037,columnNumber:13},void 0),m.jsxDEV("button",{className:"ai-input-bar__library-btn",onMouseDown:i=>{i.preventDefault(),i.stopPropagation()},onClick:()=>Ot(!0),title:s==="zh"?"从素材库选择":"Select from library","data-track":"ai_input_click_library",children:m.jsxDEV(Fa,{size:18},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4060,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4050,columnNumber:13},void 0),m.jsxDEV(Qr,{value:k,onSelect:Le,disabled:We},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4063,columnNumber:13},void 0),k==="agent"&&m.jsxDEV($r,{value:ye,onSelect:Pn,onSelectSkill:ea,onAddSkill:Fs,disabled:We},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4071,columnNumber:15},void 0),m.jsxDEV(yn,{selectedModel:R,selectedSelectionKey:Re(R,F),onSelect:Js,onSelectModel:Qs,language:s,models:cn,header:s==="zh"?k==="agent"?"选择文本模型 (↑↓ Tab)":"选择模型 (↑↓ Tab)":k==="agent"?"Select text model (↑↓ Tab)":"Select model (↑↓ Tab)",isOpen:ki,onOpenChange:zs},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4080,columnNumber:13},void 0),k==="agent"&&ye!==it&&Un.includes("image")&&m.jsxDEV(yn,{selectedModel:Fe,selectedSelectionKey:Re(Fe,Ze),onSelect:(i,l)=>zn("image",i,l),onSelectModel:i=>On("image",i),language:s,models:Ut,header:s==="zh"?"选择图片模型 (↑↓ Tab)":"Select image model (↑↓ Tab)"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4106,columnNumber:17},void 0),k==="agent"&&ye!==it&&Un.includes("video")&&m.jsxDEV(yn,{selectedModel:He,selectedSelectionKey:Re(He,Xe),onSelect:(i,l)=>zn("video",i,l),onSelectModel:i=>On("video",i),language:s,models:Vt,header:s==="zh"?"选择视频模型 (↑↓ Tab)":"Select video model (↑↓ Tab)"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4131,columnNumber:17},void 0),k==="agent"&&ye!==it&&Un.includes("audio")&&m.jsxDEV(yn,{selectedModel:Ge,selectedSelectionKey:Re(Ge,Je),onSelect:(i,l)=>zn("audio",i,l),onSelectModel:i=>On("audio",i),language:s,models:Rt,header:s==="zh"?"选择音频模型 (↑↓ Tab)":"Select audio model (↑↓ Tab)"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4156,columnNumber:17},void 0),k!=="agent"&&qt.length>0&&m.jsxDEV(wr,{selectedParams:Me,onParamChange:ta,compatibleParams:qt,modelId:R,language:s,isOpen:vi,onOpenChange:Os},R,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4180,columnNumber:15},void 0),k!=="agent"&&k!=="text"&&k!=="audio"&&m.jsxDEV(eo,{value:zt,onSelect:na,disabled:We,isOpen:Si,onOpenChange:qs},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4195,columnNumber:17},void 0),m.jsxDEV("div",{className:"ai-input-bar__bottom-spacer"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4204,columnNumber:13},void 0),m.jsxDEV("button",{className:`ai-input-bar__send-btn ${Ui?"active":""} ${We?"loading":""}`,onMouseDown:i=>{i.preventDefault(),i.stopPropagation()},onClick:()=>qn(),disabled:!Ui||We,"data-track":"ai_input_click_send","data-track-params":oa,"data-testid":"ai-send-btn",children:m.jsxDEV(Ha,{size:18},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4220,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4206,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4027,columnNumber:11},void 0),m.jsxDEV("div",{className:wn("ai-input-bar__input-area",{"ai-input-bar__input-area--expanded":lt}),children:[be.length>0&&m.jsxDEV("div",{className:"ai-input-bar__content-preview",children:m.jsxDEV(lr,{items:be,language:s,enableHoverPreview:!0,onRemove:Xs,removableStartIndex:At.length},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4231,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4230,columnNumber:15},void 0),m.jsxDEV("div",{className:"ai-input-bar__prompt-row",children:[m.jsxDEV("div",{className:"ai-input-bar__rich-input",children:m.jsxDEV("textarea",{ref:Ce,className:wn("ai-input-bar__input",{"ai-input-bar__input--focused":lt}),value:ge,onChange:ra,onKeyDown:ia,onFocus:sa,onBlur:aa,placeholder:k==="agent"?s==="zh"?"输入指令,让 Agent 为你工作...":"Type instructions for Agent...":k==="text"?s==="zh"?"输入你想生成的文本内容、文章、摘要或 Markdown":"Describe the text, article, summary, or markdown you want":k==="audio"?ca?s==="zh"?"已有文本,无需额外提示词,直接发送":"Text already selected. No extra prompt needed, just send":s==="zh"?"描述你想要生成的音乐、风格、歌词或情绪":"Describe the music, style, lyrics, or mood you want":s==="zh"?`描述你想要创建的${k==="image"?"图片":"视频"}`:`Describe the ${k==="image"?"image":"video"} you want to create`,rows:lt?js:ho,disabled:We,"data-testid":"ai-input-textarea"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4243,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4242,columnNumber:15},void 0),m.jsxDEV(jr,{generationType:k,onSelectPrompt:Ls,language:s,onBeforeOpenMyPrompts:e,extraActions:lt?m.jsxDEV(Ga,{className:"prompt-history-popover__action-btn",originalPrompt:ge,language:s,scenarioId:`ai-input.${k}`,disabled:We,allowStructuredMode:!0,onOpenChange:Vs,onMouseDown:i=>{i.preventDefault(),i.stopPropagation(),rt(!0)},onApply:i=>{st(i),rt(!0),requestAnimationFrame(()=>{var l;(l=Ce.current)==null||l.focus()})}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4295,columnNumber:21},void 0):null},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4288,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4241,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4224,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4022,columnNumber:9},void 0),_i&&m.jsxDEV($a,{isOpen:_i,onClose:()=>Ot(!1),mode:Ka.SELECT,filterType:Hi.IMAGE,onSelect:Gs},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:4324,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ai-input-bar/AIInputBar.tsx",lineNumber:3995,columnNumber:7},void 0)});Ps.displayName="AIInputBar";function Uo({isDataReady:t,activationKey:n,onEnableToolWindows:e}){const s=c.useRef(null);return c.useEffect(()=>{if(n<=0)return;const o=window.setTimeout(()=>{var a;const r=(a=s.current)==null?void 0:a.querySelector('[data-testid="ai-input-textarea"]');r==null||r.focus()},0);return()=>{window.clearTimeout(o)}},[n]),m.jsxDEV(nr,{children:m.jsxDEV(Za,{children:m.jsxDEV("div",{ref:s,children:m.jsxDEV(Ps,{isDataReady:t,onEnableToolWindows:e},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DeferredAIInputBar.tsx",lineNumber:40,columnNumber:11},this)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DeferredAIInputBar.tsx",lineNumber:39,columnNumber:9},this)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DeferredAIInputBar.tsx",lineNumber:38,columnNumber:7},this)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DeferredAIInputBar.tsx",lineNumber:37,columnNumber:5},this)}export{Uo as DeferredAIInputBar,Uo as default};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./tool-windows-D61Le6TE.css"])))=>i.map(i=>d[i]);
2
+ import{al as O,$ as s,Y as t,am as a}from"./tool-windows-BEnZdJqF.js";const I=t.lazy(()=>a(()=>import("./tool-windows-BEnZdJqF.js").then(e=>e.pB),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.ProjectDrawer}))),g=t.lazy(()=>a(()=>import("./tool-windows-BEnZdJqF.js").then(e=>e.pC),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.ToolboxDrawer}))),A=t.lazy(()=>a(()=>import("./tool-windows-BEnZdJqF.js").then(e=>e.pD),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.DeferredMediaLibraryModal}))),R=t.lazy(()=>a(()=>import("./tool-windows-BEnZdJqF.js").then(e=>e.pE),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.BackupRestoreDialog}))),z=t.lazy(()=>a(()=>import("./tool-windows-BEnZdJqF.js").then(e=>e.pF),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.VersionUpdatePrompt}))),B=t.lazy(()=>a(()=>import("./tool-windows-BEnZdJqF.js").then(e=>e.pG),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.PerformancePanel}))),M=t.lazy(()=>a(()=>import("./tool-windows-BEnZdJqF.js").then(e=>e.pH),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.DeferredSyncSettings}))),W=t.lazy(()=>a(()=>import("./tool-windows-BEnZdJqF.js").then(e=>e.pI),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.CommandPalette}))),G=t.lazy(()=>a(()=>import("./tool-windows-BEnZdJqF.js").then(e=>e.pJ),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.CanvasSearch}))),H=t.lazy(()=>a(()=>import("./tool-windows-BEnZdJqF.js").then(e=>e.pK),__vite__mapDeps([0]),import.meta.url).then(e=>({default:e.ToolWinBoxManager})));function K({board:e,value:w,containerRef:u,versionUpdateEnabled:E,performancePanelEnabled:j,toolWindowManagerEnabled:v,projectDrawerOpen:o,toolboxDrawerOpen:c,mediaLibraryOpen:m,mediaLibraryConfig:r,backupRestoreOpen:p,cloudSyncOpen:d,onBoardSwitch:l,setProjectDrawerOpen:k,setToolboxDrawerOpen:V,setMediaLibraryOpen:b,setBackupRestoreOpen:P,setCloudSyncOpen:F,handleOpenMediaLibrary:S,handleBeforeSwitch:x,onCreateProjectForMemory:U}){const{appState:D,setAppState:h}=O(),f=D.openCommandPalette||!1,N=D.openCanvasSearch||!1;return s.jsxDEV(s.Fragment,{children:[m&&s.jsxDEV(t.Suspense,{fallback:null,children:s.jsxDEV(A,{isOpen:m,onClose:()=>b(!1),mode:r==null?void 0:r.mode,filterType:r==null?void 0:r.filterType,onSelect:r==null?void 0:r.onSelect,selectButtonText:r==null?void 0:r.selectButtonText},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DrawnixDeferredFeatures.tsx",lineNumber:121,columnNumber:11},this)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DrawnixDeferredFeatures.tsx",lineNumber:120,columnNumber:9},this),p&&s.jsxDEV(t.Suspense,{fallback:null,children:s.jsxDEV(R,{open:p,onOpenChange:P,container:u.current,onBeforeImport:async()=>{await x()},onSwitchBoard:async(n,_)=>{const{workspaceService:q}=await a(async()=>{const{workspaceService:y}=await import("./tool-windows-BEnZdJqF.js").then(T=>T.pp);return{workspaceService:y}},__vite__mapDeps([0]),import.meta.url),i=await q.switchBoard(n);i&&l&&(_&&(i.viewport=_),l(i))}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DrawnixDeferredFeatures.tsx",lineNumber:133,columnNumber:11},this)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DrawnixDeferredFeatures.tsx",lineNumber:132,columnNumber:9},this),d&&s.jsxDEV(t.Suspense,{fallback:null,children:s.jsxDEV(M,{visible:d,onClose:()=>F(!1)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DrawnixDeferredFeatures.tsx",lineNumber:157,columnNumber:11},this)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DrawnixDeferredFeatures.tsx",lineNumber:156,columnNumber:9},this),E&&s.jsxDEV(t.Suspense,{fallback:null,children:s.jsxDEV(z,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DrawnixDeferredFeatures.tsx",lineNumber:165,columnNumber:11},this)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DrawnixDeferredFeatures.tsx",lineNumber:164,columnNumber:9},this),v&&s.jsxDEV(t.Suspense,{fallback:null,children:s.jsxDEV(H,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DrawnixDeferredFeatures.tsx",lineNumber:170,columnNumber:11},this)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DrawnixDeferredFeatures.tsx",lineNumber:169,columnNumber:9},this),f&&s.jsxDEV(t.Suspense,{fallback:null,children:s.jsxDEV(W,{open:f,onClose:()=>{h(n=>({...n,openCommandPalette:!1}))},board:e,container:u.current},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DrawnixDeferredFeatures.tsx",lineNumber:175,columnNumber:11},this)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DrawnixDeferredFeatures.tsx",lineNumber:174,columnNumber:9},this),N&&s.jsxDEV(t.Suspense,{fallback:null,children:s.jsxDEV(G,{open:N,onClose:()=>{h(n=>({...n,openCanvasSearch:!1}))},board:e},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DrawnixDeferredFeatures.tsx",lineNumber:190,columnNumber:11},this)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DrawnixDeferredFeatures.tsx",lineNumber:189,columnNumber:9},this),j&&s.jsxDEV(t.Suspense,{fallback:null,children:s.jsxDEV(B,{container:u.current,onCreateProject:U,elements:(e==null?void 0:e.children)||w},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DrawnixDeferredFeatures.tsx",lineNumber:204,columnNumber:11},this)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DrawnixDeferredFeatures.tsx",lineNumber:203,columnNumber:9},this),o&&s.jsxDEV(t.Suspense,{fallback:null,children:s.jsxDEV(I,{isOpen:o,onOpenChange:k,onBeforeSwitch:x,onBoardSwitch:l,onOpenMediaLibrary:S},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DrawnixDeferredFeatures.tsx",lineNumber:213,columnNumber:11},this)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DrawnixDeferredFeatures.tsx",lineNumber:212,columnNumber:9},this),c&&s.jsxDEV(t.Suspense,{fallback:null,children:s.jsxDEV(g,{isOpen:c,onOpenChange:V},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DrawnixDeferredFeatures.tsx",lineNumber:224,columnNumber:11},this)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DrawnixDeferredFeatures.tsx",lineNumber:223,columnNumber:9},this)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/startup/DrawnixDeferredFeatures.tsx",lineNumber:118,columnNumber:5},this)}export{K as DrawnixDeferredFeatures,K as default};