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,99 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./tool-windows-D61Le6TE.css","./batch-image-generation-BePygpHd.css"])))=>i.map(i=>d[i]);
2
+ import{$ as e,cw as Tt,hu as Bs,hv as Gs,Y as t,hw as _t,hx as Ws,hy as Ks,hz as Hs,hA as Ys,hB as Pt,al as pt,bm as it,am as It,hC as ds,O as ls,ep as us,R as Et,hD as Js,eo as cs,s as ms,cn as ge,aQ as st,fZ as Xs,aq as ct,c8 as Qs,y as Zs,db as fs,bS as Be,he as ea,eJ as ta,h3 as sa,da as aa,hE as ia,e7 as na,hF as Mt,bN as ps,aS as oa,aR as gs,bM as ra,fV as da,bK as la,eO as ua,hG as ca,hH as ma,bT as Rt,X as fa,bB as ze,aW as qe,T as Ee,Z as pa,aO as ga,aP as ha,ca as At,c2 as ba,d as xa,e as Na,cm as wa,bC as ya,bn as hs,bt as Ke,bu as Ae,bv as _e,bw as mt,bx as Te,bz as je,bq as St,bo as bs,aJ as xe,d8 as va,dv as at,q as Pe,bJ as xs,cM as tt,by as ka,dA as jt,dw as Ea,bD as ja,bE as Da,dy as xt,dx as Ns,hI as Lt,hJ as Ia,hK as zt,dZ as Ot,hL as $t,hM as Nt,hN as Ft,hO as Bt,dN as Gt,dO as Wt,d$ as Kt,hk as Sa,S as Va,hn as Ht,hP as Yt}from"./tool-windows-BEnZdJqF.js";import{W as Ca,w as Ua,B as qa,c as Vt,d as Ta}from"./main-BO0HWBB1.js";import{u as Ct,r as _a,e as Jt,f as Pa,g as ws,P as ys,h as wt,b as Xt,i as vs,j as Qt,k as Ma}from"./ai-generation-preferences-service-BSpgVCHz.js";import{u as ks,C as Ra,V as Aa,a as La}from"./useCharacters-gsV4K8Hn.js";/* empty css */import{R as Es}from"./ResizableDivider-BpUFdkte.js";import"./retry-image-BmIVuAVu.js";const js=({children:a})=>e.jsxDEV("div",{className:"ttd-dialog-panels",children:a},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-panels.tsx",lineNumber:4,columnNumber:10},void 0),ft=({label:a,children:s,panelAction:i,panelActionDisabled:o=!1,onTextSubmitInProgress:n,renderTopRight:d,renderSubmitShortcut:b,renderBottomRight:v})=>e.jsxDEV("div",{className:"ttd-dialog-panel",children:[e.jsxDEV("div",{className:"ttd-dialog-panel__header",children:[e.jsxDEV("label",{children:a},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-panel.tsx",lineNumber:32,columnNumber:9},void 0),d==null?void 0:d()]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-panel.tsx",lineNumber:31,columnNumber:7},void 0),s,e.jsxDEV("div",{className:Tt("ttd-dialog-panel-button-container",{invisible:!i}),style:{display:"flex",alignItems:"center"},children:[e.jsxDEV("button",{className:"ttd-dialog-panel-button drawnix-button ","data-track":"ttd_click_panel_action",onClick:i&&i.action,disabled:o||n,children:e.jsxDEV("div",{className:Tt({invisible:n}),children:[i==null?void 0:i.label,(i==null?void 0:i.icon)&&e.jsxDEV("span",{children:i.icon},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-panel.tsx",lineNumber:51,columnNumber:35},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-panel.tsx",lineNumber:49,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-panel.tsx",lineNumber:43,columnNumber:9},void 0),!o&&!n&&(b==null?void 0:b()),v==null?void 0:v()]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-panel.tsx",lineNumber:37,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-panel.tsx",lineNumber:30,columnNumber:5},void 0),Zt={CTRL_OR_CMD:Bs||Gs?"metaKey":"ctrlKey",ENTER:"Enter"},Ds=({input:a,placeholder:s,onChange:i,onKeyboardSubmit:o})=>{const n=t.useRef(null),d=t.useRef(o);return d.current=o,t.useEffect(()=>{if(!d.current)return;const b=n.current;if(b){const v=U=>{var r;U[Zt.CTRL_OR_CMD]&&U.key===Zt.ENTER&&(U.preventDefault(),(r=d.current)==null||r.call(d))};return b.addEventListener(_t.KEYDOWN,v),()=>{b.removeEventListener(_t.KEYDOWN,v)}}},[]),e.jsxDEV("textarea",{className:"ttd-dialog-input",onChange:i,value:a,placeholder:s,autoFocus:!0,ref:n},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-input.tsx",lineNumber:45,columnNumber:5},void 0)},za=({error:a})=>e.jsxDEV("div",{"data-testid":"ttd-dialog-output-error",className:"ttd-dialog-output-error",children:["Error! ",e.jsxDEV("p",{children:a},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-output.tsx",lineNumber:14,columnNumber:14},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-output.tsx",lineNumber:10,columnNumber:5},void 0),Is=({error:a,value:s,loaded:i})=>{const o=[Ws,Ks,Hs,Ua],n={readonly:!0,hideScrollbar:!1,disabledScrollOnNonFocus:!0,themeColors:Ys};return e.jsxDEV("div",{className:"ttd-dialog-output-wrapper",children:[a&&e.jsxDEV(za,{error:a.message},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-output.tsx",lineNumber:39,columnNumber:17},void 0),e.jsxDEV("div",{style:{opacity:a?"0.15":1},className:"ttd-dialog-output-canvas-container",children:e.jsxDEV(Ca,{value:s,options:n,plugins:o,children:e.jsxDEV(qa,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-output.tsx",lineNumber:46,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-output.tsx",lineNumber:45,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-output.tsx",lineNumber:41,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-output.tsx",lineNumber:38,columnNumber:5},void 0)},Ss=()=>e.jsxDEV("div",{className:"ttd-dialog-submit-shortcut",children:[e.jsxDEV("div",{className:"ttd-dialog-submit-shortcut__key",children:Pt("CtrlOrCmd")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-submit-shortcut.tsx",lineNumber:6,columnNumber:7},void 0),e.jsxDEV("div",{className:"ttd-dialog-submit-shortcut__key",children:Pt("Enter")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-submit-shortcut.tsx",lineNumber:9,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-submit-shortcut.tsx",lineNumber:5,columnNumber:5},void 0),Oa=`flowchart TD
3
+ A[Christmas] -->|Get money| B(Go shopping)
4
+ B --> C{Let me think}
5
+ C -->|One| D[Laptop]
6
+ C -->|Two| E[iPhone]
7
+ C -->|Three| F[Car]`,$a=()=>{const{closeDialog:a}=pt(),{t:s,language:i}=it(),[o,n]=t.useState({loaded:!1,api:Promise.resolve({parseMermaidToDrawnix:async()=>({elements:[]})})});t.useEffect(()=>{(async()=>{try{const w=await It(()=>import("./index-0b_TeH8L.js").then(k=>k.aq),__vite__mapDeps([0]),import.meta.url);n({loaded:!0,api:Promise.resolve(w)})}catch(w){console.error("Failed to load mermaid library:",w),R(new Error(s("dialog.error.loadMermaid")))}})()},[]);const[d,b]=t.useState(()=>Oa),[v,U]=t.useState(()=>[]),r=t.useDeferredValue(d.trim()),[h,R]=t.useState(null),S=Vt();t.useEffect(()=>{(async()=>{try{const w=await o.api;let k;try{k=await w.parseMermaidToDrawnix(r)}catch{k=await w.parseMermaidToDrawnix(r.replace(/"/g,"'"))}const{elements:O}=k;U(O),R(null)}catch(w){R(w)}})()},[r,o]);const m=()=>{if(!v.length)return;let p;const w=ds(S);if(w)p=w;else{const k=ls.getBoardContainer(S).getBoundingClientRect(),O=[k.width/2,k.height/2],M=S.viewport.zoom,_=us(S),z=_[0]+O[0]/M,l=_[1]+O[1]/M,g=v,V=Et.getBoundingRectangle(g.filter(I=>!Js.isGroup(I)).map(I=>Et.getRectangleByPoints(I.points)));p=[z-V.width/2,l-V.height/2]}S.insertFragment({elements:JSON.parse(JSON.stringify(v))},p,cs.paste),p&&requestAnimationFrame(()=>{ms(S,p)}),a(ge.mermaidToDrawnix)};return e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"ttd-dialog-desc",children:i==="zh"?e.jsxDEV(e.Fragment,{children:[s("dialog.mermaid.description")," ",e.jsxDEV("a",{href:"https://mermaid.js.org/syntax/flowchart.html",target:"_blank",rel:"noreferrer",children:s("dialog.mermaid.flowchart")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:154,columnNumber:13},void 0),"、",e.jsxDEV("a",{href:"https://mermaid.js.org/syntax/sequenceDiagram.html",target:"_blank",rel:"noreferrer",children:s("dialog.mermaid.sequence")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:162,columnNumber:13},void 0)," ","和"," ",e.jsxDEV("a",{href:"https://mermaid.js.org/syntax/classDiagram.html",target:"_blank",rel:"noreferrer",children:s("dialog.mermaid.class")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:172,columnNumber:13},void 0),s("dialog.mermaid.otherTypes")]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:151,columnNumber:11},void 0):e.jsxDEV(e.Fragment,{children:[s("dialog.mermaid.description")," ",e.jsxDEV("a",{href:"https://mermaid.js.org/syntax/flowchart.html",target:"_blank",rel:"noreferrer",children:s("dialog.mermaid.flowchart")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:185,columnNumber:13},void 0),","," ",e.jsxDEV("a",{href:"https://mermaid.js.org/syntax/sequenceDiagram.html",target:"_blank",rel:"noreferrer",children:s("dialog.mermaid.sequence")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:193,columnNumber:13},void 0),","," ",e.jsxDEV("a",{href:"https://mermaid.js.org/syntax/classDiagram.html",target:"_blank",rel:"noreferrer",children:s("dialog.mermaid.class")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:201,columnNumber:13},void 0),s("dialog.mermaid.otherTypes")]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:182,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:149,columnNumber:7},void 0),e.jsxDEV(js,{children:[e.jsxDEV(ft,{label:s("dialog.mermaid.syntax"),children:e.jsxDEV(Ds,{input:d,placeholder:s("dialog.mermaid.placeholder"),onChange:p=>b(p.target.value),onKeyboardSubmit:()=>{m()}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:214,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:213,columnNumber:9},void 0),e.jsxDEV(ft,{label:s("dialog.mermaid.preview"),panelAction:{action:()=>{m()},label:s("dialog.mermaid.insert")},renderSubmitShortcut:()=>e.jsxDEV(Ss,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:231,columnNumber:39},void 0),children:e.jsxDEV(Is,{value:v,loaded:o.loaded,error:h},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:233,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:223,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:212,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:148,columnNumber:5},void 0)},es=a=>a==="zh"?`# Milkdown 入门
8
+
9
+ Milkdown 是一个强大的所见即所得 Markdown 编辑器,兼具 Markdown 的简洁和现代编辑器的灵活性。它轻量且可扩展,适合从简单到复杂的编辑需求。
10
+
11
+ ## 快速开始
12
+ 最快的方式是使用 @milkdown/crepe。
13
+
14
+ ## 核心概念
15
+ Milkdown 由两部分组成:
16
+ 1. 核心包(@milkdown/core)
17
+ - 插件加载器
18
+ - 内置插件
19
+ 2. 扩展插件
20
+ - 语法支持
21
+ - 命令
22
+ - UI 组件
23
+ - 自定义能力
24
+
25
+ ## 关键特性
26
+ - 📝 所见即所得 Markdown
27
+ - 🎨 可主题化
28
+ - 🎮 可扩展
29
+ - ⚡ Slash 与 Tooltip
30
+ - 🧮 LaTeX 数学公式
31
+ - 📊 表格
32
+ - 🍻 协作(yjs)
33
+ - 💾 剪贴板
34
+ - 👍 Emoji
35
+
36
+ ## 技术栈
37
+ - Prosemirror
38
+ - Remark
39
+ - TypeScript
40
+
41
+ ## 创建你的第一个编辑器
42
+ Milkdown 提供两种方式:
43
+
44
+ ### 🍼 使用 @milkdown/kit(从零构建)
45
+ 适合需要完全控制、自由组合功能的场景。
46
+
47
+ ### 🥞 使用 @milkdown/crepe(开箱即用)
48
+ 适合快速落地、开箱即用的生产环境。
49
+
50
+ ## 下一步
51
+ 🍼 有趣的事实:这个文档也是由 Milkdown 渲染的!`:`# Getting Started with Milkdown
52
+
53
+ Milkdown is a powerful WYSIWYG markdown editor that combines the simplicity of markdown with the flexibility of a modern editor. It's designed to be lightweight yet extensible, making it perfect for both simple and complex editing needs.
54
+
55
+ ## Quick Start
56
+ The fastest way to get started is using @milkdown/crepe.
57
+
58
+ ## Core Concepts
59
+ Milkdown consists of two main parts:
60
+ 1. Core Package (@milkdown/core)
61
+ - Plugin loader
62
+ - Internal plugins
63
+ 2. Additional Plugins
64
+ - Syntax support
65
+ - Commands
66
+ - UI components
67
+ - Custom features
68
+
69
+ ## Key Features
70
+ - 📝 WYSIWYG Markdown
71
+ - 🎨 Themable
72
+ - 🎮 Hackable
73
+ - ⚡ Slash & Tooltip
74
+ - 🧮 Math (LaTeX)
75
+ - 📊 Table
76
+ - 🍻 Collaborate (yjs)
77
+ - 💾 Clipboard
78
+ - 👍 Emoji
79
+
80
+ ## Tech Stack
81
+ - Prosemirror
82
+ - Remark
83
+ - TypeScript
84
+
85
+ ## Creating Your First Editor
86
+ Milkdown provides two distinct approaches to create an editor:
87
+
88
+ ### 🍼 Using @milkdown/kit (Build from Scratch)
89
+ Use this if you want full control and a custom editor from the ground up.
90
+
91
+ ### 🥞 Using @milkdown/crepe (Ready to Use)
92
+ Use this if you want a production-ready editor with minimal setup.
93
+
94
+ ## Next Steps
95
+ 🍼 Fun fact: This documentation is rendered by Milkdown itself!`,Fa=()=>{const{closeDialog:a}=pt(),{t:s,language:i}=it(),[o,n]=t.useState({loaded:!1,api:Promise.resolve({parseMarkdownToDrawnix:(p,w)=>null})});t.useEffect(()=>{(async()=>{try{const w=await It(()=>import("./index-CjeDxq0c.js"),__vite__mapDeps([0]),import.meta.url);n({loaded:!0,api:Promise.resolve(w)})}catch(w){console.error("Failed to load mermaid library:",w),R(new Error(s("dialog.error.loadMermaid")))}})()},[]);const[d,b]=t.useState(()=>es(i)),[v,U]=t.useState(()=>[]),r=t.useDeferredValue(d.trim()),[h,R]=t.useState(null),S=Vt();t.useEffect(()=>{b(es(i))},[i]),t.useEffect(()=>{(async()=>{try{const w=await o.api;let k;try{k=await w.parseMarkdownToDrawnix(r)}catch{k=await w.parseMarkdownToDrawnix(r.replace(/"/g,"'"))}const O=k;O.points=[[0,0]],O&&(U([O]),R(null))}catch(w){R(w)}})()},[r,o]);const m=()=>{if(!v.length)return;let p;const w=ds(S);if(w)p=w;else{const O=ls.getBoardContainer(S).getBoundingClientRect(),M=[O.width/4,O.height/2-20],_=S.viewport.zoom,z=us(S),l=z[0]+M[0]/_,g=z[1]+M[1]/_;p=[l,g]}const k=v;S.insertFragment({elements:JSON.parse(JSON.stringify(k))},p,cs.paste),p&&requestAnimationFrame(()=>{ms(S,p)}),a(ge.markdownToDrawnix)};return e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"ttd-dialog-desc",children:s("dialog.markdown.description")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/markdown-to-drawnix.tsx",lineNumber:238,columnNumber:7},void 0),e.jsxDEV(js,{children:[e.jsxDEV(ft,{label:s("dialog.markdown.syntax"),children:e.jsxDEV(Ds,{input:d,placeholder:s("dialog.markdown.placeholder"),onChange:p=>b(p.target.value),onKeyboardSubmit:()=>{m()}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/markdown-to-drawnix.tsx",lineNumber:243,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/markdown-to-drawnix.tsx",lineNumber:242,columnNumber:9},void 0),e.jsxDEV(ft,{label:s("dialog.markdown.preview"),panelAction:{action:()=>{m()},label:s("dialog.markdown.insert")},renderSubmitShortcut:()=>e.jsxDEV(Ss,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/markdown-to-drawnix.tsx",lineNumber:260,columnNumber:39},void 0),children:e.jsxDEV(Is,{value:v,loaded:o.loaded,error:h},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/markdown-to-drawnix.tsx",lineNumber:262,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/markdown-to-drawnix.tsx",lineNumber:252,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/markdown-to-drawnix.tsx",lineNumber:241,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/markdown-to-drawnix.tsx",lineNumber:237,columnNumber:5},void 0)},ts=(a,s,i)=>{const o=i==="image"?{isGenerating:a,imageLoading:s}:{isGenerating:a,videoLoading:s};window.dispatchEvent(new CustomEvent("ai-generation-state-change",{detail:o}))},Vs=(a,s,i)=>{t.useEffect(()=>{const o=n=>{(n.metaKey||n.ctrlKey)&&n.key==="Enter"&&(n.preventDefault(),!a&&s.trim()&&i())};return document.addEventListener("keydown",o),()=>{document.removeEventListener("keydown",o)}},[a,s,i])},Cs=a=>{const[s,i]=t.useState(!1),[o,n]=t.useState(!1),d=t.useCallback(v=>{i(v),ts(v,o,a)},[o,a]),b=t.useCallback(v=>{n(v),ts(s,v,a)},[s,a]);return{isGenerating:s,isLoading:o,updateIsGenerating:d,updateIsLoading:b}},Ba=(a,s,i)=>s==="image"?a==="zh"?"一只可爱的小猫坐在窗台上,阳光透过窗户洒在它的毛发上,背景是温馨的家居环境":"A cute kitten sitting on a windowsill, with sunlight streaming through the window onto its fur, with a cozy home environment in the background":i==="sora"?a==="zh"?"描述视频内容,输入 @ 可引用已创建的角色,如 @username 在海边漫步...":"Describe video content, type @ to reference created characters, e.g. @username walking on the beach...":a==="zh"?"生成一个美丽的日出场景,阳光从山峰后缓缓升起,云朵轻柔地飘动":"Generate a beautiful sunrise scene where the sun slowly rises from behind mountains with clouds gently floating",Ga=[1,2,3,4,5,10,20,50,100],Wa="aitu_image_generation_quantity",Ka="aitu_video_generation_quantity",yt=100,Us=({language:a,type:s,isGenerating:i,hasGenerated:o,canGenerate:n,onGenerate:d,onReset:b,leftContent:v})=>{const U=s==="video"?Ka:Wa,[r,h]=t.useState(()=>{try{const l=localStorage.getItem(U);if(l){const g=parseInt(l,10);if(!isNaN(g)&&g>=1&&g<=yt)return g}}catch{}return 1}),[R,S]=t.useState(!1),[m,p]=t.useState(()=>r.toString()),w=t.useRef(null);t.useEffect(()=>{p(r.toString());try{localStorage.setItem(U,r.toString())}catch{}},[r,U]),t.useEffect(()=>{const l=g=>{w.current&&!w.current.contains(g.target)&&(S(!1),k())};return document.addEventListener("mousedown",l),()=>document.removeEventListener("mousedown",l)},[m]);const k=()=>{let l=parseInt(m,10);(isNaN(l)||l<1)&&(l=1),l>yt&&(l=yt),p(l.toString()),h(l)},O=l=>{const g=l.target.value;(g===""||/^\d*$/.test(g))&&p(g)},M=l=>{h(l),p(l.toString()),S(!1)},_=()=>{i||S(!R)},z=()=>{d(r)};return e.jsxDEV("div",{className:"section-actions unified-action-bar",children:[v&&e.jsxDEV("div",{className:"action-bar-left",children:v},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:115,columnNumber:23},void 0),e.jsxDEV("div",{className:`unified-action-box ${i?"is-generating":""} ${n?"can-generate":""}`,children:[e.jsxDEV("div",{className:"quantity-section",ref:w,children:[e.jsxDEV(st,{content:a==="zh"?"生成数量":"Quantity",theme:"light",children:e.jsxDEV("div",{className:`quantity-control ${R?"is-open":""} ${i?"is-disabled":""}`,children:[e.jsxDEV("input",{type:"text",inputMode:"numeric",value:m,onChange:O,onBlur:k,"data-track":"ai_click_quantity_input",onClick:()=>!i&&S(!0),disabled:i,className:"quantity-input"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:134,columnNumber:15},void 0),e.jsxDEV("button",{type:"button","data-track":"ai_click_quantity_toggle",onClick:l=>{l.stopPropagation(),_()},disabled:i,className:"quantity-toggle",children:e.jsxDEV(Xs,{className:`quantity-icon ${R?"is-open":""}`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:155,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:145,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:129,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:125,columnNumber:11},void 0),R&&e.jsxDEV("div",{className:"quantity-dropdown",children:[e.jsxDEV("div",{className:"quantity-dropdown-header",children:a==="zh"?"选择数量":"Select Quantity"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:165,columnNumber:15},void 0),Ga.map(l=>e.jsxDEV("button",{type:"button","data-track":"ai_click_quantity_select",onClick:()=>M(l),className:`quantity-option ${r===l?"is-selected":""}`,children:[e.jsxDEV("span",{children:[l," ",s==="video"?a==="zh"?"个":l>1?"videos":"video":a==="zh"?"张":l>1?"images":"image"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:178,columnNumber:19},void 0),r===l&&e.jsxDEV("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e.jsxDEV("polyline",{points:"20 6 9 17 4 12"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:201,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:193,columnNumber:21},void 0)]},l,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:169,columnNumber:17},void 0))]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:164,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:124,columnNumber:9},void 0),e.jsxDEV("div",{className:"action-divider"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:211,columnNumber:9},void 0),e.jsxDEV("button",{"data-track":"ai_click_generate",onClick:z,disabled:i||!n,className:`generate-button ${i?"loading":""}`,children:i?a==="zh"?"生成中...":"Generating...":o?a==="zh"?"重新生成":"Regenerate":s==="video"?a==="zh"?"生成视频":"Generate Video":a==="zh"?"生成":"Generate"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:214,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:118,columnNumber:7},void 0),e.jsxDEV(st,{content:a==="zh"?"重置表单":"Reset form",theme:"light",children:e.jsxDEV(ct,{"data-track":"ai_click_reset",onClick:b,disabled:i,variant:"text",shape:"circle",icon:e.jsxDEV(Qs,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:249,columnNumber:17},void 0),className:"action-button--reset-subtle"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:243,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:239,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:113,columnNumber:5},void 0)},qs=({error:a})=>a?e.jsxDEV("div",{className:"form-error",children:a},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ErrorDisplay.tsx",lineNumber:11,columnNumber:5},void 0):null,Ts=({visible:a,query:s,position:i,showBelow:o=!1,selectedIndex:n,onSelect:d,onClose:b})=>{const{completedCharacters:v,isLoading:U}=ks(),r=t.useRef(null),h=t.useMemo(()=>{if(!s)return v;const m=s.toLowerCase();return v.filter(p=>p.username.toLowerCase().includes(m))},[v,s]);t.useEffect(()=>{if(!a||!r.current)return;const m=r.current.querySelector(".character-mention-popup__item--selected");m&&m.scrollIntoView({block:"nearest"})},[a,n]),t.useEffect(()=>{if(!a)return;const m=p=>{r.current&&!r.current.contains(p.target)&&b()};return document.addEventListener("mousedown",m),()=>document.removeEventListener("mousedown",m)},[a,b]);const R=t.useCallback(m=>{Zs.track("character_used_in_prompt",{characterId:m.id,username:m.username}),d(m)},[d]);if(!a)return null;const S={position:"fixed",top:i.top,left:i.left,transform:o?"none":"translateY(-100%)",zIndex:fs.DROPDOWN_PORTAL,maxHeight:"200px",overflowY:"auto"};return U?e.jsxDEV("div",{ref:r,className:"character-mention-popup",style:S,children:e.jsxDEV("div",{className:"character-mention-popup__empty",children:"加载中..."},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterMentionPopup.tsx",lineNumber:115,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterMentionPopup.tsx",lineNumber:110,columnNumber:7},void 0):h.length===0?e.jsxDEV("div",{ref:r,className:"character-mention-popup",style:S,children:e.jsxDEV("div",{className:"character-mention-popup__empty",children:s?`未找到 "${s}" 相关角色`:"暂无可用角色"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterMentionPopup.tsx",lineNumber:127,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterMentionPopup.tsx",lineNumber:122,columnNumber:7},void 0):e.jsxDEV("div",{ref:r,className:"character-mention-popup",style:S,children:h.map((m,p)=>e.jsxDEV("div",{className:`character-mention-popup__item ${p===n?"character-mention-popup__item--selected":""}`,onClick:()=>R(m),"data-track":"character_click_mention",children:[e.jsxDEV("div",{className:"character-mention-popup__item-avatar",children:e.jsxDEV(Ra,{characterId:m.id,profilePictureUrl:m.profilePictureUrl,alt:m.username},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterMentionPopup.tsx",lineNumber:148,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterMentionPopup.tsx",lineNumber:147,columnNumber:11},void 0),e.jsxDEV("span",{className:"character-mention-popup__item-name",children:["@",m.username]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterMentionPopup.tsx",lineNumber:154,columnNumber:11},void 0)]},m.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterMentionPopup.tsx",lineNumber:141,columnNumber:9},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterMentionPopup.tsx",lineNumber:135,columnNumber:5},void 0)},Ha={visible:!1,query:"",position:{top:0,left:0},showBelow:!1,startIndex:-1,selectedIndex:0};function _s({enabled:a=!0,onPromptChange:s,prompt:i}){const[o,n]=t.useState(Ha),d=t.useRef(null),{completedCharacters:b}=ks(),v=t.useCallback(m=>{if(!d.current)return{top:0,left:0,showBelow:!1};const p=d.current,w=p.getBoundingClientRect(),k=document.createElement("div"),O=window.getComputedStyle(p),M=["fontFamily","fontSize","fontWeight","fontStyle","letterSpacing","lineHeight","textTransform","wordSpacing","whiteSpace","paddingTop","paddingRight","paddingBottom","paddingLeft","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","boxSizing"];k.style.position="absolute",k.style.top="0",k.style.left="-9999px",k.style.visibility="hidden",k.style.whiteSpace="pre-wrap",k.style.overflowWrap="break-word",k.style.overflow="hidden",k.style.width=`${p.clientWidth}px`,M.forEach(B=>{k.style[B]=O.getPropertyValue(B.replace(/([A-Z])/g,"-$1").toLowerCase())}),document.body.appendChild(k);let _=0,z=0;try{const B=p.value.substring(0,m),se=document.createTextNode(B),W=document.createElement("span");W.textContent="​",k.appendChild(se),k.appendChild(W);const oe=W.getBoundingClientRect(),E=k.getBoundingClientRect();_=oe.top-E.top,z=oe.left-E.left}finally{document.body.removeChild(k)}const l=p.scrollTop,g=parseInt(O.lineHeight)||20;let V=w.top+_-l,I=w.left+z;const L=240,X=window.innerWidth;I+L>X-16&&(I=X-L-16),I<16&&(I=16);const ee=V<220+16;return ee?V=V+g+4:V=V-48,{top:V,left:I,showBelow:ee}},[]),U=t.useCallback((m,p)=>{if(!a)return;const w=m.substring(0,p),k=w.lastIndexOf("@");if(k===-1){n(z=>({...z,visible:!1}));return}const O=k>0?m[k-1]:" ";if(!/\s/.test(O)&&k!==0){n(z=>({...z,visible:!1}));return}const M=w.substring(k+1);if(M.includes(" ")){n(z=>({...z,visible:!1}));return}const _=v(p);n({visible:!0,query:M,position:{top:_.top,left:_.left},showBelow:_.showBelow,startIndex:k,selectedIndex:0})},[a,v]),r=t.useCallback(m=>{var M;if(o.startIndex===-1)return;const p=i.substring(0,o.startIndex),w=((M=d.current)==null?void 0:M.selectionStart)||i.length,k=i.substring(w),O=`${p}@${m.username} ${k}`;s(O),n(_=>({..._,visible:!1})),setTimeout(()=>{if(d.current){const _=p.length+m.username.length+2;d.current.focus(),d.current.setSelectionRange(_,_)}},0)},[o.startIndex,i,s]),h=t.useCallback(m=>{if(!o.visible)return;const p=o.query?b.filter(w=>w.username.toLowerCase().includes(o.query.toLowerCase())):b;switch(m.key){case"ArrowDown":m.preventDefault(),n(w=>({...w,selectedIndex:Math.min(w.selectedIndex+1,p.length-1)}));break;case"ArrowUp":m.preventDefault(),n(w=>({...w,selectedIndex:Math.max(w.selectedIndex-1,0)}));break;case"Enter":case"Tab":p.length>0&&(m.preventDefault(),r(p[o.selectedIndex]));break;case"Escape":m.preventDefault(),n(w=>({...w,visible:!1}));break}},[o,b,r]),R=t.useCallback((m,p)=>{s(m),U(m,p)},[s,U]),S=t.useCallback(()=>{n(m=>({...m,visible:!1}))},[]);return{mentionState:o,setMentionState:n,textareaRef:d,completedCharacters:b,handleTextChange:R,handleKeyDown:h,handleCharacterSelect:r,closeMentionPopup:S,calculateMentionPosition:v}}const Ps=({prompt:a,onPromptChange:s,presetPrompts:i,language:o,type:n,disabled:d=!1,onError:b,enableMention:v=!0,videoProvider:U})=>{const[r,h]=t.useState(!1),R=t.useRef(null),S=t.useRef(null),[m,p]=t.useState(null),[w,k]=t.useState(0),{imageHistory:O,videoHistory:M}=Ct();t.useEffect(()=>{if(typeof Be.subscribeChanges=="function")return Be.subscribeChanges(()=>{k(E=>E+1)})},[]);const _=t.useMemo(()=>_a({generationType:n,language:o,promptContents:i,imageHistory:O,videoHistory:M}),[O,o,n,i,w,M]),z=v&&n==="video"&&U==="sora",{mentionState:l,textareaRef:g,handleTextChange:V,handleKeyDown:I,handleCharacterSelect:L,closeMentionPopup:X}=_s({enabled:z,onPromptChange:s,prompt:a}),Q=t.useCallback(()=>{if(S.current&&r){const E=S.current.getBoundingClientRect(),F=8,A=320,le=400,we=window.innerHeight-E.top+4,ye=Math.min(A,window.innerWidth-F*2),ue=window.innerWidth-E.right,G=window.innerWidth-ye-F,re=Math.max(Math.min(ue,G),F),ce=Math.min(le,E.top-F,window.innerHeight*.45);p({bottom:we,right:re,maxHeight:ce})}},[r]);t.useEffect(()=>{if(r)return Q(),window.addEventListener("scroll",Q,!0),window.addEventListener("resize",Q),()=>{window.removeEventListener("scroll",Q,!0),window.removeEventListener("resize",Q)}},[r,Q]),t.useEffect(()=>{const E=F=>{const A=F.target;if(R.current&&!R.current.contains(A)){const le=document.querySelector(".preset-prompt-panel-portal");le!=null&&le.contains(A)||h(!1)}};if(r)return document.addEventListener("mousedown",E),()=>document.removeEventListener("mousedown",E)},[r]);const ee=t.useCallback(E=>{const F=typeof E=="string"?E:E.content;s(F),b==null||b(null),h(!1)},[s,b]),B=t.useCallback(E=>{const F=_.find(A=>A.id===E);F&&(F.pinned?Be.unpinPrompt(n,F.content):Be.pinPrompt(n,F.content),k(A=>A+1))},[n,_]),se=t.useCallback(E=>{const F=_.find(A=>A.id===E);F&&(Be.deletePrompt(n,F.content),k(A=>A+1))},[n,_]),W=t.useCallback(E=>{const F=E.target.value,A=E.target.selectionStart||0;V(F,A),b==null||b(null)},[V,b]);t.useEffect(()=>{n!=="video"&&X()},[n,X]);const oe=()=>{if(!r||!m)return null;const E=o==="zh"?`${n==="image"?"图片":"视频"}描述预设`:`${n==="image"?"Image":"Video"} Description Presets`,F=e.jsxDEV("div",{className:"preset-prompt-panel-portal",style:{position:"fixed",bottom:m.bottom,right:m.right,zIndex:fs.DIALOG_POPOVER,"--panel-max-width":"calc(100vw - 16px)","--panel-max-height":`${m.maxHeight}px`},children:e.jsxDEV(sa,{title:E,items:_,onSelect:ee,onTogglePin:B,onDelete:se,language:o,disabled:d,showCount:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:256,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:242,columnNumber:7},void 0);return aa.createPortal(F,document.body)};return e.jsxDEV("div",{className:"form-field form-field--prompt",children:[e.jsxDEV("div",{className:"form-label-with-icon",children:[e.jsxDEV("label",{className:"form-label",children:o==="zh"?`${n==="image"?"图片":"视频"}描述`:`${n==="image"?"Image":"Video"} Description`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:275,columnNumber:9},void 0),e.jsxDEV("div",{className:"textarea-with-preset",children:e.jsxDEV("div",{className:"preset-tooltip-container",ref:R,children:[e.jsxDEV("button",{ref:S,type:"button",className:"preset-icon-button",disabled:d,onClick:()=>h(!r),children:e.jsxDEV(ea,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:289,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:282,columnNumber:13},void 0),oe()]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:281,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:280,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:274,columnNumber:7},void 0),e.jsxDEV("div",{className:"prompt-textarea-wrapper",children:[e.jsxDEV("textarea",{ref:g,className:"form-textarea",value:a,onChange:W,onKeyDown:I,placeholder:Ba(o,n,U),rows:4,disabled:d},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:296,columnNumber:9},void 0),e.jsxDEV(ta,{className:"prompt-optimize-button",originalPrompt:a,language:o,scenarioId:n==="image"?"tool.image":"tool.video",disabled:d,tooltipPlacement:"top",allowStructuredMode:!0,onApply:E=>{s(E),b==null||b(null)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:306,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:295,columnNumber:7},void 0),z&&e.jsxDEV(Ts,{visible:l.visible,query:l.query,position:l.position,showBelow:l.showBelow,selectedIndex:l.selectedIndex,onSelect:L,onClose:X},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:323,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:273,columnNumber:5},void 0)};function Ms(){return ia("scene")}function ss(a,s){return{id:Ms(),order:a,duration:s,prompt:""}}function Ya(a,s,i=1){if(a.length===0)return{valid:!1,error:"至少需要一个场景"};for(const n of a){if(n.duration<i)return{valid:!1,error:`场景 ${n.order} 时长不能少于 ${i} 秒`};if(n.duration>s)return{valid:!1,error:`场景 ${n.order} 时长不能超过 ${s} 秒`}}const o=a.find(n=>!n.prompt.trim());return o?{valid:!1,error:`场景 ${o.order} 需要填写提示词`}:{valid:!0}}function Ja(a){return a.sort((s,i)=>s.order-i.order).map((s,i)=>`Shot ${i+1}:
96
+ duration: ${s.duration}sec
97
+ Scene: ${s.prompt.trim()}`).join(`
98
+
99
+ `)}function Xa(a){const s=/Shot\s+(\d+):\s*\n\s*duration:\s*([\d.]+)\s*sec\s*\n\s*Scene:\s*([^\n]+(?:\n(?!Shot\s+\d+:)[^\n]*)*)/gi,i=[];let o;for(;(o=s.exec(a))!==null;){const n=parseInt(o[1],10),d=parseFloat(o[2]),b=o[3].trim();i.push({id:Ms(),order:n,duration:d,prompt:b})}return i.length===0?null:i.sort((n,d)=>n.order-d.order)}const Qa=({value:a,onChange:s,placeholder:i,disabled:o=!1,autoFocus:n=!1,enableMention:d=!0})=>{const{mentionState:b,textareaRef:v,handleTextChange:U,handleKeyDown:r,handleCharacterSelect:h,closeMentionPopup:R}=_s({enabled:d,onPromptChange:s,prompt:a}),S=t.useCallback(m=>{const p=m.target.value,w=m.target.selectionStart||0;U(p,w)},[U]);return t.useEffect(()=>{n&&v.current&&v.current.focus()},[n,v]),e.jsxDEV("div",{className:"scene-prompt-input",children:[e.jsxDEV("textarea",{ref:v,className:"scene-prompt-input__textarea",value:a,onChange:S,onKeyDown:r,placeholder:i,disabled:o,rows:3},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ScenePromptInput.tsx",lineNumber:59,columnNumber:7},void 0),d&&e.jsxDEV(Ts,{visible:b.visible,query:b.query,position:b.position,showBelow:b.showBelow,selectedIndex:b.selectedIndex,onSelect:h,onClose:R},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ScenePromptInput.tsx",lineNumber:72,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ScenePromptInput.tsx",lineNumber:58,columnNumber:5},void 0)},Za=({enabled:a,onEnabledChange:s,totalDuration:i,maxScenes:o,minSceneDuration:n,scenes:d,onScenesChange:b,disabled:v=!1})=>{const[U,r]=t.useState(null),h=t.useRef(null),R=d.map(l=>l.id).join("|");t.useEffect(()=>{if(!a||d.length===0)return;!(U?d.some(g=>g.id===U):!1)&&U!==d[0].id&&r(d[0].id)},[a,R,d,U]);const S=t.useCallback(()=>{if(d.length>=o)return;const l=d.reduce((L,X)=>L+X.duration,0),g=i-l;let V=Math.max(n,g/2);V=parseFloat(V.toFixed(1)),V<n&&(V=n);const I=ss(d.length+1,V);b([...d,I]),r(I.id),setTimeout(()=>{var L;(L=h.current)==null||L.scrollIntoView({behavior:"smooth"})},100)},[d,o,i,n,b]),m=t.useCallback(l=>{var I;if(d.length<=1)return;const V=d.filter(L=>L.id!==l).map((L,X)=>({...L,order:X+1}));b(V),U===l&&r(((I=V[0])==null?void 0:I.id)||null)},[d,b,U]),p=t.useCallback(l=>{const g=d.filter(V=>V.id!==l).reduce((V,I)=>V+I.duration,0);return Math.max(n,i-g)},[d,i,n]),w=t.useCallback(l=>{const g=p(l),V=[],I=.1;for(let L=n;L<=g+.001;L+=I){const X=parseFloat(L.toFixed(1));X<=g&&V.push({label:`${X}`,value:X})}return V},[n,p]),k=t.useCallback((l,g)=>{const V=typeof g=="string"?parseFloat(g):g;if(isNaN(V))return;const I=p(l),L=d.map(X=>{if(X.id===l){const Q=Math.max(n,Math.min(V,I)),ee=parseFloat(Q.toFixed(1));return ee===X.duration?X:{...X,duration:ee}}return X});L.every((X,Q)=>X===d[Q])||b(L)},[d,n,p,b]),O=t.useCallback((l,g)=>{const V=d.find(L=>L.id===l);if((V==null?void 0:V.prompt)===g)return;const I=d.map(L=>L.id===l?{...L,prompt:g}:L);b(I)},[d,b]),M=t.useCallback(l=>{if(s(l),l&&d.length===0){const g=ss(1,i);b([g]),r(g.id)}},[d,i,s,b]),_=t.useCallback(l=>{r(l)},[]),z=d.length<o;return e.jsxDEV("div",{className:"storyboard-editor",children:[e.jsxDEV("div",{className:"storyboard-editor__header",children:[e.jsxDEV("div",{className:"storyboard-editor__toggle",children:[e.jsxDEV(na,{value:a,onChange:M,disabled:v,size:"small"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:229,columnNumber:11},void 0),e.jsxDEV("div",{className:"storyboard-editor__title",children:[e.jsxDEV("span",{className:"storyboard-editor__title-text",children:"故事场景模式"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:236,columnNumber:13},void 0),e.jsxDEV("span",{className:"storyboard-editor__title-desc",children:"定义多个场景及其时长"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:237,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:235,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:228,columnNumber:9},void 0),a&&e.jsxDEV("span",{className:"storyboard-editor__new-badge",children:"NEW"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:243,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:227,columnNumber:7},void 0),a&&e.jsxDEV("div",{className:"storyboard-editor__content",children:[e.jsxDEV("div",{className:"storyboard-editor__section-header",children:[e.jsxDEV("span",{className:"storyboard-editor__section-title",children:"场景列表"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:252,columnNumber:13},void 0),e.jsxDEV("span",{className:"storyboard-editor__section-hint",children:["共 ",d.length," 个场景,已用 ",d.reduce((l,g)=>l+g.duration,0).toFixed(1)," 秒 / 总时长 ",i," 秒"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:253,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:251,columnNumber:11},void 0),e.jsxDEV("div",{className:"storyboard-editor__scenes",children:[d.map((l,g)=>{const V=U===l.id,I=g===d.length-1;return e.jsxDEV("div",{className:`storyboard-editor__scene-wrapper ${V?"is-selected":""}`,children:[e.jsxDEV("div",{className:`storyboard-editor__timeline-line ${I?"is-last":""}`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:270,columnNumber:19},void 0),e.jsxDEV("div",{className:`storyboard-editor__timeline-node ${V?"is-selected":""}`,children:V?g+1:""},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:273,columnNumber:19},void 0),!V&&e.jsxDEV("div",{className:"storyboard-editor__scene storyboard-editor__scene--compact",onClick:()=>_(l.id),children:[e.jsxDEV("span",{className:"storyboard-editor__scene-index",children:g+1},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:283,columnNumber:23},void 0),e.jsxDEV("div",{className:"storyboard-editor__scene-preview",children:e.jsxDEV("p",{className:"storyboard-editor__scene-preview-text",children:l.prompt||"暂无场景描述..."},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:285,columnNumber:25},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:284,columnNumber:23},void 0),e.jsxDEV("div",{className:"storyboard-editor__scene-duration-badge",children:[e.jsxDEV(Mt,{size:"12px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:290,columnNumber:25},void 0),e.jsxDEV("span",{children:[l.duration,"s"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:291,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:289,columnNumber:23},void 0),e.jsxDEV(ps,{className:"storyboard-editor__scene-arrow",size:"14px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:293,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:279,columnNumber:21},void 0),V&&e.jsxDEV("div",{className:"storyboard-editor__scene storyboard-editor__scene--expanded",children:[e.jsxDEV("div",{className:"storyboard-editor__scene-header",children:[e.jsxDEV("div",{className:"storyboard-editor__scene-info",children:e.jsxDEV("span",{className:"storyboard-editor__scene-label",children:[e.jsxDEV("span",{className:"storyboard-editor__active-indicator"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:303,columnNumber:29},void 0),"场景 ",g+1]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:302,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:301,columnNumber:25},void 0),e.jsxDEV("div",{className:"storyboard-editor__scene-controls",children:[e.jsxDEV(Mt,{className:"storyboard-editor__time-icon"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:308,columnNumber:27},void 0),e.jsxDEV(oa,{value:parseFloat(l.duration.toFixed(1)),onChange:L=>k(l.id,L),disabled:v,className:"storyboard-editor__duration-select",size:"small",options:w(l.id),filterable:!0,creatable:!0,popupProps:{overlayClassName:"storyboard-editor__duration-popup"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:309,columnNumber:27},void 0),d.length>1&&e.jsxDEV(ct,{theme:"default",variant:"text",size:"small",icon:e.jsxDEV(gs,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:325,columnNumber:37},void 0),onClick:L=>{L.stopPropagation(),m(l.id)},disabled:v,className:"storyboard-editor__scene-delete"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:321,columnNumber:29},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:307,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:300,columnNumber:23},void 0),e.jsxDEV("div",{className:"storyboard-editor__scene-prompt",children:e.jsxDEV(Qa,{value:l.prompt,onChange:L=>O(l.id,L),placeholder:`描述场景 ${g+1} 的内容,输入 @ 可引用角色`,disabled:v,autoFocus:!0,enableMention:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:337,columnNumber:25},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:336,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:299,columnNumber:21},void 0)]},l.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:265,columnNumber:17},void 0)}),e.jsxDEV("div",{ref:h},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:351,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:259,columnNumber:11},void 0),z&&e.jsxDEV(ct,{theme:"default",variant:"dashed",size:"medium",icon:e.jsxDEV(ra,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:360,columnNumber:21},void 0),onClick:S,disabled:v,className:"storyboard-editor__add-btn",block:!0,children:"添加场景"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:356,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:249,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:225,columnNumber:5},void 0)},Rs="aitu-dialog-task-list-width-",Ut=240,qt=800,ei=()=>{const a=Math.round(660);return Math.max(Ut,Math.min(qt,a))},As=a=>{try{const s=localStorage.getItem(Rs+a);if(s){const i=parseInt(s,10);if(!isNaN(i)&&i>=Ut&&i<=qt)return i}}catch{}return ei()},as=(a,s)=>{try{localStorage.setItem(Rs+a,s.toString())}catch{}},Ls=({isRightPanelVisible:a,onToggleRightPanel:s,onWidthChange:i,rightPanelWidth:o,minWidth:n=Ut,maxWidth:d=qt,onResizeStart:b,onResizeEnd:v,language:U="zh",disabled:r=!1,storageKey:h="image"})=>{const[R,S]=t.useState(!1),m=t.useRef(0),p=t.useRef(0);t.useEffect(()=>(R?(document.body.style.userSelect="none",document.body.style.cursor="col-resize"):(document.body.style.userSelect="",document.body.style.cursor=""),()=>{document.body.style.userSelect="",document.body.style.cursor=""}),[R]);const w=t.useCallback(O=>{if(r||!a)return;O.preventDefault(),O.stopPropagation(),S(!0),m.current=O.clientX,p.current=o,b==null||b();const M=z=>{const l=m.current-z.clientX,g=Math.max(n,Math.min(d,p.current+l));i(g)},_=()=>{S(!1),v==null||v(),p.current+(m.current-document.body.getBoundingClientRect().left),as(h,o),document.removeEventListener("mousemove",M),document.removeEventListener("mouseup",_)};document.addEventListener("mousemove",M),document.addEventListener("mouseup",_)},[r,a,o,n,d,i,b,v,h]);t.useEffect(()=>{!R&&a&&as(h,o)},[o,R,a,h]);const k=a?U==="zh"?"隐藏任务列表":"Hide Task List":U==="zh"?"显示任务列表":"Show Task List";return e.jsxDEV("div",{className:`resizable-divider ${R?"is-dragging":""} ${a?"":"is-collapsed"} ${r?"is-disabled":""}`,onMouseDown:w,children:[e.jsxDEV("div",{className:"resizable-divider__bar"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ResizableDivider.tsx",lineNumber:185,columnNumber:7},void 0),e.jsxDEV(st,{content:k,placement:"left",children:e.jsxDEV("button",{type:"button",className:"resizable-divider__toggle",onClick:O=>{O.stopPropagation(),s()},"aria-label":k,children:a?e.jsxDEV(ps,{size:"14px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ResizableDivider.tsx",lineNumber:197,columnNumber:13},void 0):e.jsxDEV(da,{size:"14px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ResizableDivider.tsx",lineNumber:199,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ResizableDivider.tsx",lineNumber:187,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ResizableDivider.tsx",lineNumber:186,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ResizableDivider.tsx",lineNumber:179,columnNumber:5},void 0)},zs=({storageKey:a,language:s})=>{const[i,o]=t.useState(()=>{try{return localStorage.getItem(a)!=="false"}catch{return!0}}),n=t.useCallback(d=>{o(d);try{localStorage.setItem(a,String(d))}catch{}},[a]);return e.jsxDEV(st,{content:s==="zh"?"生成后自动插入画布":"Auto insert to canvas after generation",theme:"light",children:e.jsxDEV(la,{checked:i,onChange:n,className:"auto-insert-checkbox"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/AutoInsertCheckbox.tsx",lineNumber:43,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/AutoInsertCheckbox.tsx",lineNumber:35,columnNumber:5},void 0)};function Dt(a){try{return localStorage.getItem(a)!=="false"}catch{return!0}}function ti(a={}){const{taskType:s}=a,{tasks:i,isLoading:o}=ua(),{retryTask:n,deleteTask:d}=ca(),b=t.useMemo(()=>[...s?i.filter(h=>h.type===s):i].sort((h,R)=>R.createdAt-h.createdAt),[i,s]),v=t.useCallback(async()=>{},[]),U=t.useCallback(async()=>{if(ma(),!await Rt.isAvailable())return;const h=await Rt.getAllTasks();h.length>0&&fa.restoreTasks(h)},[]);return{tasks:b,isLoading:o,isLoadingMore:!1,hasMore:!1,totalCount:b.length,loadedCount:b.length,loadMore:v,refresh:U,retryTask:n,deleteTask:d}}const Os=({taskIds:a,taskType:s,onEditTask:i})=>{const{tasks:o,isLoading:n,isLoadingMore:d,hasMore:b,totalCount:v,loadedCount:U,loadMore:r,retryTask:h,deleteTask:R}=ti({taskType:s}),{board:S,openDialog:m}=pt(),[p,w]=t.useState(!1),[k,O]=t.useState(null),[M,_]=t.useState(!1),[z,l]=t.useState(0),[g,V]=t.useState("single"),[I,L]=t.useState(""),[X,Q]=t.useState(null),[ee,B]=t.useState(!1),se=t.useMemo(()=>o.filter(f=>f.status===ze.FAILED).length,[o]),W=t.useCallback(()=>{const f=o.filter(c=>c.status===ze.FAILED);f.forEach(c=>R(c.id)),B(!1),qe.success(`已清除 ${f.length} 个失败任务`)},[o,R]),oe=(f,c)=>{var ae,y,De,pe,Ve,Ne,he,ve,be,ke,Ce;if(!c.trim())return!0;const q=c.toLowerCase().split(/\s+/).filter(Boolean),C={[ze.PENDING]:"处理中",[ze.PROCESSING]:"处理中",[ze.COMPLETED]:"已完成",[ze.FAILED]:"失败",[ze.CANCELLED]:"已取消"},P=[],K=(ae=f.params)!=null&&ae.params&&typeof f.params.params=="object"?f.params.params:null;P.push(((y=f.params)==null?void 0:y.prompt)??""),P.push(((De=f.params)==null?void 0:De.model)??""),P.push(f.id??""),P.push(C[f.status]??String(f.status)),(pe=f.params)!=null&&pe.batchId&&P.push(String(f.params.batchId)),(Ve=f.params)!=null&&Ve.batchIndex&&P.push(String(f.params.batchIndex)),(Ne=f.params)!=null&&Ne.batchTotal&&P.push(String(f.params.batchTotal)),typeof(K==null?void 0:K.model_name)=="string"&&P.push(K.model_name),typeof(K==null?void 0:K.mode)=="string"&&P.push(K.mode),typeof(K==null?void 0:K.klingAction2)=="string"&&P.push(K.klingAction2),(he=f.result)!=null&&he.format&&P.push(String(f.result.format)),(ve=f.result)!=null&&ve.width&&((be=f.result)!=null&&be.height)?P.push(`${f.result.width}x${f.result.height}`):(ke=f.params)!=null&&ke.width&&((Ce=f.params)!=null&&Ce.height)&&P.push(`${f.params.width}x${f.params.height}`);const J=P.join(" ").toLowerCase();return q.every(Ue=>J.includes(Ue))},E=t.useMemo(()=>{let f=o;return a&&a.length>0&&(f=f.filter(c=>a.includes(c.id))),I.trim()&&(f=f.filter(c=>oe(c,I))),f.sort((c,q)=>q.createdAt-c.createdAt)},[o,a,I]),F=f=>{h(f)},A=f=>{O(f),w(!0)},le=()=>{k&&R(k),w(!1),O(null)},we=async f=>{const c=o.find(C=>C.id===f);if(!c)return;const q=wa(c);if(q.length!==0)try{const C=await ya(q);C.openedCount>0&&C.downloadedCount===0?qe.success(C.openedCount>1?`已打开 ${C.openedCount} 个链接,请在新标签页下载`:"资源不支持直接下载,已打开链接"):qe.success(c.type===Ee.AUDIO?q.length>1?"多条音频已开始下载":"音频下载成功":q.length>1?"多图已开始下载":"下载成功")}catch(C){console.error("Download failed:",C),qe.error("下载失败,请稍后重试")}},ye=async f=>{var q,C,P,K;const c=o.find(J=>J.id===f);if(!((q=c==null?void 0:c.result)!=null&&q.url)&&!((P=(C=c==null?void 0:c.result)==null?void 0:C.urls)!=null&&P.length)||!S){console.warn("Cannot insert: task result or board not available"),qe.warning("无法插入:白板未就绪");return}try{if(c.type===Ee.IMAGE){const J=(K=c.result.urls)!=null&&K.length?c.result.urls:[c.result.url];for(const ae of J)await xa(S,ae);qe.success(J.length>1?"多图已插入到白板":"图片已插入到白板")}else c.type===Ee.VIDEO&&(await Na(S,c.result.url),qe.success("视频已插入到白板"))}catch(J){console.error("Failed to insert to board:",J),qe.error(`插入失败: ${J instanceof Error?J.message:"未知错误"}`)}},ue=f=>{var q,C,P,K;const c=o.find(J=>J.id===f);if(!c){console.warn("Cannot edit: task not found");return}if(i){i(c);return}if(c.type===Ee.IMAGE){const J={initialPrompt:c.params.prompt,initialWidth:c.params.width,initialHeight:c.params.height,initialImages:c.params.uploadedImages,initialResultUrl:(q=c.result)==null?void 0:q.url,initialResultUrls:(C=c.result)==null?void 0:C.urls};m(ge.aiImageGeneration,J)}else if(c.type===Ee.VIDEO){const J={initialPrompt:c.params.prompt,initialDuration:typeof c.params.seconds=="string"?parseInt(c.params.seconds,10):c.params.seconds,initialModel:c.params.model,initialSize:c.params.size,initialImages:c.params.uploadedImages,initialResultUrl:(P=c.result)==null?void 0:P.url,initialResultUrls:(K=c.result)==null?void 0:K.urls};m(ge.aiVideoGeneration,J)}},G=f=>{const c=o.find(q=>q.id===f);c&&Q(c)},re=t.useMemo(()=>{const f=new Set;return E.filter(c=>{var q,C,P,K;return c.status!==ze.COMPLETED||!((q=c.result)!=null&&q.url)&&!((P=(C=c.result)==null?void 0:C.urls)!=null&&P.length)||c.type!==Ee.IMAGE&&c.type!==Ee.VIDEO&&!(c.type===Ee.AUDIO&&((K=c.result)==null?void 0:K.resultKind)!=="lyrics")||f.has(c.id)?!1:(f.add(c.id),!0)})},[E]),{previewMediaItems:ce,taskIdToPreviewConfig:me}=t.useMemo(()=>{var q,C,P,K,J,ae;const f=[],c=new Map;for(const y of re){const De=f.length,pe=((q=y.result)==null?void 0:q.title)||y.params.title||((C=y.params.prompt)==null?void 0:C.substring(0,50))||"媒体预览";if(y.type===Ee.AUDIO){const Ne=((K=(P=y.result)==null?void 0:P.clips)==null?void 0:K.filter(be=>!!be.audioUrl).map((be,ke)=>{var Ce,Ue,ie;return{id:be.clipId||be.id||`${y.id}-${ke}`,url:be.audioUrl,type:"audio",title:be.title||((Ce=y.result)!=null&&Ce.clips&&y.result.clips.length>1?`${pe} (${ke+1}/${y.result.clips.length})`:pe),posterUrl:be.imageLargeUrl||be.imageUrl||((Ue=y.result)==null?void 0:Ue.previewImageUrl),duration:typeof be.duration=="number"?be.duration:(ie=y.result)==null?void 0:ie.duration,prompt:y.params.prompt,tags:typeof y.params.tags=="string"?y.params.tags:void 0,artist:y.params.model||y.params.mv||"Aitu",album:"Aitu Generated"}}))??[],he=(J=y.result.urls)!=null&&J.length?y.result.urls:y.result.url?[y.result.url]:[],ve=Ne.length>0?Ne:he.map((be,ke)=>{var Ce,Ue;return{id:he.length>1?`${y.id}-${ke}`:y.id,url:be,type:"audio",title:he.length>1?`${pe} (${ke+1}/${he.length})`:pe,posterUrl:(Ce=y.result)==null?void 0:Ce.previewImageUrl,duration:(Ue=y.result)==null?void 0:Ue.duration,prompt:y.params.prompt,tags:typeof y.params.tags=="string"?y.params.tags:void 0,artist:y.params.model||y.params.mv||"Aitu",album:"Aitu Generated"}});f.push(...ve)}else{const Ne=(ae=y.result.urls)!=null&&ae.length?y.result.urls:[y.result.url],he=y.type===Ee.VIDEO?"video":"image";for(let ve=0;ve<Ne.length;ve++)f.push({id:Ne.length>1?`${y.id}-${ve}`:y.id,url:he==="image"?pa(Ne[ve]):Ne[ve],type:he,title:Ne.length>1?`${pe} (${ve+1}/${Ne.length})`:pe})}const Ve=f.length-De;c.set(y.id,{mode:y.type===Ee.AUDIO&&Ve>1?"compare":"single",index:y.type===Ee.AUDIO&&Ve>1?Array.from({length:Math.min(Ve,4)},(Ne,he)=>De+he):De})}return{previewMediaItems:f,taskIdToPreviewConfig:c}},[re]),D=t.useCallback(f=>{const c=me.get(f);c!==void 0&&(V(c.mode),l(c.index),_(!0))},[me]),te=t.useCallback(()=>{_(!1)},[]),Z=I.trim()&&E.length===0&&o.length>0,fe=v>0?v:o.length;return e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"dialog-task-list",children:[e.jsxDEV("div",{className:"dialog-task-list__header",children:[e.jsxDEV("div",{className:"dialog-task-list__header-main",children:[e.jsxDEV("h4",{children:["生成任务 (",fe,")"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:457,columnNumber:13},void 0),e.jsxDEV("div",{className:"dialog-task-list__header-actions",children:se>0&&e.jsxDEV(st,{content:`清除全部失败任务 (${se})`,theme:"light",children:e.jsxDEV(ct,{size:"small",variant:"text",icon:e.jsxDEV(gs,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:467,columnNumber:27},void 0),onClick:()=>B(!0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:464,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:460,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:458,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:456,columnNumber:11},void 0),e.jsxDEV("div",{className:"dialog-task-list__search",children:e.jsxDEV(ga,{value:I,onChange:f=>L(f),placeholder:"搜索任务(提示词/模型/...)",clearable:!0,prefixIcon:e.jsxDEV(ha,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:480,columnNumber:27},void 0),size:"small"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:475,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:474,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:455,columnNumber:9},void 0),e.jsxDEV(Aa,{tasks:E,onRetry:F,onDelete:A,onDownload:we,onInsert:ye,onEdit:ue,onPreviewOpen:D,onExtractCharacter:G,hasMore:b,isLoadingMore:d,onLoadMore:r,totalCount:fe,loadedCount:U,className:"dialog-task-list__content",emptyContent:e.jsxDEV("div",{className:"dialog-task-list__empty",children:n?e.jsxDEV("p",{children:"加载中..."},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:503,columnNumber:17},void 0):Z?e.jsxDEV("p",{children:"未找到匹配的任务"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:505,columnNumber:17},void 0):e.jsxDEV("p",{children:"暂无生成任务"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:507,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:501,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:485,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:454,columnNumber:7},void 0),e.jsxDEV(At,{open:p,title:"确认删除",description:"确定要删除此任务吗?此操作无法撤销。",confirmText:"删除",cancelText:"取消",danger:!0,onOpenChange:w,onConfirm:le},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:515,columnNumber:7},void 0),e.jsxDEV(At,{open:ee,title:"清除失败任务",description:`确定要清除全部 ${se} 个失败任务吗?此操作无法撤销。`,confirmText:"清除",cancelText:"取消",danger:!0,onOpenChange:B,onConfirm:W},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:527,columnNumber:7},void 0),e.jsxDEV(ba,{visible:M,items:ce,initialMode:g,initialIndex:z,onClose:te,showThumbnails:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:539,columnNumber:7},void 0),e.jsxDEV(La,{visible:!!X,task:X,onClose:()=>Q(null),onCreateComplete:f=>{Q(null)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:549,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:453,columnNumber:5},void 0)};function $s(a){if(!a)return;if(a==="auto")return at;const s=a.replace(/[xX]/g,":");return Ea.some(i=>i.value===s)?s:void 0}function lt(a,s){return $s(a.size)||s||at}function is(a,s,i){if(a.startsWith("mj")||!i)return s;const o=i===at?"auto":jt(i);return!o||!ka(a).some(n=>n.value===o)||s.size===o?s:{...s,size:o}}const si=({initialPrompt:a="",initialImages:s=[],selectedElementIds:i=[],initialWidth:o,initialHeight:n,initialResultUrl:d,initialAspectRatio:b,targetFrameId:v,targetFrameDimensions:U,pptSlideImage:r,pptSlidePrompt:h,pptReplaceElementId:R,selectedModel:S,selectedModelRef:m,onModelChange:p,onModelRefChange:w,externalBatchId:k,initialAutoInsertToCanvas:O,onDraftChange:M}={})=>{var Je,Xe,Qe;const _=hs("image"),z=Ke("image"),l=Ae(_,z.modelId,_e(z.profileId,z.modelId))||mt("image",z.modelId,_e(z.profileId,z.modelId)),[g,V]=t.useState((l==null?void 0:l.id)||((Je=_[0])==null?void 0:Je.id)||"gemini-2.5-flash-image-vip"),[I,L]=t.useState(Te(l)||_e(z.profileId,z.modelId)),X=je((l==null?void 0:l.id)||((Xe=_[0])==null?void 0:Xe.id)||"gemini-2.5-flash-image-vip",Te(l)||_e(z.profileId,z.modelId)),Q=Jt((l==null?void 0:l.id)||((Qe=_[0])==null?void 0:Qe.id)||"gemini-2.5-flash-image-vip",X),[ee,B]=t.useState(a),[se,W]=t.useState(Q.extraParams),oe=t.useMemo(()=>{if(Ae(_,g,I)||!g)return _;const $=mt("image",g,I);return $?[$,..._]:_},[g,I,_]),[E,F]=t.useState(o||1024),[A,le]=t.useState(n||1024),[we,ye]=t.useState(b||lt(Q.extraParams,Q.aspectRatio)),[ue,G]=t.useState(null),[re,ce]=t.useState(s),[me,D]=t.useState(!0),[te,Z]=t.useState(()=>As("image")),[fe,f]=t.useState("config"),c=t.useRef(null),{viewportWidth:q}=St(),C=q<=768,{imageHistory:P}=Ct(),[K,J]=t.useState(0),{isGenerating:ae}=Cs("image"),{language:y}=it(),{createTask:De}=bs(),pe=t.useRef(!1);t.useEffect(()=>Be.subscribeChanges(()=>{J(j=>j+1)}),[]);const Ve=g.startsWith("mj"),Ne=xe.useMemo(()=>va(g).length>0,[g]),[he,ve]=t.useState(!1);t.useEffect(()=>{if(he)return;const j=Jt(g,je(g,I)),$=b?is(g,j.extraParams,b):j.extraParams;W($),ye(lt($,b||j.aspectRatio))},[g,I,b,he]);const be=t.useCallback((j,$)=>{if(!$||$==="default"){j==="size"&&ye(at),W(Y=>{const H={...Y};return delete H[j],H});return}j==="size"&&ye($s($)||at),W(Y=>({...Y,[j]:$}))},[]),ke=t.useCallback(j=>{Z(j)},[]),Ce=t.useCallback(()=>{D(j=>!j)},[]),Ue=xe.useRef("");t.useEffect(()=>{if(he)return;const j=JSON.stringify({prompt:a,images:s==null?void 0:s.map($=>$.url),elementIds:i,width:o,height:n,result:d,aspectRatio:b,targetFrameId:v,pptSlideImage:r,pptSlidePrompt:h,pptReplaceElementId:R});Ue.current!==j&&(Ue.current=j,B(a),ce(s||[]),o&&F(o),n&&le(n),b&&(ye(b),W($=>is(g,$,b))))},[a,s,i,o,n,d,b,v,r,h,R,he,g]);const ie=t.useRef("");t.useEffect(()=>{if(!M)return;const j={prompt:ee,images:re.map(H=>({url:H.url,name:H.name})),aspectRatio:we},$=JSON.stringify(j);if(ie.current===$)return;const Y=window.setTimeout(()=>{ie.current!==$&&(ie.current=$,M(j))},200);return()=>{window.clearTimeout(Y)}},[we,M,ee,re]),t.useEffect(()=>{const j=$=>{var H;const Y=$.imageModelName||((H=oe[0])==null?void 0:H.id)||"gemini-2.5-flash-image-vip";if(Y!==g){V(Y);const Se=Ae(oe,Y,I);L(Te(Se)||null)}};return Pe.addListener(j),()=>Pe.removeListener(j)},[g,I,oe]),t.useEffect(()=>{if(oe.length===0)return;if(!Ae(oe,g,I)){const $=oe[0];V($.id);const Y=Te($);L(H=>H&&Y&&H.profileId===Y.profileId&&H.modelId===Y.modelId?H:Y)}},[g,I,oe]),t.useEffect(()=>{if(!S)return;const j=je(g,I),$=je(S,m);if(j!==$){V(S);const Y=Ae(oe,S,m),H=Te(Y)||m||null;L(Se=>Se&&H&&Se.profileId===H.profileId&&Se.modelId===H.modelId?Se:H)}},[g,I,S,m,oe]),t.useEffect(()=>{!Ne&&Object.keys(se).length>0&&W({})},[Ne,se]),t.useEffect(()=>{Pa({currentModel:g,currentSelectionKey:je(g,I),extraParams:se,aspectRatio:we})},[g,I,se,we]),t.useEffect(()=>(G(null),()=>{G(null)}),[]);const gt=()=>{const j=wt(g,{});B(""),W(j),ce([]),G(null),ye(lt(j)),f("config"),ve(!1),window.dispatchEvent(new CustomEvent("ai-image-clear"))},He=xe.useMemo(()=>ws("image",y,P),[P,y,K]),nt=!!(r||h!=null&&h.trim()),Ye=j=>{nt||(vs("image",j),J($=>$+1))},Oe=j=>{const $=j.params.model||g,Y={...j.params.params||{},...j.params.size!==void 0?{size:j.params.size}:{},...j.params.resolution!==void 0?{resolution:j.params.resolution}:{},...j.params.quality!==void 0?{quality:j.params.quality}:{}},H=Object.keys(Y).length>0?wt($,Y):wt($,{});if(ve(!0),f("config"),B(j.params.prompt||""),W(H),F(j.params.width||1024),le(j.params.height||1024),j.params.uploadedImages&&j.params.uploadedImages.length>0?ce(j.params.uploadedImages):ce([]),j.params.model){V(j.params.model),L(j.params.modelRef||null);const Se=Pe.get();Pe.update({...Se,imageModelName:j.params.model})}ye(lt(H,j.params.aspectRatio)),G(null)},ot=async()=>Promise.all(re.map(async j=>{if(j.file)return new Promise(($,Y)=>{const H=new FileReader;H.onload=()=>{$({type:"url",url:H.result,name:j.name})},H.onerror=Y,H.readAsDataURL(j.file)});if(j.url)return{type:"url",url:j.url,name:j.name};throw new Error("Invalid image data")})),Ge=async(j=1)=>{const $=j;if(!pe.current){pe.current=!0;try{if(!ee||!ee.trim()){G(y==="zh"?"请输入图像描述":"Please enter image description");return}if(!ja("image",I||g)&&!await Da()){G(y==="zh"?"需要 API Key 才能生成图片":"API Key is required to generate images");return}Ve&&G(null);try{const Y=typeof E=="string"?parseInt(E)||1024:E,H=typeof A=="string"?parseInt(A)||1024:A,Se=await ot();if($>1){const $e=[],u=`batch_${Date.now()}`,x=g||Ke("image").modelId,N=x.startsWith("mj")?[ee.trim(),Xt(se)].filter(Boolean).join(" "):(ee||"").trim(),T=!x.startsWith("mj")&&Object.keys(se).length>0?se:void 0,ne=T!=null&&T.size?T.size:jt(we);for(let de=0;de<$;de++){const Ie={prompt:N,width:Y,height:H,aspectRatio:we,size:ne,model:x,modelRef:I||null,uploadedImages:Se,batchId:u,batchIndex:de+1,batchTotal:$,autoInsertToCanvas:O??Dt(tt.AI_IMAGE_AUTO_INSERT),targetFrameId:v,targetFrameDimensions:U,pptSlideImage:r,pptSlidePrompt:h,pptReplaceElementId:R,...T?{params:T}:{}},Me=De(Ie,Ee.IMAGE);Me&&$e.push(Me.id)}$e.length>0?(qe.success(y==="zh"?`已添加 ${$e.length} 个任务到队列`:`Added ${$e.length} tasks to queue`),Ye(N),G(null),f("tasks"),ve(!1)):G(y==="zh"?"批量任务创建失败,请稍后重试":"Failed to create batch tasks, please try again later");return}const Ze=g||Ke("image").modelId,We=Ze.startsWith("mj")?[ee.trim(),Xt(se)].filter(Boolean).join(" "):(ee||"").trim(),Le=!Ze.startsWith("mj")&&Object.keys(se).length>0?se:void 0,rt=Le!=null&&Le.size?Le.size:jt(we),dt={prompt:We,width:Y,height:H,aspectRatio:we,size:rt,model:Ze,modelRef:I||null,uploadedImages:Se,autoInsertToCanvas:O??Dt(tt.AI_IMAGE_AUTO_INSERT),batchId:k||`image_single_${Date.now()}`,batchIndex:1,batchTotal:1,targetFrameId:v,targetFrameDimensions:U,pptSlideImage:r,pptSlidePrompt:h,pptReplaceElementId:R,...Le?{params:Le}:{}};De(dt,Ee.IMAGE)?(qe.success(y==="zh"?"任务已添加到队列,将在后台生成":"Task added to queue, will be generated in background"),Ye(We),G(null),f("tasks"),ve(!1)):G(y==="zh"?"任务创建失败,请检查参数或稍后重试":"Failed to create task, please check parameters or try again later")}catch(Y){console.error("Failed to create task:",Y);let H=y==="zh"?"任务创建失败,请检查参数或稍后重试":"Failed to create task, please check parameters or try again later";Y.message&&(Y.message.includes("exceed 5000 characters")?H=y==="zh"?"提示词不能超过 5000 字符":"Prompt must not exceed 5000 characters":Y.message.includes("Duplicate submission")?H=y==="zh"?"请勿重复提交,请等待 5 秒后再试":"Duplicate submission. Please wait 5 seconds.":Y.message.includes("Invalid parameters")&&(H=y==="zh"?`参数错误: ${Y.message.replace("Invalid parameters: ","")}`:Y.message)),G(H)}}finally{pe.current=!1}}};return Vs(ae,ee,()=>Ge(1)),e.jsxDEV("div",{className:"ai-image-generation-container",children:[C?e.jsxDEV("div",{className:"ai-generation-mobile-switcher",role:"tablist",children:[e.jsxDEV("button",{type:"button",className:`ai-generation-mobile-switcher__tab ${fe==="config"?"ai-generation-mobile-switcher__tab--active":""}`,onClick:()=>f("config"),children:"生成设置"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:886,columnNumber:11},void 0),e.jsxDEV("button",{type:"button",className:`ai-generation-mobile-switcher__tab ${fe==="tasks"?"ai-generation-mobile-switcher__tab--active":""}`,onClick:()=>f("tasks"),children:"生成任务"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:897,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:885,columnNumber:9},void 0):null,e.jsxDEV("div",{className:`main-content ${C?"main-content--mobile-panels":""}`,ref:c,children:[e.jsxDEV("div",{className:`ai-image-generation-section ${C&&fe!=="config"?"ai-generation-mobile-panel--hidden":""}`,children:[e.jsxDEV("div",{className:"ai-image-generation-form",children:[S!==void 0&&p&&e.jsxDEV("div",{className:"form-header-row",children:e.jsxDEV("div",{className:"model-selector-wrapper",children:e.jsxDEV(xs,{selectedModel:g,selectedSelectionKey:je(g,I),onSelect:j=>{V(j),L(null),p(j),w==null||w(null)},onSelectModel:j=>{V(j.id);const $=Te(j);L($),p(j.id),w==null||w($)},language:y,models:oe,placement:"down",variant:"form",disabled:ae},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:930,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:929,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:928,columnNumber:15},void 0),Ne&&e.jsxDEV("div",{className:"model-params-row",children:e.jsxDEV(ys,{selectedParams:se,onParamChange:be,modelId:g,language:y,disabled:ae,placement:"down"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:962,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:961,columnNumber:15},void 0),e.jsxDEV(Es,{images:re,onImagesChange:ce,language:y,disabled:ae,multiple:!0,label:y==="zh"?"参考图片 (可选)":"Reference Images (Optional)",onError:G},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:974,columnNumber:13},void 0),e.jsxDEV(Ps,{prompt:ee,onPromptChange:B,presetPrompts:He,language:y,type:"image",disabled:ae,onError:G},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:988,columnNumber:13},void 0),e.jsxDEV(qs,{error:ue},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:998,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:925,columnNumber:11},void 0),e.jsxDEV(Us,{language:y,type:"image",isGenerating:ae,hasGenerated:!1,canGenerate:!!(ee&&ee.trim()),onGenerate:Ge,onReset:gt,leftContent:e.jsxDEV(zs,{storageKey:tt.AI_IMAGE_AUTO_INSERT,language:y},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:1010,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:1001,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:918,columnNumber:9},void 0),C?null:e.jsxDEV(Ls,{isRightPanelVisible:me,onToggleRightPanel:Ce,onWidthChange:ke,rightPanelWidth:te,language:y,storageKey:"image"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:1019,columnNumber:11},void 0),(C||me)&&e.jsxDEV("div",{className:`task-sidebar ${C?"task-sidebar--mobile-panel":""} ${C&&fe!=="tasks"?"ai-generation-mobile-panel--hidden":""}`,style:C?void 0:{width:te,flexShrink:0},children:e.jsxDEV(Os,{taskType:Ee.IMAGE,onEditTask:Oe},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:1045,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:1031,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:911,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:883,columnNumber:5},void 0)};function ns(a,s){const i=Object.keys(a),o=Object.keys(s);return i.length!==o.length?!1:i.every(n=>a[n]===s[n])}function os(a,s,i){return a.slice(0,s).map((o,n)=>({...o,slot:n,slotLabel:i[n]||`参考图${n+1}`}))}function ai(a,s){return a.length===s.length&&a.every((i,o)=>{const n=s[o];return i.slot===n.slot&&i.slotLabel===n.slotLabel&&i.url===n.url&&i.name===n.name&&i.file===n.file})}function vt(a,s){return((a==null?void 0:a.profileId)||null)===((s==null?void 0:s.profileId)||null)&&((a==null?void 0:a.modelId)||null)===((s==null?void 0:s.modelId)||null)}function Fs(a,s){const i=_e(s==null?void 0:s.profileId,s==null?void 0:s.modelId);return(i==null?void 0:i.modelId)===(a||null)?i:null}function Fe(a,s,i){if(!s)return null;const o=Fs(s,i),n=Ae(a,s,o);return Te(n)||o}function ii(a){return a.reduce((s,i)=>(i.defaultValue&&(s[i.id]=i.defaultValue),s),{})}function kt(a,s){return ii(Ns(a,s||a,{}))}function ut(a,s,i){return{...a,...s!=null?{duration:String(s)}:{},...i?{size:i}:{}}}function rs(a,s,i){const{duration:o,size:n,...d}=a;return{extraParams:d,duration:s,size:i}}const ni=({initialPrompt:a="",initialImage:s,initialImages:i,initialDuration:o,initialModel:n,initialSize:d,initialResultUrl:b,selectedModel:v,selectedModelRef:U,onModelChange:r,onModelRefChange:h,externalBatchId:R,initialAutoInsertToCanvas:S,onDraftChange:m}={})=>{var dt,ht,$e;const p=hs("video"),[w,k]=t.useState(a),[O,M]=t.useState(null),[_,z]=t.useState(!0),[l,g]=t.useState(()=>As("video")),[V,I]=t.useState("config"),L=t.useRef(null),{viewportWidth:X}=St(),Q=X<=768,ee=Ke("video"),B=n||ee.modelId,se=Fs(B,n&&n===v?U:ee.modelId===B?_e(ee.profileId,ee.modelId):null),W=Ae(p,B,se)||mt("video",B,se),oe=Fe(p,(W==null?void 0:W.id)||B,Te(W)||se),[E,F]=t.useState((W==null?void 0:W.id)||((dt=p[0])==null?void 0:dt.id)||xt("veo3")),[A,le]=t.useState(oe),we=je((W==null?void 0:W.id)||((ht=p[0])==null?void 0:ht.id)||xt("veo3"),oe),ye=Qt((W==null?void 0:W.id)||(($e=p[0])==null?void 0:$e.id)||xt("veo3"),we),ue=xe.useMemo(()=>{if(Ae(p,E,A)||!E)return p;const x=mt("video",E,A);return x?[x,...p]:p},[E,A,p]),[G,re]=t.useState(()=>ut(ye.extraParams,(o==null?void 0:o.toString())||ye.duration,d||ye.size)),ce=xe.useMemo(()=>Ns(E,A||E,G),[E,A,G]),me=xe.useMemo(()=>Lt(E,A||E,G),[E,A,G]),D=xe.useMemo(()=>(me.imageUpload.labels||[]).join("|"),[me.imageUpload.labels]),te=xe.useMemo(()=>D?D.split("|"):[],[D]),Z=xe.useMemo(()=>({maxCount:me.imageUpload.maxCount,mode:me.imageUpload.mode,labels:te,labelsSignature:D}),[me.imageUpload.maxCount,me.imageUpload.mode,te,D]),fe=xe.useMemo(()=>{var N;const u=ce.find(T=>T.id==="duration"),x=G.duration;return x&&((N=u==null?void 0:u.options)!=null&&N.some(T=>T.value===x))?x:(u==null?void 0:u.defaultValue)||me.defaultDuration},[ce,me.defaultDuration,G.duration]),f=xe.useMemo(()=>{var N;const u=ce.find(T=>T.id==="size"),x=G.size;return x&&((N=u==null?void 0:u.options)!=null&&N.some(T=>T.value===x))?x:(u==null?void 0:u.defaultValue)||me.defaultSize},[ce,me.defaultSize,G.size]),c=xe.useMemo(()=>ce.length>0,[ce]),q=t.useCallback((u,x)=>{if(!x||x==="default"){re(N=>{const T={...N};return delete T[u],T});return}re(N=>({...N,[u]:x}))},[]);t.useEffect(()=>{const u=ce.reduce((x,N)=>{const T=G[N.id],ne=!T||N.valueType!=="enum"||!N.options||N.options.some(de=>de.value===T);return T&&ne?x[N.id]=T:N.defaultValue&&(x[N.id]=N.defaultValue),x},{});ns(G,u)||re(u)},[ce,G]);const[C,P]=t.useState(()=>i&&i.length>0?i:s?[{slot:0,slotLabel:"参考图",url:s.url||"",name:s.name,file:s.file}]:[]),[K,J]=t.useState(()=>{const u=me.imageUpload.maxCount,x=me.imageUpload.labels||[];let N=[];return i&&i.length>0?N=i:s&&(N=[{slot:0,slotLabel:x[0]||"参考图",url:s.url||"",name:s.name,file:s.file}]),N.slice(0,u).map((T,ne)=>({...T,slot:ne,slotLabel:x[ne]||`参考图${ne+1}`}))}),[ae,y]=t.useState(!1),[De,pe]=t.useState([]),Ve=xe.useMemo(()=>Ia(E),[E]),Ne=zt(E),{videoHistory:he}=Ct(),[ve,be]=t.useState(0);t.useEffect(()=>Be.subscribeChanges(()=>{be(u=>u+1)}),[]);const{isGenerating:ke}=Cs("video"),Ce=t.useCallback(u=>{g(u)},[]),Ue=t.useCallback(()=>{z(u=>!u)},[]),{language:ie}=it(),{createTask:gt}=bs(),He=t.useRef(!1),nt=v!==void 0,Ye=xe.useRef(null),Oe=xe.useRef(null);t.useEffect(()=>{if(nt)return;const u=x=>{const N=x.videoModelName||"veo3";if(N!==E){F(N);const T=Fe(ue,N,A);le(T)}};return Pe.addListener(u),()=>Pe.removeListener(u)},[E,A,nt,v,U,ue]),t.useEffect(()=>{if(ue.length===0)return;const u=Ae(ue,E,A),x=Fe(ue,E,A);if(!u){const N=ue[0],T=Te(N);F(N.id),le(ne=>vt(ne,T)?ne:T);return}le(N=>vt(N,x)?N:x)},[E,A,ue]),t.useEffect(()=>{if(!v)return;const u=je(v,U);if(Ye.current===u||Oe.current&&Oe.current!==v)return;Ye.current=u,F(N=>N===v?N:v);const x=Fe(ue,v,U);le(N=>vt(N,x)?N:x)},[v,U,ue,n]);const[ot,Ge]=t.useState(!1),[Je,Xe]=t.useState(!1);t.useEffect(()=>{if(Je){Xe(!1);return}const u=Qt(E,je(E,A)),x=ut(u.extraParams,o!==void 0?o.toString():u.duration,d||u.size);re(N=>ns(N,x)?N:x),zt(E)||(y(N=>N&&!1),pe(N=>N.length>0?[]:N))},[E,A,Je,o,d]),t.useEffect(()=>{const u=C.length>0?os(C,Z.maxCount,Z.labels):[];J(x=>ai(x,u)?x:u)},[C,Z.labels,Z.labelsSignature,Z.maxCount]),t.useEffect(()=>{const u=rs(G,fe,f);Ma({currentModel:E,currentSelectionKey:je(E,A),extraParams:u.extraParams,duration:u.duration,size:u.size})},[E,A,fe,f,G]);const Qe=xe.useRef("");t.useEffect(()=>{if(ot)return;const u=JSON.stringify({prompt:a,image:s==null?void 0:s.url,images:i==null?void 0:i.map(T=>T.url),duration:o,model:n,size:d,result:b});if(Qe.current===u)return;Qe.current=u,n&&(Oe.current=n,F(n),le(Fe(p,n,U))),k(a);let x=[];i&&i.length>0?x=i:s&&(x=[{slot:0,slotLabel:"参考图",url:s.url||"",name:s.name,file:s.file}]),P(x);const N=os(x,Z.maxCount,Z.labels);J(N),(o!==void 0||d)&&re(T=>ut(T,o,d)),M(null)},[a,s,i,o,d,b,Z.labels,Z.labelsSignature,Z.maxCount,ot]),t.useEffect(()=>(M(null),()=>{M(null)}),[]);const j=()=>{k(""),P([]),J([]),M(null),I("config"),Ge(!1),y(!1),pe([]),re(kt(E,A||E)),window.dispatchEvent(new CustomEvent("ai-video-clear"))},$=xe.useCallback((u,x)=>u.map((N,T)=>({slot:T,slotLabel:x[T]||`参考图${T+1}`,url:N.url,name:N.name,file:N.file})),[]),Y=xe.useCallback(u=>u.map(x=>({url:x.url,name:x.name,file:x.file})),[]),H=xe.useCallback(u=>{const x=$(u,Z.labels);J(x),P(x)},[Z.labels,$]),Se=xe.useMemo(()=>ws("video",ie,he),[he,ie,ve]),Ze=u=>{vs("video",u),be(x=>x+1)},We=t.useRef("");t.useEffect(()=>{if(!m)return;const u=Number.parseFloat(fe),x={prompt:w,images:K.map(ne=>({url:ne.url,name:ne.name})),duration:Number.isFinite(u)?u:void 0,size:f||void 0},N=JSON.stringify(x);if(We.current===N)return;const T=window.setTimeout(()=>{We.current!==N&&(We.current=N,m(x))},200);return()=>{window.clearTimeout(T)}},[fe,f,m,w,K]);const Le=u=>{var N,T;if(Ge(!0),I("config"),Xe(!0),u.params.model){F(u.params.model),le(u.params.modelRef||null);const ne=Pe.get();Pe.update({...ne,videoModelName:u.params.model})}if((N=u.params.storyboard)!=null&&N.enabled&&((T=u.params.storyboard)!=null&&T.scenes))y(!0),pe(u.params.storyboard.scenes),k("");else{const ne=u.params.prompt||"",de=Xa(ne);de&&de.length>0?(y(!0),pe(de),k("")):(y(!1),pe([]),k(ne))}const x=u.params.params&&typeof u.params.params=="object"?Object.entries(u.params.params).reduce((ne,[de,Ie])=>(Ie!=null&&String(Ie).trim()&&(ne[de]=String(Ie)),ne),{}):{};if(re(ut(x,u.params.duration??u.params.seconds,u.params.size)),u.params.uploadedImages&&u.params.uploadedImages.length>0){P(u.params.uploadedImages);const ne=u.params.model||E,de=Lt(ne,u.params.modelRef||ne,x),Ie=de.imageUpload.maxCount,Me=de.imageUpload.labels||[],et=u.params.uploadedImages.slice(0,Ie).map((Re,bt)=>({...Re,slot:bt,slotLabel:Me[bt]||`参考图${bt+1}`}));J(et)}else P([]),J([]);M(null)},rt=async(u=1)=>{if(!He.current){He.current=!0;try{if(ae){const x=Ya(De,parseFloat(fe),Ve.minSceneDuration);if(!x.valid){M(x.error||"场景配置无效");return}}else if(!w||!w.trim()){M(ie==="zh"?"请输入视频描述":"Please enter video description");return}try{const x=[];for(const de of K)if(de.file){const Ie=await new Promise((Me,et)=>{const Re=new FileReader;Re.onload=()=>Me(Re.result),Re.onerror=et,Re.readAsDataURL(de.file)});x.push({...de,url:Ie,file:void 0})}else x.push({...de,file:void 0});const N=ae?Ja(De):(w||"").trim(),T=[],ne=R||`video_batch_${Date.now()}`;for(let de=0;de<u;de++){const Ie=rs(G,fe,f),Me=Object.keys(Ie.extraParams).length>0?Ie.extraParams:void 0,et={prompt:N,model:E,modelRef:A||null,seconds:Ie.duration,size:Ie.size,uploadedImages:x,...ae&&{storyboard:{enabled:!0,scenes:De,totalDuration:parseFloat(fe)}},batchId:ne,batchIndex:de+1,batchTotal:u,autoInsertToCanvas:S??Dt(tt.AI_VIDEO_AUTO_INSERT),...Me?{params:Me}:{}},Re=gt(et,Ee.VIDEO);Re&&T.push(Re.id)}T.length>0?(qe.success(ie==="zh"?u>1?`${T.length} 个视频任务已添加到队列,将在后台生成`:"视频任务已添加到队列,将在后台生成":u>1?`${T.length} video tasks added to queue, will be generated in background`:"Video task added to queue, will be generated in background"),Ze(N),k(""),P([]),J([]),y(!1),pe([]),M(null),I("tasks"),Ge(!1)):M(ie==="zh"?"任务创建失败,请检查参数或稍后重试":"Failed to create task, please check parameters or try again later")}catch(x){console.error("Failed to create task:",x);let N=ie==="zh"?"任务创建失败,请检查参数或稍后重试":"Failed to create task, please check parameters or try again later";x.message&&(x.message.includes("exceed 5000 characters")?N=ie==="zh"?"提示词不能超过 5000 字符":"Prompt must not exceed 5000 characters":x.message.includes("Duplicate submission")?N=ie==="zh"?"请勿重复提交,请等待 5 秒后再试":"Duplicate submission. Please wait 5 seconds.":x.message.includes("Invalid parameters")&&(N=ie==="zh"?`参数错误: ${x.message.replace("Invalid parameters: ","")}`:x.message)),M(N)}}finally{He.current=!1}}};return Vs(ke,w,rt),e.jsxDEV("div",{className:"ai-video-generation-container",children:[Q?e.jsxDEV("div",{className:"ai-generation-mobile-switcher",role:"tablist",children:[e.jsxDEV("button",{type:"button",className:`ai-generation-mobile-switcher__tab ${V==="config"?"ai-generation-mobile-switcher__tab--active":""}`,onClick:()=>I("config"),children:"生成设置"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1190,columnNumber:11},void 0),e.jsxDEV("button",{type:"button",className:`ai-generation-mobile-switcher__tab ${V==="tasks"?"ai-generation-mobile-switcher__tab--active":""}`,onClick:()=>I("tasks"),children:"生成任务"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1201,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1189,columnNumber:9},void 0):null,e.jsxDEV("div",{className:`main-content ${Q?"main-content--mobile-panels":""}`,ref:L,children:[e.jsxDEV("div",{className:`ai-image-generation-section ${Q&&V!=="config"?"ai-generation-mobile-panel--hidden":""}`,children:[e.jsxDEV("div",{className:"ai-image-generation-form",children:[v!==void 0&&r&&e.jsxDEV("div",{className:"form-header-row",children:e.jsxDEV("div",{className:"model-selector-wrapper",children:e.jsxDEV(xs,{selectedModel:E,selectedSelectionKey:je(E,A),onSelect:(u,x)=>{const N=u,T=Fe(ue,N,x||null);Oe.current=null,F(N),le(T),re(kt(N,T||N)),r(u),h==null||h(T)},onSelectModel:u=>{const x=u.id;Oe.current=null,F(x);const N=Fe(ue,x,Te(u));le(N),re(kt(x,N||x)),r(u.id),h==null||h(N)},language:ie,models:ue,placement:"down",variant:"form",placeholder:ie==="zh"?"选择视频模型":"Select Video Model",disabled:ke},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1234,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1233,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1232,columnNumber:15},void 0),c&&e.jsxDEV("div",{className:"model-params-row",children:e.jsxDEV(ys,{selectedParams:G,onParamChange:q,compatibleParams:ce,modelId:E,language:ie,disabled:ke,placement:"down"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1294,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1293,columnNumber:15},void 0),e.jsxDEV(Es,{images:Y(K),onImagesChange:H,language:ie,disabled:ke,multiple:Z.maxCount>1,maxCount:Z.maxCount,slotLabels:Z.mode==="frames"?Z.labels:void 0,label:Z.mode==="frames"?ie==="zh"?"首尾帧图片 (可选)":"Start/End Frames (Optional)":ie==="zh"?"参考图片 (可选)":"Reference Images (Optional)"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1307,columnNumber:13},void 0),Ne&&e.jsxDEV(Za,{enabled:ae,onEnabledChange:y,totalDuration:parseFloat(fe),maxScenes:Ve.maxScenes,minSceneDuration:Ve.minSceneDuration,scenes:De,onScenesChange:pe,disabled:ke},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1332,columnNumber:15},void 0),!ae&&e.jsxDEV(Ps,{prompt:w,onPromptChange:k,presetPrompts:Se,language:ie,type:"video",disabled:ke,onError:M,videoProvider:me.provider},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1346,columnNumber:15},void 0),e.jsxDEV(qs,{error:O},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1358,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1229,columnNumber:11},void 0),e.jsxDEV(Us,{language:ie,type:"video",isGenerating:ke,hasGenerated:!1,canGenerate:ae?De.length>0:!!(w&&w.trim()),onGenerate:rt,onReset:j,leftContent:e.jsxDEV(zs,{storageKey:tt.AI_VIDEO_AUTO_INSERT,language:ie},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1374,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1361,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1222,columnNumber:9},void 0),Q?null:e.jsxDEV(Ls,{isRightPanelVisible:_,onToggleRightPanel:Ue,onWidthChange:Ce,rightPanelWidth:l,language:ie,storageKey:"video"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1383,columnNumber:11},void 0),(Q||_)&&e.jsxDEV("div",{className:`task-sidebar ${Q?"task-sidebar--mobile-panel":""} ${Q&&V!=="tasks"?"ai-generation-mobile-panel--hidden":""}`,style:Q?void 0:{width:l,flexShrink:0},children:e.jsxDEV(Os,{taskType:Ee.VIDEO,onEditTask:Le},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1409,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1395,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1215,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1187,columnNumber:5},void 0)},oi=t.lazy(()=>It(()=>import("./batch-image-generation-N-lwbjRE.js"),__vite__mapDeps([0,1]),import.meta.url)),ri=({container:a})=>{const{appState:s,openDialog:i,closeDialog:o}=pt(),{language:n}=it(),d=Vt(),{isMobile:b,isTablet:v}=St(),U=s.dialogInitialDataByType,r=(U==null?void 0:U[ge.aiImageGeneration])??null,h=(U==null?void 0:U[ge.aiVideoGeneration])??null,R=!b&&!v,S=t.useRef(!1),m=t.useRef(null),[p,w]=t.useState(""),[k,O]=t.useState(null),[M,_]=t.useState(""),[z,l]=t.useState(null),g=t.useRef(null),V=t.useRef(null),I=t.useCallback(()=>{const D=Ke("image"),te=Ke("video"),Z=D.modelId||"gemini-3-pro-image-preview-vip",fe=_e(D.profileId,Z),f=te.modelId||"veo3",c=_e(te.profileId,f);w(q=>q===Z?q:Z),O(q=>je(Z,q)===je(Z,fe)?q:fe),_(q=>q===f?q:f),l(q=>je(f,q)===je(f,c)?q:c)},[]);t.useEffect(()=>{I()},[I]),t.useEffect(()=>{const D=()=>{I()};return Pe.addListener(D),Ot.addListener(D),()=>{Pe.removeListener(D),Ot.removeListener(D)}},[I]);const L=D=>{w(D)},X=D=>{_(D)},Q=D=>{O(D)},ee=D=>{l(D)};t.useEffect(()=>{if(!p)return;const D=je(p,k);g.current!==D&&(g.current=D,$t("image",_e(k==null?void 0:k.profileId,p)))},[p,k]),t.useEffect(()=>{if(!M)return;const D=je(M,z);V.current!==D&&(V.current=D,$t("video",_e(z==null?void 0:z.profileId,M)))},[M,z]);const[B,se]=t.useState({initialPrompt:"",initialImages:[],selectedElementIds:[]}),[W,oe]=t.useState({initialPrompt:"",initialImage:void 0}),[E,F]=t.useState(!1),[A,le]=t.useState(()=>{try{return localStorage.getItem(Nt)==="batch"?"batch":"single"}catch{return"single"}});t.useEffect(()=>{!R&&A==="batch"&&le("single")},[R,A]);const we=t.useCallback(D=>{le(D),D==="batch"&&(F(!0),setTimeout(()=>F(!1),50));try{localStorage.setItem(Nt,D)}catch(te){console.warn("Failed to save image mode:",te)}},[]);t.useEffect(()=>{if(s.openDialogTypes.has(ge.aiImageGeneration)){if(B.initialImages&&B.initialImages.length>0||B.initialPrompt&&B.initialPrompt.trim()!==""){F(!1);return}try{localStorage.getItem(Nt)==="batch"&&(F(!0),setTimeout(()=>F(!1),50))}catch{F(!1)}}},[s.openDialogTypes,B.initialImages,B.initialPrompt]);const ye=t.useRef(!1),ue=t.useRef(r),G=t.useRef(!1),re=t.useRef(h);t.useEffect(()=>{if(!d)return;const D=s.openDialogTypes.has(ge.aiImageGeneration),te=D&&!ye.current,Z=ue.current!==r;if(ye.current=D,ue.current=r,!D||!te&&!Z||S.current)return;(async()=>{S.current=!0,m.current&&clearTimeout(m.current),m.current=setTimeout(()=>{console.warn("Processing timeout, resetting processing state"),S.current=!1},1e4);try{if(r){se({initialPrompt:r.initialPrompt||r.prompt||"",initialImages:r.initialImages||r.uploadedImages||[],selectedElementIds:[],initialResultUrl:r.initialResultUrl||r.resultUrl,initialAspectRatio:r.initialAspectRatio,targetFrameId:r.targetFrameId,targetFrameDimensions:r.targetFrameDimensions,pptSlideImage:r.pptSlideImage,pptSlidePrompt:r.pptSlidePrompt,pptReplaceElementId:r.pptReplaceElementId}),r.initialModel&&w(r.initialModel),r.initialModelRef!==void 0&&O(r.initialModelRef);return}const f=s.lastSelectedElementIds||[];let c,q,C;const P=Sa(d);if(P.length===1&&Va(P[0])){const ae=P[0],y=Et.getRectangleByPoints(ae.points);c=Ta(y.width,y.height),q=ae.id,C={width:y.width,height:y.height}}const K=await Ht(d,f),J=[];K.remainingImages.forEach(ae=>{J.push({url:ae.url,name:ae.name||`selected-image-${Date.now()}.png`})}),K.graphicsImage&&J.push({url:K.graphicsImage,name:`graphics-combined-${Date.now()}.png`}),se({initialPrompt:K.remainingText||"",initialImages:J,selectedElementIds:f,initialAspectRatio:c,targetFrameId:q,targetFrameDimensions:C})}catch(f){console.warn("Error processing selected content for AI:",f);const c=Yt(d),q=c.images.map(C=>({url:C.url,name:C.name||`selected-image-${Date.now()}.png`}));se({initialPrompt:c.text||"",initialImages:q,selectedElementIds:[]})}finally{S.current=!1,m.current&&(clearTimeout(m.current),m.current=null)}})()},[s.lastSelectedElementIds,s.openDialogTypes,d,r]),t.useEffect(()=>{if(!d)return;const D=s.openDialogTypes.has(ge.aiVideoGeneration),te=D&&!G.current,Z=re.current!==h;if(G.current=D,re.current=h,!D||!te&&!Z||S.current)return;(async()=>{S.current=!0,m.current&&clearTimeout(m.current),m.current=setTimeout(()=>{console.warn("Video processing timeout, resetting processing state"),S.current=!1},1e4);try{if(h){oe({initialPrompt:h.initialPrompt||h.prompt||"",initialImage:h.initialImage||h.uploadedImage,initialImages:h.initialImages||h.uploadedImages,initialDuration:h.initialDuration||h.duration,initialModel:h.initialModel||h.model,initialSize:h.initialSize||h.size,initialResultUrl:h.initialResultUrl||h.resultUrl});const C=h.initialModel||h.model;C&&_(C),h.initialModelRef!==void 0&&l(h.initialModelRef);return}const f=s.lastSelectedElementIds||[],c=await Ht(d,f),q=[];c.remainingImages.length>0?c.remainingImages.forEach((C,P)=>{q.push({url:C.url,name:C.name||`selected-image-${P+1}-${Date.now()}.png`})}):c.graphicsImage&&q.push({url:c.graphicsImage,name:`graphics-combined-${Date.now()}.png`}),oe({initialPrompt:c.remainingText||"",initialImage:q.length>0?q[0]:void 0,initialImages:q.map((C,P)=>({slot:P,slotLabel:`参考图${P+1}`,url:C.url,name:C.name}))})}catch(f){console.warn("Error processing selected content for AI video:",f);const c=Yt(d),q=c.images.map((C,P)=>({url:C.url,name:C.name||`selected-image-${P+1}-${Date.now()}.png`}));oe({initialPrompt:c.text||"",initialImage:q.length>0?q[0]:void 0,initialImages:q.map((C,P)=>({slot:P,slotLabel:`参考图${P+1}`,url:C.url,name:C.name}))})}finally{S.current=!1,m.current&&(clearTimeout(m.current),m.current=null)}})()},[s.lastSelectedElementIds,s.openDialogTypes,d,h]),t.useEffect(()=>{s.openDialogTypes.size===0&&(S.current=!1,ye.current=!1,ue.current=null,G.current=!1,re.current=null,m.current&&(clearTimeout(m.current),m.current=null))},[s.openDialogTypes]);const ce=t.useCallback(()=>{const D=localStorage.getItem(Ft);if(D)try{const te=JSON.parse(D);te.timestamp=Date.now(),localStorage.setItem(Ft,JSON.stringify(te))}catch(te){console.warn("Failed to update cache timestamp:",te)}o(ge.aiImageGeneration)},[o]),me=t.useCallback(()=>{const D=localStorage.getItem(Bt);if(D)try{const te=JSON.parse(D);te.timestamp=Date.now(),localStorage.setItem(Bt,JSON.stringify(te))}catch(te){console.warn("Failed to update cache timestamp:",te)}o(ge.aiVideoGeneration)},[o]);return e.jsxDEV(e.Fragment,{children:[e.jsxDEV(Gt,{open:s.openDialogTypes.has(ge.mermaidToDrawnix),onOpenChange:D=>{D?i(ge.mermaidToDrawnix):o(ge.mermaidToDrawnix)},children:e.jsxDEV(Wt,{className:"Dialog ttd-dialog",container:a,children:e.jsxDEV($a,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:653,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:652,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:642,columnNumber:7},void 0),e.jsxDEV(Gt,{open:s.openDialogTypes.has(ge.markdownToDrawnix),onOpenChange:D=>{D?i(ge.markdownToDrawnix):o(ge.markdownToDrawnix)},children:e.jsxDEV(Wt,{className:"Dialog ttd-dialog",container:a,children:e.jsxDEV(Fa,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:667,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:666,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:656,columnNumber:7},void 0),e.jsxDEV(Kt,{id:"ai-image-dialog",visible:s.openDialogTypes.has(ge.aiImageGeneration),title:A==="batch"?n==="zh"?"批量出图":"Batch Generation":n==="zh"?"AI 图片生成":"AI Image Generation",headerContent:R?e.jsxDEV("div",{className:"image-generation-mode-tabs",onMouseDown:D=>D.stopPropagation(),onTouchStart:D=>D.stopPropagation(),onPointerDown:D=>D.stopPropagation(),children:[e.jsxDEV("button",{type:"button",className:`mode-tab ${A==="single"?"active":""}`,onClick:D=>{D.stopPropagation(),D.preventDefault(),we("single")},children:n==="zh"?"AI 图片生成":"AI Image"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:691,columnNumber:15},void 0),e.jsxDEV("button",{type:"button",className:`mode-tab ${A==="batch"?"active":""}`,onClick:D=>{D.stopPropagation(),D.preventDefault(),we("batch")},children:n==="zh"?"批量出图":"Batch"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:704,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:685,columnNumber:13},void 0):void 0,onClose:ce,width:"80%",height:"60%",minWidth:800,minHeight:500,x:"center",y:"center",modal:!1,minimizable:!1,className:"winbox-ai-generation winbox-ai-image-generation",container:a,autoMaximize:E||b,children:s.openDialogTypes.has(ge.aiImageGeneration)&&(A==="batch"?e.jsxDEV(t.Suspense,{fallback:e.jsxDEV("div",{className:"loading-fallback",children:n==="zh"?"加载中...":"Loading..."},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:737,columnNumber:17},void 0),children:e.jsxDEV(oi,{onSwitchToSingle:()=>we("single"),selectedModel:p,selectedModelRef:k,onModelChange:L,onModelRefChange:Q},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:742,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:735,columnNumber:13},void 0):e.jsxDEV(si,{initialPrompt:B.initialPrompt,initialImages:B.initialImages,selectedElementIds:B.selectedElementIds,initialWidth:(r==null?void 0:r.initialWidth)||(r==null?void 0:r.width),initialHeight:(r==null?void 0:r.initialHeight)||(r==null?void 0:r.height),initialResultUrl:B.initialResultUrl,initialAspectRatio:B.initialAspectRatio,targetFrameId:B.targetFrameId,targetFrameDimensions:B.targetFrameDimensions,pptSlideImage:B.pptSlideImage,pptSlidePrompt:B.pptSlidePrompt,pptReplaceElementId:B.pptReplaceElementId,selectedModel:p,selectedModelRef:k,onModelChange:L,onModelRefChange:Q,externalBatchId:r==null?void 0:r.batchId,initialAutoInsertToCanvas:r==null?void 0:r.autoInsertToCanvas,onDraftChange:r==null?void 0:r.onDraftChange},(r==null?void 0:r.batchId)||"ai-image-dialog",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:751,columnNumber:13},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:671,columnNumber:7},void 0),e.jsxDEV(Kt,{id:"ai-video-dialog",visible:s.openDialogTypes.has(ge.aiVideoGeneration),title:n==="zh"?"AI 视频生成":"AI Video Generation",onClose:me,width:"70%",height:"60%",minWidth:800,minHeight:600,x:"center",y:"center",modal:!1,minimizable:!1,className:"winbox-ai-generation winbox-ai-video-generation",container:a,autoMaximize:b,children:s.openDialogTypes.has(ge.aiVideoGeneration)&&e.jsxDEV(ni,{initialPrompt:W.initialPrompt,initialImage:W.initialImage,initialImages:W.initialImages,initialDuration:W.initialDuration,initialModel:W.initialModel,initialSize:W.initialSize,initialResultUrl:W.initialResultUrl,selectedModel:M,selectedModelRef:z,onModelChange:X,onModelRefChange:ee,externalBatchId:h==null?void 0:h.batchId,initialAutoInsertToCanvas:h==null?void 0:h.autoInsertToCanvas,onDraftChange:h==null?void 0:h.onDraftChange},(h==null?void 0:h.batchId)||"ai-video-dialog",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:800,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:782,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:641,columnNumber:5},void 0)},gi=t.memo(ri,(a,s)=>a.container===s.container);export{gi as TTDDialog};
@@ -0,0 +1 @@
1
+ @charset "UTF-8";.task-progress-overlay{position:relative;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;--task-progress-accent: #f39c12;background:radial-gradient(circle at 18% 18%,rgba(245,184,73,.16),transparent 24%),radial-gradient(circle at 76% 78%,rgba(179,144,122,.14),transparent 32%),linear-gradient(135deg,#ffffffe0,#ece6e0bd);border-radius:inherit;overflow:hidden}.task-progress-overlay__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(140deg,#ffffff94,#ffffff1a),radial-gradient(circle at 50% 60%,rgba(255,255,255,.18),transparent 60%);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.task-progress-overlay__pulse,.task-progress-overlay__dots{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.task-progress-overlay__pulse{background:radial-gradient(circle at 16% 18%,rgba(243,156,18,.14),transparent 22%),radial-gradient(circle at 72% 70%,rgba(168,133,112,.12),transparent 34%);mix-blend-mode:multiply;animation:task-progress-overlay-pulse 3.6s ease-in-out infinite}.task-progress-overlay__dots{top:18%;right:20%;bottom:18%;left:20%;opacity:.32;background-image:radial-gradient(circle,rgba(255,255,255,.7) 0 1.2px,transparent 1.8px);background-size:28px 28px;-webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.8),transparent 92%);mask-image:linear-gradient(180deg,rgba(0,0,0,.8),transparent 92%)}.task-progress-overlay__content{position:relative;z-index:1;transform-origin:center center;transition:transform .15s ease-out}.task-progress-overlay__progress{--image-generation-progress-accent: var(--task-progress-accent);--image-generation-progress-accent-soft: rgba(243, 156, 18, .14);--image-generation-progress-ring-bg: rgba(148, 163, 184, .24);--image-generation-progress-text: rgba(55, 65, 81, .9)}.task-progress-overlay__bar{position:absolute;bottom:0;left:0;right:0;height:3px;background:#94a3b82e;z-index:1}.task-progress-overlay__bar-fill{height:100%;background:linear-gradient(90deg,#f39c12,#e67e22);transition:width .3s ease;box-shadow:0 0 8px #f39c1280}.task-progress-overlay--video{--task-progress-accent: #5a4fcf;background:radial-gradient(circle at 18% 18%,rgba(105,91,224,.18),transparent 24%),radial-gradient(circle at 72% 74%,rgba(90,79,207,.1),transparent 32%),linear-gradient(135deg,#faf9ffe0,#e8e5f7c7)}.task-progress-overlay--video .task-progress-overlay__pulse{background:radial-gradient(circle at 18% 22%,rgba(123,104,238,.16),transparent 22%),radial-gradient(circle at 72% 70%,rgba(90,79,207,.14),transparent 34%)}.task-progress-overlay--video .task-progress-overlay__bar-fill{background:linear-gradient(90deg,#5a4fcf,#7b68ee);box-shadow:0 0 8px #5a4fcf80}.task-progress-overlay--loading{--task-progress-accent: #00a870}.task-progress-overlay--loading .task-progress-overlay__pulse{background:radial-gradient(circle at 18% 18%,rgba(0,168,112,.12),transparent 22%),radial-gradient(circle at 76% 72%,rgba(132,204,166,.12),transparent 34%)}.task-progress-overlay--loading .task-progress-overlay__bar-fill{background:linear-gradient(90deg,#00a870,#00c48c);box-shadow:0 0 8px #00a87080}@keyframes task-progress-overlay-pulse{0%,to{opacity:.48;transform:scale(.98)}50%{opacity:.82;transform:scale(1.04)}}.task-queue-panel.side-drawer--toolbar-right{transform:translate(calc(var(--aitu-toolbar-right-edge, 58px) - 10px));opacity:0;visibility:hidden;pointer-events:none;transition:transform .16s cubic-bezier(.2,0,0,1),opacity .12s ease-out,visibility 0s linear .16s}.task-queue-panel.side-drawer--toolbar-right.side-drawer--open{transform:translate(var(--aitu-toolbar-right-edge, 58px));opacity:1;visibility:visible;pointer-events:auto;transition:transform .16s cubic-bezier(.2,0,0,1),opacity .12s ease-out}@media(max-width:768px){.task-queue-panel.side-drawer--toolbar-right{transform:translate(-100%);opacity:1;visibility:visible;pointer-events:auto}.task-queue-panel.side-drawer--toolbar-right.side-drawer--open{transform:translate(0)}}.aitu-toolbar-dock-right .task-queue-panel.side-drawer--toolbar-right{--aitu-toolbar-drawer-left: max( 0px, calc(var(--aitu-toolbar-left, 0px) - 100%) );transform:translate(calc(var(--aitu-toolbar-drawer-left) + 10px))}.aitu-toolbar-dock-right .task-queue-panel.side-drawer--toolbar-right.side-drawer--open{transform:translate(var(--aitu-toolbar-drawer-left))}.aitu-toolbar-dragging .task-queue-panel.side-drawer--toolbar-right{transition:none}.task-queue-panel__filters-container{display:flex;flex-direction:column;gap:12px}.task-queue-panel__filters-container .t-tabs__nav-container.t-is-top:after{display:none}.task-queue-panel__filters{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;width:100%}.task-queue-panel__type-filters{display:flex;align-items:center;gap:4px;padding:3px;background:var(--td-bg-color-secondarycontainer, #f3f3f3);border-radius:10px;flex-shrink:0}.task-queue-panel__type-filters .t-button{position:relative;color:var(--td-text-color-secondary, #666);border:none!important;background:transparent!important;height:32px!important;min-width:32px!important;padding:0!important;transition:all .25s cubic-bezier(.4,0,.2,1);display:flex!important;align-items:center!important;justify-content:center!important;border-radius:8px!important}.task-queue-panel__type-filters .t-button:hover{color:var(--td-text-color-primary, #333);background:#0000000a!important}.task-queue-panel__filter-btn--active{color:#f39c12!important;background:#f39c121f!important;box-shadow:inset 0 0 0 1px #f39c122e}.task-queue-panel__filter-btn--active svg,.task-queue-panel__filter-btn--active .t-icon,.task-queue-panel__filter-btn--active span{color:currentColor!important}.task-queue-panel__search-row{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.task-queue-panel__filter-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.task-queue-panel__search-input{flex:1;min-width:100px}.task-queue-panel__search-input .t-input{border-radius:8px;height:32px;background:var(--td-bg-color-container, #fff)!important;border:1.5px solid #dcdcdc!important;transition:all .25s ease}.task-queue-panel__search-input .t-input:hover{border-color:#f39c12!important}.task-queue-panel__search-input .t-input--focused{border-color:#f39c12!important;box-shadow:0 0 0 3px #f39c1226!important}.task-queue-panel__clear-btn{flex-shrink:0}.task-queue-panel__clear-text{display:inline}@media(max-width:480px){.task-queue-panel__clear-text{display:none}}.task-queue-panel__actions{display:flex;gap:8px;flex-shrink:0}.task-queue-panel__batch-actions{display:flex;align-items:center;justify-content:space-between}.task-queue-panel__batch-select{display:flex;align-items:center;gap:8px;margin-left:12px}.task-queue-panel__batch-select :global(.t-checkbox).t-is-checked .t-checkbox__input{background-color:#f39c12;border-color:#f39c12}.task-queue-panel__batch-select :global(.t-checkbox).t-is-indeterminate .t-checkbox__input{background-color:#f39c12;border-color:#f39c12}.task-queue-panel__batch-select :global(.t-checkbox):hover .t-checkbox__input{border-color:#f39c12}.task-queue-panel__batch-count{font-size:13px;color:var(--td-text-color-secondary, #757575)}.task-queue-panel__batch-buttons{display:flex;align-items:center;gap:8px}.task-queue-panel__content{padding:12px 0 12px 24px}.task-queue-panel__list{display:flex;flex-direction:column;gap:12px}.task-queue-panel__empty{text-align:center;padding:48px 24px;color:var(--td-text-color-placeholder, #bbbbbb)}.task-queue-panel__empty-icon{font-size:48px;margin-bottom:16px;opacity:.5}.task-queue-panel__empty-text{font-size:14px}.virtual-task-list__back-to-top{position:absolute!important;bottom:16px!important;left:50%!important;transform:translate(-50%)!important;z-index:10;box-shadow:0 4px 12px #0000001f;border:1px solid var(--td-component-border, #e7e7e7);background:var(--td-bg-color-container, #fff)!important;color:var(--td-text-color-secondary, #757575)!important;width:32px!important;height:32px!important;padding:0!important;display:flex!important;align-items:center;justify-content:center;flex-shrink:0}.virtual-task-list__back-to-top:hover{background:var(--td-bg-color-secondarycontainer, #f3f3f3)!important;color:var(--td-text-color-primary, #333)!important}.virtual-task-list__back-to-top .t-icon{font-size:16px}.task-item{display:grid;gap:4px 12px;background:transparent;border-bottom:1px solid var(--td-component-border, #e7e7e7);padding:16px 24px 16px 0;transition:background-color .2s ease;position:relative;cursor:pointer}.task-item:hover{background-color:var(--td-bg-color-secondarycontainer, #f3f3f3)}.task-item--selected{border-color:#f39c12;background:#f39c120a}.task-item--processing .task-item__status-tag{background-color:#5a4fcf14!important;color:#5a4fcf!important;border:1px solid rgba(90,79,207,.15)!important}.task-item--wide{grid-template-columns:120px 1fr;grid-template-areas:"preview body"}.task-item--wide .task-item__preview-wrapper{grid-area:preview}.task-item--wide .task-item__body{grid-area:body}.task-item--wide.task-item--selection-mode{grid-template-columns:auto 120px 1fr;grid-template-areas:"checkbox preview body"}.task-item--wide.task-item--selection-mode .task-item__checkbox{grid-area:checkbox}.task-item--compact{grid-template-columns:100px 1fr;grid-template-areas:"preview prompt" "info info"}.task-item--compact .task-item__preview-wrapper{grid-area:preview;width:100px;height:75px}.task-item--compact .task-item__body{display:contents}.task-item--compact .task-item__prompt-area{grid-area:prompt}.task-item--compact .task-item__info-area{grid-area:info;margin-top:4px}.task-item--compact .task-item__content-row{align-items:center}.task-item--compact.task-item--selection-mode{grid-template-columns:auto 100px 1fr;grid-template-areas:"checkbox preview prompt" "info info info"}.task-item--compact.task-item--selection-mode .task-item__checkbox{grid-area:checkbox}.task-item__checkbox{display:flex;align-items:flex-start;padding-top:4px;padding-left:16px}.task-item__checkbox :global(.t-checkbox).t-is-checked .t-checkbox__input{background-color:#f39c12;border-color:#f39c12}.task-item__checkbox :global(.t-checkbox).t-is-indeterminate .t-checkbox__input{background-color:#f39c12;border-color:#f39c12}.task-item__checkbox :global(.t-checkbox):hover .t-checkbox__input{border-color:#f39c12}.task-item__preview-wrapper{width:120px;height:90px;flex-shrink:0;align-self:start}.task-item__preview{width:100%;height:100%;border-radius:8px;overflow:hidden;cursor:pointer;position:relative}.task-item__preview img,.task-item__preview video{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;display:block;transition:transform .2s ease}.task-item__preview:hover img,.task-item__preview:hover video{transform:scale(1.05)}.task-item__preview-placeholder{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--td-text-color-placeholder, #999);font-size:11px}.task-item__preview-failed{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:8px;background:var(--td-bg-color-secondarycontainer, #f3f3f3);border:1px solid var(--td-component-border, #e7e7e7);color:var(--td-text-color-placeholder, #bbb);font-size:10px}.task-item__preview-failed .t-icon{opacity:.5;font-size:18px}.task-item__video-play-overlay{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;background:#00000026;color:#fff;opacity:.85;transition:all .2s ease}.task-item__video-play-overlay .t-icon{filter:drop-shadow(0 1px 3px rgba(0,0,0,.4))}.task-item__preview:hover .task-item__video-play-overlay{opacity:1;background:#00000040}.task-item__body{display:flex;flex-direction:column;min-width:0}.task-item__prompt-area{min-width:0;display:flex;flex-direction:column}.task-item__prompt{font-size:14px;font-weight:400;line-height:1.5;color:var(--td-text-color-primary, #1d1d1f);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}.task-item__subtitle{margin-top:4px;font-size:12px;line-height:1.45;color:var(--td-text-color-placeholder, #999);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}.task-item__info-area{display:flex;flex-direction:column;gap:4px;min-width:0}.task-item__content-row{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:8px 12px;margin-top:4px;width:100%}.task-item__actions{display:flex;align-items:center;gap:8px;flex-shrink:0;margin-left:auto}.task-item__primary-action{font-weight:500!important;height:26px!important;padding:0 10px!important;border-radius:13px!important;font-size:12px!important;background:#f39c12!important;border:none!important;color:#fff!important}.task-item__primary-action:hover{background:#e67e22!important}.task-item__primary-action .t-icon{font-size:14px}.task-item__secondary-actions{display:flex;align-items:center;gap:4px}.task-item__secondary-actions .t-button{color:var(--td-text-color-placeholder, #999)!important;padding:4px!important;height:24px!important;width:24px!important;min-width:0!important}.task-item__secondary-actions .t-button:hover{color:var(--td-text-color-primary, #333)!important;background:var(--td-bg-color-secondarycontainer, #f3f3f3)!important}.task-item__delete-btn:hover{color:var(--td-error-color, #e34d59)!important}.task-item__meta{display:flex;flex-direction:column;gap:4px;margin-top:2px;flex:1;min-width:0}.task-item__tags{display:flex;flex-wrap:wrap;gap:4px}.task-item__tags .t-tag{font-size:10px!important;height:18px!important;border-radius:4px!important;padding:0 4px!important;color:var(--td-text-color-secondary, #666);background:var(--td-bg-color-secondarycontainer, #f3f3f3);border:none}.task-item__tags .task-item__status-tag{font-weight:500}.task-item__details{font-size:11px;color:var(--td-text-color-placeholder, #999);display:flex;flex-wrap:wrap;align-items:center;gap:6px;line-height:1.4}.task-item__link{color:var(--td-brand-color, #0052d9);text-decoration:none}.task-item__link:hover{text-decoration:underline}.task-item__error{background:#fff1f0;border-radius:6px;padding:6px 10px;margin-top:4px}.task-item__error-message{color:#e34d59;font-size:11px;line-height:1.4}.task-item__error-details-link{color:#0052d9;cursor:pointer;text-decoration:underline;margin-left:4px}.task-item__multi-badge{position:absolute;bottom:4px;right:4px;background:#000000a6;color:#fff;padding:1px 5px;border-radius:4px;font-size:10px;font-weight:500;z-index:1;pointer-events:none}.task-item__cache-badge{position:absolute;bottom:4px;left:4px;background:#00a870d9;color:#fff;padding:1px 4px;border-radius:3px;font-size:9px;display:flex;align-items:center;gap:2px;z-index:1}.task-item__cache-badge svg{width:10px;height:10px}.task-item__cache-warning-badge{position:absolute;bottom:4px;left:4px;z-index:2;padding:1px 5px;border-radius:4px;background:#f59e0beb;color:#fff;font-size:9px;font-weight:600;line-height:14px;cursor:help;box-shadow:0 2px 4px #f59e0b47}.task-item__sync-badge{position:absolute;bottom:4px;left:4px;padding:2px 6px;border-radius:4px;font-size:10px;display:flex;align-items:center;gap:3px;z-index:1;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:all .2s ease}.task-item__sync-badge svg{width:12px;height:12px}.task-item__sync-badge--synced{background:#00a870e6;color:#fff}.task-item__sync-badge--syncing{background:#0052d9e6;color:#fff}.task-item__sync-badge--warning{background:#ed7d31e6;color:#fff}.task-item__sync-badge--clickable{background:#0052d9d9;color:#fff;cursor:pointer}.task-item__sync-badge--clickable:hover{background:#0052d9;transform:scale(1.05)}@media(max-width:1200px){.task-queue-panel__filters-container{gap:8px}.task-queue-panel__filters{flex-direction:row;align-items:center;gap:8px}.task-queue-panel__search-row{width:100%}.task-queue-panel__search-input{max-width:none}.task-queue-panel__content{padding:12px 0 24px 16px}}@media(max-width:768px){.side-drawer__title{font-size:16px!important}.side-drawer__header{padding:12px!important}.side-drawer__filter{padding:0 12px 12px!important}.task-queue-panel__filters-container{gap:6px}.task-queue-panel__filters-container .t-tabs .t-tabs__nav-container,.task-queue-panel__filters-container .t-tabs .t-tabs__nav-wrap{padding:0!important}.task-queue-panel__filters-container .t-tabs .t-tabs__nav{gap:0!important}.task-queue-panel__filters-container .t-tabs .t-tabs__nav-item{font-size:11px!important;padding:4px 2px!important;min-width:auto!important;white-space:nowrap;margin:0!important}.task-queue-panel__filters-container .t-tabs .t-tabs__nav-scroll-btn{width:14px!important;min-width:14px!important;padding:0!important}.task-queue-panel__filters-container .t-tabs .t-tabs__bar{height:2px!important}.task-queue-panel__filters{gap:6px}.task-queue-panel__type-filters{padding:2px;border-radius:8px}.task-queue-panel__type-filters .t-button{height:30px!important;min-width:30px!important}.task-queue-panel__search-input{flex:1;min-width:80px!important}.task-queue-panel__search-input .t-input{min-height:28px!important;height:28px!important;font-size:13px!important;border-width:1px!important}.task-queue-panel__search-input .t-input__inner{font-size:13px!important}.task-queue-panel__filter-actions .t-button{min-height:28px!important;height:28px!important;padding:0 10px!important;font-size:12px!important}.task-queue-panel__content{padding:8px 0 16px 12px}.task-queue-panel__list{gap:8px}.task-queue-panel__empty{padding:32px 16px}.task-queue-panel__empty-icon{font-size:36px;margin-bottom:12px}.task-queue-panel__empty-text{font-size:13px}.task-item{padding:12px 16px 12px 0;gap:3px 8px}.task-item__primary-action{min-height:26px!important;height:26px!important;min-width:auto!important;padding:0 10px!important}.task-item--wide{grid-template-columns:80px 1fr}.task-item--wide.task-item--selection-mode{grid-template-columns:auto 80px 1fr}.task-item--compact{grid-template-columns:70px 1fr;grid-template-areas:"preview prompt" "info info"}.task-item--compact.task-item--selection-mode{grid-template-columns:auto 70px 1fr;grid-template-areas:"checkbox preview prompt" "info info info"}.task-item--compact .task-item__preview-wrapper{grid-area:preview;width:70px;height:52px}.task-item--compact .task-item__prompt-area{grid-area:prompt}.task-item--compact .task-item__info-area{grid-area:info;margin-top:4px}.task-item__preview-wrapper{width:80px;height:60px}.task-item__prompt{font-size:13px;-webkit-line-clamp:2}.task-item__checkbox{padding-left:12px}}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideDown{0%{transform:translateY(0);opacity:1}to{transform:translateY(100%);opacity:0}}.task-notification{position:absolute;top:-8px;right:-8px;min-width:20px;height:20px;background:var(--td-error-color, #e34d59);color:#fff;border-radius:10px;font-size:12px;font-weight:500;display:flex;align-items:center;justify-content:center;padding:0 6px;animation:pulse 2s infinite}@keyframes pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.1);opacity:.8}}.task-preview-dialog{z-index:5200!important}.task-preview-dialog .task-preview-container{position:relative;display:flex;align-items:center;justify-content:center;gap:24px;padding:24px;min-height:60vh}.task-preview-dialog .task-preview-content{flex:1;display:flex;align-items:center;justify-content:center;max-width:calc(100% - 120px);position:relative}.task-preview-dialog .task-preview-cache-badge{position:absolute;bottom:12px;left:12px;display:flex;align-items:center;gap:4px;padding:4px 10px;background:#00a870e6;color:#fff;border-radius:6px;font-size:12px;font-weight:500}.task-preview-dialog .task-preview-nav{flex-shrink:0;z-index:1}.task-preview-dialog .task-preview-nav--left{margin-right:auto}.task-preview-dialog .task-preview-nav--right{margin-left:auto}.task-preview-dialog .task-preview-nav:hover{transform:scale(1.1);transition:transform .2s ease}.task-toolbar-button{width:56px;height:56px;background:#fff;border-radius:50%;box-shadow:0 2px 8px #00000026;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);-webkit-user-select:none;-moz-user-select:none;user-select:none;position:relative}.task-toolbar-button:hover{transform:scale(1.05);box-shadow:0 4px 12px #0003;background:#f5f5f5}.task-toolbar-button:active{transform:scale(.95)}.task-toolbar-button--expanded{background:#f0f0f0;box-shadow:0 4px 12px #0003}.task-toolbar-button--icon-only{width:48px;height:48px}.task-toolbar-button__content{display:flex;align-items:center;justify-content:center}.task-toolbar-button__text{color:#757575;font-size:14px;font-weight:500;display:flex;align-items:center;justify-content:center;white-space:nowrap;transition:color .3s ease}.task-toolbar-button .t-badge{display:flex;align-items:center;justify-content:center;background-color:transparent!important}.task-toolbar-button .t-badge__count{color:#e91e63!important;border:1px solid #E91E63!important}.virtual-task-list__loading-more{display:flex;align-items:center;justify-content:center;gap:8px;padding:16px;color:var(--td-text-color-secondary, #757575);font-size:13px}.virtual-task-list__loading-spinner{width:16px;height:16px;border:2px solid var(--td-component-border, #e7e7e7);border-top-color:#f39c12;border-radius:50%;animation:spin .8s linear infinite}.virtual-task-list__pagination-info,.virtual-task-list__no-more{text-align:center;padding:12px;color:var(--td-text-color-placeholder, #bbb);font-size:12px}@keyframes spin{to{transform:rotate(360deg)}}.character-time-selector{display:flex;flex-direction:column;gap:16px}.character-time-selector.is-dragging .character-time-selector__range{transition:none!important}.character-time-selector__preview{position:relative;display:flex;justify-content:center;align-items:center;min-height:180px;max-height:240px;background:#1a1a1a;border-radius:8px;overflow:hidden}.character-time-selector__loading{display:flex;flex-direction:column;align-items:center;gap:8px;color:#999}.character-time-selector__spinner{width:24px;height:24px;border:2px solid #333;border-top-color:var(--td-brand-color, #0052d9);border-radius:50%;animation:character-spin .8s linear infinite}.character-time-selector__frame{max-width:100%;max-height:240px;-o-object-fit:contain;object-fit:contain;transition:opacity .15s ease}.character-time-selector__placeholder{color:#666;font-size:14px}.character-time-selector__time-badge{position:absolute;bottom:8px;right:8px;padding:4px 10px;background:#000000bf;color:#fff;font-size:13px;font-family:SF Mono,Monaco,monospace;border-radius:4px;font-weight:500;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:transform .15s ease}.character-time-selector__timeline{position:relative;height:52px;background:#1e1e1e;border-radius:8px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;box-shadow:inset 0 1px 3px #0000004d}.character-time-selector__timeline-bg{position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(to bottom,#2a2a2a,#1e1e1e 40%,#1a1a1a)}.character-time-selector__frame-strip{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;z-index:0;overflow:hidden;background:#1a1a1a}.character-time-selector__frame-strip--loading{display:block}.character-time-selector__strip-shimmer{width:100%;height:100%;background:linear-gradient(90deg,#1a1a1a,#2a2a2a,#3a3a3a,#2a2a2a,#1a1a1a 80%);background-size:200% 100%;animation:frame-strip-shimmer 1.5s ease-in-out infinite}@keyframes frame-strip-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.character-time-selector__frame-thumb{flex:1;height:100%;-o-object-fit:cover;object-fit:cover;opacity:.65;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;animation:frame-fade-in .3s ease-out}.character-time-selector__frame-thumb:not(:last-child){border-right:1px solid rgba(0,0,0,.5)}@keyframes frame-fade-in{0%{opacity:0}to{opacity:.65}}.character-time-selector__markers{position:absolute;top:0;left:0;right:0;height:100%;pointer-events:none;z-index:1}.character-time-selector__marker{position:absolute;top:0;height:100%;transform:translate(-50%)}.character-time-selector__marker:before{content:"";position:absolute;top:0;left:50%;width:1px;height:10px;background:#fff3;transform:translate(-50%)}.character-time-selector__marker span{position:absolute;bottom:6px;left:50%;transform:translate(-50%);font-size:10px;color:#fff6;font-family:SF Mono,Monaco,monospace}.character-time-selector__range{position:absolute;top:6px;bottom:6px;z-index:2;background:linear-gradient(to bottom,#3b82f659,#3b82f633);border-top:2px solid #3b82f6;border-bottom:2px solid #3b82f6;transition:left .2s cubic-bezier(.4,0,.2,1),width .2s cubic-bezier(.4,0,.2,1),background .15s ease;will-change:left,width}.character-time-selector__range:hover:not(.dragging){background:linear-gradient(to bottom,#3b82f673,#3b82f64d)}.character-time-selector__range.dragging{background:linear-gradient(to bottom,#3b82f680,#3b82f659);transition:background .1s ease}.character-time-selector__handle{position:absolute;top:-2px;bottom:-2px;width:12px;background:#3b82f6;cursor:ew-resize;z-index:3;transition:background .15s ease,transform .15s cubic-bezier(.4,0,.2,1),box-shadow .15s ease}.character-time-selector__handle:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:2px;height:18px;background:#ffffffb3;border-radius:1px;box-shadow:-3px 0 #ffffff4d,3px 0 #ffffff4d}.character-time-selector__handle:hover{background:#60a5fa;transform:scaleX(1.15);box-shadow:0 0 8px #3b82f680}.character-time-selector__handle:active{background:#2563eb;transform:scaleX(1.2)}.character-time-selector__handle--left{left:0;border-radius:6px 0 0 6px}.character-time-selector__handle--right{right:0;border-radius:0 6px 6px 0}.dragging .character-time-selector__handle{background:#60a5fa}.character-time-selector__range-content{display:flex;align-items:center;justify-content:center;height:100%;padding:0 18px;cursor:grab;transition:background .15s ease}.character-time-selector__range-content:hover{background:#ffffff0d}.character-time-selector__range-content:active{cursor:grabbing;background:#ffffff14}.character-time-selector__range-label{font-size:12px;font-weight:600;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.5);white-space:nowrap;pointer-events:none;letter-spacing:.5px}.character-time-selector__info{display:flex;justify-content:space-between;align-items:center;font-size:13px;color:var(--td-text-color-secondary, #666);padding:0 4px;font-family:SF Mono,Monaco,monospace}.character-time-selector__actions{display:flex;justify-content:flex-end;gap:12px;padding-top:12px;border-top:1px solid var(--td-component-border, #e7e7e7)}@keyframes character-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}