aitu-app 0.6.76 → 0.6.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/assets/CanvasAudioPlayer-DutgwdiU.js +2 -0
- package/assets/ChatDrawer-E6Fog16I.js +11 -0
- package/assets/{ChatMessagesArea-CZkiRzmW.js → ChatMessagesArea-Bgwiz_XP.js} +3 -3
- package/assets/DeferredAIInputBar-CPkD8Cv9.js +8 -0
- package/assets/DeferredAIInputBar-szBPHiNW.css +1 -0
- package/assets/DrawnixDeferredFeatures-Cul76-88.js +2 -0
- package/assets/{KnowledgeBaseContent-Dan2DUqY.js → KnowledgeBaseContent-DcX5Jofx.js} +6 -6
- package/assets/{MVCreator-Dzjl2fXA.js → MVCreator-DllHozYg.js} +8 -8
- package/assets/{ModelBenchmarkWorkbench-oy2wue1u.js → ModelBenchmarkWorkbench-Dv9SNYTi.js} +2 -2
- package/assets/MusicAnalyzer-CHcQ5t4P.js +1 -0
- package/assets/{MusicAnalyzer-BO44f-db.js → MusicAnalyzer-DDeT6g3c.js} +2 -2
- package/assets/ResizableDivider-CaG9JQbJ.js +1 -0
- package/assets/TaskQueuePanel-BNhNzGp5.js +1 -0
- package/assets/{VideoAnalyzer-iiJpoWb6.js → VideoAnalyzer-BSLz1FaI.js} +2 -2
- package/assets/ai-generation-preferences-service-BF7QkuJp.js +1 -0
- package/assets/arc-BU2KKCa_.js +1 -0
- package/assets/arc-DmGoDCEL.js +1 -0
- package/assets/{batch-image-generation-B2R0hJW_.js → batch-image-generation-Bg68r_Ql.js} +5 -5
- package/assets/{blockDiagram-38ab4fdb-BmWPnNuS.js → blockDiagram-38ab4fdb-BCGEnMME.js} +1 -1
- package/assets/{blockDiagram-38ab4fdb-trArAOFP.js → blockDiagram-38ab4fdb-CsZR5uC5.js} +1 -1
- package/assets/board-utils-CpAtoKn2.js +1 -0
- package/assets/{browser-Dya3c6_X.js → browser-DpICcNby.js} +1 -1
- package/assets/{c4Diagram-3d4e48cf-Cvj3RMOv.js → c4Diagram-3d4e48cf-9fuiuFdV.js} +1 -1
- package/assets/{c4Diagram-3d4e48cf-CqJrO4Za.js → c4Diagram-3d4e48cf-WM4wd_GR.js} +1 -1
- package/assets/{canvas-insertion-Dq3gR9Nw.js → canvas-insertion-CdUQF7IV.js} +3 -3
- package/assets/channel-CZjE-WNp.js +1 -0
- package/assets/channel-SXZD6bG3.js +1 -0
- package/assets/classDiagram-70f12bd4-CBVHTwQu.js +2 -0
- package/assets/{classDiagram-70f12bd4-DvrRZ41d.js → classDiagram-70f12bd4-DcYDedz1.js} +2 -2
- package/assets/classDiagram-v2-f2320105-CsxWGkSy.js +2 -0
- package/assets/classDiagram-v2-f2320105-jpCwaHEd.js +2 -0
- package/assets/{clipper-B4i11tN1.js → clipper-jvd5rF5a.js} +1 -1
- package/assets/clone-C4mvvMDb.js +1 -0
- package/assets/{createText-2e5e7dd3-D7dXlVes.js → createText-2e5e7dd3-CkXS3l7I.js} +2 -2
- package/assets/{createText-2e5e7dd3-B8gnT5hD.js → createText-2e5e7dd3-x5lOIwut.js} +1 -1
- package/assets/edges-e0da2a9e-CbrF4nbD.js +4 -0
- package/assets/{edges-e0da2a9e-CyRAzEMi.js → edges-e0da2a9e-Ch6PBwWs.js} +2 -2
- package/assets/{erDiagram-9861fffd-D8yYsjoN.js → erDiagram-9861fffd-Bq07elcI.js} +3 -3
- package/assets/{erDiagram-9861fffd-BHbAa_Ka.js → erDiagram-9861fffd-DSlNVuAZ.js} +4 -4
- package/assets/{flowDb-956e92f1-DAqb8wjP.js → flowDb-956e92f1-BqPCJlZp.js} +3 -3
- package/assets/{flowDb-956e92f1-f30uG4pp.js → flowDb-956e92f1-Ti5YC4Vv.js} +3 -3
- package/assets/{flowDiagram-66a62f08-C4Gz9mOM.js → flowDiagram-66a62f08-CPDuG3rY.js} +3 -3
- package/assets/{flowDiagram-66a62f08-CBXypoEi.js → flowDiagram-66a62f08-D3GSABFi.js} +1 -1
- package/assets/flowDiagram-v2-96b9c2cf-BCcJ-cre.js +1 -0
- package/assets/flowDiagram-v2-96b9c2cf-DCVaFEgV.js +1 -0
- package/assets/{flowchart-elk-definition-4a651766-CSm5diF6.js → flowchart-elk-definition-4a651766-BH09NeLA.js} +1 -1
- package/assets/{flowchart-elk-definition-4a651766-BHB7pRxm.js → flowchart-elk-definition-4a651766-BLaLPCDV.js} +1 -1
- package/assets/{ganttDiagram-c361ad54-CU9a9DsJ.js → ganttDiagram-c361ad54-DL9ZeaEc.js} +4 -4
- package/assets/ganttDiagram-c361ad54-Sp9M1KHP.js +257 -0
- package/assets/{gitGraphDiagram-72cf32ee-B2zj8Xnu.js → gitGraphDiagram-72cf32ee-BSf1fsDV.js} +1 -1
- package/assets/{gitGraphDiagram-72cf32ee-BWOgrFeh.js → gitGraphDiagram-72cf32ee-BWwmRKo-.js} +1 -1
- package/assets/{graph-Bnmq4jgf.js → graph--nPw8zXQ.js} +1 -1
- package/assets/graph-g-2U7grQ.js +1 -0
- package/assets/{index-3862675e-CQLKy6RO.js → index-3862675e-BXwbZ2pz.js} +1 -1
- package/assets/{index-3862675e-BSxxidV_.js → index-3862675e-D6Zy95zZ.js} +1 -1
- package/assets/index-3eqA7Bag.js +1 -0
- package/assets/{index-D1ORCZqJ.js → index-7Q-aiwln.js} +2 -2
- package/assets/index-B2dttXd7.js +1 -0
- package/assets/index-B7V7-Vxz.js +1 -0
- package/assets/index-BHPTfCZM.js +1 -0
- package/assets/{index-vvV37Q1S.js → index-BP77pG9S.js} +4 -4
- package/assets/index-BPR_DyGD.js +1 -0
- package/assets/index-BWrcsh8u.js +1 -0
- package/assets/{index-D4qm_1m5.js → index-BXzGHPXz.js} +1 -1
- package/assets/index-BaCHOxhI.js +1 -0
- package/assets/{index-BoglETHF.js → index-Bq8mPedC.js} +2 -2
- package/assets/index-BqHZCcen.js +2 -0
- package/assets/index-Bti3m-iW.js +1 -0
- package/assets/{index-sPNG1_UN.js → index-BwSnJN93.js} +5 -5
- package/assets/{index-D5qxbeGT.js → index-C3qD42ws.js} +1 -1
- package/assets/{index-VzDb_AHs.js → index-C5eu4uSl.js} +5 -5
- package/assets/index-CLJUfzvO.js +1 -0
- package/assets/index-CfgvFFx3.js +271 -0
- package/assets/index-CmyOpFTN.js +1 -0
- package/assets/index-D4pIkh3S.js +1 -0
- package/assets/index-D7b5fX1d.js +1 -0
- package/assets/index-DH12_HTj.js +13 -0
- package/assets/index-DI0OV6F8.js +7 -0
- package/assets/index-DIiIUyb-.js +1 -0
- package/assets/index-DcZrElEK.js +2 -0
- package/assets/index-DllL1sx1.js +1 -0
- package/assets/index-DqMndQiP.js +1 -0
- package/assets/index-Dz8sghkK.js +1 -0
- package/assets/index-QkP3EC02.js +1 -0
- package/assets/index-TkfyNewx.js +1 -0
- package/assets/index-ZrVeQUWo.js +1 -0
- package/assets/index-eZfwJ9bV.js +3 -0
- package/assets/{index-VarwiJlL.js → index-gQ7LgvSv.js} +1 -1
- package/assets/{infoDiagram-f8f76790-d-BYTW2w.js → infoDiagram-f8f76790-DpFqCCNv.js} +3 -3
- package/assets/{infoDiagram-f8f76790-BMsVq8O_.js → infoDiagram-f8f76790-G2JpJJP7.js} +3 -3
- package/assets/{journeyDiagram-49397b02-DCtCkoaC.js → journeyDiagram-49397b02-BdESGMrv.js} +1 -1
- package/assets/{journeyDiagram-49397b02-CBqb8-ml.js → journeyDiagram-49397b02-DLLTobRM.js} +1 -1
- package/assets/{layout-DKqEkE_W.js → layout-CVkuImk4.js} +1 -1
- package/assets/layout-WSR0vNPO.js +1 -0
- package/assets/line-D3bnG227.js +1 -0
- package/assets/line-DQuMJveY.js +1 -0
- package/assets/{linear-C6OQYT56.js → linear-CciP-97N.js} +1 -1
- package/assets/linear-Z6vFvuwc.js +1 -0
- package/assets/{main-i0s2IJTn.css → main-8DNjLY6L.css} +1 -1
- package/assets/main-BFEkxCOK.js +56 -0
- package/assets/{mermaid.core-CI-VJEiw.js → mermaid.core-CwZQb0ud.js} +5 -5
- package/assets/{mindmap-definition-fc14e90a-k_RSypuP.js → mindmap-definition-fc14e90a-BnJ8OOTI.js} +1 -1
- package/assets/{mindmap-definition-fc14e90a-DrtlQLES.js → mindmap-definition-fc14e90a-CxQMydCW.js} +1 -1
- package/assets/model-benchmark-launcher-Ct3lYXVq.js +1 -0
- package/assets/photo-wall-splitter-BZ88W5Zy.js +1 -0
- package/assets/{pieDiagram-8a3498a8-CdknGxKY.js → pieDiagram-8a3498a8-BSDdkTeu.js} +5 -5
- package/assets/{pieDiagram-8a3498a8-Bpr5V3o5.js → pieDiagram-8a3498a8-D6VtAoja.js} +4 -4
- package/assets/ppt-generation-FzjP_rp0.js +48 -0
- package/assets/{quadrantDiagram-120e2f19-Dx3qoKDx.js → quadrantDiagram-120e2f19-BbFV0VXY.js} +3 -3
- package/assets/{quadrantDiagram-120e2f19-pVIXp9i6.js → quadrantDiagram-120e2f19-C8k2xuBd.js} +3 -3
- package/assets/{requirementDiagram-deff3bca-hM4oekUG.js → requirementDiagram-deff3bca-C3xMdzJV.js} +1 -1
- package/assets/{requirementDiagram-deff3bca-DD6NY75P.js → requirementDiagram-deff3bca-CpjqKjYZ.js} +1 -1
- package/assets/{sankeyDiagram-04a897e0-BsvEG71N.js → sankeyDiagram-04a897e0-BBJJgsFv.js} +5 -5
- package/assets/{sankeyDiagram-04a897e0-C9uf1jU5.js → sankeyDiagram-04a897e0-Bjvig9bW.js} +4 -4
- package/assets/{sequenceDiagram-704730f1-CNEBmz1G.js → sequenceDiagram-704730f1-DX1MmBN_.js} +4 -4
- package/assets/{sequenceDiagram-704730f1-Bpg54z74.js → sequenceDiagram-704730f1-PFC_9IFI.js} +4 -4
- package/assets/settings-dialog-CQM4v791.js +1 -0
- package/assets/{skill-dsl-parser-DS3VOBFI.js → skill-dsl-parser-syNWYxFu.js} +10 -10
- package/assets/{stateDiagram-587899a1-BN2ZP-3x.js → stateDiagram-587899a1-Dc3mI_B_.js} +1 -1
- package/assets/stateDiagram-587899a1-SFMUVAam.js +1 -0
- package/assets/{stateDiagram-v2-d93cdb3a-BtV1Ziy9.js → stateDiagram-v2-d93cdb3a-DmnBjHpC.js} +1 -1
- package/assets/{stateDiagram-v2-d93cdb3a-BLwIM8s1.js → stateDiagram-v2-d93cdb3a-P4Yt2p_j.js} +1 -1
- package/assets/{styles-6aaf32cf-aFVlX_lA.js → styles-6aaf32cf-C3jnr3hV.js} +1 -1
- package/assets/{styles-6aaf32cf-CGp3i5qu.js → styles-6aaf32cf-b6AdP7fu.js} +1 -1
- package/assets/{styles-9a916d00-BK7pejCH.js → styles-9a916d00-BUiD9iBe.js} +4 -4
- package/assets/{styles-9a916d00-CSwFWVnr.js → styles-9a916d00-ii0XTdIm.js} +1 -1
- package/assets/styles-c10674c1-Bt89Yy8Q.js +116 -0
- package/assets/styles-c10674c1-DbTSpy3W.js +116 -0
- package/assets/{svgDrawCommon-08f97a94-Cr4rWU-W.js → svgDrawCommon-08f97a94-BK6lD4D6.js} +1 -1
- package/assets/{svgDrawCommon-08f97a94-DypvMDvH.js → svgDrawCommon-08f97a94-D4gIV05W.js} +1 -1
- package/assets/{timeline-definition-85554ec2-D3-lXEL5.js → timeline-definition-85554ec2-Bl2y548G.js} +1 -1
- package/assets/{timeline-definition-85554ec2-DIwHE15c.js → timeline-definition-85554ec2-CWKg_JxG.js} +3 -3
- package/assets/{tool-windows-B-a9r3G3.css → tool-windows-CUNbW1Tz.css} +1 -1
- package/assets/tool-windows-DOIu9TAD.js +2975 -0
- package/assets/ttd-dialog-DI4kQSg8.js +99 -0
- package/assets/{useCharacters-DsZ779l-.js → useCharacters-Chv4Ky7x.js} +3 -3
- package/assets/useWorkflowSubmission-BizuDmuw.js +70 -0
- package/assets/video-analyze-6v3Y-rUE.js +1 -0
- package/assets/{video-generation-C7qCz-ZF.js → video-generation-DnmTlWnm.js} +2 -2
- package/assets/video-recovery-service-BeRoh0s2.js +1 -0
- package/assets/workflow-generation-utils-me381Cax.js +3 -0
- package/assets/workflow-submission-service-YOpo7g37.js +4 -0
- package/assets/{xychartDiagram-e933f94c-B17Evxfw.js → xychartDiagram-e933f94c-CJX9_9WF.js} +4 -4
- package/assets/{xychartDiagram-e933f94c-Dln5PJtU.js → xychartDiagram-e933f94c-Cep8CQEH.js} +3 -3
- package/changelog.json +50 -0
- package/idle-prefetch-manifest.json +300 -316
- package/manifest.json +3 -3
- package/package.json +1 -1
- package/precache-manifest.json +8 -8
- package/sw.js +5 -5
- package/version.json +19 -3
- package/assets/CanvasAudioPlayer-DwM6PU4W.js +0 -2
- package/assets/ChatDrawer-BQTaa6r6.js +0 -11
- package/assets/DeferredAIInputBar-BmPgFhXr.css +0 -1
- package/assets/DeferredAIInputBar-ObyfJQ0O.js +0 -7
- package/assets/DrawnixDeferredFeatures-CFHVLxc5.js +0 -2
- package/assets/ModelDropdown-CQTTHEI7.css +0 -1
- package/assets/ModelDropdown-DjvIvi8O.js +0 -1
- package/assets/MusicAnalyzer-BU5l2wPR.js +0 -1
- package/assets/ResizableDivider-CBgTphcS.js +0 -1
- package/assets/TaskQueuePanel-CTDuSScf.js +0 -1
- package/assets/ai-generation-preferences-service-CqwXb9Cs.js +0 -5
- package/assets/arc-BBE0LXa1.js +0 -1
- package/assets/arc-h476db6P.js +0 -1
- package/assets/channel-DMTz1UNN.js +0 -1
- package/assets/channel-DQOY3XLe.js +0 -1
- package/assets/classDiagram-70f12bd4-5ACx619h.js +0 -2
- package/assets/classDiagram-v2-f2320105-4zQ4jrwi.js +0 -2
- package/assets/classDiagram-v2-f2320105-CB4rof84.js +0 -2
- package/assets/clone-fuaXEdc-.js +0 -1
- package/assets/edges-e0da2a9e-DZalSm7f.js +0 -4
- package/assets/flowDiagram-v2-96b9c2cf-C-DFFh54.js +0 -1
- package/assets/flowDiagram-v2-96b9c2cf-CWjydvHB.js +0 -1
- package/assets/ganttDiagram-c361ad54-DDnbMkWm.js +0 -257
- package/assets/graph-BsYIlc-B.js +0 -1
- package/assets/index-B10kMZoq.js +0 -1
- package/assets/index-B2_XRj3U.js +0 -1
- package/assets/index-B4lLv-Sz.js +0 -1
- package/assets/index-BFZNUUCR.js +0 -1
- package/assets/index-BTSYG2Vy.js +0 -1
- package/assets/index-BY5Kvjqg.js +0 -1
- package/assets/index-Blf7J5yW.js +0 -1
- package/assets/index-BoQA7VaE.js +0 -3
- package/assets/index-BzqQ69oU.js +0 -1
- package/assets/index-CD2D1BYc.js +0 -2
- package/assets/index-CLRs5cWt.js +0 -1
- package/assets/index-CLU4LJjR.js +0 -1
- package/assets/index-CPDfMZkS.js +0 -1
- package/assets/index-CPfhqyDz.js +0 -316
- package/assets/index-CU4ySaQE.js +0 -1
- package/assets/index-CsCwwmYY.js +0 -1
- package/assets/index-Cyz_w8KS.js +0 -7
- package/assets/index-D489cJtb.js +0 -1
- package/assets/index-D6DebbcI.js +0 -1
- package/assets/index-DDtPG6Km.js +0 -1
- package/assets/index-DKhTnUBU.js +0 -1
- package/assets/index-DMIwLDS8.js +0 -13
- package/assets/index-DgsUJgRJ.js +0 -1
- package/assets/index-oT8mbA3U.js +0 -2
- package/assets/layout-B1ePJO5V.js +0 -1
- package/assets/line-C_jmJ6v1.js +0 -1
- package/assets/line-DfhCgsyz.js +0 -1
- package/assets/linear-ChY5Iu43.js +0 -1
- package/assets/main-LCg1nQGB.js +0 -69
- package/assets/model-benchmark-launcher-B2MsZXmV.js +0 -1
- package/assets/model-benchmark-service-CkIRp-Sq.js +0 -1
- package/assets/model-selection-BvdXmVGX.js +0 -1
- package/assets/photo-wall-splitter-CVrfkWnh.js +0 -1
- package/assets/prompt-optimize-dialog-DLdL2_a1.css +0 -1
- package/assets/settings-dialog-CAhU3cfG.js +0 -1
- package/assets/stateDiagram-587899a1-CMylUAYu.js +0 -1
- package/assets/styles-c10674c1-KfJINP7I.js +0 -116
- package/assets/styles-c10674c1-cccyjRUz.js +0 -116
- package/assets/tool-windows-CtLXQDGF.js +0 -2847
- package/assets/ttd-dialog-BRg3XE5k.js +0 -99
- package/assets/use-runtime-models-BH9r4Yc1.js +0 -1
- package/assets/use-runtime-models-BgWWl4Ng.css +0 -1
- package/assets/useWorkflowSubmission-BeJQ3BuO.js +0 -70
- package/assets/video-analyze-aDVIfgUi.js +0 -1
- package/assets/video-recovery-service-Dy0xiPr8.js +0 -1
- package/assets/workflow-generation-utils-CpMilOwA.js +0 -3
- package/assets/workflow-submission-service-CmBBMIis.js +0 -4
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./tool-windows-CUNbW1Tz.css","./batch-image-generation-BePygpHd.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{ai as e,cl as Tt,hk as Fs,hl as Bs,aj as t,hm as _t,hn as Gs,ho as Ws,hp as Ks,hq as Hs,hr as Pt,ah as ft,bk as at,ak as Dt,hs as rs,N as ds,ef as ls,R as kt,ht as Ys,ee as us,s as cs,cc as he,aO as Ke,fQ as Xs,ao as ut,bW as Js,cb as Qs,cZ as ms,d1 as ht,h3 as Zs,hu as ea,aw as ta,hc as sa,gU as aa,cY as ia,hv as na,dY as oa,hw as Mt,bL as fs,aQ as ra,aP as ps,bK as da,fM as la,bI as ua,eD as ca,hx as ma,hy as fa,bS as Rt,W as pa,bz as ze,aU as qe,T as ke,b_ as ga,aM as ha,aN as ba,bY as At,c6 as xa,d as Na,e as wa,ca as ya,bA as va,bl as gs,br as We,bs as Re,bt as _e,bu as ct,bv as Te,bx as Ee,bo as It,hz as hs,bm as bs,aH as xe,cW as ka,dh as st,q as Pe,hA as xs,bH as Ns,cB as tt,bw as Ea,dm as Et,di as ja,bB as Da,bC as Ia,dk as bt,dj as ws,hB as Lt,hC as Sa,hD as zt,dN as Ot,hE as $t,hF as xt,hG as Ft,hH as Bt,dA as Gt,dB as Wt,dQ as Kt,h9 as Va,Q as Ua,hd as Ht,hI as Yt}from"./tool-windows-DOIu9TAD.js";import{W as Ca,w as qa,B as Ta,c as St,d as _a}from"./main-BFEkxCOK.js";import{u as Vt,r as Pa,e as Xt,f as Ma,g as ys,P as vs,h as Nt,b as Jt,i as ks,j as Qt,k as Ra}from"./ai-generation-preferences-service-BF7QkuJp.js";import{u as Es,C as Aa,V as La,a as za}from"./useCharacters-Chv4Ky7x.js";/* empty css */import{R as js}from"./ResizableDivider-CaG9JQbJ.js";const Ds=({children:a})=>e.jsxDEV("div",{className:"ttd-dialog-panels",children:a},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-panels.tsx",lineNumber:4,columnNumber:10},void 0),mt=({label:a,children:s,panelAction:i,panelActionDisabled:o=!1,onTextSubmitInProgress:n,renderTopRight:d,renderSubmitShortcut:h,renderBottomRight:E})=>e.jsxDEV("div",{className:"ttd-dialog-panel",children:[e.jsxDEV("div",{className:"ttd-dialog-panel__header",children:[e.jsxDEV("label",{children:a},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-panel.tsx",lineNumber:32,columnNumber:9},void 0),d==null?void 0:d()]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-panel.tsx",lineNumber:31,columnNumber:7},void 0),s,e.jsxDEV("div",{className:Tt("ttd-dialog-panel-button-container",{invisible:!i}),style:{display:"flex",alignItems:"center"},children:[e.jsxDEV("button",{className:"ttd-dialog-panel-button drawnix-button ","data-track":"ttd_click_panel_action",onClick:i&&i.action,disabled:o||n,children:e.jsxDEV("div",{className:Tt({invisible:n}),children:[i==null?void 0:i.label,(i==null?void 0:i.icon)&&e.jsxDEV("span",{children:i.icon},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-panel.tsx",lineNumber:51,columnNumber:35},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-panel.tsx",lineNumber:49,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-panel.tsx",lineNumber:43,columnNumber:9},void 0),!o&&!n&&(h==null?void 0:h()),E==null?void 0:E()]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-panel.tsx",lineNumber:37,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-panel.tsx",lineNumber:30,columnNumber:5},void 0),Zt={CTRL_OR_CMD:Fs||Bs?"metaKey":"ctrlKey",ENTER:"Enter"},Is=({input:a,placeholder:s,onChange:i,onKeyboardSubmit:o})=>{const n=t.useRef(null),d=t.useRef(o);return d.current=o,t.useEffect(()=>{if(!d.current)return;const h=n.current;if(h){const E=U=>{var r;U[Zt.CTRL_OR_CMD]&&U.key===Zt.ENTER&&(U.preventDefault(),(r=d.current)==null||r.call(d))};return h.addEventListener(_t.KEYDOWN,E),()=>{h.removeEventListener(_t.KEYDOWN,E)}}},[]),e.jsxDEV("textarea",{className:"ttd-dialog-input",onChange:i,value:a,placeholder:s,autoFocus:!0,ref:n},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-input.tsx",lineNumber:45,columnNumber:5},void 0)},Oa=({error:a})=>e.jsxDEV("div",{"data-testid":"ttd-dialog-output-error",className:"ttd-dialog-output-error",children:["Error! ",e.jsxDEV("p",{children:a},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-output.tsx",lineNumber:14,columnNumber:14},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-output.tsx",lineNumber:10,columnNumber:5},void 0),Ss=({error:a,value:s,loaded:i})=>{const o=[Gs,Ws,Ks,qa],n={readonly:!0,hideScrollbar:!1,disabledScrollOnNonFocus:!0,themeColors:Hs};return e.jsxDEV("div",{className:"ttd-dialog-output-wrapper",children:[a&&e.jsxDEV(Oa,{error:a.message},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-output.tsx",lineNumber:39,columnNumber:17},void 0),e.jsxDEV("div",{style:{opacity:a?"0.15":1},className:"ttd-dialog-output-canvas-container",children:e.jsxDEV(Ca,{value:s,options:n,plugins:o,children:e.jsxDEV(Ta,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-output.tsx",lineNumber:46,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-output.tsx",lineNumber:45,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-output.tsx",lineNumber:41,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-output.tsx",lineNumber:38,columnNumber:5},void 0)},Vs=()=>e.jsxDEV("div",{className:"ttd-dialog-submit-shortcut",children:[e.jsxDEV("div",{className:"ttd-dialog-submit-shortcut__key",children:Pt("CtrlOrCmd")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-submit-shortcut.tsx",lineNumber:6,columnNumber:7},void 0),e.jsxDEV("div",{className:"ttd-dialog-submit-shortcut__key",children:Pt("Enter")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-submit-shortcut.tsx",lineNumber:9,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog-submit-shortcut.tsx",lineNumber:5,columnNumber:5},void 0),$a=`flowchart TD
|
|
3
|
+
A[Christmas] -->|Get money| B(Go shopping)
|
|
4
|
+
B --> C{Let me think}
|
|
5
|
+
C -->|One| D[Laptop]
|
|
6
|
+
C -->|Two| E[iPhone]
|
|
7
|
+
C -->|Three| F[Car]`,Fa=()=>{const{closeDialog:a}=ft(),{t:s,language:i}=at(),[o,n]=t.useState({loaded:!1,api:Promise.resolve({parseMermaidToDrawnix:async()=>({elements:[]})})});t.useEffect(()=>{(async()=>{try{const x=await Dt(()=>import("./index-C5eu4uSl.js").then(v=>v.aq),__vite__mapDeps([0]),import.meta.url);n({loaded:!0,api:Promise.resolve(x)})}catch(x){console.error("Failed to load mermaid library:",x),L(new Error(s("dialog.error.loadMermaid")))}})()},[]);const[d,h]=t.useState(()=>$a),[E,U]=t.useState(()=>[]),r=t.useDeferredValue(d.trim()),[b,L]=t.useState(null),S=St();t.useEffect(()=>{(async()=>{try{const x=await o.api;let v;try{v=await x.parseMermaidToDrawnix(r)}catch{v=await x.parseMermaidToDrawnix(r.replace(/"/g,"'"))}const{elements:$}=v;U($),L(null)}catch(x){L(x)}})()},[r,o]);const p=()=>{if(!E.length)return;let m;const x=rs(S);if(x)m=x;else{const v=ds.getBoardContainer(S).getBoundingClientRect(),$=[v.width/2,v.height/2],_=S.viewport.zoom,M=ls(S),z=M[0]+$[0]/_,l=M[1]+$[1]/_,g=E,D=kt.getBoundingRectangle(g.filter(j=>!Ys.isGroup(j)).map(j=>kt.getRectangleByPoints(j.points)));m=[z-D.width/2,l-D.height/2]}S.insertFragment({elements:JSON.parse(JSON.stringify(E))},m,us.paste),m&&requestAnimationFrame(()=>{cs(S,m)}),a(he.mermaidToDrawnix)};return e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"ttd-dialog-desc",children:i==="zh"?e.jsxDEV(e.Fragment,{children:[s("dialog.mermaid.description")," ",e.jsxDEV("a",{href:"https://mermaid.js.org/syntax/flowchart.html",target:"_blank",rel:"noreferrer",children:s("dialog.mermaid.flowchart")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:154,columnNumber:13},void 0),"、",e.jsxDEV("a",{href:"https://mermaid.js.org/syntax/sequenceDiagram.html",target:"_blank",rel:"noreferrer",children:s("dialog.mermaid.sequence")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:162,columnNumber:13},void 0)," ","和"," ",e.jsxDEV("a",{href:"https://mermaid.js.org/syntax/classDiagram.html",target:"_blank",rel:"noreferrer",children:s("dialog.mermaid.class")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:172,columnNumber:13},void 0),s("dialog.mermaid.otherTypes")]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:151,columnNumber:11},void 0):e.jsxDEV(e.Fragment,{children:[s("dialog.mermaid.description")," ",e.jsxDEV("a",{href:"https://mermaid.js.org/syntax/flowchart.html",target:"_blank",rel:"noreferrer",children:s("dialog.mermaid.flowchart")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:185,columnNumber:13},void 0),","," ",e.jsxDEV("a",{href:"https://mermaid.js.org/syntax/sequenceDiagram.html",target:"_blank",rel:"noreferrer",children:s("dialog.mermaid.sequence")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:193,columnNumber:13},void 0),","," ",e.jsxDEV("a",{href:"https://mermaid.js.org/syntax/classDiagram.html",target:"_blank",rel:"noreferrer",children:s("dialog.mermaid.class")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:201,columnNumber:13},void 0),s("dialog.mermaid.otherTypes")]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:182,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:149,columnNumber:7},void 0),e.jsxDEV(Ds,{children:[e.jsxDEV(mt,{label:s("dialog.mermaid.syntax"),children:e.jsxDEV(Is,{input:d,placeholder:s("dialog.mermaid.placeholder"),onChange:m=>h(m.target.value),onKeyboardSubmit:()=>{p()}},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(mt,{label:s("dialog.mermaid.preview"),panelAction:{action:()=>{p()},label:s("dialog.mermaid.insert")},renderSubmitShortcut:()=>e.jsxDEV(Vs,{},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(Ss,{value:E,loaded:o.loaded,error:b},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:233,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:223,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:212,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/mermaid-to-drawnix.tsx",lineNumber:148,columnNumber:5},void 0)},es=a=>a==="zh"?`# Milkdown 入门
|
|
8
|
+
|
|
9
|
+
Milkdown 是一个强大的所见即所得 Markdown 编辑器,兼具 Markdown 的简洁和现代编辑器的灵活性。它轻量且可扩展,适合从简单到复杂的编辑需求。
|
|
10
|
+
|
|
11
|
+
## 快速开始
|
|
12
|
+
最快的方式是使用 @milkdown/crepe。
|
|
13
|
+
|
|
14
|
+
## 核心概念
|
|
15
|
+
Milkdown 由两部分组成:
|
|
16
|
+
1. 核心包(@milkdown/core)
|
|
17
|
+
- 插件加载器
|
|
18
|
+
- 内置插件
|
|
19
|
+
2. 扩展插件
|
|
20
|
+
- 语法支持
|
|
21
|
+
- 命令
|
|
22
|
+
- UI 组件
|
|
23
|
+
- 自定义能力
|
|
24
|
+
|
|
25
|
+
## 关键特性
|
|
26
|
+
- 📝 所见即所得 Markdown
|
|
27
|
+
- 🎨 可主题化
|
|
28
|
+
- 🎮 可扩展
|
|
29
|
+
- ⚡ Slash 与 Tooltip
|
|
30
|
+
- 🧮 LaTeX 数学公式
|
|
31
|
+
- 📊 表格
|
|
32
|
+
- 🍻 协作(yjs)
|
|
33
|
+
- 💾 剪贴板
|
|
34
|
+
- 👍 Emoji
|
|
35
|
+
|
|
36
|
+
## 技术栈
|
|
37
|
+
- Prosemirror
|
|
38
|
+
- Remark
|
|
39
|
+
- TypeScript
|
|
40
|
+
|
|
41
|
+
## 创建你的第一个编辑器
|
|
42
|
+
Milkdown 提供两种方式:
|
|
43
|
+
|
|
44
|
+
### 🍼 使用 @milkdown/kit(从零构建)
|
|
45
|
+
适合需要完全控制、自由组合功能的场景。
|
|
46
|
+
|
|
47
|
+
### 🥞 使用 @milkdown/crepe(开箱即用)
|
|
48
|
+
适合快速落地、开箱即用的生产环境。
|
|
49
|
+
|
|
50
|
+
## 下一步
|
|
51
|
+
🍼 有趣的事实:这个文档也是由 Milkdown 渲染的!`:`# Getting Started with Milkdown
|
|
52
|
+
|
|
53
|
+
Milkdown is a powerful WYSIWYG markdown editor that combines the simplicity of markdown with the flexibility of a modern editor. It's designed to be lightweight yet extensible, making it perfect for both simple and complex editing needs.
|
|
54
|
+
|
|
55
|
+
## Quick Start
|
|
56
|
+
The fastest way to get started is using @milkdown/crepe.
|
|
57
|
+
|
|
58
|
+
## Core Concepts
|
|
59
|
+
Milkdown consists of two main parts:
|
|
60
|
+
1. Core Package (@milkdown/core)
|
|
61
|
+
- Plugin loader
|
|
62
|
+
- Internal plugins
|
|
63
|
+
2. Additional Plugins
|
|
64
|
+
- Syntax support
|
|
65
|
+
- Commands
|
|
66
|
+
- UI components
|
|
67
|
+
- Custom features
|
|
68
|
+
|
|
69
|
+
## Key Features
|
|
70
|
+
- 📝 WYSIWYG Markdown
|
|
71
|
+
- 🎨 Themable
|
|
72
|
+
- 🎮 Hackable
|
|
73
|
+
- ⚡ Slash & Tooltip
|
|
74
|
+
- 🧮 Math (LaTeX)
|
|
75
|
+
- 📊 Table
|
|
76
|
+
- 🍻 Collaborate (yjs)
|
|
77
|
+
- 💾 Clipboard
|
|
78
|
+
- 👍 Emoji
|
|
79
|
+
|
|
80
|
+
## Tech Stack
|
|
81
|
+
- Prosemirror
|
|
82
|
+
- Remark
|
|
83
|
+
- TypeScript
|
|
84
|
+
|
|
85
|
+
## Creating Your First Editor
|
|
86
|
+
Milkdown provides two distinct approaches to create an editor:
|
|
87
|
+
|
|
88
|
+
### 🍼 Using @milkdown/kit (Build from Scratch)
|
|
89
|
+
Use this if you want full control and a custom editor from the ground up.
|
|
90
|
+
|
|
91
|
+
### 🥞 Using @milkdown/crepe (Ready to Use)
|
|
92
|
+
Use this if you want a production-ready editor with minimal setup.
|
|
93
|
+
|
|
94
|
+
## Next Steps
|
|
95
|
+
🍼 Fun fact: This documentation is rendered by Milkdown itself!`,Ba=()=>{const{closeDialog:a}=ft(),{t:s,language:i}=at(),[o,n]=t.useState({loaded:!1,api:Promise.resolve({parseMarkdownToDrawnix:(m,x)=>null})});t.useEffect(()=>{(async()=>{try{const x=await Dt(()=>import("./index-C3qD42ws.js"),__vite__mapDeps([0]),import.meta.url);n({loaded:!0,api:Promise.resolve(x)})}catch(x){console.error("Failed to load mermaid library:",x),L(new Error(s("dialog.error.loadMermaid")))}})()},[]);const[d,h]=t.useState(()=>es(i)),[E,U]=t.useState(()=>[]),r=t.useDeferredValue(d.trim()),[b,L]=t.useState(null),S=St();t.useEffect(()=>{h(es(i))},[i]),t.useEffect(()=>{(async()=>{try{const x=await o.api;let v;try{v=await x.parseMarkdownToDrawnix(r)}catch{v=await x.parseMarkdownToDrawnix(r.replace(/"/g,"'"))}const $=v;$.points=[[0,0]],$&&(U([$]),L(null))}catch(x){L(x)}})()},[r,o]);const p=()=>{if(!E.length)return;let m;const x=rs(S);if(x)m=x;else{const $=ds.getBoardContainer(S).getBoundingClientRect(),_=[$.width/4,$.height/2-20],M=S.viewport.zoom,z=ls(S),l=z[0]+_[0]/M,g=z[1]+_[1]/M;m=[l,g]}const v=E;S.insertFragment({elements:JSON.parse(JSON.stringify(v))},m,us.paste),m&&requestAnimationFrame(()=>{cs(S,m)}),a(he.markdownToDrawnix)};return e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"ttd-dialog-desc",children:s("dialog.markdown.description")},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/markdown-to-drawnix.tsx",lineNumber:238,columnNumber:7},void 0),e.jsxDEV(Ds,{children:[e.jsxDEV(mt,{label:s("dialog.markdown.syntax"),children:e.jsxDEV(Is,{input:d,placeholder:s("dialog.markdown.placeholder"),onChange:m=>h(m.target.value),onKeyboardSubmit:()=>{p()}},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(mt,{label:s("dialog.markdown.preview"),panelAction:{action:()=>{p()},label:s("dialog.markdown.insert")},renderSubmitShortcut:()=>e.jsxDEV(Vs,{},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(Ss,{value:E,loaded:o.loaded,error:b},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)},Ga=[1,2,3,4,5,10,20,50,100],Wa="aitu_image_generation_quantity",Ka="aitu_video_generation_quantity",wt=100,Us=({language:a,type:s,isGenerating:i,hasGenerated:o,canGenerate:n,onGenerate:d,onReset:h,leftContent:E})=>{const U=s==="video"?Ka:Wa,[r,b]=t.useState(()=>{try{const l=localStorage.getItem(U);if(l){const g=parseInt(l,10);if(!isNaN(g)&&g>=1&&g<=wt)return g}}catch{}return 1}),[L,S]=t.useState(!1),[p,m]=t.useState(()=>r.toString()),x=t.useRef(null);t.useEffect(()=>{m(r.toString());try{localStorage.setItem(U,r.toString())}catch{}},[r,U]),t.useEffect(()=>{const l=g=>{x.current&&!x.current.contains(g.target)&&(S(!1),v())};return document.addEventListener("mousedown",l),()=>document.removeEventListener("mousedown",l)},[p]);const v=()=>{let l=parseInt(p,10);(isNaN(l)||l<1)&&(l=1),l>wt&&(l=wt),m(l.toString()),b(l)},$=l=>{const g=l.target.value;(g===""||/^\d*$/.test(g))&&m(g)},_=l=>{b(l),m(l.toString()),S(!1)},M=()=>{i||S(!L)},z=()=>{d(r)};return e.jsxDEV("div",{className:"section-actions unified-action-bar",children:[E&&e.jsxDEV("div",{className:"action-bar-left",children:E},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:115,columnNumber:23},void 0),e.jsxDEV("div",{className:`unified-action-box ${i?"is-generating":""} ${n?"can-generate":""}`,children:[e.jsxDEV("div",{className:"quantity-section",ref:x,children:[e.jsxDEV(Ke,{content:a==="zh"?"生成数量":"Quantity",theme:"light",children:e.jsxDEV("div",{className:`quantity-control ${L?"is-open":""} ${i?"is-disabled":""}`,children:[e.jsxDEV("input",{type:"text",inputMode:"numeric",value:p,onChange:$,onBlur:v,"data-track":"ai_click_quantity_input",onClick:()=>!i&&S(!0),disabled:i,className:"quantity-input"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:134,columnNumber:15},void 0),e.jsxDEV("button",{type:"button","data-track":"ai_click_quantity_toggle",onClick:l=>{l.stopPropagation(),M()},disabled:i,className:"quantity-toggle",children:e.jsxDEV(Xs,{className:`quantity-icon ${L?"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),L&&e.jsxDEV("div",{className:"quantity-dropdown",children:[e.jsxDEV("div",{className:"quantity-dropdown-header",children:a==="zh"?"选择数量":"Select Quantity"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:165,columnNumber:15},void 0),Ga.map(l=>e.jsxDEV("button",{type:"button","data-track":"ai_click_quantity_select",onClick:()=>_(l),className:`quantity-option ${r===l?"is-selected":""}`,children:[e.jsxDEV("span",{children:[l," ",s==="video"?a==="zh"?"个":l>1?"videos":"video":a==="zh"?"张":l>1?"images":"image"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:178,columnNumber:19},void 0),r===l&&e.jsxDEV("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e.jsxDEV("polyline",{points:"20 6 9 17 4 12"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:201,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:193,columnNumber:21},void 0)]},l,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:169,columnNumber:17},void 0))]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:164,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:124,columnNumber:9},void 0),e.jsxDEV("div",{className:"action-divider"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:211,columnNumber:9},void 0),e.jsxDEV("button",{"data-track":"ai_click_generate",onClick:z,disabled:i||!n,className:`generate-button ${i?"loading":""}`,children:i?a==="zh"?"生成中...":"Generating...":o?a==="zh"?"重新生成":"Regenerate":s==="video"?a==="zh"?"生成视频":"Generate Video":a==="zh"?"生成":"Generate"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:214,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ActionButtons.tsx",lineNumber:118,columnNumber:7},void 0),e.jsxDEV(Ke,{content:a==="zh"?"重置表单":"Reset form",theme:"light",children:e.jsxDEV(ut,{"data-track":"ai_click_reset",onClick:h,disabled:i,variant:"text",shape:"circle",icon:e.jsxDEV(Js,{},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)},Cs=({error:a})=>a?e.jsxDEV("div",{className:"form-error",children:a},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ErrorDisplay.tsx",lineNumber:11,columnNumber:5},void 0):null,qs=({visible:a,query:s,position:i,showBelow:o=!1,selectedIndex:n,onSelect:d,onClose:h})=>{const{completedCharacters:E,isLoading:U}=Es(),r=t.useRef(null),b=t.useMemo(()=>{if(!s)return E;const p=s.toLowerCase();return E.filter(m=>m.username.toLowerCase().includes(p))},[E,s]);t.useEffect(()=>{if(!a||!r.current)return;const p=r.current.querySelector(".character-mention-popup__item--selected");p&&p.scrollIntoView({block:"nearest"})},[a,n]),t.useEffect(()=>{if(!a)return;const p=m=>{r.current&&!r.current.contains(m.target)&&h()};return document.addEventListener("mousedown",p),()=>document.removeEventListener("mousedown",p)},[a,h]);const L=t.useCallback(p=>{Qs.track("character_used_in_prompt",{characterId:p.id,username:p.username}),d(p)},[d]);if(!a)return null;const S={position:"fixed",top:i.top,left:i.left,transform:o?"none":"translateY(-100%)",zIndex:ms.DROPDOWN_PORTAL,maxHeight:"200px",overflowY:"auto"};return U?e.jsxDEV("div",{ref:r,className:"character-mention-popup",style:S,children:e.jsxDEV("div",{className:"character-mention-popup__empty",children:"加载中..."},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterMentionPopup.tsx",lineNumber:115,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterMentionPopup.tsx",lineNumber:110,columnNumber:7},void 0):b.length===0?e.jsxDEV("div",{ref:r,className:"character-mention-popup",style:S,children:e.jsxDEV("div",{className:"character-mention-popup__empty",children:s?`未找到 "${s}" 相关角色`:"暂无可用角色"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterMentionPopup.tsx",lineNumber:127,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterMentionPopup.tsx",lineNumber:122,columnNumber:7},void 0):e.jsxDEV("div",{ref:r,className:"character-mention-popup",style:S,children:b.map((p,m)=>e.jsxDEV("div",{className:`character-mention-popup__item ${m===n?"character-mention-popup__item--selected":""}`,onClick:()=>L(p),"data-track":"character_click_mention",children:[e.jsxDEV("div",{className:"character-mention-popup__item-avatar",children:e.jsxDEV(Aa,{characterId:p.id,profilePictureUrl:p.profilePictureUrl,alt:p.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:["@",p.username]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterMentionPopup.tsx",lineNumber:154,columnNumber:11},void 0)]},p.id,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterMentionPopup.tsx",lineNumber:141,columnNumber:9},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterMentionPopup.tsx",lineNumber:135,columnNumber:5},void 0)},Ha={visible:!1,query:"",position:{top:0,left:0},showBelow:!1,startIndex:-1,selectedIndex:0};function Ts({enabled:a=!0,onPromptChange:s,prompt:i}){const[o,n]=t.useState(Ha),d=t.useRef(null),{completedCharacters:h}=Es(),E=t.useCallback(p=>{if(!d.current)return{top:0,left:0,showBelow:!1};const m=d.current,x=m.getBoundingClientRect(),v=document.createElement("div"),$=window.getComputedStyle(m),_=["fontFamily","fontSize","fontWeight","fontStyle","letterSpacing","lineHeight","textTransform","wordSpacing","whiteSpace","paddingTop","paddingRight","paddingBottom","paddingLeft","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","boxSizing"];v.style.position="absolute",v.style.top="0",v.style.left="-9999px",v.style.visibility="hidden",v.style.whiteSpace="pre-wrap",v.style.overflowWrap="break-word",v.style.overflow="hidden",v.style.width=`${m.clientWidth}px`,_.forEach(O=>{v.style[O]=$.getPropertyValue(O.replace(/([A-Z])/g,"-$1").toLowerCase())}),document.body.appendChild(v);let M=0,z=0;try{const O=m.value.substring(0,p),ae=document.createTextNode(O),K=document.createElement("span");K.textContent="",v.appendChild(ae),v.appendChild(K);const re=K.getBoundingClientRect(),P=v.getBoundingClientRect();M=re.top-P.top,z=re.left-P.left}finally{document.body.removeChild(v)}const l=m.scrollTop,g=parseInt($.lineHeight)||20;let D=x.top+M-l,j=x.left+z;const R=240,se=window.innerWidth;j+R>se-16&&(j=se-R-16),j<16&&(j=16);const Q=D<220+16;return Q?D=D+g+4:D=D-48,{top:D,left:j,showBelow:Q}},[]),U=t.useCallback((p,m)=>{if(!a)return;const x=p.substring(0,m),v=x.lastIndexOf("@");if(v===-1){n(z=>({...z,visible:!1}));return}const $=v>0?p[v-1]:" ";if(!/\s/.test($)&&v!==0){n(z=>({...z,visible:!1}));return}const _=x.substring(v+1);if(_.includes(" ")){n(z=>({...z,visible:!1}));return}const M=E(m);n({visible:!0,query:_,position:{top:M.top,left:M.left},showBelow:M.showBelow,startIndex:v,selectedIndex:0})},[a,E]),r=t.useCallback(p=>{var _;if(o.startIndex===-1)return;const m=i.substring(0,o.startIndex),x=((_=d.current)==null?void 0:_.selectionStart)||i.length,v=i.substring(x),$=`${m}@${p.username} ${v}`;s($),n(M=>({...M,visible:!1})),setTimeout(()=>{if(d.current){const M=m.length+p.username.length+2;d.current.focus(),d.current.setSelectionRange(M,M)}},0)},[o.startIndex,i,s]),b=t.useCallback(p=>{if(!o.visible)return;const m=o.query?h.filter(x=>x.username.toLowerCase().includes(o.query.toLowerCase())):h;switch(p.key){case"ArrowDown":p.preventDefault(),n(x=>({...x,selectedIndex:Math.min(x.selectedIndex+1,m.length-1)}));break;case"ArrowUp":p.preventDefault(),n(x=>({...x,selectedIndex:Math.max(x.selectedIndex-1,0)}));break;case"Enter":case"Tab":m.length>0&&(p.preventDefault(),r(m[o.selectedIndex]));break;case"Escape":p.preventDefault(),n(x=>({...x,visible:!1}));break}},[o,h,r]),L=t.useCallback((p,m)=>{s(p),U(p,m)},[s,U]),S=t.useCallback(()=>{n(p=>({...p,visible:!1}))},[]);return{mentionState:o,setMentionState:n,textareaRef:d,completedCharacters:h,handleTextChange:L,handleKeyDown:b,handleCharacterSelect:r,closeMentionPopup:S,calculateMentionPosition:E}}const _s=({prompt:a,onPromptChange:s,presetPrompts:i,language:o,type:n,disabled:d=!1,onError:h,enableMention:E=!0,videoProvider:U})=>{const[r,b]=t.useState(!1),[L,S]=t.useState(!1),p=t.useRef(null),m=t.useRef(null),[x,v]=t.useState(null),[$,_]=t.useState(0),{imageHistory:M,videoHistory:z}=Vt(),l=t.useMemo(()=>Pa({generationType:n,language:o,promptContents:i,imageHistory:M,videoHistory:z}),[M,o,n,i,$,z]),g=E&&n==="video"&&U==="sora",{mentionState:D,textareaRef:j,handleTextChange:R,handleKeyDown:se,handleCharacterSelect:ne,closeMentionPopup:Q}=Ts({enabled:g,onPromptChange:s,prompt:a}),O=t.useCallback(()=>{if(m.current&&r){const G=m.current.getBoundingClientRect(),H=8,Z=320,oe=400,W=window.innerHeight-G.top+4,le=Math.min(Z,window.innerWidth-H*2),fe=window.innerWidth-G.right,ue=window.innerWidth-le-H,y=Math.max(Math.min(fe,ue),H),te=Math.min(oe,G.top-H,window.innerHeight*.45);v({bottom:W,right:y,maxHeight:te})}},[r]);t.useEffect(()=>{if(r)return O(),window.addEventListener("scroll",O,!0),window.addEventListener("resize",O),()=>{window.removeEventListener("scroll",O,!0),window.removeEventListener("resize",O)}},[r,O]),t.useEffect(()=>{const G=H=>{const Z=H.target;if(p.current&&!p.current.contains(Z)){const oe=document.querySelector(".preset-prompt-panel-portal");oe!=null&&oe.contains(Z)||b(!1)}};if(r)return document.addEventListener("mousedown",G),()=>document.removeEventListener("mousedown",G)},[r]);const ae=t.useCallback(G=>{const H=typeof G=="string"?G:G.content;s(H),h==null||h(null),b(!1)},[s,h]),K=t.useCallback(G=>{const H=l.find(Z=>Z.id===G);H&&(H.pinned?ht.unpinPrompt(n,H.content):ht.pinPrompt(n,H.content),_(Z=>Z+1))},[n,l]),re=t.useCallback(G=>{const H=l.find(Z=>Z.id===G);H&&(ht.deletePrompt(n,H.content),_(Z=>Z+1))},[n,l]),P=t.useCallback(G=>{const H=G.target.value,Z=G.target.selectionStart||0;R(H,Z),h==null||h(null)},[R,h]);t.useEffect(()=>{n!=="video"&&Q()},[n,Q]);const me=t.useCallback(()=>{console.info("[PromptOptimize] handleOpenOptimizeDialog",{type:n,language:o,promptLength:a.trim().length,disabled:d}),S(!0)},[d,o,a,n]),J=()=>{if(!r||!x)return null;const G=o==="zh"?`${n==="image"?"图片":"视频"}描述预设`:`${n==="image"?"Image":"Video"} Description Presets`,H=e.jsxDEV("div",{className:"preset-prompt-panel-portal",style:{position:"fixed",bottom:x.bottom,right:x.right,zIndex:ms.DIALOG_POPOVER,"--panel-max-width":"calc(100vw - 16px)","--panel-max-height":`${x.maxHeight}px`},children:e.jsxDEV(aa,{title:G,items:l,onSelect:ae,onTogglePin:K,onDelete:re,language:o,disabled:d,showCount:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:212,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:200,columnNumber:7},void 0);return ia.createPortal(H,document.body)};return e.jsxDEV("div",{className:"form-field form-field--prompt",children:[e.jsxDEV("div",{className:"form-label-with-icon",children:[e.jsxDEV("label",{className:"form-label",children:o==="zh"?`${n==="image"?"图片":"视频"}描述`:`${n==="image"?"Image":"Video"} Description`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:231,columnNumber:7},void 0),e.jsxDEV("div",{className:"textarea-with-preset",children:e.jsxDEV("div",{className:"preset-tooltip-container",ref:p,children:[e.jsxDEV("button",{ref:m,type:"button",className:"preset-icon-button",disabled:d,onClick:()=>b(!r),children:e.jsxDEV(Zs,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:243,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:236,columnNumber:11},void 0),J()]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:235,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:234,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:230,columnNumber:7},void 0),e.jsxDEV("div",{className:"prompt-textarea-wrapper",children:[e.jsxDEV("textarea",{ref:j,className:"form-textarea",value:a,onChange:P,onKeyDown:se,placeholder:ea(o,n,U),rows:4,disabled:d},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:250,columnNumber:9},void 0),e.jsxDEV(Ke,{content:o==="zh"?"提示词优化":"Prompt optimization",placement:"top",disabled:d,children:e.jsxDEV("button",{type:"button",className:"prompt-optimize-button",onClick:me,disabled:d,"aria-label":o==="zh"?"提示词优化":"Prompt optimization",children:e.jsxDEV(ta,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:274,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:265,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:260,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:249,columnNumber:7},void 0),g&&e.jsxDEV(qs,{visible:D.visible,query:D.query,position:D.position,showBelow:D.showBelow,selectedIndex:D.selectedIndex,onSelect:ne,onClose:Q},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:281,columnNumber:9},void 0),e.jsxDEV(sa,{open:L,onOpenChange:S,originalPrompt:a,language:o,type:n,allowStructuredMode:!0,onApply:G=>{s(G),h==null||h(null)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:292,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/PromptInput.tsx",lineNumber:229,columnNumber:5},void 0)};function Ps(){return na("scene")}function ts(a,s){return{id:Ps(),order:a,duration:s,prompt:""}}function Ya(a,s,i=1){if(a.length===0)return{valid:!1,error:"至少需要一个场景"};for(const n of a){if(n.duration<i)return{valid:!1,error:`场景 ${n.order} 时长不能少于 ${i} 秒`};if(n.duration>s)return{valid:!1,error:`场景 ${n.order} 时长不能超过 ${s} 秒`}}const o=a.find(n=>!n.prompt.trim());return o?{valid:!1,error:`场景 ${o.order} 需要填写提示词`}:{valid:!0}}function Xa(a){return a.sort((s,i)=>s.order-i.order).map((s,i)=>`Shot ${i+1}:
|
|
96
|
+
duration: ${s.duration}sec
|
|
97
|
+
Scene: ${s.prompt.trim()}`).join(`
|
|
98
|
+
|
|
99
|
+
`)}function Ja(a){const s=/Shot\s+(\d+):\s*\n\s*duration:\s*([\d.]+)\s*sec\s*\n\s*Scene:\s*([^\n]+(?:\n(?!Shot\s+\d+:)[^\n]*)*)/gi,i=[];let o;for(;(o=s.exec(a))!==null;){const n=parseInt(o[1],10),d=parseFloat(o[2]),h=o[3].trim();i.push({id:Ps(),order:n,duration:d,prompt:h})}return i.length===0?null:i.sort((n,d)=>n.order-d.order)}const Qa=({value:a,onChange:s,placeholder:i,disabled:o=!1,autoFocus:n=!1,enableMention:d=!0})=>{const{mentionState:h,textareaRef:E,handleTextChange:U,handleKeyDown:r,handleCharacterSelect:b,closeMentionPopup:L}=Ts({enabled:d,onPromptChange:s,prompt:a}),S=t.useCallback(p=>{const m=p.target.value,x=p.target.selectionStart||0;U(m,x)},[U]);return t.useEffect(()=>{n&&E.current&&E.current.focus()},[n,E]),e.jsxDEV("div",{className:"scene-prompt-input",children:[e.jsxDEV("textarea",{ref:E,className:"scene-prompt-input__textarea",value:a,onChange:S,onKeyDown:r,placeholder:i,disabled:o,rows:3},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ScenePromptInput.tsx",lineNumber:59,columnNumber:7},void 0),d&&e.jsxDEV(qs,{visible:h.visible,query:h.query,position:h.position,showBelow:h.showBelow,selectedIndex:h.selectedIndex,onSelect:b,onClose:L},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ScenePromptInput.tsx",lineNumber:72,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/ScenePromptInput.tsx",lineNumber:58,columnNumber:5},void 0)},Za=({enabled:a,onEnabledChange:s,totalDuration:i,maxScenes:o,minSceneDuration:n,scenes:d,onScenesChange:h,disabled:E=!1})=>{const[U,r]=t.useState(null),b=t.useRef(null),L=d.map(l=>l.id).join("|");t.useEffect(()=>{if(!a||d.length===0)return;!(U?d.some(g=>g.id===U):!1)&&U!==d[0].id&&r(d[0].id)},[a,L,d,U]);const S=t.useCallback(()=>{if(d.length>=o)return;const l=d.reduce((R,se)=>R+se.duration,0),g=i-l;let D=Math.max(n,g/2);D=parseFloat(D.toFixed(1)),D<n&&(D=n);const j=ts(d.length+1,D);h([...d,j]),r(j.id),setTimeout(()=>{var R;(R=b.current)==null||R.scrollIntoView({behavior:"smooth"})},100)},[d,o,i,n,h]),p=t.useCallback(l=>{var j;if(d.length<=1)return;const D=d.filter(R=>R.id!==l).map((R,se)=>({...R,order:se+1}));h(D),U===l&&r(((j=D[0])==null?void 0:j.id)||null)},[d,h,U]),m=t.useCallback(l=>{const g=d.filter(D=>D.id!==l).reduce((D,j)=>D+j.duration,0);return Math.max(n,i-g)},[d,i,n]),x=t.useCallback(l=>{const g=m(l),D=[],j=.1;for(let R=n;R<=g+.001;R+=j){const se=parseFloat(R.toFixed(1));se<=g&&D.push({label:`${se}`,value:se})}return D},[n,m]),v=t.useCallback((l,g)=>{const D=typeof g=="string"?parseFloat(g):g;if(isNaN(D))return;const j=m(l),R=d.map(se=>{if(se.id===l){const ne=Math.max(n,Math.min(D,j)),Q=parseFloat(ne.toFixed(1));return Q===se.duration?se:{...se,duration:Q}}return se});R.every((se,ne)=>se===d[ne])||h(R)},[d,n,m,h]),$=t.useCallback((l,g)=>{const D=d.find(R=>R.id===l);if((D==null?void 0:D.prompt)===g)return;const j=d.map(R=>R.id===l?{...R,prompt:g}:R);h(j)},[d,h]),_=t.useCallback(l=>{if(s(l),l&&d.length===0){const g=ts(1,i);h([g]),r(g.id)}},[d,i,s,h]),M=t.useCallback(l=>{r(l)},[]),z=d.length<o;return e.jsxDEV("div",{className:"storyboard-editor",children:[e.jsxDEV("div",{className:"storyboard-editor__header",children:[e.jsxDEV("div",{className:"storyboard-editor__toggle",children:[e.jsxDEV(oa,{value:a,onChange:_,disabled:E,size:"small"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:229,columnNumber:11},void 0),e.jsxDEV("div",{className:"storyboard-editor__title",children:[e.jsxDEV("span",{className:"storyboard-editor__title-text",children:"故事场景模式"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:236,columnNumber:13},void 0),e.jsxDEV("span",{className:"storyboard-editor__title-desc",children:"定义多个场景及其时长"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:237,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:235,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:228,columnNumber:9},void 0),a&&e.jsxDEV("span",{className:"storyboard-editor__new-badge",children:"NEW"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:243,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:227,columnNumber:7},void 0),a&&e.jsxDEV("div",{className:"storyboard-editor__content",children:[e.jsxDEV("div",{className:"storyboard-editor__section-header",children:[e.jsxDEV("span",{className:"storyboard-editor__section-title",children:"场景列表"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:252,columnNumber:13},void 0),e.jsxDEV("span",{className:"storyboard-editor__section-hint",children:["共 ",d.length," 个场景,已用 ",d.reduce((l,g)=>l+g.duration,0).toFixed(1)," 秒 / 总时长 ",i," 秒"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:253,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:251,columnNumber:11},void 0),e.jsxDEV("div",{className:"storyboard-editor__scenes",children:[d.map((l,g)=>{const D=U===l.id,j=g===d.length-1;return e.jsxDEV("div",{className:`storyboard-editor__scene-wrapper ${D?"is-selected":""}`,children:[e.jsxDEV("div",{className:`storyboard-editor__timeline-line ${j?"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 ${D?"is-selected":""}`,children:D?g+1:""},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:273,columnNumber:19},void 0),!D&&e.jsxDEV("div",{className:"storyboard-editor__scene storyboard-editor__scene--compact",onClick:()=>M(l.id),children:[e.jsxDEV("span",{className:"storyboard-editor__scene-index",children:g+1},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:283,columnNumber:23},void 0),e.jsxDEV("div",{className:"storyboard-editor__scene-preview",children:e.jsxDEV("p",{className:"storyboard-editor__scene-preview-text",children:l.prompt||"暂无场景描述..."},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:285,columnNumber:25},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:284,columnNumber:23},void 0),e.jsxDEV("div",{className:"storyboard-editor__scene-duration-badge",children:[e.jsxDEV(Mt,{size:"12px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:290,columnNumber:25},void 0),e.jsxDEV("span",{children:[l.duration,"s"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:291,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:289,columnNumber:23},void 0),e.jsxDEV(fs,{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),D&&e.jsxDEV("div",{className:"storyboard-editor__scene storyboard-editor__scene--expanded",children:[e.jsxDEV("div",{className:"storyboard-editor__scene-header",children:[e.jsxDEV("div",{className:"storyboard-editor__scene-info",children:e.jsxDEV("span",{className:"storyboard-editor__scene-label",children:[e.jsxDEV("span",{className:"storyboard-editor__active-indicator"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:303,columnNumber:29},void 0),"场景 ",g+1]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:302,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:301,columnNumber:25},void 0),e.jsxDEV("div",{className:"storyboard-editor__scene-controls",children:[e.jsxDEV(Mt,{className:"storyboard-editor__time-icon"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:308,columnNumber:27},void 0),e.jsxDEV(ra,{value:parseFloat(l.duration.toFixed(1)),onChange:R=>v(l.id,R),disabled:E,className:"storyboard-editor__duration-select",size:"small",options:x(l.id),filterable:!0,creatable:!0,popupProps:{overlayClassName:"storyboard-editor__duration-popup"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:309,columnNumber:27},void 0),d.length>1&&e.jsxDEV(ut,{theme:"default",variant:"text",size:"small",icon:e.jsxDEV(ps,{},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(),p(l.id)},disabled:E,className:"storyboard-editor__scene-delete"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:321,columnNumber:29},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:307,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:300,columnNumber:23},void 0),e.jsxDEV("div",{className:"storyboard-editor__scene-prompt",children:e.jsxDEV(Qa,{value:l.prompt,onChange:R=>$(l.id,R),placeholder:`描述场景 ${g+1} 的内容,输入 @ 可引用角色`,disabled:E,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:b},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:351,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:259,columnNumber:11},void 0),z&&e.jsxDEV(ut,{theme:"default",variant:"dashed",size:"medium",icon:e.jsxDEV(da,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/StoryboardEditor.tsx",lineNumber:360,columnNumber:21},void 0),onClick:S,disabled:E,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)},Ms="aitu-dialog-task-list-width-",Ut=240,Ct=800,ei=()=>{const a=Math.round(660);return Math.max(Ut,Math.min(Ct,a))},Rs=a=>{try{const s=localStorage.getItem(Ms+a);if(s){const i=parseInt(s,10);if(!isNaN(i)&&i>=Ut&&i<=Ct)return i}}catch{}return ei()},ss=(a,s)=>{try{localStorage.setItem(Ms+a,s.toString())}catch{}},As=({isRightPanelVisible:a,onToggleRightPanel:s,onWidthChange:i,rightPanelWidth:o,minWidth:n=Ut,maxWidth:d=Ct,onResizeStart:h,onResizeEnd:E,language:U="zh",disabled:r=!1,storageKey:b="image"})=>{const[L,S]=t.useState(!1),p=t.useRef(0),m=t.useRef(0);t.useEffect(()=>(L?(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=""}),[L]);const x=t.useCallback($=>{if(r||!a)return;$.preventDefault(),$.stopPropagation(),S(!0),p.current=$.clientX,m.current=o,h==null||h();const _=z=>{const l=p.current-z.clientX,g=Math.max(n,Math.min(d,m.current+l));i(g)},M=()=>{S(!1),E==null||E(),m.current+(p.current-document.body.getBoundingClientRect().left),ss(b,o),document.removeEventListener("mousemove",_),document.removeEventListener("mouseup",M)};document.addEventListener("mousemove",_),document.addEventListener("mouseup",M)},[r,a,o,n,d,i,h,E,b]);t.useEffect(()=>{!L&&a&&ss(b,o)},[o,L,a,b]);const v=a?U==="zh"?"隐藏任务列表":"Hide Task List":U==="zh"?"显示任务列表":"Show Task List";return e.jsxDEV("div",{className:`resizable-divider ${L?"is-dragging":""} ${a?"":"is-collapsed"} ${r?"is-disabled":""}`,onMouseDown:x,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(Ke,{content:v,placement:"left",children:e.jsxDEV("button",{type:"button",className:"resizable-divider__toggle",onClick:$=>{$.stopPropagation(),s()},"aria-label":v,children:a?e.jsxDEV(fs,{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(la,{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)},Ls=({storageKey:a,language:s})=>{const[i,o]=t.useState(()=>{try{return localStorage.getItem(a)!=="false"}catch{return!0}}),n=t.useCallback(d=>{o(d);try{localStorage.setItem(a,String(d))}catch{}},[a]);return e.jsxDEV(Ke,{content:s==="zh"?"生成后自动插入画布":"Auto insert to canvas after generation",theme:"light",children:e.jsxDEV(ua,{checked:i,onChange:n,className:"auto-insert-checkbox"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/AutoInsertCheckbox.tsx",lineNumber:43,columnNumber:7},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/shared/AutoInsertCheckbox.tsx",lineNumber:35,columnNumber:5},void 0)};function jt(a){try{return localStorage.getItem(a)!=="false"}catch{return!0}}function ti(a={}){const{taskType:s}=a,{tasks:i,isLoading:o}=ca(),{retryTask:n,deleteTask:d}=ma(),h=t.useMemo(()=>[...s?i.filter(b=>b.type===s):i].sort((b,L)=>L.createdAt-b.createdAt),[i,s]),E=t.useCallback(async()=>{},[]),U=t.useCallback(async()=>{if(fa(),!await Rt.isAvailable())return;const b=await Rt.getAllTasks();b.length>0&&pa.restoreTasks(b)},[]);return{tasks:h,isLoading:o,isLoadingMore:!1,hasMore:!1,totalCount:h.length,loadedCount:h.length,loadMore:E,refresh:U,retryTask:n,deleteTask:d}}const zs=({taskIds:a,taskType:s,onEditTask:i})=>{const{tasks:o,isLoading:n,isLoadingMore:d,hasMore:h,totalCount:E,loadedCount:U,loadMore:r,retryTask:b,deleteTask:L}=ti({taskType:s}),{board:S,openDialog:p}=ft(),[m,x]=t.useState(!1),[v,$]=t.useState(null),[_,M]=t.useState(!1),[z,l]=t.useState(0),[g,D]=t.useState("single"),[j,R]=t.useState(""),[se,ne]=t.useState(null),[Q,O]=t.useState(!1),ae=t.useMemo(()=>o.filter(f=>f.status===ze.FAILED).length,[o]),K=t.useCallback(()=>{const f=o.filter(c=>c.status===ze.FAILED);f.forEach(c=>L(c.id)),O(!1),qe.success(`已清除 ${f.length} 个失败任务`)},[o,L]),re=(f,c)=>{var ce,I,Ie,ge,je,be,ve,De,Ne,we,Se;if(!c.trim())return!0;const C=c.toLowerCase().split(/\s+/).filter(Boolean),V={[ze.PENDING]:"处理中",[ze.PROCESSING]:"处理中",[ze.COMPLETED]:"已完成",[ze.FAILED]:"失败",[ze.CANCELLED]:"已取消"},T=[],F=(ce=f.params)!=null&&ce.params&&typeof f.params.params=="object"?f.params.params:null;T.push(((I=f.params)==null?void 0:I.prompt)??""),T.push(((Ie=f.params)==null?void 0:Ie.model)??""),T.push(f.id??""),T.push(V[f.status]??String(f.status)),(ge=f.params)!=null&&ge.batchId&&T.push(String(f.params.batchId)),(je=f.params)!=null&&je.batchIndex&&T.push(String(f.params.batchIndex)),(be=f.params)!=null&&be.batchTotal&&T.push(String(f.params.batchTotal)),typeof(F==null?void 0:F.model_name)=="string"&&T.push(F.model_name),typeof(F==null?void 0:F.mode)=="string"&&T.push(F.mode),typeof(F==null?void 0:F.klingAction2)=="string"&&T.push(F.klingAction2),(ve=f.result)!=null&&ve.format&&T.push(String(f.result.format)),(De=f.result)!=null&&De.width&&((Ne=f.result)!=null&&Ne.height)?T.push(`${f.result.width}x${f.result.height}`):(we=f.params)!=null&&we.width&&((Se=f.params)!=null&&Se.height)&&T.push(`${f.params.width}x${f.params.height}`);const q=T.join(" ").toLowerCase();return C.every(Ce=>q.includes(Ce))},P=t.useMemo(()=>{let f=o;return a&&a.length>0&&(f=f.filter(c=>a.includes(c.id))),j.trim()&&(f=f.filter(c=>re(c,j))),f.sort((c,C)=>C.createdAt-c.createdAt)},[o,a,j]),me=f=>{b(f)},J=f=>{$(f),x(!0)},G=()=>{v&&L(v),x(!1),$(null)},H=async f=>{const c=o.find(V=>V.id===f);if(!c)return;const C=ya(c);if(C.length!==0)try{const V=await va(C);V.openedCount>0&&V.downloadedCount===0?qe.success(V.openedCount>1?`已打开 ${V.openedCount} 个链接,请在新标签页下载`:"资源不支持直接下载,已打开链接"):qe.success(c.type===ke.AUDIO?C.length>1?"多条音频已开始下载":"音频下载成功":C.length>1?"多图已开始下载":"下载成功")}catch(V){console.error("Download failed:",V),qe.error("下载失败,请稍后重试")}},Z=async f=>{var C,V,T,F;const c=o.find(q=>q.id===f);if(!((C=c==null?void 0:c.result)!=null&&C.url)&&!((T=(V=c==null?void 0:c.result)==null?void 0:V.urls)!=null&&T.length)||!S){console.warn("Cannot insert: task result or board not available"),qe.warning("无法插入:白板未就绪");return}try{if(c.type===ke.IMAGE){const q=(F=c.result.urls)!=null&&F.length?c.result.urls:[c.result.url];for(const ce of q)await Na(S,ce);qe.success(q.length>1?"多图已插入到白板":"图片已插入到白板")}else c.type===ke.VIDEO&&(await wa(S,c.result.url),qe.success("视频已插入到白板"))}catch(q){console.error("Failed to insert to board:",q),qe.error(`插入失败: ${q instanceof Error?q.message:"未知错误"}`)}},oe=f=>{var C,V,T,F;const c=o.find(q=>q.id===f);if(!c){console.warn("Cannot edit: task not found");return}if(i){i(c);return}if(c.type===ke.IMAGE){const q={initialPrompt:c.params.prompt,initialWidth:c.params.width,initialHeight:c.params.height,initialImages:c.params.uploadedImages,initialResultUrl:(C=c.result)==null?void 0:C.url,initialResultUrls:(V=c.result)==null?void 0:V.urls};p(he.aiImageGeneration,q)}else if(c.type===ke.VIDEO){const q={initialPrompt:c.params.prompt,initialDuration:typeof c.params.seconds=="string"?parseInt(c.params.seconds,10):c.params.seconds,initialModel:c.params.model,initialSize:c.params.size,initialImages:c.params.uploadedImages,initialResultUrl:(T=c.result)==null?void 0:T.url,initialResultUrls:(F=c.result)==null?void 0:F.urls};p(he.aiVideoGeneration,q)}},W=f=>{const c=o.find(C=>C.id===f);c&&ne(c)},le=t.useMemo(()=>{const f=new Set;return P.filter(c=>{var C,V,T,F;return c.status!==ze.COMPLETED||!((C=c.result)!=null&&C.url)&&!((T=(V=c.result)==null?void 0:V.urls)!=null&&T.length)||c.type!==ke.IMAGE&&c.type!==ke.VIDEO&&!(c.type===ke.AUDIO&&((F=c.result)==null?void 0:F.resultKind)!=="lyrics")||f.has(c.id)?!1:(f.add(c.id),!0)})},[P]),{previewMediaItems:fe,taskIdToPreviewConfig:ue}=t.useMemo(()=>{var C,V,T,F,q,ce;const f=[],c=new Map;for(const I of le){const Ie=f.length,ge=((C=I.result)==null?void 0:C.title)||I.params.title||((V=I.params.prompt)==null?void 0:V.substring(0,50))||"媒体预览";if(I.type===ke.AUDIO){const be=((F=(T=I.result)==null?void 0:T.clips)==null?void 0:F.filter(Ne=>!!Ne.audioUrl).map((Ne,we)=>{var Se,Ce,de;return{id:Ne.clipId||Ne.id||`${I.id}-${we}`,url:Ne.audioUrl,type:"audio",title:Ne.title||((Se=I.result)!=null&&Se.clips&&I.result.clips.length>1?`${ge} (${we+1}/${I.result.clips.length})`:ge),posterUrl:Ne.imageLargeUrl||Ne.imageUrl||((Ce=I.result)==null?void 0:Ce.previewImageUrl),duration:typeof Ne.duration=="number"?Ne.duration:(de=I.result)==null?void 0:de.duration,prompt:I.params.prompt,tags:typeof I.params.tags=="string"?I.params.tags:void 0,artist:I.params.model||I.params.mv||"Aitu",album:"Aitu Generated"}}))??[],ve=(q=I.result.urls)!=null&&q.length?I.result.urls:I.result.url?[I.result.url]:[],De=be.length>0?be:ve.map((Ne,we)=>{var Se,Ce;return{id:ve.length>1?`${I.id}-${we}`:I.id,url:Ne,type:"audio",title:ve.length>1?`${ge} (${we+1}/${ve.length})`:ge,posterUrl:(Se=I.result)==null?void 0:Se.previewImageUrl,duration:(Ce=I.result)==null?void 0:Ce.duration,prompt:I.params.prompt,tags:typeof I.params.tags=="string"?I.params.tags:void 0,artist:I.params.model||I.params.mv||"Aitu",album:"Aitu Generated"}});f.push(...De)}else{const be=(ce=I.result.urls)!=null&&ce.length?I.result.urls:[I.result.url],ve=I.type===ke.VIDEO?"video":"image";for(let De=0;De<be.length;De++)f.push({id:be.length>1?`${I.id}-${De}`:I.id,url:ve==="image"?ga(be[De]):be[De],type:ve,title:be.length>1?`${ge} (${De+1}/${be.length})`:ge})}const je=f.length-Ie;c.set(I.id,{mode:I.type===ke.AUDIO&&je>1?"compare":"single",index:I.type===ke.AUDIO&&je>1?Array.from({length:Math.min(je,4)},(be,ve)=>Ie+ve):Ie})}return{previewMediaItems:f,taskIdToPreviewConfig:c}},[le]),y=t.useCallback(f=>{const c=ue.get(f);c!==void 0&&(D(c.mode),l(c.index),M(!0))},[ue]),te=t.useCallback(()=>{M(!1)},[]),ee=j.trim()&&P.length===0&&o.length>0,pe=E>0?E:o.length;return e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"dialog-task-list",children:[e.jsxDEV("div",{className:"dialog-task-list__header",children:[e.jsxDEV("div",{className:"dialog-task-list__header-main",children:[e.jsxDEV("h4",{children:["生成任务 (",pe,")"]},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:ae>0&&e.jsxDEV(Ke,{content:`清除全部失败任务 (${ae})`,theme:"light",children:e.jsxDEV(ut,{size:"small",variant:"text",icon:e.jsxDEV(ps,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:467,columnNumber:27},void 0),onClick:()=>O(!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(ha,{value:j,onChange:f=>R(f),placeholder:"搜索任务(提示词/模型/...)",clearable:!0,prefixIcon:e.jsxDEV(ba,{},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(La,{tasks:P,onRetry:me,onDelete:J,onDownload:H,onInsert:Z,onEdit:oe,onPreviewOpen:y,onExtractCharacter:W,hasMore:h,isLoadingMore:d,onLoadMore:r,totalCount:pe,loadedCount:U,className:"dialog-task-list__content",emptyContent:e.jsxDEV("div",{className:"dialog-task-list__empty",children:n?e.jsxDEV("p",{children:"加载中..."},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:503,columnNumber:17},void 0):ee?e.jsxDEV("p",{children:"未找到匹配的任务"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:505,columnNumber:17},void 0):e.jsxDEV("p",{children:"暂无生成任务"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:507,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:501,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:485,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:454,columnNumber:7},void 0),e.jsxDEV(At,{open:m,title:"确认删除",description:"确定要删除此任务吗?此操作无法撤销。",confirmText:"删除",cancelText:"取消",danger:!0,onOpenChange:x,onConfirm:G},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:515,columnNumber:7},void 0),e.jsxDEV(At,{open:Q,title:"清除失败任务",description:`确定要清除全部 ${ae} 个失败任务吗?此操作无法撤销。`,confirmText:"清除",cancelText:"取消",danger:!0,onOpenChange:O,onConfirm:K},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(xa,{visible:_,items:fe,initialMode:g,initialIndex:z,onClose:te,showThumbnails:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:539,columnNumber:7},void 0),e.jsxDEV(za,{visible:!!se,task:se,onClose:()=>ne(null),onCreateComplete:f=>{ne(null)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:549,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/DialogTaskList.tsx",lineNumber:453,columnNumber:5},void 0)};function Os(a){if(!a)return;if(a==="auto")return st;const s=a.replace(/[xX]/g,":");return ja.some(i=>i.value===s)?s:void 0}function dt(a,s){return Os(a.size)||s||st}function as(a,s,i){if(a.startsWith("mj")||!i)return s;const o=i===st?"auto":Et(i);return!o||!Ea(a).some(n=>n.value===o)||s.size===o?s:{...s,size:o}}const si=({initialPrompt:a="",initialImages:s=[],selectedElementIds:i=[],initialWidth:o,initialHeight:n,initialResultUrl:d,initialAspectRatio:h,targetFrameId:E,targetFrameDimensions:U,pptSlideImage:r,pptSlidePrompt:b,pptReplaceElementId:L,selectedModel:S,selectedModelRef:p,onModelChange:m,onModelRefChange:x,externalBatchId:v,initialAutoInsertToCanvas:$,onDraftChange:_}={})=>{var Ae,Xe,Fe;const M=gs("image"),z=We("image"),l=Re(M,z.modelId,_e(z.profileId,z.modelId))||ct("image",z.modelId,_e(z.profileId,z.modelId)),[g,D]=t.useState((l==null?void 0:l.id)||((Ae=M[0])==null?void 0:Ae.id)||"gemini-2.5-flash-image-vip"),[j,R]=t.useState(Te(l)||_e(z.profileId,z.modelId)),se=Ee((l==null?void 0:l.id)||((Xe=M[0])==null?void 0:Xe.id)||"gemini-2.5-flash-image-vip",Te(l)||_e(z.profileId,z.modelId)),ne=Xt((l==null?void 0:l.id)||((Fe=M[0])==null?void 0:Fe.id)||"gemini-2.5-flash-image-vip",se),[Q,O]=t.useState(a),[ae,K]=t.useState(ne.extraParams),re=t.useMemo(()=>{if(Re(M,g,j)||!g)return M;const B=ct("image",g,j);return B?[B,...M]:M},[g,j,M]),[P,me]=t.useState(o||1024),[J,G]=t.useState(n||1024),[H,Z]=t.useState(h||dt(ne.extraParams,ne.aspectRatio)),[oe,W]=t.useState(null),[le,fe]=t.useState(s),[ue,y]=t.useState(!0),[te,ee]=t.useState(()=>Rs("image")),[pe,f]=t.useState("config"),c=t.useRef(null),{viewportWidth:C}=It(),V=C<=768,{imageHistory:T}=Vt(),{isGenerating:F}=hs("image"),{language:q}=at(),{createTask:ce}=bs(),I=t.useRef(!1),Ie=g.startsWith("mj"),ge=xe.useMemo(()=>ka(g).length>0,[g]),[je,be]=t.useState(!1);t.useEffect(()=>{if(je)return;const k=Xt(g,Ee(g,j)),B=h?as(g,k.extraParams,h):k.extraParams;K(B),Z(dt(B,h||k.aspectRatio))},[g,j,h,je]);const ve=t.useCallback((k,B)=>{if(!B||B==="default"){k==="size"&&Z(st),K(Y=>{const X={...Y};return delete X[k],X});return}k==="size"&&Z(Os(B)||st),K(Y=>({...Y,[k]:B}))},[]),De=t.useCallback(k=>{ee(k)},[]),Ne=t.useCallback(()=>{y(k=>!k)},[]),we=xe.useRef("");t.useEffect(()=>{if(je)return;const k=JSON.stringify({prompt:a,images:s==null?void 0:s.map(B=>B.url),elementIds:i,width:o,height:n,result:d,aspectRatio:h,targetFrameId:E,pptSlideImage:r,pptSlidePrompt:b,pptReplaceElementId:L});we.current!==k&&(we.current=k,O(a),fe(s||[]),o&&me(o),n&&G(n),h&&(Z(h),K(B=>as(g,B,h))))},[a,s,i,o,n,d,h,E,r,b,L,je,g]);const Se=t.useRef("");t.useEffect(()=>{if(!_)return;const k={prompt:Q,images:le.map(X=>({url:X.url,name:X.name})),aspectRatio:H},B=JSON.stringify(k);if(Se.current===B)return;const Y=window.setTimeout(()=>{Se.current!==B&&(Se.current=B,_(k))},200);return()=>{window.clearTimeout(Y)}},[H,_,Q,le]),t.useEffect(()=>{const k=B=>{var X;const Y=B.imageModelName||((X=re[0])==null?void 0:X.id)||"gemini-2.5-flash-image-vip";if(Y!==g){D(Y);const Ve=Re(re,Y,j);R(Te(Ve)||null)}};return Pe.addListener(k),()=>Pe.removeListener(k)},[g,j,re]),t.useEffect(()=>{if(re.length===0)return;if(!Re(re,g,j)){const B=re[0];D(B.id);const Y=Te(B);R(X=>X&&Y&&X.profileId===Y.profileId&&X.modelId===Y.modelId?X:Y)}},[g,j,re]),t.useEffect(()=>{if(!S)return;const k=Ee(g,j),B=Ee(S,p);if(k!==B){D(S);const Y=Re(re,S,p),X=Te(Y)||p||null;R(Ve=>Ve&&X&&Ve.profileId===X.profileId&&Ve.modelId===X.modelId?Ve:X)}},[g,j,S,p,re]),t.useEffect(()=>{!ge&&Object.keys(ae).length>0&&K({})},[ge,ae]),t.useEffect(()=>{Ma({currentModel:g,currentSelectionKey:Ee(g,j),extraParams:ae,aspectRatio:H})},[g,j,ae,H]),t.useEffect(()=>(W(null),()=>{W(null)}),[]);const Ce=()=>{const k=Nt(g,{});O(""),K(k),fe([]),W(null),Z(dt(k)),f("config"),be(!1),window.dispatchEvent(new CustomEvent("ai-image-clear"))},de=xe.useMemo(()=>ys("image",q,T),[T,q]),it=k=>{ks("image",k)},He=k=>{const B=k.params.model||g,Y={...k.params.params||{},...k.params.size!==void 0?{size:k.params.size}:{},...k.params.resolution!==void 0?{resolution:k.params.resolution}:{},...k.params.quality!==void 0?{quality:k.params.quality}:{}},X=Object.keys(Y).length>0?Nt(B,Y):Nt(B,{});if(be(!0),f("config"),O(k.params.prompt||""),K(X),me(k.params.width||1024),G(k.params.height||1024),k.params.uploadedImages&&k.params.uploadedImages.length>0?fe(k.params.uploadedImages):fe([]),k.params.model){D(k.params.model),R(k.params.modelRef||null);const Ve=Pe.get();Pe.update({...Ve,imageModelName:k.params.model})}Z(dt(X,k.params.aspectRatio)),W(null)},nt=async()=>Promise.all(le.map(async k=>{if(k.file)return new Promise((B,Y)=>{const X=new FileReader;X.onload=()=>{B({type:"url",url:X.result,name:k.name})},X.onerror=Y,X.readAsDataURL(k.file)});if(k.url)return{type:"url",url:k.url,name:k.name};throw new Error("Invalid image data")})),Ye=async(k=1)=>{const B=k;if(!I.current){I.current=!0;try{if(!Q||!Q.trim()){W(q==="zh"?"请输入图像描述":"Please enter image description");return}if(!Da("image",j||g)&&!await Ia()){W(q==="zh"?"需要 API Key 才能生成图片":"API Key is required to generate images");return}Ie&&W(null);try{const Y=typeof P=="string"?parseInt(P)||1024:P,X=typeof J=="string"?parseInt(J)||1024:J,Ve=await nt();if(B>1){const Oe=[],rt=`batch_${Date.now()}`,Be=g||We("image").modelId,Ze=Be.startsWith("mj")?[Q.trim(),Jt(ae)].filter(Boolean).join(" "):(Q||"").trim(),u=!Be.startsWith("mj")&&Object.keys(ae).length>0?ae:void 0,N=u!=null&&u.size?u.size:Et(H);for(let w=0;w<B;w++){const A={prompt:Ze,width:Y,height:X,aspectRatio:H,size:N,model:Be,modelRef:j||null,uploadedImages:Ve,batchId:rt,batchIndex:w+1,batchTotal:B,autoInsertToCanvas:$??jt(tt.AI_IMAGE_AUTO_INSERT),targetFrameId:E,targetFrameDimensions:U,pptSlideImage:r,pptSlidePrompt:b,pptReplaceElementId:L,...u?{params:u}:{}},ie=ce(A,ke.IMAGE);ie&&Oe.push(ie.id)}Oe.length>0?(qe.success(q==="zh"?`已添加 ${Oe.length} 个任务到队列`:`Added ${Oe.length} tasks to queue`),it(Ze),W(null),f("tasks"),be(!1)):W(q==="zh"?"批量任务创建失败,请稍后重试":"Failed to create batch tasks, please try again later");return}const Je=g||We("image").modelId,ot=Je.startsWith("mj")?[Q.trim(),Jt(ae)].filter(Boolean).join(" "):(Q||"").trim(),Le=!Je.startsWith("mj")&&Object.keys(ae).length>0?ae:void 0,pt=Le!=null&&Le.size?Le.size:Et(H),Qe={prompt:ot,width:Y,height:X,aspectRatio:H,size:pt,model:Je,modelRef:j||null,uploadedImages:Ve,autoInsertToCanvas:$??jt(tt.AI_IMAGE_AUTO_INSERT),batchId:v||`image_single_${Date.now()}`,batchIndex:1,batchTotal:1,targetFrameId:E,targetFrameDimensions:U,pptSlideImage:r,pptSlidePrompt:b,pptReplaceElementId:L,...Le?{params:Le}:{}};ce(Qe,ke.IMAGE)?(qe.success(q==="zh"?"任务已添加到队列,将在后台生成":"Task added to queue, will be generated in background"),it(ot),W(null),f("tasks"),be(!1)):W(q==="zh"?"任务创建失败,请检查参数或稍后重试":"Failed to create task, please check parameters or try again later")}catch(Y){console.error("Failed to create task:",Y);let X=q==="zh"?"任务创建失败,请检查参数或稍后重试":"Failed to create task, please check parameters or try again later";Y.message&&(Y.message.includes("exceed 5000 characters")?X=q==="zh"?"提示词不能超过 5000 字符":"Prompt must not exceed 5000 characters":Y.message.includes("Duplicate submission")?X=q==="zh"?"请勿重复提交,请等待 5 秒后再试":"Duplicate submission. Please wait 5 seconds.":Y.message.includes("Invalid parameters")&&(X=q==="zh"?`参数错误: ${Y.message.replace("Invalid parameters: ","")}`:Y.message)),W(X)}}finally{I.current=!1}}};return xs(F,Q,()=>Ye(1)),e.jsxDEV("div",{className:"ai-image-generation-container",children:[V?e.jsxDEV("div",{className:"ai-generation-mobile-switcher",role:"tablist",children:[e.jsxDEV("button",{type:"button",className:`ai-generation-mobile-switcher__tab ${pe==="config"?"ai-generation-mobile-switcher__tab--active":""}`,onClick:()=>f("config"),children:"生成设置"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:869,columnNumber:11},void 0),e.jsxDEV("button",{type:"button",className:`ai-generation-mobile-switcher__tab ${pe==="tasks"?"ai-generation-mobile-switcher__tab--active":""}`,onClick:()=>f("tasks"),children:"生成任务"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:880,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:868,columnNumber:9},void 0):null,e.jsxDEV("div",{className:`main-content ${V?"main-content--mobile-panels":""}`,ref:c,children:[e.jsxDEV("div",{className:`ai-image-generation-section ${V&&pe!=="config"?"ai-generation-mobile-panel--hidden":""}`,children:[e.jsxDEV("div",{className:"ai-image-generation-form",children:[S!==void 0&&m&&e.jsxDEV("div",{className:"form-header-row",children:e.jsxDEV("div",{className:"model-selector-wrapper",children:e.jsxDEV(Ns,{selectedModel:g,selectedSelectionKey:Ee(g,j),onSelect:k=>{D(k),R(null),m(k),x==null||x(null)},onSelectModel:k=>{D(k.id);const B=Te(k);R(B),m(k.id),x==null||x(B)},language:q,models:re,placement:"down",variant:"form",disabled:F},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:913,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:912,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:911,columnNumber:15},void 0),ge&&e.jsxDEV("div",{className:"model-params-row",children:e.jsxDEV(vs,{selectedParams:ae,onParamChange:ve,modelId:g,language:q,disabled:F,placement:"down"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:945,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:944,columnNumber:15},void 0),e.jsxDEV(js,{images:le,onImagesChange:fe,language:q,disabled:F,multiple:!0,label:q==="zh"?"参考图片 (可选)":"Reference Images (Optional)",onError:W},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:957,columnNumber:13},void 0),e.jsxDEV(_s,{prompt:Q,onPromptChange:O,presetPrompts:de,language:q,type:"image",disabled:F,onError:W},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:971,columnNumber:13},void 0),e.jsxDEV(Cs,{error:oe},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:981,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:908,columnNumber:11},void 0),e.jsxDEV(Us,{language:q,type:"image",isGenerating:F,hasGenerated:!1,canGenerate:!!(Q&&Q.trim()),onGenerate:Ye,onReset:Ce,leftContent:e.jsxDEV(Ls,{storageKey:tt.AI_IMAGE_AUTO_INSERT,language:q},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:993,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:984,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:901,columnNumber:9},void 0),V?null:e.jsxDEV(As,{isRightPanelVisible:ue,onToggleRightPanel:Ne,onWidthChange:De,rightPanelWidth:te,language:q,storageKey:"image"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:1002,columnNumber:11},void 0),(V||ue)&&e.jsxDEV("div",{className:`task-sidebar ${V?"task-sidebar--mobile-panel":""} ${V&&pe!=="tasks"?"ai-generation-mobile-panel--hidden":""}`,style:V?void 0:{width:te,flexShrink:0},children:e.jsxDEV(zs,{taskType:ke.IMAGE,onEditTask:He},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:1028,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:1014,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:894,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-image-generation.tsx",lineNumber:866,columnNumber:5},void 0)};function is(a,s){const i=Object.keys(a),o=Object.keys(s);return i.length!==o.length?!1:i.every(n=>a[n]===s[n])}function ns(a,s,i){return a.slice(0,s).map((o,n)=>({...o,slot:n,slotLabel:i[n]||`参考图${n+1}`}))}function ai(a,s){return a.length===s.length&&a.every((i,o)=>{const n=s[o];return i.slot===n.slot&&i.slotLabel===n.slotLabel&&i.url===n.url&&i.name===n.name&&i.file===n.file})}function yt(a,s){return((a==null?void 0:a.profileId)||null)===((s==null?void 0:s.profileId)||null)&&((a==null?void 0:a.modelId)||null)===((s==null?void 0:s.modelId)||null)}function $s(a,s){const i=_e(s==null?void 0:s.profileId,s==null?void 0:s.modelId);return(i==null?void 0:i.modelId)===(a||null)?i:null}function $e(a,s,i){if(!s)return null;const o=$s(s,i),n=Re(a,s,o);return Te(n)||o}function ii(a){return a.reduce((s,i)=>(i.defaultValue&&(s[i.id]=i.defaultValue),s),{})}function vt(a,s){return ii(ws(a,s||a,{}))}function lt(a,s,i){return{...a,...s!=null?{duration:String(s)}:{},...i?{size:i}:{}}}function os(a,s,i){const{duration:o,size:n,...d}=a;return{extraParams:d,duration:s,size:i}}const ni=({initialPrompt:a="",initialImage:s,initialImages:i,initialDuration:o,initialModel:n,initialSize:d,initialResultUrl:h,selectedModel:E,selectedModelRef:U,onModelChange:r,onModelRefChange:b,externalBatchId:L,initialAutoInsertToCanvas:S,onDraftChange:p}={})=>{var rt,Be,Ze;const m=gs("video"),[x,v]=t.useState(a),[$,_]=t.useState(null),[M,z]=t.useState(!0),[l,g]=t.useState(()=>Rs("video")),[D,j]=t.useState("config"),R=t.useRef(null),{viewportWidth:se}=It(),ne=se<=768,Q=We("video"),O=n||Q.modelId,ae=$s(O,n&&n===E?U:Q.modelId===O?_e(Q.profileId,Q.modelId):null),K=Re(m,O,ae)||ct("video",O,ae),re=$e(m,(K==null?void 0:K.id)||O,Te(K)||ae),[P,me]=t.useState((K==null?void 0:K.id)||((rt=m[0])==null?void 0:rt.id)||bt("veo3")),[J,G]=t.useState(re),H=Ee((K==null?void 0:K.id)||((Be=m[0])==null?void 0:Be.id)||bt("veo3"),re),Z=Qt((K==null?void 0:K.id)||((Ze=m[0])==null?void 0:Ze.id)||bt("veo3"),H),oe=xe.useMemo(()=>{if(Re(m,P,J)||!P)return m;const N=ct("video",P,J);return N?[N,...m]:m},[P,J,m]),[W,le]=t.useState(()=>lt(Z.extraParams,(o==null?void 0:o.toString())||Z.duration,d||Z.size)),fe=xe.useMemo(()=>ws(P,J||P,W),[P,J,W]),ue=xe.useMemo(()=>Lt(P,J||P,W),[P,J,W]),y=xe.useMemo(()=>(ue.imageUpload.labels||[]).join("|"),[ue.imageUpload.labels]),te=xe.useMemo(()=>y?y.split("|"):[],[y]),ee=xe.useMemo(()=>({maxCount:ue.imageUpload.maxCount,mode:ue.imageUpload.mode,labels:te,labelsSignature:y}),[ue.imageUpload.maxCount,ue.imageUpload.mode,te,y]),pe=xe.useMemo(()=>{var w;const u=fe.find(A=>A.id==="duration"),N=W.duration;return N&&((w=u==null?void 0:u.options)!=null&&w.some(A=>A.value===N))?N:(u==null?void 0:u.defaultValue)||ue.defaultDuration},[fe,ue.defaultDuration,W.duration]),f=xe.useMemo(()=>{var w;const u=fe.find(A=>A.id==="size"),N=W.size;return N&&((w=u==null?void 0:u.options)!=null&&w.some(A=>A.value===N))?N:(u==null?void 0:u.defaultValue)||ue.defaultSize},[fe,ue.defaultSize,W.size]),c=xe.useMemo(()=>fe.length>0,[fe]),C=t.useCallback((u,N)=>{if(!N||N==="default"){le(w=>{const A={...w};return delete A[u],A});return}le(w=>({...w,[u]:N}))},[]);t.useEffect(()=>{const u=fe.reduce((N,w)=>{const A=W[w.id],ie=!A||w.valueType!=="enum"||!w.options||w.options.some(ye=>ye.value===A);return A&&ie?N[w.id]=A:w.defaultValue&&(N[w.id]=w.defaultValue),N},{});is(W,u)||le(u)},[fe,W]);const[V,T]=t.useState(()=>i&&i.length>0?i:s?[{slot:0,slotLabel:"参考图",url:s.url||"",name:s.name,file:s.file}]:[]),[F,q]=t.useState(()=>{const u=ue.imageUpload.maxCount,N=ue.imageUpload.labels||[];let w=[];return i&&i.length>0?w=i:s&&(w=[{slot:0,slotLabel:N[0]||"参考图",url:s.url||"",name:s.name,file:s.file}]),w.slice(0,u).map((A,ie)=>({...A,slot:ie,slotLabel:N[ie]||`参考图${ie+1}`}))}),[ce,I]=t.useState(!1),[Ie,ge]=t.useState([]),je=xe.useMemo(()=>Sa(P),[P]),be=zt(P),{videoHistory:ve}=Vt(),[De,Ne]=t.useState(0),{isGenerating:we}=hs("video"),Se=t.useCallback(u=>{g(u)},[]),Ce=t.useCallback(()=>{z(u=>!u)},[]),{language:de}=at(),{createTask:it}=bs(),He=t.useRef(!1),nt=E!==void 0,Ye=xe.useRef(null),Ae=xe.useRef(null);t.useEffect(()=>{if(nt)return;const u=N=>{const w=N.videoModelName||"veo3";if(w!==P){me(w);const A=$e(oe,w,J);G(A)}};return Pe.addListener(u),()=>Pe.removeListener(u)},[P,J,nt,E,U,oe]),t.useEffect(()=>{if(oe.length===0)return;const u=Re(oe,P,J),N=$e(oe,P,J);if(!u){const w=oe[0],A=Te(w);me(w.id),G(ie=>yt(ie,A)?ie:A);return}G(w=>yt(w,N)?w:N)},[P,J,oe]),t.useEffect(()=>{if(!E)return;const u=Ee(E,U);if(Ye.current===u||Ae.current&&Ae.current!==E)return;Ye.current=u,me(w=>w===E?w:E);const N=$e(oe,E,U);G(w=>yt(w,N)?w:N)},[E,U,oe,n]);const[Xe,Fe]=t.useState(!1),[k,B]=t.useState(!1);t.useEffect(()=>{if(k){B(!1);return}const u=Qt(P,Ee(P,J)),N=lt(u.extraParams,o!==void 0?o.toString():u.duration,d||u.size);le(w=>is(w,N)?w:N),zt(P)||(I(w=>w&&!1),ge(w=>w.length>0?[]:w))},[P,J,k,o,d]),t.useEffect(()=>{const u=V.length>0?ns(V,ee.maxCount,ee.labels):[];q(N=>ai(N,u)?N:u)},[V,ee.labels,ee.labelsSignature,ee.maxCount]),t.useEffect(()=>{const u=os(W,pe,f);Ra({currentModel:P,currentSelectionKey:Ee(P,J),extraParams:u.extraParams,duration:u.duration,size:u.size})},[P,J,pe,f,W]);const Y=xe.useRef("");t.useEffect(()=>{if(Xe)return;const u=JSON.stringify({prompt:a,image:s==null?void 0:s.url,images:i==null?void 0:i.map(A=>A.url),duration:o,model:n,size:d,result:h});if(Y.current===u)return;Y.current=u,n&&(Ae.current=n,me(n),G($e(m,n,U))),v(a);let N=[];i&&i.length>0?N=i:s&&(N=[{slot:0,slotLabel:"参考图",url:s.url||"",name:s.name,file:s.file}]),T(N);const w=ns(N,ee.maxCount,ee.labels);q(w),(o!==void 0||d)&&le(A=>lt(A,o,d)),_(null)},[a,s,i,o,d,h,ee.labels,ee.labelsSignature,ee.maxCount,Xe]),t.useEffect(()=>(_(null),()=>{_(null)}),[]);const X=()=>{v(""),T([]),q([]),_(null),j("config"),Fe(!1),I(!1),ge([]),le(vt(P,J||P)),window.dispatchEvent(new CustomEvent("ai-video-clear"))},Ve=xe.useCallback((u,N)=>u.map((w,A)=>({slot:A,slotLabel:N[A]||`参考图${A+1}`,url:w.url,name:w.name,file:w.file})),[]),Je=xe.useCallback(u=>u.map(N=>({url:N.url,name:N.name,file:N.file})),[]),ot=xe.useCallback(u=>{const N=Ve(u,ee.labels);q(N),T(N)},[ee.labels,Ve]),Le=xe.useMemo(()=>ys("video",de,ve),[ve,de,De]),pt=u=>{ks("video",u),Ne(N=>N+1)},Qe=t.useRef("");t.useEffect(()=>{if(!p)return;const u=Number.parseFloat(pe),N={prompt:x,images:F.map(ie=>({url:ie.url,name:ie.name})),duration:Number.isFinite(u)?u:void 0,size:f||void 0},w=JSON.stringify(N);if(Qe.current===w)return;const A=window.setTimeout(()=>{Qe.current!==w&&(Qe.current=w,p(N))},200);return()=>{window.clearTimeout(A)}},[pe,f,p,x,F]);const qt=u=>{var w,A;if(Fe(!0),j("config"),B(!0),u.params.model){me(u.params.model),G(u.params.modelRef||null);const ie=Pe.get();Pe.update({...ie,videoModelName:u.params.model})}if((w=u.params.storyboard)!=null&&w.enabled&&((A=u.params.storyboard)!=null&&A.scenes))I(!0),ge(u.params.storyboard.scenes),v("");else{const ie=u.params.prompt||"",ye=Ja(ie);ye&&ye.length>0?(I(!0),ge(ye),v("")):(I(!1),ge([]),v(ie))}const N=u.params.params&&typeof u.params.params=="object"?Object.entries(u.params.params).reduce((ie,[ye,Ue])=>(Ue!=null&&String(Ue).trim()&&(ie[ye]=String(Ue)),ie),{}):{};if(le(lt(N,u.params.duration??u.params.seconds,u.params.size)),u.params.uploadedImages&&u.params.uploadedImages.length>0){T(u.params.uploadedImages);const ie=u.params.model||P,ye=Lt(ie,u.params.modelRef||ie,N),Ue=ye.imageUpload.maxCount,Ge=ye.imageUpload.labels||[],et=u.params.uploadedImages.slice(0,Ue).map((Me,gt)=>({...Me,slot:gt,slotLabel:Ge[gt]||`参考图${gt+1}`}));q(et)}else T([]),q([]);_(null)},Oe=async(u=1)=>{if(!He.current){He.current=!0;try{if(ce){const N=Ya(Ie,parseFloat(pe),je.minSceneDuration);if(!N.valid){_(N.error||"场景配置无效");return}}else if(!x||!x.trim()){_(de==="zh"?"请输入视频描述":"Please enter video description");return}try{const N=[];for(const ye of F)if(ye.file){const Ue=await new Promise((Ge,et)=>{const Me=new FileReader;Me.onload=()=>Ge(Me.result),Me.onerror=et,Me.readAsDataURL(ye.file)});N.push({...ye,url:Ue,file:void 0})}else N.push({...ye,file:void 0});const w=ce?Xa(Ie):(x||"").trim(),A=[],ie=L||`video_batch_${Date.now()}`;for(let ye=0;ye<u;ye++){const Ue=os(W,pe,f),Ge=Object.keys(Ue.extraParams).length>0?Ue.extraParams:void 0,et={prompt:w,model:P,modelRef:J||null,seconds:Ue.duration,size:Ue.size,uploadedImages:N,...ce&&{storyboard:{enabled:!0,scenes:Ie,totalDuration:parseFloat(pe)}},batchId:ie,batchIndex:ye+1,batchTotal:u,autoInsertToCanvas:S??jt(tt.AI_VIDEO_AUTO_INSERT),...Ge?{params:Ge}:{}},Me=it(et,ke.VIDEO);Me&&A.push(Me.id)}A.length>0?(qe.success(de==="zh"?u>1?`${A.length} 个视频任务已添加到队列,将在后台生成`:"视频任务已添加到队列,将在后台生成":u>1?`${A.length} video tasks added to queue, will be generated in background`:"Video task added to queue, will be generated in background"),pt(w),v(""),T([]),q([]),I(!1),ge([]),_(null),j("tasks"),Fe(!1)):_(de==="zh"?"任务创建失败,请检查参数或稍后重试":"Failed to create task, please check parameters or try again later")}catch(N){console.error("Failed to create task:",N);let w=de==="zh"?"任务创建失败,请检查参数或稍后重试":"Failed to create task, please check parameters or try again later";N.message&&(N.message.includes("exceed 5000 characters")?w=de==="zh"?"提示词不能超过 5000 字符":"Prompt must not exceed 5000 characters":N.message.includes("Duplicate submission")?w=de==="zh"?"请勿重复提交,请等待 5 秒后再试":"Duplicate submission. Please wait 5 seconds.":N.message.includes("Invalid parameters")&&(w=de==="zh"?`参数错误: ${N.message.replace("Invalid parameters: ","")}`:N.message)),_(w)}}finally{He.current=!1}}};return xs(we,x,Oe),e.jsxDEV("div",{className:"ai-video-generation-container",children:[ne?e.jsxDEV("div",{className:"ai-generation-mobile-switcher",role:"tablist",children:[e.jsxDEV("button",{type:"button",className:`ai-generation-mobile-switcher__tab ${D==="config"?"ai-generation-mobile-switcher__tab--active":""}`,onClick:()=>j("config"),children:"生成设置"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1183,columnNumber:11},void 0),e.jsxDEV("button",{type:"button",className:`ai-generation-mobile-switcher__tab ${D==="tasks"?"ai-generation-mobile-switcher__tab--active":""}`,onClick:()=>j("tasks"),children:"生成任务"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1194,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1182,columnNumber:9},void 0):null,e.jsxDEV("div",{className:`main-content ${ne?"main-content--mobile-panels":""}`,ref:R,children:[e.jsxDEV("div",{className:`ai-image-generation-section ${ne&&D!=="config"?"ai-generation-mobile-panel--hidden":""}`,children:[e.jsxDEV("div",{className:"ai-image-generation-form",children:[E!==void 0&&r&&e.jsxDEV("div",{className:"form-header-row",children:e.jsxDEV("div",{className:"model-selector-wrapper",children:e.jsxDEV(Ns,{selectedModel:P,selectedSelectionKey:Ee(P,J),onSelect:(u,N)=>{const w=u,A=$e(oe,w,N||null);Ae.current=null,me(w),G(A),le(vt(w,A||w)),r(u),b==null||b(A)},onSelectModel:u=>{const N=u.id;Ae.current=null,me(N);const w=$e(oe,N,Te(u));G(w),le(vt(N,w||N)),r(u.id),b==null||b(w)},language:de,models:oe,placement:"down",variant:"form",placeholder:de==="zh"?"选择视频模型":"Select Video Model",disabled:we},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1227,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1226,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1225,columnNumber:15},void 0),c&&e.jsxDEV("div",{className:"model-params-row",children:e.jsxDEV(vs,{selectedParams:W,onParamChange:C,compatibleParams:fe,modelId:P,language:de,disabled:we,placement:"down"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1287,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1286,columnNumber:15},void 0),e.jsxDEV(js,{images:Je(F),onImagesChange:ot,language:de,disabled:we,multiple:ee.maxCount>1,maxCount:ee.maxCount,slotLabels:ee.mode==="frames"?ee.labels:void 0,label:ee.mode==="frames"?de==="zh"?"首尾帧图片 (可选)":"Start/End Frames (Optional)":de==="zh"?"参考图片 (可选)":"Reference Images (Optional)"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1300,columnNumber:13},void 0),be&&e.jsxDEV(Za,{enabled:ce,onEnabledChange:I,totalDuration:parseFloat(pe),maxScenes:je.maxScenes,minSceneDuration:je.minSceneDuration,scenes:Ie,onScenesChange:ge,disabled:we},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1325,columnNumber:15},void 0),!ce&&e.jsxDEV(_s,{prompt:x,onPromptChange:v,presetPrompts:Le,language:de,type:"video",disabled:we,onError:_,videoProvider:ue.provider},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1339,columnNumber:15},void 0),e.jsxDEV(Cs,{error:$},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1351,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1222,columnNumber:11},void 0),e.jsxDEV(Us,{language:de,type:"video",isGenerating:we,hasGenerated:!1,canGenerate:ce?Ie.length>0:!!(x&&x.trim()),onGenerate:Oe,onReset:X,leftContent:e.jsxDEV(Ls,{storageKey:tt.AI_VIDEO_AUTO_INSERT,language:de},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1367,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1354,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1215,columnNumber:9},void 0),ne?null:e.jsxDEV(As,{isRightPanelVisible:M,onToggleRightPanel:Ce,onWidthChange:Se,rightPanelWidth:l,language:de,storageKey:"video"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1376,columnNumber:11},void 0),(ne||M)&&e.jsxDEV("div",{className:`task-sidebar ${ne?"task-sidebar--mobile-panel":""} ${ne&&D!=="tasks"?"ai-generation-mobile-panel--hidden":""}`,style:ne?void 0:{width:l,flexShrink:0},children:e.jsxDEV(zs,{taskType:ke.VIDEO,onEditTask:qt},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1402,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1388,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1208,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ai-video-generation.tsx",lineNumber:1180,columnNumber:5},void 0)},oi=t.lazy(()=>Dt(()=>import("./batch-image-generation-Bg68r_Ql.js"),__vite__mapDeps([0,1]),import.meta.url)),ri=({container:a})=>{const{appState:s,openDialog:i,closeDialog:o}=ft(),{language:n}=at(),d=St(),{isMobile:h,isTablet:E}=It(),U=s.dialogInitialDataByType,r=(U==null?void 0:U[he.aiImageGeneration])??null,b=(U==null?void 0:U[he.aiVideoGeneration])??null,L=!h&&!E,S=t.useRef(!1),p=t.useRef(null),[m,x]=t.useState(""),[v,$]=t.useState(null),[_,M]=t.useState(""),[z,l]=t.useState(null),g=t.useRef(null),D=t.useRef(null),j=t.useCallback(()=>{const y=We("image"),te=We("video"),ee=y.modelId||"gemini-3-pro-image-preview-vip",pe=_e(y.profileId,ee),f=te.modelId||"veo3",c=_e(te.profileId,f);x(C=>C===ee?C:ee),$(C=>Ee(ee,C)===Ee(ee,pe)?C:pe),M(C=>C===f?C:f),l(C=>Ee(f,C)===Ee(f,c)?C:c)},[]);t.useEffect(()=>{j()},[j]),t.useEffect(()=>{const y=()=>{j()};return Pe.addListener(y),Ot.addListener(y),()=>{Pe.removeListener(y),Ot.removeListener(y)}},[j]);const R=y=>{x(y)},se=y=>{M(y)},ne=y=>{$(y)},Q=y=>{l(y)};t.useEffect(()=>{if(!m)return;const y=Ee(m,v);g.current!==y&&(g.current=y,$t("image",_e(v==null?void 0:v.profileId,m)))},[m,v]),t.useEffect(()=>{if(!_)return;const y=Ee(_,z);D.current!==y&&(D.current=y,$t("video",_e(z==null?void 0:z.profileId,_)))},[_,z]);const[O,ae]=t.useState({initialPrompt:"",initialImages:[],selectedElementIds:[]}),[K,re]=t.useState({initialPrompt:"",initialImage:void 0}),[P,me]=t.useState(!1),[J,G]=t.useState(()=>{try{return localStorage.getItem(xt)==="batch"?"batch":"single"}catch{return"single"}});t.useEffect(()=>{!L&&J==="batch"&&G("single")},[L,J]);const H=t.useCallback(y=>{G(y),y==="batch"&&(me(!0),setTimeout(()=>me(!1),50));try{localStorage.setItem(xt,y)}catch(te){console.warn("Failed to save image mode:",te)}},[]);t.useEffect(()=>{if(s.openDialogTypes.has(he.aiImageGeneration)){if(O.initialImages&&O.initialImages.length>0||O.initialPrompt&&O.initialPrompt.trim()!==""){me(!1);return}try{localStorage.getItem(xt)==="batch"&&(me(!0),setTimeout(()=>me(!1),50))}catch{me(!1)}}},[s.openDialogTypes,O.initialImages,O.initialPrompt]);const Z=t.useRef(!1),oe=t.useRef(r),W=t.useRef(!1),le=t.useRef(b);t.useEffect(()=>{if(!d)return;const y=s.openDialogTypes.has(he.aiImageGeneration),te=y&&!Z.current,ee=oe.current!==r;if(Z.current=y,oe.current=r,!y||!te&&!ee||S.current)return;(async()=>{S.current=!0,p.current&&clearTimeout(p.current),p.current=setTimeout(()=>{console.warn("Processing timeout, resetting processing state"),S.current=!1},1e4);try{if(r){ae({initialPrompt:r.initialPrompt||r.prompt||"",initialImages:r.initialImages||r.uploadedImages||[],selectedElementIds:[],initialResultUrl:r.initialResultUrl||r.resultUrl,initialAspectRatio:r.initialAspectRatio,targetFrameId:r.targetFrameId,targetFrameDimensions:r.targetFrameDimensions,pptSlideImage:r.pptSlideImage,pptSlidePrompt:r.pptSlidePrompt,pptReplaceElementId:r.pptReplaceElementId}),r.initialModel&&x(r.initialModel),r.initialModelRef!==void 0&&$(r.initialModelRef);return}const f=s.lastSelectedElementIds||[];let c,C,V;const T=Va(d);if(T.length===1&&Ua(T[0])){const ce=T[0],I=kt.getRectangleByPoints(ce.points);c=_a(I.width,I.height),C=ce.id,V={width:I.width,height:I.height}}const F=await Ht(d,f),q=[];F.remainingImages.forEach(ce=>{q.push({url:ce.url,name:ce.name||`selected-image-${Date.now()}.png`})}),F.graphicsImage&&q.push({url:F.graphicsImage,name:`graphics-combined-${Date.now()}.png`}),ae({initialPrompt:F.remainingText||"",initialImages:q,selectedElementIds:f,initialAspectRatio:c,targetFrameId:C,targetFrameDimensions:V})}catch(f){console.warn("Error processing selected content for AI:",f);const c=Yt(d),C=c.images.map(V=>({url:V.url,name:V.name||`selected-image-${Date.now()}.png`}));ae({initialPrompt:c.text||"",initialImages:C,selectedElementIds:[]})}finally{S.current=!1,p.current&&(clearTimeout(p.current),p.current=null)}})()},[s.lastSelectedElementIds,s.openDialogTypes,d,r]),t.useEffect(()=>{if(!d)return;const y=s.openDialogTypes.has(he.aiVideoGeneration),te=y&&!W.current,ee=le.current!==b;if(W.current=y,le.current=b,!y||!te&&!ee||S.current)return;(async()=>{S.current=!0,p.current&&clearTimeout(p.current),p.current=setTimeout(()=>{console.warn("Video processing timeout, resetting processing state"),S.current=!1},1e4);try{if(b){re({initialPrompt:b.initialPrompt||b.prompt||"",initialImage:b.initialImage||b.uploadedImage,initialImages:b.initialImages||b.uploadedImages,initialDuration:b.initialDuration||b.duration,initialModel:b.initialModel||b.model,initialSize:b.initialSize||b.size,initialResultUrl:b.initialResultUrl||b.resultUrl});const V=b.initialModel||b.model;V&&M(V),b.initialModelRef!==void 0&&l(b.initialModelRef);return}const f=s.lastSelectedElementIds||[],c=await Ht(d,f),C=[];c.remainingImages.length>0?c.remainingImages.forEach((V,T)=>{C.push({url:V.url,name:V.name||`selected-image-${T+1}-${Date.now()}.png`})}):c.graphicsImage&&C.push({url:c.graphicsImage,name:`graphics-combined-${Date.now()}.png`}),re({initialPrompt:c.remainingText||"",initialImage:C.length>0?C[0]:void 0,initialImages:C.map((V,T)=>({slot:T,slotLabel:`参考图${T+1}`,url:V.url,name:V.name}))})}catch(f){console.warn("Error processing selected content for AI video:",f);const c=Yt(d),C=c.images.map((V,T)=>({url:V.url,name:V.name||`selected-image-${T+1}-${Date.now()}.png`}));re({initialPrompt:c.text||"",initialImage:C.length>0?C[0]:void 0,initialImages:C.map((V,T)=>({slot:T,slotLabel:`参考图${T+1}`,url:V.url,name:V.name}))})}finally{S.current=!1,p.current&&(clearTimeout(p.current),p.current=null)}})()},[s.lastSelectedElementIds,s.openDialogTypes,d,b]),t.useEffect(()=>{s.openDialogTypes.size===0&&(S.current=!1,Z.current=!1,oe.current=null,W.current=!1,le.current=null,p.current&&(clearTimeout(p.current),p.current=null))},[s.openDialogTypes]);const fe=t.useCallback(()=>{const y=localStorage.getItem(Ft);if(y)try{const te=JSON.parse(y);te.timestamp=Date.now(),localStorage.setItem(Ft,JSON.stringify(te))}catch(te){console.warn("Failed to update cache timestamp:",te)}o(he.aiImageGeneration)},[o]),ue=t.useCallback(()=>{const y=localStorage.getItem(Bt);if(y)try{const te=JSON.parse(y);te.timestamp=Date.now(),localStorage.setItem(Bt,JSON.stringify(te))}catch(te){console.warn("Failed to update cache timestamp:",te)}o(he.aiVideoGeneration)},[o]);return e.jsxDEV(e.Fragment,{children:[e.jsxDEV(Gt,{open:s.openDialogTypes.has(he.mermaidToDrawnix),onOpenChange:y=>{y?i(he.mermaidToDrawnix):o(he.mermaidToDrawnix)},children:e.jsxDEV(Wt,{className:"Dialog ttd-dialog",container:a,children:e.jsxDEV(Fa,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:653,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:652,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:642,columnNumber:7},void 0),e.jsxDEV(Gt,{open:s.openDialogTypes.has(he.markdownToDrawnix),onOpenChange:y=>{y?i(he.markdownToDrawnix):o(he.markdownToDrawnix)},children:e.jsxDEV(Wt,{className:"Dialog ttd-dialog",container:a,children:e.jsxDEV(Ba,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:667,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:666,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:656,columnNumber:7},void 0),e.jsxDEV(Kt,{id:"ai-image-dialog",visible:s.openDialogTypes.has(he.aiImageGeneration),title:J==="batch"?n==="zh"?"批量出图":"Batch Generation":n==="zh"?"AI 图片生成":"AI Image Generation",headerContent:L?e.jsxDEV("div",{className:"image-generation-mode-tabs",onMouseDown:y=>y.stopPropagation(),onTouchStart:y=>y.stopPropagation(),onPointerDown:y=>y.stopPropagation(),children:[e.jsxDEV("button",{type:"button",className:`mode-tab ${J==="single"?"active":""}`,onClick:y=>{y.stopPropagation(),y.preventDefault(),H("single")},children:n==="zh"?"AI 图片生成":"AI Image"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:691,columnNumber:15},void 0),e.jsxDEV("button",{type:"button",className:`mode-tab ${J==="batch"?"active":""}`,onClick:y=>{y.stopPropagation(),y.preventDefault(),H("batch")},children:n==="zh"?"批量出图":"Batch"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:704,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:685,columnNumber:13},void 0):void 0,onClose:fe,width:"80%",height:"60%",minWidth:800,minHeight:500,x:"center",y:"center",modal:!1,minimizable:!1,className:"winbox-ai-generation winbox-ai-image-generation",container:a,autoMaximize:P||h,children:s.openDialogTypes.has(he.aiImageGeneration)&&(J==="batch"?e.jsxDEV(t.Suspense,{fallback:e.jsxDEV("div",{className:"loading-fallback",children:n==="zh"?"加载中...":"Loading..."},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:737,columnNumber:17},void 0),children:e.jsxDEV(oi,{onSwitchToSingle:()=>H("single"),selectedModel:m,selectedModelRef:v,onModelChange:R,onModelRefChange:ne},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:742,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:735,columnNumber:13},void 0):e.jsxDEV(si,{initialPrompt:O.initialPrompt,initialImages:O.initialImages,selectedElementIds:O.selectedElementIds,initialWidth:(r==null?void 0:r.initialWidth)||(r==null?void 0:r.width),initialHeight:(r==null?void 0:r.initialHeight)||(r==null?void 0:r.height),initialResultUrl:O.initialResultUrl,initialAspectRatio:O.initialAspectRatio,targetFrameId:O.targetFrameId,targetFrameDimensions:O.targetFrameDimensions,pptSlideImage:O.pptSlideImage,pptSlidePrompt:O.pptSlidePrompt,pptReplaceElementId:O.pptReplaceElementId,selectedModel:m,selectedModelRef:v,onModelChange:R,onModelRefChange:ne,externalBatchId:r==null?void 0:r.batchId,initialAutoInsertToCanvas:r==null?void 0:r.autoInsertToCanvas,onDraftChange:r==null?void 0:r.onDraftChange},(r==null?void 0:r.batchId)||"ai-image-dialog",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:751,columnNumber:13},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:671,columnNumber:7},void 0),e.jsxDEV(Kt,{id:"ai-video-dialog",visible:s.openDialogTypes.has(he.aiVideoGeneration),title:n==="zh"?"AI 视频生成":"AI Video Generation",onClose:ue,width:"70%",height:"60%",minWidth:800,minHeight:600,x:"center",y:"center",modal:!1,minimizable:!1,className:"winbox-ai-generation winbox-ai-video-generation",container:a,autoMaximize:h,children:s.openDialogTypes.has(he.aiVideoGeneration)&&e.jsxDEV(ni,{initialPrompt:K.initialPrompt,initialImage:K.initialImage,initialImages:K.initialImages,initialDuration:K.initialDuration,initialModel:K.initialModel,initialSize:K.initialSize,initialResultUrl:K.initialResultUrl,selectedModel:_,selectedModelRef:z,onModelChange:se,onModelRefChange:Q,externalBatchId:b==null?void 0:b.batchId,initialAutoInsertToCanvas:b==null?void 0:b.autoInsertToCanvas,onDraftChange:b==null?void 0:b.onDraftChange},(b==null?void 0:b.batchId)||"ai-video-dialog",!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:800,columnNumber:11},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:782,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/ttd-dialog/ttd-dialog.tsx",lineNumber:641,columnNumber:5},void 0)},pi=t.memo(ri,(a,s)=>a.container===s.container);export{pi as TTDDialog};
|