aitu-app 0.5.48 → 0.5.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/README.md +3 -3
  2. package/assets/{ChatMessagesArea-JoqYi_ld.js → ChatMessagesArea-B1bvPNpp.js} +3 -3
  3. package/assets/DialogTaskList-BSSAOh5P.js +1 -0
  4. package/assets/{DialogTaskList-CKYvHKiR.css → DialogTaskList-CB3gJdCM.css} +1 -1
  5. package/assets/{ToolboxDrawer-BOUbQFDR.js → ToolboxDrawer-D0eNy0jh.js} +1 -1
  6. package/assets/{ai-analyze-kieSuHap.js → ai-analyze-BfguOEXf.js} +1 -1
  7. package/assets/ai-image-generation-8fHKU7WT.js +1 -0
  8. package/assets/ai-image-generation-C0zeQsiB.css +1 -0
  9. package/assets/ai-video-generation-CUxwbJSx.js +5 -0
  10. package/assets/ai-video-generation-D3hRXNLI.css +1 -0
  11. package/assets/{arc-CK8n3maf.js → arc-CMg9c-1-.js} +1 -1
  12. package/assets/{arc-BaS7Wfdw.js → arc-Ch5MOiK9.js} +1 -1
  13. package/assets/{batch-image-generation-CXI7JS0B.js → batch-image-generation-Do-DwI3V.js} +1 -1
  14. package/assets/{blockDiagram-38ab4fdb-t4yZT92L.js → blockDiagram-38ab4fdb-BSLYbN30.js} +1 -1
  15. package/assets/{blockDiagram-38ab4fdb-2I9X-Mrl.js → blockDiagram-38ab4fdb-Ggjt8TxA.js} +1 -1
  16. package/assets/{c4Diagram-3d4e48cf-33GS-ewd.js → c4Diagram-3d4e48cf-C0C3iAjE.js} +1 -1
  17. package/assets/{c4Diagram-3d4e48cf-BC8WFOQe.js → c4Diagram-3d4e48cf-DkqBfxSN.js} +1 -1
  18. package/assets/channel-Ck9KEf2t.js +1 -0
  19. package/assets/channel-D5T_ahKm.js +1 -0
  20. package/assets/{classDiagram-70f12bd4-C8akklOH.js → classDiagram-70f12bd4-B4UmUpMK.js} +1 -1
  21. package/assets/{classDiagram-70f12bd4-CqBjoz8w.js → classDiagram-70f12bd4-Be9fBTCV.js} +1 -1
  22. package/assets/{classDiagram-v2-f2320105-B2ATMAZk.js → classDiagram-v2-f2320105-C2mLjgdh.js} +1 -1
  23. package/assets/{classDiagram-v2-f2320105-BupfQjOQ.js → classDiagram-v2-f2320105-VmfLSAro.js} +1 -1
  24. package/assets/clone-B_t1LC0g.js +1 -0
  25. package/assets/clone-pVjeeFE0.js +1 -0
  26. package/assets/{createText-2e5e7dd3-BYZnckX_.js → createText-2e5e7dd3--nnrtJNV.js} +1 -1
  27. package/assets/{createText-2e5e7dd3-CNyW-xvt.js → createText-2e5e7dd3-Br8kBZH8.js} +1 -1
  28. package/assets/{edges-e0da2a9e-BosqVjkA.js → edges-e0da2a9e-CHqsQcjz.js} +1 -1
  29. package/assets/{edges-e0da2a9e-UXCUvB-1.js → edges-e0da2a9e-Cjrn7Aq-.js} +1 -1
  30. package/assets/{erDiagram-9861fffd--Z0GlgEn.js → erDiagram-9861fffd-B_6GFzTQ.js} +1 -1
  31. package/assets/{erDiagram-9861fffd-wOY7N0rY.js → erDiagram-9861fffd-ufYXjhwZ.js} +1 -1
  32. package/assets/{flowDb-956e92f1-C3fx0kTY.js → flowDb-956e92f1-BKwUQ-hl.js} +1 -1
  33. package/assets/{flowDb-956e92f1-BVIXa6sC.js → flowDb-956e92f1-CAj-C03Q.js} +1 -1
  34. package/assets/{flowDiagram-66a62f08-BfFxG84W.js → flowDiagram-66a62f08-C8FXmVce.js} +1 -1
  35. package/assets/{flowDiagram-66a62f08-CDDobrgc.js → flowDiagram-66a62f08-Dq5fbX1Y.js} +1 -1
  36. package/assets/flowDiagram-v2-96b9c2cf-8w1P8dgG.js +1 -0
  37. package/assets/flowDiagram-v2-96b9c2cf-CRt8Tw6t.js +1 -0
  38. package/assets/{flowchart-elk-definition-4a651766-DTa5Ugc1.js → flowchart-elk-definition-4a651766-BjL7RQ7O.js} +1 -1
  39. package/assets/{flowchart-elk-definition-4a651766-BmmcFiPZ.js → flowchart-elk-definition-4a651766-CD9vIlxr.js} +1 -1
  40. package/assets/{ganttDiagram-c361ad54-DPlnAJJx.js → ganttDiagram-c361ad54-D7_HVbbq.js} +1 -1
  41. package/assets/{ganttDiagram-c361ad54-Bbn-nHAs.js → ganttDiagram-c361ad54-n9ELUpiB.js} +1 -1
  42. package/assets/{gitGraphDiagram-72cf32ee-Dl7ComzH.js → gitGraphDiagram-72cf32ee-B47OoAyc.js} +1 -1
  43. package/assets/{gitGraphDiagram-72cf32ee-DeIZExbc.js → gitGraphDiagram-72cf32ee-xb7q7cuL.js} +1 -1
  44. package/assets/{graph-DHiGmXV6.js → graph-BeeTwCH3.js} +1 -1
  45. package/assets/{graph-Dfptg6Al.js → graph-Dz4khTZm.js} +1 -1
  46. package/assets/{grid-image-CARGYvh_.js → grid-image-ggMTti9w.js} +1 -1
  47. package/assets/{has-9uhq4yT9.js → has-BsV_fqUH.js} +1 -1
  48. package/assets/{hasIn-CvQXXf4b.js → hasIn-__wdhirj.js} +1 -1
  49. package/assets/{index-3862675e-DUJvwjP7.js → index-3862675e-CYiGbhd6.js} +1 -1
  50. package/assets/{index-3862675e-DCshUjlh.js → index-3862675e-CkTdLODf.js} +1 -1
  51. package/assets/{index-DM-AXm0q.js → index-4geuWAgE.js} +1 -1
  52. package/assets/index-920UvYLQ.css +9 -0
  53. package/assets/{index-Dj4_g4Si.js → index-9ACcVAdm.js} +4 -4
  54. package/assets/{index-sBjGDMrw.js → index-B-LmeOUH.js} +1 -1
  55. package/assets/{index-DIw6QU0k.js → index-BNEDl4J2.js} +1 -1
  56. package/assets/{index-B-jeRaNV.js → index-BVpCfTKg.js} +1 -1
  57. package/assets/{index-DVI-EeTo.js → index-C6OIGmaF.js} +1 -1
  58. package/assets/{index-Y-mRUgjd.js → index-CvrZFlag.js} +314 -314
  59. package/assets/{index-CpsKZ1yJ.js → index-DxPda7bw.js} +1 -1
  60. package/assets/{index-CeRB07JB.js → index-FYEvKL6-.js} +2 -2
  61. package/assets/{index-DB2ccmBs.js → index-WI9w4wcL.js} +1 -1
  62. package/assets/{infoDiagram-f8f76790-BoZxRLZa.js → infoDiagram-f8f76790-BAaXqHpe.js} +1 -1
  63. package/assets/{infoDiagram-f8f76790-BjAnq3Fb.js → infoDiagram-f8f76790-C8gMSdke.js} +1 -1
  64. package/assets/{inspiration-board-DXC6MTKm.js → inspiration-board-DLQ3bgA5.js} +1 -1
  65. package/assets/{isEmpty-CRzPUjzr.js → isEmpty-CRXO1bLi.js} +1 -1
  66. package/assets/{journeyDiagram-49397b02-CsYOzIaw.js → journeyDiagram-49397b02-Bth8e3TS.js} +1 -1
  67. package/assets/{journeyDiagram-49397b02-vhPJlWtN.js → journeyDiagram-49397b02-C7g-8Hvn.js} +1 -1
  68. package/assets/{layout-DsD2W5B-.js → layout-B0Pa2rBm.js} +1 -1
  69. package/assets/{layout-XsNQWLV0.js → layout-KY-X4wEQ.js} +1 -1
  70. package/assets/{line-GD0UFJy2.js → line-BDjluZsg.js} +1 -1
  71. package/assets/{line-DrBei8wT.js → line-Nete9nw6.js} +1 -1
  72. package/assets/{linear-DARUpMG_.js → linear-BlRKrrAt.js} +1 -1
  73. package/assets/{linear-C3LLInY2.js → linear-Bu02SEaK.js} +1 -1
  74. package/assets/{mermaid.core-mIRDwmS-.js → mermaid.core-yVPD7ieH.js} +4 -4
  75. package/assets/{mindmap-definition-fc14e90a-DzsbYOPH.js → mindmap-definition-fc14e90a-CbPO3n6C.js} +1 -1
  76. package/assets/{mindmap-definition-fc14e90a-RTmso76i.js → mindmap-definition-fc14e90a-U1pw-9Ng.js} +1 -1
  77. package/assets/{photo-wall-splitter-BCzhetlI.js → photo-wall-splitter-gAV3J-3j.js} +1 -1
  78. package/assets/{pick-Cnk3HYZr.js → pick-CIdLSF0Z.js} +1 -1
  79. package/assets/{pieDiagram-8a3498a8-BAWZdKJV.js → pieDiagram-8a3498a8-CFDa6wYQ.js} +1 -1
  80. package/assets/{pieDiagram-8a3498a8-BtX8nRt7.js → pieDiagram-8a3498a8-D0ywaKa6.js} +1 -1
  81. package/assets/{quadrantDiagram-120e2f19-9KVrLKzH.js → quadrantDiagram-120e2f19-B0aJtXqY.js} +1 -1
  82. package/assets/{quadrantDiagram-120e2f19-DuY-5Itm.js → quadrantDiagram-120e2f19-JUTgchBu.js} +1 -1
  83. package/assets/{requirementDiagram-deff3bca-C8rxl4Fw.js → requirementDiagram-deff3bca-B9FhatVo.js} +1 -1
  84. package/assets/{requirementDiagram-deff3bca-x1t2_QSh.js → requirementDiagram-deff3bca-D8Rme9Ge.js} +1 -1
  85. package/assets/{sankeyDiagram-04a897e0-BkVc7A98.js → sankeyDiagram-04a897e0-B-gbcDvI.js} +1 -1
  86. package/assets/{sankeyDiagram-04a897e0-DOdzmEl3.js → sankeyDiagram-04a897e0-DfbHNdsW.js} +1 -1
  87. package/assets/{sequenceDiagram-704730f1-BcyOOfKB.js → sequenceDiagram-704730f1-B6l3EwQG.js} +1 -1
  88. package/assets/{sequenceDiagram-704730f1-CYZBUVl_.js → sequenceDiagram-704730f1-BKBzlyjL.js} +1 -1
  89. package/assets/settings-dialog-Blkz7e5P.js +1 -0
  90. package/assets/{stateDiagram-587899a1-AYFDuJIM.js → stateDiagram-587899a1-CWO6S--h.js} +1 -1
  91. package/assets/{stateDiagram-587899a1-CAV_A2k6.js → stateDiagram-587899a1-D9ZTBTJW.js} +1 -1
  92. package/assets/{stateDiagram-v2-d93cdb3a-BS-kfhoL.js → stateDiagram-v2-d93cdb3a-DpPNUJIJ.js} +1 -1
  93. package/assets/{stateDiagram-v2-d93cdb3a-2j9li-ny.js → stateDiagram-v2-d93cdb3a-RDHyBBsc.js} +1 -1
  94. package/assets/{styles-6aaf32cf-CJe3mUWs.js → styles-6aaf32cf-raskOVgm.js} +1 -1
  95. package/assets/{styles-6aaf32cf-Dt2RGJ8A.js → styles-6aaf32cf-rn-U3G-T.js} +1 -1
  96. package/assets/{styles-9a916d00-IS97_M50.js → styles-9a916d00-8SvYD_6R.js} +1 -1
  97. package/assets/{styles-9a916d00-cAlItWAP.js → styles-9a916d00-het7_VjA.js} +1 -1
  98. package/assets/{styles-c10674c1-C-hWHZcb.js → styles-c10674c1-C1pqdP96.js} +1 -1
  99. package/assets/{styles-c10674c1-DVJIr7Cb.js → styles-c10674c1-CUvKZMsb.js} +1 -1
  100. package/assets/{svgDrawCommon-08f97a94-C0x85f0W.js → svgDrawCommon-08f97a94-CzdMcmjT.js} +1 -1
  101. package/assets/{svgDrawCommon-08f97a94-CaM6o6f6.js → svgDrawCommon-08f97a94-DfziZaZJ.js} +1 -1
  102. package/assets/{timeline-definition-85554ec2-BYDl8yjo.js → timeline-definition-85554ec2-D8z5E6iu.js} +1 -1
  103. package/assets/{timeline-definition-85554ec2-hev3Czd5.js → timeline-definition-85554ec2-DSFZUclI.js} +1 -1
  104. package/assets/{ttd-dialog-Dz9MP-od.js → ttd-dialog-DMiivQmt.js} +4 -4
  105. package/assets/{upload-Dw77S_Me.js → upload-Dh3D6Z7E.js} +1 -1
  106. package/assets/{video-recovery-service-DrA0J5gR.js → video-recovery-service-DYhEBO96.js} +1 -1
  107. package/assets/{xychartDiagram-e933f94c-Dd-QLan6.js → xychartDiagram-e933f94c-O_OlRzES.js} +1 -1
  108. package/assets/{xychartDiagram-e933f94c-PAtdBcGf.js → xychartDiagram-e933f94c-pg-_fREb.js} +1 -1
  109. package/cdn-config.js +0 -7
  110. package/package.json +1 -1
  111. package/precache-manifest.json +305 -233
  112. package/sw.js +7 -7
  113. package/user-manual/gifs//346/200/235/347/273/264/345/257/274/345/233/276/345/210/233/345/273/272/346/274/224/347/244/272.gif +0 -0
  114. package/user-manual/screenshots/ai-step-0.png +0 -0
  115. package/user-manual/screenshots/ai-step-1.png +0 -0
  116. package/user-manual/screenshots/ai-step-2.png +0 -0
  117. package/user-manual/screenshots/ai-step-3.png +0 -0
  118. package/user-manual/screenshots/app-menu.png +0 -0
  119. package/user-manual/screenshots/backup-restore.png +0 -0
  120. package/user-manual/screenshots/canvas-tools.png +0 -0
  121. package/user-manual/screenshots/debug-panel.png +0 -0
  122. package/user-manual/screenshots/drawing-step-0.png +0 -0
  123. package/user-manual/screenshots/drawing-step-1.png +0 -0
  124. package/user-manual/screenshots/drawing-step-2.png +0 -0
  125. package/user-manual/screenshots/edit-selected.png +0 -0
  126. package/user-manual/screenshots/element-selected.png +0 -0
  127. package/user-manual/screenshots/flowchart-step-1.png +0 -0
  128. package/user-manual/screenshots/flowchart-step-2.png +0 -0
  129. package/user-manual/screenshots/flowchart-step-3.png +0 -0
  130. package/user-manual/screenshots/image-preview-empty.png +0 -0
  131. package/user-manual/screenshots/insert-from-library.png +0 -0
  132. package/user-manual/screenshots/insert-tools.png +0 -0
  133. package/user-manual/screenshots/inspiration-step-1.png +0 -0
  134. package/user-manual/screenshots/inspiration-step-2.png +0 -0
  135. package/user-manual/screenshots/media-library.png +0 -0
  136. package/user-manual/screenshots/mindmap-step-1.png +0 -0
  137. package/user-manual/screenshots/mindmap-step-2.png +0 -0
  138. package/user-manual/screenshots/mindmap-toolbar-menu.png +0 -0
  139. package/user-manual/screenshots/project-drawer.png +0 -0
  140. package/user-manual/screenshots/settings-dialog.png +0 -0
  141. package/user-manual/screenshots/shape-step-1.png +0 -0
  142. package/user-manual/screenshots/shape-step-2.png +0 -0
  143. package/user-manual/screenshots/text-step-1.png +0 -0
  144. package/user-manual/screenshots/text-step-2.png +0 -0
  145. package/user-manual/screenshots/toolbox-drawer.png +0 -0
  146. package/user-manual/screenshots/toolbox-entry.png +0 -0
  147. package/user-manual/screenshots/video-entry.png +0 -0
  148. package/user-manual/screenshots/view-navigation.png +0 -0
  149. package/user-manual/screenshots/zoom-menu.png +0 -0
  150. package/version.json +8 -3
  151. package/assets/DialogTaskList-Bny0jVKZ.js +0 -1
  152. package/assets/ai-image-generation-BFVVUcys.js +0 -1
  153. package/assets/ai-image-generation-DGSgu0yT.css +0 -1
  154. package/assets/ai-video-generation-BeUDCJbm.js +0 -5
  155. package/assets/ai-video-generation-DcOYvVJu.css +0 -1
  156. package/assets/channel-CDoSfPuP.js +0 -1
  157. package/assets/channel-EocIoBTY.js +0 -1
  158. package/assets/clone-B1Q1_5Pt.js +0 -1
  159. package/assets/clone-BSgWY5XH.js +0 -1
  160. package/assets/flowDiagram-v2-96b9c2cf-CHM0pX9Y.js +0 -1
  161. package/assets/flowDiagram-v2-96b9c2cf-DKLcZ2Te.js +0 -1
  162. package/assets/index-DGDQ0Qn2.css +0 -9
  163. package/assets/settings-dialog-Dq2kMBKN.js +0 -1
