aitu-app 0.6.39 → 0.6.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/assets/{AudioTrackList-CQEd1SE2.js → AudioTrackList-BtCRG0W9.js} +1 -1
- package/assets/{BaseDrawer-F3GT0wol.js → BaseDrawer-D3uMjiL3.js} +1 -1
- package/assets/{CanvasAudioPlayer-BzrQPq21.js → CanvasAudioPlayer-UVBRzAXF.js} +2 -2
- package/assets/{ChatMessagesArea-BVWuc832.js → ChatMessagesArea-DJejf06U.js} +2 -2
- package/assets/{DeferredMediaLibraryModal-CIs0-iBb.js → DeferredMediaLibraryModal-DcsXW5VN.js} +1 -1
- package/assets/{DeferredSyncSettings-CYz23NFv.js → DeferredSyncSettings-CyaQpm3i.js} +1 -1
- package/assets/{DrawnixDeferredFeatures-D5KdFjk7.js → DrawnixDeferredFeatures-Dn7Xj0Z3.js} +1 -1
- package/assets/DrawnixDeferredRuntime-IAIlHrj-.js +2 -0
- package/assets/{FrameSlideshow-B5Sqi_uV.js → FrameSlideshow-BoTtxoO1.js} +1 -1
- package/assets/{KnowledgeBaseContent-CmYEJ68E.js → KnowledgeBaseContent-H9TbTJvp.js} +3 -3
- package/assets/{MVCreator-CiekRLRL.js → MVCreator-aXPJyopn.js} +1 -1
- package/assets/{MediaViewer-CSkzdABU.js → MediaViewer-DzoUeXBR.js} +1 -1
- package/assets/{ModelBenchmarkWorkbench-Cg3ZArhL.js → ModelBenchmarkWorkbench-BwWtsodh.js} +1 -1
- package/assets/{MusicAnalyzer-DKddmB8C.js → MusicAnalyzer-CDvA6t6F.js} +1 -1
- package/assets/{MusicAnalyzer-Ch6kc-VC.js → MusicAnalyzer-dSwp-5u_.js} +1 -1
- package/assets/{PerformancePanel-CG1_1lC_.js → PerformancePanel-DzTs2p1S.js} +1 -1
- package/assets/{ProjectDrawer-B05H2n8S.js → ProjectDrawer-DewT6n4a.js} +1 -1
- package/assets/{ResizableDivider-3ZzTVK5M.js → ResizableDivider-C2cq_TjJ.js} +1 -1
- package/assets/TaskQueuePanel-BeApAqO9.js +33 -0
- package/assets/{ToolWinBoxManager-CX4BFjZL.js → ToolWinBoxManager-Soe0apvc.js} +1 -1
- package/assets/{ToolboxDrawer-DVxfQUMA.js → ToolboxDrawer-Btme0xvj.js} +1 -1
- package/assets/{VideoAnalyzer-BZLeASAQ.js → VideoAnalyzer-CuzOgGcP.js} +1 -1
- package/assets/{_baseFlatten-DHT6_8EL.js → _baseFlatten-BCqnPdEZ.js} +1 -1
- package/assets/{_baseUnset-Cb5y6_CP.js → _baseUnset-CvjcxnsS.js} +1 -1
- package/assets/_flatRest-rR2Z0C6Y.js +1 -0
- package/assets/{ai-analyze-BvjohIET.js → ai-analyze-X7h-GOWX.js} +1 -1
- package/assets/{arc-wiKe35BQ.js → arc-DXO039Xm.js} +1 -1
- package/assets/{arc-8k3RC1rL.js → arc-pfqxEt0t.js} +1 -1
- package/assets/{backup-restore-dialog-Cyxi_Y_l.js → backup-restore-dialog-BtB57ttG.js} +1 -1
- package/assets/{batch-image-generation-7zLsAOoI.js → batch-image-generation-D-i-Clb3.js} +1 -1
- package/assets/{blockDiagram-38ab4fdb-C1eTyro1.js → blockDiagram-38ab4fdb-DaJgeJH3.js} +1 -1
- package/assets/{blockDiagram-38ab4fdb-B_Rlv1o7.js → blockDiagram-38ab4fdb-Ds5ygtJ4.js} +1 -1
- package/assets/{browser-BV_Vo8ib.js → browser-BanMklii.js} +1 -1
- package/assets/{c4Diagram-3d4e48cf-wWn-Dh3x.js → c4Diagram-3d4e48cf-DJiQAduw.js} +1 -1
- package/assets/{c4Diagram-3d4e48cf-DJ9zPKS5.js → c4Diagram-3d4e48cf-o7ZLfD1H.js} +1 -1
- package/assets/{canvas-search-C6q6eL16.js → canvas-search-B3cv-vBS.js} +1 -1
- package/assets/channel-B6SjUS7J.js +1 -0
- package/assets/channel-DmO21CjN.js +1 -0
- package/assets/{character-api-service-C-_8TuNT.js → character-api-service-Z5lj969r.js} +1 -1
- package/assets/{character-storage-service-C2yg9sZZ.js → character-storage-service-C15hxlXu.js} +1 -1
- package/assets/{chevron-right-Dz5PrqD9.js → chevron-right-JQJ6nsCM.js} +1 -1
- package/assets/{classDiagram-70f12bd4-ZR7RlD8j.js → classDiagram-70f12bd4-BuujyQDs.js} +1 -1
- package/assets/{classDiagram-70f12bd4-C98UuGfZ.js → classDiagram-70f12bd4-Ck4-oQ5D.js} +1 -1
- package/assets/{classDiagram-v2-f2320105-CRHLGmlc.js → classDiagram-v2-f2320105-DoNQx5aA.js} +1 -1
- package/assets/{classDiagram-v2-f2320105-DwdJcJnt.js → classDiagram-v2-f2320105-Dv6Fyw1T.js} +1 -1
- package/assets/{clipper-C-3Qh_LP.js → clipper-Mxx-YtU_.js} +1 -1
- package/assets/clone-B5TrWxil.js +1 -0
- package/assets/clone-BtBg_52f.js +1 -0
- package/assets/{cloud-upload-CUOtugCp.js → cloud-upload-BPCicte3.js} +1 -1
- package/assets/{command-palette-CFAIZcMn.js → command-palette-DtjyZO1K.js} +1 -1
- package/assets/{createText-2e5e7dd3-D5vBY76-.js → createText-2e5e7dd3-C1lbpLn5.js} +1 -1
- package/assets/{createText-2e5e7dd3-tEJFXclV.js → createText-2e5e7dd3-zEue2anl.js} +1 -1
- package/assets/{download-hxWX9Zug.js → download-DYHFFs_D.js} +1 -1
- package/assets/{edges-e0da2a9e-CZg0dJ7e.js → edges-e0da2a9e-6TFI6ri7.js} +1 -1
- package/assets/{edges-e0da2a9e-DdZcggFY.js → edges-e0da2a9e-DLDhf7N7.js} +1 -1
- package/assets/{erDiagram-9861fffd-Bmy_l1e2.js → erDiagram-9861fffd-BwNvQade.js} +1 -1
- package/assets/{erDiagram-9861fffd-BST5k6B4.js → erDiagram-9861fffd-D8gvypkQ.js} +1 -1
- package/assets/{flowDb-956e92f1-C1e0_b4D.js → flowDb-956e92f1-BjoO9lX3.js} +1 -1
- package/assets/{flowDb-956e92f1-DSmVZJdU.js → flowDb-956e92f1-DThEumt2.js} +1 -1
- package/assets/{flowDiagram-66a62f08-CGUWQVBs.js → flowDiagram-66a62f08-D_3eV3FW.js} +1 -1
- package/assets/{flowDiagram-66a62f08-DhtZQo8y.js → flowDiagram-66a62f08-Djar-0xH.js} +1 -1
- package/assets/flowDiagram-v2-96b9c2cf-D_o_l8mf.js +1 -0
- package/assets/flowDiagram-v2-96b9c2cf-DlX4O43J.js +1 -0
- package/assets/{flowchart-elk-definition-4a651766-3gPCxf8A.js → flowchart-elk-definition-4a651766-DRuIOBj4.js} +1 -1
- package/assets/{flowchart-elk-definition-4a651766-CHnG4qQD.js → flowchart-elk-definition-4a651766-jtxteXv9.js} +1 -1
- package/assets/{ganttDiagram-c361ad54-CdFUB0PH.js → ganttDiagram-c361ad54-CMUm4MNv.js} +1 -1
- package/assets/{ganttDiagram-c361ad54-BGYuN1kY.js → ganttDiagram-c361ad54-DHKw9_fl.js} +1 -1
- package/assets/{gitGraphDiagram-72cf32ee-89Sf2o_5.js → gitGraphDiagram-72cf32ee-BQLvVnfS.js} +1 -1
- package/assets/{gitGraphDiagram-72cf32ee-DmC20udR.js → gitGraphDiagram-72cf32ee-Bbv0LiBu.js} +1 -1
- package/assets/{graph-B7_YBdiF.js → graph-BrEvzXkm.js} +1 -1
- package/assets/{graph-czHcr1bG.js → graph-DjrCCbgI.js} +1 -1
- package/assets/{grid-image-BuvvMKxR.js → grid-image-CveytoVB.js} +1 -1
- package/assets/{has-aqa_Fwg4.js → has-CvGtAZQx.js} +1 -1
- package/assets/{hasIn-BDL07gxd.js → hasIn-nbpeC_Rj.js} +1 -1
- package/assets/{image-C--jLg-o.js → image-C9vXAEOB.js} +1 -1
- package/assets/{index-3862675e-dB13VUjK.js → index-3862675e-BPi9rMHp.js} +1 -1
- package/assets/{index-3862675e-DqCaYyno.js → index-3862675e-C7dRX1tW.js} +1 -1
- package/assets/{index-AlmVCHjU.js → index-9VQ_keH7.js} +1 -1
- package/assets/{index-B0oVxHhb.js → index-9eZTYsQ4.js} +1 -1
- package/assets/{index-BcO0jvMY.js → index-B4YlucHs.js} +3 -3
- package/assets/{index-H0kbbmQa.js → index-B9_izWqT.js} +1 -1
- package/assets/{index-Dh9eNp-v.js → index-BNDRjX-d.js} +1 -1
- package/assets/{index-BMU-_5bW.js → index-BPqPzEbH.js} +1 -1
- package/assets/{index-NgLyuYs6.js → index-BjfO-2FL.js} +1 -1
- package/assets/{index-Dn-qqFRl.js → index-BkVG2Gm-.js} +1 -1
- package/assets/{index-CGAblvb-.js → index-Bl3dSmrt.js} +1 -1
- package/assets/{index-BDQbV2jT.js → index-C-CsfKtF.js} +1 -1
- package/assets/{index-Cp9T70tQ.js → index-CD9kyN2v.js} +1 -1
- package/assets/{index-DClRjyu_.js → index-CEceAxXa.js} +1 -1
- package/assets/{index-DsUayqw4.js → index-CRwF9kqw.js} +1 -1
- package/assets/{index-BMDx01aS.js → index-CXL-MAju.js} +1 -1
- package/assets/{index-DO8EqZSl.js → index-CbaLEWkX.js} +1 -1
- package/assets/{index-B159qVyk.js → index-CexfuLbX.js} +2 -2
- package/assets/{index-B12ExW-F.js → index-CjN5gXVP.js} +1 -1
- package/assets/{index-D63ClKwx.js → index-Cpw9Vij_.js} +1 -1
- package/assets/{index-CkSVbc7G.js → index-CuwHJJO4.js} +1 -1
- package/assets/{index-DXQDvWCm.js → index-Cw2YKg1X.js} +1 -1
- package/assets/{index-CDzl3czx.js → index-CwNwP9Dz.js} +1 -1
- package/assets/{index-BzXnlXkO.js → index-D04A0IqG.js} +1 -1
- package/assets/{index-BrfFsgde.js → index-D3yA2Deq.js} +1 -1
- package/assets/{index-CLp1N2JZ.js → index-D5YSioyv.js} +446 -445
- package/assets/{index-C9YPl9-V.js → index-D5e1IjmG.js} +1 -1
- package/assets/{index-69uVWCdC.js → index-D6CsrbT9.js} +1 -1
- package/assets/{index-Bp7QPVjC.js → index-DGEeQ7HV.js} +1 -1
- package/assets/{index-CS5gukgf.js → index-DI85grSr.js} +1 -1
- package/assets/{index-lHFn9fJk.js → index-DT5jCbGv.js} +1 -1
- package/assets/{index-DZczd-Cs.js → index-DVeMBRmh.js} +1 -1
- package/assets/{index-CL20-Lcn.js → index-DVmfYR4F.js} +1 -1
- package/assets/{index-w5pQgeYM.js → index-Dl7bI3dX.js} +1 -1
- package/assets/{index-BtAZEAqz.js → index-DrbRZzbV.js} +1 -1
- package/assets/{index-B9-Ksy1Y.js → index-DurJrENV.js} +1 -1
- package/assets/{index-DOf52awh.js → index-DuziGvh-.js} +1 -1
- package/assets/{index-B_74mOb3.js → index-DvHo6b9D.js} +1 -1
- package/assets/{index-MJpNPXv1.js → index-JUrStxAi.js} +1 -1
- package/assets/{index-DQzqI7bu.js → index-adb9JY8F.js} +1 -1
- package/assets/{index-ByZKBjmp.js → index-ahgk9PwY.js} +1 -1
- package/assets/{index-CJoYIJX6.js → index-iluEOi_R.js} +1 -1
- package/assets/{index-C2BjB9jD.js → index-mLaJnBAA.js} +1 -1
- package/assets/{index-Cci1CSF_.js → index-oOX-Ov_6.js} +1 -1
- package/assets/{index-DRtMRiLt.js → index-rRAjaCK6.js} +1 -1
- package/assets/{infoDiagram-f8f76790-2cxTV6ND.js → infoDiagram-f8f76790-DrZHsJcU.js} +1 -1
- package/assets/{infoDiagram-f8f76790-ncuTC4ZY.js → infoDiagram-f8f76790-xt1FG5kQ.js} +1 -1
- package/assets/{inspiration-board-D82q1P-g.js → inspiration-board-BMLGXtqa.js} +1 -1
- package/assets/{isEmpty-B0mmAwLs.js → isEmpty-qhP_Neh1.js} +1 -1
- package/assets/{journeyDiagram-49397b02-DnlSIYWp.js → journeyDiagram-49397b02-BXRUGums.js} +1 -1
- package/assets/{journeyDiagram-49397b02-D8uY2urN.js → journeyDiagram-49397b02-HG6JHZLW.js} +1 -1
- package/assets/{layers-D8yoqIuj.js → layers-37JfnNNl.js} +1 -1
- package/assets/{layout-CNovTgcJ.js → layout-0pP-oOdd.js} +1 -1
- package/assets/{layout-a3RfPzuD.js → layout-DiM0C_oE.js} +1 -1
- package/assets/{line-CDzoo4WB.js → line-Cn0HzQ42.js} +1 -1
- package/assets/{line-DvT1zUiJ.js → line-mCdubqmQ.js} +1 -1
- package/assets/{linear-PVY0JHkj.js → linear-Bav735VS.js} +1 -1
- package/assets/{linear-DdU4qJ1G.js → linear-D-8dOoVw.js} +1 -1
- package/assets/{lock-on-CXR9jpJA.js → lock-on-Du4SUznS.js} +1 -1
- package/assets/{memoize-DRWJ2oTL.js → memoize-CUfUlF3P.js} +1 -1
- package/assets/{mermaid.core-DQGbcicL.js → mermaid.core-C90rcTNj.js} +3 -3
- package/assets/{mindmap-definition-fc14e90a-BsVSwvhh.js → mindmap-definition-fc14e90a-DrPVXCNG.js} +1 -1
- package/assets/{mindmap-definition-fc14e90a-nwzPUDis.js → mindmap-definition-fc14e90a-kvuxr1PD.js} +1 -1
- package/assets/{model-benchmark-launcher-mcvgVSuC.js → model-benchmark-launcher-D7-0vF6C.js} +1 -1
- package/assets/{move-DOixEjqO.js → move-CrZ5ZpJ2.js} +1 -1
- package/assets/{photo-wall-splitter-qUPnfBPY.js → photo-wall-splitter-DJyzIrKV.js} +1 -1
- package/assets/{pick-C6VtGb4t.js → pick-8ulasiIr.js} +1 -1
- package/assets/{pieDiagram-8a3498a8-9eGElA9h.js → pieDiagram-8a3498a8-BV4yujZi.js} +1 -1
- package/assets/{pieDiagram-8a3498a8-jvbiFkC_.js → pieDiagram-8a3498a8-COebT5dY.js} +1 -1
- package/assets/{quadrantDiagram-120e2f19-B78rPuqy.js → quadrantDiagram-120e2f19-D7Pf5tdd.js} +1 -1
- package/assets/{quadrantDiagram-120e2f19-BFZXHPpX.js → quadrantDiagram-120e2f19-DzzHIi2O.js} +1 -1
- package/assets/{refresh-Bh3E8vu6.js → refresh-DqZ7biGU.js} +1 -1
- package/assets/{requirementDiagram-deff3bca-Dwsj1NJQ.js → requirementDiagram-deff3bca-BBh4lHOB.js} +1 -1
- package/assets/{requirementDiagram-deff3bca-Dyve0zys.js → requirementDiagram-deff3bca-D4gYW6VD.js} +1 -1
- package/assets/{sankeyDiagram-04a897e0-Dqzsdxsz.js → sankeyDiagram-04a897e0-6qMEhCdC.js} +1 -1
- package/assets/{sankeyDiagram-04a897e0-BmtIc_Gd.js → sankeyDiagram-04a897e0-DZfZTWnU.js} +1 -1
- package/assets/{sequenceDiagram-704730f1-DynL_kQJ.js → sequenceDiagram-704730f1-CF1FgHNp.js} +1 -1
- package/assets/{sequenceDiagram-704730f1-B7x0Kpog.js → sequenceDiagram-704730f1-Ky4oD9iw.js} +1 -1
- package/assets/{settings-dialog-Sz7sfOrI.js → settings-dialog-DWewjQlv.js} +1 -1
- package/assets/{shard-sync-service-8YTrUOnK.js → shard-sync-service-DhnPeZid.js} +1 -1
- package/assets/{stateDiagram-587899a1-CJTsLZ1r.js → stateDiagram-587899a1-C8z4TA39.js} +1 -1
- package/assets/{stateDiagram-587899a1-DUJNQ1DY.js → stateDiagram-587899a1-DhG3pQnc.js} +1 -1
- package/assets/{stateDiagram-v2-d93cdb3a-CG_NTdTs.js → stateDiagram-v2-d93cdb3a-CZ40HHGj.js} +1 -1
- package/assets/{stateDiagram-v2-d93cdb3a-KVoAwaCx.js → stateDiagram-v2-d93cdb3a-WjPgMbps.js} +1 -1
- package/assets/{styles-6aaf32cf-DBt4ei8W.js → styles-6aaf32cf-BiffgEl9.js} +1 -1
- package/assets/{styles-6aaf32cf-Cba2lFIZ.js → styles-6aaf32cf-DvyqUWEr.js} +1 -1
- package/assets/{styles-9a916d00-DHlla0Yt.js → styles-9a916d00-FAscS3iZ.js} +1 -1
- package/assets/{styles-9a916d00-KLddCkwp.js → styles-9a916d00-L-cTkIzG.js} +1 -1
- package/assets/{styles-c10674c1-CRA4Rhbz.js → styles-c10674c1-CkrpQSst.js} +1 -1
- package/assets/{styles-c10674c1-COY2QM5h.js → styles-c10674c1-DEwIcJGE.js} +1 -1
- package/assets/{svgDrawCommon-08f97a94-g2Xfy9Cn.js → svgDrawCommon-08f97a94-ByDqcIPi.js} +1 -1
- package/assets/{svgDrawCommon-08f97a94-B-xiMCiD.js → svgDrawCommon-08f97a94-DuY5GSOk.js} +1 -1
- package/assets/{task.types-CLfkYpCd.js → task.types-CBk6eZLY.js} +1 -1
- package/assets/{throttle-rCTAR-V0.js → throttle-DggB2waX.js} +1 -1
- package/assets/{timeline-definition-85554ec2-K1ig-iz5.js → timeline-definition-85554ec2-D3RKFEj4.js} +1 -1
- package/assets/{timeline-definition-85554ec2-DzXbh9iM.js → timeline-definition-85554ec2-DScTS5ad.js} +1 -1
- package/assets/{ttd-dialog-DBgFfIa8.js → ttd-dialog-D0U4oJwF.js} +4 -4
- package/assets/{upload-DydsLM8-.js → upload-B9RKSZna.js} +1 -1
- package/assets/useCharacters-uSUTHHnh.js +6 -0
- package/assets/{version-update-prompt-BnY7MFFE.js → version-update-prompt-CN1vliv8.js} +1 -1
- package/assets/{video-UIyGGGOK.js → video-B4LwvF3Q.js} +1 -1
- package/assets/{video-recovery-service-DpIX-4Cn.js → video-recovery-service-QWvZ0c0j.js} +1 -1
- package/assets/{workflow-generation-utils-BFUZ8qwH.js → workflow-generation-utils-BOXsMshH.js} +2 -2
- package/assets/{xychartDiagram-e933f94c-DJXH3Qk3.js → xychartDiagram-e933f94c-8_HkrupM.js} +1 -1
- package/assets/{xychartDiagram-e933f94c-BHRiS9cZ.js → xychartDiagram-e933f94c-B6-zQO32.js} +1 -1
- package/changelog.json +30 -0
- package/idle-prefetch-manifest.json +2 -2
- package/package.json +1 -1
- package/precache-manifest.json +393 -393
- package/sw.js +1 -1
- package/version.json +5 -3
- package/assets/DrawnixDeferredRuntime-D-K_FUT-.js +0 -2
- package/assets/TaskQueuePanel-Dcg0DCDL.js +0 -33
- package/assets/_flatRest-CXdsvGPY.js +0 -1
- package/assets/channel-CBV8i3Jf.js +0 -1
- package/assets/channel-n9jkWJRh.js +0 -1
- package/assets/clone-DMkRnOiD.js +0 -1
- package/assets/clone-jEb1TSUN.js +0 -1
- package/assets/flowDiagram-v2-96b9c2cf-CAAw3p-z.js +0 -1
- package/assets/flowDiagram-v2-96b9c2cf-DVu2NCro.js +0 -1
- package/assets/useCharacters-B9XvF2GC.js +0 -6
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-BvpTiXWY.css","./batch-image-generation-BePygpHd.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{b as s,i5 as cs,i6 as us,ec as ms,K as le,i7 as Ht,cO as Vt,cI as ps,eb as fs,e9 as Yt,hk as gs,gr as hs,i8 as bs,aR as _t,cP as it,I as xs,_ as Ns,x as e,i9 as vs,ia as ys,ib as Xt,ic as ws,id as js,ie as ks,ig as Es,ih as Ds,ii as Is,ij as Ss,ik as Jt,aq as ht,ap as Xe,il as Mt,O as Ot,im as Vi,A as _i,at as Ui,R as Ut,gH as Vs,io as Ci,ip as qi,eC as Ne,bl as Rt,ac as we,H as Le,hn as Pi,aC as pt,dF as _s,Z as Ti,cR as zt,cT as $e,cV as Ue,iq as tt,cU as Oe,cW as Ye,cX as Pe,bS as Se,ir as Us,is as Cs,aK as qs,e6 as Ct,e7 as qt,it as Ps,iu as Ts,bt as Ms,d3 as At,cZ as ke,iv as Os,w as Rs,iw as zs,ix as As,iy as Ls,iz as $s,iA as Fs,iB as Gs,iC as Bs,iD as Ks,ee as Ws,iE as mt,iF as Hs,iG as Ys,iH as Xs,fM as Js,d5 as Mi,bO as Oi,c6 as Qs,iI as Zs,d4 as ea,dl as ta,iJ as ia,iK as sa,dM as Qt,ab as aa,c$ as Ae,gb as na,bM as oa,bN as ra,dp as Zt,U as da,eI as la,eJ as ca,gy as ua,d0 as ma,iL as ei,iM as wt,ar as Lt,cY as pa,dk as fa,ad as Re,iN as ga,iO as Ri,dt as st,d1 as ha,d2 as ba,iP as ti,
|
|
2
|
+
import{b as s,i5 as cs,i6 as us,ec as ms,K as le,i7 as Ht,cO as Vt,cI as ps,eb as fs,e9 as Yt,hk as gs,gr as hs,i8 as bs,aR as _t,cP as it,I as xs,_ as Ns,x as e,i9 as vs,ia as ys,ib as Xt,ic as ws,id as js,ie as ks,ig as Es,ih as Ds,ii as Is,ij as Ss,ik as Jt,aq as ht,ap as Xe,il as Mt,O as Ot,im as Vi,A as _i,at as Ui,R as Ut,gH as Vs,io as Ci,ip as qi,eC as Ne,bl as Rt,ac as we,H as Le,hn as Pi,aC as pt,dF as _s,Z as Ti,cR as zt,cT as $e,cV as Ue,iq as tt,cU as Oe,cW as Ye,cX as Pe,bS as Se,ir as Us,is as Cs,aK as qs,e6 as Ct,e7 as qt,it as Ps,iu as Ts,bt as Ms,d3 as At,cZ as ke,iv as Os,w as Rs,iw as zs,ix as As,iy as Ls,iz as $s,iA as Fs,iB as Gs,iC as Bs,iD as Ks,ee as Ws,iE as mt,iF as Hs,iG as Ys,iH as Xs,fM as Js,d5 as Mi,bO as Oi,c6 as Qs,iI as Zs,d4 as ea,dl as ta,iJ as ia,iK as sa,dM as Qt,ab as aa,c$ as Ae,gb as na,bM as oa,bN as ra,dp as Zt,U as da,eI as la,eJ as ca,gy as ua,d0 as ma,iL as ei,iM as wt,ar as Lt,cY as pa,dk as fa,ad as Re,iN as ga,iO as Ri,dt as st,d1 as ha,d2 as ba,iP as ti,eP as ii,iQ as jt,iR as si,iS as xa,iT as kt,iU as Na,iV as va,iW as ai,iX as ya,iY as Et,fG as ni,iZ as oi,i_ as Dt,i$ as ri,j0 as di,av as li,cj as wa,C as ja,j1 as ka,j2 as ci,j3 as ui}from"./index-D5YSioyv.js";import{R as Ea}from"./refresh-DqZ7biGU.js";import{u as zi,a as Da,V as Ia,b as Sa}from"./useCharacters-uSUTHHnh.js";/* empty css */import{R as Ai}from"./ResizableDivider-C2cq_TjJ.js";import"./character-storage-service-C15hxlXu.js";import{o as Va}from"./dep-46bcb4bf-n6CAFNaf.js";import{C as mi}from"./index-D5e1IjmG.js";import{S as _a}from"./index-JUrStxAi.js";import"./character-api-service-Z5lj969r.js";import"./task.types-CBk6eZLY.js";import"./image-C9vXAEOB.js";import"./video-B4LwvF3Q.js";import"./download-DYHFFs_D.js";import"./pick-8ulasiIr.js";import"./_baseFlatten-BCqnPdEZ.js";import"./memoize-CUfUlF3P.js";import"./hasIn-nbpeC_Rj.js";import"./_flatRest-rR2Z0C6Y.js";/**
|
|
3
3
|
* tdesign v1.16.3
|
|
4
4
|
* (c) 2026 tdesign
|
|
5
5
|
* @license MIT
|
|
@@ -20,7 +20,7 @@ import{b as s,i5 as cs,i6 as us,ec as ms,K as le,i7 as Ht,cO as Vt,cI as ps,eb a
|
|
|
20
20
|
B --> C{Let me think}
|
|
21
21
|
C -->|One| D[Laptop]
|
|
22
22
|
C -->|Two| E[iPhone]
|
|
23
|
-
C -->|Three| F[Car]`,Ma=()=>{const{closeDialog:i}=ht(),{t,language:o}=Xe(),[n,a]=s.useState({loaded:!1,api:Promise.resolve({parseMermaidToDrawnix:async()=>({elements:[]})})});s.useEffect(()=>{(async()=>{try{const v=await Ot(()=>import("./index-
|
|
23
|
+
C -->|Three| F[Car]`,Ma=()=>{const{closeDialog:i}=ht(),{t,language:o}=Xe(),[n,a]=s.useState({loaded:!1,api:Promise.resolve({parseMermaidToDrawnix:async()=>({elements:[]})})});s.useEffect(()=>{(async()=>{try{const v=await Ot(()=>import("./index-B4YlucHs.js").then(u=>u.aq),__vite__mapDeps([0]),import.meta.url);a({loaded:!0,api:Promise.resolve(v)})}catch(v){console.error("Failed to load mermaid library:",v),_(new Error(t("dialog.error.loadMermaid")))}})()},[]);const[r,p]=s.useState(()=>Ta),[f,S]=s.useState(()=>[]),d=s.useDeferredValue(r.trim()),[h,_]=s.useState(null),U=Mt();s.useEffect(()=>{(async()=>{try{const v=await n.api;let u;try{u=await v.parseMermaidToDrawnix(d)}catch{u=await v.parseMermaidToDrawnix(d.replace(/"/g,"'"))}const{elements:M}=u;S(M),_(null)}catch(v){_(v)}})()},[d,n]);const x=()=>{if(!f.length)return;let b;const v=Vi(U);if(v)b=v;else{const u=_i.getBoardContainer(U).getBoundingClientRect(),M=[u.width/2,u.height/2],O=U.viewport.zoom,E=Ui(U),B=E[0]+M[0]/O,l=E[1]+M[1]/O,C=f,L=Ut.getBoundingRectangle(C.filter(P=>!Vs.isGroup(P)).map(P=>Ut.getRectangleByPoints(P.points)));b=[B-L.width/2,l-L.height/2]}U.insertFragment({elements:JSON.parse(JSON.stringify(f))},b,Ci.paste),b&&requestAnimationFrame(()=>{qi(U,b)}),i(Ne.mermaidToDrawnix)};return e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"ttd-dialog-desc",children:o==="zh"?e.jsxDEV(e.Fragment,{children:[t("dialog.mermaid.description")," ",e.jsxDEV("a",{href:"https://mermaid.js.org/syntax/flowchart.html",target:"_blank",rel:"noreferrer",children:t("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:t("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:t("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),t("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:[t("dialog.mermaid.description")," ",e.jsxDEV("a",{href:"https://mermaid.js.org/syntax/flowchart.html",target:"_blank",rel:"noreferrer",children:t("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:t("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:t("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),t("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(Fi,{children:[e.jsxDEV(gt,{label:t("dialog.mermaid.syntax"),children:e.jsxDEV(Gi,{input:r,placeholder:t("dialog.mermaid.placeholder"),onChange:b=>p(b.target.value),onKeyboardSubmit:()=>{x()}},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(gt,{label:t("dialog.mermaid.preview"),panelAction:{action:()=>{x()},label:t("dialog.mermaid.insert")},renderSubmitShortcut:()=>e.jsxDEV(Ki,{},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(Bi,{value:f,loaded:n.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)},yi=i=>i==="zh"?`# Milkdown 入门
|
|
24
24
|
|
|
25
25
|
Milkdown 是一个强大的所见即所得 Markdown 编辑器,兼具 Markdown 的简洁和现代编辑器的灵活性。它轻量且可扩展,适合从简单到复杂的编辑需求。
|
|
26
26
|
|
|
@@ -108,10 +108,10 @@ Use this if you want full control and a custom editor from the ground up.
|
|
|
108
108
|
Use this if you want a production-ready editor with minimal setup.
|
|
109
109
|
|
|
110
110
|
## Next Steps
|
|
111
|
-
🍼 Fun fact: This documentation is rendered by Milkdown itself!`,Oa=()=>{const{closeDialog:i}=ht(),{t,language:o}=Xe(),[n,a]=s.useState({loaded:!1,api:Promise.resolve({parseMarkdownToDrawnix:(b,v)=>null})});s.useEffect(()=>{(async()=>{try{const v=await Ot(()=>import("./index-
|
|
111
|
+
🍼 Fun fact: This documentation is rendered by Milkdown itself!`,Oa=()=>{const{closeDialog:i}=ht(),{t,language:o}=Xe(),[n,a]=s.useState({loaded:!1,api:Promise.resolve({parseMarkdownToDrawnix:(b,v)=>null})});s.useEffect(()=>{(async()=>{try{const v=await Ot(()=>import("./index-DurJrENV.js"),__vite__mapDeps([0]),import.meta.url);a({loaded:!0,api:Promise.resolve(v)})}catch(v){console.error("Failed to load mermaid library:",v),_(new Error(t("dialog.error.loadMermaid")))}})()},[]);const[r,p]=s.useState(()=>yi(o)),[f,S]=s.useState(()=>[]),d=s.useDeferredValue(r.trim()),[h,_]=s.useState(null),U=Mt();s.useEffect(()=>{p(yi(o))},[o]),s.useEffect(()=>{(async()=>{try{const v=await n.api;let u;try{u=await v.parseMarkdownToDrawnix(d)}catch{u=await v.parseMarkdownToDrawnix(d.replace(/"/g,"'"))}const M=u;M.points=[[0,0]],M&&(S([M]),_(null))}catch(v){_(v)}})()},[d,n]);const x=()=>{if(!f.length)return;let b;const v=Vi(U);if(v)b=v;else{const M=_i.getBoardContainer(U).getBoundingClientRect(),O=[M.width/4,M.height/2-20],E=U.viewport.zoom,B=Ui(U),l=B[0]+O[0]/E,C=B[1]+O[1]/E;b=[l,C]}const u=f;U.insertFragment({elements:JSON.parse(JSON.stringify(u))},b,Ci.paste),b&&requestAnimationFrame(()=>{qi(U,b)}),i(Ne.markdownToDrawnix)};return e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"ttd-dialog-desc",children:t("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(Fi,{children:[e.jsxDEV(gt,{label:t("dialog.markdown.syntax"),children:e.jsxDEV(Gi,{input:r,placeholder:t("dialog.markdown.placeholder"),onChange:b=>p(b.target.value),onKeyboardSubmit:()=>{x()}},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(gt,{label:t("dialog.markdown.preview"),panelAction:{action:()=>{x()},label:t("dialog.markdown.insert")},renderSubmitShortcut:()=>e.jsxDEV(Ki,{},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(Bi,{value:f,loaded:n.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)};function Wi(){const{completedTasks:i}=Rt(),t=s.useMemo(()=>i.filter(a=>{var r;return a.type===we.IMAGE&&((r=a.result)==null?void 0:r.url)}).map(a=>({id:a.id,type:"image",prompt:a.params.prompt,timestamp:a.completedAt||a.createdAt,imageUrl:a.result.url,width:a.result.width||1024,height:a.result.height||1024,uploadedImages:a.params.uploadedImages})).sort((a,r)=>r.timestamp-a.timestamp),[i]),o=s.useMemo(()=>i.filter(a=>{var r;return a.type===we.VIDEO&&((r=a.result)==null?void 0:r.url)}).map(a=>({id:a.id,type:"video",prompt:a.params.prompt,timestamp:a.completedAt||a.createdAt,imageUrl:a.result.thumbnailUrl||a.result.url,width:a.result.width||400,height:a.result.height||225,previewUrl:a.result.url,downloadUrl:a.result.url,uploadedImage:a.params.uploadedImage})).sort((a,r)=>r.timestamp-a.timestamp),[i]),n=s.useMemo(()=>[...t,...o].sort((a,r)=>r.timestamp-a.timestamp),[t,o]);return{imageHistory:t,videoHistory:o,allHistory:n}}const wi=(i,t,o)=>{const n=o==="image"?{isGenerating:i,imageLoading:t}:{isGenerating:i,videoLoading:t};window.dispatchEvent(new CustomEvent("ai-generation-state-change",{detail:n}))},Hi=(i,t,o)=>{s.useEffect(()=>{const n=a=>{(a.metaKey||a.ctrlKey)&&a.key==="Enter"&&(a.preventDefault(),!i&&t.trim()&&o())};return document.addEventListener("keydown",n),()=>{document.removeEventListener("keydown",n)}},[i,t,o])},Yi=i=>{const[t,o]=s.useState(!1),[n,a]=s.useState(!1),r=s.useCallback(f=>{o(f),wi(f,n,i)},[n,i]),p=s.useCallback(f=>{a(f),wi(t,f,i)},[t,i]);return{isGenerating:t,isLoading:n,updateIsGenerating:r,updateIsLoading:p}},Ra=(i,t,o)=>t==="image"?i==="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":o==="sora"?i==="zh"?"描述视频内容,输入 @ 可引用已创建的角色,如 @username 在海边漫步...":"Describe video content, type @ to reference created characters, e.g. @username walking on the beach...":i==="zh"?"生成一个美丽的日出场景,阳光从山峰后缓缓升起,云朵轻柔地飘动":"Generate a beautiful sunrise scene where the sun slowly rises from behind mountains with clouds gently floating",za=({originalPrompt:i,optimizationRequirements:t,language:o,type:n})=>{const a=i.trim(),r=(t==null?void 0:t.trim())||"",p=o==="zh"?n==="image"?"图片生成":"视频生成":n==="image"?"image generation":"video generation",f=o==="zh"?n==="image"?"重点补足主体、构图、风格、光线、材质与画面细节。":"重点补足主体动作、镜头语言、运镜、时序、转场与画面连续性。":n==="image"?"Improve subject detail, composition, style, lighting, materials, and visual detail.":"Improve subject motion, camera language, camera movement, timing, transitions, and continuity.";return o==="zh"?[`你是一名专业的${p}提示词优化助手。`,"请基于原始提示词和优化要求,输出一版可直接用于生成的最终提示词。","","要求:","1. 保持原始提示词的核心意图,不要偏题。","2. 优先满足优化要求;如果优化要求为空,仅做必要润色与结构优化。","3. 保持与原始提示词相同的语言风格;原文中英混合时,尽量沿用原表达。","4. 如果原始提示词已经较完整,只做轻量优化,避免无意义堆砌。",`5. ${f}`,"6. 只输出最终优化后的提示词,不要解释、不要加标题、不要用代码块。","","【原始提示词】",a,"","【优化要求】",r||"无,做通顺、准确、可执行的轻量优化。"].join(`
|
|
112
112
|
`):[`You are a professional ${p} prompt optimizer.`,"Based on the original prompt and refinement requirements, output one final prompt that can be used directly.","","Requirements:","1. Preserve the core intent of the original prompt.","2. Prioritize the refinement requirements; if they are empty, only do light polishing and restructuring.","3. Keep the same language style as the original prompt. If the original is mixed-language, preserve that style when possible.","4. If the original prompt is already detailed, only refine lightly and avoid unnecessary expansion.",`5. ${f}`,"6. Output only the final optimized prompt. No explanation, no title, no code block.","","[Original Prompt]",a,"","[Refinement Requirements]",r||"None. Apply light polishing for clarity and execution quality."].join(`
|
|
113
113
|
`)},Aa=i=>{const t=i.trim(),o=t.match(/^```[\w-]*\n?([\s\S]*?)\n?```$/);return o?o[1].trim():t},La=[1,2,3,4,5,10,20,50,100],$a="aitu_image_generation_quantity",Fa="aitu_video_generation_quantity",It=100,Xi=({language:i,type:t,isGenerating:o,hasGenerated:n,canGenerate:a,onGenerate:r,onReset:p,leftContent:f})=>{const S=t==="video"?Fa:$a,[d,h]=s.useState(()=>{try{const l=localStorage.getItem(S);if(l){const C=parseInt(l,10);if(!isNaN(C)&&C>=1&&C<=It)return C}}catch{}return 1}),[_,U]=s.useState(!1),[x,b]=s.useState(()=>d.toString()),v=s.useRef(null);s.useEffect(()=>{b(d.toString());try{localStorage.setItem(S,d.toString())}catch{}},[d,S]),s.useEffect(()=>{const l=C=>{v.current&&!v.current.contains(C.target)&&(U(!1),u())};return document.addEventListener("mousedown",l),()=>document.removeEventListener("mousedown",l)},[x]);const u=()=>{let l=parseInt(x,10);(isNaN(l)||l<1)&&(l=1),l>It&&(l=It),b(l.toString()),h(l)},M=l=>{const C=l.target.value;(C===""||/^\d*$/.test(C))&&b(C)},O=l=>{h(l),b(l.toString()),U(!1)},E=()=>{o||U(!_)},B=()=>{r(d)};return e.jsxDEV("div",{className:"section-actions unified-action-bar",children:[f&&e.jsxDEV("div",{className:"action-bar-left",children:f},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 ${o?"is-generating":""} ${a?"can-generate":""}`,children:[e.jsxDEV("div",{className:"quantity-section",ref:v,children:[e.jsxDEV(Le,{content:i==="zh"?"生成数量":"Quantity",theme:"light",children:e.jsxDEV("div",{className:`quantity-control ${_?"is-open":""} ${o?"is-disabled":""}`,children:[e.jsxDEV("input",{type:"text",inputMode:"numeric",value:x,onChange:M,onBlur:u,"data-track":"ai_click_quantity_input",onClick:()=>!o&&U(!0),disabled:o,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(),E()},disabled:o,className:"quantity-toggle",children:e.jsxDEV(Pi,{className:`quantity-icon ${_?"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),_&&e.jsxDEV("div",{className:"quantity-dropdown",children:[e.jsxDEV("div",{className:"quantity-dropdown-header",children:i==="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),La.map(l=>e.jsxDEV("button",{type:"button","data-track":"ai_click_quantity_select",onClick:()=>O(l),className:`quantity-option ${d===l?"is-selected":""}`,children:[e.jsxDEV("span",{children:[l," ",t==="video"?i==="zh"?"个":l>1?"videos":"video":i==="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),d===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:B,disabled:o||!a,className:`generate-button ${o?"loading":""}`,children:o?i==="zh"?"生成中...":"Generating...":n?i==="zh"?"重新生成":"Regenerate":t==="video"?i==="zh"?"生成视频":"Generate Video":i==="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(Le,{content:i==="zh"?"重置表单":"Reset form",theme:"light",children:e.jsxDEV(pt,{"data-track":"ai_click_reset",onClick:p,disabled:o,variant:"text",shape:"circle",icon:e.jsxDEV(Ea,{},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)},Ji=({error:i})=>i?e.jsxDEV("div",{className:"form-error",children:i},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,Qi=({visible:i,query:t,position:o,showBelow:n=!1,selectedIndex:a,onSelect:r,onClose:p})=>{const{completedCharacters:f,isLoading:S}=zi(),d=s.useRef(null),h=s.useMemo(()=>{if(!t)return f;const x=t.toLowerCase();return f.filter(b=>b.username.toLowerCase().includes(x))},[f,t]);s.useEffect(()=>{if(!i||!d.current)return;const x=d.current.querySelector(".character-mention-popup__item--selected");x&&x.scrollIntoView({block:"nearest"})},[i,a]),s.useEffect(()=>{if(!i)return;const x=b=>{d.current&&!d.current.contains(b.target)&&p()};return document.addEventListener("mousedown",x),()=>document.removeEventListener("mousedown",x)},[i,p]);const _=s.useCallback(x=>{_s.track("character_used_in_prompt",{characterId:x.id,username:x.username}),r(x)},[r]);if(!i)return null;const U={position:"fixed",top:o.top,left:o.left,transform:n?"none":"translateY(-100%)",zIndex:Ti.DROPDOWN_PORTAL,maxHeight:"200px",overflowY:"auto"};return S?e.jsxDEV("div",{ref:d,className:"character-mention-popup",style:U,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:d,className:"character-mention-popup",style:U,children:e.jsxDEV("div",{className:"character-mention-popup__empty",children:t?`未找到 "${t}" 相关角色`:"暂无可用角色"},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:d,className:"character-mention-popup",style:U,children:h.map((x,b)=>e.jsxDEV("div",{className:`character-mention-popup__item ${b===a?"character-mention-popup__item--selected":""}`,onClick:()=>_(x),"data-track":"character_click_mention",children:[e.jsxDEV("div",{className:"character-mention-popup__item-avatar",children:e.jsxDEV(Da,{characterId:x.id,profilePictureUrl:x.profilePictureUrl,alt:x.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:["@",x.username]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterMentionPopup.tsx",lineNumber:154,columnNumber:11},void 0)]},x.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)},Ga={visible:!1,query:"",position:{top:0,left:0},showBelow:!1,startIndex:-1,selectedIndex:0};function Zi({enabled:i=!0,onPromptChange:t,prompt:o}){const[n,a]=s.useState(Ga),r=s.useRef(null),{completedCharacters:p}=zi(),f=s.useCallback(x=>{if(!r.current)return{top:0,left:0,showBelow:!1};const b=r.current,v=b.getBoundingClientRect(),u=document.createElement("div"),M=window.getComputedStyle(b),O=["fontFamily","fontSize","fontWeight","fontStyle","letterSpacing","lineHeight","textTransform","wordSpacing","whiteSpace","paddingTop","paddingRight","paddingBottom","paddingLeft","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","boxSizing"];u.style.position="absolute",u.style.top="0",u.style.left="-9999px",u.style.visibility="hidden",u.style.whiteSpace="pre-wrap",u.style.overflowWrap="break-word",u.style.overflow="hidden",u.style.width=`${b.clientWidth}px`,O.forEach(G=>{u.style[G]=M.getPropertyValue(G.replace(/([A-Z])/g,"-$1").toLowerCase())}),document.body.appendChild(u);let E=0,B=0;try{const G=b.value.substring(0,x),oe=document.createTextNode(G),J=document.createElement("span");J.textContent="",u.appendChild(oe),u.appendChild(J);const fe=J.getBoundingClientRect(),T=u.getBoundingClientRect();E=fe.top-T.top,B=fe.left-T.left}finally{document.body.removeChild(u)}const l=b.scrollTop,C=parseInt(M.lineHeight)||20;let L=v.top+E-l,P=v.left+B;const R=240,Y=window.innerWidth;P+R>Y-16&&(P=Y-R-16),P<16&&(P=16);const ie=L<220+16;return ie?L=L+C+4:L=L-48,{top:L,left:P,showBelow:ie}},[]),S=s.useCallback((x,b)=>{if(!i)return;const v=x.substring(0,b),u=v.lastIndexOf("@");if(u===-1){a(B=>({...B,visible:!1}));return}const M=u>0?x[u-1]:" ";if(!/\s/.test(M)&&u!==0){a(B=>({...B,visible:!1}));return}const O=v.substring(u+1);if(O.includes(" ")){a(B=>({...B,visible:!1}));return}const E=f(b);a({visible:!0,query:O,position:{top:E.top,left:E.left},showBelow:E.showBelow,startIndex:u,selectedIndex:0})},[i,f]),d=s.useCallback(x=>{var O;if(n.startIndex===-1)return;const b=o.substring(0,n.startIndex),v=((O=r.current)==null?void 0:O.selectionStart)||o.length,u=o.substring(v),M=`${b}@${x.username} ${u}`;t(M),a(E=>({...E,visible:!1})),setTimeout(()=>{if(r.current){const E=b.length+x.username.length+2;r.current.focus(),r.current.setSelectionRange(E,E)}},0)},[n.startIndex,o,t]),h=s.useCallback(x=>{if(!n.visible)return;const b=n.query?p.filter(v=>v.username.toLowerCase().includes(n.query.toLowerCase())):p;switch(x.key){case"ArrowDown":x.preventDefault(),a(v=>({...v,selectedIndex:Math.min(v.selectedIndex+1,b.length-1)}));break;case"ArrowUp":x.preventDefault(),a(v=>({...v,selectedIndex:Math.max(v.selectedIndex-1,0)}));break;case"Enter":case"Tab":b.length>0&&(x.preventDefault(),d(b[n.selectedIndex]));break;case"Escape":x.preventDefault(),a(v=>({...v,visible:!1}));break}},[n,p,d]),_=s.useCallback((x,b)=>{t(x),S(x,b)},[t,S]),U=s.useCallback(()=>{a(x=>({...x,visible:!1}))},[]);return{mentionState:n,setMentionState:a,textareaRef:r,completedCharacters:p,handleTextChange:_,handleKeyDown:h,handleCharacterSelect:d,closeMentionPopup:U,calculateMentionPosition:f}}const es=({prompt:i,onPromptChange:t,presetPrompts:o,language:n,type:a,disabled:r=!1,onError:p,enableMention:f=!0,videoProvider:S})=>{var D;const[d,h]=s.useState(!1),[_,U]=s.useState(!1),[x,b]=s.useState(""),[v,u]=s.useState(!1),M=s.useRef(null),O=s.useRef(null),E=s.useRef(null),[B,l]=s.useState(null),[C,L]=s.useState(0),P=zt("text"),R=$e("text"),Y=R.modelId||((D=P[0])==null?void 0:D.id)||"",X=Ue(R.profileId,R.modelId)||(Y?Ue(null,Y):null),[ie,G]=s.useState(Y),[oe,J]=s.useState(X),fe=s.useMemo(()=>tt.sortPrompts(a,o).map((w,V)=>({id:`preset-${V}-${w.slice(0,20)}`,content:w,pinned:tt.isPinned(a,w)})),[a,o,C]),T=f&&a==="video"&&S==="sora",{mentionState:z,textareaRef:A,handleTextChange:de,handleKeyDown:H,handleCharacterSelect:me,closeMentionPopup:Q}=Zi({enabled:T,onPromptChange:t,prompt:i}),Z=s.useCallback(()=>{if(O.current&&d){const m=O.current.getBoundingClientRect(),w=8,V=320,ee=400,$=window.innerHeight-m.top+4,ve=Math.min(V,window.innerWidth-w*2),ge=window.innerWidth-m.right,De=window.innerWidth-ve-w,ce=Math.max(Math.min(ge,De),w),he=Math.min(ee,m.top-w,window.innerHeight*.45);l({bottom:$,right:ce,maxHeight:he})}},[d]);s.useEffect(()=>{if(d)return Z(),window.addEventListener("scroll",Z,!0),window.addEventListener("resize",Z),()=>{window.removeEventListener("scroll",Z,!0),window.removeEventListener("resize",Z)}},[d,Z]),s.useEffect(()=>{const m=w=>{const V=w.target;if(M.current&&!M.current.contains(V)){const ee=document.querySelector(".preset-prompt-panel-portal");ee!=null&&ee.contains(V)||h(!1)}};if(d)return document.addEventListener("mousedown",m),()=>document.removeEventListener("mousedown",m)},[d]);const ye=s.useCallback(m=>{const w=typeof m=="string"?m:m.content;t(w),p==null||p(null),h(!1)},[t,p]),Ve=s.useCallback(m=>{const w=fe.find(V=>V.id===m);w&&(w.pinned?tt.unpinPrompt(a,w.content):tt.pinPrompt(a,w.content),L(V=>V+1))},[a,fe]),pe=s.useCallback(m=>{const w=fe.find(V=>V.id===m);w&&(tt.deletePrompt(a,w.content),L(V=>V+1))},[a,fe]),k=s.useCallback(m=>{const w=m.target.value,V=m.target.selectionStart||0;de(w,V),p==null||p(null)},[de,p]);s.useEffect(()=>{a!=="video"&&Q()},[a,Q]);const se=s.useMemo(()=>{if(Oe(P,ie,oe)||!ie)return P;const w=Ye("text",ie,oe);return w?[w,...P]:P},[ie,oe,P]),be=s.useCallback(()=>{var ve;const m=$e("text"),w=Ue(m.profileId,m.modelId),V=Oe(P,m.modelId,w)||Ye("text",m.modelId,w),ee=(V==null?void 0:V.id)||m.modelId||((ve=P[0])==null?void 0:ve.id)||"",$=Pe(V)||w||(ee?Ue(null,ee):null);G(ee),J($)},[P]),Ee=s.useCallback(()=>{var m;console.info("[PromptOptimize] close dialog",{type:a,language:n}),(m=E.current)==null||m.abort(),E.current=null,u(!1),b(""),U(!1)},[n,a]),c=s.useCallback(()=>{if(console.info("[PromptOptimize] handleOpenOptimizeDialog",{type:a,language:n,promptLength:i.trim().length,disabled:r,isOptimizing:v,model:ie,modelRef:oe}),!i.trim()){Se.warning(n==="zh"?"请先输入提示词":"Please enter a prompt first");return}be(),b(""),U(!0)},[r,v,n,ie,oe,i,be,a]),g=s.useCallback(async()=>{var V;const m=i.trim();if(!m){Se.warning(n==="zh"?"请先输入提示词":"Please enter a prompt first");return}const w=new AbortController;(V=E.current)==null||V.abort(),E.current=w,u(!0);try{const ee=Aa((await Us.getFallbackExecutor().generateText({prompt:za({originalPrompt:m,optimizationRequirements:x,language:n,type:a}),model:ie||void 0,modelRef:oe},{signal:w.signal})).content);if(!ee)throw new Error("Empty optimized prompt");t(ee),p==null||p(null),Se.success(n==="zh"?"提示词优化完成":"Prompt optimized"),b(""),U(!1)}catch(ee){if(w.signal.aborted)return;console.error("[PromptInput] Failed to optimize prompt:",ee),Se.error(n==="zh"?"提示词优化失败,请稍后重试":"Failed to optimize prompt, please try again later")}finally{E.current===w&&(E.current=null),u(!1)}},[n,p,t,ie,oe,x,i,a]);s.useEffect(()=>{console.info("[PromptOptimize] dialog state changed",{type:a,open:_})},[_,a]),s.useEffect(()=>()=>{var m;(m=E.current)==null||m.abort(),E.current=null},[]);const q=()=>{if(!d||!B)return null;const m=n==="zh"?`${a==="image"?"图片":"视频"}描述预设`:`${a==="image"?"Image":"Video"} Description Presets`,w=e.jsxDEV("div",{className:"preset-prompt-panel-portal",style:{position:"fixed",bottom:B.bottom,right:B.right,zIndex:Ti.DIALOG_POPOVER,"--panel-max-width":"calc(100vw - 16px)","--panel-max-height":`${B.maxHeight}px`},children:e.jsxDEV(Os,{title:m,items:fe,onSelect:ye,onTogglePin:Ve,onDelete:pe,language:n,disabled:r,showCount:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:399,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:387,columnNumber:7},void 0);return Rs.createPortal(w,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:n==="zh"?`${a==="image"?"图片":"视频"}描述`:`${a==="image"?"Image":"Video"} Description`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:418,columnNumber:7},void 0),e.jsxDEV("div",{className:"textarea-with-preset",children:e.jsxDEV("div",{className:"preset-tooltip-container",ref:M,children:[e.jsxDEV("button",{ref:O,type:"button",className:"preset-icon-button",disabled:r,onClick:()=>h(!d),children:e.jsxDEV(Cs,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:430,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:423,columnNumber:11},void 0),q()]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:422,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:421,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:417,columnNumber:7},void 0),e.jsxDEV("div",{className:"prompt-textarea-wrapper",children:[e.jsxDEV("textarea",{ref:A,className:"form-textarea",value:i,onChange:k,onKeyDown:H,placeholder:Ra(n,a,S),rows:4,disabled:r},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:437,columnNumber:9},void 0),e.jsxDEV("button",{type:"button",className:"prompt-optimize-button",onPointerDown:m=>{var V;const w=(V=O.current)==null?void 0:V.getBoundingClientRect();console.info("[PromptOptimize] button pointerdown",{type:a,targetClass:m.target instanceof HTMLElement?m.target.className:"unknown",currentTargetClass:m.currentTarget instanceof HTMLElement?m.currentTarget.className:"unknown",rect:w})},onClick:()=>{console.info("[PromptOptimize] button click",{type:a}),c()},disabled:r||v,"aria-label":n==="zh"?"优化提示词":"Optimize prompt",title:n==="zh"?"优化提示词":"Optimize prompt",children:e.jsxDEV(qs,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:475,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:447,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:436,columnNumber:7},void 0),T&&e.jsxDEV(Qi,{visible:z.visible,query:z.query,position:z.position,showBelow:z.showBelow,selectedIndex:z.selectedIndex,onSelect:me,onClose:Q},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:481,columnNumber:9},void 0),e.jsxDEV(Ct,{open:_,onOpenChange:m=>{console.info("[PromptOptimize] Dialog onOpenChange",{type:a,open:m}),m||Ee()},children:e.jsxDEV(qt,{className:"Dialog prompt-optimize-dialog",children:[e.jsxDEV("div",{className:"prompt-optimize-dialog__header",children:[e.jsxDEV("div",{className:"prompt-optimize-dialog__headline",children:[e.jsxDEV(Ps,{className:"prompt-optimize-dialog__title",children:n==="zh"?"优化提示词":"Optimize Prompt"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:507,columnNumber:15},void 0),e.jsxDEV(Ts,{className:"prompt-optimize-dialog__description",children:n==="zh"?"输入优化方向,选择文本模型,优化后会直接回填当前提示词。":"Describe how to refine the prompt and the optimized result will fill back into the current field."},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:510,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:506,columnNumber:13},void 0),e.jsxDEV("button",{type:"button",className:"prompt-optimize-dialog__close",onClick:Ee,"aria-label":n==="zh"?"关闭":"Close",children:e.jsxDEV(Ms,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:522,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:516,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:505,columnNumber:11},void 0),e.jsxDEV("div",{className:"prompt-optimize-dialog__body",children:[e.jsxDEV("div",{className:"prompt-optimize-dialog__section",children:[e.jsxDEV("span",{className:"prompt-optimize-dialog__label",children:n==="zh"?"当前提示词":"Current Prompt"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:528,columnNumber:15},void 0),e.jsxDEV("div",{className:"prompt-optimize-dialog__source",children:i.trim()},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:531,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:527,columnNumber:13},void 0),e.jsxDEV("div",{className:"prompt-optimize-dialog__section",children:[e.jsxDEV("label",{className:"prompt-optimize-dialog__label",htmlFor:`prompt-optimize-requirements-${a}`,children:n==="zh"?"优化要求":"Refinement Requirements"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:537,columnNumber:15},void 0),e.jsxDEV("textarea",{id:`prompt-optimize-requirements-${a}`,className:"prompt-optimize-dialog__textarea",value:x,onChange:m=>b(m.target.value),placeholder:n==="zh"?"例如:更电影感、补充镜头语言、减少冗余、强调主体与光线...":"For example: make it more cinematic, add camera language, reduce redundancy, emphasize subject and lighting...",rows:4,disabled:v},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:543,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:536,columnNumber:13},void 0),e.jsxDEV("div",{className:"prompt-optimize-dialog__section",children:[e.jsxDEV("span",{className:"prompt-optimize-dialog__label",children:n==="zh"?"文本模型":"Text Model"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:559,columnNumber:15},void 0),e.jsxDEV("div",{className:"prompt-optimize-dialog__model",children:e.jsxDEV(At,{variant:"form",selectedModel:ie,selectedSelectionKey:ke(ie,oe),onSelect:m=>{G(m),J(null)},onSelectModel:m=>{G(m.id),J(Pe(m))},models:se,placement:"down",disabled:v,language:n,placeholder:n==="zh"?"选择文本模型":"Select text model"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:563,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:562,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:558,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:526,columnNumber:11},void 0),e.jsxDEV("div",{className:"prompt-optimize-dialog__footer",children:[e.jsxDEV("button",{type:"button",className:"prompt-optimize-dialog__footer-btn prompt-optimize-dialog__footer-btn--secondary",onClick:Ee,disabled:v,children:n==="zh"?"取消":"Cancel"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:591,columnNumber:13},void 0),e.jsxDEV("button",{type:"button",className:"prompt-optimize-dialog__footer-btn prompt-optimize-dialog__footer-btn--primary",onClick:()=>void g(),disabled:v||!i.trim(),children:v?n==="zh"?"优化中...":"Optimizing...":n==="zh"?"确认优化":"Optimize"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:599,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:590,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:504,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:492,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:416,columnNumber:5},void 0)};function Ba(i){return i.map(t=>t.prompt.trim()).filter(t=>t.length>0).filter((t,o,n)=>n.indexOf(t)===o)}const ts=(i,t,o)=>{const n=i==="image"?$s(t):Fs(t),a=Ba(o);return[...[...i==="video"?zs():As(),...a].filter((S,d,h)=>h.indexOf(S)===d).slice(0,Ls),...n].filter((S,d,h)=>h.indexOf(S)===d).slice(0,Gs)},is=(i,t,o)=>{!t||!t.trim()||(i==="video"?Bs(t.trim()):Ks(t.trim()))},Ka=({model:i,configOverride:t,duration:o,size:n,onDurationChange:a,onSizeChange:r,disabled:p=!1})=>{const f=t||Ws(i),S=f.durationOptions,d=f.sizeOptions,h=S.some(u=>u.value===o),_=d.some(u=>u.value===n),U=h?o:f.defaultDuration,x=_?n:f.defaultSize,b=S.map(u=>({label:u.label,value:u.value})),v=d.map(u=>({label:u.label,value:u.value}));return e.jsxDEV("div",{className:"video-model-options",children:[e.jsxDEV("div",{className:"video-model-options__row",children:[e.jsxDEV("label",{className:"video-model-options__label",children:"时长"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/VideoModelOptions.tsx",lineNumber:56,columnNumber:9},void 0),e.jsxDEV("div",{className:"video-model-options__control",children:S.length===1?e.jsxDEV("span",{className:"video-model-options__fixed-value",children:S[0].label},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/VideoModelOptions.tsx",lineNumber:60,columnNumber:13},void 0):e.jsxDEV(ct.Group,{value:U,onChange:u=>{const M=u;M!==U&&a(M)},disabled:p,variant:"default-filled",size:"small",children:b.map(u=>e.jsxDEV(ct.Button,{value:u.value,children:u.label},u.value,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/VideoModelOptions.tsx",lineNumber:78,columnNumber:17},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/VideoModelOptions.tsx",lineNumber:65,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/VideoModelOptions.tsx",lineNumber:57,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/VideoModelOptions.tsx",lineNumber:55,columnNumber:7},void 0),e.jsxDEV("div",{className:"video-model-options__row",children:[e.jsxDEV("label",{className:"video-model-options__label",children:"尺寸"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/VideoModelOptions.tsx",lineNumber:89,columnNumber:9},void 0),e.jsxDEV("div",{className:"video-model-options__control",children:d.length===1?e.jsxDEV("span",{className:"video-model-options__fixed-value",children:d[0].label},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/VideoModelOptions.tsx",lineNumber:92,columnNumber:13},void 0):e.jsxDEV(ct.Group,{value:x,onChange:u=>{const M=u;M!==x&&r(M)},disabled:p,variant:"default-filled",size:"small",children:v.map(u=>e.jsxDEV(ct.Button,{value:u.value,children:u.label},u.value,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/VideoModelOptions.tsx",lineNumber:109,columnNumber:17},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/VideoModelOptions.tsx",lineNumber:96,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/VideoModelOptions.tsx",lineNumber:90,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/VideoModelOptions.tsx",lineNumber:88,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/VideoModelOptions.tsx",lineNumber:53,columnNumber:5},void 0)},Wa=({value:i,onChange:t,compact:o=!0,options:n})=>{const{language:a}=Xe(),[r,p]=s.useState(!1),f=s.useRef(null),S=n&&n.length>0?n:mt,d=s.useMemo(()=>i==="auto"?Hs:Ys(i),[i]);s.useEffect(()=>{const _=U=>{f.current&&!f.current.contains(U.target)&&p(!1)};return r&&document.addEventListener("mousedown",_),()=>{document.removeEventListener("mousedown",_)}},[r]);const h=_=>{t(_.value),p(!1)};return o?e.jsxDEV("div",{className:"aspect-ratio-selector aspect-ratio-selector--compact",ref:f,children:[e.jsxDEV(Le,{content:a==="zh"?"选择图片比例":"Select aspect ratio",theme:"light",children:e.jsxDEV("div",{className:`aspect-ratio-selector__trigger ${r?"aspect-ratio-selector__trigger--open":""}`,"data-track":"ai_click_ratio_toggle",onClick:()=>p(!r),children:[e.jsxDEV("span",{className:"aspect-ratio-selector__trigger-value",children:(d==null?void 0:d.label)||i},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/AspectRatioSelector.tsx",lineNumber:82,columnNumber:13},void 0),e.jsxDEV(Pi,{className:`aspect-ratio-selector__trigger-icon ${r?"aspect-ratio-selector__trigger-icon--open":""}`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/AspectRatioSelector.tsx",lineNumber:85,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/AspectRatioSelector.tsx",lineNumber:75,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/AspectRatioSelector.tsx",lineNumber:71,columnNumber:9},void 0),r&&e.jsxDEV("div",{className:"aspect-ratio-selector__dropdown",children:e.jsxDEV("div",{className:"aspect-ratio-selector__dropdown-grid",children:S.map(_=>e.jsxDEV(Le,{content:_.description,theme:"light",placement:"top",showArrow:!1,children:e.jsxDEV("div",{className:`aspect-ratio-selector__dropdown-item ${i===_.value?"aspect-ratio-selector__dropdown-item--selected":""}`,"data-track":"ai_click_ratio_select",onClick:()=>h(_),children:_.label},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/AspectRatioSelector.tsx",lineNumber:104,columnNumber:19},void 0)},_.value,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/AspectRatioSelector.tsx",lineNumber:97,columnNumber:17},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/AspectRatioSelector.tsx",lineNumber:95,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/AspectRatioSelector.tsx",lineNumber:94,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/AspectRatioSelector.tsx",lineNumber:67,columnNumber:7},void 0):e.jsxDEV("div",{className:"aspect-ratio-selector",children:[e.jsxDEV("div",{className:"aspect-ratio-selector__label",children:a==="zh"?"图片比例":"Aspect Ratio"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/AspectRatioSelector.tsx",lineNumber:127,columnNumber:7},void 0),e.jsxDEV("div",{className:"aspect-ratio-selector__options",children:S.map(_=>e.jsxDEV(Le,{content:_.description,theme:"light",placement:"top",showArrow:!1,children:e.jsxDEV("div",{className:`aspect-ratio-selector__option ${i===_.value?"aspect-ratio-selector__option--selected":""}`,"data-track":"ai_click_ratio_select",onClick:()=>t(_.value),children:e.jsxDEV("span",{className:"aspect-ratio-selector__option-ratio",children:_.label},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/AspectRatioSelector.tsx",lineNumber:149,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/AspectRatioSelector.tsx",lineNumber:140,columnNumber:13},void 0)},_.value,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/AspectRatioSelector.tsx",lineNumber:133,columnNumber:11},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/AspectRatioSelector.tsx",lineNumber:131,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/AspectRatioSelector.tsx",lineNumber:126,columnNumber:5},void 0)};function ss(){return Xs("scene")}function ji(i,t){return{id:ss(),order:i,duration:t,prompt:""}}function Ha(i,t,o=1){if(i.length===0)return{valid:!1,error:"至少需要一个场景"};for(const a of i){if(a.duration<o)return{valid:!1,error:`场景 ${a.order} 时长不能少于 ${o} 秒`};if(a.duration>t)return{valid:!1,error:`场景 ${a.order} 时长不能超过 ${t} 秒`}}const n=i.find(a=>!a.prompt.trim());return n?{valid:!1,error:`场景 ${n.order} 需要填写提示词`}:{valid:!0}}function Ya(i){return i.sort((t,o)=>t.order-o.order).map((t,o)=>`Shot ${o+1}:
|
|
114
114
|
duration: ${t.duration}sec
|
|
115
115
|
Scene: ${t.prompt.trim()}`).join(`
|
|
116
116
|
|
|
117
|
-
`)}function Xa(i){const t=/Shot\s+(\d+):\s*\n\s*duration:\s*([\d.]+)\s*sec\s*\n\s*Scene:\s*([^\n]+(?:\n(?!Shot\s+\d+:)[^\n]*)*)/gi,o=[];let n;for(;(n=t.exec(i))!==null;){const a=parseInt(n[1],10),r=parseFloat(n[2]),p=n[3].trim();o.push({id:ss(),order:a,duration:r,prompt:p})}return o.length===0?null:o.sort((a,r)=>a.order-r.order)}const Ja=({value:i,onChange:t,placeholder:o,disabled:n=!1,autoFocus:a=!1,enableMention:r=!0})=>{const{mentionState:p,textareaRef:f,handleTextChange:S,handleKeyDown:d,handleCharacterSelect:h,closeMentionPopup:_}=Zi({enabled:r,onPromptChange:t,prompt:i}),U=s.useCallback(x=>{const b=x.target.value,v=x.target.selectionStart||0;S(b,v)},[S]);return s.useEffect(()=>{a&&f.current&&f.current.focus()},[a,f]),e.jsxDEV("div",{className:"scene-prompt-input",children:[e.jsxDEV("textarea",{ref:f,className:"scene-prompt-input__textarea",value:i,onChange:U,onKeyDown:d,placeholder:o,disabled:n,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),r&&e.jsxDEV(Qi,{visible:p.visible,query:p.query,position:p.position,showBelow:p.showBelow,selectedIndex:p.selectedIndex,onSelect:h,onClose:_},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)},Qa=({enabled:i,onEnabledChange:t,totalDuration:o,maxScenes:n,minSceneDuration:a,scenes:r,onScenesChange:p,disabled:f=!1})=>{const[S,d]=s.useState(null),h=s.useRef(null),_=r.map(l=>l.id).join("|");s.useEffect(()=>{if(!i||r.length===0)return;!(S?r.some(C=>C.id===S):!1)&&S!==r[0].id&&d(r[0].id)},[i,_,r,S]);const U=s.useCallback(()=>{if(r.length>=n)return;const l=r.reduce((R,Y)=>R+Y.duration,0),C=o-l;let L=Math.max(a,C/2);L=parseFloat(L.toFixed(1)),L<a&&(L=a);const P=ji(r.length+1,L);p([...r,P]),d(P.id),setTimeout(()=>{var R;(R=h.current)==null||R.scrollIntoView({behavior:"smooth"})},100)},[r,n,o,a,p]),x=s.useCallback(l=>{var P;if(r.length<=1)return;const L=r.filter(R=>R.id!==l).map((R,Y)=>({...R,order:Y+1}));p(L),S===l&&d(((P=L[0])==null?void 0:P.id)||null)},[r,p,S]),b=s.useCallback(l=>{const C=r.filter(L=>L.id!==l).reduce((L,P)=>L+P.duration,0);return Math.max(a,o-C)},[r,o,a]),v=s.useCallback(l=>{const C=b(l),L=[],P=.1;for(let R=a;R<=C+.001;R+=P){const Y=parseFloat(R.toFixed(1));Y<=C&&L.push({label:`${Y}`,value:Y})}return L},[a,b]),u=s.useCallback((l,C)=>{const L=typeof C=="string"?parseFloat(C):C;if(isNaN(L))return;const P=b(l),R=r.map(Y=>{if(Y.id===l){const X=Math.max(a,Math.min(L,P)),ie=parseFloat(X.toFixed(1));return ie===Y.duration?Y:{...Y,duration:ie}}return Y});R.every((Y,X)=>Y===r[X])||p(R)},[r,a,b,p]),M=s.useCallback((l,C)=>{const L=r.find(R=>R.id===l);if((L==null?void 0:L.prompt)===C)return;const P=r.map(R=>R.id===l?{...R,prompt:C}:R);p(P)},[r,p]),O=s.useCallback(l=>{if(t(l),l&&r.length===0){const C=ji(1,o);p([C]),d(C.id)}},[r,o,t,p]),E=s.useCallback(l=>{d(l)},[]),B=r.length<n;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(Js,{value:i,onChange:O,disabled:f,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),i&&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),i&&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:["共 ",r.length," 个场景,已用 ",r.reduce((l,C)=>l+C.duration,0).toFixed(1)," 秒 / 总时长 ",o," 秒"]},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:[r.map((l,C)=>{const L=S===l.id,P=C===r.length-1;return e.jsxDEV("div",{className:`storyboard-editor__scene-wrapper ${L?"is-selected":""}`,children:[e.jsxDEV("div",{className:`storyboard-editor__timeline-line ${P?"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 ${L?"is-selected":""}`,children:L?C+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),!L&&e.jsxDEV("div",{className:"storyboard-editor__scene storyboard-editor__scene--compact",onClick:()=>E(l.id),children:[e.jsxDEV("span",{className:"storyboard-editor__scene-index",children:C+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(Pt,{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(Mi,{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),L&&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),"场景 ",C+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(Pt,{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(_a,{value:parseFloat(l.duration.toFixed(1)),onChange:R=>u(l.id,R),disabled:f,className:"storyboard-editor__duration-select",size:"small",options:v(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),r.length>1&&e.jsxDEV(pt,{theme:"default",variant:"text",size:"small",icon:e.jsxDEV(Oi,{},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:R=>{R.stopPropagation(),x(l.id)},disabled:f,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(Ja,{value:l.prompt,onChange:R=>M(l.id,R),placeholder:`描述场景 ${C+1} 的内容,输入 @ 可引用角色`,disabled:f,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),B&&e.jsxDEV(pt,{theme:"default",variant:"dashed",size:"medium",icon:e.jsxDEV(Qs,{},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:U,disabled:f,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)},as="aitu-dialog-task-list-width-",$t=240,Ft=800,Za=()=>{const i=Math.round(660);return Math.max($t,Math.min(Ft,i))},ns=i=>{try{const t=localStorage.getItem(as+i);if(t){const o=parseInt(t,10);if(!isNaN(o)&&o>=$t&&o<=Ft)return o}}catch{}return Za()},ki=(i,t)=>{try{localStorage.setItem(as+i,t.toString())}catch{}},os=({isRightPanelVisible:i,onToggleRightPanel:t,onWidthChange:o,rightPanelWidth:n,minWidth:a=$t,maxWidth:r=Ft,onResizeStart:p,onResizeEnd:f,language:S="zh",disabled:d=!1,storageKey:h="image"})=>{const[_,U]=s.useState(!1),x=s.useRef(0),b=s.useRef(0);s.useEffect(()=>(_?(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=""}),[_]);const v=s.useCallback(M=>{if(d||!i)return;M.preventDefault(),M.stopPropagation(),U(!0),x.current=M.clientX,b.current=n,p==null||p();const O=B=>{const l=x.current-B.clientX,C=Math.max(a,Math.min(r,b.current+l));o(C)},E=()=>{U(!1),f==null||f(),b.current+(x.current-document.body.getBoundingClientRect().left),ki(h,n),document.removeEventListener("mousemove",O),document.removeEventListener("mouseup",E)};document.addEventListener("mousemove",O),document.addEventListener("mouseup",E)},[d,i,n,a,r,o,p,f,h]);s.useEffect(()=>{!_&&i&&ki(h,n)},[n,_,i,h]);const u=i?S==="zh"?"隐藏任务列表":"Hide Task List":S==="zh"?"显示任务列表":"Show Task List";return e.jsxDEV("div",{className:`resizable-divider ${_?"is-dragging":""} ${i?"":"is-collapsed"} ${d?"is-disabled":""}`,onMouseDown:v,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(Le,{content:u,placement:"left",children:e.jsxDEV("button",{type:"button",className:"resizable-divider__toggle",onClick:M=>{M.stopPropagation(),t()},"aria-label":u,children:i?e.jsxDEV(Mi,{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(Zs,{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)},rs=({storageKey:i,language:t})=>{const[o,n]=s.useState(()=>{try{return localStorage.getItem(i)!=="false"}catch{return!0}}),a=s.useCallback(r=>{n(r);try{localStorage.setItem(i,String(r))}catch{}},[i]);return e.jsxDEV(Le,{content:t==="zh"?"生成后自动插入画布":"Auto insert to canvas after generation",theme:"light",children:e.jsxDEV(ea,{checked:o,onChange:a,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 Tt(i){try{return localStorage.getItem(i)!=="false"}catch{return!0}}function en(i={}){const{taskType:t}=i,{tasks:o,isLoading:n}=ta(),{retryTask:a,deleteTask:r}=ia(),p=s.useMemo(()=>[...t?o.filter(h=>h.type===t):o].sort((h,_)=>_.createdAt-h.createdAt),[o,t]),f=s.useCallback(async()=>{},[]),S=s.useCallback(async()=>{if(sa(),!await Qt.isAvailable())return;const h=await Qt.getAllTasks();h.length>0&&aa.restoreTasks(h)},[]);return{tasks:p,isLoading:n,isLoadingMore:!1,hasMore:!1,totalCount:p.length,loadedCount:p.length,loadMore:f,refresh:S,retryTask:a,deleteTask:r}}const ds=({taskIds:i,taskType:t,onEditTask:o})=>{const{tasks:n,isLoading:a,isLoadingMore:r,hasMore:p,totalCount:f,loadedCount:S,loadMore:d,retryTask:h,deleteTask:_}=en({taskType:t}),{board:U,openDialog:x}=ht(),[b,v]=s.useState(!1),[u,M]=s.useState(null),[O,E]=s.useState(!1),[B,l]=s.useState(0),[C,L]=s.useState("single"),[P,R]=s.useState(""),[Y,X]=s.useState(null),[ie,G]=s.useState(!1),oe=s.useMemo(()=>n.filter(c=>c.status===Ae.FAILED).length,[n]),J=s.useCallback(()=>{const c=n.filter(g=>g.status===Ae.FAILED);c.forEach(g=>_(g.id)),G(!1),Se.success(`已清除 ${c.length} 个失败任务`)},[n,_]),fe=(c,g)=>{var ee,$,ve,ge,De,ce,he,xe,ue,je,_e;if(!g.trim())return!0;const q=g.toLowerCase().split(/\s+/).filter(Boolean),D={[Ae.PENDING]:"处理中",[Ae.PROCESSING]:"处理中",[Ae.COMPLETED]:"已完成",[Ae.FAILED]:"失败",[Ae.CANCELLED]:"已取消"},m=[],w=(ee=c.params)!=null&&ee.params&&typeof c.params.params=="object"?c.params.params:null;m.push((($=c.params)==null?void 0:$.prompt)??""),m.push(((ve=c.params)==null?void 0:ve.model)??""),m.push(c.id??""),m.push(D[c.status]??String(c.status)),(ge=c.params)!=null&&ge.batchId&&m.push(String(c.params.batchId)),(De=c.params)!=null&&De.batchIndex&&m.push(String(c.params.batchIndex)),(ce=c.params)!=null&&ce.batchTotal&&m.push(String(c.params.batchTotal)),typeof(w==null?void 0:w.model_name)=="string"&&m.push(w.model_name),typeof(w==null?void 0:w.mode)=="string"&&m.push(w.mode),typeof(w==null?void 0:w.klingAction2)=="string"&&m.push(w.klingAction2),(he=c.result)!=null&&he.format&&m.push(String(c.result.format)),(xe=c.result)!=null&&xe.width&&((ue=c.result)!=null&&ue.height)?m.push(`${c.result.width}x${c.result.height}`):(je=c.params)!=null&&je.width&&((_e=c.params)!=null&&_e.height)&&m.push(`${c.params.width}x${c.params.height}`);const V=m.join(" ").toLowerCase();return q.every(Ce=>V.includes(Ce))},T=s.useMemo(()=>{let c=n;return i&&i.length>0&&(c=c.filter(g=>i.includes(g.id))),P.trim()&&(c=c.filter(g=>fe(g,P))),c.sort((g,q)=>q.createdAt-g.createdAt)},[n,i,P]),z=c=>{h(c)},A=c=>{M(c),v(!0)},de=()=>{u&&_(u),v(!1),M(null)},H=async c=>{const g=n.find(D=>D.id===c);if(!g)return;const q=ua(g);if(q.length!==0)try{const D=await ma(q);D.openedCount>0&&D.downloadedCount===0?Se.success(D.openedCount>1?`已打开 ${D.openedCount} 个链接,请在新标签页下载`:"资源不支持直接下载,已打开链接"):Se.success(g.type===we.AUDIO?q.length>1?"多条音频已开始下载":"音频下载成功":q.length>1?"多图已开始下载":"下载成功")}catch(D){console.error("Download failed:",D),Se.error("下载失败,请稍后重试")}},me=async c=>{var q,D,m,w;const g=n.find(V=>V.id===c);if(!((q=g==null?void 0:g.result)!=null&&q.url)&&!((m=(D=g==null?void 0:g.result)==null?void 0:D.urls)!=null&&m.length)||!U){console.warn("Cannot insert: task result or board not available"),Se.warning("无法插入:白板未就绪");return}try{if(g.type===we.IMAGE){const V=(w=g.result.urls)!=null&&w.length?g.result.urls:[g.result.url];for(const ee of V)await la(U,ee);Se.success(V.length>1?"多图已插入到白板":"图片已插入到白板")}else g.type===we.VIDEO&&(await ca(U,g.result.url),Se.success("视频已插入到白板"))}catch(V){console.error("Failed to insert to board:",V),Se.error(`插入失败: ${V instanceof Error?V.message:"未知错误"}`)}},Q=c=>{var q,D,m,w;const g=n.find(V=>V.id===c);if(!g){console.warn("Cannot edit: task not found");return}if(o){o(g);return}if(g.type===we.IMAGE){const V={initialPrompt:g.params.prompt,initialWidth:g.params.width,initialHeight:g.params.height,initialImages:g.params.uploadedImages,initialResultUrl:(q=g.result)==null?void 0:q.url,initialResultUrls:(D=g.result)==null?void 0:D.urls};x(Ne.aiImageGeneration,V)}else if(g.type===we.VIDEO){const V={initialPrompt:g.params.prompt,initialDuration:typeof g.params.seconds=="string"?parseInt(g.params.seconds,10):g.params.seconds,initialModel:g.params.model,initialSize:g.params.size,initialImages:g.params.uploadedImages,initialResultUrl:(m=g.result)==null?void 0:m.url,initialResultUrls:(w=g.result)==null?void 0:w.urls};x(Ne.aiVideoGeneration,V)}},Z=c=>{const g=n.find(q=>q.id===c);g&&X(g)},ye=s.useMemo(()=>{const c=new Set;return T.filter(g=>{var q,D,m,w;return g.status!==Ae.COMPLETED||!((q=g.result)!=null&&q.url)&&!((m=(D=g.result)==null?void 0:D.urls)!=null&&m.length)||g.type!==we.IMAGE&&g.type!==we.VIDEO&&!(g.type===we.AUDIO&&((w=g.result)==null?void 0:w.resultKind)!=="lyrics")||c.has(g.id)?!1:(c.add(g.id),!0)})},[T]),{previewMediaItems:Ve,taskIdToPreviewConfig:pe}=s.useMemo(()=>{var q,D,m,w,V,ee;const c=[],g=new Map;for(const $ of ye){const ve=c.length,ge=((q=$.result)==null?void 0:q.title)||$.params.title||((D=$.params.prompt)==null?void 0:D.substring(0,50))||"媒体预览";if($.type===we.AUDIO){const ce=((w=(m=$.result)==null?void 0:m.clips)==null?void 0:w.filter(ue=>!!ue.audioUrl).map((ue,je)=>{var _e,Ce,Fe;return{id:ue.clipId||ue.id||`${$.id}-${je}`,url:ue.audioUrl,type:"audio",title:ue.title||((_e=$.result)!=null&&_e.clips&&$.result.clips.length>1?`${ge} (${je+1}/${$.result.clips.length})`:ge),posterUrl:ue.imageLargeUrl||ue.imageUrl||((Ce=$.result)==null?void 0:Ce.previewImageUrl),duration:typeof ue.duration=="number"?ue.duration:(Fe=$.result)==null?void 0:Fe.duration,prompt:$.params.prompt,tags:typeof $.params.tags=="string"?$.params.tags:void 0,artist:$.params.model||$.params.mv||"Aitu",album:"Aitu Generated"}}))??[],he=(V=$.result.urls)!=null&&V.length?$.result.urls:$.result.url?[$.result.url]:[],xe=ce.length>0?ce:he.map((ue,je)=>{var _e,Ce;return{id:he.length>1?`${$.id}-${je}`:$.id,url:ue,type:"audio",title:he.length>1?`${ge} (${je+1}/${he.length})`:ge,posterUrl:(_e=$.result)==null?void 0:_e.previewImageUrl,duration:(Ce=$.result)==null?void 0:Ce.duration,prompt:$.params.prompt,tags:typeof $.params.tags=="string"?$.params.tags:void 0,artist:$.params.model||$.params.mv||"Aitu",album:"Aitu Generated"}});c.push(...xe)}else{const ce=(ee=$.result.urls)!=null&&ee.length?$.result.urls:[$.result.url],he=$.type===we.VIDEO?"video":"image";for(let xe=0;xe<ce.length;xe++)c.push({id:ce.length>1?`${$.id}-${xe}`:$.id,url:he==="image"?na(ce[xe]):ce[xe],type:he,title:ce.length>1?`${ge} (${xe+1}/${ce.length})`:ge})}const De=c.length-ve;g.set($.id,{mode:$.type===we.AUDIO&&De>1?"compare":"single",index:$.type===we.AUDIO&&De>1?Array.from({length:Math.min(De,4)},(ce,he)=>ve+he):ve})}return{previewMediaItems:c,taskIdToPreviewConfig:g}},[ye]),k=s.useCallback(c=>{const g=pe.get(c);g!==void 0&&(L(g.mode),l(g.index),E(!0))},[pe]),se=s.useCallback(()=>{E(!1)},[]),be=P.trim()&&T.length===0&&n.length>0,Ee=f>0?f:n.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:["生成任务 (",Ee,")"]},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:oe>0&&e.jsxDEV(Le,{content:`清除全部失败任务 (${oe})`,theme:"light",children:e.jsxDEV(pt,{size:"small",variant:"text",icon:e.jsxDEV(Oi,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:467,columnNumber:27},void 0),onClick:()=>G(!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(oa,{value:P,onChange:c=>R(c),placeholder:"搜索任务(提示词/模型/...)",clearable:!0,prefixIcon:e.jsxDEV(ra,{},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(Ia,{tasks:T,onRetry:z,onDelete:A,onDownload:H,onInsert:me,onEdit:Q,onPreviewOpen:k,onExtractCharacter:Z,hasMore:p,isLoadingMore:r,onLoadMore:d,totalCount:Ee,loadedCount:S,className:"dialog-task-list__content",emptyContent:e.jsxDEV("div",{className:"dialog-task-list__empty",children:a?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):be?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(Zt,{open:b,title:"确认删除",description:"确定要删除此任务吗?此操作无法撤销。",confirmText:"删除",cancelText:"取消",danger:!0,onOpenChange:v,onConfirm:de},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(Zt,{open:ie,title:"清除失败任务",description:`确定要清除全部 ${oe} 个失败任务吗?此操作无法撤销。`,confirmText:"清除",cancelText:"取消",danger:!0,onOpenChange:G,onConfirm:J},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(da,{visible:O,items:Ve,initialMode:C,initialIndex:B,onClose:se,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(Sa,{visible:!!Y,task:Y,onClose:()=>X(null),onCreateComplete:c=>{X(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)},tn=({initialPrompt:i="",initialImages:t=[],selectedElementIds:o=[],initialWidth:n,initialHeight:a,initialResultUrl:r,initialAspectRatio:p,targetFrameId:f,targetFrameDimensions:S,selectedModel:d,selectedModelRef:h,onModelChange:_,onModelRefChange:U,externalBatchId:x,initialAutoInsertToCanvas:b,onDraftChange:v}={})=>{var Te,nt,ot;const u=zt("image"),M=$e("image"),O=Oe(u,M.modelId,Ue(M.profileId,M.modelId))||Ye("image",M.modelId,Ue(M.profileId,M.modelId)),[E,B]=s.useState((O==null?void 0:O.id)||((Te=u[0])==null?void 0:Te.id)||"gemini-2.5-flash-image-vip"),[l,C]=s.useState(Pe(O)||Ue(M.profileId,M.modelId)),L=ke((O==null?void 0:O.id)||((nt=u[0])==null?void 0:nt.id)||"gemini-2.5-flash-image-vip",Pe(O)||Ue(M.profileId,M.modelId)),P=ei((O==null?void 0:O.id)||((ot=u[0])==null?void 0:ot.id)||"gemini-2.5-flash-image-vip",L),[R,Y]=s.useState(i),[X,ie]=s.useState(P.extraParams),G=s.useMemo(()=>{if(Oe(u,E,l)||!E)return u;const F=Ye("image",E,l);return F?[F,...u]:u},[E,l,u]),[oe,J]=s.useState(n||1024),[fe,T]=s.useState(a||1024),[z,A]=s.useState(p||P.aspectRatio||wt),[de,H]=s.useState(null),[me,Q]=s.useState(t),[Z,ye]=s.useState(!0),[Ve,pe]=s.useState(()=>ns("image")),[k,se]=s.useState("config"),be=s.useRef(null),{viewportWidth:Ee}=Lt(),c=Ee<=768,{imageHistory:g}=Wi(),{isGenerating:q}=Yi("image"),{language:D}=Xe(),{createTask:m}=Rt(),w=s.useRef(!1),V=E.startsWith("mj"),ee=le.useMemo(()=>{if(V)return[];const y=pa(E);if(y.length===0)return mt;const F=new Map(mt.map(te=>[te.value,te])),K=[];return y.forEach(te=>{const Ie=te.value==="auto"?"auto":te.value.replace("x",":"),qe=F.get(Ie);qe&&!K.some(Me=>Me.value===qe.value)&&K.push(qe)}),K.length>0?K:mt},[E,V]),$=le.useMemo(()=>{const y=fa(E);return V?y.length>0:y.some(F=>F.id!=="size")},[E,V]),[ve,ge]=s.useState(!1);s.useEffect(()=>{if(ve)return;const y=ei(E,ke(E,l));ie(y.extraParams),A(y.aspectRatio)},[E,l,ve]);const De=s.useCallback((y,F)=>{if(!F||F==="default"){ie(K=>{const te={...K};return delete te[y],te});return}ie(K=>({...K,[y]:F}))},[]),ce=s.useCallback(y=>{pe(y)},[]),he=s.useCallback(()=>{ye(y=>!y)},[]),xe=le.useRef("");s.useEffect(()=>{if(ve)return;const y=JSON.stringify({prompt:i,images:t==null?void 0:t.map(F=>F.url),elementIds:o,width:n,height:a,result:r,aspectRatio:p});xe.current!==y&&(xe.current=y,Y(i),Q(t||[]),n&&J(n),a&&T(a),p&&A(p))},[i,t,o,n,a,r,p,ve]);const ue=s.useRef("");s.useEffect(()=>{if(!v)return;const y={prompt:R,images:me.map(te=>({url:te.url,name:te.name})),aspectRatio:z},F=JSON.stringify(y);if(ue.current===F)return;const K=window.setTimeout(()=>{ue.current!==F&&(ue.current=F,v(y))},200);return()=>{window.clearTimeout(K)}},[z,v,R,me]),s.useEffect(()=>{const y=F=>{var te;const K=F.imageModelName||((te=G[0])==null?void 0:te.id)||"gemini-2.5-flash-image-vip";if(K!==E){B(K);const Ie=Oe(G,K,l);C(Pe(Ie)||null)}};return Re.addListener(y),()=>Re.removeListener(y)},[E,l,G]),s.useEffect(()=>{if(G.length===0)return;if(!Oe(G,E,l)){const F=G[0];B(F.id);const K=Pe(F);C(te=>te&&K&&te.profileId===K.profileId&&te.modelId===K.modelId?te:K)}},[E,l,G]),s.useEffect(()=>{if(!d)return;const y=ke(E,l),F=ke(d,h);if(y!==F){B(d);const K=Oe(G,d,h),te=Pe(K)||h||null;C(Ie=>Ie&&te&&Ie.profileId===te.profileId&&Ie.modelId===te.modelId?Ie:te)}},[E,l,d,h,G]),s.useEffect(()=>{!$&&Object.keys(X).length>0&&ie({})},[$,X]),s.useEffect(()=>{var F;if(V||ee.length===0)return;const y=new Set(ee.map(K=>K.value));if(!y.has(z)){const K=y.has("auto")?"auto":((F=ee[0])==null?void 0:F.value)||wt;A(K)}},[z,V,ee]),s.useEffect(()=>{ga({currentModel:E,currentSelectionKey:ke(E,l),extraParams:X,aspectRatio:z})},[E,l,X,z]),s.useEffect(()=>(H(null),()=>{H(null)}),[]);const je=()=>{Y(""),ie({}),Q([]),H(null),A(wt),se("config"),ge(!1),window.dispatchEvent(new CustomEvent("ai-image-clear"))},_e=le.useMemo(()=>ts("image",D,g),[g,D]),Ce=y=>{is("image",y)},Fe=y=>{if(ge(!0),se("config"),Y(y.params.prompt||""),ie({}),J(y.params.width||1024),T(y.params.height||1024),y.params.uploadedImages&&y.params.uploadedImages.length>0?Q(y.params.uploadedImages):Q([]),y.params.model){B(y.params.model),C(y.params.modelRef||null);const F=Re.get();Re.update({...F,imageModelName:y.params.model})}y.params.aspectRatio&&A(y.params.aspectRatio),H(null)},bt=async()=>Promise.all(me.map(async y=>{if(y.file)return new Promise((F,K)=>{const te=new FileReader;te.onload=()=>{F({type:"url",url:te.result,name:y.name})},te.onerror=K,te.readAsDataURL(y.file)});if(y.url)return{type:"url",url:y.url,name:y.name};throw new Error("Invalid image data")})),at=async(y=1)=>{if(!w.current){w.current=!0;try{if(!R||!R.trim()){H(D==="zh"?"请输入图像描述":"Please enter image description");return}if(!ha("image",l||E)&&!await ba()){H(D==="zh"?"需要 API Key 才能生成图片":"API Key is required to generate images");return}V&&H(null);try{const F=typeof oe=="string"?parseInt(oe)||1024:oe,K=typeof fe=="string"?parseInt(fe)||1024:fe,te=await bt();if(y>1){const Ge=[],Nt=`batch_${Date.now()}`,Ke=E||$e("image").modelId,dt=Ke.startsWith("mj")?[R.trim(),ti(X)].filter(Boolean).join(" "):(R||"").trim(),ze=!Ke.startsWith("mj")&&Object.keys(X).length>0?X:void 0,vt=ze!=null&&ze.size?ze.size:ii(z);for(let Qe=0;Qe<y;Qe++){const Ze={prompt:dt,width:F,height:K,aspectRatio:z,size:vt,model:Ke,modelRef:l||null,uploadedImages:te,batchId:Nt,batchIndex:Qe+1,batchTotal:y,autoInsertToCanvas:b??Tt(st.AI_IMAGE_AUTO_INSERT),targetFrameId:f,targetFrameDimensions:S,...ze?{params:ze}:{}},lt=m(Ze,we.IMAGE);lt&&Ge.push(lt.id)}Ge.length>0?(Se.success(D==="zh"?`已添加 ${Ge.length} 个任务到队列`:`Added ${Ge.length} tasks to queue`),Ce(dt),H(null),se("tasks"),ge(!1)):H(D==="zh"?"批量任务创建失败,请稍后重试":"Failed to create batch tasks, please try again later");return}const Ie=E||$e("image").modelId,qe=Ie.startsWith("mj")?[R.trim(),ti(X)].filter(Boolean).join(" "):(R||"").trim(),Me=!Ie.startsWith("mj")&&Object.keys(X).length>0?X:void 0,Je=Me!=null&&Me.size?Me.size:ii(z),rt={prompt:qe,width:F,height:K,aspectRatio:z,size:Je,model:Ie,modelRef:l||null,uploadedImages:te,autoInsertToCanvas:b??Tt(st.AI_IMAGE_AUTO_INSERT),batchId:x||`image_single_${Date.now()}`,batchIndex:1,batchTotal:1,targetFrameId:f,targetFrameDimensions:S,...Me?{params:Me}:{}};m(rt,we.IMAGE)?(Se.success(D==="zh"?"任务已添加到队列,将在后台生成":"Task added to queue, will be generated in background"),Ce(qe),H(null),se("tasks"),ge(!1)):H(D==="zh"?"任务创建失败,请检查参数或稍后重试":"Failed to create task, please check parameters or try again later")}catch(F){console.error("Failed to create task:",F);let K=D==="zh"?"任务创建失败,请检查参数或稍后重试":"Failed to create task, please check parameters or try again later";F.message&&(F.message.includes("exceed 5000 characters")?K=D==="zh"?"提示词不能超过 5000 字符":"Prompt must not exceed 5000 characters":F.message.includes("Duplicate submission")?K=D==="zh"?"请勿重复提交,请等待 5 秒后再试":"Duplicate submission. Please wait 5 seconds.":F.message.includes("Invalid parameters")&&(K=D==="zh"?`参数错误: ${F.message.replace("Invalid parameters: ","")}`:F.message)),H(K)}}finally{w.current=!1}}};return Hi(q,R,()=>at(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 ${k==="config"?"ai-generation-mobile-switcher__tab--active":""}`,onClick:()=>se("config"),children:"生成设置"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:793,columnNumber:11},void 0),e.jsxDEV("button",{type:"button",className:`ai-generation-mobile-switcher__tab ${k==="tasks"?"ai-generation-mobile-switcher__tab--active":""}`,onClick:()=>se("tasks"),children:"生成任务"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:804,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:792,columnNumber:9},void 0):null,e.jsxDEV("div",{className:`main-content ${c?"main-content--mobile-panels":""}`,ref:be,children:[e.jsxDEV("div",{className:`ai-image-generation-section ${c&&k!=="config"?"ai-generation-mobile-panel--hidden":""}`,children:[e.jsxDEV("div",{className:"ai-image-generation-form",children:[d!==void 0&&_&&e.jsxDEV("div",{className:"form-header-row",children:e.jsxDEV("div",{className:"model-selector-wrapper",children:e.jsxDEV(At,{selectedModel:E,selectedSelectionKey:ke(E,l),onSelect:y=>{B(y),C(null),_(y),U==null||U(null)},onSelectModel:y=>{B(y.id);const F=Pe(y);C(F),_(y.id),U==null||U(F)},language:D,models:G,placement:"down",variant:"form",disabled:q},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:837,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:836,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:835,columnNumber:15},void 0),$&&e.jsxDEV("div",{className:"model-params-row",children:e.jsxDEV(Ri,{selectedParams:X,onParamChange:De,modelId:E,language:D,disabled:q,excludeParamIds:V?void 0:["size"]},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:869,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:868,columnNumber:15},void 0),e.jsxDEV(Ai,{images:me,onImagesChange:Q,language:D,disabled:q,multiple:!0,label:D==="zh"?"参考图片 (可选)":"Reference Images (Optional)",onError:H},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:881,columnNumber:13},void 0),e.jsxDEV(es,{prompt:R,onPromptChange:Y,presetPrompts:_e,language:D,type:"image",disabled:q,onError:H},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:895,columnNumber:13},void 0),e.jsxDEV(Ji,{error:de},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:905,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:832,columnNumber:11},void 0),e.jsxDEV(Xi,{language:D,type:"image",isGenerating:q,hasGenerated:!1,canGenerate:!!(R&&R.trim()),onGenerate:at,onReset:je,leftContent:e.jsxDEV(e.Fragment,{children:[e.jsxDEV(rs,{storageKey:st.AI_IMAGE_AUTO_INSERT,language:D},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:918,columnNumber:17},void 0),!V&&e.jsxDEV(Wa,{value:z,onChange:A,compact:!0,options:ee},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:923,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:917,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:908,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:825,columnNumber:9},void 0),c?null:e.jsxDEV(os,{isRightPanelVisible:Z,onToggleRightPanel:he,onWidthChange:ce,rightPanelWidth:Ve,language:D,storageKey:"image"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:936,columnNumber:11},void 0),(c||Z)&&e.jsxDEV("div",{className:`task-sidebar ${c?"task-sidebar--mobile-panel":""} ${c&&k!=="tasks"?"ai-generation-mobile-panel--hidden":""}`,style:c?void 0:{width:Ve,flexShrink:0},children:e.jsxDEV(ds,{taskType:we.IMAGE,onEditTask:Fe},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:962,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:948,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:818,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:790,columnNumber:5},void 0)};function Ei(i,t){const o=Object.keys(i),n=Object.keys(t);return o.length!==n.length?!1:o.every(a=>i[a]===t[a])}function Di(i,t,o){return i.slice(0,t).map((n,a)=>({...n,slot:a,slotLabel:o[a]||`参考图${a+1}`}))}function sn(i,t){return i.length===t.length&&i.every((o,n)=>{const a=t[n];return o.slot===a.slot&&o.slotLabel===a.slotLabel&&o.url===a.url&&o.name===a.name&&o.file===a.file})}function Ii(i,t){return t.some(o=>o.value===i)}function Si(i){const t=i==null?void 0:i.trim().replace(/[xX]/g,":");return t&&/^\d+:\d+$/.test(t)?t:null}function ut(i){var o;const t=(o=i==null?void 0:i.split("@")[0])==null?void 0:o.trim();return t&&/^\d+p$/.test(t)?t:null}function St(i,t){return((i==null?void 0:i.profileId)||null)===((t==null?void 0:t.profileId)||null)&&((i==null?void 0:i.modelId)||null)===((t==null?void 0:t.modelId)||null)}function ls(i,t){const o=Ue(t==null?void 0:t.profileId,t==null?void 0:t.modelId);return(o==null?void 0:o.modelId)===(i||null)?o:null}function Be(i,t,o){if(!t)return null;const n=ls(t,o),a=Oe(i,t,n);return Pe(a)||n}const an=({initialPrompt:i="",initialImage:t,initialImages:o,initialDuration:n,initialModel:a,initialSize:r,initialResultUrl:p,selectedModel:f,selectedModelRef:S,onModelChange:d,onModelRefChange:h,externalBatchId:_,initialAutoInsertToCanvas:U,onDraftChange:x}={})=>{var Bt,Kt,Wt;const b=zt("video"),[v,u]=s.useState(i),[M,O]=s.useState(null),[E,B]=s.useState(!0),[l,C]=s.useState(()=>ns("video")),[L,P]=s.useState("config"),R=s.useRef(null),{viewportWidth:Y}=Lt(),X=Y<=768,ie=$e("video"),G=a||ie.modelId,oe=ls(G,a&&a===f?S:ie.modelId===G?Ue(ie.profileId,ie.modelId):null),J=Oe(b,G,oe)||Ye("video",G,oe),fe=Be(b,(J==null?void 0:J.id)||G,Pe(J)||oe),[T,z]=s.useState((J==null?void 0:J.id)||((Bt=b[0])==null?void 0:Bt.id)||jt("veo3")),[A,de]=s.useState(fe),H=ke((J==null?void 0:J.id)||((Kt=b[0])==null?void 0:Kt.id)||jt("veo3"),fe),me=si((J==null?void 0:J.id)||((Wt=b[0])==null?void 0:Wt.id)||jt("veo3"),H),Q=le.useMemo(()=>{if(Oe(b,T,A)||!T)return b;const j=Ye("video",T,A);return j?[j,...b]:b},[T,A,b]),[Z,ye]=s.useState(()=>me.extraParams),Ve=le.useMemo(()=>xa(T,A||T,Z),[T,A,Z]),pe=le.useMemo(()=>kt(T,A||T,Z),[T,A,Z]),k=le.useMemo(()=>{if(pe.provider!=="seedance")return pe;const N=Si(Z.aspect_ratio)||Si(Z.aspectRatio)||"16:9",j=new Set,I=pe.sizeOptions.map(ne=>ut(ne.value)).filter(ne=>!ne||j.has(ne)?!1:(j.add(ne),!0)),W=I.map(ne=>({label:ne,value:`${ne}@${N}`,aspectRatio:N})),ae=ut(pe.defaultSize)||I[0]||"720p";return{...pe,sizeOptions:W,defaultSize:`${ae}@${N}`}},[pe,Z.aspectRatio,Z.aspect_ratio]),se=le.useMemo(()=>Na(T,A||T,Z),[T,A,Z]),be=le.useMemo(()=>(pe.imageUpload.labels||[]).join("|"),[pe.imageUpload.labels]),Ee=le.useMemo(()=>be?be.split("|"):[],[be]),c=le.useMemo(()=>({maxCount:pe.imageUpload.maxCount,mode:pe.imageUpload.mode,labels:Ee,labelsSignature:be}),[pe.imageUpload.maxCount,pe.imageUpload.mode,Ee,be]),[g,q]=s.useState((n==null?void 0:n.toString())||me.duration),[D,m]=s.useState(r||me.size),w=le.useMemo(()=>Ii(g,k.durationOptions)?g:k.defaultDuration,[g,k.defaultDuration,k.durationOptions]),V=le.useMemo(()=>{if(Ii(D,k.sizeOptions))return D;if(k.provider==="seedance"){const N=ut(D),j=k.sizeOptions.find(I=>ut(I.value)===N);if(j)return j.value}return k.defaultSize},[D,k]),ee=le.useMemo(()=>Ve.some(N=>N.id!=="size"&&N.id!=="duration"),[Ve]),$=s.useCallback((N,j)=>{if(!j||j==="default"){ye(I=>{const W={...I};return delete W[N],W});return}ye(I=>({...I,[N]:j}))},[]);s.useEffect(()=>{const N=Ve.reduce((j,I)=>{const W=Z[I.id],ae=!W||I.valueType!=="enum"||!I.options||I.options.some(ne=>ne.value===W);return W&&ae?j[I.id]=W:I.defaultValue&&(j[I.id]=I.defaultValue),j},{});Ei(Z,N)||ye(N)},[Ve,Z]);const[ve,ge]=s.useState(()=>o&&o.length>0?o:t?[{slot:0,slotLabel:"参考图",url:t.url||"",name:t.name,file:t.file}]:[]),[De,ce]=s.useState(()=>{const N=pe.imageUpload.maxCount,j=pe.imageUpload.labels||[];let I=[];return o&&o.length>0?I=o:t&&(I=[{slot:0,slotLabel:j[0]||"参考图",url:t.url||"",name:t.name,file:t.file}]),I.slice(0,N).map((W,ae)=>({...W,slot:ae,slotLabel:j[ae]||`参考图${ae+1}`}))}),[he,xe]=s.useState(!1),[ue,je]=s.useState([]),_e=le.useMemo(()=>va(T),[T]),Ce=ai(T),{videoHistory:Fe}=Wi(),[bt,at]=s.useState(0),{isGenerating:Te}=Yi("video"),nt=s.useCallback(N=>{C(N)},[]),ot=s.useCallback(()=>{B(N=>!N)},[]),{language:y}=Xe(),{createTask:F}=Rt(),K=s.useRef(!1),te=f!==void 0,Ie=le.useRef(null),qe=le.useRef(null);s.useEffect(()=>{if(te)return;const N=j=>{const I=j.videoModelName||"veo3";if(I!==T){z(I);const W=Be(Q,I,A);de(W)}};return Re.addListener(N),()=>Re.removeListener(N)},[T,A,te,f,S,Q]),s.useEffect(()=>{if(Q.length===0)return;const N=Oe(Q,T,A),j=Be(Q,T,A);if(!N){const I=Q[0],W=Pe(I);z(I.id),de(ae=>St(ae,W)?ae:W);return}de(I=>St(I,j)?I:j)},[T,A,Q]),s.useEffect(()=>{if(!f)return;const N=ke(f,S);if(Ie.current===N||qe.current&&qe.current!==f)return;Ie.current=N,z(I=>I===f?I:f);const j=Be(Q,f,S);de(I=>St(I,j)?I:j)},[f,S,Q,a]);const[Me,Je]=s.useState(!1),[rt,xt]=s.useState(!1);s.useEffect(()=>{if(rt){xt(!1);return}const N=si(T,ke(T,A)),j=kt(T,A||T,N.extraParams),I=j.durationOptions.some(re=>re.value===N.duration)?N.duration:j.defaultDuration,W=j.sizeOptions.some(re=>re.value===N.size)?N.size:j.defaultSize;ye(re=>Ei(re,N.extraParams)?re:N.extraParams);const ae=n!==void 0?n.toString():I,ne=r||W;q(re=>re===ae?re:ae),m(re=>re===ne?re:ne),ai(T)||(xe(re=>re&&!1),je(re=>re.length>0?[]:re))},[T,A,rt,n,r]),s.useEffect(()=>{const N=ve.length>0?Di(ve,c.maxCount,c.labels):[];ce(j=>sn(j,N)?j:N)},[ve,c.labels,c.labelsSignature,c.maxCount]),s.useEffect(()=>{ya({currentModel:T,currentSelectionKey:ke(T,A),extraParams:Z,duration:w,size:V})},[T,A,w,V,Z]);const Ge=le.useRef("");s.useEffect(()=>{if(Me)return;const N=JSON.stringify({prompt:i,image:t==null?void 0:t.url,images:o==null?void 0:o.map(W=>W.url),duration:n,model:a,size:r,result:p});if(Ge.current===N)return;Ge.current=N,a&&(qe.current=a,z(a),de(Be(b,a,S))),u(i);let j=[];o&&o.length>0?j=o:t&&(j=[{slot:0,slotLabel:"参考图",url:t.url||"",name:t.name,file:t.file}]),ge(j);const I=Di(j,c.maxCount,c.labels);ce(I),n!==void 0&&q(n.toString()),r&&m(r),O(null)},[i,t,o,n,r,p,c.labels,c.labelsSignature,c.maxCount,Me]),s.useEffect(()=>(O(null),()=>{O(null)}),[]);const Nt=()=>{u(""),ge([]),ce([]),O(null),P("config"),q(se.duration),m(se.size),Je(!1),xe(!1),je([]),ye(Et(T,A||T)),window.dispatchEvent(new CustomEvent("ai-video-clear"))},Ke=le.useCallback((N,j)=>N.map((I,W)=>({slot:W,slotLabel:j[W]||`参考图${W+1}`,url:I.url,name:I.name,file:I.file})),[]),dt=le.useCallback(N=>N.map(j=>({url:j.url,name:j.name,file:j.file})),[]),ze=le.useCallback(N=>{const j=Ke(N,c.labels);ce(j),ge(j)},[c.labels,Ke]),vt=le.useMemo(()=>ts("video",y,Fe),[Fe,y,bt]),Qe=N=>{is("video",N),at(j=>j+1)},Ze=s.useRef("");s.useEffect(()=>{if(!x)return;const N=Number.parseFloat(w),j={prompt:v,images:De.map(ae=>({url:ae.url,name:ae.name})),duration:Number.isFinite(N)?N:void 0,size:V||void 0},I=JSON.stringify(j);if(Ze.current===I)return;const W=window.setTimeout(()=>{Ze.current!==I&&(Ze.current=I,x(j))},200);return()=>{window.clearTimeout(W)}},[w,V,x,v,De]);const lt=N=>{var I,W;if(Je(!0),P("config"),xt(!0),N.params.model){z(N.params.model),de(N.params.modelRef||null);const ae=Re.get();Re.update({...ae,videoModelName:N.params.model})}if((I=N.params.storyboard)!=null&&I.enabled&&((W=N.params.storyboard)!=null&&W.scenes))xe(!0),je(N.params.storyboard.scenes),u("");else{const ae=N.params.prompt||"",ne=Xa(ae);ne&&ne.length>0?(xe(!0),je(ne),u("")):(xe(!1),je([]),u(ae))}if(N.params.seconds!==void 0){const ae=typeof N.params.seconds=="string"?N.params.seconds:N.params.seconds.toString();q(ae)}const j=N.params.params&&typeof N.params.params=="object"?Object.entries(N.params.params).reduce((ae,[ne,re])=>(re!=null&&String(re).trim()&&(ae[ne]=String(re)),ae),{}):{};if(ye(j),N.params.size&&m(N.params.size),N.params.uploadedImages&&N.params.uploadedImages.length>0){ge(N.params.uploadedImages);const ae=N.params.model||T,ne=kt(ae,N.params.modelRef||ae,j),re=ne.imageUpload.maxCount,et=ne.imageUpload.labels||[],We=N.params.uploadedImages.slice(0,re).map((He,yt)=>({...He,slot:yt,slotLabel:et[yt]||`参考图${yt+1}`}));ce(We)}else ge([]),ce([]);O(null)},Gt=async(N=1)=>{if(!K.current){K.current=!0;try{if(he){const j=Ha(ue,parseFloat(w),_e.minSceneDuration);if(!j.valid){O(j.error||"场景配置无效");return}}else if(!v||!v.trim()){O(y==="zh"?"请输入视频描述":"Please enter video description");return}try{const j=[];for(const ne of De)if(ne.file){const re=await new Promise((et,We)=>{const He=new FileReader;He.onload=()=>et(He.result),He.onerror=We,He.readAsDataURL(ne.file)});j.push({...ne,url:re,file:void 0})}else j.push({...ne,file:void 0});const I=he?Ya(ue):(v||"").trim(),W=[],ae=_||`video_batch_${Date.now()}`;for(let ne=0;ne<N;ne++){const re=Object.keys(Z).length>0?Z:void 0,et={prompt:I,model:T,modelRef:A||null,seconds:w,size:V,uploadedImages:j,...he&&{storyboard:{enabled:!0,scenes:ue,totalDuration:parseFloat(w)}},batchId:ae,batchIndex:ne+1,batchTotal:N,autoInsertToCanvas:U??Tt(st.AI_VIDEO_AUTO_INSERT),...re?{params:re}:{}},We=F(et,we.VIDEO);We&&W.push(We.id)}W.length>0?(Se.success(y==="zh"?N>1?`${W.length} 个视频任务已添加到队列,将在后台生成`:"视频任务已添加到队列,将在后台生成":N>1?`${W.length} video tasks added to queue, will be generated in background`:"Video task added to queue, will be generated in background"),Qe(I),u(""),ge([]),ce([]),xe(!1),je([]),O(null),P("tasks"),Je(!1)):O(y==="zh"?"任务创建失败,请检查参数或稍后重试":"Failed to create task, please check parameters or try again later")}catch(j){console.error("Failed to create task:",j);let I=y==="zh"?"任务创建失败,请检查参数或稍后重试":"Failed to create task, please check parameters or try again later";j.message&&(j.message.includes("exceed 5000 characters")?I=y==="zh"?"提示词不能超过 5000 字符":"Prompt must not exceed 5000 characters":j.message.includes("Duplicate submission")?I=y==="zh"?"请勿重复提交,请等待 5 秒后再试":"Duplicate submission. Please wait 5 seconds.":j.message.includes("Invalid parameters")&&(I=y==="zh"?`参数错误: ${j.message.replace("Invalid parameters: ","")}`:j.message)),O(I)}}finally{K.current=!1}}};return Hi(Te,v,Gt),e.jsxDEV("div",{className:"ai-video-generation-container",children:[X?e.jsxDEV("div",{className:"ai-generation-mobile-switcher",role:"tablist",children:[e.jsxDEV("button",{type:"button",className:`ai-generation-mobile-switcher__tab ${L==="config"?"ai-generation-mobile-switcher__tab--active":""}`,onClick:()=>P("config"),children:"生成设置"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1217,columnNumber:11},void 0),e.jsxDEV("button",{type:"button",className:`ai-generation-mobile-switcher__tab ${L==="tasks"?"ai-generation-mobile-switcher__tab--active":""}`,onClick:()=>P("tasks"),children:"生成任务"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1228,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1216,columnNumber:9},void 0):null,e.jsxDEV("div",{className:`main-content ${X?"main-content--mobile-panels":""}`,ref:R,children:[e.jsxDEV("div",{className:`ai-image-generation-section ${X&&L!=="config"?"ai-generation-mobile-panel--hidden":""}`,children:[e.jsxDEV("div",{className:"ai-image-generation-form",children:[f!==void 0&&d&&e.jsxDEV("div",{className:"form-header-row",children:e.jsxDEV("div",{className:"model-selector-wrapper",children:e.jsxDEV(At,{selectedModel:T,selectedSelectionKey:ke(T,A),onSelect:(N,j)=>{const I=N,W=Be(Q,I,j||null);qe.current=null,z(I),de(W),ye(Et(I,W||I)),d(N),h==null||h(W)},onSelectModel:N=>{const j=N.id;qe.current=null,z(j);const I=Be(Q,j,Pe(N));de(I),ye(Et(j,I||j)),d(N.id),h==null||h(I)},language:y,models:Q,placement:"down",variant:"form",placeholder:y==="zh"?"选择视频模型":"Select Video Model",disabled:Te},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1261,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1260,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1259,columnNumber:15},void 0),ee&&e.jsxDEV("div",{className:"model-params-row",children:e.jsxDEV(Ri,{selectedParams:Z,onParamChange:$,compatibleParams:Ve,modelId:T,language:y,disabled:Te,excludeParamIds:["size","duration"]},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1321,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1320,columnNumber:15},void 0),e.jsxDEV(Ka,{model:T,configOverride:k,duration:w,size:V,onDurationChange:q,onSizeChange:m,disabled:Te},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1334,columnNumber:13},void 0),e.jsxDEV(Ai,{images:dt(De),onImagesChange:ze,language:y,disabled:Te,multiple:c.maxCount>1,maxCount:c.maxCount,slotLabels:c.mode==="frames"?c.labels:void 0,label:c.mode==="frames"?y==="zh"?"首尾帧图片 (可选)":"Start/End Frames (Optional)":y==="zh"?"参考图片 (可选)":"Reference Images (Optional)"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1345,columnNumber:13},void 0),Ce&&e.jsxDEV(Qa,{enabled:he,onEnabledChange:xe,totalDuration:parseFloat(w),maxScenes:_e.maxScenes,minSceneDuration:_e.minSceneDuration,scenes:ue,onScenesChange:je,disabled:Te},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1370,columnNumber:15},void 0),!he&&e.jsxDEV(es,{prompt:v,onPromptChange:u,presetPrompts:vt,language:y,type:"video",disabled:Te,onError:O,videoProvider:pe.provider},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1384,columnNumber:15},void 0),e.jsxDEV(Ji,{error:M},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1396,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1256,columnNumber:11},void 0),e.jsxDEV(Xi,{language:y,type:"video",isGenerating:Te,hasGenerated:!1,canGenerate:he?ue.length>0:!!(v&&v.trim()),onGenerate:Gt,onReset:Nt,leftContent:e.jsxDEV(rs,{storageKey:st.AI_VIDEO_AUTO_INSERT,language:y},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1412,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1399,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1249,columnNumber:9},void 0),X?null:e.jsxDEV(os,{isRightPanelVisible:E,onToggleRightPanel:ot,onWidthChange:nt,rightPanelWidth:l,language:y,storageKey:"video"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1421,columnNumber:11},void 0),(X||E)&&e.jsxDEV("div",{className:`task-sidebar ${X?"task-sidebar--mobile-panel":""} ${X&&L!=="tasks"?"ai-generation-mobile-panel--hidden":""}`,style:X?void 0:{width:l,flexShrink:0},children:e.jsxDEV(ds,{taskType:we.VIDEO,onEditTask:lt},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1447,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1433,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1242,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1214,columnNumber:5},void 0)},nn=s.lazy(()=>Ot(()=>import("./batch-image-generation-7zLsAOoI.js"),__vite__mapDeps([0,1]),import.meta.url)),on=({container:i})=>{const{appState:t,openDialog:o,closeDialog:n}=ht(),{language:a}=Xe(),r=Mt(),{isMobile:p,isTablet:f}=Lt(),S=t.dialogInitialDataByType,d=(S==null?void 0:S[Ne.aiImageGeneration])??null,h=(S==null?void 0:S[Ne.aiVideoGeneration])??null,_=!p&&!f,U=s.useRef(!1),x=s.useRef(null),[b,v]=s.useState(""),[u,M]=s.useState(null),[O,E]=s.useState(""),[B,l]=s.useState(null),C=s.useRef(null),L=s.useRef(null),P=s.useCallback(()=>{const k=$e("image"),se=$e("video"),be=k.modelId||"gemini-3-pro-image-preview-vip",Ee=Ue(k.profileId,be),c=se.modelId||"veo3",g=Ue(se.profileId,c);v(q=>q===be?q:be),M(q=>ke(be,q)===ke(be,Ee)?q:Ee),E(q=>q===c?q:c),l(q=>ke(c,q)===ke(c,g)?q:g)},[]);s.useEffect(()=>{P()},[P]),s.useEffect(()=>{const k=()=>{P()};return Re.addListener(k),ni.addListener(k),()=>{Re.removeListener(k),ni.removeListener(k)}},[P]);const R=k=>{v(k)},Y=k=>{E(k)},X=k=>{M(k)},ie=k=>{l(k)};s.useEffect(()=>{if(!b)return;const k=ke(b,u);C.current!==k&&(C.current=k,oi("image",Ue(u==null?void 0:u.profileId,b)))},[b,u]),s.useEffect(()=>{if(!O)return;const k=ke(O,B);L.current!==k&&(L.current=k,oi("video",Ue(B==null?void 0:B.profileId,O)))},[O,B]);const[G,oe]=s.useState({initialPrompt:"",initialImages:[],selectedElementIds:[]}),[J,fe]=s.useState({initialPrompt:"",initialImage:void 0}),[T,z]=s.useState(!1),[A,de]=s.useState(()=>{try{return localStorage.getItem(Dt)==="batch"?"batch":"single"}catch{return"single"}});s.useEffect(()=>{!_&&A==="batch"&&de("single")},[_,A]);const H=s.useCallback(k=>{de(k),k==="batch"&&(z(!0),setTimeout(()=>z(!1),50));try{localStorage.setItem(Dt,k)}catch(se){console.warn("Failed to save image mode:",se)}},[]);s.useEffect(()=>{if(t.openDialogTypes.has(Ne.aiImageGeneration)){if(G.initialImages&&G.initialImages.length>0||G.initialPrompt&&G.initialPrompt.trim()!==""){z(!1);return}try{localStorage.getItem(Dt)==="batch"&&(z(!0),setTimeout(()=>z(!1),50))}catch{z(!1)}}},[t.openDialogTypes,G.initialImages,G.initialPrompt]);const me=s.useRef(!1),Q=s.useRef(d),Z=s.useRef(!1),ye=s.useRef(h);s.useEffect(()=>{if(!r)return;const k=t.openDialogTypes.has(Ne.aiImageGeneration),se=k&&!me.current,be=Q.current!==d;if(me.current=k,Q.current=d,!k||!se&&!be||U.current)return;(async()=>{U.current=!0,x.current&&clearTimeout(x.current),x.current=setTimeout(()=>{console.warn("Processing timeout, resetting processing state"),U.current=!1},1e4);try{if(d){oe({initialPrompt:d.initialPrompt||d.prompt||"",initialImages:d.initialImages||d.uploadedImages||[],selectedElementIds:[],initialResultUrl:d.initialResultUrl||d.resultUrl,initialAspectRatio:d.initialAspectRatio,targetFrameId:d.targetFrameId,targetFrameDimensions:d.targetFrameDimensions}),d.initialModel&&v(d.initialModel),d.initialModelRef!==void 0&&M(d.initialModelRef);return}const c=t.lastSelectedElementIds||[];let g,q,D;const m=wa(r);if(m.length===1&&ja(m[0])){const ee=m[0],$=Ut.getRectangleByPoints(ee.points);g=ka($.width,$.height),q=ee.id,D={width:$.width,height:$.height}}const w=await ci(r,c),V=[];w.remainingImages.forEach(ee=>{V.push({url:ee.url,name:ee.name||`selected-image-${Date.now()}.png`})}),w.graphicsImage&&V.push({url:w.graphicsImage,name:`graphics-combined-${Date.now()}.png`}),oe({initialPrompt:w.remainingText||"",initialImages:V,selectedElementIds:c,initialAspectRatio:g,targetFrameId:q,targetFrameDimensions:D})}catch(c){console.warn("Error processing selected content for AI:",c);const g=ui(r),q=g.images.map(D=>({url:D.url,name:D.name||`selected-image-${Date.now()}.png`}));oe({initialPrompt:g.text||"",initialImages:q,selectedElementIds:[]})}finally{U.current=!1,x.current&&(clearTimeout(x.current),x.current=null)}})()},[t.lastSelectedElementIds,t.openDialogTypes,r,d]),s.useEffect(()=>{if(!r)return;const k=t.openDialogTypes.has(Ne.aiVideoGeneration),se=k&&!Z.current,be=ye.current!==h;if(Z.current=k,ye.current=h,!k||!se&&!be||U.current)return;(async()=>{U.current=!0,x.current&&clearTimeout(x.current),x.current=setTimeout(()=>{console.warn("Video processing timeout, resetting processing state"),U.current=!1},1e4);try{if(h){fe({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 D=h.initialModel||h.model;D&&E(D),h.initialModelRef!==void 0&&l(h.initialModelRef);return}const c=t.lastSelectedElementIds||[],g=await ci(r,c),q=[];g.remainingImages.length>0?g.remainingImages.forEach((D,m)=>{q.push({url:D.url,name:D.name||`selected-image-${m+1}-${Date.now()}.png`})}):g.graphicsImage&&q.push({url:g.graphicsImage,name:`graphics-combined-${Date.now()}.png`}),fe({initialPrompt:g.remainingText||"",initialImage:q.length>0?q[0]:void 0,initialImages:q.map((D,m)=>({slot:m,slotLabel:`参考图${m+1}`,url:D.url,name:D.name}))})}catch(c){console.warn("Error processing selected content for AI video:",c);const g=ui(r),q=g.images.map((D,m)=>({url:D.url,name:D.name||`selected-image-${m+1}-${Date.now()}.png`}));fe({initialPrompt:g.text||"",initialImage:q.length>0?q[0]:void 0,initialImages:q.map((D,m)=>({slot:m,slotLabel:`参考图${m+1}`,url:D.url,name:D.name}))})}finally{U.current=!1,x.current&&(clearTimeout(x.current),x.current=null)}})()},[t.lastSelectedElementIds,t.openDialogTypes,r,h]),s.useEffect(()=>{t.openDialogTypes.size===0&&(U.current=!1,me.current=!1,Q.current=null,Z.current=!1,ye.current=null,x.current&&(clearTimeout(x.current),x.current=null))},[t.openDialogTypes]);const Ve=s.useCallback(()=>{const k=localStorage.getItem(ri);if(k)try{const se=JSON.parse(k);se.timestamp=Date.now(),localStorage.setItem(ri,JSON.stringify(se))}catch(se){console.warn("Failed to update cache timestamp:",se)}n(Ne.aiImageGeneration)},[n]),pe=s.useCallback(()=>{const k=localStorage.getItem(di);if(k)try{const se=JSON.parse(k);se.timestamp=Date.now(),localStorage.setItem(di,JSON.stringify(se))}catch(se){console.warn("Failed to update cache timestamp:",se)}n(Ne.aiVideoGeneration)},[n]);return e.jsxDEV(e.Fragment,{children:[e.jsxDEV(Ct,{open:t.openDialogTypes.has(Ne.mermaidToDrawnix),onOpenChange:k=>{k?o(Ne.mermaidToDrawnix):n(Ne.mermaidToDrawnix)},children:e.jsxDEV(qt,{className:"Dialog ttd-dialog",container:i,children:e.jsxDEV(Ma,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:647,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:646,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:636,columnNumber:7},void 0),e.jsxDEV(Ct,{open:t.openDialogTypes.has(Ne.markdownToDrawnix),onOpenChange:k=>{k?o(Ne.markdownToDrawnix):n(Ne.markdownToDrawnix)},children:e.jsxDEV(qt,{className:"Dialog ttd-dialog",container:i,children:e.jsxDEV(Oa,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:661,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:660,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:650,columnNumber:7},void 0),e.jsxDEV(li,{id:"ai-image-dialog",visible:t.openDialogTypes.has(Ne.aiImageGeneration),title:A==="batch"?a==="zh"?"批量出图":"Batch Generation":a==="zh"?"AI 图片生成":"AI Image Generation",headerContent:_?e.jsxDEV("div",{className:"image-generation-mode-tabs",onMouseDown:k=>k.stopPropagation(),onTouchStart:k=>k.stopPropagation(),onPointerDown:k=>k.stopPropagation(),children:[e.jsxDEV("button",{type:"button",className:`mode-tab ${A==="single"?"active":""}`,onClick:k=>{k.stopPropagation(),k.preventDefault(),H("single")},children:a==="zh"?"AI 图片生成":"AI Image"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:685,columnNumber:15},void 0),e.jsxDEV("button",{type:"button",className:`mode-tab ${A==="batch"?"active":""}`,onClick:k=>{k.stopPropagation(),k.preventDefault(),H("batch")},children:a==="zh"?"批量出图":"Batch"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:698,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:679,columnNumber:13},void 0):void 0,onClose:Ve,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:i,autoMaximize:T||p,children:t.openDialogTypes.has(Ne.aiImageGeneration)&&(A==="batch"?e.jsxDEV(s.Suspense,{fallback:e.jsxDEV("div",{className:"loading-fallback",children:a==="zh"?"加载中...":"Loading..."},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:731,columnNumber:17},void 0),children:e.jsxDEV(nn,{onSwitchToSingle:()=>H("single"),selectedModel:b,selectedModelRef:u,onModelChange:R,onModelRefChange:X},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:736,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:729,columnNumber:13},void 0):e.jsxDEV(tn,{initialPrompt:G.initialPrompt,initialImages:G.initialImages,selectedElementIds:G.selectedElementIds,initialWidth:(d==null?void 0:d.initialWidth)||(d==null?void 0:d.width),initialHeight:(d==null?void 0:d.initialHeight)||(d==null?void 0:d.height),initialResultUrl:G.initialResultUrl,initialAspectRatio:G.initialAspectRatio,targetFrameId:G.targetFrameId,targetFrameDimensions:G.targetFrameDimensions,selectedModel:b,selectedModelRef:u,onModelChange:R,onModelRefChange:X,externalBatchId:d==null?void 0:d.batchId,initialAutoInsertToCanvas:d==null?void 0:d.autoInsertToCanvas,onDraftChange:d==null?void 0:d.onDraftChange},(d==null?void 0:d.batchId)||"ai-image-dialog",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:745,columnNumber:13},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:665,columnNumber:7},void 0),e.jsxDEV(li,{id:"ai-video-dialog",visible:t.openDialogTypes.has(Ne.aiVideoGeneration),title:a==="zh"?"AI 视频生成":"AI Video Generation",onClose:pe,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:i,autoMaximize:p,children:t.openDialogTypes.has(Ne.aiVideoGeneration)&&e.jsxDEV(an,{initialPrompt:J.initialPrompt,initialImage:J.initialImage,initialImages:J.initialImages,initialDuration:J.initialDuration,initialModel:J.initialModel,initialSize:J.initialSize,initialResultUrl:J.initialResultUrl,selectedModel:O,selectedModelRef:B,onModelChange:Y,onModelRefChange:ie,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:791,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:773,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:635,columnNumber:5},void 0)},Dn=s.memo(on,(i,t)=>i.container===t.container);export{Dn as TTDDialog};
|
|
117
|
+
`)}function Xa(i){const t=/Shot\s+(\d+):\s*\n\s*duration:\s*([\d.]+)\s*sec\s*\n\s*Scene:\s*([^\n]+(?:\n(?!Shot\s+\d+:)[^\n]*)*)/gi,o=[];let n;for(;(n=t.exec(i))!==null;){const a=parseInt(n[1],10),r=parseFloat(n[2]),p=n[3].trim();o.push({id:ss(),order:a,duration:r,prompt:p})}return o.length===0?null:o.sort((a,r)=>a.order-r.order)}const Ja=({value:i,onChange:t,placeholder:o,disabled:n=!1,autoFocus:a=!1,enableMention:r=!0})=>{const{mentionState:p,textareaRef:f,handleTextChange:S,handleKeyDown:d,handleCharacterSelect:h,closeMentionPopup:_}=Zi({enabled:r,onPromptChange:t,prompt:i}),U=s.useCallback(x=>{const b=x.target.value,v=x.target.selectionStart||0;S(b,v)},[S]);return s.useEffect(()=>{a&&f.current&&f.current.focus()},[a,f]),e.jsxDEV("div",{className:"scene-prompt-input",children:[e.jsxDEV("textarea",{ref:f,className:"scene-prompt-input__textarea",value:i,onChange:U,onKeyDown:d,placeholder:o,disabled:n,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),r&&e.jsxDEV(Qi,{visible:p.visible,query:p.query,position:p.position,showBelow:p.showBelow,selectedIndex:p.selectedIndex,onSelect:h,onClose:_},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)},Qa=({enabled:i,onEnabledChange:t,totalDuration:o,maxScenes:n,minSceneDuration:a,scenes:r,onScenesChange:p,disabled:f=!1})=>{const[S,d]=s.useState(null),h=s.useRef(null),_=r.map(l=>l.id).join("|");s.useEffect(()=>{if(!i||r.length===0)return;!(S?r.some(C=>C.id===S):!1)&&S!==r[0].id&&d(r[0].id)},[i,_,r,S]);const U=s.useCallback(()=>{if(r.length>=n)return;const l=r.reduce((R,Y)=>R+Y.duration,0),C=o-l;let L=Math.max(a,C/2);L=parseFloat(L.toFixed(1)),L<a&&(L=a);const P=ji(r.length+1,L);p([...r,P]),d(P.id),setTimeout(()=>{var R;(R=h.current)==null||R.scrollIntoView({behavior:"smooth"})},100)},[r,n,o,a,p]),x=s.useCallback(l=>{var P;if(r.length<=1)return;const L=r.filter(R=>R.id!==l).map((R,Y)=>({...R,order:Y+1}));p(L),S===l&&d(((P=L[0])==null?void 0:P.id)||null)},[r,p,S]),b=s.useCallback(l=>{const C=r.filter(L=>L.id!==l).reduce((L,P)=>L+P.duration,0);return Math.max(a,o-C)},[r,o,a]),v=s.useCallback(l=>{const C=b(l),L=[],P=.1;for(let R=a;R<=C+.001;R+=P){const Y=parseFloat(R.toFixed(1));Y<=C&&L.push({label:`${Y}`,value:Y})}return L},[a,b]),u=s.useCallback((l,C)=>{const L=typeof C=="string"?parseFloat(C):C;if(isNaN(L))return;const P=b(l),R=r.map(Y=>{if(Y.id===l){const X=Math.max(a,Math.min(L,P)),ie=parseFloat(X.toFixed(1));return ie===Y.duration?Y:{...Y,duration:ie}}return Y});R.every((Y,X)=>Y===r[X])||p(R)},[r,a,b,p]),M=s.useCallback((l,C)=>{const L=r.find(R=>R.id===l);if((L==null?void 0:L.prompt)===C)return;const P=r.map(R=>R.id===l?{...R,prompt:C}:R);p(P)},[r,p]),O=s.useCallback(l=>{if(t(l),l&&r.length===0){const C=ji(1,o);p([C]),d(C.id)}},[r,o,t,p]),E=s.useCallback(l=>{d(l)},[]),B=r.length<n;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(Js,{value:i,onChange:O,disabled:f,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),i&&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),i&&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:["共 ",r.length," 个场景,已用 ",r.reduce((l,C)=>l+C.duration,0).toFixed(1)," 秒 / 总时长 ",o," 秒"]},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:[r.map((l,C)=>{const L=S===l.id,P=C===r.length-1;return e.jsxDEV("div",{className:`storyboard-editor__scene-wrapper ${L?"is-selected":""}`,children:[e.jsxDEV("div",{className:`storyboard-editor__timeline-line ${P?"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 ${L?"is-selected":""}`,children:L?C+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),!L&&e.jsxDEV("div",{className:"storyboard-editor__scene storyboard-editor__scene--compact",onClick:()=>E(l.id),children:[e.jsxDEV("span",{className:"storyboard-editor__scene-index",children:C+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(Pt,{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(Mi,{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),L&&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),"场景 ",C+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(Pt,{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(_a,{value:parseFloat(l.duration.toFixed(1)),onChange:R=>u(l.id,R),disabled:f,className:"storyboard-editor__duration-select",size:"small",options:v(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),r.length>1&&e.jsxDEV(pt,{theme:"default",variant:"text",size:"small",icon:e.jsxDEV(Oi,{},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:R=>{R.stopPropagation(),x(l.id)},disabled:f,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(Ja,{value:l.prompt,onChange:R=>M(l.id,R),placeholder:`描述场景 ${C+1} 的内容,输入 @ 可引用角色`,disabled:f,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),B&&e.jsxDEV(pt,{theme:"default",variant:"dashed",size:"medium",icon:e.jsxDEV(Qs,{},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:U,disabled:f,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)},as="aitu-dialog-task-list-width-",$t=240,Ft=800,Za=()=>{const i=Math.round(660);return Math.max($t,Math.min(Ft,i))},ns=i=>{try{const t=localStorage.getItem(as+i);if(t){const o=parseInt(t,10);if(!isNaN(o)&&o>=$t&&o<=Ft)return o}}catch{}return Za()},ki=(i,t)=>{try{localStorage.setItem(as+i,t.toString())}catch{}},os=({isRightPanelVisible:i,onToggleRightPanel:t,onWidthChange:o,rightPanelWidth:n,minWidth:a=$t,maxWidth:r=Ft,onResizeStart:p,onResizeEnd:f,language:S="zh",disabled:d=!1,storageKey:h="image"})=>{const[_,U]=s.useState(!1),x=s.useRef(0),b=s.useRef(0);s.useEffect(()=>(_?(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=""}),[_]);const v=s.useCallback(M=>{if(d||!i)return;M.preventDefault(),M.stopPropagation(),U(!0),x.current=M.clientX,b.current=n,p==null||p();const O=B=>{const l=x.current-B.clientX,C=Math.max(a,Math.min(r,b.current+l));o(C)},E=()=>{U(!1),f==null||f(),b.current+(x.current-document.body.getBoundingClientRect().left),ki(h,n),document.removeEventListener("mousemove",O),document.removeEventListener("mouseup",E)};document.addEventListener("mousemove",O),document.addEventListener("mouseup",E)},[d,i,n,a,r,o,p,f,h]);s.useEffect(()=>{!_&&i&&ki(h,n)},[n,_,i,h]);const u=i?S==="zh"?"隐藏任务列表":"Hide Task List":S==="zh"?"显示任务列表":"Show Task List";return e.jsxDEV("div",{className:`resizable-divider ${_?"is-dragging":""} ${i?"":"is-collapsed"} ${d?"is-disabled":""}`,onMouseDown:v,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(Le,{content:u,placement:"left",children:e.jsxDEV("button",{type:"button",className:"resizable-divider__toggle",onClick:M=>{M.stopPropagation(),t()},"aria-label":u,children:i?e.jsxDEV(Mi,{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(Zs,{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)},rs=({storageKey:i,language:t})=>{const[o,n]=s.useState(()=>{try{return localStorage.getItem(i)!=="false"}catch{return!0}}),a=s.useCallback(r=>{n(r);try{localStorage.setItem(i,String(r))}catch{}},[i]);return e.jsxDEV(Le,{content:t==="zh"?"生成后自动插入画布":"Auto insert to canvas after generation",theme:"light",children:e.jsxDEV(ea,{checked:o,onChange:a,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 Tt(i){try{return localStorage.getItem(i)!=="false"}catch{return!0}}function en(i={}){const{taskType:t}=i,{tasks:o,isLoading:n}=ta(),{retryTask:a,deleteTask:r}=ia(),p=s.useMemo(()=>[...t?o.filter(h=>h.type===t):o].sort((h,_)=>_.createdAt-h.createdAt),[o,t]),f=s.useCallback(async()=>{},[]),S=s.useCallback(async()=>{if(sa(),!await Qt.isAvailable())return;const h=await Qt.getAllTasks();h.length>0&&aa.restoreTasks(h)},[]);return{tasks:p,isLoading:n,isLoadingMore:!1,hasMore:!1,totalCount:p.length,loadedCount:p.length,loadMore:f,refresh:S,retryTask:a,deleteTask:r}}const ds=({taskIds:i,taskType:t,onEditTask:o})=>{const{tasks:n,isLoading:a,isLoadingMore:r,hasMore:p,totalCount:f,loadedCount:S,loadMore:d,retryTask:h,deleteTask:_}=en({taskType:t}),{board:U,openDialog:x}=ht(),[b,v]=s.useState(!1),[u,M]=s.useState(null),[O,E]=s.useState(!1),[B,l]=s.useState(0),[C,L]=s.useState("single"),[P,R]=s.useState(""),[Y,X]=s.useState(null),[ie,G]=s.useState(!1),oe=s.useMemo(()=>n.filter(c=>c.status===Ae.FAILED).length,[n]),J=s.useCallback(()=>{const c=n.filter(g=>g.status===Ae.FAILED);c.forEach(g=>_(g.id)),G(!1),Se.success(`已清除 ${c.length} 个失败任务`)},[n,_]),fe=(c,g)=>{var ee,$,ve,ge,De,ce,he,xe,ue,je,_e;if(!g.trim())return!0;const q=g.toLowerCase().split(/\s+/).filter(Boolean),D={[Ae.PENDING]:"处理中",[Ae.PROCESSING]:"处理中",[Ae.COMPLETED]:"已完成",[Ae.FAILED]:"失败",[Ae.CANCELLED]:"已取消"},m=[],w=(ee=c.params)!=null&&ee.params&&typeof c.params.params=="object"?c.params.params:null;m.push((($=c.params)==null?void 0:$.prompt)??""),m.push(((ve=c.params)==null?void 0:ve.model)??""),m.push(c.id??""),m.push(D[c.status]??String(c.status)),(ge=c.params)!=null&&ge.batchId&&m.push(String(c.params.batchId)),(De=c.params)!=null&&De.batchIndex&&m.push(String(c.params.batchIndex)),(ce=c.params)!=null&&ce.batchTotal&&m.push(String(c.params.batchTotal)),typeof(w==null?void 0:w.model_name)=="string"&&m.push(w.model_name),typeof(w==null?void 0:w.mode)=="string"&&m.push(w.mode),typeof(w==null?void 0:w.klingAction2)=="string"&&m.push(w.klingAction2),(he=c.result)!=null&&he.format&&m.push(String(c.result.format)),(xe=c.result)!=null&&xe.width&&((ue=c.result)!=null&&ue.height)?m.push(`${c.result.width}x${c.result.height}`):(je=c.params)!=null&&je.width&&((_e=c.params)!=null&&_e.height)&&m.push(`${c.params.width}x${c.params.height}`);const V=m.join(" ").toLowerCase();return q.every(Ce=>V.includes(Ce))},T=s.useMemo(()=>{let c=n;return i&&i.length>0&&(c=c.filter(g=>i.includes(g.id))),P.trim()&&(c=c.filter(g=>fe(g,P))),c.sort((g,q)=>q.createdAt-g.createdAt)},[n,i,P]),z=c=>{h(c)},A=c=>{M(c),v(!0)},de=()=>{u&&_(u),v(!1),M(null)},H=async c=>{const g=n.find(D=>D.id===c);if(!g)return;const q=ua(g);if(q.length!==0)try{const D=await ma(q);D.openedCount>0&&D.downloadedCount===0?Se.success(D.openedCount>1?`已打开 ${D.openedCount} 个链接,请在新标签页下载`:"资源不支持直接下载,已打开链接"):Se.success(g.type===we.AUDIO?q.length>1?"多条音频已开始下载":"音频下载成功":q.length>1?"多图已开始下载":"下载成功")}catch(D){console.error("Download failed:",D),Se.error("下载失败,请稍后重试")}},me=async c=>{var q,D,m,w;const g=n.find(V=>V.id===c);if(!((q=g==null?void 0:g.result)!=null&&q.url)&&!((m=(D=g==null?void 0:g.result)==null?void 0:D.urls)!=null&&m.length)||!U){console.warn("Cannot insert: task result or board not available"),Se.warning("无法插入:白板未就绪");return}try{if(g.type===we.IMAGE){const V=(w=g.result.urls)!=null&&w.length?g.result.urls:[g.result.url];for(const ee of V)await la(U,ee);Se.success(V.length>1?"多图已插入到白板":"图片已插入到白板")}else g.type===we.VIDEO&&(await ca(U,g.result.url),Se.success("视频已插入到白板"))}catch(V){console.error("Failed to insert to board:",V),Se.error(`插入失败: ${V instanceof Error?V.message:"未知错误"}`)}},Q=c=>{var q,D,m,w;const g=n.find(V=>V.id===c);if(!g){console.warn("Cannot edit: task not found");return}if(o){o(g);return}if(g.type===we.IMAGE){const V={initialPrompt:g.params.prompt,initialWidth:g.params.width,initialHeight:g.params.height,initialImages:g.params.uploadedImages,initialResultUrl:(q=g.result)==null?void 0:q.url,initialResultUrls:(D=g.result)==null?void 0:D.urls};x(Ne.aiImageGeneration,V)}else if(g.type===we.VIDEO){const V={initialPrompt:g.params.prompt,initialDuration:typeof g.params.seconds=="string"?parseInt(g.params.seconds,10):g.params.seconds,initialModel:g.params.model,initialSize:g.params.size,initialImages:g.params.uploadedImages,initialResultUrl:(m=g.result)==null?void 0:m.url,initialResultUrls:(w=g.result)==null?void 0:w.urls};x(Ne.aiVideoGeneration,V)}},Z=c=>{const g=n.find(q=>q.id===c);g&&X(g)},ye=s.useMemo(()=>{const c=new Set;return T.filter(g=>{var q,D,m,w;return g.status!==Ae.COMPLETED||!((q=g.result)!=null&&q.url)&&!((m=(D=g.result)==null?void 0:D.urls)!=null&&m.length)||g.type!==we.IMAGE&&g.type!==we.VIDEO&&!(g.type===we.AUDIO&&((w=g.result)==null?void 0:w.resultKind)!=="lyrics")||c.has(g.id)?!1:(c.add(g.id),!0)})},[T]),{previewMediaItems:Ve,taskIdToPreviewConfig:pe}=s.useMemo(()=>{var q,D,m,w,V,ee;const c=[],g=new Map;for(const $ of ye){const ve=c.length,ge=((q=$.result)==null?void 0:q.title)||$.params.title||((D=$.params.prompt)==null?void 0:D.substring(0,50))||"媒体预览";if($.type===we.AUDIO){const ce=((w=(m=$.result)==null?void 0:m.clips)==null?void 0:w.filter(ue=>!!ue.audioUrl).map((ue,je)=>{var _e,Ce,Fe;return{id:ue.clipId||ue.id||`${$.id}-${je}`,url:ue.audioUrl,type:"audio",title:ue.title||((_e=$.result)!=null&&_e.clips&&$.result.clips.length>1?`${ge} (${je+1}/${$.result.clips.length})`:ge),posterUrl:ue.imageLargeUrl||ue.imageUrl||((Ce=$.result)==null?void 0:Ce.previewImageUrl),duration:typeof ue.duration=="number"?ue.duration:(Fe=$.result)==null?void 0:Fe.duration,prompt:$.params.prompt,tags:typeof $.params.tags=="string"?$.params.tags:void 0,artist:$.params.model||$.params.mv||"Aitu",album:"Aitu Generated"}}))??[],he=(V=$.result.urls)!=null&&V.length?$.result.urls:$.result.url?[$.result.url]:[],xe=ce.length>0?ce:he.map((ue,je)=>{var _e,Ce;return{id:he.length>1?`${$.id}-${je}`:$.id,url:ue,type:"audio",title:he.length>1?`${ge} (${je+1}/${he.length})`:ge,posterUrl:(_e=$.result)==null?void 0:_e.previewImageUrl,duration:(Ce=$.result)==null?void 0:Ce.duration,prompt:$.params.prompt,tags:typeof $.params.tags=="string"?$.params.tags:void 0,artist:$.params.model||$.params.mv||"Aitu",album:"Aitu Generated"}});c.push(...xe)}else{const ce=(ee=$.result.urls)!=null&&ee.length?$.result.urls:[$.result.url],he=$.type===we.VIDEO?"video":"image";for(let xe=0;xe<ce.length;xe++)c.push({id:ce.length>1?`${$.id}-${xe}`:$.id,url:he==="image"?na(ce[xe]):ce[xe],type:he,title:ce.length>1?`${ge} (${xe+1}/${ce.length})`:ge})}const De=c.length-ve;g.set($.id,{mode:$.type===we.AUDIO&&De>1?"compare":"single",index:$.type===we.AUDIO&&De>1?Array.from({length:Math.min(De,4)},(ce,he)=>ve+he):ve})}return{previewMediaItems:c,taskIdToPreviewConfig:g}},[ye]),k=s.useCallback(c=>{const g=pe.get(c);g!==void 0&&(L(g.mode),l(g.index),E(!0))},[pe]),se=s.useCallback(()=>{E(!1)},[]),be=P.trim()&&T.length===0&&n.length>0,Ee=f>0?f:n.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:["生成任务 (",Ee,")"]},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:oe>0&&e.jsxDEV(Le,{content:`清除全部失败任务 (${oe})`,theme:"light",children:e.jsxDEV(pt,{size:"small",variant:"text",icon:e.jsxDEV(Oi,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:467,columnNumber:27},void 0),onClick:()=>G(!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(oa,{value:P,onChange:c=>R(c),placeholder:"搜索任务(提示词/模型/...)",clearable:!0,prefixIcon:e.jsxDEV(ra,{},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(Ia,{tasks:T,onRetry:z,onDelete:A,onDownload:H,onInsert:me,onEdit:Q,onPreviewOpen:k,onExtractCharacter:Z,hasMore:p,isLoadingMore:r,onLoadMore:d,totalCount:Ee,loadedCount:S,className:"dialog-task-list__content",emptyContent:e.jsxDEV("div",{className:"dialog-task-list__empty",children:a?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):be?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(Zt,{open:b,title:"确认删除",description:"确定要删除此任务吗?此操作无法撤销。",confirmText:"删除",cancelText:"取消",danger:!0,onOpenChange:v,onConfirm:de},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(Zt,{open:ie,title:"清除失败任务",description:`确定要清除全部 ${oe} 个失败任务吗?此操作无法撤销。`,confirmText:"清除",cancelText:"取消",danger:!0,onOpenChange:G,onConfirm:J},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(da,{visible:O,items:Ve,initialMode:C,initialIndex:B,onClose:se,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(Sa,{visible:!!Y,task:Y,onClose:()=>X(null),onCreateComplete:c=>{X(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)},tn=({initialPrompt:i="",initialImages:t=[],selectedElementIds:o=[],initialWidth:n,initialHeight:a,initialResultUrl:r,initialAspectRatio:p,targetFrameId:f,targetFrameDimensions:S,selectedModel:d,selectedModelRef:h,onModelChange:_,onModelRefChange:U,externalBatchId:x,initialAutoInsertToCanvas:b,onDraftChange:v}={})=>{var Te,nt,ot;const u=zt("image"),M=$e("image"),O=Oe(u,M.modelId,Ue(M.profileId,M.modelId))||Ye("image",M.modelId,Ue(M.profileId,M.modelId)),[E,B]=s.useState((O==null?void 0:O.id)||((Te=u[0])==null?void 0:Te.id)||"gemini-2.5-flash-image-vip"),[l,C]=s.useState(Pe(O)||Ue(M.profileId,M.modelId)),L=ke((O==null?void 0:O.id)||((nt=u[0])==null?void 0:nt.id)||"gemini-2.5-flash-image-vip",Pe(O)||Ue(M.profileId,M.modelId)),P=ei((O==null?void 0:O.id)||((ot=u[0])==null?void 0:ot.id)||"gemini-2.5-flash-image-vip",L),[R,Y]=s.useState(i),[X,ie]=s.useState(P.extraParams),G=s.useMemo(()=>{if(Oe(u,E,l)||!E)return u;const F=Ye("image",E,l);return F?[F,...u]:u},[E,l,u]),[oe,J]=s.useState(n||1024),[fe,T]=s.useState(a||1024),[z,A]=s.useState(p||P.aspectRatio||wt),[de,H]=s.useState(null),[me,Q]=s.useState(t),[Z,ye]=s.useState(!0),[Ve,pe]=s.useState(()=>ns("image")),[k,se]=s.useState("config"),be=s.useRef(null),{viewportWidth:Ee}=Lt(),c=Ee<=768,{imageHistory:g}=Wi(),{isGenerating:q}=Yi("image"),{language:D}=Xe(),{createTask:m}=Rt(),w=s.useRef(!1),V=E.startsWith("mj"),ee=le.useMemo(()=>{if(V)return[];const y=pa(E);if(y.length===0)return mt;const F=new Map(mt.map(te=>[te.value,te])),K=[];return y.forEach(te=>{const Ie=te.value==="auto"?"auto":te.value.replace("x",":"),qe=F.get(Ie);qe&&!K.some(Me=>Me.value===qe.value)&&K.push(qe)}),K.length>0?K:mt},[E,V]),$=le.useMemo(()=>{const y=fa(E);return V?y.length>0:y.some(F=>F.id!=="size")},[E,V]),[ve,ge]=s.useState(!1);s.useEffect(()=>{if(ve)return;const y=ei(E,ke(E,l));ie(y.extraParams),A(y.aspectRatio)},[E,l,ve]);const De=s.useCallback((y,F)=>{if(!F||F==="default"){ie(K=>{const te={...K};return delete te[y],te});return}ie(K=>({...K,[y]:F}))},[]),ce=s.useCallback(y=>{pe(y)},[]),he=s.useCallback(()=>{ye(y=>!y)},[]),xe=le.useRef("");s.useEffect(()=>{if(ve)return;const y=JSON.stringify({prompt:i,images:t==null?void 0:t.map(F=>F.url),elementIds:o,width:n,height:a,result:r,aspectRatio:p});xe.current!==y&&(xe.current=y,Y(i),Q(t||[]),n&&J(n),a&&T(a),p&&A(p))},[i,t,o,n,a,r,p,ve]);const ue=s.useRef("");s.useEffect(()=>{if(!v)return;const y={prompt:R,images:me.map(te=>({url:te.url,name:te.name})),aspectRatio:z},F=JSON.stringify(y);if(ue.current===F)return;const K=window.setTimeout(()=>{ue.current!==F&&(ue.current=F,v(y))},200);return()=>{window.clearTimeout(K)}},[z,v,R,me]),s.useEffect(()=>{const y=F=>{var te;const K=F.imageModelName||((te=G[0])==null?void 0:te.id)||"gemini-2.5-flash-image-vip";if(K!==E){B(K);const Ie=Oe(G,K,l);C(Pe(Ie)||null)}};return Re.addListener(y),()=>Re.removeListener(y)},[E,l,G]),s.useEffect(()=>{if(G.length===0)return;if(!Oe(G,E,l)){const F=G[0];B(F.id);const K=Pe(F);C(te=>te&&K&&te.profileId===K.profileId&&te.modelId===K.modelId?te:K)}},[E,l,G]),s.useEffect(()=>{if(!d)return;const y=ke(E,l),F=ke(d,h);if(y!==F){B(d);const K=Oe(G,d,h),te=Pe(K)||h||null;C(Ie=>Ie&&te&&Ie.profileId===te.profileId&&Ie.modelId===te.modelId?Ie:te)}},[E,l,d,h,G]),s.useEffect(()=>{!$&&Object.keys(X).length>0&&ie({})},[$,X]),s.useEffect(()=>{var F;if(V||ee.length===0)return;const y=new Set(ee.map(K=>K.value));if(!y.has(z)){const K=y.has("auto")?"auto":((F=ee[0])==null?void 0:F.value)||wt;A(K)}},[z,V,ee]),s.useEffect(()=>{ga({currentModel:E,currentSelectionKey:ke(E,l),extraParams:X,aspectRatio:z})},[E,l,X,z]),s.useEffect(()=>(H(null),()=>{H(null)}),[]);const je=()=>{Y(""),ie({}),Q([]),H(null),A(wt),se("config"),ge(!1),window.dispatchEvent(new CustomEvent("ai-image-clear"))},_e=le.useMemo(()=>ts("image",D,g),[g,D]),Ce=y=>{is("image",y)},Fe=y=>{if(ge(!0),se("config"),Y(y.params.prompt||""),ie({}),J(y.params.width||1024),T(y.params.height||1024),y.params.uploadedImages&&y.params.uploadedImages.length>0?Q(y.params.uploadedImages):Q([]),y.params.model){B(y.params.model),C(y.params.modelRef||null);const F=Re.get();Re.update({...F,imageModelName:y.params.model})}y.params.aspectRatio&&A(y.params.aspectRatio),H(null)},bt=async()=>Promise.all(me.map(async y=>{if(y.file)return new Promise((F,K)=>{const te=new FileReader;te.onload=()=>{F({type:"url",url:te.result,name:y.name})},te.onerror=K,te.readAsDataURL(y.file)});if(y.url)return{type:"url",url:y.url,name:y.name};throw new Error("Invalid image data")})),at=async(y=1)=>{if(!w.current){w.current=!0;try{if(!R||!R.trim()){H(D==="zh"?"请输入图像描述":"Please enter image description");return}if(!ha("image",l||E)&&!await ba()){H(D==="zh"?"需要 API Key 才能生成图片":"API Key is required to generate images");return}V&&H(null);try{const F=typeof oe=="string"?parseInt(oe)||1024:oe,K=typeof fe=="string"?parseInt(fe)||1024:fe,te=await bt();if(y>1){const Ge=[],Nt=`batch_${Date.now()}`,Ke=E||$e("image").modelId,dt=Ke.startsWith("mj")?[R.trim(),ti(X)].filter(Boolean).join(" "):(R||"").trim(),ze=!Ke.startsWith("mj")&&Object.keys(X).length>0?X:void 0,vt=ze!=null&&ze.size?ze.size:ii(z);for(let Qe=0;Qe<y;Qe++){const Ze={prompt:dt,width:F,height:K,aspectRatio:z,size:vt,model:Ke,modelRef:l||null,uploadedImages:te,batchId:Nt,batchIndex:Qe+1,batchTotal:y,autoInsertToCanvas:b??Tt(st.AI_IMAGE_AUTO_INSERT),targetFrameId:f,targetFrameDimensions:S,...ze?{params:ze}:{}},lt=m(Ze,we.IMAGE);lt&&Ge.push(lt.id)}Ge.length>0?(Se.success(D==="zh"?`已添加 ${Ge.length} 个任务到队列`:`Added ${Ge.length} tasks to queue`),Ce(dt),H(null),se("tasks"),ge(!1)):H(D==="zh"?"批量任务创建失败,请稍后重试":"Failed to create batch tasks, please try again later");return}const Ie=E||$e("image").modelId,qe=Ie.startsWith("mj")?[R.trim(),ti(X)].filter(Boolean).join(" "):(R||"").trim(),Me=!Ie.startsWith("mj")&&Object.keys(X).length>0?X:void 0,Je=Me!=null&&Me.size?Me.size:ii(z),rt={prompt:qe,width:F,height:K,aspectRatio:z,size:Je,model:Ie,modelRef:l||null,uploadedImages:te,autoInsertToCanvas:b??Tt(st.AI_IMAGE_AUTO_INSERT),batchId:x||`image_single_${Date.now()}`,batchIndex:1,batchTotal:1,targetFrameId:f,targetFrameDimensions:S,...Me?{params:Me}:{}};m(rt,we.IMAGE)?(Se.success(D==="zh"?"任务已添加到队列,将在后台生成":"Task added to queue, will be generated in background"),Ce(qe),H(null),se("tasks"),ge(!1)):H(D==="zh"?"任务创建失败,请检查参数或稍后重试":"Failed to create task, please check parameters or try again later")}catch(F){console.error("Failed to create task:",F);let K=D==="zh"?"任务创建失败,请检查参数或稍后重试":"Failed to create task, please check parameters or try again later";F.message&&(F.message.includes("exceed 5000 characters")?K=D==="zh"?"提示词不能超过 5000 字符":"Prompt must not exceed 5000 characters":F.message.includes("Duplicate submission")?K=D==="zh"?"请勿重复提交,请等待 5 秒后再试":"Duplicate submission. Please wait 5 seconds.":F.message.includes("Invalid parameters")&&(K=D==="zh"?`参数错误: ${F.message.replace("Invalid parameters: ","")}`:F.message)),H(K)}}finally{w.current=!1}}};return Hi(q,R,()=>at(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 ${k==="config"?"ai-generation-mobile-switcher__tab--active":""}`,onClick:()=>se("config"),children:"生成设置"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:793,columnNumber:11},void 0),e.jsxDEV("button",{type:"button",className:`ai-generation-mobile-switcher__tab ${k==="tasks"?"ai-generation-mobile-switcher__tab--active":""}`,onClick:()=>se("tasks"),children:"生成任务"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:804,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:792,columnNumber:9},void 0):null,e.jsxDEV("div",{className:`main-content ${c?"main-content--mobile-panels":""}`,ref:be,children:[e.jsxDEV("div",{className:`ai-image-generation-section ${c&&k!=="config"?"ai-generation-mobile-panel--hidden":""}`,children:[e.jsxDEV("div",{className:"ai-image-generation-form",children:[d!==void 0&&_&&e.jsxDEV("div",{className:"form-header-row",children:e.jsxDEV("div",{className:"model-selector-wrapper",children:e.jsxDEV(At,{selectedModel:E,selectedSelectionKey:ke(E,l),onSelect:y=>{B(y),C(null),_(y),U==null||U(null)},onSelectModel:y=>{B(y.id);const F=Pe(y);C(F),_(y.id),U==null||U(F)},language:D,models:G,placement:"down",variant:"form",disabled:q},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:837,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:836,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:835,columnNumber:15},void 0),$&&e.jsxDEV("div",{className:"model-params-row",children:e.jsxDEV(Ri,{selectedParams:X,onParamChange:De,modelId:E,language:D,disabled:q,excludeParamIds:V?void 0:["size"]},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:869,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:868,columnNumber:15},void 0),e.jsxDEV(Ai,{images:me,onImagesChange:Q,language:D,disabled:q,multiple:!0,label:D==="zh"?"参考图片 (可选)":"Reference Images (Optional)",onError:H},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:881,columnNumber:13},void 0),e.jsxDEV(es,{prompt:R,onPromptChange:Y,presetPrompts:_e,language:D,type:"image",disabled:q,onError:H},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:895,columnNumber:13},void 0),e.jsxDEV(Ji,{error:de},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:905,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:832,columnNumber:11},void 0),e.jsxDEV(Xi,{language:D,type:"image",isGenerating:q,hasGenerated:!1,canGenerate:!!(R&&R.trim()),onGenerate:at,onReset:je,leftContent:e.jsxDEV(e.Fragment,{children:[e.jsxDEV(rs,{storageKey:st.AI_IMAGE_AUTO_INSERT,language:D},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:918,columnNumber:17},void 0),!V&&e.jsxDEV(Wa,{value:z,onChange:A,compact:!0,options:ee},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:923,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:917,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:908,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:825,columnNumber:9},void 0),c?null:e.jsxDEV(os,{isRightPanelVisible:Z,onToggleRightPanel:he,onWidthChange:ce,rightPanelWidth:Ve,language:D,storageKey:"image"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:936,columnNumber:11},void 0),(c||Z)&&e.jsxDEV("div",{className:`task-sidebar ${c?"task-sidebar--mobile-panel":""} ${c&&k!=="tasks"?"ai-generation-mobile-panel--hidden":""}`,style:c?void 0:{width:Ve,flexShrink:0},children:e.jsxDEV(ds,{taskType:we.IMAGE,onEditTask:Fe},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:962,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:948,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:818,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:790,columnNumber:5},void 0)};function Ei(i,t){const o=Object.keys(i),n=Object.keys(t);return o.length!==n.length?!1:o.every(a=>i[a]===t[a])}function Di(i,t,o){return i.slice(0,t).map((n,a)=>({...n,slot:a,slotLabel:o[a]||`参考图${a+1}`}))}function sn(i,t){return i.length===t.length&&i.every((o,n)=>{const a=t[n];return o.slot===a.slot&&o.slotLabel===a.slotLabel&&o.url===a.url&&o.name===a.name&&o.file===a.file})}function Ii(i,t){return t.some(o=>o.value===i)}function Si(i){const t=i==null?void 0:i.trim().replace(/[xX]/g,":");return t&&/^\d+:\d+$/.test(t)?t:null}function ut(i){var o;const t=(o=i==null?void 0:i.split("@")[0])==null?void 0:o.trim();return t&&/^\d+p$/.test(t)?t:null}function St(i,t){return((i==null?void 0:i.profileId)||null)===((t==null?void 0:t.profileId)||null)&&((i==null?void 0:i.modelId)||null)===((t==null?void 0:t.modelId)||null)}function ls(i,t){const o=Ue(t==null?void 0:t.profileId,t==null?void 0:t.modelId);return(o==null?void 0:o.modelId)===(i||null)?o:null}function Be(i,t,o){if(!t)return null;const n=ls(t,o),a=Oe(i,t,n);return Pe(a)||n}const an=({initialPrompt:i="",initialImage:t,initialImages:o,initialDuration:n,initialModel:a,initialSize:r,initialResultUrl:p,selectedModel:f,selectedModelRef:S,onModelChange:d,onModelRefChange:h,externalBatchId:_,initialAutoInsertToCanvas:U,onDraftChange:x}={})=>{var Bt,Kt,Wt;const b=zt("video"),[v,u]=s.useState(i),[M,O]=s.useState(null),[E,B]=s.useState(!0),[l,C]=s.useState(()=>ns("video")),[L,P]=s.useState("config"),R=s.useRef(null),{viewportWidth:Y}=Lt(),X=Y<=768,ie=$e("video"),G=a||ie.modelId,oe=ls(G,a&&a===f?S:ie.modelId===G?Ue(ie.profileId,ie.modelId):null),J=Oe(b,G,oe)||Ye("video",G,oe),fe=Be(b,(J==null?void 0:J.id)||G,Pe(J)||oe),[T,z]=s.useState((J==null?void 0:J.id)||((Bt=b[0])==null?void 0:Bt.id)||jt("veo3")),[A,de]=s.useState(fe),H=ke((J==null?void 0:J.id)||((Kt=b[0])==null?void 0:Kt.id)||jt("veo3"),fe),me=si((J==null?void 0:J.id)||((Wt=b[0])==null?void 0:Wt.id)||jt("veo3"),H),Q=le.useMemo(()=>{if(Oe(b,T,A)||!T)return b;const j=Ye("video",T,A);return j?[j,...b]:b},[T,A,b]),[Z,ye]=s.useState(()=>me.extraParams),Ve=le.useMemo(()=>xa(T,A||T,Z),[T,A,Z]),pe=le.useMemo(()=>kt(T,A||T,Z),[T,A,Z]),k=le.useMemo(()=>{if(pe.provider!=="seedance")return pe;const N=Si(Z.aspect_ratio)||Si(Z.aspectRatio)||"16:9",j=new Set,I=pe.sizeOptions.map(ne=>ut(ne.value)).filter(ne=>!ne||j.has(ne)?!1:(j.add(ne),!0)),W=I.map(ne=>({label:ne,value:`${ne}@${N}`,aspectRatio:N})),ae=ut(pe.defaultSize)||I[0]||"720p";return{...pe,sizeOptions:W,defaultSize:`${ae}@${N}`}},[pe,Z.aspectRatio,Z.aspect_ratio]),se=le.useMemo(()=>Na(T,A||T,Z),[T,A,Z]),be=le.useMemo(()=>(pe.imageUpload.labels||[]).join("|"),[pe.imageUpload.labels]),Ee=le.useMemo(()=>be?be.split("|"):[],[be]),c=le.useMemo(()=>({maxCount:pe.imageUpload.maxCount,mode:pe.imageUpload.mode,labels:Ee,labelsSignature:be}),[pe.imageUpload.maxCount,pe.imageUpload.mode,Ee,be]),[g,q]=s.useState((n==null?void 0:n.toString())||me.duration),[D,m]=s.useState(r||me.size),w=le.useMemo(()=>Ii(g,k.durationOptions)?g:k.defaultDuration,[g,k.defaultDuration,k.durationOptions]),V=le.useMemo(()=>{if(Ii(D,k.sizeOptions))return D;if(k.provider==="seedance"){const N=ut(D),j=k.sizeOptions.find(I=>ut(I.value)===N);if(j)return j.value}return k.defaultSize},[D,k]),ee=le.useMemo(()=>Ve.some(N=>N.id!=="size"&&N.id!=="duration"),[Ve]),$=s.useCallback((N,j)=>{if(!j||j==="default"){ye(I=>{const W={...I};return delete W[N],W});return}ye(I=>({...I,[N]:j}))},[]);s.useEffect(()=>{const N=Ve.reduce((j,I)=>{const W=Z[I.id],ae=!W||I.valueType!=="enum"||!I.options||I.options.some(ne=>ne.value===W);return W&&ae?j[I.id]=W:I.defaultValue&&(j[I.id]=I.defaultValue),j},{});Ei(Z,N)||ye(N)},[Ve,Z]);const[ve,ge]=s.useState(()=>o&&o.length>0?o:t?[{slot:0,slotLabel:"参考图",url:t.url||"",name:t.name,file:t.file}]:[]),[De,ce]=s.useState(()=>{const N=pe.imageUpload.maxCount,j=pe.imageUpload.labels||[];let I=[];return o&&o.length>0?I=o:t&&(I=[{slot:0,slotLabel:j[0]||"参考图",url:t.url||"",name:t.name,file:t.file}]),I.slice(0,N).map((W,ae)=>({...W,slot:ae,slotLabel:j[ae]||`参考图${ae+1}`}))}),[he,xe]=s.useState(!1),[ue,je]=s.useState([]),_e=le.useMemo(()=>va(T),[T]),Ce=ai(T),{videoHistory:Fe}=Wi(),[bt,at]=s.useState(0),{isGenerating:Te}=Yi("video"),nt=s.useCallback(N=>{C(N)},[]),ot=s.useCallback(()=>{B(N=>!N)},[]),{language:y}=Xe(),{createTask:F}=Rt(),K=s.useRef(!1),te=f!==void 0,Ie=le.useRef(null),qe=le.useRef(null);s.useEffect(()=>{if(te)return;const N=j=>{const I=j.videoModelName||"veo3";if(I!==T){z(I);const W=Be(Q,I,A);de(W)}};return Re.addListener(N),()=>Re.removeListener(N)},[T,A,te,f,S,Q]),s.useEffect(()=>{if(Q.length===0)return;const N=Oe(Q,T,A),j=Be(Q,T,A);if(!N){const I=Q[0],W=Pe(I);z(I.id),de(ae=>St(ae,W)?ae:W);return}de(I=>St(I,j)?I:j)},[T,A,Q]),s.useEffect(()=>{if(!f)return;const N=ke(f,S);if(Ie.current===N||qe.current&&qe.current!==f)return;Ie.current=N,z(I=>I===f?I:f);const j=Be(Q,f,S);de(I=>St(I,j)?I:j)},[f,S,Q,a]);const[Me,Je]=s.useState(!1),[rt,xt]=s.useState(!1);s.useEffect(()=>{if(rt){xt(!1);return}const N=si(T,ke(T,A)),j=kt(T,A||T,N.extraParams),I=j.durationOptions.some(re=>re.value===N.duration)?N.duration:j.defaultDuration,W=j.sizeOptions.some(re=>re.value===N.size)?N.size:j.defaultSize;ye(re=>Ei(re,N.extraParams)?re:N.extraParams);const ae=n!==void 0?n.toString():I,ne=r||W;q(re=>re===ae?re:ae),m(re=>re===ne?re:ne),ai(T)||(xe(re=>re&&!1),je(re=>re.length>0?[]:re))},[T,A,rt,n,r]),s.useEffect(()=>{const N=ve.length>0?Di(ve,c.maxCount,c.labels):[];ce(j=>sn(j,N)?j:N)},[ve,c.labels,c.labelsSignature,c.maxCount]),s.useEffect(()=>{ya({currentModel:T,currentSelectionKey:ke(T,A),extraParams:Z,duration:w,size:V})},[T,A,w,V,Z]);const Ge=le.useRef("");s.useEffect(()=>{if(Me)return;const N=JSON.stringify({prompt:i,image:t==null?void 0:t.url,images:o==null?void 0:o.map(W=>W.url),duration:n,model:a,size:r,result:p});if(Ge.current===N)return;Ge.current=N,a&&(qe.current=a,z(a),de(Be(b,a,S))),u(i);let j=[];o&&o.length>0?j=o:t&&(j=[{slot:0,slotLabel:"参考图",url:t.url||"",name:t.name,file:t.file}]),ge(j);const I=Di(j,c.maxCount,c.labels);ce(I),n!==void 0&&q(n.toString()),r&&m(r),O(null)},[i,t,o,n,r,p,c.labels,c.labelsSignature,c.maxCount,Me]),s.useEffect(()=>(O(null),()=>{O(null)}),[]);const Nt=()=>{u(""),ge([]),ce([]),O(null),P("config"),q(se.duration),m(se.size),Je(!1),xe(!1),je([]),ye(Et(T,A||T)),window.dispatchEvent(new CustomEvent("ai-video-clear"))},Ke=le.useCallback((N,j)=>N.map((I,W)=>({slot:W,slotLabel:j[W]||`参考图${W+1}`,url:I.url,name:I.name,file:I.file})),[]),dt=le.useCallback(N=>N.map(j=>({url:j.url,name:j.name,file:j.file})),[]),ze=le.useCallback(N=>{const j=Ke(N,c.labels);ce(j),ge(j)},[c.labels,Ke]),vt=le.useMemo(()=>ts("video",y,Fe),[Fe,y,bt]),Qe=N=>{is("video",N),at(j=>j+1)},Ze=s.useRef("");s.useEffect(()=>{if(!x)return;const N=Number.parseFloat(w),j={prompt:v,images:De.map(ae=>({url:ae.url,name:ae.name})),duration:Number.isFinite(N)?N:void 0,size:V||void 0},I=JSON.stringify(j);if(Ze.current===I)return;const W=window.setTimeout(()=>{Ze.current!==I&&(Ze.current=I,x(j))},200);return()=>{window.clearTimeout(W)}},[w,V,x,v,De]);const lt=N=>{var I,W;if(Je(!0),P("config"),xt(!0),N.params.model){z(N.params.model),de(N.params.modelRef||null);const ae=Re.get();Re.update({...ae,videoModelName:N.params.model})}if((I=N.params.storyboard)!=null&&I.enabled&&((W=N.params.storyboard)!=null&&W.scenes))xe(!0),je(N.params.storyboard.scenes),u("");else{const ae=N.params.prompt||"",ne=Xa(ae);ne&&ne.length>0?(xe(!0),je(ne),u("")):(xe(!1),je([]),u(ae))}if(N.params.seconds!==void 0){const ae=typeof N.params.seconds=="string"?N.params.seconds:N.params.seconds.toString();q(ae)}const j=N.params.params&&typeof N.params.params=="object"?Object.entries(N.params.params).reduce((ae,[ne,re])=>(re!=null&&String(re).trim()&&(ae[ne]=String(re)),ae),{}):{};if(ye(j),N.params.size&&m(N.params.size),N.params.uploadedImages&&N.params.uploadedImages.length>0){ge(N.params.uploadedImages);const ae=N.params.model||T,ne=kt(ae,N.params.modelRef||ae,j),re=ne.imageUpload.maxCount,et=ne.imageUpload.labels||[],We=N.params.uploadedImages.slice(0,re).map((He,yt)=>({...He,slot:yt,slotLabel:et[yt]||`参考图${yt+1}`}));ce(We)}else ge([]),ce([]);O(null)},Gt=async(N=1)=>{if(!K.current){K.current=!0;try{if(he){const j=Ha(ue,parseFloat(w),_e.minSceneDuration);if(!j.valid){O(j.error||"场景配置无效");return}}else if(!v||!v.trim()){O(y==="zh"?"请输入视频描述":"Please enter video description");return}try{const j=[];for(const ne of De)if(ne.file){const re=await new Promise((et,We)=>{const He=new FileReader;He.onload=()=>et(He.result),He.onerror=We,He.readAsDataURL(ne.file)});j.push({...ne,url:re,file:void 0})}else j.push({...ne,file:void 0});const I=he?Ya(ue):(v||"").trim(),W=[],ae=_||`video_batch_${Date.now()}`;for(let ne=0;ne<N;ne++){const re=Object.keys(Z).length>0?Z:void 0,et={prompt:I,model:T,modelRef:A||null,seconds:w,size:V,uploadedImages:j,...he&&{storyboard:{enabled:!0,scenes:ue,totalDuration:parseFloat(w)}},batchId:ae,batchIndex:ne+1,batchTotal:N,autoInsertToCanvas:U??Tt(st.AI_VIDEO_AUTO_INSERT),...re?{params:re}:{}},We=F(et,we.VIDEO);We&&W.push(We.id)}W.length>0?(Se.success(y==="zh"?N>1?`${W.length} 个视频任务已添加到队列,将在后台生成`:"视频任务已添加到队列,将在后台生成":N>1?`${W.length} video tasks added to queue, will be generated in background`:"Video task added to queue, will be generated in background"),Qe(I),u(""),ge([]),ce([]),xe(!1),je([]),O(null),P("tasks"),Je(!1)):O(y==="zh"?"任务创建失败,请检查参数或稍后重试":"Failed to create task, please check parameters or try again later")}catch(j){console.error("Failed to create task:",j);let I=y==="zh"?"任务创建失败,请检查参数或稍后重试":"Failed to create task, please check parameters or try again later";j.message&&(j.message.includes("exceed 5000 characters")?I=y==="zh"?"提示词不能超过 5000 字符":"Prompt must not exceed 5000 characters":j.message.includes("Duplicate submission")?I=y==="zh"?"请勿重复提交,请等待 5 秒后再试":"Duplicate submission. Please wait 5 seconds.":j.message.includes("Invalid parameters")&&(I=y==="zh"?`参数错误: ${j.message.replace("Invalid parameters: ","")}`:j.message)),O(I)}}finally{K.current=!1}}};return Hi(Te,v,Gt),e.jsxDEV("div",{className:"ai-video-generation-container",children:[X?e.jsxDEV("div",{className:"ai-generation-mobile-switcher",role:"tablist",children:[e.jsxDEV("button",{type:"button",className:`ai-generation-mobile-switcher__tab ${L==="config"?"ai-generation-mobile-switcher__tab--active":""}`,onClick:()=>P("config"),children:"生成设置"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1217,columnNumber:11},void 0),e.jsxDEV("button",{type:"button",className:`ai-generation-mobile-switcher__tab ${L==="tasks"?"ai-generation-mobile-switcher__tab--active":""}`,onClick:()=>P("tasks"),children:"生成任务"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1228,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1216,columnNumber:9},void 0):null,e.jsxDEV("div",{className:`main-content ${X?"main-content--mobile-panels":""}`,ref:R,children:[e.jsxDEV("div",{className:`ai-image-generation-section ${X&&L!=="config"?"ai-generation-mobile-panel--hidden":""}`,children:[e.jsxDEV("div",{className:"ai-image-generation-form",children:[f!==void 0&&d&&e.jsxDEV("div",{className:"form-header-row",children:e.jsxDEV("div",{className:"model-selector-wrapper",children:e.jsxDEV(At,{selectedModel:T,selectedSelectionKey:ke(T,A),onSelect:(N,j)=>{const I=N,W=Be(Q,I,j||null);qe.current=null,z(I),de(W),ye(Et(I,W||I)),d(N),h==null||h(W)},onSelectModel:N=>{const j=N.id;qe.current=null,z(j);const I=Be(Q,j,Pe(N));de(I),ye(Et(j,I||j)),d(N.id),h==null||h(I)},language:y,models:Q,placement:"down",variant:"form",placeholder:y==="zh"?"选择视频模型":"Select Video Model",disabled:Te},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1261,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1260,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1259,columnNumber:15},void 0),ee&&e.jsxDEV("div",{className:"model-params-row",children:e.jsxDEV(Ri,{selectedParams:Z,onParamChange:$,compatibleParams:Ve,modelId:T,language:y,disabled:Te,excludeParamIds:["size","duration"]},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1321,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1320,columnNumber:15},void 0),e.jsxDEV(Ka,{model:T,configOverride:k,duration:w,size:V,onDurationChange:q,onSizeChange:m,disabled:Te},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1334,columnNumber:13},void 0),e.jsxDEV(Ai,{images:dt(De),onImagesChange:ze,language:y,disabled:Te,multiple:c.maxCount>1,maxCount:c.maxCount,slotLabels:c.mode==="frames"?c.labels:void 0,label:c.mode==="frames"?y==="zh"?"首尾帧图片 (可选)":"Start/End Frames (Optional)":y==="zh"?"参考图片 (可选)":"Reference Images (Optional)"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1345,columnNumber:13},void 0),Ce&&e.jsxDEV(Qa,{enabled:he,onEnabledChange:xe,totalDuration:parseFloat(w),maxScenes:_e.maxScenes,minSceneDuration:_e.minSceneDuration,scenes:ue,onScenesChange:je,disabled:Te},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1370,columnNumber:15},void 0),!he&&e.jsxDEV(es,{prompt:v,onPromptChange:u,presetPrompts:vt,language:y,type:"video",disabled:Te,onError:O,videoProvider:pe.provider},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1384,columnNumber:15},void 0),e.jsxDEV(Ji,{error:M},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1396,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1256,columnNumber:11},void 0),e.jsxDEV(Xi,{language:y,type:"video",isGenerating:Te,hasGenerated:!1,canGenerate:he?ue.length>0:!!(v&&v.trim()),onGenerate:Gt,onReset:Nt,leftContent:e.jsxDEV(rs,{storageKey:st.AI_VIDEO_AUTO_INSERT,language:y},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1412,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1399,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1249,columnNumber:9},void 0),X?null:e.jsxDEV(os,{isRightPanelVisible:E,onToggleRightPanel:ot,onWidthChange:nt,rightPanelWidth:l,language:y,storageKey:"video"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1421,columnNumber:11},void 0),(X||E)&&e.jsxDEV("div",{className:`task-sidebar ${X?"task-sidebar--mobile-panel":""} ${X&&L!=="tasks"?"ai-generation-mobile-panel--hidden":""}`,style:X?void 0:{width:l,flexShrink:0},children:e.jsxDEV(ds,{taskType:we.VIDEO,onEditTask:lt},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1447,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1433,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1242,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1214,columnNumber:5},void 0)},nn=s.lazy(()=>Ot(()=>import("./batch-image-generation-D-i-Clb3.js"),__vite__mapDeps([0,1]),import.meta.url)),on=({container:i})=>{const{appState:t,openDialog:o,closeDialog:n}=ht(),{language:a}=Xe(),r=Mt(),{isMobile:p,isTablet:f}=Lt(),S=t.dialogInitialDataByType,d=(S==null?void 0:S[Ne.aiImageGeneration])??null,h=(S==null?void 0:S[Ne.aiVideoGeneration])??null,_=!p&&!f,U=s.useRef(!1),x=s.useRef(null),[b,v]=s.useState(""),[u,M]=s.useState(null),[O,E]=s.useState(""),[B,l]=s.useState(null),C=s.useRef(null),L=s.useRef(null),P=s.useCallback(()=>{const k=$e("image"),se=$e("video"),be=k.modelId||"gemini-3-pro-image-preview-vip",Ee=Ue(k.profileId,be),c=se.modelId||"veo3",g=Ue(se.profileId,c);v(q=>q===be?q:be),M(q=>ke(be,q)===ke(be,Ee)?q:Ee),E(q=>q===c?q:c),l(q=>ke(c,q)===ke(c,g)?q:g)},[]);s.useEffect(()=>{P()},[P]),s.useEffect(()=>{const k=()=>{P()};return Re.addListener(k),ni.addListener(k),()=>{Re.removeListener(k),ni.removeListener(k)}},[P]);const R=k=>{v(k)},Y=k=>{E(k)},X=k=>{M(k)},ie=k=>{l(k)};s.useEffect(()=>{if(!b)return;const k=ke(b,u);C.current!==k&&(C.current=k,oi("image",Ue(u==null?void 0:u.profileId,b)))},[b,u]),s.useEffect(()=>{if(!O)return;const k=ke(O,B);L.current!==k&&(L.current=k,oi("video",Ue(B==null?void 0:B.profileId,O)))},[O,B]);const[G,oe]=s.useState({initialPrompt:"",initialImages:[],selectedElementIds:[]}),[J,fe]=s.useState({initialPrompt:"",initialImage:void 0}),[T,z]=s.useState(!1),[A,de]=s.useState(()=>{try{return localStorage.getItem(Dt)==="batch"?"batch":"single"}catch{return"single"}});s.useEffect(()=>{!_&&A==="batch"&&de("single")},[_,A]);const H=s.useCallback(k=>{de(k),k==="batch"&&(z(!0),setTimeout(()=>z(!1),50));try{localStorage.setItem(Dt,k)}catch(se){console.warn("Failed to save image mode:",se)}},[]);s.useEffect(()=>{if(t.openDialogTypes.has(Ne.aiImageGeneration)){if(G.initialImages&&G.initialImages.length>0||G.initialPrompt&&G.initialPrompt.trim()!==""){z(!1);return}try{localStorage.getItem(Dt)==="batch"&&(z(!0),setTimeout(()=>z(!1),50))}catch{z(!1)}}},[t.openDialogTypes,G.initialImages,G.initialPrompt]);const me=s.useRef(!1),Q=s.useRef(d),Z=s.useRef(!1),ye=s.useRef(h);s.useEffect(()=>{if(!r)return;const k=t.openDialogTypes.has(Ne.aiImageGeneration),se=k&&!me.current,be=Q.current!==d;if(me.current=k,Q.current=d,!k||!se&&!be||U.current)return;(async()=>{U.current=!0,x.current&&clearTimeout(x.current),x.current=setTimeout(()=>{console.warn("Processing timeout, resetting processing state"),U.current=!1},1e4);try{if(d){oe({initialPrompt:d.initialPrompt||d.prompt||"",initialImages:d.initialImages||d.uploadedImages||[],selectedElementIds:[],initialResultUrl:d.initialResultUrl||d.resultUrl,initialAspectRatio:d.initialAspectRatio,targetFrameId:d.targetFrameId,targetFrameDimensions:d.targetFrameDimensions}),d.initialModel&&v(d.initialModel),d.initialModelRef!==void 0&&M(d.initialModelRef);return}const c=t.lastSelectedElementIds||[];let g,q,D;const m=wa(r);if(m.length===1&&ja(m[0])){const ee=m[0],$=Ut.getRectangleByPoints(ee.points);g=ka($.width,$.height),q=ee.id,D={width:$.width,height:$.height}}const w=await ci(r,c),V=[];w.remainingImages.forEach(ee=>{V.push({url:ee.url,name:ee.name||`selected-image-${Date.now()}.png`})}),w.graphicsImage&&V.push({url:w.graphicsImage,name:`graphics-combined-${Date.now()}.png`}),oe({initialPrompt:w.remainingText||"",initialImages:V,selectedElementIds:c,initialAspectRatio:g,targetFrameId:q,targetFrameDimensions:D})}catch(c){console.warn("Error processing selected content for AI:",c);const g=ui(r),q=g.images.map(D=>({url:D.url,name:D.name||`selected-image-${Date.now()}.png`}));oe({initialPrompt:g.text||"",initialImages:q,selectedElementIds:[]})}finally{U.current=!1,x.current&&(clearTimeout(x.current),x.current=null)}})()},[t.lastSelectedElementIds,t.openDialogTypes,r,d]),s.useEffect(()=>{if(!r)return;const k=t.openDialogTypes.has(Ne.aiVideoGeneration),se=k&&!Z.current,be=ye.current!==h;if(Z.current=k,ye.current=h,!k||!se&&!be||U.current)return;(async()=>{U.current=!0,x.current&&clearTimeout(x.current),x.current=setTimeout(()=>{console.warn("Video processing timeout, resetting processing state"),U.current=!1},1e4);try{if(h){fe({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 D=h.initialModel||h.model;D&&E(D),h.initialModelRef!==void 0&&l(h.initialModelRef);return}const c=t.lastSelectedElementIds||[],g=await ci(r,c),q=[];g.remainingImages.length>0?g.remainingImages.forEach((D,m)=>{q.push({url:D.url,name:D.name||`selected-image-${m+1}-${Date.now()}.png`})}):g.graphicsImage&&q.push({url:g.graphicsImage,name:`graphics-combined-${Date.now()}.png`}),fe({initialPrompt:g.remainingText||"",initialImage:q.length>0?q[0]:void 0,initialImages:q.map((D,m)=>({slot:m,slotLabel:`参考图${m+1}`,url:D.url,name:D.name}))})}catch(c){console.warn("Error processing selected content for AI video:",c);const g=ui(r),q=g.images.map((D,m)=>({url:D.url,name:D.name||`selected-image-${m+1}-${Date.now()}.png`}));fe({initialPrompt:g.text||"",initialImage:q.length>0?q[0]:void 0,initialImages:q.map((D,m)=>({slot:m,slotLabel:`参考图${m+1}`,url:D.url,name:D.name}))})}finally{U.current=!1,x.current&&(clearTimeout(x.current),x.current=null)}})()},[t.lastSelectedElementIds,t.openDialogTypes,r,h]),s.useEffect(()=>{t.openDialogTypes.size===0&&(U.current=!1,me.current=!1,Q.current=null,Z.current=!1,ye.current=null,x.current&&(clearTimeout(x.current),x.current=null))},[t.openDialogTypes]);const Ve=s.useCallback(()=>{const k=localStorage.getItem(ri);if(k)try{const se=JSON.parse(k);se.timestamp=Date.now(),localStorage.setItem(ri,JSON.stringify(se))}catch(se){console.warn("Failed to update cache timestamp:",se)}n(Ne.aiImageGeneration)},[n]),pe=s.useCallback(()=>{const k=localStorage.getItem(di);if(k)try{const se=JSON.parse(k);se.timestamp=Date.now(),localStorage.setItem(di,JSON.stringify(se))}catch(se){console.warn("Failed to update cache timestamp:",se)}n(Ne.aiVideoGeneration)},[n]);return e.jsxDEV(e.Fragment,{children:[e.jsxDEV(Ct,{open:t.openDialogTypes.has(Ne.mermaidToDrawnix),onOpenChange:k=>{k?o(Ne.mermaidToDrawnix):n(Ne.mermaidToDrawnix)},children:e.jsxDEV(qt,{className:"Dialog ttd-dialog",container:i,children:e.jsxDEV(Ma,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:647,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:646,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:636,columnNumber:7},void 0),e.jsxDEV(Ct,{open:t.openDialogTypes.has(Ne.markdownToDrawnix),onOpenChange:k=>{k?o(Ne.markdownToDrawnix):n(Ne.markdownToDrawnix)},children:e.jsxDEV(qt,{className:"Dialog ttd-dialog",container:i,children:e.jsxDEV(Oa,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:661,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:660,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:650,columnNumber:7},void 0),e.jsxDEV(li,{id:"ai-image-dialog",visible:t.openDialogTypes.has(Ne.aiImageGeneration),title:A==="batch"?a==="zh"?"批量出图":"Batch Generation":a==="zh"?"AI 图片生成":"AI Image Generation",headerContent:_?e.jsxDEV("div",{className:"image-generation-mode-tabs",onMouseDown:k=>k.stopPropagation(),onTouchStart:k=>k.stopPropagation(),onPointerDown:k=>k.stopPropagation(),children:[e.jsxDEV("button",{type:"button",className:`mode-tab ${A==="single"?"active":""}`,onClick:k=>{k.stopPropagation(),k.preventDefault(),H("single")},children:a==="zh"?"AI 图片生成":"AI Image"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:685,columnNumber:15},void 0),e.jsxDEV("button",{type:"button",className:`mode-tab ${A==="batch"?"active":""}`,onClick:k=>{k.stopPropagation(),k.preventDefault(),H("batch")},children:a==="zh"?"批量出图":"Batch"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:698,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:679,columnNumber:13},void 0):void 0,onClose:Ve,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:i,autoMaximize:T||p,children:t.openDialogTypes.has(Ne.aiImageGeneration)&&(A==="batch"?e.jsxDEV(s.Suspense,{fallback:e.jsxDEV("div",{className:"loading-fallback",children:a==="zh"?"加载中...":"Loading..."},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:731,columnNumber:17},void 0),children:e.jsxDEV(nn,{onSwitchToSingle:()=>H("single"),selectedModel:b,selectedModelRef:u,onModelChange:R,onModelRefChange:X},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:736,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:729,columnNumber:13},void 0):e.jsxDEV(tn,{initialPrompt:G.initialPrompt,initialImages:G.initialImages,selectedElementIds:G.selectedElementIds,initialWidth:(d==null?void 0:d.initialWidth)||(d==null?void 0:d.width),initialHeight:(d==null?void 0:d.initialHeight)||(d==null?void 0:d.height),initialResultUrl:G.initialResultUrl,initialAspectRatio:G.initialAspectRatio,targetFrameId:G.targetFrameId,targetFrameDimensions:G.targetFrameDimensions,selectedModel:b,selectedModelRef:u,onModelChange:R,onModelRefChange:X,externalBatchId:d==null?void 0:d.batchId,initialAutoInsertToCanvas:d==null?void 0:d.autoInsertToCanvas,onDraftChange:d==null?void 0:d.onDraftChange},(d==null?void 0:d.batchId)||"ai-image-dialog",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:745,columnNumber:13},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:665,columnNumber:7},void 0),e.jsxDEV(li,{id:"ai-video-dialog",visible:t.openDialogTypes.has(Ne.aiVideoGeneration),title:a==="zh"?"AI 视频生成":"AI Video Generation",onClose:pe,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:i,autoMaximize:p,children:t.openDialogTypes.has(Ne.aiVideoGeneration)&&e.jsxDEV(an,{initialPrompt:J.initialPrompt,initialImage:J.initialImage,initialImages:J.initialImages,initialDuration:J.initialDuration,initialModel:J.initialModel,initialSize:J.initialSize,initialResultUrl:J.initialResultUrl,selectedModel:O,selectedModelRef:B,onModelChange:Y,onModelRefChange:ie,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:791,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:773,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:635,columnNumber:5},void 0)},Dn=s.memo(on,(i,t)=>i.container===t.container);export{Dn as TTDDialog};
|