aitu-app 0.6.39 → 0.6.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/assets/{AudioTrackList-CQEd1SE2.js → AudioTrackList-BtCRG0W9.js} +1 -1
- package/assets/{BaseDrawer-F3GT0wol.js → BaseDrawer-D3uMjiL3.js} +1 -1
- package/assets/{CanvasAudioPlayer-BzrQPq21.js → CanvasAudioPlayer-UVBRzAXF.js} +2 -2
- package/assets/{ChatMessagesArea-BVWuc832.js → ChatMessagesArea-DJejf06U.js} +2 -2
- package/assets/{DeferredMediaLibraryModal-CIs0-iBb.js → DeferredMediaLibraryModal-DcsXW5VN.js} +1 -1
- package/assets/{DeferredSyncSettings-CYz23NFv.js → DeferredSyncSettings-CyaQpm3i.js} +1 -1
- package/assets/{DrawnixDeferredFeatures-D5KdFjk7.js → DrawnixDeferredFeatures-Dn7Xj0Z3.js} +1 -1
- package/assets/DrawnixDeferredRuntime-IAIlHrj-.js +2 -0
- package/assets/{FrameSlideshow-B5Sqi_uV.js → FrameSlideshow-BoTtxoO1.js} +1 -1
- package/assets/{KnowledgeBaseContent-CmYEJ68E.js → KnowledgeBaseContent-H9TbTJvp.js} +3 -3
- package/assets/{MVCreator-CiekRLRL.js → MVCreator-aXPJyopn.js} +1 -1
- package/assets/{MediaViewer-CSkzdABU.js → MediaViewer-DzoUeXBR.js} +1 -1
- package/assets/{ModelBenchmarkWorkbench-Cg3ZArhL.js → ModelBenchmarkWorkbench-BwWtsodh.js} +1 -1
- package/assets/{MusicAnalyzer-DKddmB8C.js → MusicAnalyzer-CDvA6t6F.js} +1 -1
- package/assets/{MusicAnalyzer-Ch6kc-VC.js → MusicAnalyzer-dSwp-5u_.js} +1 -1
- package/assets/{PerformancePanel-CG1_1lC_.js → PerformancePanel-DzTs2p1S.js} +1 -1
- package/assets/{ProjectDrawer-B05H2n8S.js → ProjectDrawer-DewT6n4a.js} +1 -1
- package/assets/{ResizableDivider-3ZzTVK5M.js → ResizableDivider-C2cq_TjJ.js} +1 -1
- package/assets/TaskQueuePanel-BeApAqO9.js +33 -0
- package/assets/{ToolWinBoxManager-CX4BFjZL.js → ToolWinBoxManager-Soe0apvc.js} +1 -1
- package/assets/{ToolboxDrawer-DVxfQUMA.js → ToolboxDrawer-Btme0xvj.js} +1 -1
- package/assets/{VideoAnalyzer-BZLeASAQ.js → VideoAnalyzer-CuzOgGcP.js} +1 -1
- package/assets/{_baseFlatten-DHT6_8EL.js → _baseFlatten-BCqnPdEZ.js} +1 -1
- package/assets/{_baseUnset-Cb5y6_CP.js → _baseUnset-CvjcxnsS.js} +1 -1
- package/assets/_flatRest-rR2Z0C6Y.js +1 -0
- package/assets/{ai-analyze-BvjohIET.js → ai-analyze-X7h-GOWX.js} +1 -1
- package/assets/{arc-wiKe35BQ.js → arc-DXO039Xm.js} +1 -1
- package/assets/{arc-8k3RC1rL.js → arc-pfqxEt0t.js} +1 -1
- package/assets/{backup-restore-dialog-Cyxi_Y_l.js → backup-restore-dialog-BtB57ttG.js} +1 -1
- package/assets/{batch-image-generation-7zLsAOoI.js → batch-image-generation-D-i-Clb3.js} +1 -1
- package/assets/{blockDiagram-38ab4fdb-C1eTyro1.js → blockDiagram-38ab4fdb-DaJgeJH3.js} +1 -1
- package/assets/{blockDiagram-38ab4fdb-B_Rlv1o7.js → blockDiagram-38ab4fdb-Ds5ygtJ4.js} +1 -1
- package/assets/{browser-BV_Vo8ib.js → browser-BanMklii.js} +1 -1
- package/assets/{c4Diagram-3d4e48cf-wWn-Dh3x.js → c4Diagram-3d4e48cf-DJiQAduw.js} +1 -1
- package/assets/{c4Diagram-3d4e48cf-DJ9zPKS5.js → c4Diagram-3d4e48cf-o7ZLfD1H.js} +1 -1
- package/assets/{canvas-search-C6q6eL16.js → canvas-search-B3cv-vBS.js} +1 -1
- package/assets/channel-B6SjUS7J.js +1 -0
- package/assets/channel-DmO21CjN.js +1 -0
- package/assets/{character-api-service-C-_8TuNT.js → character-api-service-Z5lj969r.js} +1 -1
- package/assets/{character-storage-service-C2yg9sZZ.js → character-storage-service-C15hxlXu.js} +1 -1
- package/assets/{chevron-right-Dz5PrqD9.js → chevron-right-JQJ6nsCM.js} +1 -1
- package/assets/{classDiagram-70f12bd4-ZR7RlD8j.js → classDiagram-70f12bd4-BuujyQDs.js} +1 -1
- package/assets/{classDiagram-70f12bd4-C98UuGfZ.js → classDiagram-70f12bd4-Ck4-oQ5D.js} +1 -1
- package/assets/{classDiagram-v2-f2320105-CRHLGmlc.js → classDiagram-v2-f2320105-DoNQx5aA.js} +1 -1
- package/assets/{classDiagram-v2-f2320105-DwdJcJnt.js → classDiagram-v2-f2320105-Dv6Fyw1T.js} +1 -1
- package/assets/{clipper-C-3Qh_LP.js → clipper-Mxx-YtU_.js} +1 -1
- package/assets/clone-B5TrWxil.js +1 -0
- package/assets/clone-BtBg_52f.js +1 -0
- package/assets/{cloud-upload-CUOtugCp.js → cloud-upload-BPCicte3.js} +1 -1
- package/assets/{command-palette-CFAIZcMn.js → command-palette-DtjyZO1K.js} +1 -1
- package/assets/{createText-2e5e7dd3-D5vBY76-.js → createText-2e5e7dd3-C1lbpLn5.js} +1 -1
- package/assets/{createText-2e5e7dd3-tEJFXclV.js → createText-2e5e7dd3-zEue2anl.js} +1 -1
- package/assets/{download-hxWX9Zug.js → download-DYHFFs_D.js} +1 -1
- package/assets/{edges-e0da2a9e-CZg0dJ7e.js → edges-e0da2a9e-6TFI6ri7.js} +1 -1
- package/assets/{edges-e0da2a9e-DdZcggFY.js → edges-e0da2a9e-DLDhf7N7.js} +1 -1
- package/assets/{erDiagram-9861fffd-Bmy_l1e2.js → erDiagram-9861fffd-BwNvQade.js} +1 -1
- package/assets/{erDiagram-9861fffd-BST5k6B4.js → erDiagram-9861fffd-D8gvypkQ.js} +1 -1
- package/assets/{flowDb-956e92f1-C1e0_b4D.js → flowDb-956e92f1-BjoO9lX3.js} +1 -1
- package/assets/{flowDb-956e92f1-DSmVZJdU.js → flowDb-956e92f1-DThEumt2.js} +1 -1
- package/assets/{flowDiagram-66a62f08-CGUWQVBs.js → flowDiagram-66a62f08-D_3eV3FW.js} +1 -1
- package/assets/{flowDiagram-66a62f08-DhtZQo8y.js → flowDiagram-66a62f08-Djar-0xH.js} +1 -1
- package/assets/flowDiagram-v2-96b9c2cf-D_o_l8mf.js +1 -0
- package/assets/flowDiagram-v2-96b9c2cf-DlX4O43J.js +1 -0
- package/assets/{flowchart-elk-definition-4a651766-3gPCxf8A.js → flowchart-elk-definition-4a651766-DRuIOBj4.js} +1 -1
- package/assets/{flowchart-elk-definition-4a651766-CHnG4qQD.js → flowchart-elk-definition-4a651766-jtxteXv9.js} +1 -1
- package/assets/{ganttDiagram-c361ad54-CdFUB0PH.js → ganttDiagram-c361ad54-CMUm4MNv.js} +1 -1
- package/assets/{ganttDiagram-c361ad54-BGYuN1kY.js → ganttDiagram-c361ad54-DHKw9_fl.js} +1 -1
- package/assets/{gitGraphDiagram-72cf32ee-89Sf2o_5.js → gitGraphDiagram-72cf32ee-BQLvVnfS.js} +1 -1
- package/assets/{gitGraphDiagram-72cf32ee-DmC20udR.js → gitGraphDiagram-72cf32ee-Bbv0LiBu.js} +1 -1
- package/assets/{graph-B7_YBdiF.js → graph-BrEvzXkm.js} +1 -1
- package/assets/{graph-czHcr1bG.js → graph-DjrCCbgI.js} +1 -1
- package/assets/{grid-image-BuvvMKxR.js → grid-image-CveytoVB.js} +1 -1
- package/assets/{has-aqa_Fwg4.js → has-CvGtAZQx.js} +1 -1
- package/assets/{hasIn-BDL07gxd.js → hasIn-nbpeC_Rj.js} +1 -1
- package/assets/{image-C--jLg-o.js → image-C9vXAEOB.js} +1 -1
- package/assets/{index-3862675e-dB13VUjK.js → index-3862675e-BPi9rMHp.js} +1 -1
- package/assets/{index-3862675e-DqCaYyno.js → index-3862675e-C7dRX1tW.js} +1 -1
- package/assets/{index-AlmVCHjU.js → index-9VQ_keH7.js} +1 -1
- package/assets/{index-B0oVxHhb.js → index-9eZTYsQ4.js} +1 -1
- package/assets/{index-BcO0jvMY.js → index-B4YlucHs.js} +3 -3
- package/assets/{index-H0kbbmQa.js → index-B9_izWqT.js} +1 -1
- package/assets/{index-Dh9eNp-v.js → index-BNDRjX-d.js} +1 -1
- package/assets/{index-BMU-_5bW.js → index-BPqPzEbH.js} +1 -1
- package/assets/{index-NgLyuYs6.js → index-BjfO-2FL.js} +1 -1
- package/assets/{index-Dn-qqFRl.js → index-BkVG2Gm-.js} +1 -1
- package/assets/{index-CGAblvb-.js → index-Bl3dSmrt.js} +1 -1
- package/assets/{index-BDQbV2jT.js → index-C-CsfKtF.js} +1 -1
- package/assets/{index-Cp9T70tQ.js → index-CD9kyN2v.js} +1 -1
- package/assets/{index-DClRjyu_.js → index-CEceAxXa.js} +1 -1
- package/assets/{index-DsUayqw4.js → index-CRwF9kqw.js} +1 -1
- package/assets/{index-BMDx01aS.js → index-CXL-MAju.js} +1 -1
- package/assets/{index-DO8EqZSl.js → index-CbaLEWkX.js} +1 -1
- package/assets/{index-B159qVyk.js → index-CexfuLbX.js} +2 -2
- package/assets/{index-B12ExW-F.js → index-CjN5gXVP.js} +1 -1
- package/assets/{index-D63ClKwx.js → index-Cpw9Vij_.js} +1 -1
- package/assets/{index-CkSVbc7G.js → index-CuwHJJO4.js} +1 -1
- package/assets/{index-DXQDvWCm.js → index-Cw2YKg1X.js} +1 -1
- package/assets/{index-CDzl3czx.js → index-CwNwP9Dz.js} +1 -1
- package/assets/{index-BzXnlXkO.js → index-D04A0IqG.js} +1 -1
- package/assets/{index-BrfFsgde.js → index-D3yA2Deq.js} +1 -1
- package/assets/{index-CLp1N2JZ.js → index-D5YSioyv.js} +446 -445
- package/assets/{index-C9YPl9-V.js → index-D5e1IjmG.js} +1 -1
- package/assets/{index-69uVWCdC.js → index-D6CsrbT9.js} +1 -1
- package/assets/{index-Bp7QPVjC.js → index-DGEeQ7HV.js} +1 -1
- package/assets/{index-CS5gukgf.js → index-DI85grSr.js} +1 -1
- package/assets/{index-lHFn9fJk.js → index-DT5jCbGv.js} +1 -1
- package/assets/{index-DZczd-Cs.js → index-DVeMBRmh.js} +1 -1
- package/assets/{index-CL20-Lcn.js → index-DVmfYR4F.js} +1 -1
- package/assets/{index-w5pQgeYM.js → index-Dl7bI3dX.js} +1 -1
- package/assets/{index-BtAZEAqz.js → index-DrbRZzbV.js} +1 -1
- package/assets/{index-B9-Ksy1Y.js → index-DurJrENV.js} +1 -1
- package/assets/{index-DOf52awh.js → index-DuziGvh-.js} +1 -1
- package/assets/{index-B_74mOb3.js → index-DvHo6b9D.js} +1 -1
- package/assets/{index-MJpNPXv1.js → index-JUrStxAi.js} +1 -1
- package/assets/{index-DQzqI7bu.js → index-adb9JY8F.js} +1 -1
- package/assets/{index-ByZKBjmp.js → index-ahgk9PwY.js} +1 -1
- package/assets/{index-CJoYIJX6.js → index-iluEOi_R.js} +1 -1
- package/assets/{index-C2BjB9jD.js → index-mLaJnBAA.js} +1 -1
- package/assets/{index-Cci1CSF_.js → index-oOX-Ov_6.js} +1 -1
- package/assets/{index-DRtMRiLt.js → index-rRAjaCK6.js} +1 -1
- package/assets/{infoDiagram-f8f76790-2cxTV6ND.js → infoDiagram-f8f76790-DrZHsJcU.js} +1 -1
- package/assets/{infoDiagram-f8f76790-ncuTC4ZY.js → infoDiagram-f8f76790-xt1FG5kQ.js} +1 -1
- package/assets/{inspiration-board-D82q1P-g.js → inspiration-board-BMLGXtqa.js} +1 -1
- package/assets/{isEmpty-B0mmAwLs.js → isEmpty-qhP_Neh1.js} +1 -1
- package/assets/{journeyDiagram-49397b02-DnlSIYWp.js → journeyDiagram-49397b02-BXRUGums.js} +1 -1
- package/assets/{journeyDiagram-49397b02-D8uY2urN.js → journeyDiagram-49397b02-HG6JHZLW.js} +1 -1
- package/assets/{layers-D8yoqIuj.js → layers-37JfnNNl.js} +1 -1
- package/assets/{layout-CNovTgcJ.js → layout-0pP-oOdd.js} +1 -1
- package/assets/{layout-a3RfPzuD.js → layout-DiM0C_oE.js} +1 -1
- package/assets/{line-CDzoo4WB.js → line-Cn0HzQ42.js} +1 -1
- package/assets/{line-DvT1zUiJ.js → line-mCdubqmQ.js} +1 -1
- package/assets/{linear-PVY0JHkj.js → linear-Bav735VS.js} +1 -1
- package/assets/{linear-DdU4qJ1G.js → linear-D-8dOoVw.js} +1 -1
- package/assets/{lock-on-CXR9jpJA.js → lock-on-Du4SUznS.js} +1 -1
- package/assets/{memoize-DRWJ2oTL.js → memoize-CUfUlF3P.js} +1 -1
- package/assets/{mermaid.core-DQGbcicL.js → mermaid.core-C90rcTNj.js} +3 -3
- package/assets/{mindmap-definition-fc14e90a-BsVSwvhh.js → mindmap-definition-fc14e90a-DrPVXCNG.js} +1 -1
- package/assets/{mindmap-definition-fc14e90a-nwzPUDis.js → mindmap-definition-fc14e90a-kvuxr1PD.js} +1 -1
- package/assets/{model-benchmark-launcher-mcvgVSuC.js → model-benchmark-launcher-D7-0vF6C.js} +1 -1
- package/assets/{move-DOixEjqO.js → move-CrZ5ZpJ2.js} +1 -1
- package/assets/{photo-wall-splitter-qUPnfBPY.js → photo-wall-splitter-DJyzIrKV.js} +1 -1
- package/assets/{pick-C6VtGb4t.js → pick-8ulasiIr.js} +1 -1
- package/assets/{pieDiagram-8a3498a8-9eGElA9h.js → pieDiagram-8a3498a8-BV4yujZi.js} +1 -1
- package/assets/{pieDiagram-8a3498a8-jvbiFkC_.js → pieDiagram-8a3498a8-COebT5dY.js} +1 -1
- package/assets/{quadrantDiagram-120e2f19-B78rPuqy.js → quadrantDiagram-120e2f19-D7Pf5tdd.js} +1 -1
- package/assets/{quadrantDiagram-120e2f19-BFZXHPpX.js → quadrantDiagram-120e2f19-DzzHIi2O.js} +1 -1
- package/assets/{refresh-Bh3E8vu6.js → refresh-DqZ7biGU.js} +1 -1
- package/assets/{requirementDiagram-deff3bca-Dwsj1NJQ.js → requirementDiagram-deff3bca-BBh4lHOB.js} +1 -1
- package/assets/{requirementDiagram-deff3bca-Dyve0zys.js → requirementDiagram-deff3bca-D4gYW6VD.js} +1 -1
- package/assets/{sankeyDiagram-04a897e0-Dqzsdxsz.js → sankeyDiagram-04a897e0-6qMEhCdC.js} +1 -1
- package/assets/{sankeyDiagram-04a897e0-BmtIc_Gd.js → sankeyDiagram-04a897e0-DZfZTWnU.js} +1 -1
- package/assets/{sequenceDiagram-704730f1-DynL_kQJ.js → sequenceDiagram-704730f1-CF1FgHNp.js} +1 -1
- package/assets/{sequenceDiagram-704730f1-B7x0Kpog.js → sequenceDiagram-704730f1-Ky4oD9iw.js} +1 -1
- package/assets/{settings-dialog-Sz7sfOrI.js → settings-dialog-DWewjQlv.js} +1 -1
- package/assets/{shard-sync-service-8YTrUOnK.js → shard-sync-service-DhnPeZid.js} +1 -1
- package/assets/{stateDiagram-587899a1-CJTsLZ1r.js → stateDiagram-587899a1-C8z4TA39.js} +1 -1
- package/assets/{stateDiagram-587899a1-DUJNQ1DY.js → stateDiagram-587899a1-DhG3pQnc.js} +1 -1
- package/assets/{stateDiagram-v2-d93cdb3a-CG_NTdTs.js → stateDiagram-v2-d93cdb3a-CZ40HHGj.js} +1 -1
- package/assets/{stateDiagram-v2-d93cdb3a-KVoAwaCx.js → stateDiagram-v2-d93cdb3a-WjPgMbps.js} +1 -1
- package/assets/{styles-6aaf32cf-DBt4ei8W.js → styles-6aaf32cf-BiffgEl9.js} +1 -1
- package/assets/{styles-6aaf32cf-Cba2lFIZ.js → styles-6aaf32cf-DvyqUWEr.js} +1 -1
- package/assets/{styles-9a916d00-DHlla0Yt.js → styles-9a916d00-FAscS3iZ.js} +1 -1
- package/assets/{styles-9a916d00-KLddCkwp.js → styles-9a916d00-L-cTkIzG.js} +1 -1
- package/assets/{styles-c10674c1-CRA4Rhbz.js → styles-c10674c1-CkrpQSst.js} +1 -1
- package/assets/{styles-c10674c1-COY2QM5h.js → styles-c10674c1-DEwIcJGE.js} +1 -1
- package/assets/{svgDrawCommon-08f97a94-g2Xfy9Cn.js → svgDrawCommon-08f97a94-ByDqcIPi.js} +1 -1
- package/assets/{svgDrawCommon-08f97a94-B-xiMCiD.js → svgDrawCommon-08f97a94-DuY5GSOk.js} +1 -1
- package/assets/{task.types-CLfkYpCd.js → task.types-CBk6eZLY.js} +1 -1
- package/assets/{throttle-rCTAR-V0.js → throttle-DggB2waX.js} +1 -1
- package/assets/{timeline-definition-85554ec2-K1ig-iz5.js → timeline-definition-85554ec2-D3RKFEj4.js} +1 -1
- package/assets/{timeline-definition-85554ec2-DzXbh9iM.js → timeline-definition-85554ec2-DScTS5ad.js} +1 -1
- package/assets/{ttd-dialog-DBgFfIa8.js → ttd-dialog-D0U4oJwF.js} +4 -4
- package/assets/{upload-DydsLM8-.js → upload-B9RKSZna.js} +1 -1
- package/assets/useCharacters-uSUTHHnh.js +6 -0
- package/assets/{version-update-prompt-BnY7MFFE.js → version-update-prompt-CN1vliv8.js} +1 -1
- package/assets/{video-UIyGGGOK.js → video-B4LwvF3Q.js} +1 -1
- package/assets/{video-recovery-service-DpIX-4Cn.js → video-recovery-service-QWvZ0c0j.js} +1 -1
- package/assets/{workflow-generation-utils-BFUZ8qwH.js → workflow-generation-utils-BOXsMshH.js} +2 -2
- package/assets/{xychartDiagram-e933f94c-DJXH3Qk3.js → xychartDiagram-e933f94c-8_HkrupM.js} +1 -1
- package/assets/{xychartDiagram-e933f94c-BHRiS9cZ.js → xychartDiagram-e933f94c-B6-zQO32.js} +1 -1
- package/changelog.json +30 -0
- package/idle-prefetch-manifest.json +2 -2
- package/package.json +1 -1
- package/precache-manifest.json +393 -393
- package/sw.js +1 -1
- package/version.json +5 -3
- package/assets/DrawnixDeferredRuntime-D-K_FUT-.js +0 -2
- package/assets/TaskQueuePanel-Dcg0DCDL.js +0 -33
- package/assets/_flatRest-CXdsvGPY.js +0 -1
- package/assets/channel-CBV8i3Jf.js +0 -1
- package/assets/channel-n9jkWJRh.js +0 -1
- package/assets/clone-DMkRnOiD.js +0 -1
- package/assets/clone-jEb1TSUN.js +0 -1
- package/assets/flowDiagram-v2-96b9c2cf-CAAw3p-z.js +0 -1
- package/assets/flowDiagram-v2-96b9c2cf-DVu2NCro.js +0 -1
- package/assets/useCharacters-B9XvF2GC.js +0 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
import{dB as me,dC as be,dD as se,dE as fe,dF as R,dG as z,dH as ae,dI as ie,dJ as re,dK as oe,dL as ne,dM as O,c$ as ke,aS as V,cS as P,dN as he,dO as U,dP as ce,dQ as ge,dR as Ne,dS as we,dT as xe,bd as de,dU as Z,ax as q,dV as G,dW as ye,dX as je,dY as Ee,dZ as ve,d_ as _e,d$ as Se,e0 as De,e1 as Ie,e2 as Ae,e3 as M,e4 as W,e5 as Ce,ab as Te,bE as Ue,b as D,bS as T,c5 as Be,x as n,e6 as Ve,e7 as Pe,d4 as $}from"./index-CLp1N2JZ.js";import{P as Y}from"./index-Dn-qqFRl.js";import{U as Fe}from"./upload-DydsLM8-.js";function Q(){return`${Date.now().toString(36)}-${Math.random().toString(36).substring(2,11)}`}const Re=500*1024*1024;async function qe(E,s,e=0){const r=URL.createObjectURL(E),a=document.createElement("a");a.href=r,a.download=s,document.body.appendChild(a),a.click(),document.body.removeChild(a),e>0&&await new Promise(i=>setTimeout(i,e)),URL.revokeObjectURL(r)}function Me(E){if(!E||Number.isNaN(E)||E<=0)return new Date;const s=E<1e12?E*1e3:E,e=new Date(s);return Number.isNaN(e.getTime())?new Date:e}class $e{constructor(s,e,r={}){if(this.baseFilename=s,this.backupId=e,this.options={source:"app",revokeDelayMs:0,interPartPauseMs:500,finalPartPauseMs:500,preserveAssetEntryDate:!1,downloadBlob:qe,ZipCtor:null,...r},!this.options.ZipCtor)throw new Error("SharedBackupPartManager requires ZipCtor");this.partIndex=1,this.currentZip=new this.options.ZipCtor,this.currentSize=0,this.downloadedParts=[],this.part1Zip=this.currentZip}addFile(s,e){const r=typeof e=="string"?e:JSON.stringify(e,null,2);this.currentZip.file(s,r),this.currentSize+=new Blob([r]).size}async addAssetBlob(s,e,r,a,i){const f=typeof a=="string"?a:JSON.stringify(a,null,2),N=e.size+new Blob([f]).size,c=this.options.preserveAssetEntryDate&&i?{date:Me(i)}:void 0;this.currentSize+N>Re&&this.currentSize>0&&(await this.finalizePart(),this.startNewPart());const l=this.currentZip.folder("assets");l.file(r,f,c),l.file(s,e,c),this.currentSize+=N}async finalizePart(){const s={signature:be,version:me,createdAt:Date.now(),source:this.options.source,backupId:this.backupId,partIndex:this.partIndex,totalParts:null,isFinalPart:!1,includes:{prompts:!1,projects:!1,assets:!0,tasks:!1,knowledgeBase:!1}};if((this.partIndex===1?this.part1Zip:this.currentZip).file("manifest.json",JSON.stringify(s,null,2)),this.partIndex===1)return;const r=await this.currentZip.generateAsync({type:"blob",compression:"DEFLATE",compressionOptions:{level:6}}),a=`${this.baseFilename}_part${this.partIndex}.zip`;this.downloadedParts.length>0&&this.options.interPartPauseMs>0&&await new Promise(i=>setTimeout(i,this.options.interPartPauseMs)),await this.options.downloadBlob(r,a,this.options.revokeDelayMs),this.downloadedParts.push({filename:a,size:r.size})}startNewPart(){this.partIndex+=1,this.currentZip=new this.options.ZipCtor,this.currentSize=0}async finalizeAll(s){if(!(this.partIndex>1)){const f={...s,backupId:this.backupId,partIndex:1,totalParts:1,isFinalPart:!0};this.part1Zip.file("manifest.json",JSON.stringify(f,null,2));const N=await this.part1Zip.generateAsync({type:"blob",compression:"DEFLATE",compressionOptions:{level:6}}),c=`${this.baseFilename}.zip`;return await this.options.downloadBlob(N,c,this.options.revokeDelayMs),{files:[{filename:c,size:N.size}],totalParts:1,stats:s.stats}}const r={...s,backupId:this.backupId,partIndex:1,totalParts:null,isFinalPart:!1};this.part1Zip.file("manifest.json",JSON.stringify(r,null,2));const a=await this.part1Zip.generateAsync({type:"blob",compression:"DEFLATE",compressionOptions:{level:6}}),i=`${this.baseFilename}_part1.zip`;if(await this.options.downloadBlob(a,i,this.options.revokeDelayMs),this.downloadedParts.unshift({filename:i,size:a.size}),this.currentSize>0){const f={...s,backupId:this.backupId,partIndex:this.partIndex,totalParts:this.partIndex,isFinalPart:!0};this.currentZip.file("manifest.json",JSON.stringify(f,null,2));const N=await this.currentZip.generateAsync({type:"blob",compression:"DEFLATE",compressionOptions:{level:6}}),c=`${this.baseFilename}_part${this.partIndex}.zip`;this.options.finalPartPauseMs>0&&await new Promise(l=>setTimeout(l,this.options.finalPartPauseMs)),await this.options.downloadBlob(N,c,this.options.revokeDelayMs),this.downloadedParts.push({filename:c,size:N.size})}return{files:this.downloadedParts,totalParts:this.partIndex,stats:s.stats}}}class Oe extends $e{constructor(s,e){super(s,e,{source:"app",revokeDelayMs:1200,interPartPauseMs:500,finalPartPauseMs:700,preserveAssetEntryDate:!0,ZipCtor:se})}finalizeAll(s){return super.finalizeAll(s)}}const ze=3,le="aitu-backup";function X(E){return E.map(s=>s.id?s:{...s,id:`imported-${Date.now()}-${Math.random().toString(36).slice(2,9)}`})}class Ze{buildAssetExportBaseName(s,e){return fe(s,e)}shouldExportAssetByRange(s,e){const{timeRangeStart:r,timeRangeEnd:a}=e;return!r&&!a?!0:!(typeof s!="number"||Number.isNaN(s)||s<=0||typeof r=="number"&&s<r||typeof a=="number"&&s>a)}async exportToZip(s,e){const r=Date.now();R.track("backup_export_start",{includePrompts:s.includePrompts,includeProjects:s.includeProjects,includeAssets:s.includeAssets}),e==null||e(5,"正在准备数据...");const a=new Date,i=a.toISOString().split("T")[0],f=a.toTimeString().split(" ")[0].replace(/:/g,""),N=`aitu_backup_${i}_${f}`,c=`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,l=new Oe(N,c),k=z.getCurrentBoard(),u={currentBoardId:(k==null?void 0:k.id)||null,currentBoardName:k==null?void 0:k.name,viewport:k==null?void 0:k.viewport},m={signature:le,version:ze,createdAt:Date.now(),includes:{prompts:s.includePrompts,projects:s.includeProjects,assets:s.includeAssets,tasks:s.includeAssets,knowledgeBase:s.includeKnowledgeBase},stats:{promptCount:0,videoPromptCount:0,imagePromptCount:0,folderCount:0,boardCount:0,assetCount:0,taskCount:0,kbNoteCount:0},workspaceState:u};if(s.includePrompts){e==null||e(10,"正在导出提示词...");const g=await this.collectPromptData();l.addFile("prompts.json",g),m.stats.promptCount=g.promptHistory.length,m.stats.videoPromptCount=g.videoPromptHistory.length,m.stats.imagePromptCount=g.imagePromptHistory.length}if(s.includeKnowledgeBase){e==null||e(30,"正在导出知识库...");try{const g=await ae.exportAllData();l.addFile("knowledge-base.json",g),m.stats.kbNoteCount=g.notes.length}catch(g){console.error("Failed to export knowledge base:",g)}}s.includeProjects&&(e==null||e(40,"正在导出项目..."),await this.exportProjects(l,m,!s.includeAssets,e)),s.includeAssets&&(e==null||e(50,"正在导出素材..."),await this.exportAssets(l,m,s,e)),e==null||e(85,"正在压缩文件...");const b=await l.finalizeAll(m);return e==null||e(100,"导出完成"),R.track("backup_export_success",{duration:Date.now()-r,totalParts:b.totalParts,promptCount:m.stats.promptCount+m.stats.videoPromptCount+m.stats.imagePromptCount,projectCount:m.stats.boardCount,assetCount:m.stats.assetCount,taskCount:m.stats.taskCount}),b}downloadZip(s,e){const r=new Date,a=r.toISOString().split("T")[0],i=r.toTimeString().split(" ")[0].replace(/:/g,""),f=`aitu_backup_${a}_${i}.zip`,N=URL.createObjectURL(s),c=document.createElement("a");c.href=N,c.download=e||f,document.body.appendChild(c),c.click(),document.body.removeChild(c),URL.revokeObjectURL(N)}async collectPromptData(){await ie();const s=re(),e=oe(),r=ne(),a=await O.getAllTasks({status:ke.COMPLETED}),i=await V.get(P.PRESET_SETTINGS);return he({promptHistory:s,videoPromptHistory:e,imagePromptHistory:r,presetSettings:i||void 0,allTasks:a})}async exportProjects(s,e,r,a){const[i,f]=await Promise.all([U.loadAllFolders(),U.loadAllBoards()]),N=ce(i);e.stats.folderCount=i.length,s.addFile("projects/_folders.json",{folders:i});for(let c=0;c<f.length;c++){const l=f[c],k=l.folderId?N.get(l.folderId):null,u=ge(l.name),m=k?`projects/${k}/${u}.drawnix`:`projects/${u}.drawnix`,b=r?await Ne(l.elements||[]):void 0,g={type:we.drawnix,version:xe.drawnix,source:"backup",elements:l.elements||[],viewport:l.viewport||{zoom:1},theme:l.theme,embeddedMedia:b,boardMeta:{id:l.id,name:l.name,folderId:l.folderId,order:l.order,createdAt:l.createdAt,updatedAt:l.updatedAt}};if(s.addFile(m,g),a&&f.length>0){const j=25+Math.round((c+1)/f.length*20);a(j,`正在导出画板 (${c+1}/${f.length})...`)}}e.stats.boardCount=f.length}async getActualCreationTime(s){var e;try{if((e=s.metadata)!=null&&e.taskId){const i=await O.getTask(s.metadata.taskId);if(i!=null&&i.completedAt)return i.completedAt;if(i!=null&&i.createdAt)return i.createdAt}const r=new URL(s.url),a=r.searchParams.get("t")||r.searchParams.get("timestamp");if(a){const i=parseInt(a,10);if(!Number.isNaN(i)&&i>0)return i}return s.cachedAt}catch(r){return console.warn(`[BackupRestore] Failed to get actual creation time for ${s.url}:`,r),s.cachedAt}}async exportAssets(s,e,r,a){var o;const i=new Set,f=new Set;let N=0;const c=[],l=de.createInstance({name:Z.STORAGE_NAME,storeName:Z.STORE_NAME}),k=await l.keys(),u=k.length;for(let p=0;p<k.length;p++){try{const t=await l.getItem(k[p]);if(t&&this.shouldExportAssetByRange(t.createdAt,r)){const d=await q.getCachedBlob(t.url);if(d){const x=G(this.buildAssetExportBaseName(t.id,t.createdAt),t.url);c.push({baseName:x,blobData:d,metaData:t,createdAt:t.createdAt}),i.add(t.url)}}}catch(t){console.warn(`[BackupRestore] Failed to load asset ${k[p]}:`,t)}if(a&&u>0){const t=50+Math.round((p+1)/u*15);a(t,`正在导出本地素材 (${p+1}/${u})...`)}}const b=(await q.getAllCacheMetadata()).filter(p=>!i.has(p.url)),g=b.length;for(let p=0;p<b.length;p++){const t=b[p];try{const d=await this.getActualCreationTime(t);if(!this.shouldExportAssetByRange(d,r))continue;const x=((o=t.metadata)==null?void 0:o.taskId)||ye(t.url),v=d||t.cachedAt,_={id:x,url:t.url,type:je(t.type,t.mimeType),mimeType:t.mimeType,size:t.size,source:"AI_GENERATED",createdAt:v,updatedAt:t.lastUsed,metadata:t.metadata},I=await q.getCachedBlob(t.url);if(I){const S=G(this.buildAssetExportBaseName(x,v),t.url);c.push({baseName:S,blobData:I,metaData:_,createdAt:v}),i.add(t.url)}}catch(d){console.warn(`[BackupRestore] Failed to export cached media ${t.url}:`,d)}if(a&&g>0){const d=65+Math.round((p+1)/g*10);a(d,`正在导出缓存媒体 (${p+1}/${g})...`)}}c.sort((p,t)=>{const d=p.createdAt??0,x=t.createdAt??0;return d!==x?d-x:p.baseName.localeCompare(t.baseName)});for(let p=0;p<c.length;p++){const t=c[p],d=typeof t.metaData=="string"?JSON.parse(t.metaData):t.metaData,x=typeof(d==null?void 0:d.mimeType)=="string"?d.mimeType:t.blobData.type,v=ve(x),_=Ee(t.baseName,f);if(await s.addAssetBlob(`${_}${v}`,t.blobData,`${_}.meta.json`,t.metaData,t.createdAt),N++,a&&c.length>0){const I=75+Math.round((p+1)/c.length*10);a(I,`正在写入素材 (${p+1}/${c.length})...`)}}e.stats.assetCount=N,a==null||a(85,"正在导出任务数据...");const j=await O.getAllTasks(),w=_e(j);w.length>0&&(s.addFile("tasks.json",w),e.stats.taskCount=w.length)}}const ee=new Ze;class He{async importFromZip(s,e){const r=Date.now();R.track("backup_import_start",{fileSize:s.size,fileName:s.name});const a={success:!1,prompts:{imported:0,skipped:0},projects:{folders:0,boards:0,merged:0,skipped:0},assets:{imported:0,skipped:0},tasks:{imported:0,skipped:0},knowledgeBase:{directories:0,notes:0,tags:0,skipped:0},errors:[]};try{e==null||e(5,"正在读取文件...");const i=await se.loadAsync(s);e==null||e(10,"正在验证文件格式...");const f=i.file("manifest.json");if(!f)throw new Error("无效的备份文件:未找到 manifest.json");const N=await f.async("string"),c=JSON.parse(N);if(c.signature!==le)throw new Error("无效的备份文件:签名不匹配");if(c.includes.prompts){e==null||e(20,"正在导入提示词...");const l=i.file("prompts.json");if(l){const k=await l.async("string"),u=JSON.parse(k);a.prompts=await this.importPromptData(u)}}if(c.includes.knowledgeBase){e==null||e(30,"正在导入知识库...");const l=await this.importKnowledgeBase(i);a.knowledgeBase=l,l.errors&&l.errors.length>0&&a.errors.push(...l.errors)}c.includes.projects&&(e==null||e(40,"正在导入项目..."),a.projects=await this.importProjects(i,e)),c.includes.assets&&(e==null||e(60,"正在导入素材..."),a.assets=await this.importAssets(i,e)),(c.includes.tasks??c.includes.assets)&&(e==null||e(85,"正在导入任务数据..."),a.tasks=await this.importTasks(i)),(a.projects.folders>0||a.projects.boards>0||a.projects.merged>0)&&await z.reload(),c.workspaceState&&(a.workspaceState=c.workspaceState),a.success=a.errors.length===0,e==null||e(100,"导入完成"),R.track("backup_import_success",{duration:Date.now()-r,promptCount:a.prompts.imported,projectCount:a.projects.boards,assetCount:a.assets.imported,taskCount:a.tasks.imported,kbNoteCount:a.knowledgeBase.notes,skippedCount:a.prompts.skipped+a.projects.skipped+a.assets.skipped+a.tasks.skipped+a.knowledgeBase.skipped})}catch(i){const f=i instanceof Error?i.message:String(i);a.errors.push(f),R.track("backup_import_failed",{duration:Date.now()-r,error:f})}return a}async importKnowledgeBase(s){const e=s.file("knowledge-base.json");if(!e)return{directories:0,notes:0,tags:0,skipped:0,errors:[]};try{const r=await e.async("string"),a=JSON.parse(r),i=await ae.importAllData(a);return{directories:i.dirCount,notes:i.noteCount,tags:i.tagCount,skipped:0,errors:[]}}catch(r){return console.error("Failed to import knowledge base:",r),{directories:0,notes:0,tags:0,skipped:0,errors:[`Knowledge base import failed: ${r instanceof Error?r.message:String(r)}`]}}}async importPromptData(s){let e=0,r=0;const a=s.promptHistory||[],i=s.videoPromptHistory||[],f=s.imagePromptHistory||[];await ie();const N=re(),c=oe(),l=ne(),k=new Set(N.map(d=>d.id)),u=new Set(N.map(d=>d.content)),m=a.filter(d=>k.has(d.id)||u.has(d.content)?(r++,!1):(e++,!0)),b=new Set(c.map(d=>d.id)),g=new Set(c.map(d=>d.content)),j=i.filter(d=>b.has(d.id)||g.has(d.content)?(r++,!1):(e++,!0)),w=new Set(l.map(d=>d.id)),o=new Set(l.map(d=>d.content)),p=f.filter(d=>w.has(d.id)||o.has(d.content)?(r++,!1):(e++,!0));await V.set(P.PROMPT_HISTORY,[...N,...m]),await V.set(P.VIDEO_PROMPT_HISTORY,[...c,...j]),await V.set(P.IMAGE_PROMPT_HISTORY,[...l,...p]);const t=await V.get(P.PRESET_SETTINGS);if(t&&s.presetSettings){const d={image:{pinnedPrompts:[...new Set([...t.image.pinnedPrompts,...s.presetSettings.image.pinnedPrompts])],deletedPrompts:[...new Set([...t.image.deletedPrompts,...s.presetSettings.image.deletedPrompts])]},video:{pinnedPrompts:[...new Set([...t.video.pinnedPrompts,...s.presetSettings.video.pinnedPrompts])],deletedPrompts:[...new Set([...t.video.deletedPrompts,...s.presetSettings.video.deletedPrompts])]}};await V.set(P.PRESET_SETTINGS,d)}else s.presetSettings&&await V.set(P.PRESET_SETTINGS,s.presetSettings);return await Se(),{imported:e,skipped:r}}async importProjects(s,e){let r=0,a=0,i=0,f=0;const N=await U.loadAllFolders(),c=await U.loadAllBoards(),l=new Set(c.map(m=>m.id)),k=Object.keys(s.files).filter(m=>m.startsWith("projects/")&&m.endsWith(".drawnix")&&!m.includes("/_"));if(k.length===0)return{folders:0,boards:0,merged:0,skipped:0};const u=await this.restoreProjectFolders(s,N,k);r=u.created,f+=u.skipped;for(let m=0;m<k.length;m++){const b=k[m];try{const g=s.file(b);if(g){const j=await g.async("string"),w=JSON.parse(j);await De(w.embeddedMedia);const o=w.boardMeta,t=b.replace(/^projects\//,"").split("/"),d=t.length>1?t.slice(0,-1).join("/"):null,x=d&&(u.pathToId.get(d)||(o!=null&&o.folderId?u.importedToLocalId.get(o.folderId):null)||(o==null?void 0:o.folderId))||null,v=t[t.length-1]||"unnamed.drawnix",_=(o==null?void 0:o.name)||v.replace(".drawnix","");if(o!=null&&o.id&&l.has(o.id)){const S=c.find(F=>F.id===o.id);if(S){const F=new Set((S.elements||[]).map(C=>C.id).filter(C=>!!C)),H=(w.elements||[]).filter(C=>C.id?!F.has(C.id):!0),K={...S,elements:[...S.elements||[],...X(H)],viewport:w.viewport||S.viewport,theme:w.theme||S.theme,updatedAt:Date.now()};await U.saveBoard(K),i++;continue}}const I={id:(o==null?void 0:o.id)||Q(),name:_,folderId:x,order:(o==null?void 0:o.order)??m,elements:X(w.elements||[]),viewport:w.viewport,theme:w.theme,createdAt:(o==null?void 0:o.createdAt)||Date.now(),updatedAt:(o==null?void 0:o.updatedAt)||Date.now()};await U.saveBoard(I),a++}}catch(g){console.warn(`[BackupRestore] Failed to import board ${b}:`,g)}if(e&&k.length>0){const g=40+Math.round((m+1)/k.length*15);e(g,`正在导入画板 (${m+1}/${k.length})...`)}}return{folders:r,boards:a,merged:i,skipped:f}}async importAssets(s,e){var k,u,m;let r=0,a=0;const i=Object.keys(s.files).filter(b=>b.startsWith("assets/")&&b.endsWith(".meta.json"));if(i.length===0)return{imported:0,skipped:0};const f=de.createInstance({name:Z.STORAGE_NAME,storeName:Z.STORE_NAME}),N=await f.keys(),c=new Set(N),l=new Set(await q.getAllCachedUrls());for(let b=0;b<i.length;b++){const g=i[b],j=g.replace("assets/","").replace(".meta.json","");let w=j;try{const o=s.file(g);if(!o){a++;continue}const p=await o.async("string"),t=JSON.parse(p),d=(t==null?void 0:t.id)||j;w=d;const x=t.source==="AI_GENERATED";if(x){if(l.has(t.url)){a++;continue}}else if(c.has(d)){a++;continue}let v=null;for(const _ of Ie(t.mimeType)){const I=s.file(`assets/${j}${_}`);if(I){v=await I.async("blob");break}}if(v){const _=Ae(t.type,t.mimeType);await q.cacheMediaFromBlob(t.url,v,_,{metadata:{taskId:((k=t.metadata)==null?void 0:k.taskId)||d,prompt:(u=t.metadata)==null?void 0:u.prompt,model:(m=t.metadata)==null?void 0:m.model},cachedAt:t.createdAt,lastUsed:t.updatedAt||t.createdAt}),x||await f.setItem(d,t),r++}else console.warn(`[BackupRestore] No media file found for asset ${d}, skipping`),a++}catch(o){console.warn(`[BackupRestore] Failed to import asset ${w}:`,o),a++}if(e&&i.length>0){const o=60+Math.round((b+1)/i.length*35);e(o,`正在导入素材 (${b+1}/${i.length})...`)}}return{imported:r,skipped:a}}async restoreProjectFolders(s,e,r){const a=new Map,i=new Map;let f=0,N=0;const c=s.file("projects/_folders.json"),l=new Map(e.map(u=>[M(u.name,u.parentId),u]));if(c){const u=JSON.parse(await c.async("string")),m=Array.isArray(u)?u:(u==null?void 0:u.folders)||[],b=new Map(m.map(o=>[o.id,o])),g=[...m].sort((o,p)=>{const t=W(o,b),d=W(p,b);return t-d||o.order-p.order||o.name.localeCompare(p.name)});for(const o of g){const p=o.parentId&&a.get(o.parentId)||null,t=e.find(v=>v.id===o.id);if(t){a.set(o.id,t.id);continue}const d=l.get(M(o.name,p));if(d){a.set(o.id,d.id),N++;continue}const x={...o,parentId:p};await U.saveFolder(x),e.push(x),l.set(M(x.name,x.parentId),x),a.set(o.id,x.id),f++}const j=await U.loadAllFolders(),w=ce(j);for(const[o,p]of w.entries())i.set(p,o)}const k=Ce(r);for(const u of k){if(i.has(u))continue;const m=u.split("/"),b=m[m.length-1],g=m.length>1?m.slice(0,-1).join("/"):null,j=g&&i.get(g)||null,w=M(b,j),o=l.get(w);if(o){i.set(u,o.id);continue}const p={id:Q(),name:b,parentId:j,order:e.length,isExpanded:!0,createdAt:Date.now(),updatedAt:Date.now()};await U.saveFolder(p),e.push(p),l.set(w,p),i.set(u,p.id),f++}return{pathToId:i,importedToLocalId:a,created:f,skipped:N}}async importTasks(s){let e=0,r=0;const a=s.file("tasks.json");if(!a)return{imported:0,skipped:0};try{const i=await a.async("string"),f=JSON.parse(i);if(!Array.isArray(f)||f.length===0)return{imported:0,skipped:0};const N=await O.getAllTasks(),c=new Set(N.map(k=>k.id)),l=f.filter(k=>c.has(k.id)?(r++,!1):!0);l.length>0&&(await Te.restoreTasks(l),e=l.length)}catch(i){console.warn("[BackupRestore] Failed to import tasks:",i)}return{imported:e,skipped:r}}}const Ke=new He;class Le{exportToZip(s,e){return ee.exportToZip(s,e)}importFromZip(s,e){return Ke.importFromZip(s,e)}downloadZip(s,e){ee.downloadZip(s,e)}}const te=new Le,Ye=({open:E,onOpenChange:s,container:e,onSwitchBoard:r,onBeforeImport:a})=>{var J;const{confirm:i,confirmDialog:f}=Ue({container:e}),N=h=>{if(!h)return"";const y=new Date(h),A=y.getTimezoneOffset()*6e4;return new Date(y.getTime()-A).toISOString().slice(0,16)},c=h=>{if(!h)return null;const y=Date.parse(h);return Number.isNaN(y)?null:y},[l,k]=D.useState("backup"),[u,m]=D.useState({includePrompts:!0,includeProjects:!0,includeAssets:!0,includeKnowledgeBase:!0,timeRangeStart:null,timeRangeEnd:null}),[b,g]=D.useState(!1),[j,w]=D.useState(0),[o,p]=D.useState(""),[t,d]=D.useState(null),[x,v]=D.useState(null),_=D.useRef(null),I=D.useCallback(async h=>{if(!h.currentBoardId||!r)return;const y=z.getBoard(h.currentBoardId);if(!y)return;const A=z.getCurrentBoard();!A||!A.elements||A.elements.length===0?(await r(h.currentBoardId,h.viewport),T.success(`已切换到画板「${y.name}」`)):await i({title:"恢复画布状态",description:`备份时正在编辑画板「${h.currentBoardName||y.name}」,是否切换到该画板?`,confirmText:"切换",cancelText:"取消"})&&(await r(h.currentBoardId,h.viewport),T.success(`已切换到画板「${y.name}」`))},[i,r]),S=D.useCallback(async()=>{if(!b){if(x&&(await I(x),v(null)),t&&t.tasks&&t.tasks.imported>0){Be();return}s(!1),w(0),p(""),d(null)}},[b,s,t,x,I]),F=D.useCallback(async()=>{if(!u.includePrompts&&!u.includeProjects&&!u.includeAssets&&!u.includeKnowledgeBase){T.warning("请至少选择一项要备份的内容");return}if(u.timeRangeStart&&u.timeRangeEnd&&u.timeRangeStart>u.timeRangeEnd){T.warning("开始时间不能晚于结束时间");return}g(!0),w(0),p("正在准备...");try{const h=await te.exportToZip(u,(y,A)=>{w(y),p(A)});T.success(`备份成功!分片 ${h.totalParts} 个,素材 ${h.stats.assetCount} 个`),S()}catch(h){console.error("[BackupRestore] Export failed:",h),T.error("备份失败,请重试")}finally{g(!1)}},[u,S]),H=D.useCallback(()=>{var h;(h=_.current)==null||h.click()},[]),K=D.useCallback(async h=>{var A,L;const y=(A=h.target.files)==null?void 0:A[0];if(y){if(!y.name.endsWith(".zip")){T.warning("请选择 ZIP 格式的备份文件");return}g(!0),w(0),p("正在保存当前画板..."),d(null);try{a&&await a(),p("正在读取文件...");const B=await te.importFromZip(y,(ue,pe)=>{w(ue),p(pe)});d(B),(L=B.workspaceState)!=null&&L.currentBoardId&&v(B.workspaceState),B.success?T.success("导入成功!"):B.errors.length>0&&T.warning("导入完成,但有部分错误")}catch(B){console.error("[BackupRestore] Import failed:",B),T.error("导入失败,请检查文件格式")}finally{g(!1),_.current&&(_.current.value="")}}},[a]),C=D.useCallback((h,y)=>{m(A=>({...A,[h]:y}))},[]);return n.jsxDEV(Ve,{open:E,onOpenChange:S,children:[n.jsxDEV(Pe,{className:"backup-restore-dialog",container:e,"data-testid":"backup-restore-dialog",children:[n.jsxDEV("h2",{className:"backup-restore-dialog__title",children:"备份 / 恢复"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:286,columnNumber:9},void 0),n.jsxDEV("div",{className:"backup-restore-dialog__tabs",children:[n.jsxDEV("button",{className:`backup-restore-dialog__tab ${l==="backup"?"backup-restore-dialog__tab--active":""}`,onClick:()=>k("backup"),disabled:b,children:"备份"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:290,columnNumber:11},void 0),n.jsxDEV("button",{className:`backup-restore-dialog__tab ${l==="restore"?"backup-restore-dialog__tab--active":""}`,onClick:()=>k("restore"),disabled:b,children:"恢复"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:299,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:289,columnNumber:9},void 0),l==="backup"&&n.jsxDEV("div",{className:"backup-restore-dialog__panel",children:[n.jsxDEV("p",{className:"backup-restore-dialog__description",children:"选择要备份的内容,将导出为 ZIP 压缩包:"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:315,columnNumber:13},void 0),n.jsxDEV("div",{className:"backup-restore-dialog__options",children:[n.jsxDEV($,{checked:u.includePrompts,onChange:h=>C("includePrompts",h),disabled:b,children:n.jsxDEV("div",{className:"backup-restore-dialog__option-content",children:[n.jsxDEV("span",{className:"backup-restore-dialog__option-title",children:"提示词"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:328,columnNumber:19},void 0),n.jsxDEV("span",{className:"backup-restore-dialog__option-desc",children:"包含图片和视频生成的历史提示词"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:331,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:327,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:320,columnNumber:15},void 0),n.jsxDEV($,{checked:u.includeProjects,onChange:h=>C("includeProjects",h),disabled:b,children:n.jsxDEV("div",{className:"backup-restore-dialog__option-content",children:[n.jsxDEV("span",{className:"backup-restore-dialog__option-title",children:"项目"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:345,columnNumber:19},void 0),n.jsxDEV("span",{className:"backup-restore-dialog__option-desc",children:"包含所有文件夹和画板"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:348,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:344,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:337,columnNumber:15},void 0),n.jsxDEV($,{checked:u.includeAssets,onChange:h=>C("includeAssets",h),disabled:b,children:n.jsxDEV("div",{className:"backup-restore-dialog__option-content",children:[n.jsxDEV("span",{className:"backup-restore-dialog__option-title",children:"素材库"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:362,columnNumber:19},void 0),n.jsxDEV("span",{className:"backup-restore-dialog__option-desc",children:"包含所有本地上传的图片、视频和音频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:365,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:361,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:354,columnNumber:15},void 0),n.jsxDEV($,{checked:u.includeKnowledgeBase,onChange:h=>C("includeKnowledgeBase",h),disabled:b,children:n.jsxDEV("div",{className:"backup-restore-dialog__option-content",children:[n.jsxDEV("span",{className:"backup-restore-dialog__option-title",children:"知识库"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:379,columnNumber:19},void 0),n.jsxDEV("span",{className:"backup-restore-dialog__option-desc",children:"包含所有目录、笔记和标签"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:382,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:378,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:371,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:319,columnNumber:13},void 0),n.jsxDEV("div",{className:"backup-restore-dialog__time-range",children:[n.jsxDEV("div",{className:"backup-restore-dialog__time-range-title",children:"素材导出时间范围(可选)"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:390,columnNumber:15},void 0),n.jsxDEV("div",{className:"backup-restore-dialog__time-range-row",children:[n.jsxDEV("label",{className:"backup-restore-dialog__time-range-field",children:[n.jsxDEV("span",{children:"开始时间"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:395,columnNumber:19},void 0),n.jsxDEV("input",{type:"datetime-local",value:N(u.timeRangeStart),disabled:b,onChange:h=>m(y=>({...y,timeRangeStart:c(h.target.value)}))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:396,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:394,columnNumber:17},void 0),n.jsxDEV("label",{className:"backup-restore-dialog__time-range-field",children:[n.jsxDEV("span",{children:"结束时间"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:409,columnNumber:19},void 0),n.jsxDEV("input",{type:"datetime-local",value:N(u.timeRangeEnd),disabled:b,onChange:h=>m(y=>({...y,timeRangeEnd:c(h.target.value)}))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:410,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:408,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:393,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:389,columnNumber:13},void 0),b&&n.jsxDEV("div",{className:"backup-restore-dialog__progress",children:[n.jsxDEV(Y,{percentage:j,theme:"line"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:427,columnNumber:17},void 0),n.jsxDEV("span",{className:"backup-restore-dialog__progress-text",children:o},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:428,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:426,columnNumber:15},void 0),n.jsxDEV("div",{className:"backup-restore-dialog__actions",children:[n.jsxDEV("button",{className:"backup-restore-dialog__button backup-restore-dialog__button--cancel",onClick:S,disabled:b,children:"取消"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:435,columnNumber:15},void 0),n.jsxDEV("button",{className:"backup-restore-dialog__button backup-restore-dialog__button--primary",onClick:F,disabled:b,children:b?"正在备份...":"开始备份"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:442,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:434,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:314,columnNumber:11},void 0),l==="restore"&&n.jsxDEV("div",{className:"backup-restore-dialog__panel",children:[n.jsxDEV("p",{className:"backup-restore-dialog__description",children:"选择备份文件进行恢复,数据将增量导入(不会覆盖现有内容):"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:456,columnNumber:13},void 0),n.jsxDEV("div",{className:"backup-restore-dialog__dropzone",onClick:H,children:[n.jsxDEV(Fe,{className:"backup-restore-dialog__dropzone-icon"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:464,columnNumber:15},void 0),n.jsxDEV("span",{className:"backup-restore-dialog__dropzone-text",children:"点击选择备份文件 (.zip)"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:465,columnNumber:15},void 0),n.jsxDEV("input",{ref:_,type:"file",accept:".zip",onChange:K,style:{display:"none"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:468,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:460,columnNumber:13},void 0),b&&n.jsxDEV("div",{className:"backup-restore-dialog__progress",children:[n.jsxDEV(Y,{percentage:j,theme:"line"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:479,columnNumber:17},void 0),n.jsxDEV("span",{className:"backup-restore-dialog__progress-text",children:o},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:480,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:478,columnNumber:15},void 0),t&&n.jsxDEV("div",{className:"backup-restore-dialog__result",children:[n.jsxDEV("h4",{className:"backup-restore-dialog__result-title",children:t.success?"导入完成":"导入完成(有错误)"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:488,columnNumber:17},void 0),n.jsxDEV("ul",{className:"backup-restore-dialog__result-list",children:[(t.prompts.imported>0||t.prompts.skipped>0)&&n.jsxDEV("li",{children:["提示词:导入 ",t.prompts.imported," 条,跳过"," ",t.prompts.skipped," 条"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:494,columnNumber:21},void 0),(t.projects.folders>0||t.projects.boards>0||t.projects.merged>0)&&n.jsxDEV("li",{children:["项目:导入 ",t.projects.folders," 个文件夹,",t.projects.boards," 个画板",t.projects.merged>0&&`,合并 ${t.projects.merged} 个画板`]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:502,columnNumber:21},void 0),(t.assets.imported>0||t.assets.skipped>0)&&n.jsxDEV("li",{children:["素材:导入 ",t.assets.imported," 个,跳过"," ",t.assets.skipped," 个"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:511,columnNumber:21},void 0),t.knowledgeBase&&(t.knowledgeBase.notes>0||t.knowledgeBase.directories>0)&&n.jsxDEV("li",{children:["知识库:导入 ",t.knowledgeBase.directories," ","个目录,",t.knowledgeBase.notes," 篇笔记,",t.knowledgeBase.tags," 个标签"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:519,columnNumber:23},void 0),t.tasks&&(t.tasks.imported>0||t.tasks.skipped>0)&&n.jsxDEV("li",{children:["任务:导入 ",t.tasks.imported," 个,跳过"," ",t.tasks.skipped," 个"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:528,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:491,columnNumber:17},void 0),t.errors.length>0&&n.jsxDEV("div",{className:"backup-restore-dialog__result-errors",children:[n.jsxDEV("strong",{children:"错误信息:"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:536,columnNumber:21},void 0),n.jsxDEV("ul",{children:t.errors.map((h,y)=>n.jsxDEV("li",{children:h},y,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:539,columnNumber:25},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:537,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:535,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:487,columnNumber:15},void 0),n.jsxDEV("div",{className:"backup-restore-dialog__actions",children:n.jsxDEV("button",{className:"backup-restore-dialog__button backup-restore-dialog__button--cancel",onClick:S,disabled:b,children:t?((J=t.tasks)==null?void 0:J.imported)>0?"完成并刷新":"完成":"取消"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:548,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:547,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:455,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:281,columnNumber:7},void 0),f]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:280,columnNumber:5},void 0)};export{Ye as BackupRestoreDialog};
|
|
1
|
+
import{dB as me,dC as be,dD as se,dE as fe,dF as R,dG as z,dH as ae,dI as ie,dJ as re,dK as oe,dL as ne,dM as O,c$ as ke,aS as V,cS as P,dN as he,dO as U,dP as ce,dQ as ge,dR as Ne,dS as we,dT as xe,bd as de,dU as Z,ax as q,dV as G,dW as ye,dX as je,dY as Ee,dZ as ve,d_ as _e,d$ as Se,e0 as De,e1 as Ie,e2 as Ae,e3 as M,e4 as W,e5 as Ce,ab as Te,bE as Ue,b as D,bS as T,c5 as Be,x as n,e6 as Ve,e7 as Pe,d4 as $}from"./index-D5YSioyv.js";import{P as Y}from"./index-BkVG2Gm-.js";import{U as Fe}from"./upload-B9RKSZna.js";function Q(){return`${Date.now().toString(36)}-${Math.random().toString(36).substring(2,11)}`}const Re=500*1024*1024;async function qe(E,s,e=0){const r=URL.createObjectURL(E),a=document.createElement("a");a.href=r,a.download=s,document.body.appendChild(a),a.click(),document.body.removeChild(a),e>0&&await new Promise(i=>setTimeout(i,e)),URL.revokeObjectURL(r)}function Me(E){if(!E||Number.isNaN(E)||E<=0)return new Date;const s=E<1e12?E*1e3:E,e=new Date(s);return Number.isNaN(e.getTime())?new Date:e}class $e{constructor(s,e,r={}){if(this.baseFilename=s,this.backupId=e,this.options={source:"app",revokeDelayMs:0,interPartPauseMs:500,finalPartPauseMs:500,preserveAssetEntryDate:!1,downloadBlob:qe,ZipCtor:null,...r},!this.options.ZipCtor)throw new Error("SharedBackupPartManager requires ZipCtor");this.partIndex=1,this.currentZip=new this.options.ZipCtor,this.currentSize=0,this.downloadedParts=[],this.part1Zip=this.currentZip}addFile(s,e){const r=typeof e=="string"?e:JSON.stringify(e,null,2);this.currentZip.file(s,r),this.currentSize+=new Blob([r]).size}async addAssetBlob(s,e,r,a,i){const f=typeof a=="string"?a:JSON.stringify(a,null,2),N=e.size+new Blob([f]).size,c=this.options.preserveAssetEntryDate&&i?{date:Me(i)}:void 0;this.currentSize+N>Re&&this.currentSize>0&&(await this.finalizePart(),this.startNewPart());const l=this.currentZip.folder("assets");l.file(r,f,c),l.file(s,e,c),this.currentSize+=N}async finalizePart(){const s={signature:be,version:me,createdAt:Date.now(),source:this.options.source,backupId:this.backupId,partIndex:this.partIndex,totalParts:null,isFinalPart:!1,includes:{prompts:!1,projects:!1,assets:!0,tasks:!1,knowledgeBase:!1}};if((this.partIndex===1?this.part1Zip:this.currentZip).file("manifest.json",JSON.stringify(s,null,2)),this.partIndex===1)return;const r=await this.currentZip.generateAsync({type:"blob",compression:"DEFLATE",compressionOptions:{level:6}}),a=`${this.baseFilename}_part${this.partIndex}.zip`;this.downloadedParts.length>0&&this.options.interPartPauseMs>0&&await new Promise(i=>setTimeout(i,this.options.interPartPauseMs)),await this.options.downloadBlob(r,a,this.options.revokeDelayMs),this.downloadedParts.push({filename:a,size:r.size})}startNewPart(){this.partIndex+=1,this.currentZip=new this.options.ZipCtor,this.currentSize=0}async finalizeAll(s){if(!(this.partIndex>1)){const f={...s,backupId:this.backupId,partIndex:1,totalParts:1,isFinalPart:!0};this.part1Zip.file("manifest.json",JSON.stringify(f,null,2));const N=await this.part1Zip.generateAsync({type:"blob",compression:"DEFLATE",compressionOptions:{level:6}}),c=`${this.baseFilename}.zip`;return await this.options.downloadBlob(N,c,this.options.revokeDelayMs),{files:[{filename:c,size:N.size}],totalParts:1,stats:s.stats}}const r={...s,backupId:this.backupId,partIndex:1,totalParts:null,isFinalPart:!1};this.part1Zip.file("manifest.json",JSON.stringify(r,null,2));const a=await this.part1Zip.generateAsync({type:"blob",compression:"DEFLATE",compressionOptions:{level:6}}),i=`${this.baseFilename}_part1.zip`;if(await this.options.downloadBlob(a,i,this.options.revokeDelayMs),this.downloadedParts.unshift({filename:i,size:a.size}),this.currentSize>0){const f={...s,backupId:this.backupId,partIndex:this.partIndex,totalParts:this.partIndex,isFinalPart:!0};this.currentZip.file("manifest.json",JSON.stringify(f,null,2));const N=await this.currentZip.generateAsync({type:"blob",compression:"DEFLATE",compressionOptions:{level:6}}),c=`${this.baseFilename}_part${this.partIndex}.zip`;this.options.finalPartPauseMs>0&&await new Promise(l=>setTimeout(l,this.options.finalPartPauseMs)),await this.options.downloadBlob(N,c,this.options.revokeDelayMs),this.downloadedParts.push({filename:c,size:N.size})}return{files:this.downloadedParts,totalParts:this.partIndex,stats:s.stats}}}class Oe extends $e{constructor(s,e){super(s,e,{source:"app",revokeDelayMs:1200,interPartPauseMs:500,finalPartPauseMs:700,preserveAssetEntryDate:!0,ZipCtor:se})}finalizeAll(s){return super.finalizeAll(s)}}const ze=3,le="aitu-backup";function X(E){return E.map(s=>s.id?s:{...s,id:`imported-${Date.now()}-${Math.random().toString(36).slice(2,9)}`})}class Ze{buildAssetExportBaseName(s,e){return fe(s,e)}shouldExportAssetByRange(s,e){const{timeRangeStart:r,timeRangeEnd:a}=e;return!r&&!a?!0:!(typeof s!="number"||Number.isNaN(s)||s<=0||typeof r=="number"&&s<r||typeof a=="number"&&s>a)}async exportToZip(s,e){const r=Date.now();R.track("backup_export_start",{includePrompts:s.includePrompts,includeProjects:s.includeProjects,includeAssets:s.includeAssets}),e==null||e(5,"正在准备数据...");const a=new Date,i=a.toISOString().split("T")[0],f=a.toTimeString().split(" ")[0].replace(/:/g,""),N=`aitu_backup_${i}_${f}`,c=`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,l=new Oe(N,c),k=z.getCurrentBoard(),u={currentBoardId:(k==null?void 0:k.id)||null,currentBoardName:k==null?void 0:k.name,viewport:k==null?void 0:k.viewport},m={signature:le,version:ze,createdAt:Date.now(),includes:{prompts:s.includePrompts,projects:s.includeProjects,assets:s.includeAssets,tasks:s.includeAssets,knowledgeBase:s.includeKnowledgeBase},stats:{promptCount:0,videoPromptCount:0,imagePromptCount:0,folderCount:0,boardCount:0,assetCount:0,taskCount:0,kbNoteCount:0},workspaceState:u};if(s.includePrompts){e==null||e(10,"正在导出提示词...");const g=await this.collectPromptData();l.addFile("prompts.json",g),m.stats.promptCount=g.promptHistory.length,m.stats.videoPromptCount=g.videoPromptHistory.length,m.stats.imagePromptCount=g.imagePromptHistory.length}if(s.includeKnowledgeBase){e==null||e(30,"正在导出知识库...");try{const g=await ae.exportAllData();l.addFile("knowledge-base.json",g),m.stats.kbNoteCount=g.notes.length}catch(g){console.error("Failed to export knowledge base:",g)}}s.includeProjects&&(e==null||e(40,"正在导出项目..."),await this.exportProjects(l,m,!s.includeAssets,e)),s.includeAssets&&(e==null||e(50,"正在导出素材..."),await this.exportAssets(l,m,s,e)),e==null||e(85,"正在压缩文件...");const b=await l.finalizeAll(m);return e==null||e(100,"导出完成"),R.track("backup_export_success",{duration:Date.now()-r,totalParts:b.totalParts,promptCount:m.stats.promptCount+m.stats.videoPromptCount+m.stats.imagePromptCount,projectCount:m.stats.boardCount,assetCount:m.stats.assetCount,taskCount:m.stats.taskCount}),b}downloadZip(s,e){const r=new Date,a=r.toISOString().split("T")[0],i=r.toTimeString().split(" ")[0].replace(/:/g,""),f=`aitu_backup_${a}_${i}.zip`,N=URL.createObjectURL(s),c=document.createElement("a");c.href=N,c.download=e||f,document.body.appendChild(c),c.click(),document.body.removeChild(c),URL.revokeObjectURL(N)}async collectPromptData(){await ie();const s=re(),e=oe(),r=ne(),a=await O.getAllTasks({status:ke.COMPLETED}),i=await V.get(P.PRESET_SETTINGS);return he({promptHistory:s,videoPromptHistory:e,imagePromptHistory:r,presetSettings:i||void 0,allTasks:a})}async exportProjects(s,e,r,a){const[i,f]=await Promise.all([U.loadAllFolders(),U.loadAllBoards()]),N=ce(i);e.stats.folderCount=i.length,s.addFile("projects/_folders.json",{folders:i});for(let c=0;c<f.length;c++){const l=f[c],k=l.folderId?N.get(l.folderId):null,u=ge(l.name),m=k?`projects/${k}/${u}.drawnix`:`projects/${u}.drawnix`,b=r?await Ne(l.elements||[]):void 0,g={type:we.drawnix,version:xe.drawnix,source:"backup",elements:l.elements||[],viewport:l.viewport||{zoom:1},theme:l.theme,embeddedMedia:b,boardMeta:{id:l.id,name:l.name,folderId:l.folderId,order:l.order,createdAt:l.createdAt,updatedAt:l.updatedAt}};if(s.addFile(m,g),a&&f.length>0){const j=25+Math.round((c+1)/f.length*20);a(j,`正在导出画板 (${c+1}/${f.length})...`)}}e.stats.boardCount=f.length}async getActualCreationTime(s){var e;try{if((e=s.metadata)!=null&&e.taskId){const i=await O.getTask(s.metadata.taskId);if(i!=null&&i.completedAt)return i.completedAt;if(i!=null&&i.createdAt)return i.createdAt}const r=new URL(s.url),a=r.searchParams.get("t")||r.searchParams.get("timestamp");if(a){const i=parseInt(a,10);if(!Number.isNaN(i)&&i>0)return i}return s.cachedAt}catch(r){return console.warn(`[BackupRestore] Failed to get actual creation time for ${s.url}:`,r),s.cachedAt}}async exportAssets(s,e,r,a){var o;const i=new Set,f=new Set;let N=0;const c=[],l=de.createInstance({name:Z.STORAGE_NAME,storeName:Z.STORE_NAME}),k=await l.keys(),u=k.length;for(let p=0;p<k.length;p++){try{const t=await l.getItem(k[p]);if(t&&this.shouldExportAssetByRange(t.createdAt,r)){const d=await q.getCachedBlob(t.url);if(d){const x=G(this.buildAssetExportBaseName(t.id,t.createdAt),t.url);c.push({baseName:x,blobData:d,metaData:t,createdAt:t.createdAt}),i.add(t.url)}}}catch(t){console.warn(`[BackupRestore] Failed to load asset ${k[p]}:`,t)}if(a&&u>0){const t=50+Math.round((p+1)/u*15);a(t,`正在导出本地素材 (${p+1}/${u})...`)}}const b=(await q.getAllCacheMetadata()).filter(p=>!i.has(p.url)),g=b.length;for(let p=0;p<b.length;p++){const t=b[p];try{const d=await this.getActualCreationTime(t);if(!this.shouldExportAssetByRange(d,r))continue;const x=((o=t.metadata)==null?void 0:o.taskId)||ye(t.url),v=d||t.cachedAt,_={id:x,url:t.url,type:je(t.type,t.mimeType),mimeType:t.mimeType,size:t.size,source:"AI_GENERATED",createdAt:v,updatedAt:t.lastUsed,metadata:t.metadata},I=await q.getCachedBlob(t.url);if(I){const S=G(this.buildAssetExportBaseName(x,v),t.url);c.push({baseName:S,blobData:I,metaData:_,createdAt:v}),i.add(t.url)}}catch(d){console.warn(`[BackupRestore] Failed to export cached media ${t.url}:`,d)}if(a&&g>0){const d=65+Math.round((p+1)/g*10);a(d,`正在导出缓存媒体 (${p+1}/${g})...`)}}c.sort((p,t)=>{const d=p.createdAt??0,x=t.createdAt??0;return d!==x?d-x:p.baseName.localeCompare(t.baseName)});for(let p=0;p<c.length;p++){const t=c[p],d=typeof t.metaData=="string"?JSON.parse(t.metaData):t.metaData,x=typeof(d==null?void 0:d.mimeType)=="string"?d.mimeType:t.blobData.type,v=ve(x),_=Ee(t.baseName,f);if(await s.addAssetBlob(`${_}${v}`,t.blobData,`${_}.meta.json`,t.metaData,t.createdAt),N++,a&&c.length>0){const I=75+Math.round((p+1)/c.length*10);a(I,`正在写入素材 (${p+1}/${c.length})...`)}}e.stats.assetCount=N,a==null||a(85,"正在导出任务数据...");const j=await O.getAllTasks(),w=_e(j);w.length>0&&(s.addFile("tasks.json",w),e.stats.taskCount=w.length)}}const ee=new Ze;class He{async importFromZip(s,e){const r=Date.now();R.track("backup_import_start",{fileSize:s.size,fileName:s.name});const a={success:!1,prompts:{imported:0,skipped:0},projects:{folders:0,boards:0,merged:0,skipped:0},assets:{imported:0,skipped:0},tasks:{imported:0,skipped:0},knowledgeBase:{directories:0,notes:0,tags:0,skipped:0},errors:[]};try{e==null||e(5,"正在读取文件...");const i=await se.loadAsync(s);e==null||e(10,"正在验证文件格式...");const f=i.file("manifest.json");if(!f)throw new Error("无效的备份文件:未找到 manifest.json");const N=await f.async("string"),c=JSON.parse(N);if(c.signature!==le)throw new Error("无效的备份文件:签名不匹配");if(c.includes.prompts){e==null||e(20,"正在导入提示词...");const l=i.file("prompts.json");if(l){const k=await l.async("string"),u=JSON.parse(k);a.prompts=await this.importPromptData(u)}}if(c.includes.knowledgeBase){e==null||e(30,"正在导入知识库...");const l=await this.importKnowledgeBase(i);a.knowledgeBase=l,l.errors&&l.errors.length>0&&a.errors.push(...l.errors)}c.includes.projects&&(e==null||e(40,"正在导入项目..."),a.projects=await this.importProjects(i,e)),c.includes.assets&&(e==null||e(60,"正在导入素材..."),a.assets=await this.importAssets(i,e)),(c.includes.tasks??c.includes.assets)&&(e==null||e(85,"正在导入任务数据..."),a.tasks=await this.importTasks(i)),(a.projects.folders>0||a.projects.boards>0||a.projects.merged>0)&&await z.reload(),c.workspaceState&&(a.workspaceState=c.workspaceState),a.success=a.errors.length===0,e==null||e(100,"导入完成"),R.track("backup_import_success",{duration:Date.now()-r,promptCount:a.prompts.imported,projectCount:a.projects.boards,assetCount:a.assets.imported,taskCount:a.tasks.imported,kbNoteCount:a.knowledgeBase.notes,skippedCount:a.prompts.skipped+a.projects.skipped+a.assets.skipped+a.tasks.skipped+a.knowledgeBase.skipped})}catch(i){const f=i instanceof Error?i.message:String(i);a.errors.push(f),R.track("backup_import_failed",{duration:Date.now()-r,error:f})}return a}async importKnowledgeBase(s){const e=s.file("knowledge-base.json");if(!e)return{directories:0,notes:0,tags:0,skipped:0,errors:[]};try{const r=await e.async("string"),a=JSON.parse(r),i=await ae.importAllData(a);return{directories:i.dirCount,notes:i.noteCount,tags:i.tagCount,skipped:0,errors:[]}}catch(r){return console.error("Failed to import knowledge base:",r),{directories:0,notes:0,tags:0,skipped:0,errors:[`Knowledge base import failed: ${r instanceof Error?r.message:String(r)}`]}}}async importPromptData(s){let e=0,r=0;const a=s.promptHistory||[],i=s.videoPromptHistory||[],f=s.imagePromptHistory||[];await ie();const N=re(),c=oe(),l=ne(),k=new Set(N.map(d=>d.id)),u=new Set(N.map(d=>d.content)),m=a.filter(d=>k.has(d.id)||u.has(d.content)?(r++,!1):(e++,!0)),b=new Set(c.map(d=>d.id)),g=new Set(c.map(d=>d.content)),j=i.filter(d=>b.has(d.id)||g.has(d.content)?(r++,!1):(e++,!0)),w=new Set(l.map(d=>d.id)),o=new Set(l.map(d=>d.content)),p=f.filter(d=>w.has(d.id)||o.has(d.content)?(r++,!1):(e++,!0));await V.set(P.PROMPT_HISTORY,[...N,...m]),await V.set(P.VIDEO_PROMPT_HISTORY,[...c,...j]),await V.set(P.IMAGE_PROMPT_HISTORY,[...l,...p]);const t=await V.get(P.PRESET_SETTINGS);if(t&&s.presetSettings){const d={image:{pinnedPrompts:[...new Set([...t.image.pinnedPrompts,...s.presetSettings.image.pinnedPrompts])],deletedPrompts:[...new Set([...t.image.deletedPrompts,...s.presetSettings.image.deletedPrompts])]},video:{pinnedPrompts:[...new Set([...t.video.pinnedPrompts,...s.presetSettings.video.pinnedPrompts])],deletedPrompts:[...new Set([...t.video.deletedPrompts,...s.presetSettings.video.deletedPrompts])]}};await V.set(P.PRESET_SETTINGS,d)}else s.presetSettings&&await V.set(P.PRESET_SETTINGS,s.presetSettings);return await Se(),{imported:e,skipped:r}}async importProjects(s,e){let r=0,a=0,i=0,f=0;const N=await U.loadAllFolders(),c=await U.loadAllBoards(),l=new Set(c.map(m=>m.id)),k=Object.keys(s.files).filter(m=>m.startsWith("projects/")&&m.endsWith(".drawnix")&&!m.includes("/_"));if(k.length===0)return{folders:0,boards:0,merged:0,skipped:0};const u=await this.restoreProjectFolders(s,N,k);r=u.created,f+=u.skipped;for(let m=0;m<k.length;m++){const b=k[m];try{const g=s.file(b);if(g){const j=await g.async("string"),w=JSON.parse(j);await De(w.embeddedMedia);const o=w.boardMeta,t=b.replace(/^projects\//,"").split("/"),d=t.length>1?t.slice(0,-1).join("/"):null,x=d&&(u.pathToId.get(d)||(o!=null&&o.folderId?u.importedToLocalId.get(o.folderId):null)||(o==null?void 0:o.folderId))||null,v=t[t.length-1]||"unnamed.drawnix",_=(o==null?void 0:o.name)||v.replace(".drawnix","");if(o!=null&&o.id&&l.has(o.id)){const S=c.find(F=>F.id===o.id);if(S){const F=new Set((S.elements||[]).map(C=>C.id).filter(C=>!!C)),H=(w.elements||[]).filter(C=>C.id?!F.has(C.id):!0),K={...S,elements:[...S.elements||[],...X(H)],viewport:w.viewport||S.viewport,theme:w.theme||S.theme,updatedAt:Date.now()};await U.saveBoard(K),i++;continue}}const I={id:(o==null?void 0:o.id)||Q(),name:_,folderId:x,order:(o==null?void 0:o.order)??m,elements:X(w.elements||[]),viewport:w.viewport,theme:w.theme,createdAt:(o==null?void 0:o.createdAt)||Date.now(),updatedAt:(o==null?void 0:o.updatedAt)||Date.now()};await U.saveBoard(I),a++}}catch(g){console.warn(`[BackupRestore] Failed to import board ${b}:`,g)}if(e&&k.length>0){const g=40+Math.round((m+1)/k.length*15);e(g,`正在导入画板 (${m+1}/${k.length})...`)}}return{folders:r,boards:a,merged:i,skipped:f}}async importAssets(s,e){var k,u,m;let r=0,a=0;const i=Object.keys(s.files).filter(b=>b.startsWith("assets/")&&b.endsWith(".meta.json"));if(i.length===0)return{imported:0,skipped:0};const f=de.createInstance({name:Z.STORAGE_NAME,storeName:Z.STORE_NAME}),N=await f.keys(),c=new Set(N),l=new Set(await q.getAllCachedUrls());for(let b=0;b<i.length;b++){const g=i[b],j=g.replace("assets/","").replace(".meta.json","");let w=j;try{const o=s.file(g);if(!o){a++;continue}const p=await o.async("string"),t=JSON.parse(p),d=(t==null?void 0:t.id)||j;w=d;const x=t.source==="AI_GENERATED";if(x){if(l.has(t.url)){a++;continue}}else if(c.has(d)){a++;continue}let v=null;for(const _ of Ie(t.mimeType)){const I=s.file(`assets/${j}${_}`);if(I){v=await I.async("blob");break}}if(v){const _=Ae(t.type,t.mimeType);await q.cacheMediaFromBlob(t.url,v,_,{metadata:{taskId:((k=t.metadata)==null?void 0:k.taskId)||d,prompt:(u=t.metadata)==null?void 0:u.prompt,model:(m=t.metadata)==null?void 0:m.model},cachedAt:t.createdAt,lastUsed:t.updatedAt||t.createdAt}),x||await f.setItem(d,t),r++}else console.warn(`[BackupRestore] No media file found for asset ${d}, skipping`),a++}catch(o){console.warn(`[BackupRestore] Failed to import asset ${w}:`,o),a++}if(e&&i.length>0){const o=60+Math.round((b+1)/i.length*35);e(o,`正在导入素材 (${b+1}/${i.length})...`)}}return{imported:r,skipped:a}}async restoreProjectFolders(s,e,r){const a=new Map,i=new Map;let f=0,N=0;const c=s.file("projects/_folders.json"),l=new Map(e.map(u=>[M(u.name,u.parentId),u]));if(c){const u=JSON.parse(await c.async("string")),m=Array.isArray(u)?u:(u==null?void 0:u.folders)||[],b=new Map(m.map(o=>[o.id,o])),g=[...m].sort((o,p)=>{const t=W(o,b),d=W(p,b);return t-d||o.order-p.order||o.name.localeCompare(p.name)});for(const o of g){const p=o.parentId&&a.get(o.parentId)||null,t=e.find(v=>v.id===o.id);if(t){a.set(o.id,t.id);continue}const d=l.get(M(o.name,p));if(d){a.set(o.id,d.id),N++;continue}const x={...o,parentId:p};await U.saveFolder(x),e.push(x),l.set(M(x.name,x.parentId),x),a.set(o.id,x.id),f++}const j=await U.loadAllFolders(),w=ce(j);for(const[o,p]of w.entries())i.set(p,o)}const k=Ce(r);for(const u of k){if(i.has(u))continue;const m=u.split("/"),b=m[m.length-1],g=m.length>1?m.slice(0,-1).join("/"):null,j=g&&i.get(g)||null,w=M(b,j),o=l.get(w);if(o){i.set(u,o.id);continue}const p={id:Q(),name:b,parentId:j,order:e.length,isExpanded:!0,createdAt:Date.now(),updatedAt:Date.now()};await U.saveFolder(p),e.push(p),l.set(w,p),i.set(u,p.id),f++}return{pathToId:i,importedToLocalId:a,created:f,skipped:N}}async importTasks(s){let e=0,r=0;const a=s.file("tasks.json");if(!a)return{imported:0,skipped:0};try{const i=await a.async("string"),f=JSON.parse(i);if(!Array.isArray(f)||f.length===0)return{imported:0,skipped:0};const N=await O.getAllTasks(),c=new Set(N.map(k=>k.id)),l=f.filter(k=>c.has(k.id)?(r++,!1):!0);l.length>0&&(await Te.restoreTasks(l),e=l.length)}catch(i){console.warn("[BackupRestore] Failed to import tasks:",i)}return{imported:e,skipped:r}}}const Ke=new He;class Le{exportToZip(s,e){return ee.exportToZip(s,e)}importFromZip(s,e){return Ke.importFromZip(s,e)}downloadZip(s,e){ee.downloadZip(s,e)}}const te=new Le,Ye=({open:E,onOpenChange:s,container:e,onSwitchBoard:r,onBeforeImport:a})=>{var J;const{confirm:i,confirmDialog:f}=Ue({container:e}),N=h=>{if(!h)return"";const y=new Date(h),A=y.getTimezoneOffset()*6e4;return new Date(y.getTime()-A).toISOString().slice(0,16)},c=h=>{if(!h)return null;const y=Date.parse(h);return Number.isNaN(y)?null:y},[l,k]=D.useState("backup"),[u,m]=D.useState({includePrompts:!0,includeProjects:!0,includeAssets:!0,includeKnowledgeBase:!0,timeRangeStart:null,timeRangeEnd:null}),[b,g]=D.useState(!1),[j,w]=D.useState(0),[o,p]=D.useState(""),[t,d]=D.useState(null),[x,v]=D.useState(null),_=D.useRef(null),I=D.useCallback(async h=>{if(!h.currentBoardId||!r)return;const y=z.getBoard(h.currentBoardId);if(!y)return;const A=z.getCurrentBoard();!A||!A.elements||A.elements.length===0?(await r(h.currentBoardId,h.viewport),T.success(`已切换到画板「${y.name}」`)):await i({title:"恢复画布状态",description:`备份时正在编辑画板「${h.currentBoardName||y.name}」,是否切换到该画板?`,confirmText:"切换",cancelText:"取消"})&&(await r(h.currentBoardId,h.viewport),T.success(`已切换到画板「${y.name}」`))},[i,r]),S=D.useCallback(async()=>{if(!b){if(x&&(await I(x),v(null)),t&&t.tasks&&t.tasks.imported>0){Be();return}s(!1),w(0),p(""),d(null)}},[b,s,t,x,I]),F=D.useCallback(async()=>{if(!u.includePrompts&&!u.includeProjects&&!u.includeAssets&&!u.includeKnowledgeBase){T.warning("请至少选择一项要备份的内容");return}if(u.timeRangeStart&&u.timeRangeEnd&&u.timeRangeStart>u.timeRangeEnd){T.warning("开始时间不能晚于结束时间");return}g(!0),w(0),p("正在准备...");try{const h=await te.exportToZip(u,(y,A)=>{w(y),p(A)});T.success(`备份成功!分片 ${h.totalParts} 个,素材 ${h.stats.assetCount} 个`),S()}catch(h){console.error("[BackupRestore] Export failed:",h),T.error("备份失败,请重试")}finally{g(!1)}},[u,S]),H=D.useCallback(()=>{var h;(h=_.current)==null||h.click()},[]),K=D.useCallback(async h=>{var A,L;const y=(A=h.target.files)==null?void 0:A[0];if(y){if(!y.name.endsWith(".zip")){T.warning("请选择 ZIP 格式的备份文件");return}g(!0),w(0),p("正在保存当前画板..."),d(null);try{a&&await a(),p("正在读取文件...");const B=await te.importFromZip(y,(ue,pe)=>{w(ue),p(pe)});d(B),(L=B.workspaceState)!=null&&L.currentBoardId&&v(B.workspaceState),B.success?T.success("导入成功!"):B.errors.length>0&&T.warning("导入完成,但有部分错误")}catch(B){console.error("[BackupRestore] Import failed:",B),T.error("导入失败,请检查文件格式")}finally{g(!1),_.current&&(_.current.value="")}}},[a]),C=D.useCallback((h,y)=>{m(A=>({...A,[h]:y}))},[]);return n.jsxDEV(Ve,{open:E,onOpenChange:S,children:[n.jsxDEV(Pe,{className:"backup-restore-dialog",container:e,"data-testid":"backup-restore-dialog",children:[n.jsxDEV("h2",{className:"backup-restore-dialog__title",children:"备份 / 恢复"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:286,columnNumber:9},void 0),n.jsxDEV("div",{className:"backup-restore-dialog__tabs",children:[n.jsxDEV("button",{className:`backup-restore-dialog__tab ${l==="backup"?"backup-restore-dialog__tab--active":""}`,onClick:()=>k("backup"),disabled:b,children:"备份"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:290,columnNumber:11},void 0),n.jsxDEV("button",{className:`backup-restore-dialog__tab ${l==="restore"?"backup-restore-dialog__tab--active":""}`,onClick:()=>k("restore"),disabled:b,children:"恢复"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:299,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:289,columnNumber:9},void 0),l==="backup"&&n.jsxDEV("div",{className:"backup-restore-dialog__panel",children:[n.jsxDEV("p",{className:"backup-restore-dialog__description",children:"选择要备份的内容,将导出为 ZIP 压缩包:"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:315,columnNumber:13},void 0),n.jsxDEV("div",{className:"backup-restore-dialog__options",children:[n.jsxDEV($,{checked:u.includePrompts,onChange:h=>C("includePrompts",h),disabled:b,children:n.jsxDEV("div",{className:"backup-restore-dialog__option-content",children:[n.jsxDEV("span",{className:"backup-restore-dialog__option-title",children:"提示词"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:328,columnNumber:19},void 0),n.jsxDEV("span",{className:"backup-restore-dialog__option-desc",children:"包含图片和视频生成的历史提示词"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:331,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:327,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:320,columnNumber:15},void 0),n.jsxDEV($,{checked:u.includeProjects,onChange:h=>C("includeProjects",h),disabled:b,children:n.jsxDEV("div",{className:"backup-restore-dialog__option-content",children:[n.jsxDEV("span",{className:"backup-restore-dialog__option-title",children:"项目"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:345,columnNumber:19},void 0),n.jsxDEV("span",{className:"backup-restore-dialog__option-desc",children:"包含所有文件夹和画板"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:348,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:344,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:337,columnNumber:15},void 0),n.jsxDEV($,{checked:u.includeAssets,onChange:h=>C("includeAssets",h),disabled:b,children:n.jsxDEV("div",{className:"backup-restore-dialog__option-content",children:[n.jsxDEV("span",{className:"backup-restore-dialog__option-title",children:"素材库"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:362,columnNumber:19},void 0),n.jsxDEV("span",{className:"backup-restore-dialog__option-desc",children:"包含所有本地上传的图片、视频和音频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:365,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:361,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:354,columnNumber:15},void 0),n.jsxDEV($,{checked:u.includeKnowledgeBase,onChange:h=>C("includeKnowledgeBase",h),disabled:b,children:n.jsxDEV("div",{className:"backup-restore-dialog__option-content",children:[n.jsxDEV("span",{className:"backup-restore-dialog__option-title",children:"知识库"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:379,columnNumber:19},void 0),n.jsxDEV("span",{className:"backup-restore-dialog__option-desc",children:"包含所有目录、笔记和标签"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:382,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:378,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:371,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:319,columnNumber:13},void 0),n.jsxDEV("div",{className:"backup-restore-dialog__time-range",children:[n.jsxDEV("div",{className:"backup-restore-dialog__time-range-title",children:"素材导出时间范围(可选)"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:390,columnNumber:15},void 0),n.jsxDEV("div",{className:"backup-restore-dialog__time-range-row",children:[n.jsxDEV("label",{className:"backup-restore-dialog__time-range-field",children:[n.jsxDEV("span",{children:"开始时间"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:395,columnNumber:19},void 0),n.jsxDEV("input",{type:"datetime-local",value:N(u.timeRangeStart),disabled:b,onChange:h=>m(y=>({...y,timeRangeStart:c(h.target.value)}))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:396,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:394,columnNumber:17},void 0),n.jsxDEV("label",{className:"backup-restore-dialog__time-range-field",children:[n.jsxDEV("span",{children:"结束时间"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:409,columnNumber:19},void 0),n.jsxDEV("input",{type:"datetime-local",value:N(u.timeRangeEnd),disabled:b,onChange:h=>m(y=>({...y,timeRangeEnd:c(h.target.value)}))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:410,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:408,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:393,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:389,columnNumber:13},void 0),b&&n.jsxDEV("div",{className:"backup-restore-dialog__progress",children:[n.jsxDEV(Y,{percentage:j,theme:"line"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:427,columnNumber:17},void 0),n.jsxDEV("span",{className:"backup-restore-dialog__progress-text",children:o},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:428,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:426,columnNumber:15},void 0),n.jsxDEV("div",{className:"backup-restore-dialog__actions",children:[n.jsxDEV("button",{className:"backup-restore-dialog__button backup-restore-dialog__button--cancel",onClick:S,disabled:b,children:"取消"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:435,columnNumber:15},void 0),n.jsxDEV("button",{className:"backup-restore-dialog__button backup-restore-dialog__button--primary",onClick:F,disabled:b,children:b?"正在备份...":"开始备份"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:442,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:434,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:314,columnNumber:11},void 0),l==="restore"&&n.jsxDEV("div",{className:"backup-restore-dialog__panel",children:[n.jsxDEV("p",{className:"backup-restore-dialog__description",children:"选择备份文件进行恢复,数据将增量导入(不会覆盖现有内容):"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:456,columnNumber:13},void 0),n.jsxDEV("div",{className:"backup-restore-dialog__dropzone",onClick:H,children:[n.jsxDEV(Fe,{className:"backup-restore-dialog__dropzone-icon"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:464,columnNumber:15},void 0),n.jsxDEV("span",{className:"backup-restore-dialog__dropzone-text",children:"点击选择备份文件 (.zip)"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:465,columnNumber:15},void 0),n.jsxDEV("input",{ref:_,type:"file",accept:".zip",onChange:K,style:{display:"none"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:468,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:460,columnNumber:13},void 0),b&&n.jsxDEV("div",{className:"backup-restore-dialog__progress",children:[n.jsxDEV(Y,{percentage:j,theme:"line"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:479,columnNumber:17},void 0),n.jsxDEV("span",{className:"backup-restore-dialog__progress-text",children:o},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:480,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:478,columnNumber:15},void 0),t&&n.jsxDEV("div",{className:"backup-restore-dialog__result",children:[n.jsxDEV("h4",{className:"backup-restore-dialog__result-title",children:t.success?"导入完成":"导入完成(有错误)"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:488,columnNumber:17},void 0),n.jsxDEV("ul",{className:"backup-restore-dialog__result-list",children:[(t.prompts.imported>0||t.prompts.skipped>0)&&n.jsxDEV("li",{children:["提示词:导入 ",t.prompts.imported," 条,跳过"," ",t.prompts.skipped," 条"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:494,columnNumber:21},void 0),(t.projects.folders>0||t.projects.boards>0||t.projects.merged>0)&&n.jsxDEV("li",{children:["项目:导入 ",t.projects.folders," 个文件夹,",t.projects.boards," 个画板",t.projects.merged>0&&`,合并 ${t.projects.merged} 个画板`]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:502,columnNumber:21},void 0),(t.assets.imported>0||t.assets.skipped>0)&&n.jsxDEV("li",{children:["素材:导入 ",t.assets.imported," 个,跳过"," ",t.assets.skipped," 个"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:511,columnNumber:21},void 0),t.knowledgeBase&&(t.knowledgeBase.notes>0||t.knowledgeBase.directories>0)&&n.jsxDEV("li",{children:["知识库:导入 ",t.knowledgeBase.directories," ","个目录,",t.knowledgeBase.notes," 篇笔记,",t.knowledgeBase.tags," 个标签"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:519,columnNumber:23},void 0),t.tasks&&(t.tasks.imported>0||t.tasks.skipped>0)&&n.jsxDEV("li",{children:["任务:导入 ",t.tasks.imported," 个,跳过"," ",t.tasks.skipped," 个"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:528,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:491,columnNumber:17},void 0),t.errors.length>0&&n.jsxDEV("div",{className:"backup-restore-dialog__result-errors",children:[n.jsxDEV("strong",{children:"错误信息:"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:536,columnNumber:21},void 0),n.jsxDEV("ul",{children:t.errors.map((h,y)=>n.jsxDEV("li",{children:h},y,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:539,columnNumber:25},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:537,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:535,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:487,columnNumber:15},void 0),n.jsxDEV("div",{className:"backup-restore-dialog__actions",children:n.jsxDEV("button",{className:"backup-restore-dialog__button backup-restore-dialog__button--cancel",onClick:S,disabled:b,children:t?((J=t.tasks)==null?void 0:J.imported)>0?"完成并刷新":"完成":"取消"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:548,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:547,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:455,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:281,columnNumber:7},void 0),f]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/backup-restore/backup-restore-dialog.tsx",lineNumber:280,columnNumber:5},void 0)};export{Ye as BackupRestoreDialog};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{b as o,I as He,_ as Be,ap as Ra,bE as Oa,cR as Ma,bl as $a,co as La,ar as Ta,aF as ue,aS as Rt,cS as Pa,cT as Ot,cU as Ae,cV as ft,cW as Mt,cX as Fe,cY as Ia,cZ as ht,bS as k,aJ as Ke,c_ as Aa,O as pt,c$ as Z,d0 as Fa,d1 as Ka,d2 as Ha,ac as Ba,x as a,H as P,aC as U,bO as Ga,d3 as Za,aD as $t,d4 as Lt,c6 as Ja,bU as Wa,d5 as Xa,aE as Tt,bm as Pt,ao as Ya,d6 as Qa}from"./index-CLp1N2JZ.js";import{M as ei}from"./MediaViewer-CSkzdABU.js";import{D as It}from"./download-hxWX9Zug.js";import{I as ti}from"./image-C--jLg-o.js";function At(N,h){var w=Object.keys(N);if(Object.getOwnPropertySymbols){var x=Object.getOwnPropertySymbols(N);h&&(x=x.filter(function(q){return Object.getOwnPropertyDescriptor(N,q).enumerable})),w.push.apply(w,x)}return w}function Ft(N){for(var h=1;h<arguments.length;h++){var w=arguments[h]!=null?arguments[h]:{};h%2?At(Object(w),!0).forEach(function(x){Be(N,x,w[x])}):Object.getOwnPropertyDescriptors?Object.defineProperties(N,Object.getOwnPropertyDescriptors(w)):At(Object(w)).forEach(function(x){Object.defineProperty(N,x,Object.getOwnPropertyDescriptor(w,x))})}return N}var ai={tag:"svg",attrs:{fill:"none",viewBox:"0 0 24 24",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M11.0002 4.5L11.0002 16.0858L6.50015 11.5858L5.08594 13L12.0002 19.9142L18.9144 13L17.5001 11.5858L13.0002 16.0858L13.0002 4.5L11.0002 4.5Z"}}]},ke=o.forwardRef(function(N,h){return o.createElement(He,Ft(Ft({},N),{},{id:"arrow-down",ref:h,icon:ai}))});ke.displayName="ArrowDownIcon";function Kt(N,h){var w=Object.keys(N);if(Object.getOwnPropertySymbols){var x=Object.getOwnPropertySymbols(N);h&&(x=x.filter(function(q){return Object.getOwnPropertyDescriptor(N,q).enumerable})),w.push.apply(w,x)}return w}function Ht(N){for(var h=1;h<arguments.length;h++){var w=arguments[h]!=null?arguments[h]:{};h%2?Kt(Object(w),!0).forEach(function(x){Be(N,x,w[x])}):Object.getOwnPropertyDescriptors?Object.defineProperties(N,Object.getOwnPropertyDescriptors(w)):Kt(Object(w)).forEach(function(x){Object.defineProperty(N,x,Object.getOwnPropertyDescriptor(w,x))})}return N}var ii={tag:"svg",attrs:{fill:"none",viewBox:"0 0 24 24",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M2 2H22V22H2V2ZM4 4V20H20V4H4ZM17.9142 9L10.5 16.4142L6.08579 12L7.5 10.5858L10.5 13.5858L16.5 7.58579L17.9142 9Z"}}]},Xt=o.forwardRef(function(N,h){return o.createElement(He,Ht(Ht({},N),{},{id:"check-rectangle",ref:h,icon:ii}))});Xt.displayName="CheckRectangleIcon";function Bt(N,h){var w=Object.keys(N);if(Object.getOwnPropertySymbols){var x=Object.getOwnPropertySymbols(N);h&&(x=x.filter(function(q){return Object.getOwnPropertyDescriptor(N,q).enumerable})),w.push.apply(w,x)}return w}function Gt(N){for(var h=1;h<arguments.length;h++){var w=arguments[h]!=null?arguments[h]:{};h%2?Bt(Object(w),!0).forEach(function(x){Be(N,x,w[x])}):Object.getOwnPropertyDescriptors?Object.defineProperties(N,Object.getOwnPropertyDescriptors(w)):Bt(Object(w)).forEach(function(x){Object.defineProperty(N,x,Object.getOwnPropertyDescriptor(w,x))})}return N}var si={tag:"svg",attrs:{fill:"none",viewBox:"0 0 24 24",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M3 1H15.4142L21 6.58579V23H3V1ZM19 9H13V3H5V21H19V9ZM15 3.41745V7H18.5853L15 3.41745ZM7 10H9.6V12H9V12.6H7V10ZM10.4 10H13V12.6H11V12H10.4V10ZM9 14V13.4H7V16H9.6V14H9ZM11 14H17V20H11V14ZM13 16V18H15V16H13Z"}}]},Yt=o.forwardRef(function(N,h){return o.createElement(He,Gt(Gt({},N),{},{id:"file-paste",ref:h,icon:si}))});Yt.displayName="FilePasteIcon";function Zt(N,h){var w=Object.keys(N);if(Object.getOwnPropertySymbols){var x=Object.getOwnPropertySymbols(N);h&&(x=x.filter(function(q){return Object.getOwnPropertyDescriptor(N,q).enumerable})),w.push.apply(w,x)}return w}function Jt(N){for(var h=1;h<arguments.length;h++){var w=arguments[h]!=null?arguments[h]:{};h%2?Zt(Object(w),!0).forEach(function(x){Be(N,x,w[x])}):Object.getOwnPropertyDescriptors?Object.defineProperties(N,Object.getOwnPropertyDescriptors(w)):Zt(Object(w)).forEach(function(x){Object.defineProperty(N,x,Object.getOwnPropertyDescriptor(w,x))})}return N}var ni={tag:"svg",attrs:{fill:"none",viewBox:"0 0 24 24",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M15.0002 3.08569L22.4144 10.4999L2.00015 10.4999V8.4999L17.5859 8.4999L13.5859 4.49991L15.0002 3.08569ZM22.0002 13.4999V15.4999L6.41437 15.4999L10.4144 19.4999L9.00015 20.9141L1.58594 13.4999L22.0002 13.4999Z"}}]},Qt=o.forwardRef(function(N,h){return o.createElement(He,Jt(Jt({},N),{},{id:"swap",ref:h,icon:ni}))});Qt.displayName="SwapIcon";function ri(N={}){const{showNavbar:h=!0,showToolbar:w=!0,showTitle:x=!0,videoAutoPlay:q=!0,videoLoop:r=!0,onClose:se,onIndexChange:le}=N,[I,me]=o.useState(!1),[Q,A]=o.useState([]),[ge,ce]=o.useState(0),Ge=o.useCallback((p,S=0)=>{const T=Array.isArray(p)?p:[p];T.length!==0&&(A(T),ce(Math.max(0,Math.min(S,T.length-1))),me(!0))},[]),fe=o.useCallback(()=>{me(!1),A([]),ce(0),se==null||se()},[se]),he=o.useCallback(p=>{ce(p),le==null||le(p)},[le]),ye=o.useMemo(()=>({visible:I,items:Q,initialIndex:ge,onClose:fe,onIndexChange:he,showNavbar:h,showToolbar:w,showTitle:x,videoAutoPlay:q,videoLoop:r}),[I,Q,ge,fe,he,h,w,x,q,r]);return{openViewer:Ge,closeViewer:fe,isOpen:I,currentIndex:ge,items:Q,viewerProps:ye}}function oi(N,h="image"){return N.map((w,x)=>({url:w,type:h,alt:`${h==="image"?"Image":"Video"} ${x+1}`}))}const Wt=Pa.BATCH_IMAGE_CACHE,li=["auto","1x1","1x4","4x1","1x8","8x1","2x3","3x2","3x4","4x3","4x5","5x4","9x16","16x9","21x9"],bt={auto:"自动","1x1":"1:1","1x4":"1:4","4x1":"4:1","1x8":"1:8","8x1":"8:1","2x3":"2:3","3x2":"3:2","3x4":"3:4","4x3":"4:3","4x5":"4:5","5x4":"5:4","9x16":"9:16","16x9":"16:9","21x9":"21:9"},C=["prompt","size","images","count","preview"];function ci(){const N=[];for(let h=0;h<5;h++)N.push({id:h+1,prompt:"",size:"auto",images:[],count:1,taskIds:[]});return N}const pi=({onSwitchToSingle:N,selectedModel:h,selectedModelRef:w,onModelChange:x,onModelRefChange:q})=>{var zt;const{language:r}=Ra(),{confirm:se,confirmDialog:le}=Oa(),I=Ma("image"),{createTask:me,tasks:Q}=$a(),{addAsset:A,assets:ge,loadAssets:ce}=La(),{isMobile:Ge,isTablet:fe}=Ta(),he=Ge||fe,ye=ge.filter(t=>t.type===ue.IMAGE);o.useEffect(()=>{ce()},[ce]);const[p,S]=o.useState(ci),[T,je]=o.useState(6),[Nt,xt]=o.useState(!1),[Ze,Je]=o.useState(!1);o.useEffect(()=>{let t=!0;return Rt.get(Wt).then(e=>{t&&(e&&e.tasks&&Array.isArray(e.tasks)&&e.tasks.length>0&&(S(e.tasks),e.taskIdCounter&&je(e.taskIdCounter)),xt(!0))}).catch(e=>{console.warn("Failed to load batch image cache:",e),t&&xt(!0)}),()=>{t=!1}},[]);const[E,ne]=o.useState(null),[$,J]=o.useState([]),[F,z]=o.useState(null),[j,W]=o.useState(new Set),{validSelectedRows:di,selectedTaskCount:ui,selectedInfoText:ea}=o.useMemo(()=>{const t=[...j].filter(s=>{const l=p[s];return l&&l.prompt&&l.prompt.trim()!==""}).sort((s,l)=>s-l),e=t.reduce((s,l)=>{const u=p[l];return s+((u==null?void 0:u.count)||1)},0),i=t.length>0?r==="zh"?`已选 ${t.length} 行 / ${e} 任务`:`${t.length} rows / ${e} tasks`:"";return{validSelectedRows:t,selectedTaskCount:e,selectedInfoText:i}},[j,p,r]),K=o.useRef([]),H=o.useRef(-1),pe=o.useRef(!1),[wt,We]=o.useState(!0),[ta,Xe]=o.useState(!1),[B,vt]=o.useState(!1),[M,kt]=o.useState(null),[yt,jt]=o.useState([]),[Ee,Ye]=o.useState(null),[de,Qe]=o.useState(!1),[De,et]=o.useState(null),[aa,tt]=o.useState(null),[X,ia]=o.useState(1),[sa,at]=o.useState(!1),[R,it]=o.useState([]),[ee,Et]=o.useState(1),st=o.useMemo(()=>R.slice(0,12).map(t=>URL.createObjectURL(t)),[R]);o.useEffect(()=>()=>{st.forEach(t=>URL.revokeObjectURL(t))},[st]);const te=Ot("image"),Ve=Ae(I,te.modelId,ft(te.profileId,te.modelId))||Mt("image",te.modelId,ft(te.profileId,te.modelId)),[_,Ue]=o.useState((Ve==null?void 0:Ve.id)||((zt=I[0])==null?void 0:zt.id)||"gemini-2.5-flash-image-vip"),[G,Ce]=o.useState(Fe(Ve)||ft(te.profileId,te.modelId)),ae=o.useMemo(()=>{if(Ae(I,_,G)||!_)return I;const e=Mt("image",_,G);return e?[e,...I]:I},[I,_,G]),be=o.useMemo(()=>{const t=Ia(_).map(e=>e.value);return t.length>0?t:li},[_]),Y=o.useMemo(()=>new Set(be),[be]),L=o.useMemo(()=>Y.has("auto")?"auto":be[0]||"auto",[Y,be]);o.useEffect(()=>{S(t=>t.map(e=>Y.has(e.size)?e:{...e,size:L}))},[L,Y]),o.useEffect(()=>{if(ae.length===0)return;Ae(ae,_,G)||(Ue(ae[0].id),Ce(Fe(ae[0])))},[_,G,ae]),o.useEffect(()=>{if(!h)return;const t=ht(_,G),e=ht(h,w);if(t!==e){Ue(h);const i=Ae(ae,h,w);Ce(Fe(i)||w||null)}},[h,w,_,G,ae]);const{openViewer:Dt,viewerProps:na}=ri(),[Ne,nt]=o.useState(null),[ra,Se]=o.useState(!1),[qe,oa]=o.useState(5),[Vt,rt]=o.useState(!1),[ot,lt]=o.useState(null),ze=o.useRef(null),_e=o.useRef(null),Re=o.useRef(null),Oe=o.useRef(null),Ut=o.useRef(null),Me=o.useRef(null),ct=o.useRef(null);o.useEffect(()=>{if(!Nt)return;const t={tasks:p,taskIdCounter:T,timestamp:Date.now()};Rt.set(Wt,t).catch(e=>{console.warn("Failed to save batch image cache:",e)})},[p,T,Nt]);const Ct=o.useCallback((t,e,i,s)=>{if(pe.current){pe.current=!1;return}K.current=K.current.slice(0,H.current+1);const l={tasks:JSON.parse(JSON.stringify(t)),selectedCells:[...e],activeCell:i?{...i}:null,selectedRows:Array.from(s)};K.current.push(l),H.current=K.current.length-1,K.current.length>50&&(K.current.shift(),H.current--)},[]);o.useEffect(()=>{p.length>0&&Ct(p,$,E,j)},[p,Ct]),o.useEffect(()=>{if(K.current.length>0&&H.current>=0&&!pe.current){const t=K.current[H.current];t&&(t.selectedCells=[...$],t.activeCell=E?{...E}:null,t.selectedRows=Array.from(j))}},[$,E,j]);const St=o.useCallback(()=>{if(H.current>0){H.current--,pe.current=!0;const t=K.current[H.current];S(JSON.parse(JSON.stringify(t.tasks))),J([...t.selectedCells]),ne(t.activeCell?{...t.activeCell}:null),W(new Set(t.selectedRows)),k.info(r==="zh"?"已撤销":"Undone")}else k.warning(r==="zh"?"没有可撤销的操作":"Nothing to undo")},[r]),qt=o.useCallback(()=>{if(H.current<K.current.length-1){H.current++,pe.current=!0;const t=K.current[H.current];S(JSON.parse(JSON.stringify(t.tasks))),J([...t.selectedCells]),ne(t.activeCell?{...t.activeCell}:null),W(new Set(t.selectedRows)),k.info(r==="zh"?"已重做":"Redone")}else k.warning(r==="zh"?"没有可重做的操作":"Nothing to redo")},[r]),la=o.useCallback(t=>{S(e=>{const i=[...e];for(let s=0;s<t;s++)i.push({id:T+s,prompt:"",size:L,images:[],count:1,taskIds:[]});return i}),je(e=>e+t)},[L,T]),ca=o.useCallback(()=>{if(j.size===0){k.warning(r==="zh"?"请先勾选要删除的行":"Please check rows to delete");return}S(t=>t.filter((e,i)=>!j.has(i))),W(new Set),J([]),ne(null)},[j,r]),D=o.useCallback((t,e)=>{ne({row:t,col:e}),J([{row:t,col:e}]),z(null)},[]),$e=o.useCallback((t,e)=>{D(t,e),C.includes(e)&&e!=="images"&&z({row:t,col:e})},[D]),V=o.useCallback((t,e,i)=>{S(s=>{if(!s[t])return s;const l=[...s];return l[t]={...l[t],[e]:i},l})},[]),xe=o.useCallback((t,e,i)=>{if(t.shiftKey&&E){const s=Math.min(E.row,e),l=Math.max(E.row,e);W(c=>{const d=new Set(c);for(let b=s;b<=l;b++)d.add(b);return d});const u=[];for(let c=s;c<=l;c++)u.push({row:c,col:E.col});J(u),Ut.current=e}else t.ctrlKey||t.metaKey?J(s=>s.some(u=>u.row===e&&u.col===i)?s.filter(u=>!(u.row===e&&u.col===i)):[...s,{row:e,col:i}]):(D(e,i),Ut.current=e)},[E,D]),Le=o.useCallback(t=>{var i;if(!E){k.warning(r==="zh"?"请先选中一个单元格作为填充源":"Please select a cell as fill source");return}const e=(i=p[E.row])==null?void 0:i[t];if(e==null||typeof e=="string"&&e.trim()===""||Array.isArray(e)&&e.length===0){k.warning(r==="zh"?"选中的单元格没有数据":"Selected cell has no data");return}S(s=>s.map(l=>({...l,[t]:t==="images"&&Array.isArray(e)?[...e]:e}))),k.success(r==="zh"?"已填充整列":"Column filled")},[E,p,r]),Te=o.useCallback((t,e)=>{Qe(!1),et(null),vt(!0),kt({row:t,col:e}),Ye(t)},[]),dt=o.useCallback((t,e)=>{B||(Qe(!0),et({row:t,col:e}),ne({row:t,col:e}),J([{row:t,col:e}]))},[B]),da=o.useCallback(t=>{if(!B&&!de)return;const i=t.target.closest("tr[data-row-index]");if(!i)return;const s=parseInt(i.dataset.rowIndex||"-1");if(!(s<0)){if(B&&M){Ye(s);const l=M.row,u=s,c=Math.min(l,u),d=Math.max(l,u),b=[];for(let g=c;g<=d;g++)g!==l&&b.push(g);jt(b)}if(de&&De){const l=De.col,u=De.row,c=s,d=Math.min(u,c),b=Math.max(u,c),g=[];for(let n=d;n<=b;n++)g.push({row:n,col:l});J(g)}}},[B,M,de,De]),Pe=o.useCallback(()=>{var t;if(B&&M&&Ee!==null&&Ee!==M.row){const e=(t=p[M.row])==null?void 0:t[M.col],i=M.row,s=Ee,l=Math.min(i,s),u=Math.max(i,s);S(d=>{const b=[...d];for(let g=l;g<=u;g++)g!==i&&b[g]&&(b[g]={...b[g],[M.col]:Array.isArray(e)?[...e]:e});return b});const c=[];for(let d=l;d<=u;d++)c.push({row:d,col:M.col});J(c),k.success(r==="zh"?`已填充 ${Math.abs(s-i)} 行`:`Filled ${Math.abs(s-i)} rows`)}vt(!1),kt(null),Ye(null),jt([]),Qe(!1),et(null)},[B,M,Ee,p,r]),ua=o.useCallback(t=>{const e=t.target.files;e&&(Array.from(e).forEach(i=>{i.type.startsWith("image/")&&A(i,ue.IMAGE,Ke.LOCAL,i.name).catch(s=>{console.warn("[BatchImageGeneration] Failed to add asset to library:",s)})}),ze.current&&(ze.current.value=""))},[A]),ma=o.useCallback(t=>{let e=[];if(j.size>0?e=[...j]:$.length>0?e=[...new Set($.map(i=>i.row))]:E&&(e=[E.row]),e.length===0){k.warning(r==="zh"?"请先选中要添加图片的行":"Please select a row first");return}S(i=>{const s=[...i];return e.forEach(l=>{s[l]&&!s[l].images.includes(t)&&(s[l]={...s[l],images:[...s[l].images,t]})}),s})},[j,$,E,r]),re=o.useCallback((t,e)=>{S(i=>{const s=[...i];return s[t]&&!s[t].images.includes(e)&&(s[t]={...s[t],images:[...s[t].images,e]}),s})},[]),ga=o.useCallback((t,e)=>{S(i=>{const s=[...i];return s[t]&&(s[t]={...s[t],images:s[t].images.filter(l=>l!==e)}),s})},[]),fa=o.useCallback(t=>{const e=t.target.files,i=ct.current;!e||e.length===0||i===null||(Array.from(e).forEach(s=>{if(!s.type.startsWith("image/"))return;A(s,ue.IMAGE,Ke.LOCAL,s.name).catch(u=>{console.warn("[BatchImageGeneration] Failed to add asset to library:",u)});const l=new FileReader;l.onload=u=>{var d;const c=(d=u.target)==null?void 0:d.result;re(i,c)},l.readAsDataURL(s)}),Oe.current&&(Oe.current.value=""),ct.current=null)},[re,A]),ha=o.useCallback(t=>{var e;ct.current=t,We(!0),(e=Oe.current)==null||e.click()},[]),pa=o.useCallback(t=>{lt(t),rt(!0)},[]),ba=o.useCallback(t=>{ot!==null&&(t.url&&re(ot,t.url),rt(!1),lt(null))},[ot,re]),Na=o.useCallback((t,e)=>{t.preventDefault(),t.dataTransfer.dropEffect="copy",tt(e)},[]),xa=o.useCallback(t=>{const e=t.relatedTarget;(!e||!t.currentTarget.contains(e))&&tt(null)},[]),wa=o.useCallback((t,e)=>{t.preventDefault(),tt(null);const i=t.dataTransfer.getData("text/library-image");if(i){re(e,i),k.success(r==="zh"?`已添加图片到第 ${e+1} 行`:`Added image to row ${e+1}`);return}const s=t.dataTransfer.files;if(!s||s.length===0)return;let l=0;Array.from(s).forEach(u=>{if(!u.type.startsWith("image/"))return;A(u,ue.IMAGE,Ke.LOCAL,u.name).catch(d=>{console.warn("[BatchImageGeneration] Failed to add asset to library:",d)});const c=new FileReader;c.onload=d=>{var g;const b=(g=d.target)==null?void 0:g.result;re(e,b)},c.readAsDataURL(u),l++}),l>0&&k.success(r==="zh"?`已添加 ${l} 张图片到第 ${e+1} 行`:`Added ${l} images to row ${e+1}`)},[re,r,A]),va=o.useCallback((t,e)=>{t.dataTransfer.setData("text/library-image",e),t.dataTransfer.effectAllowed="copy"},[]),ka=o.useCallback(t=>{const e=t.target.files;if(!e||e.length===0)return;const i=Array.from(e).filter(l=>l.type.startsWith("image/"));if(i.length===0){k.warning(r==="zh"?"请选择图片文件":"Please select image files");return}it(i);const s=E?E.row+1:1;Et(Math.min(s,p.length)),at(!0),_e.current&&(_e.current.value="")},[r,E,p.length]),ya=o.useCallback(async()=>{if(R.length===0)return;const t=Aa(`批量导入(${R.length}张)`),e=X,i=R.length,s=Math.ceil(i/e),l=ee-1,u=[];for(const g of R){A(g,ue.IMAGE,Ke.LOCAL,g.name).catch(m=>{console.warn("[BatchImageGeneration] Failed to add asset to library:",m)});const n=await new Promise((m,v)=>{const f=new FileReader;f.onload=y=>{var O;return m((O=y.target)==null?void 0:O.result)},f.onerror=v,f.readAsDataURL(g)});u.push(n)}S(g=>{const n=[...g];let m=0,v=0;for(let f=0;f<s;f++){const y=l+f,O=[];for(let oe=0;oe<e&&m<i;oe++)O.push(u[m]),m++;y<n.length?n[y]={...n[y],images:[...n[y].images,...O]}:(n.push({id:T+v,prompt:"",size:L,images:O,count:1,taskIds:[]}),v++)}return n});const c=Math.min(s,p.length-l),d=Math.max(0,s-c);d>0&&je(g=>g+d),it([]),at(!1),t();const b=r==="zh"?`已导入 ${i} 张图片,从第 ${ee} 行开始`:`Imported ${i} images starting from row ${ee}`;k.success(b)},[R,X,ee,T,p.length,r,A,L]),ut=o.useCallback(()=>{it([]),at(!1)},[]),ja=o.useCallback(async()=>{try{const t=await pt(()=>import("./xlsx-CkFp8p6R.js"),[],import.meta.url),e=[{提示词:"一只可爱的橘猫在阳光下睡觉",尺寸:"1x1",数量:1},{提示词:"未来城市的夜景,霓虹灯闪烁",尺寸:"16x9",数量:2},{提示词:"古风美女,水墨画风格",尺寸:"3x4",数量:1},{提示词:"",尺寸:"1x1",数量:1},{提示词:"",尺寸:"1x1",数量:1}],i=t.utils.book_new(),s=t.utils.json_to_sheet(e);s["!cols"]=[{wch:60},{wch:10},{wch:8}],t.utils.book_append_sheet(i,s,"批量出图模板"),t.writeFile(i,"batch-image-template.xlsx"),k.success(r==="zh"?"模板下载成功,填写后可导入使用":"Template downloaded, fill and import to use")}catch(t){console.error("Excel template download error:",t),k.error(r==="zh"?"下载失败,请稍后重试":"Download failed, please try again")}},[r]),Ea=o.useCallback(async t=>{var i;const e=(i=t.target.files)==null?void 0:i[0];if(e){try{const s=await pt(()=>import("./xlsx-CkFp8p6R.js"),[],import.meta.url),l=new FileReader;l.onload=u=>{var c;try{const d=new Uint8Array((c=u.target)==null?void 0:c.result),b=s.read(d,{type:"array"}),g=b.SheetNames[0],n=b.Sheets[g],m=s.utils.sheet_to_json(n);if(m.length===0){k.warning(r==="zh"?"Excel 文件为空":"Excel file is empty");return}const v=m.map((f,y)=>{const O=f.提示词||f.prompt||f.Prompt||"",oe=f.尺寸||f.size||f.Size||L,za=parseInt(String(f.数量||f.count||f.Count||"1"))||1,_t=f.参考图||f.images||f.Images||"",_a=_t?_t.split(`
|
|
1
|
+
import{b as o,I as He,_ as Be,ap as Ra,bE as Oa,cR as Ma,bl as $a,co as La,ar as Ta,aF as ue,aS as Rt,cS as Pa,cT as Ot,cU as Ae,cV as ft,cW as Mt,cX as Fe,cY as Ia,cZ as ht,bS as k,aJ as Ke,c_ as Aa,O as pt,c$ as Z,d0 as Fa,d1 as Ka,d2 as Ha,ac as Ba,x as a,H as P,aC as U,bO as Ga,d3 as Za,aD as $t,d4 as Lt,c6 as Ja,bU as Wa,d5 as Xa,aE as Tt,bm as Pt,ao as Ya,d6 as Qa}from"./index-D5YSioyv.js";import{M as ei}from"./MediaViewer-DzoUeXBR.js";import{D as It}from"./download-DYHFFs_D.js";import{I as ti}from"./image-C9vXAEOB.js";function At(N,h){var w=Object.keys(N);if(Object.getOwnPropertySymbols){var x=Object.getOwnPropertySymbols(N);h&&(x=x.filter(function(q){return Object.getOwnPropertyDescriptor(N,q).enumerable})),w.push.apply(w,x)}return w}function Ft(N){for(var h=1;h<arguments.length;h++){var w=arguments[h]!=null?arguments[h]:{};h%2?At(Object(w),!0).forEach(function(x){Be(N,x,w[x])}):Object.getOwnPropertyDescriptors?Object.defineProperties(N,Object.getOwnPropertyDescriptors(w)):At(Object(w)).forEach(function(x){Object.defineProperty(N,x,Object.getOwnPropertyDescriptor(w,x))})}return N}var ai={tag:"svg",attrs:{fill:"none",viewBox:"0 0 24 24",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M11.0002 4.5L11.0002 16.0858L6.50015 11.5858L5.08594 13L12.0002 19.9142L18.9144 13L17.5001 11.5858L13.0002 16.0858L13.0002 4.5L11.0002 4.5Z"}}]},ke=o.forwardRef(function(N,h){return o.createElement(He,Ft(Ft({},N),{},{id:"arrow-down",ref:h,icon:ai}))});ke.displayName="ArrowDownIcon";function Kt(N,h){var w=Object.keys(N);if(Object.getOwnPropertySymbols){var x=Object.getOwnPropertySymbols(N);h&&(x=x.filter(function(q){return Object.getOwnPropertyDescriptor(N,q).enumerable})),w.push.apply(w,x)}return w}function Ht(N){for(var h=1;h<arguments.length;h++){var w=arguments[h]!=null?arguments[h]:{};h%2?Kt(Object(w),!0).forEach(function(x){Be(N,x,w[x])}):Object.getOwnPropertyDescriptors?Object.defineProperties(N,Object.getOwnPropertyDescriptors(w)):Kt(Object(w)).forEach(function(x){Object.defineProperty(N,x,Object.getOwnPropertyDescriptor(w,x))})}return N}var ii={tag:"svg",attrs:{fill:"none",viewBox:"0 0 24 24",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M2 2H22V22H2V2ZM4 4V20H20V4H4ZM17.9142 9L10.5 16.4142L6.08579 12L7.5 10.5858L10.5 13.5858L16.5 7.58579L17.9142 9Z"}}]},Xt=o.forwardRef(function(N,h){return o.createElement(He,Ht(Ht({},N),{},{id:"check-rectangle",ref:h,icon:ii}))});Xt.displayName="CheckRectangleIcon";function Bt(N,h){var w=Object.keys(N);if(Object.getOwnPropertySymbols){var x=Object.getOwnPropertySymbols(N);h&&(x=x.filter(function(q){return Object.getOwnPropertyDescriptor(N,q).enumerable})),w.push.apply(w,x)}return w}function Gt(N){for(var h=1;h<arguments.length;h++){var w=arguments[h]!=null?arguments[h]:{};h%2?Bt(Object(w),!0).forEach(function(x){Be(N,x,w[x])}):Object.getOwnPropertyDescriptors?Object.defineProperties(N,Object.getOwnPropertyDescriptors(w)):Bt(Object(w)).forEach(function(x){Object.defineProperty(N,x,Object.getOwnPropertyDescriptor(w,x))})}return N}var si={tag:"svg",attrs:{fill:"none",viewBox:"0 0 24 24",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M3 1H15.4142L21 6.58579V23H3V1ZM19 9H13V3H5V21H19V9ZM15 3.41745V7H18.5853L15 3.41745ZM7 10H9.6V12H9V12.6H7V10ZM10.4 10H13V12.6H11V12H10.4V10ZM9 14V13.4H7V16H9.6V14H9ZM11 14H17V20H11V14ZM13 16V18H15V16H13Z"}}]},Yt=o.forwardRef(function(N,h){return o.createElement(He,Gt(Gt({},N),{},{id:"file-paste",ref:h,icon:si}))});Yt.displayName="FilePasteIcon";function Zt(N,h){var w=Object.keys(N);if(Object.getOwnPropertySymbols){var x=Object.getOwnPropertySymbols(N);h&&(x=x.filter(function(q){return Object.getOwnPropertyDescriptor(N,q).enumerable})),w.push.apply(w,x)}return w}function Jt(N){for(var h=1;h<arguments.length;h++){var w=arguments[h]!=null?arguments[h]:{};h%2?Zt(Object(w),!0).forEach(function(x){Be(N,x,w[x])}):Object.getOwnPropertyDescriptors?Object.defineProperties(N,Object.getOwnPropertyDescriptors(w)):Zt(Object(w)).forEach(function(x){Object.defineProperty(N,x,Object.getOwnPropertyDescriptor(w,x))})}return N}var ni={tag:"svg",attrs:{fill:"none",viewBox:"0 0 24 24",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M15.0002 3.08569L22.4144 10.4999L2.00015 10.4999V8.4999L17.5859 8.4999L13.5859 4.49991L15.0002 3.08569ZM22.0002 13.4999V15.4999L6.41437 15.4999L10.4144 19.4999L9.00015 20.9141L1.58594 13.4999L22.0002 13.4999Z"}}]},Qt=o.forwardRef(function(N,h){return o.createElement(He,Jt(Jt({},N),{},{id:"swap",ref:h,icon:ni}))});Qt.displayName="SwapIcon";function ri(N={}){const{showNavbar:h=!0,showToolbar:w=!0,showTitle:x=!0,videoAutoPlay:q=!0,videoLoop:r=!0,onClose:se,onIndexChange:le}=N,[I,me]=o.useState(!1),[Q,A]=o.useState([]),[ge,ce]=o.useState(0),Ge=o.useCallback((p,S=0)=>{const T=Array.isArray(p)?p:[p];T.length!==0&&(A(T),ce(Math.max(0,Math.min(S,T.length-1))),me(!0))},[]),fe=o.useCallback(()=>{me(!1),A([]),ce(0),se==null||se()},[se]),he=o.useCallback(p=>{ce(p),le==null||le(p)},[le]),ye=o.useMemo(()=>({visible:I,items:Q,initialIndex:ge,onClose:fe,onIndexChange:he,showNavbar:h,showToolbar:w,showTitle:x,videoAutoPlay:q,videoLoop:r}),[I,Q,ge,fe,he,h,w,x,q,r]);return{openViewer:Ge,closeViewer:fe,isOpen:I,currentIndex:ge,items:Q,viewerProps:ye}}function oi(N,h="image"){return N.map((w,x)=>({url:w,type:h,alt:`${h==="image"?"Image":"Video"} ${x+1}`}))}const Wt=Pa.BATCH_IMAGE_CACHE,li=["auto","1x1","1x4","4x1","1x8","8x1","2x3","3x2","3x4","4x3","4x5","5x4","9x16","16x9","21x9"],bt={auto:"自动","1x1":"1:1","1x4":"1:4","4x1":"4:1","1x8":"1:8","8x1":"8:1","2x3":"2:3","3x2":"3:2","3x4":"3:4","4x3":"4:3","4x5":"4:5","5x4":"5:4","9x16":"9:16","16x9":"16:9","21x9":"21:9"},C=["prompt","size","images","count","preview"];function ci(){const N=[];for(let h=0;h<5;h++)N.push({id:h+1,prompt:"",size:"auto",images:[],count:1,taskIds:[]});return N}const pi=({onSwitchToSingle:N,selectedModel:h,selectedModelRef:w,onModelChange:x,onModelRefChange:q})=>{var zt;const{language:r}=Ra(),{confirm:se,confirmDialog:le}=Oa(),I=Ma("image"),{createTask:me,tasks:Q}=$a(),{addAsset:A,assets:ge,loadAssets:ce}=La(),{isMobile:Ge,isTablet:fe}=Ta(),he=Ge||fe,ye=ge.filter(t=>t.type===ue.IMAGE);o.useEffect(()=>{ce()},[ce]);const[p,S]=o.useState(ci),[T,je]=o.useState(6),[Nt,xt]=o.useState(!1),[Ze,Je]=o.useState(!1);o.useEffect(()=>{let t=!0;return Rt.get(Wt).then(e=>{t&&(e&&e.tasks&&Array.isArray(e.tasks)&&e.tasks.length>0&&(S(e.tasks),e.taskIdCounter&&je(e.taskIdCounter)),xt(!0))}).catch(e=>{console.warn("Failed to load batch image cache:",e),t&&xt(!0)}),()=>{t=!1}},[]);const[E,ne]=o.useState(null),[$,J]=o.useState([]),[F,z]=o.useState(null),[j,W]=o.useState(new Set),{validSelectedRows:di,selectedTaskCount:ui,selectedInfoText:ea}=o.useMemo(()=>{const t=[...j].filter(s=>{const l=p[s];return l&&l.prompt&&l.prompt.trim()!==""}).sort((s,l)=>s-l),e=t.reduce((s,l)=>{const u=p[l];return s+((u==null?void 0:u.count)||1)},0),i=t.length>0?r==="zh"?`已选 ${t.length} 行 / ${e} 任务`:`${t.length} rows / ${e} tasks`:"";return{validSelectedRows:t,selectedTaskCount:e,selectedInfoText:i}},[j,p,r]),K=o.useRef([]),H=o.useRef(-1),pe=o.useRef(!1),[wt,We]=o.useState(!0),[ta,Xe]=o.useState(!1),[B,vt]=o.useState(!1),[M,kt]=o.useState(null),[yt,jt]=o.useState([]),[Ee,Ye]=o.useState(null),[de,Qe]=o.useState(!1),[De,et]=o.useState(null),[aa,tt]=o.useState(null),[X,ia]=o.useState(1),[sa,at]=o.useState(!1),[R,it]=o.useState([]),[ee,Et]=o.useState(1),st=o.useMemo(()=>R.slice(0,12).map(t=>URL.createObjectURL(t)),[R]);o.useEffect(()=>()=>{st.forEach(t=>URL.revokeObjectURL(t))},[st]);const te=Ot("image"),Ve=Ae(I,te.modelId,ft(te.profileId,te.modelId))||Mt("image",te.modelId,ft(te.profileId,te.modelId)),[_,Ue]=o.useState((Ve==null?void 0:Ve.id)||((zt=I[0])==null?void 0:zt.id)||"gemini-2.5-flash-image-vip"),[G,Ce]=o.useState(Fe(Ve)||ft(te.profileId,te.modelId)),ae=o.useMemo(()=>{if(Ae(I,_,G)||!_)return I;const e=Mt("image",_,G);return e?[e,...I]:I},[I,_,G]),be=o.useMemo(()=>{const t=Ia(_).map(e=>e.value);return t.length>0?t:li},[_]),Y=o.useMemo(()=>new Set(be),[be]),L=o.useMemo(()=>Y.has("auto")?"auto":be[0]||"auto",[Y,be]);o.useEffect(()=>{S(t=>t.map(e=>Y.has(e.size)?e:{...e,size:L}))},[L,Y]),o.useEffect(()=>{if(ae.length===0)return;Ae(ae,_,G)||(Ue(ae[0].id),Ce(Fe(ae[0])))},[_,G,ae]),o.useEffect(()=>{if(!h)return;const t=ht(_,G),e=ht(h,w);if(t!==e){Ue(h);const i=Ae(ae,h,w);Ce(Fe(i)||w||null)}},[h,w,_,G,ae]);const{openViewer:Dt,viewerProps:na}=ri(),[Ne,nt]=o.useState(null),[ra,Se]=o.useState(!1),[qe,oa]=o.useState(5),[Vt,rt]=o.useState(!1),[ot,lt]=o.useState(null),ze=o.useRef(null),_e=o.useRef(null),Re=o.useRef(null),Oe=o.useRef(null),Ut=o.useRef(null),Me=o.useRef(null),ct=o.useRef(null);o.useEffect(()=>{if(!Nt)return;const t={tasks:p,taskIdCounter:T,timestamp:Date.now()};Rt.set(Wt,t).catch(e=>{console.warn("Failed to save batch image cache:",e)})},[p,T,Nt]);const Ct=o.useCallback((t,e,i,s)=>{if(pe.current){pe.current=!1;return}K.current=K.current.slice(0,H.current+1);const l={tasks:JSON.parse(JSON.stringify(t)),selectedCells:[...e],activeCell:i?{...i}:null,selectedRows:Array.from(s)};K.current.push(l),H.current=K.current.length-1,K.current.length>50&&(K.current.shift(),H.current--)},[]);o.useEffect(()=>{p.length>0&&Ct(p,$,E,j)},[p,Ct]),o.useEffect(()=>{if(K.current.length>0&&H.current>=0&&!pe.current){const t=K.current[H.current];t&&(t.selectedCells=[...$],t.activeCell=E?{...E}:null,t.selectedRows=Array.from(j))}},[$,E,j]);const St=o.useCallback(()=>{if(H.current>0){H.current--,pe.current=!0;const t=K.current[H.current];S(JSON.parse(JSON.stringify(t.tasks))),J([...t.selectedCells]),ne(t.activeCell?{...t.activeCell}:null),W(new Set(t.selectedRows)),k.info(r==="zh"?"已撤销":"Undone")}else k.warning(r==="zh"?"没有可撤销的操作":"Nothing to undo")},[r]),qt=o.useCallback(()=>{if(H.current<K.current.length-1){H.current++,pe.current=!0;const t=K.current[H.current];S(JSON.parse(JSON.stringify(t.tasks))),J([...t.selectedCells]),ne(t.activeCell?{...t.activeCell}:null),W(new Set(t.selectedRows)),k.info(r==="zh"?"已重做":"Redone")}else k.warning(r==="zh"?"没有可重做的操作":"Nothing to redo")},[r]),la=o.useCallback(t=>{S(e=>{const i=[...e];for(let s=0;s<t;s++)i.push({id:T+s,prompt:"",size:L,images:[],count:1,taskIds:[]});return i}),je(e=>e+t)},[L,T]),ca=o.useCallback(()=>{if(j.size===0){k.warning(r==="zh"?"请先勾选要删除的行":"Please check rows to delete");return}S(t=>t.filter((e,i)=>!j.has(i))),W(new Set),J([]),ne(null)},[j,r]),D=o.useCallback((t,e)=>{ne({row:t,col:e}),J([{row:t,col:e}]),z(null)},[]),$e=o.useCallback((t,e)=>{D(t,e),C.includes(e)&&e!=="images"&&z({row:t,col:e})},[D]),V=o.useCallback((t,e,i)=>{S(s=>{if(!s[t])return s;const l=[...s];return l[t]={...l[t],[e]:i},l})},[]),xe=o.useCallback((t,e,i)=>{if(t.shiftKey&&E){const s=Math.min(E.row,e),l=Math.max(E.row,e);W(c=>{const d=new Set(c);for(let b=s;b<=l;b++)d.add(b);return d});const u=[];for(let c=s;c<=l;c++)u.push({row:c,col:E.col});J(u),Ut.current=e}else t.ctrlKey||t.metaKey?J(s=>s.some(u=>u.row===e&&u.col===i)?s.filter(u=>!(u.row===e&&u.col===i)):[...s,{row:e,col:i}]):(D(e,i),Ut.current=e)},[E,D]),Le=o.useCallback(t=>{var i;if(!E){k.warning(r==="zh"?"请先选中一个单元格作为填充源":"Please select a cell as fill source");return}const e=(i=p[E.row])==null?void 0:i[t];if(e==null||typeof e=="string"&&e.trim()===""||Array.isArray(e)&&e.length===0){k.warning(r==="zh"?"选中的单元格没有数据":"Selected cell has no data");return}S(s=>s.map(l=>({...l,[t]:t==="images"&&Array.isArray(e)?[...e]:e}))),k.success(r==="zh"?"已填充整列":"Column filled")},[E,p,r]),Te=o.useCallback((t,e)=>{Qe(!1),et(null),vt(!0),kt({row:t,col:e}),Ye(t)},[]),dt=o.useCallback((t,e)=>{B||(Qe(!0),et({row:t,col:e}),ne({row:t,col:e}),J([{row:t,col:e}]))},[B]),da=o.useCallback(t=>{if(!B&&!de)return;const i=t.target.closest("tr[data-row-index]");if(!i)return;const s=parseInt(i.dataset.rowIndex||"-1");if(!(s<0)){if(B&&M){Ye(s);const l=M.row,u=s,c=Math.min(l,u),d=Math.max(l,u),b=[];for(let g=c;g<=d;g++)g!==l&&b.push(g);jt(b)}if(de&&De){const l=De.col,u=De.row,c=s,d=Math.min(u,c),b=Math.max(u,c),g=[];for(let n=d;n<=b;n++)g.push({row:n,col:l});J(g)}}},[B,M,de,De]),Pe=o.useCallback(()=>{var t;if(B&&M&&Ee!==null&&Ee!==M.row){const e=(t=p[M.row])==null?void 0:t[M.col],i=M.row,s=Ee,l=Math.min(i,s),u=Math.max(i,s);S(d=>{const b=[...d];for(let g=l;g<=u;g++)g!==i&&b[g]&&(b[g]={...b[g],[M.col]:Array.isArray(e)?[...e]:e});return b});const c=[];for(let d=l;d<=u;d++)c.push({row:d,col:M.col});J(c),k.success(r==="zh"?`已填充 ${Math.abs(s-i)} 行`:`Filled ${Math.abs(s-i)} rows`)}vt(!1),kt(null),Ye(null),jt([]),Qe(!1),et(null)},[B,M,Ee,p,r]),ua=o.useCallback(t=>{const e=t.target.files;e&&(Array.from(e).forEach(i=>{i.type.startsWith("image/")&&A(i,ue.IMAGE,Ke.LOCAL,i.name).catch(s=>{console.warn("[BatchImageGeneration] Failed to add asset to library:",s)})}),ze.current&&(ze.current.value=""))},[A]),ma=o.useCallback(t=>{let e=[];if(j.size>0?e=[...j]:$.length>0?e=[...new Set($.map(i=>i.row))]:E&&(e=[E.row]),e.length===0){k.warning(r==="zh"?"请先选中要添加图片的行":"Please select a row first");return}S(i=>{const s=[...i];return e.forEach(l=>{s[l]&&!s[l].images.includes(t)&&(s[l]={...s[l],images:[...s[l].images,t]})}),s})},[j,$,E,r]),re=o.useCallback((t,e)=>{S(i=>{const s=[...i];return s[t]&&!s[t].images.includes(e)&&(s[t]={...s[t],images:[...s[t].images,e]}),s})},[]),ga=o.useCallback((t,e)=>{S(i=>{const s=[...i];return s[t]&&(s[t]={...s[t],images:s[t].images.filter(l=>l!==e)}),s})},[]),fa=o.useCallback(t=>{const e=t.target.files,i=ct.current;!e||e.length===0||i===null||(Array.from(e).forEach(s=>{if(!s.type.startsWith("image/"))return;A(s,ue.IMAGE,Ke.LOCAL,s.name).catch(u=>{console.warn("[BatchImageGeneration] Failed to add asset to library:",u)});const l=new FileReader;l.onload=u=>{var d;const c=(d=u.target)==null?void 0:d.result;re(i,c)},l.readAsDataURL(s)}),Oe.current&&(Oe.current.value=""),ct.current=null)},[re,A]),ha=o.useCallback(t=>{var e;ct.current=t,We(!0),(e=Oe.current)==null||e.click()},[]),pa=o.useCallback(t=>{lt(t),rt(!0)},[]),ba=o.useCallback(t=>{ot!==null&&(t.url&&re(ot,t.url),rt(!1),lt(null))},[ot,re]),Na=o.useCallback((t,e)=>{t.preventDefault(),t.dataTransfer.dropEffect="copy",tt(e)},[]),xa=o.useCallback(t=>{const e=t.relatedTarget;(!e||!t.currentTarget.contains(e))&&tt(null)},[]),wa=o.useCallback((t,e)=>{t.preventDefault(),tt(null);const i=t.dataTransfer.getData("text/library-image");if(i){re(e,i),k.success(r==="zh"?`已添加图片到第 ${e+1} 行`:`Added image to row ${e+1}`);return}const s=t.dataTransfer.files;if(!s||s.length===0)return;let l=0;Array.from(s).forEach(u=>{if(!u.type.startsWith("image/"))return;A(u,ue.IMAGE,Ke.LOCAL,u.name).catch(d=>{console.warn("[BatchImageGeneration] Failed to add asset to library:",d)});const c=new FileReader;c.onload=d=>{var g;const b=(g=d.target)==null?void 0:g.result;re(e,b)},c.readAsDataURL(u),l++}),l>0&&k.success(r==="zh"?`已添加 ${l} 张图片到第 ${e+1} 行`:`Added ${l} images to row ${e+1}`)},[re,r,A]),va=o.useCallback((t,e)=>{t.dataTransfer.setData("text/library-image",e),t.dataTransfer.effectAllowed="copy"},[]),ka=o.useCallback(t=>{const e=t.target.files;if(!e||e.length===0)return;const i=Array.from(e).filter(l=>l.type.startsWith("image/"));if(i.length===0){k.warning(r==="zh"?"请选择图片文件":"Please select image files");return}it(i);const s=E?E.row+1:1;Et(Math.min(s,p.length)),at(!0),_e.current&&(_e.current.value="")},[r,E,p.length]),ya=o.useCallback(async()=>{if(R.length===0)return;const t=Aa(`批量导入(${R.length}张)`),e=X,i=R.length,s=Math.ceil(i/e),l=ee-1,u=[];for(const g of R){A(g,ue.IMAGE,Ke.LOCAL,g.name).catch(m=>{console.warn("[BatchImageGeneration] Failed to add asset to library:",m)});const n=await new Promise((m,v)=>{const f=new FileReader;f.onload=y=>{var O;return m((O=y.target)==null?void 0:O.result)},f.onerror=v,f.readAsDataURL(g)});u.push(n)}S(g=>{const n=[...g];let m=0,v=0;for(let f=0;f<s;f++){const y=l+f,O=[];for(let oe=0;oe<e&&m<i;oe++)O.push(u[m]),m++;y<n.length?n[y]={...n[y],images:[...n[y].images,...O]}:(n.push({id:T+v,prompt:"",size:L,images:O,count:1,taskIds:[]}),v++)}return n});const c=Math.min(s,p.length-l),d=Math.max(0,s-c);d>0&&je(g=>g+d),it([]),at(!1),t();const b=r==="zh"?`已导入 ${i} 张图片,从第 ${ee} 行开始`:`Imported ${i} images starting from row ${ee}`;k.success(b)},[R,X,ee,T,p.length,r,A,L]),ut=o.useCallback(()=>{it([]),at(!1)},[]),ja=o.useCallback(async()=>{try{const t=await pt(()=>import("./xlsx-CkFp8p6R.js"),[],import.meta.url),e=[{提示词:"一只可爱的橘猫在阳光下睡觉",尺寸:"1x1",数量:1},{提示词:"未来城市的夜景,霓虹灯闪烁",尺寸:"16x9",数量:2},{提示词:"古风美女,水墨画风格",尺寸:"3x4",数量:1},{提示词:"",尺寸:"1x1",数量:1},{提示词:"",尺寸:"1x1",数量:1}],i=t.utils.book_new(),s=t.utils.json_to_sheet(e);s["!cols"]=[{wch:60},{wch:10},{wch:8}],t.utils.book_append_sheet(i,s,"批量出图模板"),t.writeFile(i,"batch-image-template.xlsx"),k.success(r==="zh"?"模板下载成功,填写后可导入使用":"Template downloaded, fill and import to use")}catch(t){console.error("Excel template download error:",t),k.error(r==="zh"?"下载失败,请稍后重试":"Download failed, please try again")}},[r]),Ea=o.useCallback(async t=>{var i;const e=(i=t.target.files)==null?void 0:i[0];if(e){try{const s=await pt(()=>import("./xlsx-CkFp8p6R.js"),[],import.meta.url),l=new FileReader;l.onload=u=>{var c;try{const d=new Uint8Array((c=u.target)==null?void 0:c.result),b=s.read(d,{type:"array"}),g=b.SheetNames[0],n=b.Sheets[g],m=s.utils.sheet_to_json(n);if(m.length===0){k.warning(r==="zh"?"Excel 文件为空":"Excel file is empty");return}const v=m.map((f,y)=>{const O=f.提示词||f.prompt||f.Prompt||"",oe=f.尺寸||f.size||f.Size||L,za=parseInt(String(f.数量||f.count||f.Count||"1"))||1,_t=f.参考图||f.images||f.Images||"",_a=_t?_t.split(`
|
|
2
2
|
`).map(ve=>ve.trim()).filter(ve=>ve.length>0&&!ve.startsWith("[")&&!ve.endsWith("]")):[];return{id:T+y,prompt:String(O).trim(),size:Y.has(oe)?oe:L,images:_a,count:Math.max(1,za),taskIds:[]}});S(f=>[...f,...v]),je(f=>f+v.length),k.success(r==="zh"?`已导入 ${v.length} 行数据`:`Imported ${v.length} rows`)}catch(d){console.error("Excel import error:",d),k.error(r==="zh"?"导入失败,请检查文件格式":"Import failed, please check file format")}},l.readAsArrayBuffer(e)}catch(s){console.error("Excel library load error:",s),k.error(r==="zh"?"加载 Excel 处理库失败":"Failed to load Excel library")}Re.current&&(Re.current.value="")}},[L,T,r,Y]),ie=o.useCallback(t=>{if(t.taskIds.length===0)return{status:"idle",tasks:[],completedCount:0,failedCount:0};const e=Q.filter(c=>t.taskIds.includes(c.id)),i=e.filter(c=>c.status===Z.COMPLETED).length,s=e.filter(c=>c.status===Z.FAILED).length,l=e.filter(c=>c.status===Z.PENDING||c.status===Z.PROCESSING).length;let u="idle";return l>0?u="generating":s>0&&i>0?u="partial":s>0?u="failed":i>0&&(u="completed"),{status:u,tasks:e,completedCount:i,failedCount:s}},[Q]),Da=o.useCallback(async()=>{try{const t=await pt(()=>import("./xlsx-CkFp8p6R.js"),[],import.meta.url),e=32e3,i=n=>{const v=n.map((f,y)=>f.startsWith("data:")?`[本地图片${y+1}]`:f).join(`
|
|
3
3
|
`);return v.length>e?v.substring(0,e-20)+`
|
|
4
4
|
...[已截断]`:v},s=p.map(n=>{const m=ie(n),v=m.tasks.filter(f=>{var y;return f.status===Z.COMPLETED&&((y=f.result)==null?void 0:y.url)}).map(f=>f.result.url);return{提示词:n.prompt,尺寸:n.size,参考图:i(n.images),数量:n.count,预览图:i(v),状态:m.status==="idle"?"未生成":m.status==="generating"?"生成中":m.status==="completed"?"已完成":m.status==="failed"?"失败":m.status==="partial"?"部分完成":""}}),l=t.utils.book_new(),u=t.utils.json_to_sheet(s);u["!cols"]=[{wch:60},{wch:10},{wch:80},{wch:8},{wch:80},{wch:12}],t.utils.book_append_sheet(l,u,"批量出图数据");const c=new Date,d=`${c.getFullYear()}${String(c.getMonth()+1).padStart(2,"0")}${String(c.getDate()).padStart(2,"0")}`,b=`${String(c.getHours()).padStart(2,"0")}${String(c.getMinutes()).padStart(2,"0")}`,g=`batch-image-export_${d}_${b}.xlsx`;t.writeFile(l,g),k.success(r==="zh"?`已导出 ${p.length} 行数据`:`Exported ${p.length} rows`)}catch(t){console.error("Excel export error:",t),k.error(r==="zh"?"导出失败,请稍后重试":"Export failed, please try again")}},[p,ie,r]),Va=o.useCallback(()=>{const t=[];if(p.forEach((e,i)=>{const{status:s}=ie(e);(s==="failed"||s==="partial")&&t.push(i)}),t.length===0){k.info(r==="zh"?"没有失败的行":"No failed rows");return}W(new Set(t)),k.success(r==="zh"?`已选中 ${t.length} 个失败行`:`Selected ${t.length} failed rows`)},[p,ie,r]),Ua=o.useCallback(()=>{const t=new Set;p.forEach((e,i)=>{j.has(i)||t.add(i)}),W(t)},[p,j]),mt=o.useCallback((t,e=0)=>{Dt(oi(t,"image"),e)},[Dt]),Ie=o.useCallback((t,e=!1)=>{W(i=>{const s=new Set(i);if(e&&Me.current!==null){const l=Math.min(Me.current,t),u=Math.max(Me.current,t);for(let c=l;c<=u;c++)s.add(c)}else s.has(t)?s.delete(t):s.add(t);return s}),Me.current=t},[]),Ca=o.useCallback(()=>{j.size===p.length&&p.length>0?W(new Set):W(new Set(p.map((t,e)=>e)))},[p,j.size]),Sa=o.useCallback(async()=>{const t=[...j].sort((i,s)=>i-s);if(t.length===0){k.warning(r==="zh"?"请先勾选要下载的行":"Please check rows to download");return}const e=[];if(t.forEach(i=>{const s=p[i];s&&s.taskIds.forEach((l,u)=>{var d;const c=Q.find(b=>b.id===l);(c==null?void 0:c.status)===Z.COMPLETED&&((d=c.result)!=null&&d.url)&&e.push({url:c.result.url,filename:`row${i+1}_${u+1}_${s.prompt.slice(0,20).replace(/[^\w\u4e00-\u9fa5]/g,"_")}.png`})})}),e.length===0){k.warning(r==="zh"?"选中的行没有已生成的图片":"No generated images in selected rows");return}try{k.info(r==="zh"?"正在准备下载...":"Preparing download...");const i=new Date,s=`${i.getFullYear()}${String(i.getMonth()+1).padStart(2,"0")}${String(i.getDate()).padStart(2,"0")}`,l=`${String(i.getHours()).padStart(2,"0")}${String(i.getMinutes()).padStart(2,"0")}`,u=`aitu_images_${e.length}pics_${s}_${l}.zip`,c=e.map(b=>({url:b.url,type:"image",filename:b.filename})),d=await Fa(c,u);d.openedCount>0&&d.downloadedCount===0?k.success(r==="zh"?d.openedCount>1?`已打开 ${d.openedCount} 个链接,请在新标签页下载`:"资源不支持直接下载,已打开链接":d.openedCount>1?`Opened ${d.openedCount} links for download`:"Opened link for download"):k.success(r==="zh"?"下载成功":"Download complete")}catch(i){console.error("Download failed:",i),k.error(r==="zh"?"下载失败":"Download failed")}},[j,p,Q,r]),gt=o.useCallback(async t=>{if(Je(!0),!Ka("image",G||_)&&(z(null),ne(null),!await Ha())){Je(!1),k.warning(r==="zh"?"需要 API Key 才能生成图片":"API Key is required to generate images");return}const e=Date.now();let i=0,s=0;for(const{task:l,rowIndex:u}of t){const c=l.count||1,d=`batch_${l.id}_${e}`,b=l.size||L,g=b==="auto"?void 0:b,n=l.images.map((v,f)=>({type:"url",url:v,name:`reference_${f+1}`})),m=[];for(let v=0;v<c;v++){i++;const f={prompt:l.prompt.trim(),aspectRatio:b,size:g,model:_||Ot("image").modelId||"gemini-2.5-flash-image-vip",modelRef:G||null,uploadedImages:n,batchId:d,batchIndex:v+1,batchTotal:c,globalIndex:i,autoInsertToCanvas:!0},y=me(f,Ba.IMAGE);y&&(s++,m.push(y.id))}m.length>0&&S(v=>{const f=[...v];return f[u]&&(f[u]={...f[u],taskIds:[...f[u].taskIds,...m]}),f})}Je(!1),s>0&&k.success(r==="zh"?`已提交 ${s} 个任务到队列`:`Submitted ${s} tasks to queue`)},[me,L,r,_,G,S,z,ne]),qa=o.useCallback(async()=>{const t=[...j].sort((c,d)=>c-d);if(t.length===0){k.warning(r==="zh"?"请先勾选要生成的行":"Please check rows to generate");return}const e=t.map(c=>({task:p[c],rowIndex:c})).filter(({task:c})=>c&&c.prompt&&c.prompt.trim()!=="");if(e.length===0){k.warning(r==="zh"?"选中的行没有填写提示词":"Selected rows have no prompts");return}const i=e.filter(({task:c})=>ie(c).status==="generating"),s=e.filter(({task:c})=>(c.count||1)>=100),l=e.reduce((c,{task:d})=>c+(d.count||1),0),u=l>=100;if(i.length>0||s.length>0||u){const c=[];if(i.length>0){const g=i.map(({rowIndex:n})=>n+1).join("、");c.push(r==="zh"?`第 ${g} 行正在生成中`:`Row ${g} is generating`)}if(s.length>0){const g=s.map(({task:n,rowIndex:m})=>r==="zh"?`第 ${m+1} 行数量为 ${n.count}`:`Row ${m+1} count is ${n.count}`).join("、");c.push(g)}u&&c.push(r==="zh"?`总任务数为 ${l}`:`Total task count is ${l}`);const d=c.join(r==="zh"?";":"; "),b=r==="zh"?`${d},是否继续?`:`${d}. Continue?`;se({title:r==="zh"?"生成提醒":"Generation Warning",description:b,confirmText:r==="zh"?"继续生成":"Continue",cancelText:r==="zh"?"取消":"Cancel",confirmTheme:"warning"}).then(g=>{g&>(e)});return}gt(e)},[se,p,j,r,gt,ie]);o.useEffect(()=>{const t=e=>{if(!E||F)return;const{row:i,col:s}=E,l=C.indexOf(s);if(e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&C.includes(s)&&s!=="images"&&s!=="size"){if(e.preventDefault(),s==="count"){const c=parseInt(e.key);isNaN(c)?V(i,s,0):V(i,s,c)}else s==="prompt"&&V(i,s,e.key);z({row:i,col:s}),window.__cellEditSelectAll=!1;return}if((e.ctrlKey||e.metaKey)&&e.key==="z"&&!e.shiftKey){e.preventDefault(),St();return}if((e.ctrlKey||e.metaKey)&&(e.key==="y"||e.key==="z"&&e.shiftKey)){e.preventDefault(),qt();return}if((e.ctrlKey||e.metaKey)&&e.key==="c"){e.preventDefault();const d=[...$].sort((b,g)=>b.row-g.row).map(b=>{var n;const g=(n=p[b.row])==null?void 0:n[b.col];return{row:b.row,col:b.col,value:g}});if(d.length>0){const b=d.map(g=>g.col==="images"?JSON.stringify(g.value):String(g.value??"")).join(`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{Y as se,a8 as ye,d as H,e as Ee,l as S,r as we,k as De,g as he,a0 as ve}from"./index-
|
|
1
|
+
import{Y as se,a8 as ye,d as H,e as Ee,l as S,r as we,k as De,g as he,a0 as ve}from"./index-B4YlucHs.js";import{c as Ne}from"./clone-BtBg_52f.js";import{i as ke,a as Ie,b as Oe,p as Te,c as ge,d as ze}from"./edges-e0da2a9e-DLDhf7N7.js";import{G as Ce}from"./graph-DjrCCbgI.js";import{c as Ae}from"./channel-DmO21CjN.js";import{o as Re}from"./ordinal-Cboi1Yqb.js";import{s as Be}from"./Tableau10-B-NsZVaP.js";import"./index-D5YSioyv.js";import"./memoize-CUfUlF3P.js";import"./isEmpty-qhP_Neh1.js";import"./createText-2e5e7dd3-C1lbpLn5.js";import"./index-C-CsfKtF.js";import"./browser-BanMklii.js";import"./line-Cn0HzQ42.js";import"./array-BKyUJesY.js";import"./path-CbwjOpE9.js";import"./has-CvGtAZQx.js";import"./hasIn-nbpeC_Rj.js";import"./_baseFlatten-BCqnPdEZ.js";import"./init-Gi6I4Gst.js";var oe,le,ee=(function(){var e=function(D,l,s,i){for(s=s||{},i=D.length;i--;s[D[i]]=l);return s},a=[1,7],d=[1,13],c=[1,14],n=[1,15],g=[1,19],o=[1,16],f=[1,17],b=[1,18],p=[8,30],x=[8,21,28,29,30,31,32,40,44,47],y=[1,23],T=[1,24],v=[8,15,16,21,28,29,30,31,32,40,44,47],N=[8,15,16,21,27,28,29,30,31,32,40,44,47],E=[1,49],L={trace:function(){},yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,block:31,NODE_ID:32,nodeShapeNLabel:33,dirList:34,DIR:35,NODE_DSTART:36,NODE_DEND:37,BLOCK_ARROW_START:38,BLOCK_ARROW_END:39,classDef:40,CLASSDEF_ID:41,CLASSDEF_STYLEOPTS:42,DEFAULT:43,class:44,CLASSENTITY_IDS:45,STYLECLASS:46,style:47,STYLE_ENTITY_IDS:48,STYLE_DEFINITION_DATA:49,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"block",32:"NODE_ID",35:"DIR",36:"NODE_DSTART",37:"NODE_DEND",38:"BLOCK_ARROW_START",39:"BLOCK_ARROW_END",40:"classDef",41:"CLASSDEF_ID",42:"CLASSDEF_STYLEOPTS",43:"DEFAULT",44:"class",45:"CLASSENTITY_IDS",46:"STYLECLASS",47:"style",48:"STYLE_ENTITY_IDS",49:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[34,1],[34,2],[33,3],[33,4],[23,3],[23,3],[24,3],[25,3]],performAction:function(l,s,i,u,h,t,m){var r=t.length-1;switch(h){case 4:u.getLogger().debug("Rule: separator (NL) ");break;case 5:u.getLogger().debug("Rule: separator (Space) ");break;case 6:u.getLogger().debug("Rule: separator (EOF) ");break;case 7:u.getLogger().debug("Rule: hierarchy: ",t[r-1]),u.setHierarchy(t[r-1]);break;case 8:u.getLogger().debug("Stop NL ");break;case 9:u.getLogger().debug("Stop EOF ");break;case 10:u.getLogger().debug("Stop NL2 ");break;case 11:u.getLogger().debug("Stop EOF2 ");break;case 12:u.getLogger().debug("Rule: statement: ",t[r]),typeof t[r].length=="number"?this.$=t[r]:this.$=[t[r]];break;case 13:u.getLogger().debug("Rule: statement #2: ",t[r-1]),this.$=[t[r-1]].concat(t[r]);break;case 14:u.getLogger().debug("Rule: link: ",t[r],l),this.$={edgeTypeStr:t[r],label:""};break;case 15:u.getLogger().debug("Rule: LABEL link: ",t[r-3],t[r-1],t[r]),this.$={edgeTypeStr:t[r],label:t[r-1]};break;case 18:const R=parseInt(t[r]),Y=u.generateId();this.$={id:Y,type:"space",label:"",width:R,children:[]};break;case 23:u.getLogger().debug("Rule: (nodeStatement link node) ",t[r-2],t[r-1],t[r]," typestr: ",t[r-1].edgeTypeStr);const F=u.edgeStrToEdgeData(t[r-1].edgeTypeStr);this.$=[{id:t[r-2].id,label:t[r-2].label,type:t[r-2].type,directions:t[r-2].directions},{id:t[r-2].id+"-"+t[r].id,start:t[r-2].id,end:t[r].id,label:t[r-1].label,type:"edge",directions:t[r].directions,arrowTypeEnd:F,arrowTypeStart:"arrow_open"},{id:t[r].id,label:t[r].label,type:u.typeStr2Type(t[r].typeStr),directions:t[r].directions}];break;case 24:u.getLogger().debug("Rule: nodeStatement (abc88 node size) ",t[r-1],t[r]),this.$={id:t[r-1].id,label:t[r-1].label,type:u.typeStr2Type(t[r-1].typeStr),directions:t[r-1].directions,widthInColumns:parseInt(t[r],10)};break;case 25:u.getLogger().debug("Rule: nodeStatement (node) ",t[r]),this.$={id:t[r].id,label:t[r].label,type:u.typeStr2Type(t[r].typeStr),directions:t[r].directions,widthInColumns:1};break;case 26:u.getLogger().debug("APA123",this?this:"na"),u.getLogger().debug("COLUMNS: ",t[r]),this.$={type:"column-setting",columns:t[r]==="auto"?-1:parseInt(t[r])};break;case 27:u.getLogger().debug("Rule: id-block statement : ",t[r-2],t[r-1]),u.generateId(),this.$={...t[r-2],type:"composite",children:t[r-1]};break;case 28:u.getLogger().debug("Rule: blockStatement : ",t[r-2],t[r-1],t[r]);const C=u.generateId();this.$={id:C,type:"composite",label:"",children:t[r-1]};break;case 29:u.getLogger().debug("Rule: node (NODE_ID separator): ",t[r]),this.$={id:t[r]};break;case 30:u.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",t[r-1],t[r]),this.$={id:t[r-1],label:t[r].label,typeStr:t[r].typeStr,directions:t[r].directions};break;case 31:u.getLogger().debug("Rule: dirList: ",t[r]),this.$=[t[r]];break;case 32:u.getLogger().debug("Rule: dirList: ",t[r-1],t[r]),this.$=[t[r-1]].concat(t[r]);break;case 33:u.getLogger().debug("Rule: nodeShapeNLabel: ",t[r-2],t[r-1],t[r]),this.$={typeStr:t[r-2]+t[r],label:t[r-1]};break;case 34:u.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",t[r-3],t[r-2]," #3:",t[r-1],t[r]),this.$={typeStr:t[r-3]+t[r],label:t[r-2],directions:t[r-1]};break;case 35:case 36:this.$={type:"classDef",id:t[r-1].trim(),css:t[r].trim()};break;case 37:this.$={type:"applyClass",id:t[r-1].trim(),styleClass:t[r].trim()};break;case 38:this.$={type:"applyStyles",id:t[r-1].trim(),stylesStr:t[r].trim()};break}},table:[{9:1,10:[1,2]},{1:[3]},{11:3,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:d,29:c,31:n,32:g,40:o,44:f,47:b},{8:[1,20]},e(p,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,21:a,28:d,29:c,31:n,32:g,40:o,44:f,47:b}),e(x,[2,16],{14:22,15:y,16:T}),e(x,[2,17]),e(x,[2,18]),e(x,[2,19]),e(x,[2,20]),e(x,[2,21]),e(x,[2,22]),e(v,[2,25],{27:[1,25]}),e(x,[2,26]),{19:26,26:12,32:g},{11:27,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:d,29:c,31:n,32:g,40:o,44:f,47:b},{41:[1,28],43:[1,29]},{45:[1,30]},{48:[1,31]},e(N,[2,29],{33:32,36:[1,33],38:[1,34]}),{1:[2,7]},e(p,[2,13]),{26:35,32:g},{32:[2,14]},{17:[1,36]},e(v,[2,24]),{11:37,13:4,14:22,15:y,16:T,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:d,29:c,31:n,32:g,40:o,44:f,47:b},{30:[1,38]},{42:[1,39]},{42:[1,40]},{46:[1,41]},{49:[1,42]},e(N,[2,30]),{18:[1,43]},{18:[1,44]},e(v,[2,23]),{18:[1,45]},{30:[1,46]},e(x,[2,28]),e(x,[2,35]),e(x,[2,36]),e(x,[2,37]),e(x,[2,38]),{37:[1,47]},{34:48,35:E},{15:[1,50]},e(x,[2,27]),e(N,[2,33]),{39:[1,51]},{34:52,35:E,39:[2,31]},{32:[2,15]},e(N,[2,34]),{39:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:function(l,s){if(s.recoverable)this.trace(l);else{var i=new Error(l);throw i.hash=s,i}},parse:function(l){var s=this,i=[0],u=[],h=[null],t=[],m=this.table,r="",R=0,Y=0,F=2,C=1,Le=t.slice.call(arguments,1),w=Object.create(this.lexer),K={yy:{}};for(var Z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Z)&&(K.yy[Z]=this.yy[Z]);w.setInput(l,K.yy),K.yy.lexer=w,K.yy.parser=this,typeof w.yylloc>"u"&&(w.yylloc={});var J=w.yylloc;t.push(J);var me=w.options&&w.options.ranges;typeof K.yy.parseError=="function"?this.parseError=K.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function _e(){var P;return P=u.pop()||w.lex()||C,typeof P!="number"&&(P instanceof Array&&(u=P,P=u.pop()),P=s.symbols_[P]||P),P}for(var I,M,z,Q,W={},X,B,ae,G;;){if(M=i[i.length-1],this.defaultActions[M]?z=this.defaultActions[M]:((I===null||typeof I>"u")&&(I=_e()),z=m[M]&&m[M][I]),typeof z>"u"||!z.length||!z[0]){var $="";G=[];for(X in m[M])this.terminals_[X]&&X>F&&G.push("'"+this.terminals_[X]+"'");w.showPosition?$="Parse error on line "+(R+1)+`:
|
|
2
2
|
`+w.showPosition()+`
|
|
3
3
|
Expecting `+G.join(", ")+", got '"+(this.terminals_[I]||I)+"'":$="Parse error on line "+(R+1)+": Unexpected "+(I==C?"end of input":"'"+(this.terminals_[I]||I)+"'"),this.parseError($,{text:w.match,token:this.terminals_[I]||I,line:w.yylineno,loc:J,expected:G})}if(z[0]instanceof Array&&z.length>1)throw new Error("Parse Error: multiple actions possible at state: "+M+", token: "+I);switch(z[0]){case 1:i.push(I),h.push(w.yytext),t.push(w.yylloc),i.push(z[1]),I=null,Y=w.yyleng,r=w.yytext,R=w.yylineno,J=w.yylloc;break;case 2:if(B=this.productions_[z[1]][1],W.$=h[h.length-B],W._$={first_line:t[t.length-(B||1)].first_line,last_line:t[t.length-1].last_line,first_column:t[t.length-(B||1)].first_column,last_column:t[t.length-1].last_column},me&&(W._$.range=[t[t.length-(B||1)].range[0],t[t.length-1].range[1]]),Q=this.performAction.apply(W,[r,Y,R,K.yy,z[1],h,t].concat(Le)),typeof Q<"u")return Q;B&&(i=i.slice(0,-1*B*2),h=h.slice(0,-1*B),t=t.slice(0,-1*B)),i.push(this.productions_[z[1]][0]),h.push(W.$),t.push(W._$),ae=m[i[i.length-2]][i[i.length-1]],i.push(ae);break;case 3:return!0}}return!0}},A=(function(){var D={EOF:1,parseError:function(s,i){if(this.yy.parser)this.yy.parser.parseError(s,i);else throw new Error(s)},setInput:function(l,s){return this.yy=s||this.yy||{},this._input=l,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var l=this._input[0];this.yytext+=l,this.yyleng++,this.offset++,this.match+=l,this.matched+=l;var s=l.match(/(?:\r\n?|\n).*/g);return s?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),l},unput:function(l){var s=l.length,i=l.split(/(?:\r\n?|\n)/g);this._input=l+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-s),this.offset-=s;var u=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var h=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===u.length?this.yylloc.first_column:0)+u[u.length-i.length].length-i[0].length:this.yylloc.first_column-s},this.options.ranges&&(this.yylloc.range=[h[0],h[0]+this.yyleng-s]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
|
4
4
|
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(l){this.unput(this.match.slice(l))},pastInput:function(){var l=this.matched.substr(0,this.matched.length-this.match.length);return(l.length>20?"...":"")+l.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var l=this.match;return l.length<20&&(l+=this._input.substr(0,20-l.length)),(l.substr(0,20)+(l.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var l=this.pastInput(),s=new Array(l.length+1).join("-");return l+this.upcomingInput()+`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{X as se,a7 as ye,d as H,e as Ee,l as S,r as we,k as De,g as he,$ as ve}from"./mermaid.core-
|
|
1
|
+
import{X as se,a7 as ye,d as H,e as Ee,l as S,r as we,k as De,g as he,$ as ve}from"./mermaid.core-C90rcTNj.js";import{c as Ne}from"./clone-B5TrWxil.js";import{i as ke,a as Ie,b as Oe,p as Te,c as ge,d as ze}from"./edges-e0da2a9e-6TFI6ri7.js";import{G as Ce}from"./graph-BrEvzXkm.js";import{c as Ae}from"./channel-B6SjUS7J.js";import{o as Re}from"./ordinal-BRr1uYdk.js";import{s as Be}from"./Tableau10-Dnlau_Wv.js";import"./index-D5YSioyv.js";import"./createText-2e5e7dd3-zEue2anl.js";import"./line-mCdubqmQ.js";import"./array-B5oSNiGi.js";import"./path-CY0bYimO.js";import"./init-A0kIFD9x.js";var le,oe,ee=(function(){var e=function(D,o,s,i){for(s=s||{},i=D.length;i--;s[D[i]]=o);return s},a=[1,7],d=[1,13],c=[1,14],n=[1,15],g=[1,19],l=[1,16],f=[1,17],b=[1,18],p=[8,30],x=[8,21,28,29,30,31,32,40,44,47],y=[1,23],T=[1,24],v=[8,15,16,21,28,29,30,31,32,40,44,47],N=[8,15,16,21,27,28,29,30,31,32,40,44,47],E=[1,49],L={trace:function(){},yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,block:31,NODE_ID:32,nodeShapeNLabel:33,dirList:34,DIR:35,NODE_DSTART:36,NODE_DEND:37,BLOCK_ARROW_START:38,BLOCK_ARROW_END:39,classDef:40,CLASSDEF_ID:41,CLASSDEF_STYLEOPTS:42,DEFAULT:43,class:44,CLASSENTITY_IDS:45,STYLECLASS:46,style:47,STYLE_ENTITY_IDS:48,STYLE_DEFINITION_DATA:49,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"block",32:"NODE_ID",35:"DIR",36:"NODE_DSTART",37:"NODE_DEND",38:"BLOCK_ARROW_START",39:"BLOCK_ARROW_END",40:"classDef",41:"CLASSDEF_ID",42:"CLASSDEF_STYLEOPTS",43:"DEFAULT",44:"class",45:"CLASSENTITY_IDS",46:"STYLECLASS",47:"style",48:"STYLE_ENTITY_IDS",49:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[34,1],[34,2],[33,3],[33,4],[23,3],[23,3],[24,3],[25,3]],performAction:function(o,s,i,u,h,t,m){var r=t.length-1;switch(h){case 4:u.getLogger().debug("Rule: separator (NL) ");break;case 5:u.getLogger().debug("Rule: separator (Space) ");break;case 6:u.getLogger().debug("Rule: separator (EOF) ");break;case 7:u.getLogger().debug("Rule: hierarchy: ",t[r-1]),u.setHierarchy(t[r-1]);break;case 8:u.getLogger().debug("Stop NL ");break;case 9:u.getLogger().debug("Stop EOF ");break;case 10:u.getLogger().debug("Stop NL2 ");break;case 11:u.getLogger().debug("Stop EOF2 ");break;case 12:u.getLogger().debug("Rule: statement: ",t[r]),typeof t[r].length=="number"?this.$=t[r]:this.$=[t[r]];break;case 13:u.getLogger().debug("Rule: statement #2: ",t[r-1]),this.$=[t[r-1]].concat(t[r]);break;case 14:u.getLogger().debug("Rule: link: ",t[r],o),this.$={edgeTypeStr:t[r],label:""};break;case 15:u.getLogger().debug("Rule: LABEL link: ",t[r-3],t[r-1],t[r]),this.$={edgeTypeStr:t[r],label:t[r-1]};break;case 18:const R=parseInt(t[r]),Y=u.generateId();this.$={id:Y,type:"space",label:"",width:R,children:[]};break;case 23:u.getLogger().debug("Rule: (nodeStatement link node) ",t[r-2],t[r-1],t[r]," typestr: ",t[r-1].edgeTypeStr);const F=u.edgeStrToEdgeData(t[r-1].edgeTypeStr);this.$=[{id:t[r-2].id,label:t[r-2].label,type:t[r-2].type,directions:t[r-2].directions},{id:t[r-2].id+"-"+t[r].id,start:t[r-2].id,end:t[r].id,label:t[r-1].label,type:"edge",directions:t[r].directions,arrowTypeEnd:F,arrowTypeStart:"arrow_open"},{id:t[r].id,label:t[r].label,type:u.typeStr2Type(t[r].typeStr),directions:t[r].directions}];break;case 24:u.getLogger().debug("Rule: nodeStatement (abc88 node size) ",t[r-1],t[r]),this.$={id:t[r-1].id,label:t[r-1].label,type:u.typeStr2Type(t[r-1].typeStr),directions:t[r-1].directions,widthInColumns:parseInt(t[r],10)};break;case 25:u.getLogger().debug("Rule: nodeStatement (node) ",t[r]),this.$={id:t[r].id,label:t[r].label,type:u.typeStr2Type(t[r].typeStr),directions:t[r].directions,widthInColumns:1};break;case 26:u.getLogger().debug("APA123",this?this:"na"),u.getLogger().debug("COLUMNS: ",t[r]),this.$={type:"column-setting",columns:t[r]==="auto"?-1:parseInt(t[r])};break;case 27:u.getLogger().debug("Rule: id-block statement : ",t[r-2],t[r-1]),u.generateId(),this.$={...t[r-2],type:"composite",children:t[r-1]};break;case 28:u.getLogger().debug("Rule: blockStatement : ",t[r-2],t[r-1],t[r]);const C=u.generateId();this.$={id:C,type:"composite",label:"",children:t[r-1]};break;case 29:u.getLogger().debug("Rule: node (NODE_ID separator): ",t[r]),this.$={id:t[r]};break;case 30:u.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",t[r-1],t[r]),this.$={id:t[r-1],label:t[r].label,typeStr:t[r].typeStr,directions:t[r].directions};break;case 31:u.getLogger().debug("Rule: dirList: ",t[r]),this.$=[t[r]];break;case 32:u.getLogger().debug("Rule: dirList: ",t[r-1],t[r]),this.$=[t[r-1]].concat(t[r]);break;case 33:u.getLogger().debug("Rule: nodeShapeNLabel: ",t[r-2],t[r-1],t[r]),this.$={typeStr:t[r-2]+t[r],label:t[r-1]};break;case 34:u.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",t[r-3],t[r-2]," #3:",t[r-1],t[r]),this.$={typeStr:t[r-3]+t[r],label:t[r-2],directions:t[r-1]};break;case 35:case 36:this.$={type:"classDef",id:t[r-1].trim(),css:t[r].trim()};break;case 37:this.$={type:"applyClass",id:t[r-1].trim(),styleClass:t[r].trim()};break;case 38:this.$={type:"applyStyles",id:t[r-1].trim(),stylesStr:t[r].trim()};break}},table:[{9:1,10:[1,2]},{1:[3]},{11:3,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:d,29:c,31:n,32:g,40:l,44:f,47:b},{8:[1,20]},e(p,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,21:a,28:d,29:c,31:n,32:g,40:l,44:f,47:b}),e(x,[2,16],{14:22,15:y,16:T}),e(x,[2,17]),e(x,[2,18]),e(x,[2,19]),e(x,[2,20]),e(x,[2,21]),e(x,[2,22]),e(v,[2,25],{27:[1,25]}),e(x,[2,26]),{19:26,26:12,32:g},{11:27,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:d,29:c,31:n,32:g,40:l,44:f,47:b},{41:[1,28],43:[1,29]},{45:[1,30]},{48:[1,31]},e(N,[2,29],{33:32,36:[1,33],38:[1,34]}),{1:[2,7]},e(p,[2,13]),{26:35,32:g},{32:[2,14]},{17:[1,36]},e(v,[2,24]),{11:37,13:4,14:22,15:y,16:T,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:d,29:c,31:n,32:g,40:l,44:f,47:b},{30:[1,38]},{42:[1,39]},{42:[1,40]},{46:[1,41]},{49:[1,42]},e(N,[2,30]),{18:[1,43]},{18:[1,44]},e(v,[2,23]),{18:[1,45]},{30:[1,46]},e(x,[2,28]),e(x,[2,35]),e(x,[2,36]),e(x,[2,37]),e(x,[2,38]),{37:[1,47]},{34:48,35:E},{15:[1,50]},e(x,[2,27]),e(N,[2,33]),{39:[1,51]},{34:52,35:E,39:[2,31]},{32:[2,15]},e(N,[2,34]),{39:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:function(o,s){if(s.recoverable)this.trace(o);else{var i=new Error(o);throw i.hash=s,i}},parse:function(o){var s=this,i=[0],u=[],h=[null],t=[],m=this.table,r="",R=0,Y=0,F=2,C=1,Le=t.slice.call(arguments,1),w=Object.create(this.lexer),K={yy:{}};for(var Z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Z)&&(K.yy[Z]=this.yy[Z]);w.setInput(o,K.yy),K.yy.lexer=w,K.yy.parser=this,typeof w.yylloc>"u"&&(w.yylloc={});var J=w.yylloc;t.push(J);var me=w.options&&w.options.ranges;typeof K.yy.parseError=="function"?this.parseError=K.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function _e(){var P;return P=u.pop()||w.lex()||C,typeof P!="number"&&(P instanceof Array&&(u=P,P=u.pop()),P=s.symbols_[P]||P),P}for(var I,M,z,Q,W={},X,B,ae,G;;){if(M=i[i.length-1],this.defaultActions[M]?z=this.defaultActions[M]:((I===null||typeof I>"u")&&(I=_e()),z=m[M]&&m[M][I]),typeof z>"u"||!z.length||!z[0]){var $="";G=[];for(X in m[M])this.terminals_[X]&&X>F&&G.push("'"+this.terminals_[X]+"'");w.showPosition?$="Parse error on line "+(R+1)+`:
|
|
2
2
|
`+w.showPosition()+`
|
|
3
3
|
Expecting `+G.join(", ")+", got '"+(this.terminals_[I]||I)+"'":$="Parse error on line "+(R+1)+": Unexpected "+(I==C?"end of input":"'"+(this.terminals_[I]||I)+"'"),this.parseError($,{text:w.match,token:this.terminals_[I]||I,line:w.yylineno,loc:J,expected:G})}if(z[0]instanceof Array&&z.length>1)throw new Error("Parse Error: multiple actions possible at state: "+M+", token: "+I);switch(z[0]){case 1:i.push(I),h.push(w.yytext),t.push(w.yylloc),i.push(z[1]),I=null,Y=w.yyleng,r=w.yytext,R=w.yylineno,J=w.yylloc;break;case 2:if(B=this.productions_[z[1]][1],W.$=h[h.length-B],W._$={first_line:t[t.length-(B||1)].first_line,last_line:t[t.length-1].last_line,first_column:t[t.length-(B||1)].first_column,last_column:t[t.length-1].last_column},me&&(W._$.range=[t[t.length-(B||1)].range[0],t[t.length-1].range[1]]),Q=this.performAction.apply(W,[r,Y,R,K.yy,z[1],h,t].concat(Le)),typeof Q<"u")return Q;B&&(i=i.slice(0,-1*B*2),h=h.slice(0,-1*B),t=t.slice(0,-1*B)),i.push(this.productions_[z[1]][0]),h.push(W.$),t.push(W._$),ae=m[i[i.length-2]][i[i.length-1]],i.push(ae);break;case 3:return!0}}return!0}},A=(function(){var D={EOF:1,parseError:function(s,i){if(this.yy.parser)this.yy.parser.parseError(s,i);else throw new Error(s)},setInput:function(o,s){return this.yy=s||this.yy||{},this._input=o,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var o=this._input[0];this.yytext+=o,this.yyleng++,this.offset++,this.match+=o,this.matched+=o;var s=o.match(/(?:\r\n?|\n).*/g);return s?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),o},unput:function(o){var s=o.length,i=o.split(/(?:\r\n?|\n)/g);this._input=o+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-s),this.offset-=s;var u=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var h=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===u.length?this.yylloc.first_column:0)+u[u.length-i.length].length-i[0].length:this.yylloc.first_column-s},this.options.ranges&&(this.yylloc.range=[h[0],h[0]+this.yyleng-s]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
|
4
4
|
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(o){this.unput(this.match.slice(o))},pastInput:function(){var o=this.matched.substr(0,this.matched.length-this.match.length);return(o.length>20?"...":"")+o.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var o=this.match;return o.length<20&&(o+=this._input.substr(0,20-o.length)),(o.substr(0,20)+(o.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var o=this.pastInput(),s=new Array(o.length+1).join("-");return o+this.upcomingInput()+`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{bw as L}from"./index-
|
|
1
|
+
import{bw as L}from"./index-D5YSioyv.js";const k=document.createElement("i");function J(c){const a="&"+c+";";k.innerHTML=a;const u=k.textContent;return u.charCodeAt(u.length-1)===59&&c!=="semi"||u===a?!1:u}var w={exports:{}},A,E;function S(){if(E)return A;E=1;var c=1e3,a=c*60,u=a*60,r=u*24,h=r*7,m=r*365.25;A=function(t,e){e=e||{};var n=typeof t;if(n==="string"&&t.length>0)return d(t);if(n==="number"&&isFinite(t))return e.long?p(t):g(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function d(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var n=parseFloat(e[1]),s=(e[2]||"ms").toLowerCase();switch(s){case"years":case"year":case"yrs":case"yr":case"y":return n*m;case"weeks":case"week":case"w":return n*h;case"days":case"day":case"d":return n*r;case"hours":case"hour":case"hrs":case"hr":case"h":return n*u;case"minutes":case"minute":case"mins":case"min":case"m":return n*a;case"seconds":case"second":case"secs":case"sec":case"s":return n*c;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function g(t){var e=Math.abs(t);return e>=r?Math.round(t/r)+"d":e>=u?Math.round(t/u)+"h":e>=a?Math.round(t/a)+"m":e>=c?Math.round(t/c)+"s":t+"ms"}function p(t){var e=Math.abs(t);return e>=r?o(t,e,r,"day"):e>=u?o(t,e,u,"hour"):e>=a?o(t,e,a,"minute"):e>=c?o(t,e,c,"second"):t+" ms"}function o(t,e,n,s){var i=e>=n*1.5;return Math.round(t/n)+" "+s+(i?"s":"")}return A}var x,M;function B(){if(M)return x;M=1;function c(a){r.debug=r,r.default=r,r.coerce=o,r.disable=g,r.enable=m,r.enabled=p,r.humanize=S(),r.destroy=t,Object.keys(a).forEach(e=>{r[e]=a[e]}),r.names=[],r.skips=[],r.formatters={};function u(e){let n=0;for(let s=0;s<e.length;s++)n=(n<<5)-n+e.charCodeAt(s),n|=0;return r.colors[Math.abs(n)%r.colors.length]}r.selectColor=u;function r(e){let n,s=null,i,F;function l(...f){if(!l.enabled)return;const C=l,y=Number(new Date),D=y-(n||y);C.diff=D,C.prev=n,C.curr=y,n=y,f[0]=r.coerce(f[0]),typeof f[0]!="string"&&f.unshift("%O");let b=0;f[0]=f[0].replace(/%([a-zA-Z%])/g,(v,O)=>{if(v==="%%")return"%";b++;const I=r.formatters[O];if(typeof I=="function"){const q=f[b];v=I.call(C,q),f.splice(b,1),b--}return v}),r.formatArgs.call(C,f),(C.log||r.log).apply(C,f)}return l.namespace=e,l.useColors=r.useColors(),l.color=r.selectColor(e),l.extend=h,l.destroy=r.destroy,Object.defineProperty(l,"enabled",{enumerable:!0,configurable:!1,get:()=>s!==null?s:(i!==r.namespaces&&(i=r.namespaces,F=r.enabled(e)),F),set:f=>{s=f}}),typeof r.init=="function"&&r.init(l),l}function h(e,n){const s=r(this.namespace+(typeof n>"u"?":":n)+e);return s.log=this.log,s}function m(e){r.save(e),r.namespaces=e,r.names=[],r.skips=[];const n=(typeof e=="string"?e:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(const s of n)s[0]==="-"?r.skips.push(s.slice(1)):r.names.push(s)}function d(e,n){let s=0,i=0,F=-1,l=0;for(;s<e.length;)if(i<n.length&&(n[i]===e[s]||n[i]==="*"))n[i]==="*"?(F=i,l=s,i++):(s++,i++);else if(F!==-1)i=F+1,l++,s=l;else return!1;for(;i<n.length&&n[i]==="*";)i++;return i===n.length}function g(){const e=[...r.names,...r.skips.map(n=>"-"+n)].join(",");return r.enable(""),e}function p(e){for(const n of r.skips)if(d(e,n))return!1;for(const n of r.names)if(d(e,n))return!0;return!1}function o(e){return e instanceof Error?e.stack||e.message:e}function t(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}return x=c,x}var j;function N(){return j||(j=1,(function(c,a){var u={};a.formatArgs=h,a.save=m,a.load=d,a.useColors=r,a.storage=g(),a.destroy=(()=>{let o=!1;return()=>{o||(o=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),a.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function r(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let o;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(o=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(o[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function h(o){if(o[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+o[0]+(this.useColors?"%c ":" ")+"+"+c.exports.humanize(this.diff),!this.useColors)return;const t="color: "+this.color;o.splice(1,0,t,"color: inherit");let e=0,n=0;o[0].replace(/%[a-zA-Z%]/g,s=>{s!=="%%"&&(e++,s==="%c"&&(n=e))}),o.splice(n,0,t)}a.log=console.debug||console.log||(()=>{});function m(o){try{o?a.storage.setItem("debug",o):a.storage.removeItem("debug")}catch{}}function d(){let o;try{o=a.storage.getItem("debug")||a.storage.getItem("DEBUG")}catch{}return!o&&typeof process<"u"&&"env"in process&&(o=u.DEBUG),o}function g(){try{return localStorage}catch{}}c.exports=B()(a);const{formatters:p}=c.exports;p.j=function(o){try{return JSON.stringify(o)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}})(w,w.exports)),w.exports}var R=N();const P=L(R);export{P as c,J as d};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{g as Dt,s as we,a as Oe,b as Te,c as Re,d as Nt,l as le,e as De,f as Se,h as wt,i as ue,j as Pe,w as Me,k as Kt,m as oe}from"./mermaid.core-DQGbcicL.js";import{d as Le,g as Ne}from"./svgDrawCommon-08f97a94-g2Xfy9Cn.js";import"./index-CLp1N2JZ.js";var Yt=(function(){var e=function(bt,_,x,m){for(x=x||{},m=bt.length;m--;x[bt[m]]=_);return x},t=[1,24],a=[1,25],o=[1,26],l=[1,27],i=[1,28],s=[1,63],r=[1,64],n=[1,65],h=[1,66],f=[1,67],d=[1,68],p=[1,69],E=[1,29],O=[1,30],R=[1,31],S=[1,32],L=[1,33],Y=[1,34],Q=[1,35],H=[1,36],q=[1,37],G=[1,38],K=[1,39],J=[1,40],Z=[1,41],$=[1,42],tt=[1,43],et=[1,44],it=[1,45],nt=[1,46],st=[1,47],at=[1,48],rt=[1,50],lt=[1,51],ot=[1,52],ct=[1,53],ht=[1,54],ut=[1,55],dt=[1,56],ft=[1,57],pt=[1,58],yt=[1,59],gt=[1,60],At=[14,42],Vt=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],Ot=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],v=[1,82],k=[1,83],A=[1,84],C=[1,85],w=[12,14,42],ne=[12,14,33,42],Pt=[12,14,33,42,76,77,79,80],mt=[12,33],zt=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],Xt={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:function(_,x,m,g,T,u,Tt){var y=u.length-1;switch(T){case 3:g.setDirection("TB");break;case 4:g.setDirection("BT");break;case 5:g.setDirection("RL");break;case 6:g.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:g.setC4Type(u[y-3]);break;case 19:g.setTitle(u[y].substring(6)),this.$=u[y].substring(6);break;case 20:g.setAccDescription(u[y].substring(15)),this.$=u[y].substring(15);break;case 21:this.$=u[y].trim(),g.setTitle(this.$);break;case 22:case 23:this.$=u[y].trim(),g.setAccDescription(this.$);break;case 28:case 29:u[y].splice(2,0,"ENTERPRISE"),g.addPersonOrSystemBoundary(...u[y]),this.$=u[y];break;case 30:g.addPersonOrSystemBoundary(...u[y]),this.$=u[y];break;case 31:u[y].splice(2,0,"CONTAINER"),g.addContainerBoundary(...u[y]),this.$=u[y];break;case 32:g.addDeploymentNode("node",...u[y]),this.$=u[y];break;case 33:g.addDeploymentNode("nodeL",...u[y]),this.$=u[y];break;case 34:g.addDeploymentNode("nodeR",...u[y]),this.$=u[y];break;case 35:g.popBoundaryParseStack();break;case 39:g.addPersonOrSystem("person",...u[y]),this.$=u[y];break;case 40:g.addPersonOrSystem("external_person",...u[y]),this.$=u[y];break;case 41:g.addPersonOrSystem("system",...u[y]),this.$=u[y];break;case 42:g.addPersonOrSystem("system_db",...u[y]),this.$=u[y];break;case 43:g.addPersonOrSystem("system_queue",...u[y]),this.$=u[y];break;case 44:g.addPersonOrSystem("external_system",...u[y]),this.$=u[y];break;case 45:g.addPersonOrSystem("external_system_db",...u[y]),this.$=u[y];break;case 46:g.addPersonOrSystem("external_system_queue",...u[y]),this.$=u[y];break;case 47:g.addContainer("container",...u[y]),this.$=u[y];break;case 48:g.addContainer("container_db",...u[y]),this.$=u[y];break;case 49:g.addContainer("container_queue",...u[y]),this.$=u[y];break;case 50:g.addContainer("external_container",...u[y]),this.$=u[y];break;case 51:g.addContainer("external_container_db",...u[y]),this.$=u[y];break;case 52:g.addContainer("external_container_queue",...u[y]),this.$=u[y];break;case 53:g.addComponent("component",...u[y]),this.$=u[y];break;case 54:g.addComponent("component_db",...u[y]),this.$=u[y];break;case 55:g.addComponent("component_queue",...u[y]),this.$=u[y];break;case 56:g.addComponent("external_component",...u[y]),this.$=u[y];break;case 57:g.addComponent("external_component_db",...u[y]),this.$=u[y];break;case 58:g.addComponent("external_component_queue",...u[y]),this.$=u[y];break;case 60:g.addRel("rel",...u[y]),this.$=u[y];break;case 61:g.addRel("birel",...u[y]),this.$=u[y];break;case 62:g.addRel("rel_u",...u[y]),this.$=u[y];break;case 63:g.addRel("rel_d",...u[y]),this.$=u[y];break;case 64:g.addRel("rel_l",...u[y]),this.$=u[y];break;case 65:g.addRel("rel_r",...u[y]),this.$=u[y];break;case 66:g.addRel("rel_b",...u[y]),this.$=u[y];break;case 67:u[y].splice(0,1),g.addRel("rel",...u[y]),this.$=u[y];break;case 68:g.updateElStyle("update_el_style",...u[y]),this.$=u[y];break;case 69:g.updateRelStyle("update_rel_style",...u[y]),this.$=u[y];break;case 70:g.updateLayoutConfig("update_layout_config",...u[y]),this.$=u[y];break;case 71:this.$=[u[y]];break;case 72:u[y].unshift(u[y-1]),this.$=u[y];break;case 73:case 75:this.$=u[y].trim();break;case 74:let Et={};Et[u[y-1].trim()]=u[y].trim(),this.$=Et;break;case 76:this.$="";break}},table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{13:70,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{13:71,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{13:72,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{13:73,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{14:[1,74]},e(At,[2,13],{43:23,29:49,30:61,32:62,20:75,34:s,36:r,37:n,38:h,39:f,40:d,41:p,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt}),e(At,[2,14]),e(Vt,[2,16],{12:[1,76]}),e(At,[2,36],{12:[1,77]}),e(Ot,[2,19]),e(Ot,[2,20]),{25:[1,78]},{27:[1,79]},e(Ot,[2,23]),{35:80,75:81,76:v,77:k,79:A,80:C},{35:86,75:81,76:v,77:k,79:A,80:C},{35:87,75:81,76:v,77:k,79:A,80:C},{35:88,75:81,76:v,77:k,79:A,80:C},{35:89,75:81,76:v,77:k,79:A,80:C},{35:90,75:81,76:v,77:k,79:A,80:C},{35:91,75:81,76:v,77:k,79:A,80:C},{35:92,75:81,76:v,77:k,79:A,80:C},{35:93,75:81,76:v,77:k,79:A,80:C},{35:94,75:81,76:v,77:k,79:A,80:C},{35:95,75:81,76:v,77:k,79:A,80:C},{35:96,75:81,76:v,77:k,79:A,80:C},{35:97,75:81,76:v,77:k,79:A,80:C},{35:98,75:81,76:v,77:k,79:A,80:C},{35:99,75:81,76:v,77:k,79:A,80:C},{35:100,75:81,76:v,77:k,79:A,80:C},{35:101,75:81,76:v,77:k,79:A,80:C},{35:102,75:81,76:v,77:k,79:A,80:C},{35:103,75:81,76:v,77:k,79:A,80:C},{35:104,75:81,76:v,77:k,79:A,80:C},e(w,[2,59]),{35:105,75:81,76:v,77:k,79:A,80:C},{35:106,75:81,76:v,77:k,79:A,80:C},{35:107,75:81,76:v,77:k,79:A,80:C},{35:108,75:81,76:v,77:k,79:A,80:C},{35:109,75:81,76:v,77:k,79:A,80:C},{35:110,75:81,76:v,77:k,79:A,80:C},{35:111,75:81,76:v,77:k,79:A,80:C},{35:112,75:81,76:v,77:k,79:A,80:C},{35:113,75:81,76:v,77:k,79:A,80:C},{35:114,75:81,76:v,77:k,79:A,80:C},{35:115,75:81,76:v,77:k,79:A,80:C},{20:116,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{12:[1,118],33:[1,117]},{35:119,75:81,76:v,77:k,79:A,80:C},{35:120,75:81,76:v,77:k,79:A,80:C},{35:121,75:81,76:v,77:k,79:A,80:C},{35:122,75:81,76:v,77:k,79:A,80:C},{35:123,75:81,76:v,77:k,79:A,80:C},{35:124,75:81,76:v,77:k,79:A,80:C},{35:125,75:81,76:v,77:k,79:A,80:C},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},e(At,[2,15]),e(Vt,[2,17],{21:22,19:130,22:t,23:a,24:o,26:l,28:i}),e(At,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:t,23:a,24:o,26:l,28:i,34:s,36:r,37:n,38:h,39:f,40:d,41:p,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt}),e(Ot,[2,21]),e(Ot,[2,22]),e(w,[2,39]),e(ne,[2,71],{75:81,35:132,76:v,77:k,79:A,80:C}),e(Pt,[2,73]),{78:[1,133]},e(Pt,[2,75]),e(Pt,[2,76]),e(w,[2,40]),e(w,[2,41]),e(w,[2,42]),e(w,[2,43]),e(w,[2,44]),e(w,[2,45]),e(w,[2,46]),e(w,[2,47]),e(w,[2,48]),e(w,[2,49]),e(w,[2,50]),e(w,[2,51]),e(w,[2,52]),e(w,[2,53]),e(w,[2,54]),e(w,[2,55]),e(w,[2,56]),e(w,[2,57]),e(w,[2,58]),e(w,[2,60]),e(w,[2,61]),e(w,[2,62]),e(w,[2,63]),e(w,[2,64]),e(w,[2,65]),e(w,[2,66]),e(w,[2,67]),e(w,[2,68]),e(w,[2,69]),e(w,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},e(mt,[2,28]),e(mt,[2,29]),e(mt,[2,30]),e(mt,[2,31]),e(mt,[2,32]),e(mt,[2,33]),e(mt,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},e(Vt,[2,18]),e(At,[2,38]),e(ne,[2,72]),e(Pt,[2,74]),e(w,[2,24]),e(w,[2,35]),e(zt,[2,25]),e(zt,[2,26],{12:[1,138]}),e(zt,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:function(_,x){if(x.recoverable)this.trace(_);else{var m=new Error(_);throw m.hash=x,m}},parse:function(_){var x=this,m=[0],g=[],T=[null],u=[],Tt=this.table,y="",Et=0,se=0,ve=2,ae=1,ke=u.slice.call(arguments,1),D=Object.create(this.lexer),vt={yy:{}};for(var Qt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Qt)&&(vt.yy[Qt]=this.yy[Qt]);D.setInput(_,vt.yy),vt.yy.lexer=D,vt.yy.parser=this,typeof D.yylloc>"u"&&(D.yylloc={});var Ht=D.yylloc;u.push(Ht);var Ae=D.options&&D.options.ranges;typeof vt.yy.parseError=="function"?this.parseError=vt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ce(){var X;return X=g.pop()||D.lex()||ae,typeof X!="number"&&(X instanceof Array&&(g=X,X=g.pop()),X=x.symbols_[X]||X),X}for(var M,kt,N,qt,Ct={},Mt,z,re,Lt;;){if(kt=m[m.length-1],this.defaultActions[kt]?N=this.defaultActions[kt]:((M===null||typeof M>"u")&&(M=Ce()),N=Tt[kt]&&Tt[kt][M]),typeof N>"u"||!N.length||!N[0]){var Gt="";Lt=[];for(Mt in Tt[kt])this.terminals_[Mt]&&Mt>ve&&Lt.push("'"+this.terminals_[Mt]+"'");D.showPosition?Gt="Parse error on line "+(Et+1)+`:
|
|
1
|
+
import{g as Dt,s as we,a as Oe,b as Te,c as Re,d as Nt,l as le,e as De,f as Se,h as wt,i as ue,j as Pe,w as Me,k as Kt,m as oe}from"./mermaid.core-C90rcTNj.js";import{d as Le,g as Ne}from"./svgDrawCommon-08f97a94-ByDqcIPi.js";import"./index-D5YSioyv.js";var Yt=(function(){var e=function(bt,_,x,m){for(x=x||{},m=bt.length;m--;x[bt[m]]=_);return x},t=[1,24],a=[1,25],o=[1,26],l=[1,27],i=[1,28],s=[1,63],r=[1,64],n=[1,65],h=[1,66],f=[1,67],d=[1,68],p=[1,69],E=[1,29],O=[1,30],R=[1,31],S=[1,32],L=[1,33],Y=[1,34],Q=[1,35],H=[1,36],q=[1,37],G=[1,38],K=[1,39],J=[1,40],Z=[1,41],$=[1,42],tt=[1,43],et=[1,44],it=[1,45],nt=[1,46],st=[1,47],at=[1,48],rt=[1,50],lt=[1,51],ot=[1,52],ct=[1,53],ht=[1,54],ut=[1,55],dt=[1,56],ft=[1,57],pt=[1,58],yt=[1,59],gt=[1,60],At=[14,42],Vt=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],Ot=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],v=[1,82],k=[1,83],A=[1,84],C=[1,85],w=[12,14,42],ne=[12,14,33,42],Pt=[12,14,33,42,76,77,79,80],mt=[12,33],zt=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],Xt={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:function(_,x,m,g,T,u,Tt){var y=u.length-1;switch(T){case 3:g.setDirection("TB");break;case 4:g.setDirection("BT");break;case 5:g.setDirection("RL");break;case 6:g.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:g.setC4Type(u[y-3]);break;case 19:g.setTitle(u[y].substring(6)),this.$=u[y].substring(6);break;case 20:g.setAccDescription(u[y].substring(15)),this.$=u[y].substring(15);break;case 21:this.$=u[y].trim(),g.setTitle(this.$);break;case 22:case 23:this.$=u[y].trim(),g.setAccDescription(this.$);break;case 28:case 29:u[y].splice(2,0,"ENTERPRISE"),g.addPersonOrSystemBoundary(...u[y]),this.$=u[y];break;case 30:g.addPersonOrSystemBoundary(...u[y]),this.$=u[y];break;case 31:u[y].splice(2,0,"CONTAINER"),g.addContainerBoundary(...u[y]),this.$=u[y];break;case 32:g.addDeploymentNode("node",...u[y]),this.$=u[y];break;case 33:g.addDeploymentNode("nodeL",...u[y]),this.$=u[y];break;case 34:g.addDeploymentNode("nodeR",...u[y]),this.$=u[y];break;case 35:g.popBoundaryParseStack();break;case 39:g.addPersonOrSystem("person",...u[y]),this.$=u[y];break;case 40:g.addPersonOrSystem("external_person",...u[y]),this.$=u[y];break;case 41:g.addPersonOrSystem("system",...u[y]),this.$=u[y];break;case 42:g.addPersonOrSystem("system_db",...u[y]),this.$=u[y];break;case 43:g.addPersonOrSystem("system_queue",...u[y]),this.$=u[y];break;case 44:g.addPersonOrSystem("external_system",...u[y]),this.$=u[y];break;case 45:g.addPersonOrSystem("external_system_db",...u[y]),this.$=u[y];break;case 46:g.addPersonOrSystem("external_system_queue",...u[y]),this.$=u[y];break;case 47:g.addContainer("container",...u[y]),this.$=u[y];break;case 48:g.addContainer("container_db",...u[y]),this.$=u[y];break;case 49:g.addContainer("container_queue",...u[y]),this.$=u[y];break;case 50:g.addContainer("external_container",...u[y]),this.$=u[y];break;case 51:g.addContainer("external_container_db",...u[y]),this.$=u[y];break;case 52:g.addContainer("external_container_queue",...u[y]),this.$=u[y];break;case 53:g.addComponent("component",...u[y]),this.$=u[y];break;case 54:g.addComponent("component_db",...u[y]),this.$=u[y];break;case 55:g.addComponent("component_queue",...u[y]),this.$=u[y];break;case 56:g.addComponent("external_component",...u[y]),this.$=u[y];break;case 57:g.addComponent("external_component_db",...u[y]),this.$=u[y];break;case 58:g.addComponent("external_component_queue",...u[y]),this.$=u[y];break;case 60:g.addRel("rel",...u[y]),this.$=u[y];break;case 61:g.addRel("birel",...u[y]),this.$=u[y];break;case 62:g.addRel("rel_u",...u[y]),this.$=u[y];break;case 63:g.addRel("rel_d",...u[y]),this.$=u[y];break;case 64:g.addRel("rel_l",...u[y]),this.$=u[y];break;case 65:g.addRel("rel_r",...u[y]),this.$=u[y];break;case 66:g.addRel("rel_b",...u[y]),this.$=u[y];break;case 67:u[y].splice(0,1),g.addRel("rel",...u[y]),this.$=u[y];break;case 68:g.updateElStyle("update_el_style",...u[y]),this.$=u[y];break;case 69:g.updateRelStyle("update_rel_style",...u[y]),this.$=u[y];break;case 70:g.updateLayoutConfig("update_layout_config",...u[y]),this.$=u[y];break;case 71:this.$=[u[y]];break;case 72:u[y].unshift(u[y-1]),this.$=u[y];break;case 73:case 75:this.$=u[y].trim();break;case 74:let Et={};Et[u[y-1].trim()]=u[y].trim(),this.$=Et;break;case 76:this.$="";break}},table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{13:70,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{13:71,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{13:72,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{13:73,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{14:[1,74]},e(At,[2,13],{43:23,29:49,30:61,32:62,20:75,34:s,36:r,37:n,38:h,39:f,40:d,41:p,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt}),e(At,[2,14]),e(Vt,[2,16],{12:[1,76]}),e(At,[2,36],{12:[1,77]}),e(Ot,[2,19]),e(Ot,[2,20]),{25:[1,78]},{27:[1,79]},e(Ot,[2,23]),{35:80,75:81,76:v,77:k,79:A,80:C},{35:86,75:81,76:v,77:k,79:A,80:C},{35:87,75:81,76:v,77:k,79:A,80:C},{35:88,75:81,76:v,77:k,79:A,80:C},{35:89,75:81,76:v,77:k,79:A,80:C},{35:90,75:81,76:v,77:k,79:A,80:C},{35:91,75:81,76:v,77:k,79:A,80:C},{35:92,75:81,76:v,77:k,79:A,80:C},{35:93,75:81,76:v,77:k,79:A,80:C},{35:94,75:81,76:v,77:k,79:A,80:C},{35:95,75:81,76:v,77:k,79:A,80:C},{35:96,75:81,76:v,77:k,79:A,80:C},{35:97,75:81,76:v,77:k,79:A,80:C},{35:98,75:81,76:v,77:k,79:A,80:C},{35:99,75:81,76:v,77:k,79:A,80:C},{35:100,75:81,76:v,77:k,79:A,80:C},{35:101,75:81,76:v,77:k,79:A,80:C},{35:102,75:81,76:v,77:k,79:A,80:C},{35:103,75:81,76:v,77:k,79:A,80:C},{35:104,75:81,76:v,77:k,79:A,80:C},e(w,[2,59]),{35:105,75:81,76:v,77:k,79:A,80:C},{35:106,75:81,76:v,77:k,79:A,80:C},{35:107,75:81,76:v,77:k,79:A,80:C},{35:108,75:81,76:v,77:k,79:A,80:C},{35:109,75:81,76:v,77:k,79:A,80:C},{35:110,75:81,76:v,77:k,79:A,80:C},{35:111,75:81,76:v,77:k,79:A,80:C},{35:112,75:81,76:v,77:k,79:A,80:C},{35:113,75:81,76:v,77:k,79:A,80:C},{35:114,75:81,76:v,77:k,79:A,80:C},{35:115,75:81,76:v,77:k,79:A,80:C},{20:116,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{12:[1,118],33:[1,117]},{35:119,75:81,76:v,77:k,79:A,80:C},{35:120,75:81,76:v,77:k,79:A,80:C},{35:121,75:81,76:v,77:k,79:A,80:C},{35:122,75:81,76:v,77:k,79:A,80:C},{35:123,75:81,76:v,77:k,79:A,80:C},{35:124,75:81,76:v,77:k,79:A,80:C},{35:125,75:81,76:v,77:k,79:A,80:C},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},e(At,[2,15]),e(Vt,[2,17],{21:22,19:130,22:t,23:a,24:o,26:l,28:i}),e(At,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:t,23:a,24:o,26:l,28:i,34:s,36:r,37:n,38:h,39:f,40:d,41:p,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt}),e(Ot,[2,21]),e(Ot,[2,22]),e(w,[2,39]),e(ne,[2,71],{75:81,35:132,76:v,77:k,79:A,80:C}),e(Pt,[2,73]),{78:[1,133]},e(Pt,[2,75]),e(Pt,[2,76]),e(w,[2,40]),e(w,[2,41]),e(w,[2,42]),e(w,[2,43]),e(w,[2,44]),e(w,[2,45]),e(w,[2,46]),e(w,[2,47]),e(w,[2,48]),e(w,[2,49]),e(w,[2,50]),e(w,[2,51]),e(w,[2,52]),e(w,[2,53]),e(w,[2,54]),e(w,[2,55]),e(w,[2,56]),e(w,[2,57]),e(w,[2,58]),e(w,[2,60]),e(w,[2,61]),e(w,[2,62]),e(w,[2,63]),e(w,[2,64]),e(w,[2,65]),e(w,[2,66]),e(w,[2,67]),e(w,[2,68]),e(w,[2,69]),e(w,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},e(mt,[2,28]),e(mt,[2,29]),e(mt,[2,30]),e(mt,[2,31]),e(mt,[2,32]),e(mt,[2,33]),e(mt,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},e(Vt,[2,18]),e(At,[2,38]),e(ne,[2,72]),e(Pt,[2,74]),e(w,[2,24]),e(w,[2,35]),e(zt,[2,25]),e(zt,[2,26],{12:[1,138]}),e(zt,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:function(_,x){if(x.recoverable)this.trace(_);else{var m=new Error(_);throw m.hash=x,m}},parse:function(_){var x=this,m=[0],g=[],T=[null],u=[],Tt=this.table,y="",Et=0,se=0,ve=2,ae=1,ke=u.slice.call(arguments,1),D=Object.create(this.lexer),vt={yy:{}};for(var Qt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Qt)&&(vt.yy[Qt]=this.yy[Qt]);D.setInput(_,vt.yy),vt.yy.lexer=D,vt.yy.parser=this,typeof D.yylloc>"u"&&(D.yylloc={});var Ht=D.yylloc;u.push(Ht);var Ae=D.options&&D.options.ranges;typeof vt.yy.parseError=="function"?this.parseError=vt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ce(){var X;return X=g.pop()||D.lex()||ae,typeof X!="number"&&(X instanceof Array&&(g=X,X=g.pop()),X=x.symbols_[X]||X),X}for(var M,kt,N,qt,Ct={},Mt,z,re,Lt;;){if(kt=m[m.length-1],this.defaultActions[kt]?N=this.defaultActions[kt]:((M===null||typeof M>"u")&&(M=Ce()),N=Tt[kt]&&Tt[kt][M]),typeof N>"u"||!N.length||!N[0]){var Gt="";Lt=[];for(Mt in Tt[kt])this.terminals_[Mt]&&Mt>ve&&Lt.push("'"+this.terminals_[Mt]+"'");D.showPosition?Gt="Parse error on line "+(Et+1)+`:
|
|
2
2
|
`+D.showPosition()+`
|
|
3
3
|
Expecting `+Lt.join(", ")+", got '"+(this.terminals_[M]||M)+"'":Gt="Parse error on line "+(Et+1)+": Unexpected "+(M==ae?"end of input":"'"+(this.terminals_[M]||M)+"'"),this.parseError(Gt,{text:D.match,token:this.terminals_[M]||M,line:D.yylineno,loc:Ht,expected:Lt})}if(N[0]instanceof Array&&N.length>1)throw new Error("Parse Error: multiple actions possible at state: "+kt+", token: "+M);switch(N[0]){case 1:m.push(M),T.push(D.yytext),u.push(D.yylloc),m.push(N[1]),M=null,se=D.yyleng,y=D.yytext,Et=D.yylineno,Ht=D.yylloc;break;case 2:if(z=this.productions_[N[1]][1],Ct.$=T[T.length-z],Ct._$={first_line:u[u.length-(z||1)].first_line,last_line:u[u.length-1].last_line,first_column:u[u.length-(z||1)].first_column,last_column:u[u.length-1].last_column},Ae&&(Ct._$.range=[u[u.length-(z||1)].range[0],u[u.length-1].range[1]]),qt=this.performAction.apply(Ct,[y,se,Et,vt.yy,N[1],T,u].concat(ke)),typeof qt<"u")return qt;z&&(m=m.slice(0,-1*z*2),T=T.slice(0,-1*z),u=u.slice(0,-1*z)),m.push(this.productions_[N[1]][0]),T.push(Ct.$),u.push(Ct._$),re=Tt[m[m.length-2]][m[m.length-1]],m.push(re);break;case 3:return!0}}return!0}},Ee=(function(){var bt={EOF:1,parseError:function(x,m){if(this.yy.parser)this.yy.parser.parseError(x,m);else throw new Error(x)},setInput:function(_,x){return this.yy=x||this.yy||{},this._input=_,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var _=this._input[0];this.yytext+=_,this.yyleng++,this.offset++,this.match+=_,this.matched+=_;var x=_.match(/(?:\r\n?|\n).*/g);return x?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),_},unput:function(_){var x=_.length,m=_.split(/(?:\r\n?|\n)/g);this._input=_+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-x),this.offset-=x;var g=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),m.length-1&&(this.yylineno-=m.length-1);var T=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:m?(m.length===g.length?this.yylloc.first_column:0)+g[g.length-m.length].length-m[0].length:this.yylloc.first_column-x},this.options.ranges&&(this.yylloc.range=[T[0],T[0]+this.yyleng-x]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
|
4
4
|
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(_){this.unput(this.match.slice(_))},pastInput:function(){var _=this.matched.substr(0,this.matched.length-this.match.length);return(_.length>20?"...":"")+_.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var _=this.match;return _.length<20&&(_+=this._input.substr(0,20-_.length)),(_.substr(0,20)+(_.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var _=this.pastInput(),x=new Array(_.length+1).join("-");return _+this.upcomingInput()+`
|