@@ -1 +1 @@
1
- import{P as L,Q as V,R as $,S as ne,U as re,W as K,X as P,u as B,Y as H,Z as Y,n as U,$ as Q,a0 as q,a1 as X,a2 as ee,a3 as R,a4 as O,a5 as oe,r as I,a6 as C,a7 as ce,F as l,H as le,J as de,a8 as Z}from"./index-Y-mRUgjd.js";import{P as te}from"./index-sBjGDMrw.js";import{U as pe}from"./upload-Dw77S_Me.js";const me=2,se="aitu-backup";function ae(E){return E.map(n=>n.id?n:{...n,id:`imported-${Date.now()}-${Math.random().toString(36).slice(2,9)}`})}function z(E){return{"image/jpeg":".jpg","image/jpg":".jpg","image/png":".png","image/gif":".gif","image/webp":".webp","image/svg+xml":".svg","video/mp4":".mp4","video/webm":".webm","video/quicktime":".mov"}[E]||""}function ie(E){return E.replace(/[<>:"/\\|?*]/g,"_").replace(/\s+/g," ").trim()||"unnamed"}class ue{async exportToZip(n,e){const t=new L;e==null||e(5,"正在准备数据...");const s=V.getCurrentBoard(),o={currentBoardId:(s==null?void 0:s.id)||null,currentBoardName:s==null?void 0:s.name,viewport:s==null?void 0:s.viewport},m={signature:se,version:me,createdAt:Date.now(),includes:{prompts:n.includePrompts,projects:n.includeProjects,assets:n.includeAssets},stats:{promptCount:0,videoPromptCount:0,imagePromptCount:0,folderCount:0,boardCount:0,assetCount:0,taskCount:0},workspaceState:o};if(n.includePrompts){e==null||e(10,"正在导出提示词...");const p=await this.collectPromptData();t.file("prompts.json",JSON.stringify(p,null,2)),m.stats.promptCount=p.promptHistory.length,m.stats.videoPromptCount=p.videoPromptHistory.length,m.stats.imagePromptCount=p.imagePromptHistory.length}n.includeProjects&&(e==null||e(25,"正在导出项目..."),await this.exportProjects(t,m,e)),n.includeAssets&&(e==null||e(50,"正在导出素材..."),await this.exportAssets(t,m,e)),e==null||e(80,"正在写入清单..."),t.file("manifest.json",JSON.stringify(m,null,2)),e==null||e(85,"正在压缩文件...");const u=await t.generateAsync({type:"blob",compression:"DEFLATE",compressionOptions:{level:6}},p=>{const i=85+Math.round(p.percent*.14);e==null||e(i,"正在压缩...")});return e==null||e(100,"导出完成"),u}async exportProjects(n,e,t){const s=n.folder("projects");if(!s)return;const[o,m]=await Promise.all([$.loadAllFolders(),$.loadAllBoards()]),u=this.buildFolderPathMap(o);for(const p of o){const i=u.get(p.id)||p.name;s.folder(i)}e.stats.folderCount=o.length;for(let p=0;p<m.length;p++){const i=m[p],b=i.folderId?u.get(i.folderId):null,j=ie(i.name),c=b?`${b}/${j}.drawnix`:`${j}.drawnix`,x={type:ne.drawnix,version:re.drawnix,source:"backup",elements:i.elements||[],viewport:i.viewport||{zoom:1},theme:i.theme,boardMeta:{id:i.id,name:i.name,folderId:i.folderId,order:i.order,createdAt:i.createdAt,updatedAt:i.updatedAt}};if(s.file(c,JSON.stringify(x,null,2)),t&&m.length>0){const f=25+Math.round((p+1)/m.length*20);t(f,`正在导出画板 (${p+1}/${m.length})...`)}}e.stats.boardCount=m.length}buildFolderPathMap(n){const e=new Map,t=new Map;for(const o of n)t.set(o.id,o);const s=o=>{if(e.has(o))return e.get(o);const m=t.get(o);if(!m)return"";const u=ie(m.name);if(m.parentId){const p=s(m.parentId),i=p?`${p}/${u}`:u;return e.set(o,i),i}return e.set(o,u),u};for(const o of n)s(o.id);return e}async exportAssets(n,e,t){var a;const s=n.folder("assets");if(!s)return;const o=new Set;let m=0;const u=K.createInstance({name:P.STORAGE_NAME,storeName:P.STORE_NAME}),p=await u.keys(),i=p.length;for(let r=0;r<p.length;r++){try{const d=await u.getItem(p[r]);if(d){s.file(`${d.id}.meta.json`,JSON.stringify(d,null,2));const h=await B.getCachedBlob(d.url);if(h){const g=z(d.mimeType);s.file(`${d.id}${g}`,h),o.add(d.url),m++}}}catch(d){console.warn(`[BackupRestore] Failed to load asset ${p[r]}:`,d)}if(t&&i>0){const d=50+Math.round((r+1)/i*15);t(d,`正在导出本地素材 (${r+1}/${i})...`)}}const j=(await B.getAllCacheMetadata()).filter(r=>!o.has(r.url)),c=j.length;for(let r=0;r<j.length;r++){const d=j[r];try{const h=((a=d.metadata)==null?void 0:a.taskId)||this.generateIdFromUrl(d.url),g={id:h,url:d.url,type:d.type==="video"?"VIDEO":"IMAGE",mimeType:d.mimeType,size:d.size,source:"AI_GENERATED",createdAt:d.cachedAt,updatedAt:d.lastUsed,metadata:d.metadata};s.file(`${h}.meta.json`,JSON.stringify(g,null,2));const v=await B.getCachedBlob(d.url);if(v){const _=z(d.mimeType);s.file(`${h}${_}`,v),o.add(d.url),m++}}catch(h){console.warn(`[BackupRestore] Failed to export cached media ${d.url}:`,h)}if(t&&c>0){const h=65+Math.round((r+1)/c*10);t(h,`正在导出缓存媒体 (${r+1}/${c})...`)}}e.stats.assetCount=m,t==null||t(75,"正在导出任务数据...");const f=H.getAllTasks().filter(r=>{var d;return r.status===Y.COMPLETED&&(r.type===U.IMAGE||r.type===U.VIDEO)&&((d=r.result)==null?void 0:d.url)});f.length>0&&(n.file("tasks.json",JSON.stringify(f,null,2)),e.stats.taskCount=f.length)}generateIdFromUrl(n){let e=0;for(let t=0;t<n.length;t++){const s=n.charCodeAt(t);e=(e<<5)-e+s,e=e&e}return`cache-${Math.abs(e).toString(36)}`}async importFromZip(n,e){const t={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},errors:[]};try{e==null||e(5,"正在读取文件...");const s=await L.loadAsync(n);e==null||e(10,"正在验证文件格式...");const o=s.file("manifest.json");if(!o)throw new Error("无效的备份文件:未找到 manifest.json");const m=await o.async("string"),u=JSON.parse(m);if(u.signature!==se)throw new Error("无效的备份文件:签名不匹配");if(u.includes.prompts){e==null||e(20,"正在导入提示词...");const p=s.file("prompts.json");if(p){const i=await p.async("string"),b=JSON.parse(i);t.prompts=await this.importPromptData(b)}}u.includes.projects&&(e==null||e(40,"正在导入项目..."),t.projects=await this.importProjects(s,e)),u.includes.assets&&(e==null||e(60,"正在导入素材..."),t.assets=await this.importAssets(s,e),e==null||e(85,"正在导入任务数据..."),t.tasks=await this.importTasks(s)),(t.projects.folders>0||t.projects.boards>0)&&await V.reload(),u.workspaceState&&(t.workspaceState=u.workspaceState),t.success=t.errors.length===0,e==null||e(100,"导入完成")}catch(s){const o=s instanceof Error?s.message:String(s);t.errors.push(o)}return t}downloadZip(n,e){const t=new Date,s=t.toISOString().split("T")[0],o=t.toTimeString().split(" ")[0].replace(/:/g,""),m=`aitu_backup_${s}_${o}.zip`,u=URL.createObjectURL(n),p=document.createElement("a");p.href=u,p.download=e||m,document.body.appendChild(p),p.click(),document.body.removeChild(p),URL.revokeObjectURL(u)}async collectPromptData(){await Q();const n=q();let e=X(),t=ee();const s=H.getTasksByStatus(Y.COMPLETED),o=s.filter(c=>{var x;return c.type===U.IMAGE&&((x=c.params)==null?void 0:x.prompt)}).map(c=>({id:`task_${c.id}`,content:c.params.prompt.trim(),timestamp:c.completedAt||c.createdAt})).filter(c=>c.content.length>0),m=s.filter(c=>{var x;return c.type===U.VIDEO&&((x=c.params)==null?void 0:x.prompt)}).map(c=>({id:`task_${c.id}`,content:c.params.prompt.trim(),timestamp:c.completedAt||c.createdAt})).filter(c=>c.content.length>0),u=new Set(t.map(c=>c.content)),p=o.filter(c=>!u.has(c.content));t=[...t,...p];const i=new Set(e.map(c=>c.content)),b=m.filter(c=>!i.has(c.content));e=[...e,...b];const j=await R.get(O.PRESET_SETTINGS);return{promptHistory:n,videoPromptHistory:e,imagePromptHistory:t,presetSettings:j||{image:{pinnedPrompts:[],deletedPrompts:[]},video:{pinnedPrompts:[],deletedPrompts:[]}}}}async importPromptData(n){let e=0,t=0;const s=n.promptHistory||[],o=n.videoPromptHistory||[],m=n.imagePromptHistory||[];await Q();const u=q(),p=X(),i=ee(),b=new Set(u.map(k=>k.id)),j=new Set(u.map(k=>k.content)),c=s.filter(k=>b.has(k.id)||j.has(k.content)?(t++,!1):(e++,!0)),x=new Set(p.map(k=>k.id)),f=new Set(p.map(k=>k.content)),a=o.filter(k=>x.has(k.id)||f.has(k.content)?(t++,!1):(e++,!0)),r=new Set(i.map(k=>k.id)),d=new Set(i.map(k=>k.content)),h=m.filter(k=>r.has(k.id)||d.has(k.content)?(t++,!1):(e++,!0)),g=[...u,...c],v=[...p,...a],_=[...i,...h];await R.set(O.PROMPT_HISTORY,g),await R.set(O.VIDEO_PROMPT_HISTORY,v),await R.set(O.IMAGE_PROMPT_HISTORY,_);const S=await R.get(O.PRESET_SETTINGS);if(S&&n.presetSettings){const k={image:{pinnedPrompts:[...new Set([...S.image.pinnedPrompts,...n.presetSettings.image.pinnedPrompts])],deletedPrompts:[...new Set([...S.image.deletedPrompts,...n.presetSettings.image.deletedPrompts])]},video:{pinnedPrompts:[...new Set([...S.video.pinnedPrompts,...n.presetSettings.video.pinnedPrompts])],deletedPrompts:[...new Set([...S.video.deletedPrompts,...n.presetSettings.video.deletedPrompts])]}};await R.set(O.PRESET_SETTINGS,k)}else n.presetSettings&&await R.set(O.PRESET_SETTINGS,n.presetSettings);return await oe(),{imported:e,skipped:t}}async importProjects(n,e){let t=0,s=0,o=0,m=0;const u=await $.loadAllFolders(),p=await $.loadAllBoards(),i=new Set(p.map(f=>f.id)),b=Object.keys(n.files).filter(f=>f.startsWith("projects/")&&f.endsWith(".drawnix")&&!f.includes("/_"));if(b.length===0)return{folders:0,boards:0,merged:0,skipped:0};const j=new Set,c=new Map;for(const f of b){const r=f.replace(/^projects\//,"").split("/");if(r.length>1){let d="";for(let h=0;h<r.length-1;h++)d=d?`${d}/${r[h]}`:r[h],j.add(d)}}const x=Array.from(j).sort((f,a)=>{const r=f.split("/").length,d=a.split("/").length;return r-d||f.localeCompare(a)});for(let f=0;f<x.length;f++){const a=x[f],r=a.split("/"),d=r[r.length-1],h=r.length>1?r.slice(0,-1).join("/"):null,g=h&&c.get(h)||null,v=this.generateId();c.set(a,v);const _=u.find(k=>k.name===d&&k.parentId===g);if(_){c.set(a,_.id),m++;continue}const S={id:v,name:d,parentId:g,order:f,isExpanded:!0,createdAt:Date.now(),updatedAt:Date.now()};await $.saveFolder(S),t++}for(let f=0;f<b.length;f++){const a=b[f];try{const r=n.file(a);if(r){const d=await r.async("string"),h=JSON.parse(d),g=h.boardMeta,_=a.replace(/^projects\//,"").split("/"),S=_.length>1?_.slice(0,-1).join("/"):null,k=S&&(c.get(S)||(g==null?void 0:g.folderId))||null,G=_[_.length-1]||"unnamed.drawnix",D=(g==null?void 0:g.name)||G.replace(".drawnix","");if(g!=null&&g.id&&i.has(g.id)){const w=p.find(y=>y.id===g.id);if(w){const y=new Set((w.elements||[]).map(A=>A.id).filter(A=>!!A)),F=(h.elements||[]).filter(A=>A.id?!y.has(A.id):!0),N=[...w.elements||[],...ae(F)],J={...w,elements:N,viewport:h.viewport||w.viewport,theme:h.theme||w.theme,updatedAt:Date.now()};await $.saveBoard(J),o++;continue}}const M={id:(g==null?void 0:g.id)||this.generateId(),name:D,folderId:k,order:(g==null?void 0:g.order)??f,elements:ae(h.elements||[]),viewport:h.viewport,theme:h.theme,createdAt:(g==null?void 0:g.createdAt)||Date.now(),updatedAt:(g==null?void 0:g.updatedAt)||Date.now()};await $.saveBoard(M),s++}}catch(r){console.warn(`[BackupRestore] Failed to import board ${a}:`,r)}if(e&&b.length>0){const r=40+Math.round((f+1)/b.length*15);e(r,`正在导入画板 (${f+1}/${b.length})...`)}}return{folders:t,boards:s,merged:o,skipped:m}}async importAssets(n,e){var b,j,c;let t=0,s=0;const o=Object.keys(n.files).filter(x=>x.startsWith("assets/")&&x.endsWith(".meta.json"));if(o.length===0)return{imported:0,skipped:0};const m=K.createInstance({name:P.STORAGE_NAME,storeName:P.STORE_NAME}),u=await m.keys(),p=new Set(u),i=new Set(await B.getAllCachedUrls());for(let x=0;x<o.length;x++){const f=o[x],a=f.replace("assets/","").replace(".meta.json","");try{const r=n.file(f);if(!r){s++;continue}const d=await r.async("string"),h=JSON.parse(d),g=h.source==="AI_GENERATED";if(g){if(i.has(h.url)){s++;continue}}else if(p.has(a)){s++;continue}const v=[".jpg",".png",".gif",".webp",".mp4",".webm",".mov",".svg"];let _=null;for(const S of v){const k=n.file(`assets/${a}${S}`);if(k){_=await k.async("blob");break}}if(!_&&h.mimeType){const S=z(h.mimeType);if(S){const k=n.file(`assets/${a}${S}`);k&&(_=await k.async("blob"))}}if(_){const S=h.type==="VIDEO"?"video":"image";await B.cacheMediaFromBlob(h.url,_,S,{taskId:((b=h.metadata)==null?void 0:b.taskId)||a,prompt:(j=h.metadata)==null?void 0:j.prompt,model:(c=h.metadata)==null?void 0:c.model}),g||await m.setItem(a,h),t++}else console.warn(`[BackupRestore] No media file found for asset ${a}, skipping`),s++}catch(r){console.warn(`[BackupRestore] Failed to import asset ${a}:`,r),s++}if(e&&o.length>0){const r=60+Math.round((x+1)/o.length*35);e(r,`正在导入素材 (${x+1}/${o.length})...`)}}return{imported:t,skipped:s}}async importTasks(n){let e=0,t=0;const s=n.file("tasks.json");if(!s)return{imported:0,skipped:0};try{const o=await s.async("string"),m=JSON.parse(o);if(!Array.isArray(m)||m.length===0)return{imported:0,skipped:0};const u=H.getAllTasks(),p=new Set(u.map(b=>b.id)),i=m.filter(b=>p.has(b.id)?(t++,!1):!0);i.length>0&&(await H.restoreTasks(i),e=i.length)}catch(o){console.warn("[BackupRestore] Failed to import tasks:",o)}return{imported:e,skipped:t}}generateId(){return`${Date.now().toString(36)}-${Math.random().toString(36).substring(2,11)}`}}const W=new ue,ke=({open:E,onOpenChange:n,container:e,onSwitchBoard:t,onBeforeImport:s})=>{var M;const[o,m]=I.useState("backup"),[u,p]=I.useState({includePrompts:!0,includeProjects:!0,includeAssets:!0}),[i,b]=I.useState(!1),[j,c]=I.useState(0),[x,f]=I.useState(""),[a,r]=I.useState(null),[d,h]=I.useState(null),g=I.useRef(null),v=I.useCallback(async w=>{if(!w.currentBoardId||!t)return;const y=V.getBoard(w.currentBoardId);if(!y)return;const T=V.getCurrentBoard();if(!T||!T.elements||T.elements.length===0)await t(w.currentBoardId,w.viewport),C.success(`已切换到画板「${y.name}」`);else{const N=ce.confirm({header:"恢复画布状态",body:`备份时正在编辑画板「${w.currentBoardName||y.name}」,是否切换到该画板?`,confirmBtn:"切换",cancelBtn:"取消",onConfirm:async()=>{await t(w.currentBoardId,w.viewport),C.success(`已切换到画板「${y.name}」`),N.destroy()},onCancel:()=>{N.destroy()}})}},[t]),_=I.useCallback(async()=>{if(!i){if(d&&(await v(d),h(null)),a&&a.tasks&&a.tasks.imported>0){window.location.reload();return}n(!1),c(0),f(""),r(null)}},[i,n,a,d,v]),S=I.useCallback(async()=>{if(!u.includePrompts&&!u.includeProjects&&!u.includeAssets){C.warning("请至少选择一项要备份的内容");return}b(!0),c(0),f("正在准备...");try{const w=await W.exportToZip(u,(y,T)=>{c(y),f(T)});W.downloadZip(w),C.success("备份成功!"),_()}catch(w){console.error("[BackupRestore] Export failed:",w),C.error("备份失败,请重试")}finally{b(!1)}},[u,_]),k=I.useCallback(()=>{var w;(w=g.current)==null||w.click()},[]),G=I.useCallback(async w=>{var T,F;const y=(T=w.target.files)==null?void 0:T[0];if(y){if(!y.name.endsWith(".zip")){C.warning("请选择 ZIP 格式的备份文件");return}b(!0),c(0),f("正在保存当前画板..."),r(null);try{s&&await s(),f("正在读取文件...");const N=await W.importFromZip(y,(J,A)=>{c(J),f(A)});r(N),(F=N.workspaceState)!=null&&F.currentBoardId&&h(N.workspaceState),N.success?C.success("导入成功!"):N.errors.length>0&&C.warning("导入完成,但有部分错误")}catch(N){console.error("[BackupRestore] Import failed:",N),C.error("导入失败,请检查文件格式")}finally{b(!1),g.current&&(g.current.value="")}}},[s]),D=I.useCallback((w,y)=>{p(T=>({...T,[w]:y}))},[]);return l.jsx(le,{open:E,onOpenChange:_,children:l.jsxs(de,{className:"backup-restore-dialog",container:e,children:[l.jsx("h2",{className:"backup-restore-dialog__title",children:"备份 / 恢复"}),l.jsxs("div",{className:"backup-restore-dialog__tabs",children:[l.jsx("button",{className:`backup-restore-dialog__tab ${o==="backup"?"backup-restore-dialog__tab--active":""}`,onClick:()=>m("backup"),disabled:i,children:"备份"}),l.jsx("button",{className:`backup-restore-dialog__tab ${o==="restore"?"backup-restore-dialog__tab--active":""}`,onClick:()=>m("restore"),disabled:i,children:"恢复"})]}),o==="backup"&&l.jsxs("div",{className:"backup-restore-dialog__panel",children:[l.jsx("p",{className:"backup-restore-dialog__description",children:"选择要备份的内容,将导出为 ZIP 压缩包:"}),l.jsxs("div",{className:"backup-restore-dialog__options",children:[l.jsx(Z,{checked:u.includePrompts,onChange:w=>D("includePrompts",w),disabled:i,children:l.jsxs("div",{className:"backup-restore-dialog__option-content",children:[l.jsx("span",{className:"backup-restore-dialog__option-title",children:"提示词"}),l.jsx("span",{className:"backup-restore-dialog__option-desc",children:"包含图片和视频生成的历史提示词"})]})}),l.jsx(Z,{checked:u.includeProjects,onChange:w=>D("includeProjects",w),disabled:i,children:l.jsxs("div",{className:"backup-restore-dialog__option-content",children:[l.jsx("span",{className:"backup-restore-dialog__option-title",children:"项目"}),l.jsx("span",{className:"backup-restore-dialog__option-desc",children:"包含所有文件夹和画板"})]})}),l.jsx(Z,{checked:u.includeAssets,onChange:w=>D("includeAssets",w),disabled:i,children:l.jsxs("div",{className:"backup-restore-dialog__option-content",children:[l.jsx("span",{className:"backup-restore-dialog__option-title",children:"素材库"}),l.jsx("span",{className:"backup-restore-dialog__option-desc",children:"包含所有本地上传的图片和视频"})]})})]}),i&&l.jsxs("div",{className:"backup-restore-dialog__progress",children:[l.jsx(te,{percentage:j,theme:"line"}),l.jsx("span",{className:"backup-restore-dialog__progress-text",children:x})]}),l.jsxs("div",{className:"backup-restore-dialog__actions",children:[l.jsx("button",{className:"backup-restore-dialog__button backup-restore-dialog__button--cancel",onClick:_,disabled:i,children:"取消"}),l.jsx("button",{className:"backup-restore-dialog__button backup-restore-dialog__button--primary",onClick:S,disabled:i,children:i?"正在备份...":"开始备份"})]})]}),o==="restore"&&l.jsxs("div",{className:"backup-restore-dialog__panel",children:[l.jsx("p",{className:"backup-restore-dialog__description",children:"选择备份文件进行恢复,数据将增量导入(不会覆盖现有内容):"}),l.jsxs("div",{className:"backup-restore-dialog__dropzone",onClick:k,children:[l.jsx(pe,{className:"backup-restore-dialog__dropzone-icon"}),l.jsx("span",{className:"backup-restore-dialog__dropzone-text",children:"点击选择备份文件 (.zip)"}),l.jsx("input",{ref:g,type:"file",accept:".zip",onChange:G,style:{display:"none"}})]}),i&&l.jsxs("div",{className:"backup-restore-dialog__progress",children:[l.jsx(te,{percentage:j,theme:"line"}),l.jsx("span",{className:"backup-restore-dialog__progress-text",children:x})]}),a&&l.jsxs("div",{className:"backup-restore-dialog__result",children:[l.jsx("h4",{className:"backup-restore-dialog__result-title",children:a.success?"导入完成":"导入完成(有错误)"}),l.jsxs("ul",{className:"backup-restore-dialog__result-list",children:[(a.prompts.imported>0||a.prompts.skipped>0)&&l.jsxs("li",{children:["提示词:导入 ",a.prompts.imported," 条,跳过 ",a.prompts.skipped," 条"]}),(a.projects.folders>0||a.projects.boards>0||a.projects.merged>0)&&l.jsxs("li",{children:["项目:导入 ",a.projects.folders," 个文件夹,",a.projects.boards," 个画板",a.projects.merged>0&&`,合并 ${a.projects.merged} 个画板`]}),(a.assets.imported>0||a.assets.skipped>0)&&l.jsxs("li",{children:["素材:导入 ",a.assets.imported," 个,跳过 ",a.assets.skipped," 个"]}),a.tasks&&(a.tasks.imported>0||a.tasks.skipped>0)&&l.jsxs("li",{children:["任务:导入 ",a.tasks.imported," 个,跳过 ",a.tasks.skipped," 个"]})]}),a.errors.length>0&&l.jsxs("div",{className:"backup-restore-dialog__result-errors",children:[l.jsx("strong",{children:"错误信息:"}),l.jsx("ul",{children:a.errors.map((w,y)=>l.jsx("li",{children:w},y))})]})]}),l.jsx("div",{className:"backup-restore-dialog__actions",children:l.jsx("button",{className:"backup-restore-dialog__button backup-restore-dialog__button--cancel",onClick:_,disabled:i,children:a?((M=a.tasks)==null?void 0:M.imported)>0?"完成并刷新":"完成":"取消"})})]})]})})};export{ke as BackupRestoreDialog};
1
+ import{P as L,Q as V,R as $,S as ne,U as re,W as K,X as P,u as B,Y as H,Z as Y,n as U,$ as Q,a0 as q,a1 as X,a2 as ee,a3 as R,a4 as O,a5 as oe,r as I,a6 as C,a7 as ce,F as l,H as le,J as de,a8 as Z}from"./index-CvrZFlag.js";import{P as te}from"./index-B-LmeOUH.js";import{U as pe}from"./upload-Dh3D6Z7E.js";const me=2,se="aitu-backup";function ae(E){return E.map(n=>n.id?n:{...n,id:`imported-${Date.now()}-${Math.random().toString(36).slice(2,9)}`})}function z(E){return{"image/jpeg":".jpg","image/jpg":".jpg","image/png":".png","image/gif":".gif","image/webp":".webp","image/svg+xml":".svg","video/mp4":".mp4","video/webm":".webm","video/quicktime":".mov"}[E]||""}function ie(E){return E.replace(/[<>:"/\\|?*]/g,"_").replace(/\s+/g," ").trim()||"unnamed"}class ue{async exportToZip(n,e){const t=new L;e==null||e(5,"正在准备数据...");const s=V.getCurrentBoard(),o={currentBoardId:(s==null?void 0:s.id)||null,currentBoardName:s==null?void 0:s.name,viewport:s==null?void 0:s.viewport},m={signature:se,version:me,createdAt:Date.now(),includes:{prompts:n.includePrompts,projects:n.includeProjects,assets:n.includeAssets},stats:{promptCount:0,videoPromptCount:0,imagePromptCount:0,folderCount:0,boardCount:0,assetCount:0,taskCount:0},workspaceState:o};if(n.includePrompts){e==null||e(10,"正在导出提示词...");const p=await this.collectPromptData();t.file("prompts.json",JSON.stringify(p,null,2)),m.stats.promptCount=p.promptHistory.length,m.stats.videoPromptCount=p.videoPromptHistory.length,m.stats.imagePromptCount=p.imagePromptHistory.length}n.includeProjects&&(e==null||e(25,"正在导出项目..."),await this.exportProjects(t,m,e)),n.includeAssets&&(e==null||e(50,"正在导出素材..."),await this.exportAssets(t,m,e)),e==null||e(80,"正在写入清单..."),t.file("manifest.json",JSON.stringify(m,null,2)),e==null||e(85,"正在压缩文件...");const u=await t.generateAsync({type:"blob",compression:"DEFLATE",compressionOptions:{level:6}},p=>{const i=85+Math.round(p.percent*.14);e==null||e(i,"正在压缩...")});return e==null||e(100,"导出完成"),u}async exportProjects(n,e,t){const s=n.folder("projects");if(!s)return;const[o,m]=await Promise.all([$.loadAllFolders(),$.loadAllBoards()]),u=this.buildFolderPathMap(o);for(const p of o){const i=u.get(p.id)||p.name;s.folder(i)}e.stats.folderCount=o.length;for(let p=0;p<m.length;p++){const i=m[p],b=i.folderId?u.get(i.folderId):null,j=ie(i.name),c=b?`${b}/${j}.drawnix`:`${j}.drawnix`,x={type:ne.drawnix,version:re.drawnix,source:"backup",elements:i.elements||[],viewport:i.viewport||{zoom:1},theme:i.theme,boardMeta:{id:i.id,name:i.name,folderId:i.folderId,order:i.order,createdAt:i.createdAt,updatedAt:i.updatedAt}};if(s.file(c,JSON.stringify(x,null,2)),t&&m.length>0){const f=25+Math.round((p+1)/m.length*20);t(f,`正在导出画板 (${p+1}/${m.length})...`)}}e.stats.boardCount=m.length}buildFolderPathMap(n){const e=new Map,t=new Map;for(const o of n)t.set(o.id,o);const s=o=>{if(e.has(o))return e.get(o);const m=t.get(o);if(!m)return"";const u=ie(m.name);if(m.parentId){const p=s(m.parentId),i=p?`${p}/${u}`:u;return e.set(o,i),i}return e.set(o,u),u};for(const o of n)s(o.id);return e}async exportAssets(n,e,t){var a;const s=n.folder("assets");if(!s)return;const o=new Set;let m=0;const u=K.createInstance({name:P.STORAGE_NAME,storeName:P.STORE_NAME}),p=await u.keys(),i=p.length;for(let r=0;r<p.length;r++){try{const d=await u.getItem(p[r]);if(d){s.file(`${d.id}.meta.json`,JSON.stringify(d,null,2));const h=await B.getCachedBlob(d.url);if(h){const g=z(d.mimeType);s.file(`${d.id}${g}`,h),o.add(d.url),m++}}}catch(d){console.warn(`[BackupRestore] Failed to load asset ${p[r]}:`,d)}if(t&&i>0){const d=50+Math.round((r+1)/i*15);t(d,`正在导出本地素材 (${r+1}/${i})...`)}}const j=(await B.getAllCacheMetadata()).filter(r=>!o.has(r.url)),c=j.length;for(let r=0;r<j.length;r++){const d=j[r];try{const h=((a=d.metadata)==null?void 0:a.taskId)||this.generateIdFromUrl(d.url),g={id:h,url:d.url,type:d.type==="video"?"VIDEO":"IMAGE",mimeType:d.mimeType,size:d.size,source:"AI_GENERATED",createdAt:d.cachedAt,updatedAt:d.lastUsed,metadata:d.metadata};s.file(`${h}.meta.json`,JSON.stringify(g,null,2));const v=await B.getCachedBlob(d.url);if(v){const _=z(d.mimeType);s.file(`${h}${_}`,v),o.add(d.url),m++}}catch(h){console.warn(`[BackupRestore] Failed to export cached media ${d.url}:`,h)}if(t&&c>0){const h=65+Math.round((r+1)/c*10);t(h,`正在导出缓存媒体 (${r+1}/${c})...`)}}e.stats.assetCount=m,t==null||t(75,"正在导出任务数据...");const f=H.getAllTasks().filter(r=>{var d;return r.status===Y.COMPLETED&&(r.type===U.IMAGE||r.type===U.VIDEO)&&((d=r.result)==null?void 0:d.url)});f.length>0&&(n.file("tasks.json",JSON.stringify(f,null,2)),e.stats.taskCount=f.length)}generateIdFromUrl(n){let e=0;for(let t=0;t<n.length;t++){const s=n.charCodeAt(t);e=(e<<5)-e+s,e=e&e}return`cache-${Math.abs(e).toString(36)}`}async importFromZip(n,e){const t={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},errors:[]};try{e==null||e(5,"正在读取文件...");const s=await L.loadAsync(n);e==null||e(10,"正在验证文件格式...");const o=s.file("manifest.json");if(!o)throw new Error("无效的备份文件:未找到 manifest.json");const m=await o.async("string"),u=JSON.parse(m);if(u.signature!==se)throw new Error("无效的备份文件:签名不匹配");if(u.includes.prompts){e==null||e(20,"正在导入提示词...");const p=s.file("prompts.json");if(p){const i=await p.async("string"),b=JSON.parse(i);t.prompts=await this.importPromptData(b)}}u.includes.projects&&(e==null||e(40,"正在导入项目..."),t.projects=await this.importProjects(s,e)),u.includes.assets&&(e==null||e(60,"正在导入素材..."),t.assets=await this.importAssets(s,e),e==null||e(85,"正在导入任务数据..."),t.tasks=await this.importTasks(s)),(t.projects.folders>0||t.projects.boards>0)&&await V.reload(),u.workspaceState&&(t.workspaceState=u.workspaceState),t.success=t.errors.length===0,e==null||e(100,"导入完成")}catch(s){const o=s instanceof Error?s.message:String(s);t.errors.push(o)}return t}downloadZip(n,e){const t=new Date,s=t.toISOString().split("T")[0],o=t.toTimeString().split(" ")[0].replace(/:/g,""),m=`aitu_backup_${s}_${o}.zip`,u=URL.createObjectURL(n),p=document.createElement("a");p.href=u,p.download=e||m,document.body.appendChild(p),p.click(),document.body.removeChild(p),URL.revokeObjectURL(u)}async collectPromptData(){await Q();const n=q();let e=X(),t=ee();const s=H.getTasksByStatus(Y.COMPLETED),o=s.filter(c=>{var x;return c.type===U.IMAGE&&((x=c.params)==null?void 0:x.prompt)}).map(c=>({id:`task_${c.id}`,content:c.params.prompt.trim(),timestamp:c.completedAt||c.createdAt})).filter(c=>c.content.length>0),m=s.filter(c=>{var x;return c.type===U.VIDEO&&((x=c.params)==null?void 0:x.prompt)}).map(c=>({id:`task_${c.id}`,content:c.params.prompt.trim(),timestamp:c.completedAt||c.createdAt})).filter(c=>c.content.length>0),u=new Set(t.map(c=>c.content)),p=o.filter(c=>!u.has(c.content));t=[...t,...p];const i=new Set(e.map(c=>c.content)),b=m.filter(c=>!i.has(c.content));e=[...e,...b];const j=await R.get(O.PRESET_SETTINGS);return{promptHistory:n,videoPromptHistory:e,imagePromptHistory:t,presetSettings:j||{image:{pinnedPrompts:[],deletedPrompts:[]},video:{pinnedPrompts:[],deletedPrompts:[]}}}}async importPromptData(n){let e=0,t=0;const s=n.promptHistory||[],o=n.videoPromptHistory||[],m=n.imagePromptHistory||[];await Q();const u=q(),p=X(),i=ee(),b=new Set(u.map(k=>k.id)),j=new Set(u.map(k=>k.content)),c=s.filter(k=>b.has(k.id)||j.has(k.content)?(t++,!1):(e++,!0)),x=new Set(p.map(k=>k.id)),f=new Set(p.map(k=>k.content)),a=o.filter(k=>x.has(k.id)||f.has(k.content)?(t++,!1):(e++,!0)),r=new Set(i.map(k=>k.id)),d=new Set(i.map(k=>k.content)),h=m.filter(k=>r.has(k.id)||d.has(k.content)?(t++,!1):(e++,!0)),g=[...u,...c],v=[...p,...a],_=[...i,...h];await R.set(O.PROMPT_HISTORY,g),await R.set(O.VIDEO_PROMPT_HISTORY,v),await R.set(O.IMAGE_PROMPT_HISTORY,_);const S=await R.get(O.PRESET_SETTINGS);if(S&&n.presetSettings){const k={image:{pinnedPrompts:[...new Set([...S.image.pinnedPrompts,...n.presetSettings.image.pinnedPrompts])],deletedPrompts:[...new Set([...S.image.deletedPrompts,...n.presetSettings.image.deletedPrompts])]},video:{pinnedPrompts:[...new Set([...S.video.pinnedPrompts,...n.presetSettings.video.pinnedPrompts])],deletedPrompts:[...new Set([...S.video.deletedPrompts,...n.presetSettings.video.deletedPrompts])]}};await R.set(O.PRESET_SETTINGS,k)}else n.presetSettings&&await R.set(O.PRESET_SETTINGS,n.presetSettings);return await oe(),{imported:e,skipped:t}}async importProjects(n,e){let t=0,s=0,o=0,m=0;const u=await $.loadAllFolders(),p=await $.loadAllBoards(),i=new Set(p.map(f=>f.id)),b=Object.keys(n.files).filter(f=>f.startsWith("projects/")&&f.endsWith(".drawnix")&&!f.includes("/_"));if(b.length===0)return{folders:0,boards:0,merged:0,skipped:0};const j=new Set,c=new Map;for(const f of b){const r=f.replace(/^projects\//,"").split("/");if(r.length>1){let d="";for(let h=0;h<r.length-1;h++)d=d?`${d}/${r[h]}`:r[h],j.add(d)}}const x=Array.from(j).sort((f,a)=>{const r=f.split("/").length,d=a.split("/").length;return r-d||f.localeCompare(a)});for(let f=0;f<x.length;f++){const a=x[f],r=a.split("/"),d=r[r.length-1],h=r.length>1?r.slice(0,-1).join("/"):null,g=h&&c.get(h)||null,v=this.generateId();c.set(a,v);const _=u.find(k=>k.name===d&&k.parentId===g);if(_){c.set(a,_.id),m++;continue}const S={id:v,name:d,parentId:g,order:f,isExpanded:!0,createdAt:Date.now(),updatedAt:Date.now()};await $.saveFolder(S),t++}for(let f=0;f<b.length;f++){const a=b[f];try{const r=n.file(a);if(r){const d=await r.async("string"),h=JSON.parse(d),g=h.boardMeta,_=a.replace(/^projects\//,"").split("/"),S=_.length>1?_.slice(0,-1).join("/"):null,k=S&&(c.get(S)||(g==null?void 0:g.folderId))||null,G=_[_.length-1]||"unnamed.drawnix",D=(g==null?void 0:g.name)||G.replace(".drawnix","");if(g!=null&&g.id&&i.has(g.id)){const w=p.find(y=>y.id===g.id);if(w){const y=new Set((w.elements||[]).map(A=>A.id).filter(A=>!!A)),F=(h.elements||[]).filter(A=>A.id?!y.has(A.id):!0),N=[...w.elements||[],...ae(F)],J={...w,elements:N,viewport:h.viewport||w.viewport,theme:h.theme||w.theme,updatedAt:Date.now()};await $.saveBoard(J),o++;continue}}const M={id:(g==null?void 0:g.id)||this.generateId(),name:D,folderId:k,order:(g==null?void 0:g.order)??f,elements:ae(h.elements||[]),viewport:h.viewport,theme:h.theme,createdAt:(g==null?void 0:g.createdAt)||Date.now(),updatedAt:(g==null?void 0:g.updatedAt)||Date.now()};await $.saveBoard(M),s++}}catch(r){console.warn(`[BackupRestore] Failed to import board ${a}:`,r)}if(e&&b.length>0){const r=40+Math.round((f+1)/b.length*15);e(r,`正在导入画板 (${f+1}/${b.length})...`)}}return{folders:t,boards:s,merged:o,skipped:m}}async importAssets(n,e){var b,j,c;let t=0,s=0;const o=Object.keys(n.files).filter(x=>x.startsWith("assets/")&&x.endsWith(".meta.json"));if(o.length===0)return{imported:0,skipped:0};const m=K.createInstance({name:P.STORAGE_NAME,storeName:P.STORE_NAME}),u=await m.keys(),p=new Set(u),i=new Set(await B.getAllCachedUrls());for(let x=0;x<o.length;x++){const f=o[x],a=f.replace("assets/","").replace(".meta.json","");try{const r=n.file(f);if(!r){s++;continue}const d=await r.async("string"),h=JSON.parse(d),g=h.source==="AI_GENERATED";if(g){if(i.has(h.url)){s++;continue}}else if(p.has(a)){s++;continue}const v=[".jpg",".png",".gif",".webp",".mp4",".webm",".mov",".svg"];let _=null;for(const S of v){const k=n.file(`assets/${a}${S}`);if(k){_=await k.async("blob");break}}if(!_&&h.mimeType){const S=z(h.mimeType);if(S){const k=n.file(`assets/${a}${S}`);k&&(_=await k.async("blob"))}}if(_){const S=h.type==="VIDEO"?"video":"image";await B.cacheMediaFromBlob(h.url,_,S,{taskId:((b=h.metadata)==null?void 0:b.taskId)||a,prompt:(j=h.metadata)==null?void 0:j.prompt,model:(c=h.metadata)==null?void 0:c.model}),g||await m.setItem(a,h),t++}else console.warn(`[BackupRestore] No media file found for asset ${a}, skipping`),s++}catch(r){console.warn(`[BackupRestore] Failed to import asset ${a}:`,r),s++}if(e&&o.length>0){const r=60+Math.round((x+1)/o.length*35);e(r,`正在导入素材 (${x+1}/${o.length})...`)}}return{imported:t,skipped:s}}async importTasks(n){let e=0,t=0;const s=n.file("tasks.json");if(!s)return{imported:0,skipped:0};try{const o=await s.async("string"),m=JSON.parse(o);if(!Array.isArray(m)||m.length===0)return{imported:0,skipped:0};const u=H.getAllTasks(),p=new Set(u.map(b=>b.id)),i=m.filter(b=>p.has(b.id)?(t++,!1):!0);i.length>0&&(await H.restoreTasks(i),e=i.length)}catch(o){console.warn("[BackupRestore] Failed to import tasks:",o)}return{imported:e,skipped:t}}generateId(){return`${Date.now().toString(36)}-${Math.random().toString(36).substring(2,11)}`}}const W=new ue,ke=({open:E,onOpenChange:n,container:e,onSwitchBoard:t,onBeforeImport:s})=>{var M;const[o,m]=I.useState("backup"),[u,p]=I.useState({includePrompts:!0,includeProjects:!0,includeAssets:!0}),[i,b]=I.useState(!1),[j,c]=I.useState(0),[x,f]=I.useState(""),[a,r]=I.useState(null),[d,h]=I.useState(null),g=I.useRef(null),v=I.useCallback(async w=>{if(!w.currentBoardId||!t)return;const y=V.getBoard(w.currentBoardId);if(!y)return;const T=V.getCurrentBoard();if(!T||!T.elements||T.elements.length===0)await t(w.currentBoardId,w.viewport),C.success(`已切换到画板「${y.name}」`);else{const N=ce.confirm({header:"恢复画布状态",body:`备份时正在编辑画板「${w.currentBoardName||y.name}」,是否切换到该画板?`,confirmBtn:"切换",cancelBtn:"取消",onConfirm:async()=>{await t(w.currentBoardId,w.viewport),C.success(`已切换到画板「${y.name}」`),N.destroy()},onCancel:()=>{N.destroy()}})}},[t]),_=I.useCallback(async()=>{if(!i){if(d&&(await v(d),h(null)),a&&a.tasks&&a.tasks.imported>0){window.location.reload();return}n(!1),c(0),f(""),r(null)}},[i,n,a,d,v]),S=I.useCallback(async()=>{if(!u.includePrompts&&!u.includeProjects&&!u.includeAssets){C.warning("请至少选择一项要备份的内容");return}b(!0),c(0),f("正在准备...");try{const w=await W.exportToZip(u,(y,T)=>{c(y),f(T)});W.downloadZip(w),C.success("备份成功!"),_()}catch(w){console.error("[BackupRestore] Export failed:",w),C.error("备份失败,请重试")}finally{b(!1)}},[u,_]),k=I.useCallback(()=>{var w;(w=g.current)==null||w.click()},[]),G=I.useCallback(async w=>{var T,F;const y=(T=w.target.files)==null?void 0:T[0];if(y){if(!y.name.endsWith(".zip")){C.warning("请选择 ZIP 格式的备份文件");return}b(!0),c(0),f("正在保存当前画板..."),r(null);try{s&&await s(),f("正在读取文件...");const N=await W.importFromZip(y,(J,A)=>{c(J),f(A)});r(N),(F=N.workspaceState)!=null&&F.currentBoardId&&h(N.workspaceState),N.success?C.success("导入成功!"):N.errors.length>0&&C.warning("导入完成,但有部分错误")}catch(N){console.error("[BackupRestore] Import failed:",N),C.error("导入失败,请检查文件格式")}finally{b(!1),g.current&&(g.current.value="")}}},[s]),D=I.useCallback((w,y)=>{p(T=>({...T,[w]:y}))},[]);return l.jsx(le,{open:E,onOpenChange:_,children:l.jsxs(de,{className:"backup-restore-dialog",container:e,"data-testid":"backup-restore-dialog",children:[l.jsx("h2",{className:"backup-restore-dialog__title",children:"备份 / 恢复"}),l.jsxs("div",{className:"backup-restore-dialog__tabs",children:[l.jsx("button",{className:`backup-restore-dialog__tab ${o==="backup"?"backup-restore-dialog__tab--active":""}`,onClick:()=>m("backup"),disabled:i,children:"备份"}),l.jsx("button",{className:`backup-restore-dialog__tab ${o==="restore"?"backup-restore-dialog__tab--active":""}`,onClick:()=>m("restore"),disabled:i,children:"恢复"})]}),o==="backup"&&l.jsxs("div",{className:"backup-restore-dialog__panel",children:[l.jsx("p",{className:"backup-restore-dialog__description",children:"选择要备份的内容,将导出为 ZIP 压缩包:"}),l.jsxs("div",{className:"backup-restore-dialog__options",children:[l.jsx(Z,{checked:u.includePrompts,onChange:w=>D("includePrompts",w),disabled:i,children:l.jsxs("div",{className:"backup-restore-dialog__option-content",children:[l.jsx("span",{className:"backup-restore-dialog__option-title",children:"提示词"}),l.jsx("span",{className:"backup-restore-dialog__option-desc",children:"包含图片和视频生成的历史提示词"})]})}),l.jsx(Z,{checked:u.includeProjects,onChange:w=>D("includeProjects",w),disabled:i,children:l.jsxs("div",{className:"backup-restore-dialog__option-content",children:[l.jsx("span",{className:"backup-restore-dialog__option-title",children:"项目"}),l.jsx("span",{className:"backup-restore-dialog__option-desc",children:"包含所有文件夹和画板"})]})}),l.jsx(Z,{checked:u.includeAssets,onChange:w=>D("includeAssets",w),disabled:i,children:l.jsxs("div",{className:"backup-restore-dialog__option-content",children:[l.jsx("span",{className:"backup-restore-dialog__option-title",children:"素材库"}),l.jsx("span",{className:"backup-restore-dialog__option-desc",children:"包含所有本地上传的图片和视频"})]})})]}),i&&l.jsxs("div",{className:"backup-restore-dialog__progress",children:[l.jsx(te,{percentage:j,theme:"line"}),l.jsx("span",{className:"backup-restore-dialog__progress-text",children:x})]}),l.jsxs("div",{className:"backup-restore-dialog__actions",children:[l.jsx("button",{className:"backup-restore-dialog__button backup-restore-dialog__button--cancel",onClick:_,disabled:i,children:"取消"}),l.jsx("button",{className:"backup-restore-dialog__button backup-restore-dialog__button--primary",onClick:S,disabled:i,children:i?"正在备份...":"开始备份"})]})]}),o==="restore"&&l.jsxs("div",{className:"backup-restore-dialog__panel",children:[l.jsx("p",{className:"backup-restore-dialog__description",children:"选择备份文件进行恢复,数据将增量导入(不会覆盖现有内容):"}),l.jsxs("div",{className:"backup-restore-dialog__dropzone",onClick:k,children:[l.jsx(pe,{className:"backup-restore-dialog__dropzone-icon"}),l.jsx("span",{className:"backup-restore-dialog__dropzone-text",children:"点击选择备份文件 (.zip)"}),l.jsx("input",{ref:g,type:"file",accept:".zip",onChange:G,style:{display:"none"}})]}),i&&l.jsxs("div",{className:"backup-restore-dialog__progress",children:[l.jsx(te,{percentage:j,theme:"line"}),l.jsx("span",{className:"backup-restore-dialog__progress-text",children:x})]}),a&&l.jsxs("div",{className:"backup-restore-dialog__result",children:[l.jsx("h4",{className:"backup-restore-dialog__result-title",children:a.success?"导入完成":"导入完成(有错误)"}),l.jsxs("ul",{className:"backup-restore-dialog__result-list",children:[(a.prompts.imported>0||a.prompts.skipped>0)&&l.jsxs("li",{children:["提示词:导入 ",a.prompts.imported," 条,跳过 ",a.prompts.skipped," 条"]}),(a.projects.folders>0||a.projects.boards>0||a.projects.merged>0)&&l.jsxs("li",{children:["项目:导入 ",a.projects.folders," 个文件夹,",a.projects.boards," 个画板",a.projects.merged>0&&`,合并 ${a.projects.merged} 个画板`]}),(a.assets.imported>0||a.assets.skipped>0)&&l.jsxs("li",{children:["素材:导入 ",a.assets.imported," 个,跳过 ",a.assets.skipped," 个"]}),a.tasks&&(a.tasks.imported>0||a.tasks.skipped>0)&&l.jsxs("li",{children:["任务:导入 ",a.tasks.imported," 个,跳过 ",a.tasks.skipped," 个"]})]}),a.errors.length>0&&l.jsxs("div",{className:"backup-restore-dialog__result-errors",children:[l.jsx("strong",{children:"错误信息:"}),l.jsx("ul",{children:a.errors.map((w,y)=>l.jsx("li",{children:w},y))})]})]}),l.jsx("div",{className:"backup-restore-dialog__actions",children:l.jsx("button",{className:"backup-restore-dialog__button backup-restore-dialog__button--cancel",onClick:_,disabled:i,children:a?((M=a.tasks)==null?void 0:M.imported)>0?"完成并刷新":"完成":"取消"})})]})]})})};export{ke as BackupRestoreDialog};
@@ -1,6 +1,6 @@
1
- import{r as i,I as Q,_ as Y,P as me,R as G,S as Qe,U as Ye,be as qe,bf as oe,W as he,X as ae,bg as Xe,a6 as Z,F as n,bh as et,ak as z,bc as ie,bi as ge,b8 as tt,bj as de,bk as rt,b0 as Se,a_ as nt,bl as we,bm as je,a$ as be,bn as st}from"./index-Y-mRUgjd.js";import{U as at}from"./upload-Dw77S_Me.js";function ye(s,r){var e=Object.keys(s);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(s);r&&(t=t.filter(function(l){return Object.getOwnPropertyDescriptor(s,l).enumerable})),e.push.apply(e,t)}return e}function ve(s){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?ye(Object(e),!0).forEach(function(t){Y(s,t,e[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(e)):ye(Object(e)).forEach(function(t){Object.defineProperty(s,t,Object.getOwnPropertyDescriptor(e,t))})}return s}var ot={tag:"svg",attrs:{fill:"none",viewBox:"0 0 24 24",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M8 2V6L16 6V2L18 2V6L22 6V8L18 8L18 16L22 16V18L18 18V22H16L16 18L8 18V22H6L6 18H2L2 16H6L6 8L2 8L2 6L6 6L6 2L8 2ZM8 8L8 16L16 16V8L8 8Z"}}]},Ae=i.forwardRef(function(s,r){return i.createElement(Q,ve(ve({},s),{},{id:"artboard",ref:r,icon:ot}))});Ae.displayName="ArtboardIcon";function Oe(s,r){var e=Object.keys(s);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(s);r&&(t=t.filter(function(l){return Object.getOwnPropertyDescriptor(s,l).enumerable})),e.push.apply(e,t)}return e}function xe(s){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?Oe(Object(e),!0).forEach(function(t){Y(s,t,e[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(e)):Oe(Object(e)).forEach(function(t){Object.defineProperty(s,t,Object.getOwnPropertyDescriptor(e,t))})}return s}var lt={tag:"svg",attrs:{fill:"none",viewBox:"0 0 24 24",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M6 1H15.4142L21 6.58579V19H6V1ZM8 3V17H19V9H13V3H8ZM15 3.41421V7H18.5858L15 3.41421ZM4 5V21H15V23H2V5H4Z"}}]},$e=i.forwardRef(function(s,r){return i.createElement(Q,xe(xe({},s),{},{id:"file-copy",ref:r,icon:lt}))});$e.displayName="FileCopyIcon";function _e(s,r){var e=Object.keys(s);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(s);r&&(t=t.filter(function(l){return Object.getOwnPropertyDescriptor(s,l).enumerable})),e.push.apply(e,t)}return e}function De(s){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?_e(Object(e),!0).forEach(function(t){Y(s,t,e[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(e)):_e(Object(e)).forEach(function(t){Object.defineProperty(s,t,Object.getOwnPropertyDescriptor(e,t))})}return s}var it={tag:"svg",attrs:{fill:"none",viewBox:"0 0 24 24",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M1 2.5L9.48063 2.5L11.4806 5H23V12H21V7H10.5194L8.51938 4.5L3 4.5L3 19H14V21H1L1 2.5ZM21 14V17H24V19H21V22H19V19H16V17H19V14H21Z"}}]},fe=i.forwardRef(function(s,r){return i.createElement(Q,De(De({},s),{},{id:"folder-add",ref:r,icon:it}))});fe.displayName="FolderAddIcon";function Ce(s,r){var e=Object.keys(s);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(s);r&&(t=t.filter(function(l){return Object.getOwnPropertyDescriptor(s,l).enumerable})),e.push.apply(e,t)}return e}function Ee(s){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?Ce(Object(e),!0).forEach(function(t){Y(s,t,e[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(e)):Ce(Object(e)).forEach(function(t){Object.defineProperty(s,t,Object.getOwnPropertyDescriptor(e,t))})}return s}var ct={tag:"svg",attrs:{fill:"none",viewBox:"0 0 24 24",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M1 2.5L11.4806 2.5L13.4806 5H23V7H12.5194L10.5194 4.5L1 4.5L1 2.5ZM1 6.5L9.48063 6.5L11.4806 9H23V21H1L1 6.5ZM3 8.5L3 19H21V11H10.5194L8.51938 8.5L3 8.5Z"}}]},Pe=i.forwardRef(function(s,r){return i.createElement(Q,Ee(Ee({},s),{},{id:"folder-open",ref:r,icon:ct}))});Pe.displayName="FolderOpenIcon";function Ie(s,r){var e=Object.keys(s);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(s);r&&(t=t.filter(function(l){return Object.getOwnPropertyDescriptor(s,l).enumerable})),e.push.apply(e,t)}return e}function Le(s){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?Ie(Object(e),!0).forEach(function(t){Y(s,t,e[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(e)):Ie(Object(e)).forEach(function(t){Object.defineProperty(s,t,Object.getOwnPropertyDescriptor(e,t))})}return s}var dt={tag:"svg",attrs:{fill:"none",viewBox:"0 0 24 24",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M1 2.5L9.48063 2.5L11.4806 5L23 5L23 21L1 21L1 2.5ZM3 4.5L3 19L21 19L21 7L10.5194 7L8.51937 4.5L3 4.5Z"}}]},Fe=i.forwardRef(function(s,r){return i.createElement(Q,Le(Le({},s),{},{id:"folder",ref:r,icon:dt}))});Fe.displayName="FolderIcon";function Ne(s,r){var e=Object.keys(s);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(s);r&&(t=t.filter(function(l){return Object.getOwnPropertyDescriptor(s,l).enumerable})),e.push.apply(e,t)}return e}function ke(s){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?Ne(Object(e),!0).forEach(function(t){Y(s,t,e[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(e)):Ne(Object(e)).forEach(function(t){Object.defineProperty(s,t,Object.getOwnPropertyDescriptor(e,t))})}return s}var pt={tag:"svg",attrs:{fill:"none",viewBox:"0 0 24 24",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M10.5 3H13.5V6H10.5V3ZM10.5 10.5H13.5V13.5H10.5V10.5ZM10.5 18H13.5V21H10.5V18Z"}}]},pe=i.forwardRef(function(s,r){return i.createElement(Q,ke(ke({},s),{},{id:"more",ref:r,icon:pt}))});pe.displayName="MoreIcon";class ft{async exportToZip(r){const{onProgress:e}=r||{},t=new me;e==null||e(5,"正在加载数据...");const[l,p]=await Promise.all([G.loadAllFolders(),G.loadAllBoards()]);e==null||e(15,"正在构建目录结构...");const O=this.buildFolderPathMap(l),$=this.collectAssetIds(p);e==null||e(20,"正在加载素材...");const x=await this.loadAssets($);e==null||e(30,"正在创建文件夹...");for(const h of l){const g=O.get(h.id)||h.name;t.folder(g)}e==null||e(40,"正在导出画板...");const M=p.length;for(let h=0;h<p.length;h++){const g=p[h],L=g.folderId?O.get(g.folderId):null,I=this.sanitizeFileName(g.name),H=L?`${L}/${I}.drawnix`:`${I}.drawnix`,c={type:Qe.drawnix,version:Ye.drawnix,source:"web",elements:g.elements||[],viewport:g.viewport||{zoom:1},theme:g.theme,boardMeta:{id:g.id,name:g.name,order:g.order,createdAt:g.createdAt,updatedAt:g.updatedAt}};if(t.file(H,JSON.stringify(c,null,2)),M>0){const d=40+Math.round((h+1)/M*20);e==null||e(d,`正在导出画板 (${h+1}/${M})...`)}}if(e==null||e(60,"正在导出素材..."),x.length>0){const h=t.folder("_assets");if(h){const g=x.length;for(let L=0;L<x.length;L++){const I=x[L],{blobData:H,...c}=I;h.file(`${I.id}.meta.json`,JSON.stringify(c,null,2)),H&&h.file(`${I.id}.blob`,H);const d=60+Math.round((L+1)/g*20);e==null||e(d,`正在导出素材 (${L+1}/${g})...`)}}}e==null||e(85,"正在压缩文件...");const P=await t.generateAsync({type:"blob",compression:"DEFLATE",compressionOptions:{level:6}},h=>{const g=85+Math.round(h.percent*.14),L=h.currentFile||"",I=L.length>30?"..."+L.slice(-27):L;e==null||e(g,`正在压缩: ${I||"..."}`)});return e==null||e(100,"导出完成"),P}buildFolderPathMap(r){const e=new Map,t=new Map;for(const p of r)t.set(p.id,p);const l=p=>{if(e.has(p))return e.get(p);const O=t.get(p);if(!O)return"";const $=this.sanitizeFileName(O.name);if(O.parentId){const x=l(O.parentId),M=x?`${x}/${$}`:$;return e.set(p,M),M}return e.set(p,$),$};for(const p of r)l(p.id);return e}sanitizeFileName(r){return r.replace(/[<>:"/\\|?*]/g,"_").replace(/\s+/g," ").trim()||"unnamed"}async importFromZip(r,e={}){var M;const{merge:t=!1,onProgress:l}=e,p=[];let O=0,$=0,x=0;try{l==null||l(5,"正在读取文件...");const P=await me.loadAsync(r);l==null||l(10,"正在验证文件格式...");const h=Object.keys(P.files).filter(c=>c.endsWith(".drawnix")&&!c.startsWith("_"));if(h.length===0)throw new Error("无效的导出文件:未找到画板文件");t||(l==null||l(15,"正在清理现有数据..."),await G.clearAll(),await qe.clearAll(),await G.saveState({currentBoardId:null,expandedFolderIds:[],sidebarWidth:oe.SIDEBAR_WIDTH,sidebarCollapsed:!1,migrationCompleted:!0})),l==null||l(20,"正在导入素材...");const g=Object.keys(P.files).filter(c=>c.startsWith("_assets/")&&c.endsWith(".meta.json"));for(let c=0;c<g.length;c++){const d=g[c],C=d.replace("_assets/","").replace(".meta.json",""),y=d.replace(".meta.json",".blob");try{const N=P.file(d),v=P.file(y);if(N&&v){const k=await N.async("string"),o=JSON.parse(k),T=await v.async("blob"),R={...o,blobData:T};await this.saveStoredAsset(R),x++}}catch(N){const v=N instanceof Error?N.message:String(N);p.push(`素材 ${C} 导入失败: ${v}`)}if(g.length>0){const N=20+(c+1)/g.length*30;l==null||l(N,`正在导入素材 (${c+1}/${g.length})...`)}}l==null||l(55,"正在分析目录结构...");const L=new Set,I=new Map;for(const c of h){const d=c.split("/");if(d.length>1){let C="";for(let y=0;y<d.length-1;y++)C=C?`${C}/${d[y]}`:d[y],L.add(C)}}const H=Array.from(L).sort((c,d)=>{const C=c.split("/").length,y=d.split("/").length;return C-y||c.localeCompare(d)});l==null||l(60,"正在导入文件夹...");for(let c=0;c<H.length;c++){const d=H[c],C=d.split("/"),y=C[C.length-1],N=C.length>1?C.slice(0,-1).join("/"):null,v=N&&I.get(N)||null;try{const k=this.generateId();I.set(d,k);const o={id:k,name:y,parentId:v,order:c,isExpanded:!0,createdAt:Date.now(),updatedAt:Date.now()};await G.saveFolder(o),O++}catch(k){const o=k instanceof Error?k.message:String(k);p.push(`文件夹 "${y}" 导入失败: ${o}`)}}l==null||l(70,"正在导入画板...");for(let c=0;c<h.length;c++){const d=h[c];try{const y=P.file(d);if(y){const N=await y.async("string"),v=JSON.parse(N),k=d.split("/").pop()||"unnamed.drawnix",o=((M=v.boardMeta)==null?void 0:M.name)||k.replace(".drawnix",""),T=d.split("/"),R=T.length>1?T.slice(0,-1).join("/"):null,W=R&&I.get(R)||null,V=v.boardMeta,K={id:(V==null?void 0:V.id)||this.generateId(),name:o,folderId:W,order:(V==null?void 0:V.order)??c,elements:v.elements||[],viewport:v.viewport,theme:v.theme,createdAt:(V==null?void 0:V.createdAt)||Date.now(),updatedAt:(V==null?void 0:V.updatedAt)||Date.now()};await G.saveBoard(K),$++}}catch(y){const N=d.split("/").pop()||d,v=y instanceof Error?y.message:String(y);p.push(`画板 "${N}" 导入失败: ${v}`)}const C=70+(c+1)/h.length*25;l==null||l(C,`正在导入画板 (${c+1}/${h.length})...`)}return l==null||l(100,"导入完成"),{success:p.length===0,folders:O,boards:$,assets:x,errors:p}}catch(P){const h=P instanceof Error?P.message:String(P);return{success:!1,folders:O,boards:$,assets:x,errors:[...p,h]}}}generateId(){return`${Date.now().toString(36)}-${Math.random().toString(36).substring(2,11)}`}collectAssetIds(r){const e=new Set;for(const t of r)t.elements&&this.findAssetIdsInElements(t.elements,e);return e}findAssetIdsInElements(r,e){for(const t of r)t.assetId&&e.add(t.assetId),t.imageAssetId&&e.add(t.imageAssetId),t.videoAssetId&&e.add(t.videoAssetId),t.children&&Array.isArray(t.children)&&this.findAssetIdsInElements(t.children,e)}async loadAssets(r){const e=[],t=he.createInstance({name:ae.STORAGE_NAME,storeName:ae.STORE_NAME});for(const l of r)try{const p=await t.getItem(l);p&&e.push(p)}catch(p){console.warn(`[WorkspaceExport] Failed to load asset ${l}:`,p)}return e}async saveStoredAsset(r){await he.createInstance({name:ae.STORAGE_NAME,storeName:ae.STORE_NAME}).setItem(r.id,r)}downloadZip(r,e){const t=new Date,l=t.toISOString().split("T")[0],p=t.toTimeString().split(" ")[0].replace(/:/g,""),O=`aitu_workspace_${l}_${p}.zip`,$=URL.createObjectURL(r),x=document.createElement("a");x.href=$,x.download=e||O,document.body.appendChild(x),x.click(),document.body.removeChild(x),URL.revokeObjectURL($)}}const ce=new ft,ut="project-drawer-width",mt=({tree:s,currentBoard:r,onBoardClick:e,onCreateBoard:t,onCreateFolder:l,onRename:p,onDelete:O,onCopyBoard:$,onMoveBoard:x,onMoveFolder:M,toggleFolderExpanded:P,autoEditBoardId:h,onAutoEditDone:g})=>{const[L,I]=i.useState(null),[H,c]=i.useState("");i.useEffect(()=>{h&&(I(h),c(oe.DEFAULT_BOARD_NAME),g==null||g())},[h,g]);const[d,C]=i.useState(null),[y,N]=i.useState(null),[v,k]=i.useState(null),o=i.useRef(null);i.useEffect(()=>()=>{o.current&&(clearTimeout(o.current),o.current=null)},[]);const T=i.useCallback((m,j)=>{const a=j.e.target;a&&a.select&&a.select()},[]),R=i.useCallback((m,j)=>{if(!H.trim()){I(null);return}p(m,j,H.trim()),I(null)},[H,p]),W=i.useCallback((m,j)=>{I(m),c(j)},[]),V=i.useCallback(m=>{const j=[{content:"根目录",value:"root"}],a=(S,A="")=>{S.forEach(E=>{if(E.type==="folder"){const F=E.data;F.id!==m&&(j.push({content:A+F.name,value:F.id}),E.children&&a(E.children,A+" "))}})};return a(s),j},[s]),K=i.useCallback((m,j,a)=>{const S={type:j,id:a};C(S),m.dataTransfer.effectAllowed="move",m.dataTransfer.setData("application/json",JSON.stringify(S))},[]),B=i.useCallback(()=>{C(null),N(null),k(null)},[]),q=i.useCallback((m,j,a)=>{if(!d||d.id===j)return;m.preventDefault(),m.dataTransfer.dropEffect="move";const S=m.currentTarget.getBoundingClientRect(),A=m.clientY-S.top,E=S.height;let F;a==="folder"?A<E*.25?F="before":A>E*.75?F="after":F="inside":F=A<E/2?"before":"after",(y!==j||v!==F)&&(N(j),k(F))},[d,y,v]),te=i.useCallback(m=>{const j=m.relatedTarget;m.currentTarget.contains(j)||(N(null),k(null))},[]),X=i.useCallback((m,j,a,S)=>{if(m.preventDefault(),!d||!v)return;const{type:A,id:E}=d;v==="inside"&&a==="folder"?A==="board"?x(E,j):M(E,j):(v==="before"||v==="after")&&(A==="board"?x(E,S,j,v):M(E,S,j,v)),B()},[d,v,x,M,B]),U=m=>{if(y!==m)return"";switch(v){case"before":return"project-drawer-node__row--drag-over-before";case"after":return"project-drawer-node__row--drag-over-after";case"inside":return"project-drawer-node__row--drag-over-inside";default:return""}},ee=(m,j=0)=>{const{data:a,children:S}=m,A=a.isExpanded,E=L===a.id,F=(d==null?void 0:d.id)===a.id,_=j*16+8;return n.jsxs("div",{className:"project-drawer-node",children:[n.jsxs("div",{className:`project-drawer-node__row project-drawer-node__row--folder
1
+ import{r as i,I as Q,_ as Y,P as me,R as G,S as Qe,U as Ye,be as qe,bf as oe,W as he,X as ae,bg as Xe,a6 as Z,F as n,bh as et,ak as z,bc as ie,bi as ge,b8 as tt,bj as de,bk as rt,b0 as Se,a_ as nt,bl as we,bm as je,a$ as be,bn as st}from"./index-CvrZFlag.js";import{U as at}from"./upload-Dh3D6Z7E.js";function ye(s,r){var e=Object.keys(s);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(s);r&&(t=t.filter(function(l){return Object.getOwnPropertyDescriptor(s,l).enumerable})),e.push.apply(e,t)}return e}function ve(s){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?ye(Object(e),!0).forEach(function(t){Y(s,t,e[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(e)):ye(Object(e)).forEach(function(t){Object.defineProperty(s,t,Object.getOwnPropertyDescriptor(e,t))})}return s}var ot={tag:"svg",attrs:{fill:"none",viewBox:"0 0 24 24",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M8 2V6L16 6V2L18 2V6L22 6V8L18 8L18 16L22 16V18L18 18V22H16L16 18L8 18V22H6L6 18H2L2 16H6L6 8L2 8L2 6L6 6L6 2L8 2ZM8 8L8 16L16 16V8L8 8Z"}}]},Ae=i.forwardRef(function(s,r){return i.createElement(Q,ve(ve({},s),{},{id:"artboard",ref:r,icon:ot}))});Ae.displayName="ArtboardIcon";function Oe(s,r){var e=Object.keys(s);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(s);r&&(t=t.filter(function(l){return Object.getOwnPropertyDescriptor(s,l).enumerable})),e.push.apply(e,t)}return e}function xe(s){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?Oe(Object(e),!0).forEach(function(t){Y(s,t,e[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(e)):Oe(Object(e)).forEach(function(t){Object.defineProperty(s,t,Object.getOwnPropertyDescriptor(e,t))})}return s}var lt={tag:"svg",attrs:{fill:"none",viewBox:"0 0 24 24",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M6 1H15.4142L21 6.58579V19H6V1ZM8 3V17H19V9H13V3H8ZM15 3.41421V7H18.5858L15 3.41421ZM4 5V21H15V23H2V5H4Z"}}]},$e=i.forwardRef(function(s,r){return i.createElement(Q,xe(xe({},s),{},{id:"file-copy",ref:r,icon:lt}))});$e.displayName="FileCopyIcon";function _e(s,r){var e=Object.keys(s);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(s);r&&(t=t.filter(function(l){return Object.getOwnPropertyDescriptor(s,l).enumerable})),e.push.apply(e,t)}return e}function De(s){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?_e(Object(e),!0).forEach(function(t){Y(s,t,e[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(e)):_e(Object(e)).forEach(function(t){Object.defineProperty(s,t,Object.getOwnPropertyDescriptor(e,t))})}return s}var it={tag:"svg",attrs:{fill:"none",viewBox:"0 0 24 24",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M1 2.5L9.48063 2.5L11.4806 5H23V12H21V7H10.5194L8.51938 4.5L3 4.5L3 19H14V21H1L1 2.5ZM21 14V17H24V19H21V22H19V19H16V17H19V14H21Z"}}]},fe=i.forwardRef(function(s,r){return i.createElement(Q,De(De({},s),{},{id:"folder-add",ref:r,icon:it}))});fe.displayName="FolderAddIcon";function Ce(s,r){var e=Object.keys(s);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(s);r&&(t=t.filter(function(l){return Object.getOwnPropertyDescriptor(s,l).enumerable})),e.push.apply(e,t)}return e}function Ee(s){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?Ce(Object(e),!0).forEach(function(t){Y(s,t,e[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(e)):Ce(Object(e)).forEach(function(t){Object.defineProperty(s,t,Object.getOwnPropertyDescriptor(e,t))})}return s}var ct={tag:"svg",attrs:{fill:"none",viewBox:"0 0 24 24",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M1 2.5L11.4806 2.5L13.4806 5H23V7H12.5194L10.5194 4.5L1 4.5L1 2.5ZM1 6.5L9.48063 6.5L11.4806 9H23V21H1L1 6.5ZM3 8.5L3 19H21V11H10.5194L8.51938 8.5L3 8.5Z"}}]},Pe=i.forwardRef(function(s,r){return i.createElement(Q,Ee(Ee({},s),{},{id:"folder-open",ref:r,icon:ct}))});Pe.displayName="FolderOpenIcon";function Ie(s,r){var e=Object.keys(s);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(s);r&&(t=t.filter(function(l){return Object.getOwnPropertyDescriptor(s,l).enumerable})),e.push.apply(e,t)}return e}function Le(s){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?Ie(Object(e),!0).forEach(function(t){Y(s,t,e[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(e)):Ie(Object(e)).forEach(function(t){Object.defineProperty(s,t,Object.getOwnPropertyDescriptor(e,t))})}return s}var dt={tag:"svg",attrs:{fill:"none",viewBox:"0 0 24 24",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M1 2.5L9.48063 2.5L11.4806 5L23 5L23 21L1 21L1 2.5ZM3 4.5L3 19L21 19L21 7L10.5194 7L8.51937 4.5L3 4.5Z"}}]},Fe=i.forwardRef(function(s,r){return i.createElement(Q,Le(Le({},s),{},{id:"folder",ref:r,icon:dt}))});Fe.displayName="FolderIcon";function Ne(s,r){var e=Object.keys(s);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(s);r&&(t=t.filter(function(l){return Object.getOwnPropertyDescriptor(s,l).enumerable})),e.push.apply(e,t)}return e}function ke(s){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?Ne(Object(e),!0).forEach(function(t){Y(s,t,e[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(e)):Ne(Object(e)).forEach(function(t){Object.defineProperty(s,t,Object.getOwnPropertyDescriptor(e,t))})}return s}var pt={tag:"svg",attrs:{fill:"none",viewBox:"0 0 24 24",width:"1em",height:"1em"},children:[{tag:"path",attrs:{fill:"currentColor",d:"M10.5 3H13.5V6H10.5V3ZM10.5 10.5H13.5V13.5H10.5V10.5ZM10.5 18H13.5V21H10.5V18Z"}}]},pe=i.forwardRef(function(s,r){return i.createElement(Q,ke(ke({},s),{},{id:"more",ref:r,icon:pt}))});pe.displayName="MoreIcon";class ft{async exportToZip(r){const{onProgress:e}=r||{},t=new me;e==null||e(5,"正在加载数据...");const[l,p]=await Promise.all([G.loadAllFolders(),G.loadAllBoards()]);e==null||e(15,"正在构建目录结构...");const O=this.buildFolderPathMap(l),$=this.collectAssetIds(p);e==null||e(20,"正在加载素材...");const x=await this.loadAssets($);e==null||e(30,"正在创建文件夹...");for(const h of l){const g=O.get(h.id)||h.name;t.folder(g)}e==null||e(40,"正在导出画板...");const M=p.length;for(let h=0;h<p.length;h++){const g=p[h],L=g.folderId?O.get(g.folderId):null,I=this.sanitizeFileName(g.name),H=L?`${L}/${I}.drawnix`:`${I}.drawnix`,c={type:Qe.drawnix,version:Ye.drawnix,source:"web",elements:g.elements||[],viewport:g.viewport||{zoom:1},theme:g.theme,boardMeta:{id:g.id,name:g.name,order:g.order,createdAt:g.createdAt,updatedAt:g.updatedAt}};if(t.file(H,JSON.stringify(c,null,2)),M>0){const d=40+Math.round((h+1)/M*20);e==null||e(d,`正在导出画板 (${h+1}/${M})...`)}}if(e==null||e(60,"正在导出素材..."),x.length>0){const h=t.folder("_assets");if(h){const g=x.length;for(let L=0;L<x.length;L++){const I=x[L],{blobData:H,...c}=I;h.file(`${I.id}.meta.json`,JSON.stringify(c,null,2)),H&&h.file(`${I.id}.blob`,H);const d=60+Math.round((L+1)/g*20);e==null||e(d,`正在导出素材 (${L+1}/${g})...`)}}}e==null||e(85,"正在压缩文件...");const P=await t.generateAsync({type:"blob",compression:"DEFLATE",compressionOptions:{level:6}},h=>{const g=85+Math.round(h.percent*.14),L=h.currentFile||"",I=L.length>30?"..."+L.slice(-27):L;e==null||e(g,`正在压缩: ${I||"..."}`)});return e==null||e(100,"导出完成"),P}buildFolderPathMap(r){const e=new Map,t=new Map;for(const p of r)t.set(p.id,p);const l=p=>{if(e.has(p))return e.get(p);const O=t.get(p);if(!O)return"";const $=this.sanitizeFileName(O.name);if(O.parentId){const x=l(O.parentId),M=x?`${x}/${$}`:$;return e.set(p,M),M}return e.set(p,$),$};for(const p of r)l(p.id);return e}sanitizeFileName(r){return r.replace(/[<>:"/\\|?*]/g,"_").replace(/\s+/g," ").trim()||"unnamed"}async importFromZip(r,e={}){var M;const{merge:t=!1,onProgress:l}=e,p=[];let O=0,$=0,x=0;try{l==null||l(5,"正在读取文件...");const P=await me.loadAsync(r);l==null||l(10,"正在验证文件格式...");const h=Object.keys(P.files).filter(c=>c.endsWith(".drawnix")&&!c.startsWith("_"));if(h.length===0)throw new Error("无效的导出文件:未找到画板文件");t||(l==null||l(15,"正在清理现有数据..."),await G.clearAll(),await qe.clearAll(),await G.saveState({currentBoardId:null,expandedFolderIds:[],sidebarWidth:oe.SIDEBAR_WIDTH,sidebarCollapsed:!1,migrationCompleted:!0})),l==null||l(20,"正在导入素材...");const g=Object.keys(P.files).filter(c=>c.startsWith("_assets/")&&c.endsWith(".meta.json"));for(let c=0;c<g.length;c++){const d=g[c],C=d.replace("_assets/","").replace(".meta.json",""),y=d.replace(".meta.json",".blob");try{const N=P.file(d),v=P.file(y);if(N&&v){const k=await N.async("string"),o=JSON.parse(k),T=await v.async("blob"),R={...o,blobData:T};await this.saveStoredAsset(R),x++}}catch(N){const v=N instanceof Error?N.message:String(N);p.push(`素材 ${C} 导入失败: ${v}`)}if(g.length>0){const N=20+(c+1)/g.length*30;l==null||l(N,`正在导入素材 (${c+1}/${g.length})...`)}}l==null||l(55,"正在分析目录结构...");const L=new Set,I=new Map;for(const c of h){const d=c.split("/");if(d.length>1){let C="";for(let y=0;y<d.length-1;y++)C=C?`${C}/${d[y]}`:d[y],L.add(C)}}const H=Array.from(L).sort((c,d)=>{const C=c.split("/").length,y=d.split("/").length;return C-y||c.localeCompare(d)});l==null||l(60,"正在导入文件夹...");for(let c=0;c<H.length;c++){const d=H[c],C=d.split("/"),y=C[C.length-1],N=C.length>1?C.slice(0,-1).join("/"):null,v=N&&I.get(N)||null;try{const k=this.generateId();I.set(d,k);const o={id:k,name:y,parentId:v,order:c,isExpanded:!0,createdAt:Date.now(),updatedAt:Date.now()};await G.saveFolder(o),O++}catch(k){const o=k instanceof Error?k.message:String(k);p.push(`文件夹 "${y}" 导入失败: ${o}`)}}l==null||l(70,"正在导入画板...");for(let c=0;c<h.length;c++){const d=h[c];try{const y=P.file(d);if(y){const N=await y.async("string"),v=JSON.parse(N),k=d.split("/").pop()||"unnamed.drawnix",o=((M=v.boardMeta)==null?void 0:M.name)||k.replace(".drawnix",""),T=d.split("/"),R=T.length>1?T.slice(0,-1).join("/"):null,W=R&&I.get(R)||null,V=v.boardMeta,K={id:(V==null?void 0:V.id)||this.generateId(),name:o,folderId:W,order:(V==null?void 0:V.order)??c,elements:v.elements||[],viewport:v.viewport,theme:v.theme,createdAt:(V==null?void 0:V.createdAt)||Date.now(),updatedAt:(V==null?void 0:V.updatedAt)||Date.now()};await G.saveBoard(K),$++}}catch(y){const N=d.split("/").pop()||d,v=y instanceof Error?y.message:String(y);p.push(`画板 "${N}" 导入失败: ${v}`)}const C=70+(c+1)/h.length*25;l==null||l(C,`正在导入画板 (${c+1}/${h.length})...`)}return l==null||l(100,"导入完成"),{success:p.length===0,folders:O,boards:$,assets:x,errors:p}}catch(P){const h=P instanceof Error?P.message:String(P);return{success:!1,folders:O,boards:$,assets:x,errors:[...p,h]}}}generateId(){return`${Date.now().toString(36)}-${Math.random().toString(36).substring(2,11)}`}collectAssetIds(r){const e=new Set;for(const t of r)t.elements&&this.findAssetIdsInElements(t.elements,e);return e}findAssetIdsInElements(r,e){for(const t of r)t.assetId&&e.add(t.assetId),t.imageAssetId&&e.add(t.imageAssetId),t.videoAssetId&&e.add(t.videoAssetId),t.children&&Array.isArray(t.children)&&this.findAssetIdsInElements(t.children,e)}async loadAssets(r){const e=[],t=he.createInstance({name:ae.STORAGE_NAME,storeName:ae.STORE_NAME});for(const l of r)try{const p=await t.getItem(l);p&&e.push(p)}catch(p){console.warn(`[WorkspaceExport] Failed to load asset ${l}:`,p)}return e}async saveStoredAsset(r){await he.createInstance({name:ae.STORAGE_NAME,storeName:ae.STORE_NAME}).setItem(r.id,r)}downloadZip(r,e){const t=new Date,l=t.toISOString().split("T")[0],p=t.toTimeString().split(" ")[0].replace(/:/g,""),O=`aitu_workspace_${l}_${p}.zip`,$=URL.createObjectURL(r),x=document.createElement("a");x.href=$,x.download=e||O,document.body.appendChild(x),x.click(),document.body.removeChild(x),URL.revokeObjectURL($)}}const ce=new ft,ut="project-drawer-width",mt=({tree:s,currentBoard:r,onBoardClick:e,onCreateBoard:t,onCreateFolder:l,onRename:p,onDelete:O,onCopyBoard:$,onMoveBoard:x,onMoveFolder:M,toggleFolderExpanded:P,autoEditBoardId:h,onAutoEditDone:g})=>{const[L,I]=i.useState(null),[H,c]=i.useState("");i.useEffect(()=>{h&&(I(h),c(oe.DEFAULT_BOARD_NAME),g==null||g())},[h,g]);const[d,C]=i.useState(null),[y,N]=i.useState(null),[v,k]=i.useState(null),o=i.useRef(null);i.useEffect(()=>()=>{o.current&&(clearTimeout(o.current),o.current=null)},[]);const T=i.useCallback((m,j)=>{const a=j.e.target;a&&a.select&&a.select()},[]),R=i.useCallback((m,j)=>{if(!H.trim()){I(null);return}p(m,j,H.trim()),I(null)},[H,p]),W=i.useCallback((m,j)=>{I(m),c(j)},[]),V=i.useCallback(m=>{const j=[{content:"根目录",value:"root"}],a=(S,A="")=>{S.forEach(E=>{if(E.type==="folder"){const F=E.data;F.id!==m&&(j.push({content:A+F.name,value:F.id}),E.children&&a(E.children,A+" "))}})};return a(s),j},[s]),K=i.useCallback((m,j,a)=>{const S={type:j,id:a};C(S),m.dataTransfer.effectAllowed="move",m.dataTransfer.setData("application/json",JSON.stringify(S))},[]),B=i.useCallback(()=>{C(null),N(null),k(null)},[]),q=i.useCallback((m,j,a)=>{if(!d||d.id===j)return;m.preventDefault(),m.dataTransfer.dropEffect="move";const S=m.currentTarget.getBoundingClientRect(),A=m.clientY-S.top,E=S.height;let F;a==="folder"?A<E*.25?F="before":A>E*.75?F="after":F="inside":F=A<E/2?"before":"after",(y!==j||v!==F)&&(N(j),k(F))},[d,y,v]),te=i.useCallback(m=>{const j=m.relatedTarget;m.currentTarget.contains(j)||(N(null),k(null))},[]),X=i.useCallback((m,j,a,S)=>{if(m.preventDefault(),!d||!v)return;const{type:A,id:E}=d;v==="inside"&&a==="folder"?A==="board"?x(E,j):M(E,j):(v==="before"||v==="after")&&(A==="board"?x(E,S,j,v):M(E,S,j,v)),B()},[d,v,x,M,B]),U=m=>{if(y!==m)return"";switch(v){case"before":return"project-drawer-node__row--drag-over-before";case"after":return"project-drawer-node__row--drag-over-after";case"inside":return"project-drawer-node__row--drag-over-inside";default:return""}},ee=(m,j=0)=>{const{data:a,children:S}=m,A=a.isExpanded,E=L===a.id,F=(d==null?void 0:d.id)===a.id,_=j*16+8;return n.jsxs("div",{className:"project-drawer-node",children:[n.jsxs("div",{className:`project-drawer-node__row project-drawer-node__row--folder
2
2
  ${F?"project-drawer-node__row--dragging":""}
3
3
  ${U(a.id)}`,style:{paddingLeft:_},draggable:!E,onClick:()=>{E||(o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{P(a.id)},200))},onDragStart:w=>K(w,"folder",a.id),onDragEnd:B,onDragOver:w=>q(w,a.id,"folder"),onDragLeave:te,onDrop:w=>X(w,a.id,"folder",a.parentId),children:[n.jsx("span",{className:"project-drawer-node__expand",onClick:w=>{w.stopPropagation(),P(a.id)},children:n.jsx(nt,{style:{transform:A?"rotate(90deg)":"none",transition:"transform 0.2s"}})}),n.jsx("span",{className:"project-drawer-node__icon",children:A?n.jsx(Pe,{}):n.jsx(Fe,{})}),E?n.jsx(de,{value:H,size:"small",autofocus:!0,onFocus:T,onClick:w=>w.e.stopPropagation(),onChange:w=>c(w),onBlur:()=>R("folder",a.id),onKeydown:(w,re)=>{re.e.key==="Enter"?R("folder",a.id):re.e.key==="Escape"&&I(null)}}):n.jsx("span",{className:"project-drawer-node__label",onDoubleClick:w=>{w.stopPropagation(),o.current&&(clearTimeout(o.current),o.current=null),W(a.id,a.name)},children:a.name}),n.jsx("div",{className:"project-drawer-node__actions",onClick:w=>w.stopPropagation(),children:n.jsx(we,{options:[{content:"新建画板",value:"new-board",prefixIcon:n.jsx(Se,{})},{content:"新建文件夹",value:"new-folder",prefixIcon:n.jsx(fe,{})},{content:"重命名",value:"rename",prefixIcon:n.jsx(je,{})},{content:"删除",value:"delete",prefixIcon:n.jsx(be,{})}],onClick:w=>{w.value==="new-board"?t(a.id):w.value==="new-folder"?l(a.id):w.value==="rename"?W(a.id,a.name):w.value==="delete"&&O("folder",a.id,a.name)},children:n.jsx(z,{variant:"text",size:"small",icon:n.jsx(pe,{})})})})]}),A&&S&&S.length>0&&n.jsx("div",{className:"project-drawer-node__children",children:S.map(w=>w.type==="folder"?ee(w,j+1):J(w,j+1))})]},a.id)},J=(m,j=0)=>{const{data:a}=m,S=a.id===(r==null?void 0:r.id),A=L===a.id,E=(d==null?void 0:d.id)===a.id,F=j*16+8;return n.jsx("div",{className:"project-drawer-node",children:n.jsxs("div",{className:`project-drawer-node__row
4
4
  ${S?"project-drawer-node__row--active":""}
5
5
  ${E?"project-drawer-node__row--dragging":""}
6
- ${U(a.id)}`,style:{paddingLeft:F},draggable:!A,onClick:()=>{A||(o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{e(a)},200))},onDragStart:_=>K(_,"board",a.id),onDragEnd:B,onDragOver:_=>q(_,a.id,"board"),onDragLeave:te,onDrop:_=>X(_,a.id,"board",a.folderId),children:[n.jsx("span",{className:"project-drawer-node__expand"}),n.jsx("span",{className:"project-drawer-node__icon",children:n.jsx(Ae,{})}),A?n.jsx(de,{value:H,size:"small",autofocus:!0,onFocus:T,onClick:_=>_.e.stopPropagation(),onChange:_=>c(_),onBlur:()=>R("board",a.id),onKeydown:(_,w)=>{w.e.key==="Enter"?R("board",a.id):w.e.key==="Escape"&&I(null)}}):n.jsx("span",{className:"project-drawer-node__label",onDoubleClick:_=>{_.stopPropagation(),o.current&&(clearTimeout(o.current),o.current=null),W(a.id,a.name)},children:a.name}),n.jsx("div",{className:"project-drawer-node__actions",onClick:_=>_.stopPropagation(),children:n.jsx(we,{options:[{content:"复制",value:"copy",prefixIcon:n.jsx($e,{})},{content:"重命名",value:"rename",prefixIcon:n.jsx(je,{})},{content:"移动到",value:"move",prefixIcon:n.jsx(st,{}),children:V()},{content:"删除",value:"delete",prefixIcon:n.jsx(be,{})}],onClick:_=>{_.value==="copy"?$(a.id):_.value==="rename"?W(a.id,a.name):_.value==="delete"?O("board",a.id,a.name):_.value==="root"?x(a.id,null):typeof _.value=="string"&&_.value!=="move"&&x(a.id,_.value)},children:n.jsx(z,{variant:"text",size:"small",icon:n.jsx(pe,{})})})})]})},a.id)};return n.jsx("div",{className:"project-drawer__tree",children:s.map(m=>m.type==="folder"?ee(m):J(m))})},jt=({isOpen:s=!1,onOpenChange:r,onBeforeSwitch:e,onBoardSwitch:t})=>{const{isLoading:l,tree:p,currentBoard:O,createFolder:$,renameFolder:x,deleteFolder:M,deleteFolderWithContents:P,moveFolder:h,toggleFolderExpanded:g,createBoard:L,renameBoard:I,deleteBoard:H,moveBoard:c,copyBoard:d,switchBoard:C}=Xe(),[y,N]=i.useState(""),[v,k]=i.useState(!1),[o,T]=i.useState(null),[R,W]=i.useState(!1),[V,K]=i.useState(!1),[B,q]=i.useState(!1),[te,X]=i.useState(!1),[U,ee]=i.useState({progress:0,message:""}),[J,m]=i.useState({progress:0,message:""}),[j,a]=i.useState(null),S=i.useRef(null),A=i.useCallback(()=>{r==null||r(!1)},[r]),E=i.useCallback(async f=>{e&&await e();const b=await L({name:oe.DEFAULT_BOARD_NAME,folderId:f||null});if(b){const u=await C(b.id);u&&t&&t(u),a(b.id),Z.success("画板已创建")}},[L,C,e,t]),F=i.useCallback(async f=>{await $({name:oe.DEFAULT_FOLDER_NAME,parentId:f||null})},[$]),_=i.useCallback(async(f,b,u)=>{f==="folder"?await x(b,u):await I(b,u)},[x,I]),w=i.useCallback((f,b,u)=>{T({type:f,id:b,name:u}),k(!0)},[]),re=i.useCallback(async()=>{if(!o||o.type!=="folder")return;await M(o.id)&&Z.success("删除成功"),k(!1),T(null)},[o,M]),Me=i.useCallback(async()=>{if(!o||o.type!=="folder")return;await P(o.id)&&Z.success("删除成功"),k(!1),T(null)},[o,P]),le=i.useCallback((f,b)=>{for(const u of f){if(u.type==="board"&&u.data.id!==b)return u.data;if(u.type==="folder"&&u.children){const D=le(u.children,b);if(D)return D}}return null},[]),He=i.useCallback(async()=>{if(!o||o.type!=="board")return;const f=o.id===(O==null?void 0:O.id);if(await H(o.id)&&(Z.success("删除成功"),f)){const u=le(p,o.id);if(u){e&&await e();const D=await C(u.id);D&&t&&t(D)}}k(!1),T(null)},[o,H,O,p,le,e,C,t]),Ve=i.useCallback(async f=>{await d(f)&&Z.success("画板已复制")},[d]),Re=i.useCallback(async(f,b,u,D)=>{await c(f,b,u,D)},[c]),Te=i.useCallback(async(f,b,u,D)=>{await h(f,b,u,D)||Z.error("无法移动文件夹到其子目录")},[h]),Ze=i.useCallback(async()=>{if(!R)try{W(!0),X(!0),m({progress:0,message:"准备导出..."}),e&&await e();const f=await ce.exportToZip({onProgress:(b,u)=>{m({progress:b,message:u})}});ce.downloadZip(f),Z.success("导出成功")}catch(f){console.error("[ProjectDrawer] Export failed:",f),Z.error(`导出失败: ${f.message}`)}finally{W(!1),X(!1)}},[R,e]),ze=i.useCallback(()=>{var f;(f=S.current)==null||f.click()},[]),We=i.useCallback(async f=>{var u;const b=(u=f.target.files)==null?void 0:u[0];if(b){if(f.target.value="",!b.name.endsWith(".zip")){Z.error("请选择 ZIP 文件");return}q(!0),K(!0),ee({progress:0,message:"准备导入..."});try{e&&await e();const D=await ce.importFromZip(b,{merge:!1,onProgress:(ne,se)=>{ee({progress:ne,message:se})}});D.success?(Z.success(`导入成功:${D.folders} 个文件夹,${D.boards} 个画板,${D.assets} 个素材`),window.location.reload()):(D.errors.length>0&&(Z.warning(`导入完成,但有 ${D.errors.length} 个错误`),console.warn("[ProjectDrawer] Import errors:",D.errors)),window.location.reload())}catch(D){console.error("[ProjectDrawer] Import failed:",D),Z.error(`导入失败: ${D.message}`)}finally{K(!1),q(!1)}}},[e]),Ke=i.useCallback(async f=>{if(f.id===(O==null?void 0:O.id))return;e&&await e();const b=await C(f.id);b&&t&&t(b)},[O,e,t,C]),ue=i.useMemo(()=>{if(!y.trim())return p;const f=y.toLowerCase().trim(),b=u=>{if(u.type==="board")return u.data.name.toLowerCase().includes(f)?u:null;if(u.type==="folder"){const D=u,ne=D.data,se=D.children?D.children.map(b).filter(Ge=>Ge!==null):[];return ne.name.toLowerCase().includes(f)||se.length>0?{...D,children:se}:null}return null};return p.map(b).filter(u=>u!==null)},[p,y]),Be=n.jsxs(n.Fragment,{children:[n.jsx(z,{variant:"text",size:"small",icon:n.jsx(Se,{}),onClick:()=>E(),title:"新建画板"}),n.jsx(z,{variant:"text",size:"small",icon:n.jsx(fe,{}),onClick:()=>F(),title:"新建文件夹"})]}),Ue=n.jsx(de,{placeholder:"搜索...",value:y,onChange:N,prefixIcon:n.jsx(rt,{}),size:"small"}),Je=n.jsxs("div",{className:"project-drawer__footer-actions",children:[n.jsx(z,{variant:"outline",size:"small",icon:n.jsx(at,{}),onClick:ze,disabled:V,title:"从 ZIP 文件导入",children:"导入"}),n.jsx(z,{variant:"outline",size:"small",icon:n.jsx(tt,{}),onClick:Ze,loading:R,title:"导出为 ZIP 文件",children:"导出"}),n.jsx("input",{ref:S,type:"file",accept:".zip",style:{display:"none"},onChange:We})]});return n.jsxs(n.Fragment,{children:[n.jsx(et,{isOpen:s,onClose:A,title:"项目",headerActions:Be,filterSection:Ue,footer:Je,position:"toolbar-right",width:"narrow",storageKey:ut,resizable:!0,className:"project-drawer",contentClassName:"project-drawer__content",children:l?n.jsx("div",{className:"project-drawer__loading",children:"加载中..."}):ue.length===0?n.jsxs("div",{className:"project-drawer__empty",children:[n.jsx("p",{children:"暂无画板"}),n.jsx(z,{size:"small",onClick:()=>E(),children:"创建第一个画板"})]}):n.jsx(mt,{tree:ue,currentBoard:O,onBoardClick:Ke,onCreateBoard:E,onCreateFolder:F,onRename:_,onDelete:w,onCopyBoard:Ve,onMoveBoard:Re,onMoveFolder:Te,toggleFolderExpanded:g,autoEditBoardId:j,onAutoEditDone:()=>a(null)})}),n.jsx(ie,{visible:v,header:"确认删除",onClose:()=>k(!1),footer:(o==null?void 0:o.type)==="folder"?n.jsxs("div",{className:"project-drawer__delete-dialog-footer",children:[n.jsx(z,{variant:"outline",onClick:()=>k(!1),children:"取消"}),n.jsx(z,{theme:"default",onClick:re,children:"仅删目录"}),n.jsx(z,{theme:"danger",onClick:Me,children:"删除目录及文件"})]}):void 0,onConfirm:(o==null?void 0:o.type)==="board"?He:void 0,confirmBtn:(o==null?void 0:o.type)==="board"?"删除":void 0,cancelBtn:(o==null?void 0:o.type)==="board"?"取消":void 0,children:n.jsxs("p",{children:["确定要删除 ",(o==null?void 0:o.type)==="folder"?"文件夹":"画板",' "',o==null?void 0:o.name,'" 吗?',(o==null?void 0:o.type)==="folder"&&n.jsx("span",{style:{color:"var(--td-text-color-secondary)",display:"block",marginTop:"8px"},children:"仅删目录时,文件夹内的所有内容将被移动到根目录。"})]})}),n.jsx(ie,{visible:B,header:"正在导入",closeOnOverlayClick:!1,closeOnEscKeydown:!1,showOverlay:!0,footer:!1,children:n.jsxs("div",{className:"project-drawer__import-progress",children:[n.jsx(ge,{loading:!0,size:"medium"}),n.jsx("p",{className:"project-drawer__import-message",children:U.message}),n.jsx("div",{className:"project-drawer__import-bar",children:n.jsx("div",{className:"project-drawer__import-bar-fill",style:{width:`${U.progress}%`}})}),n.jsxs("p",{className:"project-drawer__import-percent",children:[Math.round(U.progress),"%"]})]})}),n.jsx(ie,{visible:te,header:"正在导出",closeOnOverlayClick:!1,closeOnEscKeydown:!1,showOverlay:!0,footer:!1,children:n.jsxs("div",{className:"project-drawer__import-progress",children:[n.jsx(ge,{loading:!0,size:"medium"}),n.jsx("p",{className:"project-drawer__import-message",children:J.message}),n.jsx("div",{className:"project-drawer__import-bar",children:n.jsx("div",{className:"project-drawer__import-bar-fill",style:{width:`${J.progress}%`}})}),n.jsxs("p",{className:"project-drawer__import-percent",children:[Math.round(J.progress),"%"]})]})})]})};export{jt as ProjectDrawer};
6
+ ${U(a.id)}`,style:{paddingLeft:F},draggable:!A,onClick:()=>{A||(o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{e(a)},200))},onDragStart:_=>K(_,"board",a.id),onDragEnd:B,onDragOver:_=>q(_,a.id,"board"),onDragLeave:te,onDrop:_=>X(_,a.id,"board",a.folderId),children:[n.jsx("span",{className:"project-drawer-node__expand"}),n.jsx("span",{className:"project-drawer-node__icon",children:n.jsx(Ae,{})}),A?n.jsx(de,{value:H,size:"small",autofocus:!0,onFocus:T,onClick:_=>_.e.stopPropagation(),onChange:_=>c(_),onBlur:()=>R("board",a.id),onKeydown:(_,w)=>{w.e.key==="Enter"?R("board",a.id):w.e.key==="Escape"&&I(null)}}):n.jsx("span",{className:"project-drawer-node__label",onDoubleClick:_=>{_.stopPropagation(),o.current&&(clearTimeout(o.current),o.current=null),W(a.id,a.name)},children:a.name}),n.jsx("div",{className:"project-drawer-node__actions",onClick:_=>_.stopPropagation(),children:n.jsx(we,{options:[{content:"复制",value:"copy",prefixIcon:n.jsx($e,{})},{content:"重命名",value:"rename",prefixIcon:n.jsx(je,{})},{content:"移动到",value:"move",prefixIcon:n.jsx(st,{}),children:V()},{content:"删除",value:"delete",prefixIcon:n.jsx(be,{})}],onClick:_=>{_.value==="copy"?$(a.id):_.value==="rename"?W(a.id,a.name):_.value==="delete"?O("board",a.id,a.name):_.value==="root"?x(a.id,null):typeof _.value=="string"&&_.value!=="move"&&x(a.id,_.value)},children:n.jsx(z,{variant:"text",size:"small",icon:n.jsx(pe,{})})})})]})},a.id)};return n.jsx("div",{className:"project-drawer__tree",children:s.map(m=>m.type==="folder"?ee(m):J(m))})},jt=({isOpen:s=!1,onOpenChange:r,onBeforeSwitch:e,onBoardSwitch:t})=>{const{isLoading:l,tree:p,currentBoard:O,createFolder:$,renameFolder:x,deleteFolder:M,deleteFolderWithContents:P,moveFolder:h,toggleFolderExpanded:g,createBoard:L,renameBoard:I,deleteBoard:H,moveBoard:c,copyBoard:d,switchBoard:C}=Xe(),[y,N]=i.useState(""),[v,k]=i.useState(!1),[o,T]=i.useState(null),[R,W]=i.useState(!1),[V,K]=i.useState(!1),[B,q]=i.useState(!1),[te,X]=i.useState(!1),[U,ee]=i.useState({progress:0,message:""}),[J,m]=i.useState({progress:0,message:""}),[j,a]=i.useState(null),S=i.useRef(null),A=i.useCallback(()=>{r==null||r(!1)},[r]),E=i.useCallback(async f=>{e&&await e();const b=await L({name:oe.DEFAULT_BOARD_NAME,folderId:f||null});if(b){const u=await C(b.id);u&&t&&t(u),a(b.id),Z.success("画板已创建")}},[L,C,e,t]),F=i.useCallback(async f=>{await $({name:oe.DEFAULT_FOLDER_NAME,parentId:f||null})},[$]),_=i.useCallback(async(f,b,u)=>{f==="folder"?await x(b,u):await I(b,u)},[x,I]),w=i.useCallback((f,b,u)=>{T({type:f,id:b,name:u}),k(!0)},[]),re=i.useCallback(async()=>{if(!o||o.type!=="folder")return;await M(o.id)&&Z.success("删除成功"),k(!1),T(null)},[o,M]),Me=i.useCallback(async()=>{if(!o||o.type!=="folder")return;await P(o.id)&&Z.success("删除成功"),k(!1),T(null)},[o,P]),le=i.useCallback((f,b)=>{for(const u of f){if(u.type==="board"&&u.data.id!==b)return u.data;if(u.type==="folder"&&u.children){const D=le(u.children,b);if(D)return D}}return null},[]),He=i.useCallback(async()=>{if(!o||o.type!=="board")return;const f=o.id===(O==null?void 0:O.id);if(await H(o.id)&&(Z.success("删除成功"),f)){const u=le(p,o.id);if(u){e&&await e();const D=await C(u.id);D&&t&&t(D)}}k(!1),T(null)},[o,H,O,p,le,e,C,t]),Ve=i.useCallback(async f=>{await d(f)&&Z.success("画板已复制")},[d]),Re=i.useCallback(async(f,b,u,D)=>{await c(f,b,u,D)},[c]),Te=i.useCallback(async(f,b,u,D)=>{await h(f,b,u,D)||Z.error("无法移动文件夹到其子目录")},[h]),Ze=i.useCallback(async()=>{if(!R)try{W(!0),X(!0),m({progress:0,message:"准备导出..."}),e&&await e();const f=await ce.exportToZip({onProgress:(b,u)=>{m({progress:b,message:u})}});ce.downloadZip(f),Z.success("导出成功")}catch(f){console.error("[ProjectDrawer] Export failed:",f),Z.error(`导出失败: ${f.message}`)}finally{W(!1),X(!1)}},[R,e]),ze=i.useCallback(()=>{var f;(f=S.current)==null||f.click()},[]),We=i.useCallback(async f=>{var u;const b=(u=f.target.files)==null?void 0:u[0];if(b){if(f.target.value="",!b.name.endsWith(".zip")){Z.error("请选择 ZIP 文件");return}q(!0),K(!0),ee({progress:0,message:"准备导入..."});try{e&&await e();const D=await ce.importFromZip(b,{merge:!1,onProgress:(ne,se)=>{ee({progress:ne,message:se})}});D.success?(Z.success(`导入成功:${D.folders} 个文件夹,${D.boards} 个画板,${D.assets} 个素材`),window.location.reload()):(D.errors.length>0&&(Z.warning(`导入完成,但有 ${D.errors.length} 个错误`),console.warn("[ProjectDrawer] Import errors:",D.errors)),window.location.reload())}catch(D){console.error("[ProjectDrawer] Import failed:",D),Z.error(`导入失败: ${D.message}`)}finally{K(!1),q(!1)}}},[e]),Ke=i.useCallback(async f=>{if(f.id===(O==null?void 0:O.id))return;e&&await e();const b=await C(f.id);b&&t&&t(b)},[O,e,t,C]),ue=i.useMemo(()=>{if(!y.trim())return p;const f=y.toLowerCase().trim(),b=u=>{if(u.type==="board")return u.data.name.toLowerCase().includes(f)?u:null;if(u.type==="folder"){const D=u,ne=D.data,se=D.children?D.children.map(b).filter(Ge=>Ge!==null):[];return ne.name.toLowerCase().includes(f)||se.length>0?{...D,children:se}:null}return null};return p.map(b).filter(u=>u!==null)},[p,y]),Be=n.jsxs(n.Fragment,{children:[n.jsx(z,{variant:"text",size:"small",icon:n.jsx(Se,{}),onClick:()=>E(),title:"新建画板"}),n.jsx(z,{variant:"text",size:"small",icon:n.jsx(fe,{}),onClick:()=>F(),title:"新建文件夹"})]}),Ue=n.jsx(de,{placeholder:"搜索...",value:y,onChange:N,prefixIcon:n.jsx(rt,{}),size:"small"}),Je=n.jsxs("div",{className:"project-drawer__footer-actions",children:[n.jsx(z,{variant:"outline",size:"small",icon:n.jsx(at,{}),onClick:ze,disabled:V,title:"从 ZIP 文件导入",children:"导入"}),n.jsx(z,{variant:"outline",size:"small",icon:n.jsx(tt,{}),onClick:Ze,loading:R,title:"导出为 ZIP 文件",children:"导出"}),n.jsx("input",{ref:S,type:"file",accept:".zip",style:{display:"none"},onChange:We})]});return n.jsxs(n.Fragment,{children:[n.jsx(et,{isOpen:s,onClose:A,title:"项目",headerActions:Be,filterSection:Ue,footer:Je,position:"toolbar-right",width:"narrow",storageKey:ut,resizable:!0,className:"project-drawer",contentClassName:"project-drawer__content","data-testid":"project-drawer",children:l?n.jsx("div",{className:"project-drawer__loading",children:"加载中..."}):ue.length===0?n.jsxs("div",{className:"project-drawer__empty",children:[n.jsx("p",{children:"暂无画板"}),n.jsx(z,{size:"small",onClick:()=>E(),children:"创建第一个画板"})]}):n.jsx(mt,{tree:ue,currentBoard:O,onBoardClick:Ke,onCreateBoard:E,onCreateFolder:F,onRename:_,onDelete:w,onCopyBoard:Ve,onMoveBoard:Re,onMoveFolder:Te,toggleFolderExpanded:g,autoEditBoardId:j,onAutoEditDone:()=>a(null)})}),n.jsx(ie,{visible:v,header:"确认删除",onClose:()=>k(!1),footer:(o==null?void 0:o.type)==="folder"?n.jsxs("div",{className:"project-drawer__delete-dialog-footer",children:[n.jsx(z,{variant:"outline",onClick:()=>k(!1),children:"取消"}),n.jsx(z,{theme:"default",onClick:re,children:"仅删目录"}),n.jsx(z,{theme:"danger",onClick:Me,children:"删除目录及文件"})]}):void 0,onConfirm:(o==null?void 0:o.type)==="board"?He:void 0,confirmBtn:(o==null?void 0:o.type)==="board"?"删除":void 0,cancelBtn:(o==null?void 0:o.type)==="board"?"取消":void 0,children:n.jsxs("p",{children:["确定要删除 ",(o==null?void 0:o.type)==="folder"?"文件夹":"画板",' "',o==null?void 0:o.name,'" 吗?',(o==null?void 0:o.type)==="folder"&&n.jsx("span",{style:{color:"var(--td-text-color-secondary)",display:"block",marginTop:"8px"},children:"仅删目录时,文件夹内的所有内容将被移动到根目录。"})]})}),n.jsx(ie,{visible:B,header:"正在导入",closeOnOverlayClick:!1,closeOnEscKeydown:!1,showOverlay:!0,footer:!1,children:n.jsxs("div",{className:"project-drawer__import-progress",children:[n.jsx(ge,{loading:!0,size:"medium"}),n.jsx("p",{className:"project-drawer__import-message",children:U.message}),n.jsx("div",{className:"project-drawer__import-bar",children:n.jsx("div",{className:"project-drawer__import-bar-fill",style:{width:`${U.progress}%`}})}),n.jsxs("p",{className:"project-drawer__import-percent",children:[Math.round(U.progress),"%"]})]})}),n.jsx(ie,{visible:te,header:"正在导出",closeOnOverlayClick:!1,closeOnEscKeydown:!1,showOverlay:!0,footer:!1,children:n.jsxs("div",{className:"project-drawer__import-progress",children:[n.jsx(ge,{loading:!0,size:"medium"}),n.jsx("p",{className:"project-drawer__import-message",children:J.message}),n.jsx("div",{className:"project-drawer__import-bar",children:n.jsx("div",{className:"project-drawer__import-bar-fill",style:{width:`${J.progress}%`}})}),n.jsxs("p",{className:"project-drawer__import-percent",children:[Math.round(J.progress),"%"]})]})})]})};export{jt as ProjectDrawer};
@@ -1 +1 @@
1
- import{aJ as P}from"./index-Y-mRUgjd.js";function _(n){if(n)throw n}var w,b;function v(){if(b)return w;b=1;var n=Object.prototype.hasOwnProperty,l=Object.prototype.toString,s=Object.defineProperty,y=Object.getOwnPropertyDescriptor,r=function(t){return typeof Array.isArray=="function"?Array.isArray(t):l.call(t)==="[object Array]"},p=function(t){if(!t||l.call(t)!=="[object Object]")return!1;var e=n.call(t,"constructor"),f=t.constructor&&t.constructor.prototype&&n.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!e&&!f)return!1;var c;for(c in t);return typeof c>"u"||n.call(t,c)},i=function(t,e){s&&e.name==="__proto__"?s(t,e.name,{enumerable:!0,configurable:!0,value:e.newValue,writable:!0}):t[e.name]=e.newValue},u=function(t,e){if(e==="__proto__")if(n.call(t,e)){if(y)return y(t,e).value}else return;return t[e]};return w=function o(){var t,e,f,c,d,g,a=arguments[0],h=1,x=arguments.length,O=!1;for(typeof a=="boolean"&&(O=a,a=arguments[1]||{},h=2),(a==null||typeof a!="object"&&typeof a!="function")&&(a={});h<x;++h)if(t=arguments[h],t!=null)for(e in t)f=u(a,e),c=u(t,e),a!==c&&(O&&c&&(p(c)||(d=r(c)))?(d?(d=!1,g=f&&r(f)?f:[]):g=f&&p(f)?f:{},i(a,{name:e,newValue:o(O,g,c)})):typeof c<"u"&&i(a,{name:e,newValue:c}));return a},w}var m=v();const j=P(m);function S(n){if(typeof n!="object"||n===null)return!1;const l=Object.getPrototypeOf(n);return(l===null||l===Object.prototype||Object.getPrototypeOf(l)===null)&&!(Symbol.toStringTag in n)&&!(Symbol.iterator in n)}function V(){const n=[],l={run:s,use:y};return l;function s(...r){let p=-1;const i=r.pop();if(typeof i!="function")throw new TypeError("Expected function as last argument, not "+i);u(null,...r);function u(o,...t){const e=n[++p];let f=-1;if(o){i(o);return}for(;++f<r.length;)(t[f]===null||t[f]===void 0)&&(t[f]=r[f]);r=t,e?E(e,u)(...t):i(null,...t)}}function y(r){if(typeof r!="function")throw new TypeError("Expected `middelware` to be a function, not "+r);return n.push(r),l}}function E(n,l){let s;return y;function y(...i){const u=n.length>i.length;let o;u&&i.push(r);try{o=n.apply(this,i)}catch(t){const e=t;if(u&&s)throw e;return r(e)}u||(o&&o.then&&typeof o.then=="function"?o.then(p,r):o instanceof Error?r(o):p(o))}function r(i,...u){s||(s=!0,l(i,...u))}function p(i){r(null,i)}}export{_ as b,j as e,S as i,V as t};
1
+ import{aJ as P}from"./index-CvrZFlag.js";function _(n){if(n)throw n}var w,b;function v(){if(b)return w;b=1;var n=Object.prototype.hasOwnProperty,l=Object.prototype.toString,s=Object.defineProperty,y=Object.getOwnPropertyDescriptor,r=function(t){return typeof Array.isArray=="function"?Array.isArray(t):l.call(t)==="[object Array]"},p=function(t){if(!t||l.call(t)!=="[object Object]")return!1;var e=n.call(t,"constructor"),f=t.constructor&&t.constructor.prototype&&n.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!e&&!f)return!1;var c;for(c in t);return typeof c>"u"||n.call(t,c)},i=function(t,e){s&&e.name==="__proto__"?s(t,e.name,{enumerable:!0,configurable:!0,value:e.newValue,writable:!0}):t[e.name]=e.newValue},u=function(t,e){if(e==="__proto__")if(n.call(t,e)){if(y)return y(t,e).value}else return;return t[e]};return w=function o(){var t,e,f,c,d,g,a=arguments[0],h=1,x=arguments.length,O=!1;for(typeof a=="boolean"&&(O=a,a=arguments[1]||{},h=2),(a==null||typeof a!="object"&&typeof a!="function")&&(a={});h<x;++h)if(t=arguments[h],t!=null)for(e in t)f=u(a,e),c=u(t,e),a!==c&&(O&&c&&(p(c)||(d=r(c)))?(d?(d=!1,g=f&&r(f)?f:[]):g=f&&p(f)?f:{},i(a,{name:e,newValue:o(O,g,c)})):typeof c<"u"&&i(a,{name:e,newValue:c}));return a},w}var m=v();const j=P(m);function S(n){if(typeof n!="object"||n===null)return!1;const l=Object.getPrototypeOf(n);return(l===null||l===Object.prototype||Object.getPrototypeOf(l)===null)&&!(Symbol.toStringTag in n)&&!(Symbol.iterator in n)}function V(){const n=[],l={run:s,use:y};return l;function s(...r){let p=-1;const i=r.pop();if(typeof i!="function")throw new TypeError("Expected function as last argument, not "+i);u(null,...r);function u(o,...t){const e=n[++p];let f=-1;if(o){i(o);return}for(;++f<r.length;)(t[f]===null||t[f]===void 0)&&(t[f]=r[f]);r=t,e?E(e,u)(...t):i(null,...t)}}function y(r){if(typeof r!="function")throw new TypeError("Expected `middelware` to be a function, not "+r);return n.push(r),l}}function E(n,l){let s;return y;function y(...i){const u=n.length>i.length;let o;u&&i.push(r);try{o=n.apply(this,i)}catch(t){const e=t;if(u&&s)throw e;return r(e)}u||(o&&o.then&&typeof o.then=="function"?o.then(p,r):o instanceof Error?r(o):p(o))}function r(i,...u){s||(s=!0,l(i,...u))}function p(i){r(null,i)}}export{_ as b,j as e,S as i,V as t};
@@ -1,4 +1,4 @@
1
- import{l as U,D as Y,e as M}from"./index-Dj4_g4Si.js";import"./index-Y-mRUgjd.js";import"./isEmpty-CRzPUjzr.js";var O=(function(){var a=function(u,t,e,n){for(e=e||{},n=u.length;n--;e[u[n]]=t);return e},f=[6,9,10],m={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(t,e,n,s,r,i,d){switch(i.length-1,r){case 1:return s;case 4:break;case 6:s.setInfo(!0);break}},table:[{3:1,4:[1,2]},{1:[3]},a(f,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},a(f,[2,3]),a(f,[2,4]),a(f,[2,5]),a(f,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(e.recoverable)this.trace(t);else{var n=new Error(t);throw n.hash=e,n}},parse:function(t){var e=this,n=[0],s=[],r=[null],i=[],d=this.table,P="",v=0,L=0,N=2,T=1,R=i.slice.call(arguments,1),o=Object.create(this.lexer),p={yy:{}};for(var E in this.yy)Object.prototype.hasOwnProperty.call(this.yy,E)&&(p.yy[E]=this.yy[E]);o.setInput(t,p.yy),p.yy.lexer=o,p.yy.parser=this,typeof o.yylloc>"u"&&(o.yylloc={});var I=o.yylloc;i.push(I);var z=o.options&&o.options.ranges;typeof p.yy.parseError=="function"?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function D(){var y;return y=s.pop()||o.lex()||T,typeof y!="number"&&(y instanceof Array&&(s=y,y=s.pop()),y=e.symbols_[y]||y),y}for(var l,g,h,w,_={},b,c,F,S;;){if(g=n[n.length-1],this.defaultActions[g]?h=this.defaultActions[g]:((l===null||typeof l>"u")&&(l=D()),h=d[g]&&d[g][l]),typeof h>"u"||!h.length||!h[0]){var A="";S=[];for(b in d[g])this.terminals_[b]&&b>N&&S.push("'"+this.terminals_[b]+"'");o.showPosition?A="Parse error on line "+(v+1)+`:
1
+ import{l as U,D as Y,e as M}from"./index-9ACcVAdm.js";import"./index-CvrZFlag.js";import"./isEmpty-CRXO1bLi.js";var O=(function(){var a=function(u,t,e,n){for(e=e||{},n=u.length;n--;e[u[n]]=t);return e},f=[6,9,10],m={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(t,e,n,s,r,i,d){switch(i.length-1,r){case 1:return s;case 4:break;case 6:s.setInfo(!0);break}},table:[{3:1,4:[1,2]},{1:[3]},a(f,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},a(f,[2,3]),a(f,[2,4]),a(f,[2,5]),a(f,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(e.recoverable)this.trace(t);else{var n=new Error(t);throw n.hash=e,n}},parse:function(t){var e=this,n=[0],s=[],r=[null],i=[],d=this.table,P="",v=0,L=0,N=2,T=1,R=i.slice.call(arguments,1),o=Object.create(this.lexer),p={yy:{}};for(var E in this.yy)Object.prototype.hasOwnProperty.call(this.yy,E)&&(p.yy[E]=this.yy[E]);o.setInput(t,p.yy),p.yy.lexer=o,p.yy.parser=this,typeof o.yylloc>"u"&&(o.yylloc={});var I=o.yylloc;i.push(I);var z=o.options&&o.options.ranges;typeof p.yy.parseError=="function"?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function D(){var y;return y=s.pop()||o.lex()||T,typeof y!="number"&&(y instanceof Array&&(s=y,y=s.pop()),y=e.symbols_[y]||y),y}for(var l,g,h,w,_={},b,c,F,S;;){if(g=n[n.length-1],this.defaultActions[g]?h=this.defaultActions[g]:((l===null||typeof l>"u")&&(l=D()),h=d[g]&&d[g][l]),typeof h>"u"||!h.length||!h[0]){var A="";S=[];for(b in d[g])this.terminals_[b]&&b>N&&S.push("'"+this.terminals_[b]+"'");o.showPosition?A="Parse error on line "+(v+1)+`:
2
2
  `+o.showPosition()+`
3
3
  Expecting `+S.join(", ")+", got '"+(this.terminals_[l]||l)+"'":A="Parse error on line "+(v+1)+": Unexpected "+(l==T?"end of input":"'"+(this.terminals_[l]||l)+"'"),this.parseError(A,{text:o.match,token:this.terminals_[l]||l,line:o.yylineno,loc:I,expected:S})}if(h[0]instanceof Array&&h.length>1)throw new Error("Parse Error: multiple actions possible at state: "+g+", token: "+l);switch(h[0]){case 1:n.push(l),r.push(o.yytext),i.push(o.yylloc),n.push(h[1]),l=null,L=o.yyleng,P=o.yytext,v=o.yylineno,I=o.yylloc;break;case 2:if(c=this.productions_[h[1]][1],_.$=r[r.length-c],_._$={first_line:i[i.length-(c||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(c||1)].first_column,last_column:i[i.length-1].last_column},z&&(_._$.range=[i[i.length-(c||1)].range[0],i[i.length-1].range[1]]),w=this.performAction.apply(_,[P,L,v,p.yy,h[1],r,i].concat(R)),typeof w<"u")return w;c&&(n=n.slice(0,-1*c*2),r=r.slice(0,-1*c),i=i.slice(0,-1*c)),n.push(this.productions_[h[1]][0]),r.push(_.$),i.push(_._$),F=d[n[n.length-2]][n[n.length-1]],n.push(F);break;case 3:return!0}}return!0}},k=(function(){var u={EOF:1,parseError:function(e,n){if(this.yy.parser)this.yy.parser.parseError(e,n);else throw new Error(e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,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 t=this._input[0];this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t;var e=t.match(/(?:\r\n?|\n).*/g);return e?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var s=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),n.length-1&&(this.yylineno-=n.length-1);var r=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:n?(n.length===s.length?this.yylloc.first_column:0)+s[s.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),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(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+`
@@ -1,4 +1,4 @@
1
- import{l as Y,B,e as D}from"./mermaid.core-mIRDwmS-.js";import"./index-Y-mRUgjd.js";var O=(function(){var a=function(u,t,e,n){for(e=e||{},n=u.length;n--;e[u[n]]=t);return e},f=[6,9,10],m={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(t,e,n,s,r,i,d){switch(i.length-1,r){case 1:return s;case 4:break;case 6:s.setInfo(!0);break}},table:[{3:1,4:[1,2]},{1:[3]},a(f,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},a(f,[2,3]),a(f,[2,4]),a(f,[2,5]),a(f,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(e.recoverable)this.trace(t);else{var n=new Error(t);throw n.hash=e,n}},parse:function(t){var e=this,n=[0],s=[],r=[null],i=[],d=this.table,P="",v=0,L=0,N=2,T=1,R=i.slice.call(arguments,1),o=Object.create(this.lexer),p={yy:{}};for(var E in this.yy)Object.prototype.hasOwnProperty.call(this.yy,E)&&(p.yy[E]=this.yy[E]);o.setInput(t,p.yy),p.yy.lexer=o,p.yy.parser=this,typeof o.yylloc>"u"&&(o.yylloc={});var I=o.yylloc;i.push(I);var z=o.options&&o.options.ranges;typeof p.yy.parseError=="function"?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function U(){var y;return y=s.pop()||o.lex()||T,typeof y!="number"&&(y instanceof Array&&(s=y,y=s.pop()),y=e.symbols_[y]||y),y}for(var l,g,h,w,_={},b,c,F,S;;){if(g=n[n.length-1],this.defaultActions[g]?h=this.defaultActions[g]:((l===null||typeof l>"u")&&(l=U()),h=d[g]&&d[g][l]),typeof h>"u"||!h.length||!h[0]){var A="";S=[];for(b in d[g])this.terminals_[b]&&b>N&&S.push("'"+this.terminals_[b]+"'");o.showPosition?A="Parse error on line "+(v+1)+`:
1
+ import{l as Y,B,e as D}from"./mermaid.core-yVPD7ieH.js";import"./index-CvrZFlag.js";var O=(function(){var a=function(u,t,e,n){for(e=e||{},n=u.length;n--;e[u[n]]=t);return e},f=[6,9,10],m={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(t,e,n,s,r,i,d){switch(i.length-1,r){case 1:return s;case 4:break;case 6:s.setInfo(!0);break}},table:[{3:1,4:[1,2]},{1:[3]},a(f,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},a(f,[2,3]),a(f,[2,4]),a(f,[2,5]),a(f,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(e.recoverable)this.trace(t);else{var n=new Error(t);throw n.hash=e,n}},parse:function(t){var e=this,n=[0],s=[],r=[null],i=[],d=this.table,P="",v=0,L=0,N=2,T=1,R=i.slice.call(arguments,1),o=Object.create(this.lexer),p={yy:{}};for(var E in this.yy)Object.prototype.hasOwnProperty.call(this.yy,E)&&(p.yy[E]=this.yy[E]);o.setInput(t,p.yy),p.yy.lexer=o,p.yy.parser=this,typeof o.yylloc>"u"&&(o.yylloc={});var I=o.yylloc;i.push(I);var z=o.options&&o.options.ranges;typeof p.yy.parseError=="function"?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function U(){var y;return y=s.pop()||o.lex()||T,typeof y!="number"&&(y instanceof Array&&(s=y,y=s.pop()),y=e.symbols_[y]||y),y}for(var l,g,h,w,_={},b,c,F,S;;){if(g=n[n.length-1],this.defaultActions[g]?h=this.defaultActions[g]:((l===null||typeof l>"u")&&(l=U()),h=d[g]&&d[g][l]),typeof h>"u"||!h.length||!h[0]){var A="";S=[];for(b in d[g])this.terminals_[b]&&b>N&&S.push("'"+this.terminals_[b]+"'");o.showPosition?A="Parse error on line "+(v+1)+`:
2
2
  `+o.showPosition()+`
3
3
  Expecting `+S.join(", ")+", got '"+(this.terminals_[l]||l)+"'":A="Parse error on line "+(v+1)+": Unexpected "+(l==T?"end of input":"'"+(this.terminals_[l]||l)+"'"),this.parseError(A,{text:o.match,token:this.terminals_[l]||l,line:o.yylineno,loc:I,expected:S})}if(h[0]instanceof Array&&h.length>1)throw new Error("Parse Error: multiple actions possible at state: "+g+", token: "+l);switch(h[0]){case 1:n.push(l),r.push(o.yytext),i.push(o.yylloc),n.push(h[1]),l=null,L=o.yyleng,P=o.yytext,v=o.yylineno,I=o.yylloc;break;case 2:if(c=this.productions_[h[1]][1],_.$=r[r.length-c],_._$={first_line:i[i.length-(c||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(c||1)].first_column,last_column:i[i.length-1].last_column},z&&(_._$.range=[i[i.length-(c||1)].range[0],i[i.length-1].range[1]]),w=this.performAction.apply(_,[P,L,v,p.yy,h[1],r,i].concat(R)),typeof w<"u")return w;c&&(n=n.slice(0,-1*c*2),r=r.slice(0,-1*c),i=i.slice(0,-1*c)),n.push(this.productions_[h[1]][0]),r.push(_.$),i.push(_._$),F=d[n[n.length-2]][n[n.length-1]],n.push(F);break;case 3:return!0}}return!0}},k=(function(){var u={EOF:1,parseError:function(e,n){if(this.yy.parser)this.yy.parser.parseError(e,n);else throw new Error(e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,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 t=this._input[0];this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t;var e=t.match(/(?:\r\n?|\n).*/g);return e?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var s=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),n.length-1&&(this.yylineno-=n.length-1);var r=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:n?(n.length===s.length?this.yylloc.first_column:0)+s[s.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),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(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+`
@@ -1 +1 @@
1
- import{s as l,t as d,n as T,o as k,p as y,v as h}from"./index-Y-mRUgjd.js";function f(){var e;return k.get().imageModelName||((e=y[0])==null?void 0:e.id)||"gemini-2.5-flash-image-vip"}function M(t,e){const r=h.zh;return r(t,e)}function A(t,e){const{theme:r,imageCount:u=l.imageCount,imageSize:o="16x9",referenceImages:s,model:I}=t;if(!r||typeof r!="string")return{success:!1,error:"缺少必填参数 theme(主题描述)",type:"error"};const n=Math.min(Math.max(1,u),16),m=M(r,n),c=I||f(),i=s==null?void 0:s.map((a,g)=>({type:"url",url:a,name:`reference-${g+1}`}));try{let a;if(e!=null&&e.retryTaskId){if(d.retryTask(e.retryTaskId),a=d.getTask(e.retryTaskId),!a)throw new Error(`重试任务不存在: ${e.retryTaskId}`)}else a=d.createTask({prompt:m,size:o,model:c,uploadedImages:i&&i.length>0?i:void 0,isInspirationBoard:!0,inspirationBoardImageCount:n,inspirationBoardLayoutStyle:"inspiration-board",originalTheme:r,batchId:e==null?void 0:e.batchId,globalIndex:(e==null?void 0:e.globalIndex)||1,autoInsertToCanvas:!0},T.IMAGE);return{success:!0,data:{taskId:a.id,theme:r,imageCount:n,prompt:m.substring(0,100)+"..."},type:"image",taskId:a.id,task:a}}catch(a){return console.error("[InspirationBoard] Failed to create task:",a),{success:!1,error:a.message||"创建灵感图任务失败",type:"error"}}}export{A as createInspirationBoardTask};
1
+ import{s as l,t as d,n as T,o as k,p as y,v as h}from"./index-CvrZFlag.js";function f(){var e;return k.get().imageModelName||((e=y[0])==null?void 0:e.id)||"gemini-2.5-flash-image-vip"}function M(t,e){const r=h.zh;return r(t,e)}function A(t,e){const{theme:r,imageCount:u=l.imageCount,imageSize:o="16x9",referenceImages:s,model:I}=t;if(!r||typeof r!="string")return{success:!1,error:"缺少必填参数 theme(主题描述)",type:"error"};const n=Math.min(Math.max(1,u),16),m=M(r,n),c=I||f(),i=s==null?void 0:s.map((a,g)=>({type:"url",url:a,name:`reference-${g+1}`}));try{let a;if(e!=null&&e.retryTaskId){if(d.retryTask(e.retryTaskId),a=d.getTask(e.retryTaskId),!a)throw new Error(`重试任务不存在: ${e.retryTaskId}`)}else a=d.createTask({prompt:m,size:o,model:c,uploadedImages:i&&i.length>0?i:void 0,isInspirationBoard:!0,inspirationBoardImageCount:n,inspirationBoardLayoutStyle:"inspiration-board",originalTheme:r,batchId:e==null?void 0:e.batchId,globalIndex:(e==null?void 0:e.globalIndex)||1,autoInsertToCanvas:!0},T.IMAGE);return{success:!0,data:{taskId:a.id,theme:r,imageCount:n,prompt:m.substring(0,100)+"..."},type:"image",taskId:a.id,task:a}}catch(a){return console.error("[InspirationBoard] Failed to create task:",a),{success:!1,error:a.message||"创建灵感图任务失败",type:"error"}}}export{A as createInspirationBoardTask};
@@ -1 +1 @@
1
- import{c as i,d as e,e as o,f as n,g as f,h as a,j as p,k as y}from"./index-Y-mRUgjd.js";var g="[object Map]",c="[object Set]",b=Object.prototype,h=b.hasOwnProperty;function m(r){if(r==null)return!0;if(i(r)&&(e(r)||typeof r=="string"||typeof r.splice=="function"||o(r)||n(r)||f(r)))return!r.length;var t=a(r);if(t==g||t==c)return!r.size;if(p(r))return!y(r).length;for(var s in r)if(h.call(r,s))return!1;return!0}export{m as i};
1
+ import{c as i,d as e,e as o,f as n,g as f,h as a,j as p,k as y}from"./index-CvrZFlag.js";var g="[object Map]",c="[object Set]",b=Object.prototype,h=b.hasOwnProperty;function m(r){if(r==null)return!0;if(i(r)&&(e(r)||typeof r=="string"||typeof r.splice=="function"||o(r)||n(r)||f(r)))return!r.length;var t=a(r);if(t==g||t==c)return!r.size;if(p(r))return!y(r).length;for(var s in r)if(h.call(r,s))return!1;return!0}export{m as i};
@@ -1,4 +1,4 @@
1
- import{a as yt,s as ft,b as dt,c as pt,o as gt,p as mt,g as I,d as H,e as xt,r as kt}from"./index-Dj4_g4Si.js";import{a as _t,g as it,f as bt,d as vt}from"./svgDrawCommon-08f97a94-C0x85f0W.js";import{a as Q}from"./arc-BaS7Wfdw.js";import"./index-Y-mRUgjd.js";import"./isEmpty-CRzPUjzr.js";import"./path-CbwjOpE9.js";var X=(function(){var t=function(p,s,r,a){for(r=r||{},a=p.length;a--;r[p[a]]=s);return r},e=[6,8,10,11,12,14,16,17,18],i=[1,9],l=[1,10],n=[1,11],h=[1,12],c=[1,13],f=[1,14],y={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:function(s,r,a,u,d,o,w){var k=o.length-1;switch(d){case 1:return o[k-1];case 2:this.$=[];break;case 3:o[k-1].push(o[k]),this.$=o[k-1];break;case 4:case 5:this.$=o[k];break;case 6:case 7:this.$=[];break;case 8:u.setDiagramTitle(o[k].substr(6)),this.$=o[k].substr(6);break;case 9:this.$=o[k].trim(),u.setAccTitle(this.$);break;case 10:case 11:this.$=o[k].trim(),u.setAccDescription(this.$);break;case 12:u.addSection(o[k].substr(8)),this.$=o[k].substr(8);break;case 13:u.addTask(o[k-1],o[k]),this.$="task";break}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:i,12:l,14:n,16:h,17:c,18:f},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:i,12:l,14:n,16:h,17:c,18:f},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:function(s,r){if(r.recoverable)this.trace(s);else{var a=new Error(s);throw a.hash=r,a}},parse:function(s){var r=this,a=[0],u=[],d=[null],o=[],w=this.table,k="",R=0,Z=0,lt=2,J=1,ct=o.slice.call(arguments,1),x=Object.create(this.lexer),S={yy:{}};for(var z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,z)&&(S.yy[z]=this.yy[z]);x.setInput(s,S.yy),S.yy.lexer=x,S.yy.parser=this,typeof x.yylloc>"u"&&(x.yylloc={});var Y=x.yylloc;o.push(Y);var ht=x.options&&x.options.ranges;typeof S.yy.parseError=="function"?this.parseError=S.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ut(){var T;return T=u.pop()||x.lex()||J,typeof T!="number"&&(T instanceof Array&&(u=T,T=u.pop()),T=r.symbols_[T]||T),T}for(var _,E,b,O,A={},N,$,K,B;;){if(E=a[a.length-1],this.defaultActions[E]?b=this.defaultActions[E]:((_===null||typeof _>"u")&&(_=ut()),b=w[E]&&w[E][_]),typeof b>"u"||!b.length||!b[0]){var q="";B=[];for(N in w[E])this.terminals_[N]&&N>lt&&B.push("'"+this.terminals_[N]+"'");x.showPosition?q="Parse error on line "+(R+1)+`:
1
+ import{a as yt,s as ft,b as dt,c as pt,o as gt,p as mt,g as I,d as H,e as xt,r as kt}from"./index-9ACcVAdm.js";import{a as _t,g as it,f as bt,d as vt}from"./svgDrawCommon-08f97a94-CzdMcmjT.js";import{a as Q}from"./arc-Ch5MOiK9.js";import"./index-CvrZFlag.js";import"./isEmpty-CRXO1bLi.js";import"./path-CbwjOpE9.js";var X=(function(){var t=function(p,s,r,a){for(r=r||{},a=p.length;a--;r[p[a]]=s);return r},e=[6,8,10,11,12,14,16,17,18],i=[1,9],l=[1,10],n=[1,11],h=[1,12],c=[1,13],f=[1,14],y={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:function(s,r,a,u,d,o,w){var k=o.length-1;switch(d){case 1:return o[k-1];case 2:this.$=[];break;case 3:o[k-1].push(o[k]),this.$=o[k-1];break;case 4:case 5:this.$=o[k];break;case 6:case 7:this.$=[];break;case 8:u.setDiagramTitle(o[k].substr(6)),this.$=o[k].substr(6);break;case 9:this.$=o[k].trim(),u.setAccTitle(this.$);break;case 10:case 11:this.$=o[k].trim(),u.setAccDescription(this.$);break;case 12:u.addSection(o[k].substr(8)),this.$=o[k].substr(8);break;case 13:u.addTask(o[k-1],o[k]),this.$="task";break}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:i,12:l,14:n,16:h,17:c,18:f},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:i,12:l,14:n,16:h,17:c,18:f},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:function(s,r){if(r.recoverable)this.trace(s);else{var a=new Error(s);throw a.hash=r,a}},parse:function(s){var r=this,a=[0],u=[],d=[null],o=[],w=this.table,k="",R=0,Z=0,lt=2,J=1,ct=o.slice.call(arguments,1),x=Object.create(this.lexer),S={yy:{}};for(var z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,z)&&(S.yy[z]=this.yy[z]);x.setInput(s,S.yy),S.yy.lexer=x,S.yy.parser=this,typeof x.yylloc>"u"&&(x.yylloc={});var Y=x.yylloc;o.push(Y);var ht=x.options&&x.options.ranges;typeof S.yy.parseError=="function"?this.parseError=S.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ut(){var T;return T=u.pop()||x.lex()||J,typeof T!="number"&&(T instanceof Array&&(u=T,T=u.pop()),T=r.symbols_[T]||T),T}for(var _,E,b,O,A={},N,$,K,B;;){if(E=a[a.length-1],this.defaultActions[E]?b=this.defaultActions[E]:((_===null||typeof _>"u")&&(_=ut()),b=w[E]&&w[E][_]),typeof b>"u"||!b.length||!b[0]){var q="";B=[];for(N in w[E])this.terminals_[N]&&N>lt&&B.push("'"+this.terminals_[N]+"'");x.showPosition?q="Parse error on line "+(R+1)+`:
2
2
  `+x.showPosition()+`
3
3
  Expecting `+B.join(", ")+", got '"+(this.terminals_[_]||_)+"'":q="Parse error on line "+(R+1)+": Unexpected "+(_==J?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(q,{text:x.match,token:this.terminals_[_]||_,line:x.yylineno,loc:Y,expected:B})}if(b[0]instanceof Array&&b.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+_);switch(b[0]){case 1:a.push(_),d.push(x.yytext),o.push(x.yylloc),a.push(b[1]),_=null,Z=x.yyleng,k=x.yytext,R=x.yylineno,Y=x.yylloc;break;case 2:if($=this.productions_[b[1]][1],A.$=d[d.length-$],A._$={first_line:o[o.length-($||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-($||1)].first_column,last_column:o[o.length-1].last_column},ht&&(A._$.range=[o[o.length-($||1)].range[0],o[o.length-1].range[1]]),O=this.performAction.apply(A,[k,Z,R,S.yy,b[1],d,o].concat(ct)),typeof O<"u")return O;$&&(a=a.slice(0,-1*$*2),d=d.slice(0,-1*$),o=o.slice(0,-1*$)),a.push(this.productions_[b[1]][0]),d.push(A.$),o.push(A._$),K=w[a[a.length-2]][a[a.length-1]],a.push(K);break;case 3:return!0}}return!0}},m=(function(){var p={EOF:1,parseError:function(r,a){if(this.yy.parser)this.yy.parser.parseError(r,a);else throw new Error(r)},setInput:function(s,r){return this.yy=r||this.yy||{},this._input=s,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 s=this._input[0];this.yytext+=s,this.yyleng++,this.offset++,this.match+=s,this.matched+=s;var r=s.match(/(?:\r\n?|\n).*/g);return r?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),s},unput:function(s){var r=s.length,a=s.split(/(?:\r\n?|\n)/g);this._input=s+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-r),this.offset-=r;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),a.length-1&&(this.yylineno-=a.length-1);var d=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:a?(a.length===u.length?this.yylloc.first_column:0)+u[u.length-a.length].length-a[0].length:this.yylloc.first_column-r},this.options.ranges&&(this.yylloc.range=[d[0],d[0]+this.yyleng-r]),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(s){this.unput(this.match.slice(s))},pastInput:function(){var s=this.matched.substr(0,this.matched.length-this.match.length);return(s.length>20?"...":"")+s.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var s=this.match;return s.length<20&&(s+=this._input.substr(0,20-s.length)),(s.substr(0,20)+(s.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var s=this.pastInput(),r=new Array(s.length+1).join("-");return s+this.upcomingInput()+`
@@ -1,4 +1,4 @@
1
- import{a as yt,s as ft,b as dt,c as pt,o as gt,p as mt,g as I,d as H,e as xt,r as kt}from"./mermaid.core-mIRDwmS-.js";import{a as _t,g as it,f as bt,d as vt}from"./svgDrawCommon-08f97a94-CaM6o6f6.js";import{a as Q}from"./arc-CK8n3maf.js";import"./index-Y-mRUgjd.js";import"./path-CY0bYimO.js";var X=(function(){var t=function(p,s,r,a){for(r=r||{},a=p.length;a--;r[p[a]]=s);return r},e=[6,8,10,11,12,14,16,17,18],i=[1,9],l=[1,10],n=[1,11],h=[1,12],c=[1,13],f=[1,14],y={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:function(s,r,a,u,d,o,w){var k=o.length-1;switch(d){case 1:return o[k-1];case 2:this.$=[];break;case 3:o[k-1].push(o[k]),this.$=o[k-1];break;case 4:case 5:this.$=o[k];break;case 6:case 7:this.$=[];break;case 8:u.setDiagramTitle(o[k].substr(6)),this.$=o[k].substr(6);break;case 9:this.$=o[k].trim(),u.setAccTitle(this.$);break;case 10:case 11:this.$=o[k].trim(),u.setAccDescription(this.$);break;case 12:u.addSection(o[k].substr(8)),this.$=o[k].substr(8);break;case 13:u.addTask(o[k-1],o[k]),this.$="task";break}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:i,12:l,14:n,16:h,17:c,18:f},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:i,12:l,14:n,16:h,17:c,18:f},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:function(s,r){if(r.recoverable)this.trace(s);else{var a=new Error(s);throw a.hash=r,a}},parse:function(s){var r=this,a=[0],u=[],d=[null],o=[],w=this.table,k="",R=0,Z=0,lt=2,J=1,ct=o.slice.call(arguments,1),x=Object.create(this.lexer),S={yy:{}};for(var z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,z)&&(S.yy[z]=this.yy[z]);x.setInput(s,S.yy),S.yy.lexer=x,S.yy.parser=this,typeof x.yylloc>"u"&&(x.yylloc={});var Y=x.yylloc;o.push(Y);var ht=x.options&&x.options.ranges;typeof S.yy.parseError=="function"?this.parseError=S.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ut(){var T;return T=u.pop()||x.lex()||J,typeof T!="number"&&(T instanceof Array&&(u=T,T=u.pop()),T=r.symbols_[T]||T),T}for(var _,E,b,O,A={},N,$,K,B;;){if(E=a[a.length-1],this.defaultActions[E]?b=this.defaultActions[E]:((_===null||typeof _>"u")&&(_=ut()),b=w[E]&&w[E][_]),typeof b>"u"||!b.length||!b[0]){var q="";B=[];for(N in w[E])this.terminals_[N]&&N>lt&&B.push("'"+this.terminals_[N]+"'");x.showPosition?q="Parse error on line "+(R+1)+`:
1
+ import{a as yt,s as ft,b as dt,c as pt,o as gt,p as mt,g as I,d as H,e as xt,r as kt}from"./mermaid.core-yVPD7ieH.js";import{a as _t,g as it,f as bt,d as vt}from"./svgDrawCommon-08f97a94-DfziZaZJ.js";import{a as Q}from"./arc-CMg9c-1-.js";import"./index-CvrZFlag.js";import"./path-CY0bYimO.js";var X=(function(){var t=function(p,s,r,a){for(r=r||{},a=p.length;a--;r[p[a]]=s);return r},e=[6,8,10,11,12,14,16,17,18],i=[1,9],l=[1,10],n=[1,11],h=[1,12],c=[1,13],f=[1,14],y={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:function(s,r,a,u,d,o,w){var k=o.length-1;switch(d){case 1:return o[k-1];case 2:this.$=[];break;case 3:o[k-1].push(o[k]),this.$=o[k-1];break;case 4:case 5:this.$=o[k];break;case 6:case 7:this.$=[];break;case 8:u.setDiagramTitle(o[k].substr(6)),this.$=o[k].substr(6);break;case 9:this.$=o[k].trim(),u.setAccTitle(this.$);break;case 10:case 11:this.$=o[k].trim(),u.setAccDescription(this.$);break;case 12:u.addSection(o[k].substr(8)),this.$=o[k].substr(8);break;case 13:u.addTask(o[k-1],o[k]),this.$="task";break}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:i,12:l,14:n,16:h,17:c,18:f},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:i,12:l,14:n,16:h,17:c,18:f},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:function(s,r){if(r.recoverable)this.trace(s);else{var a=new Error(s);throw a.hash=r,a}},parse:function(s){var r=this,a=[0],u=[],d=[null],o=[],w=this.table,k="",R=0,Z=0,lt=2,J=1,ct=o.slice.call(arguments,1),x=Object.create(this.lexer),S={yy:{}};for(var z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,z)&&(S.yy[z]=this.yy[z]);x.setInput(s,S.yy),S.yy.lexer=x,S.yy.parser=this,typeof x.yylloc>"u"&&(x.yylloc={});var Y=x.yylloc;o.push(Y);var ht=x.options&&x.options.ranges;typeof S.yy.parseError=="function"?this.parseError=S.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ut(){var T;return T=u.pop()||x.lex()||J,typeof T!="number"&&(T instanceof Array&&(u=T,T=u.pop()),T=r.symbols_[T]||T),T}for(var _,E,b,O,A={},N,$,K,B;;){if(E=a[a.length-1],this.defaultActions[E]?b=this.defaultActions[E]:((_===null||typeof _>"u")&&(_=ut()),b=w[E]&&w[E][_]),typeof b>"u"||!b.length||!b[0]){var q="";B=[];for(N in w[E])this.terminals_[N]&&N>lt&&B.push("'"+this.terminals_[N]+"'");x.showPosition?q="Parse error on line "+(R+1)+`:
2
2
  `+x.showPosition()+`
3
3
  Expecting `+B.join(", ")+", got '"+(this.terminals_[_]||_)+"'":q="Parse error on line "+(R+1)+": Unexpected "+(_==J?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(q,{text:x.match,token:this.terminals_[_]||_,line:x.yylineno,loc:Y,expected:B})}if(b[0]instanceof Array&&b.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+_);switch(b[0]){case 1:a.push(_),d.push(x.yytext),o.push(x.yylloc),a.push(b[1]),_=null,Z=x.yyleng,k=x.yytext,R=x.yylineno,Y=x.yylloc;break;case 2:if($=this.productions_[b[1]][1],A.$=d[d.length-$],A._$={first_line:o[o.length-($||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-($||1)].first_column,last_column:o[o.length-1].last_column},ht&&(A._$.range=[o[o.length-($||1)].range[0],o[o.length-1].range[1]]),O=this.performAction.apply(A,[k,Z,R,S.yy,b[1],d,o].concat(ct)),typeof O<"u")return O;$&&(a=a.slice(0,-1*$*2),d=d.slice(0,-1*$),o=o.slice(0,-1*$)),a.push(this.productions_[b[1]][0]),d.push(A.$),o.push(A._$),K=w[a[a.length-2]][a[a.length-1]],a.push(K);break;case 3:return!0}}return!0}},m=(function(){var p={EOF:1,parseError:function(r,a){if(this.yy.parser)this.yy.parser.parseError(r,a);else throw new Error(r)},setInput:function(s,r){return this.yy=r||this.yy||{},this._input=s,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 s=this._input[0];this.yytext+=s,this.yyleng++,this.offset++,this.match+=s,this.matched+=s;var r=s.match(/(?:\r\n?|\n).*/g);return r?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),s},unput:function(s){var r=s.length,a=s.split(/(?:\r\n?|\n)/g);this._input=s+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-r),this.offset-=r;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),a.length-1&&(this.yylineno-=a.length-1);var d=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:a?(a.length===u.length?this.yylloc.first_column:0)+u[u.length-a.length].length-a[0].length:this.yylloc.first_column-r},this.options.ranges&&(this.yylloc.range=[d[0],d[0]+this.yyleng-r]),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(s){this.unput(this.match.slice(s))},pastInput:function(){var s=this.matched.substr(0,this.matched.length-this.match.length);return(s.length>20?"...":"")+s.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var s=this.match;return s.length<20&&(s+=this._input.substr(0,20-s.length)),(s.substr(0,20)+(s.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var s=this.pastInput(),r=new Array(s.length+1).join("-");return s+this.upcomingInput()+`
@@ -1 +1 @@
1
- import{a as F,c as gn,b as zn,d as L,k as Xn,e as Hn,g as Un,j as P,l as xn,m as En,n as kn,t as jn,o as yn,p as Jn,q as Kn,G as x,f as s,h as w,i as g,r as M,v as y,s as Y}from"./graph-DHiGmXV6.js";import{as as A,at as Zn,au as Qn,av as Nn,aw as B,ax as Ln,ay as ne,az as _n,aA as J,aB as ee,aC as re,aD as K,aE as te,aF as Cn,aG as ie,aH as ae,aI as U}from"./mermaid.core-mIRDwmS-.js";var oe=/\s/;function ue(n){for(var e=n.length;e--&&oe.test(n.charAt(e)););return e}var de=/^\s+/;function fe(n){return n&&n.slice(0,ue(n)+1).replace(de,"")}var un=NaN,se=/^[-+]0x[0-9a-f]+$/i,ce=/^0b[01]+$/i,he=/^0o[0-7]+$/i,le=parseInt;function ve(n){if(typeof n=="number")return n;if(F(n))return un;if(A(n)){var e=typeof n.valueOf=="function"?n.valueOf():n;n=A(e)?e+"":e}if(typeof n!="string")return n===0?n:+n;n=fe(n);var r=ce.test(n);return r||he.test(n)?le(n.slice(2),r?2:8):se.test(n)?un:+n}var dn=1/0,pe=17976931348623157e292;function S(n){if(!n)return n===0?n:0;if(n=ve(n),n===dn||n===-dn){var e=n<0?-1:1;return e*pe}return n===n?n:0}function we(n){var e=S(n),r=e%1;return e===e?r?e-r:e:0}function _(n){var e=n==null?0:n.length;return e?gn(n):[]}function me(n){return Zn(Qn(n,void 0,_),n+"")}var be=1,ge=4;function xe(n){return zn(n,be|ge)}var In=Object.prototype,Ee=In.hasOwnProperty,ke=Nn(function(n,e){n=Object(n);var r=-1,t=e.length,i=t>2?e[2]:void 0;for(i&&B(e[0],e[1],i)&&(t=1);++r<t;)for(var o=e[r],a=Ln(o),u=-1,d=a.length;++u<d;){var f=a[u],c=n[f];(c===void 0||ne(c,In[f])&&!Ee.call(n,f))&&(n[f]=o[f])}return n});function G(n){var e=n==null?0:n.length;return e?n[e-1]:void 0}function ye(n){return function(e,r,t){var i=Object(e);if(!_n(e)){var o=L(r);e=Xn(e),r=function(u){return o(i[u],u,i)}}var a=n(e,r,t);return a>-1?i[o?e[a]:a]:void 0}}var Ne=Math.max;function Le(n,e,r){var t=n==null?0:n.length;if(!t)return-1;var i=r==null?0:we(r);return i<0&&(i=Ne(t+i,0)),Hn(n,L(e),i)}var Z=ye(Le);function Rn(n,e){var r=-1,t=_n(n)?Array(n.length):[];return Un(n,function(i,o,a){t[++r]=e(i,o,a)}),t}function m(n,e){var r=J(n)?P:Rn;return r(n,L(e))}function _e(n,e){return n==null?n:ee(n,xn(e),Ln)}function Ce(n,e){return n&&En(n,xn(e))}function Ie(n,e){return n>e}function Tn(n,e){return n<e}function D(n,e){var r={};return e=L(e),En(n,function(t,i,o){re(r,i,e(t,i,o))}),r}function Q(n,e,r){for(var t=-1,i=n.length;++t<i;){var o=n[t],a=e(o);if(a!=null&&(u===void 0?a===a&&!F(a):r(a,u)))var u=a,d=o}return d}function E(n){return n&&n.length?Q(n,K,Ie):void 0}function R(n){return n&&n.length?Q(n,K,Tn):void 0}function nn(n,e){return n&&n.length?Q(n,L(e),Tn):void 0}function Re(n,e,r,t){if(!A(n))return n;e=kn(e,n);for(var i=-1,o=e.length,a=o-1,u=n;u!=null&&++i<o;){var d=jn(e[i]),f=r;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(i!=a){var c=u[d];f=void 0,f===void 0&&(f=A(c)?c:te(e[i+1])?[]:{})}Cn(u,d,f),u=u[d]}return n}function Te(n,e,r){for(var t=-1,i=e.length,o={};++t<i;){var a=e[t],u=yn(n,a);r(u,a)&&Re(o,kn(a,n),u)}return o}function Me(n,e){var r=n.length;for(n.sort(e);r--;)n[r]=n[r].value;return n}function Oe(n,e){if(n!==e){var r=n!==void 0,t=n===null,i=n===n,o=F(n),a=e!==void 0,u=e===null,d=e===e,f=F(e);if(!u&&!f&&!o&&n>e||o&&a&&d&&!u&&!f||t&&a&&d||!r&&d||!i)return 1;if(!t&&!o&&!f&&n<e||f&&r&&i&&!t&&!o||u&&r&&i||!a&&i||!d)return-1}return 0}function Pe(n,e,r){for(var t=-1,i=n.criteria,o=e.criteria,a=i.length,u=r.length;++t<a;){var d=Oe(i[t],o[t]);if(d){if(t>=u)return d;var f=r[t];return d*(f=="desc"?-1:1)}}return n.index-e.index}function Se(n,e,r){e.length?e=P(e,function(o){return J(o)?function(a){return yn(a,o.length===1?o[0]:o)}:o}):e=[K];var t=-1;e=P(e,ie(L));var i=Rn(n,function(o,a,u){var d=P(e,function(f){return f(o)});return{criteria:d,index:++t,value:o}});return Me(i,function(o,a){return Pe(o,a,r)})}function Fe(n,e){return Te(n,e,function(r,t){return Jn(n,t)})}var V=me(function(n,e){return n==null?{}:Fe(n,e)}),Ae=Math.ceil,Be=Math.max;function Ge(n,e,r,t){for(var i=-1,o=Be(Ae((e-n)/(r||1)),0),a=Array(o);o--;)a[++i]=n,n+=r;return a}function Ve(n){return function(e,r,t){return t&&typeof t!="number"&&B(e,r,t)&&(r=t=void 0),e=S(e),r===void 0?(r=e,e=0):r=S(r),t=t===void 0?e<r?1:-1:S(t),Ge(e,r,t)}}var N=Ve(),O=Nn(function(n,e){if(n==null)return[];var r=e.length;return r>1&&B(n,e[0],e[1])?e=[]:r>2&&B(e[0],e[1],e[2])&&(e=[e[0]]),Se(n,gn(e),[])}),Ye=0;function en(n){var e=++Ye;return Kn(n)+e}function De(n,e,r){for(var t=-1,i=n.length,o=e.length,a={};++t<i;){var u=t<o?e[t]:void 0;r(a,n[t],u)}return a}function $e(n,e){return De(n||[],e||[],Cn)}class qe{constructor(){var e={};e._next=e._prev=e,this._sentinel=e}dequeue(){var e=this._sentinel,r=e._prev;if(r!==e)return fn(r),r}enqueue(e){var r=this._sentinel;e._prev&&e._next&&fn(e),e._next=r._next,r._next._prev=e,r._next=e,e._prev=r}toString(){for(var e=[],r=this._sentinel,t=r._prev;t!==r;)e.push(JSON.stringify(t,We)),t=t._prev;return"["+e.join(", ")+"]"}}function fn(n){n._prev._next=n._next,n._next._prev=n._prev,delete n._next,delete n._prev}function We(n,e){if(n!=="_next"&&n!=="_prev")return e}var ze=ae(1);function Xe(n,e){if(n.nodeCount()<=1)return[];var r=Ue(n,e||ze),t=He(r.graph,r.buckets,r.zeroIdx);return _(m(t,function(i){return n.outEdges(i.v,i.w)}))}function He(n,e,r){for(var t=[],i=e[e.length-1],o=e[0],a;n.nodeCount();){for(;a=o.dequeue();)q(n,e,r,a);for(;a=i.dequeue();)q(n,e,r,a);if(n.nodeCount()){for(var u=e.length-2;u>0;--u)if(a=e[u].dequeue(),a){t=t.concat(q(n,e,r,a,!0));break}}}return t}function q(n,e,r,t,i){var o=i?[]:void 0;return s(n.inEdges(t.v),function(a){var u=n.edge(a),d=n.node(a.v);i&&o.push({v:a.v,w:a.w}),d.out-=u,j(e,r,d)}),s(n.outEdges(t.v),function(a){var u=n.edge(a),d=a.w,f=n.node(d);f.in-=u,j(e,r,f)}),n.removeNode(t.v),o}function Ue(n,e){var r=new x,t=0,i=0;s(n.nodes(),function(u){r.setNode(u,{v:u,in:0,out:0})}),s(n.edges(),function(u){var d=r.edge(u.v,u.w)||0,f=e(u),c=d+f;r.setEdge(u.v,u.w,c),i=Math.max(i,r.node(u.v).out+=f),t=Math.max(t,r.node(u.w).in+=f)});var o=N(i+t+3).map(function(){return new qe}),a=t+1;return s(r.nodes(),function(u){j(o,a,r.node(u))}),{graph:r,buckets:o,zeroIdx:a}}function j(n,e,r){r.out?r.in?n[r.out-r.in+e].enqueue(r):n[n.length-1].enqueue(r):n[0].enqueue(r)}function je(n){var e=n.graph().acyclicer==="greedy"?Xe(n,r(n)):Je(n);s(e,function(t){var i=n.edge(t);n.removeEdge(t),i.forwardName=t.name,i.reversed=!0,n.setEdge(t.w,t.v,i,en("rev"))});function r(t){return function(i){return t.edge(i).weight}}}function Je(n){var e=[],r={},t={};function i(o){w(t,o)||(t[o]=!0,r[o]=!0,s(n.outEdges(o),function(a){w(r,a.w)?e.push(a):i(a.w)}),delete r[o])}return s(n.nodes(),i),e}function Ke(n){s(n.edges(),function(e){var r=n.edge(e);if(r.reversed){n.removeEdge(e);var t=r.forwardName;delete r.reversed,delete r.forwardName,n.setEdge(e.w,e.v,r,t)}})}function C(n,e,r,t){var i;do i=en(t);while(n.hasNode(i));return r.dummy=e,n.setNode(i,r),i}function Ze(n){var e=new x().setGraph(n.graph());return s(n.nodes(),function(r){e.setNode(r,n.node(r))}),s(n.edges(),function(r){var t=e.edge(r.v,r.w)||{weight:0,minlen:1},i=n.edge(r);e.setEdge(r.v,r.w,{weight:t.weight+i.weight,minlen:Math.max(t.minlen,i.minlen)})}),e}function Mn(n){var e=new x({multigraph:n.isMultigraph()}).setGraph(n.graph());return s(n.nodes(),function(r){n.children(r).length||e.setNode(r,n.node(r))}),s(n.edges(),function(r){e.setEdge(r,n.edge(r))}),e}function sn(n,e){var r=n.x,t=n.y,i=e.x-r,o=e.y-t,a=n.width/2,u=n.height/2;if(!i&&!o)throw new Error("Not possible to find intersection inside of the rectangle");var d,f;return Math.abs(o)*a>Math.abs(i)*u?(o<0&&(u=-u),d=u*i/o,f=u):(i<0&&(a=-a),d=a,f=a*o/i),{x:r+d,y:t+f}}function $(n){var e=m(N(On(n)+1),function(){return[]});return s(n.nodes(),function(r){var t=n.node(r),i=t.rank;g(i)||(e[i][t.order]=r)}),e}function Qe(n){var e=R(m(n.nodes(),function(r){return n.node(r).rank}));s(n.nodes(),function(r){var t=n.node(r);w(t,"rank")&&(t.rank-=e)})}function nr(n){var e=R(m(n.nodes(),function(o){return n.node(o).rank})),r=[];s(n.nodes(),function(o){var a=n.node(o).rank-e;r[a]||(r[a]=[]),r[a].push(o)});var t=0,i=n.graph().nodeRankFactor;s(r,function(o,a){g(o)&&a%i!==0?--t:t&&s(o,function(u){n.node(u).rank+=t})})}function cn(n,e,r,t){var i={width:0,height:0};return arguments.length>=4&&(i.rank=r,i.order=t),C(n,"border",i,e)}function On(n){return E(m(n.nodes(),function(e){var r=n.node(e).rank;if(!g(r))return r}))}function er(n,e){var r={lhs:[],rhs:[]};return s(n,function(t){e(t)?r.lhs.push(t):r.rhs.push(t)}),r}function rr(n,e){return e()}function tr(n){function e(r){var t=n.children(r),i=n.node(r);if(t.length&&s(t,e),w(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var o=i.minRank,a=i.maxRank+1;o<a;++o)hn(n,"borderLeft","_bl",r,i,o),hn(n,"borderRight","_br",r,i,o)}}s(n.children(),e)}function hn(n,e,r,t,i,o){var a={width:0,height:0,rank:o,borderType:e},u=i[e][o-1],d=C(n,"border",a,r);i[e][o]=d,n.setParent(d,t),u&&n.setEdge(u,d,{weight:1})}function ir(n){var e=n.graph().rankdir.toLowerCase();(e==="lr"||e==="rl")&&Pn(n)}function ar(n){var e=n.graph().rankdir.toLowerCase();(e==="bt"||e==="rl")&&or(n),(e==="lr"||e==="rl")&&(ur(n),Pn(n))}function Pn(n){s(n.nodes(),function(e){ln(n.node(e))}),s(n.edges(),function(e){ln(n.edge(e))})}function ln(n){var e=n.width;n.width=n.height,n.height=e}function or(n){s(n.nodes(),function(e){W(n.node(e))}),s(n.edges(),function(e){var r=n.edge(e);s(r.points,W),w(r,"y")&&W(r)})}function W(n){n.y=-n.y}function ur(n){s(n.nodes(),function(e){z(n.node(e))}),s(n.edges(),function(e){var r=n.edge(e);s(r.points,z),w(r,"x")&&z(r)})}function z(n){var e=n.x;n.x=n.y,n.y=e}function dr(n){n.graph().dummyChains=[],s(n.edges(),function(e){fr(n,e)})}function fr(n,e){var r=e.v,t=n.node(r).rank,i=e.w,o=n.node(i).rank,a=e.name,u=n.edge(e),d=u.labelRank;if(o!==t+1){n.removeEdge(e);var f,c,h;for(h=0,++t;t<o;++h,++t)u.points=[],c={width:0,height:0,edgeLabel:u,edgeObj:e,rank:t},f=C(n,"edge",c,"_d"),t===d&&(c.width=u.width,c.height=u.height,c.dummy="edge-label",c.labelpos=u.labelpos),n.setEdge(r,f,{weight:u.weight},a),h===0&&n.graph().dummyChains.push(f),r=f;n.setEdge(r,i,{weight:u.weight},a)}}function sr(n){s(n.graph().dummyChains,function(e){var r=n.node(e),t=r.edgeLabel,i;for(n.setEdge(r.edgeObj,t);r.dummy;)i=n.successors(e)[0],n.removeNode(e),t.points.push({x:r.x,y:r.y}),r.dummy==="edge-label"&&(t.x=r.x,t.y=r.y,t.width=r.width,t.height=r.height),e=i,r=n.node(e)})}function rn(n){var e={};function r(t){var i=n.node(t);if(w(e,t))return i.rank;e[t]=!0;var o=R(m(n.outEdges(t),function(a){return r(a.w)-n.edge(a).minlen}));return(o===Number.POSITIVE_INFINITY||o===void 0||o===null)&&(o=0),i.rank=o}s(n.sources(),r)}function T(n,e){return n.node(e.w).rank-n.node(e.v).rank-n.edge(e).minlen}function Sn(n){var e=new x({directed:!1}),r=n.nodes()[0],t=n.nodeCount();e.setNode(r,{});for(var i,o;cr(e,n)<t;)i=hr(e,n),o=e.hasNode(i.v)?T(n,i):-T(n,i),lr(e,n,o);return e}function cr(n,e){function r(t){s(e.nodeEdges(t),function(i){var o=i.v,a=t===o?i.w:o;!n.hasNode(a)&&!T(e,i)&&(n.setNode(a,{}),n.setEdge(t,a,{}),r(a))})}return s(n.nodes(),r),n.nodeCount()}function hr(n,e){return nn(e.edges(),function(r){if(n.hasNode(r.v)!==n.hasNode(r.w))return T(e,r)})}function lr(n,e,r){s(n.nodes(),function(t){e.node(t).rank+=r})}function vr(){}vr.prototype=new Error;function Fn(n,e,r){J(e)||(e=[e]);var t=(n.isDirected()?n.successors:n.neighbors).bind(n),i=[],o={};return s(e,function(a){if(!n.hasNode(a))throw new Error("Graph does not have node: "+a);An(n,a,r==="post",o,t,i)}),i}function An(n,e,r,t,i,o){w(t,e)||(t[e]=!0,r||o.push(e),s(i(e),function(a){An(n,a,r,t,i,o)}),r&&o.push(e))}function pr(n,e){return Fn(n,e,"post")}function wr(n,e){return Fn(n,e,"pre")}k.initLowLimValues=an;k.initCutValues=tn;k.calcCutValue=Bn;k.leaveEdge=Vn;k.enterEdge=Yn;k.exchangeEdges=Dn;function k(n){n=Ze(n),rn(n);var e=Sn(n);an(e),tn(e,n);for(var r,t;r=Vn(e);)t=Yn(e,n,r),Dn(e,n,r,t)}function tn(n,e){var r=pr(n,n.nodes());r=r.slice(0,r.length-1),s(r,function(t){mr(n,e,t)})}function mr(n,e,r){var t=n.node(r),i=t.parent;n.edge(r,i).cutvalue=Bn(n,e,r)}function Bn(n,e,r){var t=n.node(r),i=t.parent,o=!0,a=e.edge(r,i),u=0;return a||(o=!1,a=e.edge(i,r)),u=a.weight,s(e.nodeEdges(r),function(d){var f=d.v===r,c=f?d.w:d.v;if(c!==i){var h=f===o,l=e.edge(d).weight;if(u+=h?l:-l,gr(n,r,c)){var v=n.edge(r,c).cutvalue;u+=h?-v:v}}}),u}function an(n,e){arguments.length<2&&(e=n.nodes()[0]),Gn(n,{},1,e)}function Gn(n,e,r,t,i){var o=r,a=n.node(t);return e[t]=!0,s(n.neighbors(t),function(u){w(e,u)||(r=Gn(n,e,r,u,t))}),a.low=o,a.lim=r++,i?a.parent=i:delete a.parent,r}function Vn(n){return Z(n.edges(),function(e){return n.edge(e).cutvalue<0})}function Yn(n,e,r){var t=r.v,i=r.w;e.hasEdge(t,i)||(t=r.w,i=r.v);var o=n.node(t),a=n.node(i),u=o,d=!1;o.lim>a.lim&&(u=a,d=!0);var f=M(e.edges(),function(c){return d===vn(n,n.node(c.v),u)&&d!==vn(n,n.node(c.w),u)});return nn(f,function(c){return T(e,c)})}function Dn(n,e,r,t){var i=r.v,o=r.w;n.removeEdge(i,o),n.setEdge(t.v,t.w,{}),an(n),tn(n,e),br(n,e)}function br(n,e){var r=Z(n.nodes(),function(i){return!e.node(i).parent}),t=wr(n,r);t=t.slice(1),s(t,function(i){var o=n.node(i).parent,a=e.edge(i,o),u=!1;a||(a=e.edge(o,i),u=!0),e.node(i).rank=e.node(o).rank+(u?a.minlen:-a.minlen)})}function gr(n,e,r){return n.hasEdge(e,r)}function vn(n,e,r){return r.low<=e.lim&&e.lim<=r.lim}function xr(n){switch(n.graph().ranker){case"network-simplex":pn(n);break;case"tight-tree":kr(n);break;case"longest-path":Er(n);break;default:pn(n)}}var Er=rn;function kr(n){rn(n),Sn(n)}function pn(n){k(n)}function yr(n){var e=C(n,"root",{},"_root"),r=Nr(n),t=E(y(r))-1,i=2*t+1;n.graph().nestingRoot=e,s(n.edges(),function(a){n.edge(a).minlen*=i});var o=Lr(n)+1;s(n.children(),function(a){$n(n,e,i,o,t,r,a)}),n.graph().nodeRankFactor=i}function $n(n,e,r,t,i,o,a){var u=n.children(a);if(!u.length){a!==e&&n.setEdge(e,a,{weight:0,minlen:r});return}var d=cn(n,"_bt"),f=cn(n,"_bb"),c=n.node(a);n.setParent(d,a),c.borderTop=d,n.setParent(f,a),c.borderBottom=f,s(u,function(h){$n(n,e,r,t,i,o,h);var l=n.node(h),v=l.borderTop?l.borderTop:h,p=l.borderBottom?l.borderBottom:h,b=l.borderTop?t:2*t,I=v!==p?1:i-o[a]+1;n.setEdge(d,v,{weight:b,minlen:I,nestingEdge:!0}),n.setEdge(p,f,{weight:b,minlen:I,nestingEdge:!0})}),n.parent(a)||n.setEdge(e,d,{weight:0,minlen:i+o[a]})}function Nr(n){var e={};function r(t,i){var o=n.children(t);o&&o.length&&s(o,function(a){r(a,i+1)}),e[t]=i}return s(n.children(),function(t){r(t,1)}),e}function Lr(n){return Y(n.edges(),function(e,r){return e+n.edge(r).weight},0)}function _r(n){var e=n.graph();n.removeNode(e.nestingRoot),delete e.nestingRoot,s(n.edges(),function(r){var t=n.edge(r);t.nestingEdge&&n.removeEdge(r)})}function Cr(n,e,r){var t={},i;s(r,function(o){for(var a=n.parent(o),u,d;a;){if(u=n.parent(a),u?(d=t[u],t[u]=a):(d=i,i=a),d&&d!==a){e.setEdge(d,a);return}a=u}})}function Ir(n,e,r){var t=Rr(n),i=new x({compound:!0}).setGraph({root:t}).setDefaultNodeLabel(function(o){return n.node(o)});return s(n.nodes(),function(o){var a=n.node(o),u=n.parent(o);(a.rank===e||a.minRank<=e&&e<=a.maxRank)&&(i.setNode(o),i.setParent(o,u||t),s(n[r](o),function(d){var f=d.v===o?d.w:d.v,c=i.edge(f,o),h=g(c)?0:c.weight;i.setEdge(f,o,{weight:n.edge(d).weight+h})}),w(a,"minRank")&&i.setNode(o,{borderLeft:a.borderLeft[e],borderRight:a.borderRight[e]}))}),i}function Rr(n){for(var e;n.hasNode(e=en("_root")););return e}function Tr(n,e){for(var r=0,t=1;t<e.length;++t)r+=Mr(n,e[t-1],e[t]);return r}function Mr(n,e,r){for(var t=$e(r,m(r,function(f,c){return c})),i=_(m(e,function(f){return O(m(n.outEdges(f),function(c){return{pos:t[c.w],weight:n.edge(c).weight}}),"pos")})),o=1;o<r.length;)o<<=1;var a=2*o-1;o-=1;var u=m(new Array(a),function(){return 0}),d=0;return s(i.forEach(function(f){var c=f.pos+o;u[c]+=f.weight;for(var h=0;c>0;)c%2&&(h+=u[c+1]),c=c-1>>1,u[c]+=f.weight;d+=f.weight*h})),d}function Or(n){var e={},r=M(n.nodes(),function(u){return!n.children(u).length}),t=E(m(r,function(u){return n.node(u).rank})),i=m(N(t+1),function(){return[]});function o(u){if(!w(e,u)){e[u]=!0;var d=n.node(u);i[d.rank].push(u),s(n.successors(u),o)}}var a=O(r,function(u){return n.node(u).rank});return s(a,o),i}function Pr(n,e){return m(e,function(r){var t=n.inEdges(r);if(t.length){var i=Y(t,function(o,a){var u=n.edge(a),d=n.node(a.v);return{sum:o.sum+u.weight*d.order,weight:o.weight+u.weight}},{sum:0,weight:0});return{v:r,barycenter:i.sum/i.weight,weight:i.weight}}else return{v:r}})}function Sr(n,e){var r={};s(n,function(i,o){var a=r[i.v]={indegree:0,in:[],out:[],vs:[i.v],i:o};g(i.barycenter)||(a.barycenter=i.barycenter,a.weight=i.weight)}),s(e.edges(),function(i){var o=r[i.v],a=r[i.w];!g(o)&&!g(a)&&(a.indegree++,o.out.push(r[i.w]))});var t=M(r,function(i){return!i.indegree});return Fr(t)}function Fr(n){var e=[];function r(o){return function(a){a.merged||(g(a.barycenter)||g(o.barycenter)||a.barycenter>=o.barycenter)&&Ar(o,a)}}function t(o){return function(a){a.in.push(o),--a.indegree===0&&n.push(a)}}for(;n.length;){var i=n.pop();e.push(i),s(i.in.reverse(),r(i)),s(i.out,t(i))}return m(M(e,function(o){return!o.merged}),function(o){return V(o,["vs","i","barycenter","weight"])})}function Ar(n,e){var r=0,t=0;n.weight&&(r+=n.barycenter*n.weight,t+=n.weight),e.weight&&(r+=e.barycenter*e.weight,t+=e.weight),n.vs=e.vs.concat(n.vs),n.barycenter=r/t,n.weight=t,n.i=Math.min(e.i,n.i),e.merged=!0}function Br(n,e){var r=er(n,function(c){return w(c,"barycenter")}),t=r.lhs,i=O(r.rhs,function(c){return-c.i}),o=[],a=0,u=0,d=0;t.sort(Gr(!!e)),d=wn(o,i,d),s(t,function(c){d+=c.vs.length,o.push(c.vs),a+=c.barycenter*c.weight,u+=c.weight,d=wn(o,i,d)});var f={vs:_(o)};return u&&(f.barycenter=a/u,f.weight=u),f}function wn(n,e,r){for(var t;e.length&&(t=G(e)).i<=r;)e.pop(),n.push(t.vs),r++;return r}function Gr(n){return function(e,r){return e.barycenter<r.barycenter?-1:e.barycenter>r.barycenter?1:n?r.i-e.i:e.i-r.i}}function qn(n,e,r,t){var i=n.children(e),o=n.node(e),a=o?o.borderLeft:void 0,u=o?o.borderRight:void 0,d={};a&&(i=M(i,function(p){return p!==a&&p!==u}));var f=Pr(n,i);s(f,function(p){if(n.children(p.v).length){var b=qn(n,p.v,r,t);d[p.v]=b,w(b,"barycenter")&&Yr(p,b)}});var c=Sr(f,r);Vr(c,d);var h=Br(c,t);if(a&&(h.vs=_([a,h.vs,u]),n.predecessors(a).length)){var l=n.node(n.predecessors(a)[0]),v=n.node(n.predecessors(u)[0]);w(h,"barycenter")||(h.barycenter=0,h.weight=0),h.barycenter=(h.barycenter*h.weight+l.order+v.order)/(h.weight+2),h.weight+=2}return h}function Vr(n,e){s(n,function(r){r.vs=_(r.vs.map(function(t){return e[t]?e[t].vs:t}))})}function Yr(n,e){g(n.barycenter)?(n.barycenter=e.barycenter,n.weight=e.weight):(n.barycenter=(n.barycenter*n.weight+e.barycenter*e.weight)/(n.weight+e.weight),n.weight+=e.weight)}function Dr(n){var e=On(n),r=mn(n,N(1,e+1),"inEdges"),t=mn(n,N(e-1,-1,-1),"outEdges"),i=Or(n);bn(n,i);for(var o=Number.POSITIVE_INFINITY,a,u=0,d=0;d<4;++u,++d){$r(u%2?r:t,u%4>=2),i=$(n);var f=Tr(n,i);f<o&&(d=0,a=xe(i),o=f)}bn(n,a)}function mn(n,e,r){return m(e,function(t){return Ir(n,t,r)})}function $r(n,e){var r=new x;s(n,function(t){var i=t.graph().root,o=qn(t,i,r,e);s(o.vs,function(a,u){t.node(a).order=u}),Cr(t,r,o.vs)})}function bn(n,e){s(e,function(r){s(r,function(t,i){n.node(t).order=i})})}function qr(n){var e=zr(n);s(n.graph().dummyChains,function(r){for(var t=n.node(r),i=t.edgeObj,o=Wr(n,e,i.v,i.w),a=o.path,u=o.lca,d=0,f=a[d],c=!0;r!==i.w;){if(t=n.node(r),c){for(;(f=a[d])!==u&&n.node(f).maxRank<t.rank;)d++;f===u&&(c=!1)}if(!c){for(;d<a.length-1&&n.node(f=a[d+1]).minRank<=t.rank;)d++;f=a[d]}n.setParent(r,f),r=n.successors(r)[0]}})}function Wr(n,e,r,t){var i=[],o=[],a=Math.min(e[r].low,e[t].low),u=Math.max(e[r].lim,e[t].lim),d,f;d=r;do d=n.parent(d),i.push(d);while(d&&(e[d].low>a||u>e[d].lim));for(f=d,d=t;(d=n.parent(d))!==f;)o.push(d);return{path:i.concat(o.reverse()),lca:f}}function zr(n){var e={},r=0;function t(i){var o=r;s(n.children(i),t),e[i]={low:o,lim:r++}}return s(n.children(),t),e}function Xr(n,e){var r={};function t(i,o){var a=0,u=0,d=i.length,f=G(o);return s(o,function(c,h){var l=Ur(n,c),v=l?n.node(l).order:d;(l||c===f)&&(s(o.slice(u,h+1),function(p){s(n.predecessors(p),function(b){var I=n.node(b),on=I.order;(on<a||v<on)&&!(I.dummy&&n.node(p).dummy)&&Wn(r,b,p)})}),u=h+1,a=v)}),o}return Y(e,t),r}function Hr(n,e){var r={};function t(o,a,u,d,f){var c;s(N(a,u),function(h){c=o[h],n.node(c).dummy&&s(n.predecessors(c),function(l){var v=n.node(l);v.dummy&&(v.order<d||v.order>f)&&Wn(r,l,c)})})}function i(o,a){var u=-1,d,f=0;return s(a,function(c,h){if(n.node(c).dummy==="border"){var l=n.predecessors(c);l.length&&(d=n.node(l[0]).order,t(a,f,h,u,d),f=h,u=d)}t(a,f,a.length,d,o.length)}),a}return Y(e,i),r}function Ur(n,e){if(n.node(e).dummy)return Z(n.predecessors(e),function(r){return n.node(r).dummy})}function Wn(n,e,r){if(e>r){var t=e;e=r,r=t}var i=n[e];i||(n[e]=i={}),i[r]=!0}function jr(n,e,r){if(e>r){var t=e;e=r,r=t}return w(n[e],r)}function Jr(n,e,r,t){var i={},o={},a={};return s(e,function(u){s(u,function(d,f){i[d]=d,o[d]=d,a[d]=f})}),s(e,function(u){var d=-1;s(u,function(f){var c=t(f);if(c.length){c=O(c,function(b){return a[b]});for(var h=(c.length-1)/2,l=Math.floor(h),v=Math.ceil(h);l<=v;++l){var p=c[l];o[f]===f&&d<a[p]&&!jr(r,f,p)&&(o[p]=f,o[f]=i[f]=i[p],d=a[p])}}})}),{root:i,align:o}}function Kr(n,e,r,t,i){var o={},a=Zr(n,e,r,i),u=i?"borderLeft":"borderRight";function d(h,l){for(var v=a.nodes(),p=v.pop(),b={};p;)b[p]?h(p):(b[p]=!0,v.push(p),v=v.concat(l(p))),p=v.pop()}function f(h){o[h]=a.inEdges(h).reduce(function(l,v){return Math.max(l,o[v.v]+a.edge(v))},0)}function c(h){var l=a.outEdges(h).reduce(function(p,b){return Math.min(p,o[b.w]-a.edge(b))},Number.POSITIVE_INFINITY),v=n.node(h);l!==Number.POSITIVE_INFINITY&&v.borderType!==u&&(o[h]=Math.max(o[h],l))}return d(f,a.predecessors.bind(a)),d(c,a.successors.bind(a)),s(t,function(h){o[h]=o[r[h]]}),o}function Zr(n,e,r,t){var i=new x,o=n.graph(),a=tt(o.nodesep,o.edgesep,t);return s(e,function(u){var d;s(u,function(f){var c=r[f];if(i.setNode(c),d){var h=r[d],l=i.edge(h,c);i.setEdge(h,c,Math.max(a(n,f,d),l||0))}d=f})}),i}function Qr(n,e){return nn(y(e),function(r){var t=Number.NEGATIVE_INFINITY,i=Number.POSITIVE_INFINITY;return _e(r,function(o,a){var u=it(n,a)/2;t=Math.max(o+u,t),i=Math.min(o-u,i)}),t-i})}function nt(n,e){var r=y(e),t=R(r),i=E(r);s(["u","d"],function(o){s(["l","r"],function(a){var u=o+a,d=n[u],f;if(d!==e){var c=y(d);f=a==="l"?t-R(c):i-E(c),f&&(n[u]=D(d,function(h){return h+f}))}})})}function et(n,e){return D(n.ul,function(r,t){if(e)return n[e.toLowerCase()][t];var i=O(m(n,t));return(i[1]+i[2])/2})}function rt(n){var e=$(n),r=U(Xr(n,e),Hr(n,e)),t={},i;s(["u","d"],function(a){i=a==="u"?e:y(e).reverse(),s(["l","r"],function(u){u==="r"&&(i=m(i,function(h){return y(h).reverse()}));var d=(a==="u"?n.predecessors:n.successors).bind(n),f=Jr(n,i,r,d),c=Kr(n,i,f.root,f.align,u==="r");u==="r"&&(c=D(c,function(h){return-h})),t[a+u]=c})});var o=Qr(n,t);return nt(t,o),et(t,n.graph().align)}function tt(n,e,r){return function(t,i,o){var a=t.node(i),u=t.node(o),d=0,f;if(d+=a.width/2,w(a,"labelpos"))switch(a.labelpos.toLowerCase()){case"l":f=-a.width/2;break;case"r":f=a.width/2;break}if(f&&(d+=r?f:-f),f=0,d+=(a.dummy?e:n)/2,d+=(u.dummy?e:n)/2,d+=u.width/2,w(u,"labelpos"))switch(u.labelpos.toLowerCase()){case"l":f=u.width/2;break;case"r":f=-u.width/2;break}return f&&(d+=r?f:-f),f=0,d}}function it(n,e){return n.node(e).width}function at(n){n=Mn(n),ot(n),Ce(rt(n),function(e,r){n.node(r).x=e})}function ot(n){var e=$(n),r=n.graph().ranksep,t=0;s(e,function(i){var o=E(m(i,function(a){return n.node(a).height}));s(i,function(a){n.node(a).y=t+o/2}),t+=o+r})}function Ot(n,e){var r=rr;r("layout",function(){var t=r(" buildLayoutGraph",function(){return mt(n)});r(" runLayout",function(){ut(t,r)}),r(" updateInputGraph",function(){dt(n,t)})})}function ut(n,e){e(" makeSpaceForEdgeLabels",function(){bt(n)}),e(" removeSelfEdges",function(){Ct(n)}),e(" acyclic",function(){je(n)}),e(" nestingGraph.run",function(){yr(n)}),e(" rank",function(){xr(Mn(n))}),e(" injectEdgeLabelProxies",function(){gt(n)}),e(" removeEmptyRanks",function(){nr(n)}),e(" nestingGraph.cleanup",function(){_r(n)}),e(" normalizeRanks",function(){Qe(n)}),e(" assignRankMinMax",function(){xt(n)}),e(" removeEdgeLabelProxies",function(){Et(n)}),e(" normalize.run",function(){dr(n)}),e(" parentDummyChains",function(){qr(n)}),e(" addBorderSegments",function(){tr(n)}),e(" order",function(){Dr(n)}),e(" insertSelfEdges",function(){It(n)}),e(" adjustCoordinateSystem",function(){ir(n)}),e(" position",function(){at(n)}),e(" positionSelfEdges",function(){Rt(n)}),e(" removeBorderNodes",function(){_t(n)}),e(" normalize.undo",function(){sr(n)}),e(" fixupEdgeLabelCoords",function(){Nt(n)}),e(" undoCoordinateSystem",function(){ar(n)}),e(" translateGraph",function(){kt(n)}),e(" assignNodeIntersects",function(){yt(n)}),e(" reversePoints",function(){Lt(n)}),e(" acyclic.undo",function(){Ke(n)})}function dt(n,e){s(n.nodes(),function(r){var t=n.node(r),i=e.node(r);t&&(t.x=i.x,t.y=i.y,e.children(r).length&&(t.width=i.width,t.height=i.height))}),s(n.edges(),function(r){var t=n.edge(r),i=e.edge(r);t.points=i.points,w(i,"x")&&(t.x=i.x,t.y=i.y)}),n.graph().width=e.graph().width,n.graph().height=e.graph().height}var ft=["nodesep","edgesep","ranksep","marginx","marginy"],st={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},ct=["acyclicer","ranker","rankdir","align"],ht=["width","height"],lt={width:0,height:0},vt=["minlen","weight","width","height","labeloffset"],pt={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},wt=["labelpos"];function mt(n){var e=new x({multigraph:!0,compound:!0}),r=H(n.graph());return e.setGraph(U({},st,X(r,ft),V(r,ct))),s(n.nodes(),function(t){var i=H(n.node(t));e.setNode(t,ke(X(i,ht),lt)),e.setParent(t,n.parent(t))}),s(n.edges(),function(t){var i=H(n.edge(t));e.setEdge(t,U({},pt,X(i,vt),V(i,wt)))}),e}function bt(n){var e=n.graph();e.ranksep/=2,s(n.edges(),function(r){var t=n.edge(r);t.minlen*=2,t.labelpos.toLowerCase()!=="c"&&(e.rankdir==="TB"||e.rankdir==="BT"?t.width+=t.labeloffset:t.height+=t.labeloffset)})}function gt(n){s(n.edges(),function(e){var r=n.edge(e);if(r.width&&r.height){var t=n.node(e.v),i=n.node(e.w),o={rank:(i.rank-t.rank)/2+t.rank,e};C(n,"edge-proxy",o,"_ep")}})}function xt(n){var e=0;s(n.nodes(),function(r){var t=n.node(r);t.borderTop&&(t.minRank=n.node(t.borderTop).rank,t.maxRank=n.node(t.borderBottom).rank,e=E(e,t.maxRank))}),n.graph().maxRank=e}function Et(n){s(n.nodes(),function(e){var r=n.node(e);r.dummy==="edge-proxy"&&(n.edge(r.e).labelRank=r.rank,n.removeNode(e))})}function kt(n){var e=Number.POSITIVE_INFINITY,r=0,t=Number.POSITIVE_INFINITY,i=0,o=n.graph(),a=o.marginx||0,u=o.marginy||0;function d(f){var c=f.x,h=f.y,l=f.width,v=f.height;e=Math.min(e,c-l/2),r=Math.max(r,c+l/2),t=Math.min(t,h-v/2),i=Math.max(i,h+v/2)}s(n.nodes(),function(f){d(n.node(f))}),s(n.edges(),function(f){var c=n.edge(f);w(c,"x")&&d(c)}),e-=a,t-=u,s(n.nodes(),function(f){var c=n.node(f);c.x-=e,c.y-=t}),s(n.edges(),function(f){var c=n.edge(f);s(c.points,function(h){h.x-=e,h.y-=t}),w(c,"x")&&(c.x-=e),w(c,"y")&&(c.y-=t)}),o.width=r-e+a,o.height=i-t+u}function yt(n){s(n.edges(),function(e){var r=n.edge(e),t=n.node(e.v),i=n.node(e.w),o,a;r.points?(o=r.points[0],a=r.points[r.points.length-1]):(r.points=[],o=i,a=t),r.points.unshift(sn(t,o)),r.points.push(sn(i,a))})}function Nt(n){s(n.edges(),function(e){var r=n.edge(e);if(w(r,"x"))switch((r.labelpos==="l"||r.labelpos==="r")&&(r.width-=r.labeloffset),r.labelpos){case"l":r.x-=r.width/2+r.labeloffset;break;case"r":r.x+=r.width/2+r.labeloffset;break}})}function Lt(n){s(n.edges(),function(e){var r=n.edge(e);r.reversed&&r.points.reverse()})}function _t(n){s(n.nodes(),function(e){if(n.children(e).length){var r=n.node(e),t=n.node(r.borderTop),i=n.node(r.borderBottom),o=n.node(G(r.borderLeft)),a=n.node(G(r.borderRight));r.width=Math.abs(a.x-o.x),r.height=Math.abs(i.y-t.y),r.x=o.x+r.width/2,r.y=t.y+r.height/2}}),s(n.nodes(),function(e){n.node(e).dummy==="border"&&n.removeNode(e)})}function Ct(n){s(n.edges(),function(e){if(e.v===e.w){var r=n.node(e.v);r.selfEdges||(r.selfEdges=[]),r.selfEdges.push({e,label:n.edge(e)}),n.removeEdge(e)}})}function It(n){var e=$(n);s(e,function(r){var t=0;s(r,function(i,o){var a=n.node(i);a.order=o+t,s(a.selfEdges,function(u){C(n,"selfedge",{width:u.label.width,height:u.label.height,rank:a.rank,order:o+ ++t,e:u.e,label:u.label},"_se")}),delete a.selfEdges})})}function Rt(n){s(n.nodes(),function(e){var r=n.node(e);if(r.dummy==="selfedge"){var t=n.node(r.e.v),i=t.x+t.width/2,o=t.y,a=r.x-i,u=t.height/2;n.setEdge(r.e,r.label),n.removeNode(e),r.label.points=[{x:i+2*a/3,y:o-u},{x:i+5*a/6,y:o-u},{x:i+a,y:o},{x:i+5*a/6,y:o+u},{x:i+2*a/3,y:o+u}],r.label.x=r.x,r.label.y=r.y}})}function X(n,e){return D(V(n,e),Number)}function H(n){var e={};return s(n,function(r,t){e[t.toLowerCase()]=r}),e}export{ke as d,Ot as l,m,V as p,N as r,en as u};
1
+ import{a as F,c as gn,b as zn,d as L,k as Xn,e as Hn,g as Un,j as P,l as xn,m as En,n as kn,t as jn,o as yn,p as Jn,q as Kn,G as x,f as s,h as w,i as g,r as M,v as y,s as Y}from"./graph-BeeTwCH3.js";import{as as A,at as Zn,au as Qn,av as Nn,aw as B,ax as Ln,ay as ne,az as _n,aA as J,aB as ee,aC as re,aD as K,aE as te,aF as Cn,aG as ie,aH as ae,aI as U}from"./mermaid.core-yVPD7ieH.js";var oe=/\s/;function ue(n){for(var e=n.length;e--&&oe.test(n.charAt(e)););return e}var de=/^\s+/;function fe(n){return n&&n.slice(0,ue(n)+1).replace(de,"")}var un=NaN,se=/^[-+]0x[0-9a-f]+$/i,ce=/^0b[01]+$/i,he=/^0o[0-7]+$/i,le=parseInt;function ve(n){if(typeof n=="number")return n;if(F(n))return un;if(A(n)){var e=typeof n.valueOf=="function"?n.valueOf():n;n=A(e)?e+"":e}if(typeof n!="string")return n===0?n:+n;n=fe(n);var r=ce.test(n);return r||he.test(n)?le(n.slice(2),r?2:8):se.test(n)?un:+n}var dn=1/0,pe=17976931348623157e292;function S(n){if(!n)return n===0?n:0;if(n=ve(n),n===dn||n===-dn){var e=n<0?-1:1;return e*pe}return n===n?n:0}function we(n){var e=S(n),r=e%1;return e===e?r?e-r:e:0}function _(n){var e=n==null?0:n.length;return e?gn(n):[]}function me(n){return Zn(Qn(n,void 0,_),n+"")}var be=1,ge=4;function xe(n){return zn(n,be|ge)}var In=Object.prototype,Ee=In.hasOwnProperty,ke=Nn(function(n,e){n=Object(n);var r=-1,t=e.length,i=t>2?e[2]:void 0;for(i&&B(e[0],e[1],i)&&(t=1);++r<t;)for(var o=e[r],a=Ln(o),u=-1,d=a.length;++u<d;){var f=a[u],c=n[f];(c===void 0||ne(c,In[f])&&!Ee.call(n,f))&&(n[f]=o[f])}return n});function G(n){var e=n==null?0:n.length;return e?n[e-1]:void 0}function ye(n){return function(e,r,t){var i=Object(e);if(!_n(e)){var o=L(r);e=Xn(e),r=function(u){return o(i[u],u,i)}}var a=n(e,r,t);return a>-1?i[o?e[a]:a]:void 0}}var Ne=Math.max;function Le(n,e,r){var t=n==null?0:n.length;if(!t)return-1;var i=r==null?0:we(r);return i<0&&(i=Ne(t+i,0)),Hn(n,L(e),i)}var Z=ye(Le);function Rn(n,e){var r=-1,t=_n(n)?Array(n.length):[];return Un(n,function(i,o,a){t[++r]=e(i,o,a)}),t}function m(n,e){var r=J(n)?P:Rn;return r(n,L(e))}function _e(n,e){return n==null?n:ee(n,xn(e),Ln)}function Ce(n,e){return n&&En(n,xn(e))}function Ie(n,e){return n>e}function Tn(n,e){return n<e}function D(n,e){var r={};return e=L(e),En(n,function(t,i,o){re(r,i,e(t,i,o))}),r}function Q(n,e,r){for(var t=-1,i=n.length;++t<i;){var o=n[t],a=e(o);if(a!=null&&(u===void 0?a===a&&!F(a):r(a,u)))var u=a,d=o}return d}function E(n){return n&&n.length?Q(n,K,Ie):void 0}function R(n){return n&&n.length?Q(n,K,Tn):void 0}function nn(n,e){return n&&n.length?Q(n,L(e),Tn):void 0}function Re(n,e,r,t){if(!A(n))return n;e=kn(e,n);for(var i=-1,o=e.length,a=o-1,u=n;u!=null&&++i<o;){var d=jn(e[i]),f=r;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(i!=a){var c=u[d];f=void 0,f===void 0&&(f=A(c)?c:te(e[i+1])?[]:{})}Cn(u,d,f),u=u[d]}return n}function Te(n,e,r){for(var t=-1,i=e.length,o={};++t<i;){var a=e[t],u=yn(n,a);r(u,a)&&Re(o,kn(a,n),u)}return o}function Me(n,e){var r=n.length;for(n.sort(e);r--;)n[r]=n[r].value;return n}function Oe(n,e){if(n!==e){var r=n!==void 0,t=n===null,i=n===n,o=F(n),a=e!==void 0,u=e===null,d=e===e,f=F(e);if(!u&&!f&&!o&&n>e||o&&a&&d&&!u&&!f||t&&a&&d||!r&&d||!i)return 1;if(!t&&!o&&!f&&n<e||f&&r&&i&&!t&&!o||u&&r&&i||!a&&i||!d)return-1}return 0}function Pe(n,e,r){for(var t=-1,i=n.criteria,o=e.criteria,a=i.length,u=r.length;++t<a;){var d=Oe(i[t],o[t]);if(d){if(t>=u)return d;var f=r[t];return d*(f=="desc"?-1:1)}}return n.index-e.index}function Se(n,e,r){e.length?e=P(e,function(o){return J(o)?function(a){return yn(a,o.length===1?o[0]:o)}:o}):e=[K];var t=-1;e=P(e,ie(L));var i=Rn(n,function(o,a,u){var d=P(e,function(f){return f(o)});return{criteria:d,index:++t,value:o}});return Me(i,function(o,a){return Pe(o,a,r)})}function Fe(n,e){return Te(n,e,function(r,t){return Jn(n,t)})}var V=me(function(n,e){return n==null?{}:Fe(n,e)}),Ae=Math.ceil,Be=Math.max;function Ge(n,e,r,t){for(var i=-1,o=Be(Ae((e-n)/(r||1)),0),a=Array(o);o--;)a[++i]=n,n+=r;return a}function Ve(n){return function(e,r,t){return t&&typeof t!="number"&&B(e,r,t)&&(r=t=void 0),e=S(e),r===void 0?(r=e,e=0):r=S(r),t=t===void 0?e<r?1:-1:S(t),Ge(e,r,t)}}var N=Ve(),O=Nn(function(n,e){if(n==null)return[];var r=e.length;return r>1&&B(n,e[0],e[1])?e=[]:r>2&&B(e[0],e[1],e[2])&&(e=[e[0]]),Se(n,gn(e),[])}),Ye=0;function en(n){var e=++Ye;return Kn(n)+e}function De(n,e,r){for(var t=-1,i=n.length,o=e.length,a={};++t<i;){var u=t<o?e[t]:void 0;r(a,n[t],u)}return a}function $e(n,e){return De(n||[],e||[],Cn)}class qe{constructor(){var e={};e._next=e._prev=e,this._sentinel=e}dequeue(){var e=this._sentinel,r=e._prev;if(r!==e)return fn(r),r}enqueue(e){var r=this._sentinel;e._prev&&e._next&&fn(e),e._next=r._next,r._next._prev=e,r._next=e,e._prev=r}toString(){for(var e=[],r=this._sentinel,t=r._prev;t!==r;)e.push(JSON.stringify(t,We)),t=t._prev;return"["+e.join(", ")+"]"}}function fn(n){n._prev._next=n._next,n._next._prev=n._prev,delete n._next,delete n._prev}function We(n,e){if(n!=="_next"&&n!=="_prev")return e}var ze=ae(1);function Xe(n,e){if(n.nodeCount()<=1)return[];var r=Ue(n,e||ze),t=He(r.graph,r.buckets,r.zeroIdx);return _(m(t,function(i){return n.outEdges(i.v,i.w)}))}function He(n,e,r){for(var t=[],i=e[e.length-1],o=e[0],a;n.nodeCount();){for(;a=o.dequeue();)q(n,e,r,a);for(;a=i.dequeue();)q(n,e,r,a);if(n.nodeCount()){for(var u=e.length-2;u>0;--u)if(a=e[u].dequeue(),a){t=t.concat(q(n,e,r,a,!0));break}}}return t}function q(n,e,r,t,i){var o=i?[]:void 0;return s(n.inEdges(t.v),function(a){var u=n.edge(a),d=n.node(a.v);i&&o.push({v:a.v,w:a.w}),d.out-=u,j(e,r,d)}),s(n.outEdges(t.v),function(a){var u=n.edge(a),d=a.w,f=n.node(d);f.in-=u,j(e,r,f)}),n.removeNode(t.v),o}function Ue(n,e){var r=new x,t=0,i=0;s(n.nodes(),function(u){r.setNode(u,{v:u,in:0,out:0})}),s(n.edges(),function(u){var d=r.edge(u.v,u.w)||0,f=e(u),c=d+f;r.setEdge(u.v,u.w,c),i=Math.max(i,r.node(u.v).out+=f),t=Math.max(t,r.node(u.w).in+=f)});var o=N(i+t+3).map(function(){return new qe}),a=t+1;return s(r.nodes(),function(u){j(o,a,r.node(u))}),{graph:r,buckets:o,zeroIdx:a}}function j(n,e,r){r.out?r.in?n[r.out-r.in+e].enqueue(r):n[n.length-1].enqueue(r):n[0].enqueue(r)}function je(n){var e=n.graph().acyclicer==="greedy"?Xe(n,r(n)):Je(n);s(e,function(t){var i=n.edge(t);n.removeEdge(t),i.forwardName=t.name,i.reversed=!0,n.setEdge(t.w,t.v,i,en("rev"))});function r(t){return function(i){return t.edge(i).weight}}}function Je(n){var e=[],r={},t={};function i(o){w(t,o)||(t[o]=!0,r[o]=!0,s(n.outEdges(o),function(a){w(r,a.w)?e.push(a):i(a.w)}),delete r[o])}return s(n.nodes(),i),e}function Ke(n){s(n.edges(),function(e){var r=n.edge(e);if(r.reversed){n.removeEdge(e);var t=r.forwardName;delete r.reversed,delete r.forwardName,n.setEdge(e.w,e.v,r,t)}})}function C(n,e,r,t){var i;do i=en(t);while(n.hasNode(i));return r.dummy=e,n.setNode(i,r),i}function Ze(n){var e=new x().setGraph(n.graph());return s(n.nodes(),function(r){e.setNode(r,n.node(r))}),s(n.edges(),function(r){var t=e.edge(r.v,r.w)||{weight:0,minlen:1},i=n.edge(r);e.setEdge(r.v,r.w,{weight:t.weight+i.weight,minlen:Math.max(t.minlen,i.minlen)})}),e}function Mn(n){var e=new x({multigraph:n.isMultigraph()}).setGraph(n.graph());return s(n.nodes(),function(r){n.children(r).length||e.setNode(r,n.node(r))}),s(n.edges(),function(r){e.setEdge(r,n.edge(r))}),e}function sn(n,e){var r=n.x,t=n.y,i=e.x-r,o=e.y-t,a=n.width/2,u=n.height/2;if(!i&&!o)throw new Error("Not possible to find intersection inside of the rectangle");var d,f;return Math.abs(o)*a>Math.abs(i)*u?(o<0&&(u=-u),d=u*i/o,f=u):(i<0&&(a=-a),d=a,f=a*o/i),{x:r+d,y:t+f}}function $(n){var e=m(N(On(n)+1),function(){return[]});return s(n.nodes(),function(r){var t=n.node(r),i=t.rank;g(i)||(e[i][t.order]=r)}),e}function Qe(n){var e=R(m(n.nodes(),function(r){return n.node(r).rank}));s(n.nodes(),function(r){var t=n.node(r);w(t,"rank")&&(t.rank-=e)})}function nr(n){var e=R(m(n.nodes(),function(o){return n.node(o).rank})),r=[];s(n.nodes(),function(o){var a=n.node(o).rank-e;r[a]||(r[a]=[]),r[a].push(o)});var t=0,i=n.graph().nodeRankFactor;s(r,function(o,a){g(o)&&a%i!==0?--t:t&&s(o,function(u){n.node(u).rank+=t})})}function cn(n,e,r,t){var i={width:0,height:0};return arguments.length>=4&&(i.rank=r,i.order=t),C(n,"border",i,e)}function On(n){return E(m(n.nodes(),function(e){var r=n.node(e).rank;if(!g(r))return r}))}function er(n,e){var r={lhs:[],rhs:[]};return s(n,function(t){e(t)?r.lhs.push(t):r.rhs.push(t)}),r}function rr(n,e){return e()}function tr(n){function e(r){var t=n.children(r),i=n.node(r);if(t.length&&s(t,e),w(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var o=i.minRank,a=i.maxRank+1;o<a;++o)hn(n,"borderLeft","_bl",r,i,o),hn(n,"borderRight","_br",r,i,o)}}s(n.children(),e)}function hn(n,e,r,t,i,o){var a={width:0,height:0,rank:o,borderType:e},u=i[e][o-1],d=C(n,"border",a,r);i[e][o]=d,n.setParent(d,t),u&&n.setEdge(u,d,{weight:1})}function ir(n){var e=n.graph().rankdir.toLowerCase();(e==="lr"||e==="rl")&&Pn(n)}function ar(n){var e=n.graph().rankdir.toLowerCase();(e==="bt"||e==="rl")&&or(n),(e==="lr"||e==="rl")&&(ur(n),Pn(n))}function Pn(n){s(n.nodes(),function(e){ln(n.node(e))}),s(n.edges(),function(e){ln(n.edge(e))})}function ln(n){var e=n.width;n.width=n.height,n.height=e}function or(n){s(n.nodes(),function(e){W(n.node(e))}),s(n.edges(),function(e){var r=n.edge(e);s(r.points,W),w(r,"y")&&W(r)})}function W(n){n.y=-n.y}function ur(n){s(n.nodes(),function(e){z(n.node(e))}),s(n.edges(),function(e){var r=n.edge(e);s(r.points,z),w(r,"x")&&z(r)})}function z(n){var e=n.x;n.x=n.y,n.y=e}function dr(n){n.graph().dummyChains=[],s(n.edges(),function(e){fr(n,e)})}function fr(n,e){var r=e.v,t=n.node(r).rank,i=e.w,o=n.node(i).rank,a=e.name,u=n.edge(e),d=u.labelRank;if(o!==t+1){n.removeEdge(e);var f,c,h;for(h=0,++t;t<o;++h,++t)u.points=[],c={width:0,height:0,edgeLabel:u,edgeObj:e,rank:t},f=C(n,"edge",c,"_d"),t===d&&(c.width=u.width,c.height=u.height,c.dummy="edge-label",c.labelpos=u.labelpos),n.setEdge(r,f,{weight:u.weight},a),h===0&&n.graph().dummyChains.push(f),r=f;n.setEdge(r,i,{weight:u.weight},a)}}function sr(n){s(n.graph().dummyChains,function(e){var r=n.node(e),t=r.edgeLabel,i;for(n.setEdge(r.edgeObj,t);r.dummy;)i=n.successors(e)[0],n.removeNode(e),t.points.push({x:r.x,y:r.y}),r.dummy==="edge-label"&&(t.x=r.x,t.y=r.y,t.width=r.width,t.height=r.height),e=i,r=n.node(e)})}function rn(n){var e={};function r(t){var i=n.node(t);if(w(e,t))return i.rank;e[t]=!0;var o=R(m(n.outEdges(t),function(a){return r(a.w)-n.edge(a).minlen}));return(o===Number.POSITIVE_INFINITY||o===void 0||o===null)&&(o=0),i.rank=o}s(n.sources(),r)}function T(n,e){return n.node(e.w).rank-n.node(e.v).rank-n.edge(e).minlen}function Sn(n){var e=new x({directed:!1}),r=n.nodes()[0],t=n.nodeCount();e.setNode(r,{});for(var i,o;cr(e,n)<t;)i=hr(e,n),o=e.hasNode(i.v)?T(n,i):-T(n,i),lr(e,n,o);return e}function cr(n,e){function r(t){s(e.nodeEdges(t),function(i){var o=i.v,a=t===o?i.w:o;!n.hasNode(a)&&!T(e,i)&&(n.setNode(a,{}),n.setEdge(t,a,{}),r(a))})}return s(n.nodes(),r),n.nodeCount()}function hr(n,e){return nn(e.edges(),function(r){if(n.hasNode(r.v)!==n.hasNode(r.w))return T(e,r)})}function lr(n,e,r){s(n.nodes(),function(t){e.node(t).rank+=r})}function vr(){}vr.prototype=new Error;function Fn(n,e,r){J(e)||(e=[e]);var t=(n.isDirected()?n.successors:n.neighbors).bind(n),i=[],o={};return s(e,function(a){if(!n.hasNode(a))throw new Error("Graph does not have node: "+a);An(n,a,r==="post",o,t,i)}),i}function An(n,e,r,t,i,o){w(t,e)||(t[e]=!0,r||o.push(e),s(i(e),function(a){An(n,a,r,t,i,o)}),r&&o.push(e))}function pr(n,e){return Fn(n,e,"post")}function wr(n,e){return Fn(n,e,"pre")}k.initLowLimValues=an;k.initCutValues=tn;k.calcCutValue=Bn;k.leaveEdge=Vn;k.enterEdge=Yn;k.exchangeEdges=Dn;function k(n){n=Ze(n),rn(n);var e=Sn(n);an(e),tn(e,n);for(var r,t;r=Vn(e);)t=Yn(e,n,r),Dn(e,n,r,t)}function tn(n,e){var r=pr(n,n.nodes());r=r.slice(0,r.length-1),s(r,function(t){mr(n,e,t)})}function mr(n,e,r){var t=n.node(r),i=t.parent;n.edge(r,i).cutvalue=Bn(n,e,r)}function Bn(n,e,r){var t=n.node(r),i=t.parent,o=!0,a=e.edge(r,i),u=0;return a||(o=!1,a=e.edge(i,r)),u=a.weight,s(e.nodeEdges(r),function(d){var f=d.v===r,c=f?d.w:d.v;if(c!==i){var h=f===o,l=e.edge(d).weight;if(u+=h?l:-l,gr(n,r,c)){var v=n.edge(r,c).cutvalue;u+=h?-v:v}}}),u}function an(n,e){arguments.length<2&&(e=n.nodes()[0]),Gn(n,{},1,e)}function Gn(n,e,r,t,i){var o=r,a=n.node(t);return e[t]=!0,s(n.neighbors(t),function(u){w(e,u)||(r=Gn(n,e,r,u,t))}),a.low=o,a.lim=r++,i?a.parent=i:delete a.parent,r}function Vn(n){return Z(n.edges(),function(e){return n.edge(e).cutvalue<0})}function Yn(n,e,r){var t=r.v,i=r.w;e.hasEdge(t,i)||(t=r.w,i=r.v);var o=n.node(t),a=n.node(i),u=o,d=!1;o.lim>a.lim&&(u=a,d=!0);var f=M(e.edges(),function(c){return d===vn(n,n.node(c.v),u)&&d!==vn(n,n.node(c.w),u)});return nn(f,function(c){return T(e,c)})}function Dn(n,e,r,t){var i=r.v,o=r.w;n.removeEdge(i,o),n.setEdge(t.v,t.w,{}),an(n),tn(n,e),br(n,e)}function br(n,e){var r=Z(n.nodes(),function(i){return!e.node(i).parent}),t=wr(n,r);t=t.slice(1),s(t,function(i){var o=n.node(i).parent,a=e.edge(i,o),u=!1;a||(a=e.edge(o,i),u=!0),e.node(i).rank=e.node(o).rank+(u?a.minlen:-a.minlen)})}function gr(n,e,r){return n.hasEdge(e,r)}function vn(n,e,r){return r.low<=e.lim&&e.lim<=r.lim}function xr(n){switch(n.graph().ranker){case"network-simplex":pn(n);break;case"tight-tree":kr(n);break;case"longest-path":Er(n);break;default:pn(n)}}var Er=rn;function kr(n){rn(n),Sn(n)}function pn(n){k(n)}function yr(n){var e=C(n,"root",{},"_root"),r=Nr(n),t=E(y(r))-1,i=2*t+1;n.graph().nestingRoot=e,s(n.edges(),function(a){n.edge(a).minlen*=i});var o=Lr(n)+1;s(n.children(),function(a){$n(n,e,i,o,t,r,a)}),n.graph().nodeRankFactor=i}function $n(n,e,r,t,i,o,a){var u=n.children(a);if(!u.length){a!==e&&n.setEdge(e,a,{weight:0,minlen:r});return}var d=cn(n,"_bt"),f=cn(n,"_bb"),c=n.node(a);n.setParent(d,a),c.borderTop=d,n.setParent(f,a),c.borderBottom=f,s(u,function(h){$n(n,e,r,t,i,o,h);var l=n.node(h),v=l.borderTop?l.borderTop:h,p=l.borderBottom?l.borderBottom:h,b=l.borderTop?t:2*t,I=v!==p?1:i-o[a]+1;n.setEdge(d,v,{weight:b,minlen:I,nestingEdge:!0}),n.setEdge(p,f,{weight:b,minlen:I,nestingEdge:!0})}),n.parent(a)||n.setEdge(e,d,{weight:0,minlen:i+o[a]})}function Nr(n){var e={};function r(t,i){var o=n.children(t);o&&o.length&&s(o,function(a){r(a,i+1)}),e[t]=i}return s(n.children(),function(t){r(t,1)}),e}function Lr(n){return Y(n.edges(),function(e,r){return e+n.edge(r).weight},0)}function _r(n){var e=n.graph();n.removeNode(e.nestingRoot),delete e.nestingRoot,s(n.edges(),function(r){var t=n.edge(r);t.nestingEdge&&n.removeEdge(r)})}function Cr(n,e,r){var t={},i;s(r,function(o){for(var a=n.parent(o),u,d;a;){if(u=n.parent(a),u?(d=t[u],t[u]=a):(d=i,i=a),d&&d!==a){e.setEdge(d,a);return}a=u}})}function Ir(n,e,r){var t=Rr(n),i=new x({compound:!0}).setGraph({root:t}).setDefaultNodeLabel(function(o){return n.node(o)});return s(n.nodes(),function(o){var a=n.node(o),u=n.parent(o);(a.rank===e||a.minRank<=e&&e<=a.maxRank)&&(i.setNode(o),i.setParent(o,u||t),s(n[r](o),function(d){var f=d.v===o?d.w:d.v,c=i.edge(f,o),h=g(c)?0:c.weight;i.setEdge(f,o,{weight:n.edge(d).weight+h})}),w(a,"minRank")&&i.setNode(o,{borderLeft:a.borderLeft[e],borderRight:a.borderRight[e]}))}),i}function Rr(n){for(var e;n.hasNode(e=en("_root")););return e}function Tr(n,e){for(var r=0,t=1;t<e.length;++t)r+=Mr(n,e[t-1],e[t]);return r}function Mr(n,e,r){for(var t=$e(r,m(r,function(f,c){return c})),i=_(m(e,function(f){return O(m(n.outEdges(f),function(c){return{pos:t[c.w],weight:n.edge(c).weight}}),"pos")})),o=1;o<r.length;)o<<=1;var a=2*o-1;o-=1;var u=m(new Array(a),function(){return 0}),d=0;return s(i.forEach(function(f){var c=f.pos+o;u[c]+=f.weight;for(var h=0;c>0;)c%2&&(h+=u[c+1]),c=c-1>>1,u[c]+=f.weight;d+=f.weight*h})),d}function Or(n){var e={},r=M(n.nodes(),function(u){return!n.children(u).length}),t=E(m(r,function(u){return n.node(u).rank})),i=m(N(t+1),function(){return[]});function o(u){if(!w(e,u)){e[u]=!0;var d=n.node(u);i[d.rank].push(u),s(n.successors(u),o)}}var a=O(r,function(u){return n.node(u).rank});return s(a,o),i}function Pr(n,e){return m(e,function(r){var t=n.inEdges(r);if(t.length){var i=Y(t,function(o,a){var u=n.edge(a),d=n.node(a.v);return{sum:o.sum+u.weight*d.order,weight:o.weight+u.weight}},{sum:0,weight:0});return{v:r,barycenter:i.sum/i.weight,weight:i.weight}}else return{v:r}})}function Sr(n,e){var r={};s(n,function(i,o){var a=r[i.v]={indegree:0,in:[],out:[],vs:[i.v],i:o};g(i.barycenter)||(a.barycenter=i.barycenter,a.weight=i.weight)}),s(e.edges(),function(i){var o=r[i.v],a=r[i.w];!g(o)&&!g(a)&&(a.indegree++,o.out.push(r[i.w]))});var t=M(r,function(i){return!i.indegree});return Fr(t)}function Fr(n){var e=[];function r(o){return function(a){a.merged||(g(a.barycenter)||g(o.barycenter)||a.barycenter>=o.barycenter)&&Ar(o,a)}}function t(o){return function(a){a.in.push(o),--a.indegree===0&&n.push(a)}}for(;n.length;){var i=n.pop();e.push(i),s(i.in.reverse(),r(i)),s(i.out,t(i))}return m(M(e,function(o){return!o.merged}),function(o){return V(o,["vs","i","barycenter","weight"])})}function Ar(n,e){var r=0,t=0;n.weight&&(r+=n.barycenter*n.weight,t+=n.weight),e.weight&&(r+=e.barycenter*e.weight,t+=e.weight),n.vs=e.vs.concat(n.vs),n.barycenter=r/t,n.weight=t,n.i=Math.min(e.i,n.i),e.merged=!0}function Br(n,e){var r=er(n,function(c){return w(c,"barycenter")}),t=r.lhs,i=O(r.rhs,function(c){return-c.i}),o=[],a=0,u=0,d=0;t.sort(Gr(!!e)),d=wn(o,i,d),s(t,function(c){d+=c.vs.length,o.push(c.vs),a+=c.barycenter*c.weight,u+=c.weight,d=wn(o,i,d)});var f={vs:_(o)};return u&&(f.barycenter=a/u,f.weight=u),f}function wn(n,e,r){for(var t;e.length&&(t=G(e)).i<=r;)e.pop(),n.push(t.vs),r++;return r}function Gr(n){return function(e,r){return e.barycenter<r.barycenter?-1:e.barycenter>r.barycenter?1:n?r.i-e.i:e.i-r.i}}function qn(n,e,r,t){var i=n.children(e),o=n.node(e),a=o?o.borderLeft:void 0,u=o?o.borderRight:void 0,d={};a&&(i=M(i,function(p){return p!==a&&p!==u}));var f=Pr(n,i);s(f,function(p){if(n.children(p.v).length){var b=qn(n,p.v,r,t);d[p.v]=b,w(b,"barycenter")&&Yr(p,b)}});var c=Sr(f,r);Vr(c,d);var h=Br(c,t);if(a&&(h.vs=_([a,h.vs,u]),n.predecessors(a).length)){var l=n.node(n.predecessors(a)[0]),v=n.node(n.predecessors(u)[0]);w(h,"barycenter")||(h.barycenter=0,h.weight=0),h.barycenter=(h.barycenter*h.weight+l.order+v.order)/(h.weight+2),h.weight+=2}return h}function Vr(n,e){s(n,function(r){r.vs=_(r.vs.map(function(t){return e[t]?e[t].vs:t}))})}function Yr(n,e){g(n.barycenter)?(n.barycenter=e.barycenter,n.weight=e.weight):(n.barycenter=(n.barycenter*n.weight+e.barycenter*e.weight)/(n.weight+e.weight),n.weight+=e.weight)}function Dr(n){var e=On(n),r=mn(n,N(1,e+1),"inEdges"),t=mn(n,N(e-1,-1,-1),"outEdges"),i=Or(n);bn(n,i);for(var o=Number.POSITIVE_INFINITY,a,u=0,d=0;d<4;++u,++d){$r(u%2?r:t,u%4>=2),i=$(n);var f=Tr(n,i);f<o&&(d=0,a=xe(i),o=f)}bn(n,a)}function mn(n,e,r){return m(e,function(t){return Ir(n,t,r)})}function $r(n,e){var r=new x;s(n,function(t){var i=t.graph().root,o=qn(t,i,r,e);s(o.vs,function(a,u){t.node(a).order=u}),Cr(t,r,o.vs)})}function bn(n,e){s(e,function(r){s(r,function(t,i){n.node(t).order=i})})}function qr(n){var e=zr(n);s(n.graph().dummyChains,function(r){for(var t=n.node(r),i=t.edgeObj,o=Wr(n,e,i.v,i.w),a=o.path,u=o.lca,d=0,f=a[d],c=!0;r!==i.w;){if(t=n.node(r),c){for(;(f=a[d])!==u&&n.node(f).maxRank<t.rank;)d++;f===u&&(c=!1)}if(!c){for(;d<a.length-1&&n.node(f=a[d+1]).minRank<=t.rank;)d++;f=a[d]}n.setParent(r,f),r=n.successors(r)[0]}})}function Wr(n,e,r,t){var i=[],o=[],a=Math.min(e[r].low,e[t].low),u=Math.max(e[r].lim,e[t].lim),d,f;d=r;do d=n.parent(d),i.push(d);while(d&&(e[d].low>a||u>e[d].lim));for(f=d,d=t;(d=n.parent(d))!==f;)o.push(d);return{path:i.concat(o.reverse()),lca:f}}function zr(n){var e={},r=0;function t(i){var o=r;s(n.children(i),t),e[i]={low:o,lim:r++}}return s(n.children(),t),e}function Xr(n,e){var r={};function t(i,o){var a=0,u=0,d=i.length,f=G(o);return s(o,function(c,h){var l=Ur(n,c),v=l?n.node(l).order:d;(l||c===f)&&(s(o.slice(u,h+1),function(p){s(n.predecessors(p),function(b){var I=n.node(b),on=I.order;(on<a||v<on)&&!(I.dummy&&n.node(p).dummy)&&Wn(r,b,p)})}),u=h+1,a=v)}),o}return Y(e,t),r}function Hr(n,e){var r={};function t(o,a,u,d,f){var c;s(N(a,u),function(h){c=o[h],n.node(c).dummy&&s(n.predecessors(c),function(l){var v=n.node(l);v.dummy&&(v.order<d||v.order>f)&&Wn(r,l,c)})})}function i(o,a){var u=-1,d,f=0;return s(a,function(c,h){if(n.node(c).dummy==="border"){var l=n.predecessors(c);l.length&&(d=n.node(l[0]).order,t(a,f,h,u,d),f=h,u=d)}t(a,f,a.length,d,o.length)}),a}return Y(e,i),r}function Ur(n,e){if(n.node(e).dummy)return Z(n.predecessors(e),function(r){return n.node(r).dummy})}function Wn(n,e,r){if(e>r){var t=e;e=r,r=t}var i=n[e];i||(n[e]=i={}),i[r]=!0}function jr(n,e,r){if(e>r){var t=e;e=r,r=t}return w(n[e],r)}function Jr(n,e,r,t){var i={},o={},a={};return s(e,function(u){s(u,function(d,f){i[d]=d,o[d]=d,a[d]=f})}),s(e,function(u){var d=-1;s(u,function(f){var c=t(f);if(c.length){c=O(c,function(b){return a[b]});for(var h=(c.length-1)/2,l=Math.floor(h),v=Math.ceil(h);l<=v;++l){var p=c[l];o[f]===f&&d<a[p]&&!jr(r,f,p)&&(o[p]=f,o[f]=i[f]=i[p],d=a[p])}}})}),{root:i,align:o}}function Kr(n,e,r,t,i){var o={},a=Zr(n,e,r,i),u=i?"borderLeft":"borderRight";function d(h,l){for(var v=a.nodes(),p=v.pop(),b={};p;)b[p]?h(p):(b[p]=!0,v.push(p),v=v.concat(l(p))),p=v.pop()}function f(h){o[h]=a.inEdges(h).reduce(function(l,v){return Math.max(l,o[v.v]+a.edge(v))},0)}function c(h){var l=a.outEdges(h).reduce(function(p,b){return Math.min(p,o[b.w]-a.edge(b))},Number.POSITIVE_INFINITY),v=n.node(h);l!==Number.POSITIVE_INFINITY&&v.borderType!==u&&(o[h]=Math.max(o[h],l))}return d(f,a.predecessors.bind(a)),d(c,a.successors.bind(a)),s(t,function(h){o[h]=o[r[h]]}),o}function Zr(n,e,r,t){var i=new x,o=n.graph(),a=tt(o.nodesep,o.edgesep,t);return s(e,function(u){var d;s(u,function(f){var c=r[f];if(i.setNode(c),d){var h=r[d],l=i.edge(h,c);i.setEdge(h,c,Math.max(a(n,f,d),l||0))}d=f})}),i}function Qr(n,e){return nn(y(e),function(r){var t=Number.NEGATIVE_INFINITY,i=Number.POSITIVE_INFINITY;return _e(r,function(o,a){var u=it(n,a)/2;t=Math.max(o+u,t),i=Math.min(o-u,i)}),t-i})}function nt(n,e){var r=y(e),t=R(r),i=E(r);s(["u","d"],function(o){s(["l","r"],function(a){var u=o+a,d=n[u],f;if(d!==e){var c=y(d);f=a==="l"?t-R(c):i-E(c),f&&(n[u]=D(d,function(h){return h+f}))}})})}function et(n,e){return D(n.ul,function(r,t){if(e)return n[e.toLowerCase()][t];var i=O(m(n,t));return(i[1]+i[2])/2})}function rt(n){var e=$(n),r=U(Xr(n,e),Hr(n,e)),t={},i;s(["u","d"],function(a){i=a==="u"?e:y(e).reverse(),s(["l","r"],function(u){u==="r"&&(i=m(i,function(h){return y(h).reverse()}));var d=(a==="u"?n.predecessors:n.successors).bind(n),f=Jr(n,i,r,d),c=Kr(n,i,f.root,f.align,u==="r");u==="r"&&(c=D(c,function(h){return-h})),t[a+u]=c})});var o=Qr(n,t);return nt(t,o),et(t,n.graph().align)}function tt(n,e,r){return function(t,i,o){var a=t.node(i),u=t.node(o),d=0,f;if(d+=a.width/2,w(a,"labelpos"))switch(a.labelpos.toLowerCase()){case"l":f=-a.width/2;break;case"r":f=a.width/2;break}if(f&&(d+=r?f:-f),f=0,d+=(a.dummy?e:n)/2,d+=(u.dummy?e:n)/2,d+=u.width/2,w(u,"labelpos"))switch(u.labelpos.toLowerCase()){case"l":f=u.width/2;break;case"r":f=-u.width/2;break}return f&&(d+=r?f:-f),f=0,d}}function it(n,e){return n.node(e).width}function at(n){n=Mn(n),ot(n),Ce(rt(n),function(e,r){n.node(r).x=e})}function ot(n){var e=$(n),r=n.graph().ranksep,t=0;s(e,function(i){var o=E(m(i,function(a){return n.node(a).height}));s(i,function(a){n.node(a).y=t+o/2}),t+=o+r})}function Ot(n,e){var r=rr;r("layout",function(){var t=r(" buildLayoutGraph",function(){return mt(n)});r(" runLayout",function(){ut(t,r)}),r(" updateInputGraph",function(){dt(n,t)})})}function ut(n,e){e(" makeSpaceForEdgeLabels",function(){bt(n)}),e(" removeSelfEdges",function(){Ct(n)}),e(" acyclic",function(){je(n)}),e(" nestingGraph.run",function(){yr(n)}),e(" rank",function(){xr(Mn(n))}),e(" injectEdgeLabelProxies",function(){gt(n)}),e(" removeEmptyRanks",function(){nr(n)}),e(" nestingGraph.cleanup",function(){_r(n)}),e(" normalizeRanks",function(){Qe(n)}),e(" assignRankMinMax",function(){xt(n)}),e(" removeEdgeLabelProxies",function(){Et(n)}),e(" normalize.run",function(){dr(n)}),e(" parentDummyChains",function(){qr(n)}),e(" addBorderSegments",function(){tr(n)}),e(" order",function(){Dr(n)}),e(" insertSelfEdges",function(){It(n)}),e(" adjustCoordinateSystem",function(){ir(n)}),e(" position",function(){at(n)}),e(" positionSelfEdges",function(){Rt(n)}),e(" removeBorderNodes",function(){_t(n)}),e(" normalize.undo",function(){sr(n)}),e(" fixupEdgeLabelCoords",function(){Nt(n)}),e(" undoCoordinateSystem",function(){ar(n)}),e(" translateGraph",function(){kt(n)}),e(" assignNodeIntersects",function(){yt(n)}),e(" reversePoints",function(){Lt(n)}),e(" acyclic.undo",function(){Ke(n)})}function dt(n,e){s(n.nodes(),function(r){var t=n.node(r),i=e.node(r);t&&(t.x=i.x,t.y=i.y,e.children(r).length&&(t.width=i.width,t.height=i.height))}),s(n.edges(),function(r){var t=n.edge(r),i=e.edge(r);t.points=i.points,w(i,"x")&&(t.x=i.x,t.y=i.y)}),n.graph().width=e.graph().width,n.graph().height=e.graph().height}var ft=["nodesep","edgesep","ranksep","marginx","marginy"],st={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},ct=["acyclicer","ranker","rankdir","align"],ht=["width","height"],lt={width:0,height:0},vt=["minlen","weight","width","height","labeloffset"],pt={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},wt=["labelpos"];function mt(n){var e=new x({multigraph:!0,compound:!0}),r=H(n.graph());return e.setGraph(U({},st,X(r,ft),V(r,ct))),s(n.nodes(),function(t){var i=H(n.node(t));e.setNode(t,ke(X(i,ht),lt)),e.setParent(t,n.parent(t))}),s(n.edges(),function(t){var i=H(n.edge(t));e.setEdge(t,U({},pt,X(i,vt),V(i,wt)))}),e}function bt(n){var e=n.graph();e.ranksep/=2,s(n.edges(),function(r){var t=n.edge(r);t.minlen*=2,t.labelpos.toLowerCase()!=="c"&&(e.rankdir==="TB"||e.rankdir==="BT"?t.width+=t.labeloffset:t.height+=t.labeloffset)})}function gt(n){s(n.edges(),function(e){var r=n.edge(e);if(r.width&&r.height){var t=n.node(e.v),i=n.node(e.w),o={rank:(i.rank-t.rank)/2+t.rank,e};C(n,"edge-proxy",o,"_ep")}})}function xt(n){var e=0;s(n.nodes(),function(r){var t=n.node(r);t.borderTop&&(t.minRank=n.node(t.borderTop).rank,t.maxRank=n.node(t.borderBottom).rank,e=E(e,t.maxRank))}),n.graph().maxRank=e}function Et(n){s(n.nodes(),function(e){var r=n.node(e);r.dummy==="edge-proxy"&&(n.edge(r.e).labelRank=r.rank,n.removeNode(e))})}function kt(n){var e=Number.POSITIVE_INFINITY,r=0,t=Number.POSITIVE_INFINITY,i=0,o=n.graph(),a=o.marginx||0,u=o.marginy||0;function d(f){var c=f.x,h=f.y,l=f.width,v=f.height;e=Math.min(e,c-l/2),r=Math.max(r,c+l/2),t=Math.min(t,h-v/2),i=Math.max(i,h+v/2)}s(n.nodes(),function(f){d(n.node(f))}),s(n.edges(),function(f){var c=n.edge(f);w(c,"x")&&d(c)}),e-=a,t-=u,s(n.nodes(),function(f){var c=n.node(f);c.x-=e,c.y-=t}),s(n.edges(),function(f){var c=n.edge(f);s(c.points,function(h){h.x-=e,h.y-=t}),w(c,"x")&&(c.x-=e),w(c,"y")&&(c.y-=t)}),o.width=r-e+a,o.height=i-t+u}function yt(n){s(n.edges(),function(e){var r=n.edge(e),t=n.node(e.v),i=n.node(e.w),o,a;r.points?(o=r.points[0],a=r.points[r.points.length-1]):(r.points=[],o=i,a=t),r.points.unshift(sn(t,o)),r.points.push(sn(i,a))})}function Nt(n){s(n.edges(),function(e){var r=n.edge(e);if(w(r,"x"))switch((r.labelpos==="l"||r.labelpos==="r")&&(r.width-=r.labeloffset),r.labelpos){case"l":r.x-=r.width/2+r.labeloffset;break;case"r":r.x+=r.width/2+r.labeloffset;break}})}function Lt(n){s(n.edges(),function(e){var r=n.edge(e);r.reversed&&r.points.reverse()})}function _t(n){s(n.nodes(),function(e){if(n.children(e).length){var r=n.node(e),t=n.node(r.borderTop),i=n.node(r.borderBottom),o=n.node(G(r.borderLeft)),a=n.node(G(r.borderRight));r.width=Math.abs(a.x-o.x),r.height=Math.abs(i.y-t.y),r.x=o.x+r.width/2,r.y=t.y+r.height/2}}),s(n.nodes(),function(e){n.node(e).dummy==="border"&&n.removeNode(e)})}function Ct(n){s(n.edges(),function(e){if(e.v===e.w){var r=n.node(e.v);r.selfEdges||(r.selfEdges=[]),r.selfEdges.push({e,label:n.edge(e)}),n.removeEdge(e)}})}function It(n){var e=$(n);s(e,function(r){var t=0;s(r,function(i,o){var a=n.node(i);a.order=o+t,s(a.selfEdges,function(u){C(n,"selfedge",{width:u.label.width,height:u.label.height,rank:a.rank,order:o+ ++t,e:u.e,label:u.label},"_se")}),delete a.selfEdges})})}function Rt(n){s(n.nodes(),function(e){var r=n.node(e);if(r.dummy==="selfedge"){var t=n.node(r.e.v),i=t.x+t.width/2,o=t.y,a=r.x-i,u=t.height/2;n.setEdge(r.e,r.label),n.removeNode(e),r.label.points=[{x:i+2*a/3,y:o-u},{x:i+5*a/6,y:o-u},{x:i+a,y:o},{x:i+5*a/6,y:o+u},{x:i+2*a/3,y:o+u}],r.label.x=r.x,r.label.y=r.y}})}function X(n,e){return D(V(n,e),Number)}function H(n){var e={};return s(n,function(r,t){e[t.toLowerCase()]=r}),e}export{ke as d,Ot as l,m,V as p,N as r,en as u};