@runfusion/fusion 0.77.0-beta.2 → 0.77.0-beta.4

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 (173) hide show
  1. package/dist/bin.js +12324 -8618
  2. package/dist/child-process-worker.js +8252 -6106
  3. package/dist/client/.vite/manifest.json +294 -267
  4. package/dist/client/assets/{AgentDetailView-Dew3af1O.js → AgentDetailView-CH6GtXl9.js} +3 -3
  5. package/dist/client/assets/{AgentPermissionPolicyEditor-CxPQffiY.js → AgentPermissionPolicyEditor-YTEpMhUx.js} +1 -1
  6. package/dist/client/assets/{AgentsView-Cr4LDGdt.js → AgentsView-XOHHDo4a.js} +4 -4
  7. package/dist/client/assets/ChatView-gH7QX3TI.js +13 -0
  8. package/dist/client/assets/{CommandCenter-DCC90LOP.js → CommandCenter-BsH-R15f.js} +3 -3
  9. package/dist/client/assets/{DevServerView-B5b520w6.js → DevServerView-CKOa-lkc.js} +1 -1
  10. package/dist/client/assets/{DirectoryPicker-1JvRd5mC.js → DirectoryPicker-DHUYTE-j.js} +1 -1
  11. package/dist/client/assets/DocumentsView-BPzrxeP-.js +1 -0
  12. package/dist/client/assets/{EvalsView-a3LhgRSo.js → EvalsView-DojCiv47.js} +1 -1
  13. package/dist/client/assets/{ExperimentalAgentOnboardingModal-vdVa8h7F.js → ExperimentalAgentOnboardingModal-DuurZ8qe.js} +1 -1
  14. package/dist/client/assets/{GoalsView-Dz2o91fd.js → GoalsView-DDWPXcG1.js} +1 -1
  15. package/dist/client/assets/{InsightsView-De3R_46d.js → InsightsView-CgkMOD1A.js} +3 -3
  16. package/dist/client/assets/MemoryView-Cj49_z7O.js +3 -0
  17. package/dist/client/assets/{PiExtensionsManager-C9JABO_4.js → PiExtensionsManager-B_rRJiOd.js} +1 -1
  18. package/dist/client/assets/PluginManager-Dxwi88oY.js +1 -0
  19. package/dist/client/assets/{PullRequestView-DT8vTeVi.js → PullRequestView-z-5v2hQT.js} +2 -2
  20. package/dist/client/assets/ReportModal-DmOPEYWp.js +21 -0
  21. package/dist/client/assets/ReportModal-lzN_xrnM.css +1 -0
  22. package/dist/client/assets/{ResearchView-cNsjYu8F.js → ResearchView-D90Jbzbx.js} +2 -2
  23. package/dist/client/assets/{SecretsView-BAmf7KyS.js → SecretsView-CSyjZl5L.js} +1 -1
  24. package/dist/client/assets/SessionTerminal-Bwb8nGmU.js +2 -0
  25. package/dist/client/assets/SettingsModal-BAzmMjr9.js +21 -0
  26. package/dist/client/assets/SettingsModal-C5ic1ls7.css +1 -0
  27. package/dist/client/assets/{SettingsModal-C_9RiEI7.js → SettingsModal-CJof1Ett.js} +1 -1
  28. package/dist/client/assets/{SettingsTextareaRow-D8RHSj8b.js → SettingsTextareaRow-BYchnHfW.js} +1 -1
  29. package/dist/client/assets/SetupWizardModal-NqV-erVf.js +2 -0
  30. package/dist/client/assets/{SkillsView-DyeCwYit.js → SkillsView-BUrkIJ-p.js} +1 -1
  31. package/dist/client/assets/{WorkflowNodeEditor-C5Jc9w_A.js → WorkflowNodeEditor-DcPk2A1Z.js} +1 -1
  32. package/dist/client/assets/{agent-import-generation-SCPNeF25.js → agent-import-generation-X16OLfrL.js} +1 -1
  33. package/dist/client/assets/{agentsOrgChartLayout-CqKtNCjy.js → agentsOrgChartLayout-BhPIXckU.js} +1 -1
  34. package/dist/client/assets/app-B-TfWH9b.js +5 -0
  35. package/dist/client/assets/app-B2RDV_-t.js +13 -0
  36. package/dist/client/assets/app-CDo0mF2S.js +5 -0
  37. package/dist/client/assets/app-Cc18kAQS.js +13 -0
  38. package/dist/client/assets/app-DFF79EUn.js +13 -0
  39. package/dist/client/assets/app-DSeFHxgj.js +13 -0
  40. package/dist/client/assets/app-Ducr0y6r.js +13 -0
  41. package/dist/client/assets/{architectureDiagram-3BPJPVTR-Cz2HYn0b.js → architectureDiagram-3BPJPVTR-WArMtdqy.js} +1 -1
  42. package/dist/client/assets/{blockDiagram-GPEHLZMM-IimJVscG.js → blockDiagram-GPEHLZMM-emScogdV.js} +1 -1
  43. package/dist/client/assets/{c4Diagram-AAUBKEIU-C-xii7zn.js → c4Diagram-AAUBKEIU-CBY7-E0T.js} +1 -1
  44. package/dist/client/assets/channel-CP2ySYs0.js +1 -0
  45. package/dist/client/assets/{chunk-2J33WTMH-DQ-9Xccu.js → chunk-2J33WTMH-Bcai1sOm.js} +1 -1
  46. package/dist/client/assets/{chunk-4BX2VUAB-DmdAX9Bx.js → chunk-4BX2VUAB-hjiKRusj.js} +1 -1
  47. package/dist/client/assets/{chunk-55IACEB6-IF2bk5IL.js → chunk-55IACEB6-DpO9nIb0.js} +1 -1
  48. package/dist/client/assets/{chunk-727SXJPM-AeYpIzVu.js → chunk-727SXJPM-B9JanA0o.js} +1 -1
  49. package/dist/client/assets/{chunk-AQP2D5EJ-DV942DD9.js → chunk-AQP2D5EJ-D6zdnEUE.js} +1 -1
  50. package/dist/client/assets/{chunk-FMBD7UC4-Bt_riVlZ.js → chunk-FMBD7UC4-CRkrJ51d.js} +1 -1
  51. package/dist/client/assets/{chunk-ND2GUHAM-CbyjNbXR.js → chunk-ND2GUHAM-BLQsKt7a.js} +1 -1
  52. package/dist/client/assets/{chunk-QZHKN3VN-DqiRniYQ.js → chunk-QZHKN3VN-MCOlJ723.js} +1 -1
  53. package/dist/client/assets/classDiagram-4FO5ZUOK-DKkOBtzM.js +1 -0
  54. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-DKkOBtzM.js +1 -0
  55. package/dist/client/assets/{cose-bilkent-S5V4N54A-UCvthviL.js → cose-bilkent-S5V4N54A-Cv1XmKKG.js} +1 -1
  56. package/dist/client/assets/{dagre-BM42HDAG-DnMlT1Oi.js → dagre-BM42HDAG-flnNS_RW.js} +1 -1
  57. package/dist/client/assets/{dashboard-view-C9D0aoRW.js → dashboard-view-CC1aH-lp.js} +1 -1
  58. package/dist/client/assets/{dashboard-view-myjM9tr8.js → dashboard-view-CrV-rL9Q.js} +1 -1
  59. package/dist/client/assets/{dashboard-view-JysoyDRX.js → dashboard-view-DEAYb_TZ.js} +1 -1
  60. package/dist/client/assets/{dashboard-view-Cz0sp2Wl.js → dashboard-view-Dz7kqcJc.js} +1 -1
  61. package/dist/client/assets/{diagram-2AECGRRQ-BYFiqXGw.js → diagram-2AECGRRQ-Z3S7b_6_.js} +1 -1
  62. package/dist/client/assets/{diagram-5GNKFQAL-DZU3pSYq.js → diagram-5GNKFQAL-BAZHdMFq.js} +1 -1
  63. package/dist/client/assets/{diagram-KO2AKTUF-0ybdKuMm.js → diagram-KO2AKTUF-C2y3S8F0.js} +1 -1
  64. package/dist/client/assets/{diagram-LMA3HP47-Rxbgnbsp.js → diagram-LMA3HP47-Bfz0_IvT.js} +1 -1
  65. package/dist/client/assets/{diagram-OG6HWLK6-BAU_hTeV.js → diagram-OG6HWLK6-BBmSQsTI.js} +1 -1
  66. package/dist/client/assets/{erDiagram-TEJ5UH35-zr8HrwTt.js → erDiagram-TEJ5UH35-DnpdQi66.js} +1 -1
  67. package/dist/client/assets/{flowDiagram-I6XJVG4X-CrTw0iFw.js → flowDiagram-I6XJVG4X-IybTR_zf.js} +1 -1
  68. package/dist/client/assets/{folder-open-DnAlsXXn.js → folder-open-Dntm63x4.js} +1 -1
  69. package/dist/client/assets/{ganttDiagram-6RSMTGT7-CCORsxxz.js → ganttDiagram-6RSMTGT7-DEQOe2E9.js} +1 -1
  70. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-C07wWSjj.js → gitGraphDiagram-PVQCEYII-BOKc-h63.js} +1 -1
  71. package/dist/client/assets/index-DXpztECA.css +1 -0
  72. package/dist/client/assets/index-I32FijPT.js +2821 -0
  73. package/dist/client/assets/{infoDiagram-5YYISTIA-hAeccD_4.js → infoDiagram-5YYISTIA-LqaYIdbj.js} +1 -1
  74. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-WLCzv-NH.js → ishikawaDiagram-YF4QCWOH-a8qd512s.js} +1 -1
  75. package/dist/client/assets/{journeyDiagram-JHISSGLW-ClnasNhy.js → journeyDiagram-JHISSGLW-BgoNyeiy.js} +1 -1
  76. package/dist/client/assets/{kanban-definition-UN3LZRKU-CAuARhUz.js → kanban-definition-UN3LZRKU-Bqwow7D3.js} +1 -1
  77. package/dist/client/assets/{mermaid.core-Bh02RvfX.js → mermaid.core-B2zD934i.js} +4 -4
  78. package/dist/client/assets/{mindmap-definition-RKZ34NQL-KNTlbW4V.js → mindmap-definition-RKZ34NQL-CCTOigWu.js} +1 -1
  79. package/dist/client/assets/{pieDiagram-4H26LBE5-BouAfBEw.js → pieDiagram-4H26LBE5-Bq5DtXKR.js} +1 -1
  80. package/dist/client/assets/pixelify-sans-cyrillic-400-normal-DfOZNMlW.woff +0 -0
  81. package/dist/client/assets/pixelify-sans-latin-400-normal-DLrIX9QE.woff2 +0 -0
  82. package/dist/client/assets/pixelify-sans-latin-400-normal-JapMNN6Z.woff +0 -0
  83. package/dist/client/assets/pixelify-sans-latin-ext-400-normal-BkfTUL4s.woff +0 -0
  84. package/dist/client/assets/pixelify-sans-latin-ext-400-normal-DdH6zlBQ.woff2 +0 -0
  85. package/dist/client/assets/{puzzle-CC8Ur3Cy.js → puzzle-VhTPiCit.js} +1 -1
  86. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-wTdkCUJU.js → quadrantDiagram-W4KKPZXB-CGMP3nUx.js} +1 -1
  87. package/dist/client/assets/{requirementDiagram-4Y6WPE33-BnjY4Tc_.js → requirementDiagram-4Y6WPE33-Ckeu_szu.js} +1 -1
  88. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-C-QsS08u.js → sankeyDiagram-5OEKKPKP-SWbBDD4d.js} +1 -1
  89. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-DD36MILE.js → sequenceDiagram-3UESZ5HK-CiJrmL_G.js} +1 -1
  90. package/dist/client/assets/{shield-alert-DcXc56Fy.js → shield-alert-BBDlP6A5.js} +1 -1
  91. package/dist/client/assets/{standing-instructions-template-BF5y1BLz.js → standing-instructions-template-viu_kgDX.js} +2 -2
  92. package/dist/client/assets/{stateDiagram-AJRCARHV-WTq1wQr1.js → stateDiagram-AJRCARHV-DTCzK5Gt.js} +1 -1
  93. package/dist/client/assets/{stateDiagram-v2-BHNVJYJU-eILJdjII.js → stateDiagram-v2-BHNVJYJU-BIGAwFTT.js} +1 -1
  94. package/dist/client/assets/{timeline-definition-PNZ67QCA-PRNwI0NR.js → timeline-definition-PNZ67QCA-BQZEFEug.js} +1 -1
  95. package/dist/client/assets/{upload-qH_64O-B.js → upload-D5w3Ehwp.js} +1 -1
  96. package/dist/client/assets/{useDiscoveredSkillsCache-C-GPCNaO.js → useDiscoveredSkillsCache-D6zMSIaS.js} +1 -1
  97. package/dist/client/assets/{users-D2UesRE4.js → users-Bohihi_o.js} +1 -1
  98. package/dist/client/assets/{vennDiagram-CIIHVFJN-CG2Z4T4O.js → vennDiagram-CIIHVFJN-DnHguEv8.js} +1 -1
  99. package/dist/client/assets/{wardley-L42UT6IY-gO_fGvF9.js → wardley-L42UT6IY-BOqYltGN.js} +1 -1
  100. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-BkyNpjUb.js → wardleyDiagram-YWT4CUSO-Re0Ery2M.js} +1 -1
  101. package/dist/client/assets/{xychartDiagram-2RQKCTM6-CMlZsiPq.js → xychartDiagram-2RQKCTM6-CnVq21b2.js} +1 -1
  102. package/dist/client/index.html +4 -4
  103. package/dist/client/theme-data.css +183 -1
  104. package/dist/client/version.json +1 -1
  105. package/dist/droid-cli/package.json +1 -1
  106. package/dist/extension.js +9275 -6726
  107. package/dist/pi-claude-cli/package.json +1 -1
  108. package/dist/pi-claude-cli/src/__tests__/event-bridge.test.ts +29 -1
  109. package/dist/pi-claude-cli/src/event-bridge.ts +10 -4
  110. package/dist/plugin-sdk/index.d.ts +25 -3
  111. package/dist/plugin-sdk/index.js +10 -1
  112. package/dist/plugins/fusion-plugin-acp-runtime/bundled.js +12 -2
  113. package/dist/plugins/fusion-plugin-acp-runtime/package.json +1 -1
  114. package/dist/plugins/fusion-plugin-claude-runtime/bundled.js +12 -2
  115. package/dist/plugins/fusion-plugin-claude-runtime/package.json +1 -1
  116. package/dist/plugins/fusion-plugin-cli-printing-press/bundled.js +10 -1
  117. package/dist/plugins/fusion-plugin-cli-printing-press/package.json +1 -1
  118. package/dist/plugins/fusion-plugin-compound-engineering/bundled.js +10 -1
  119. package/dist/plugins/fusion-plugin-compound-engineering/package.json +1 -1
  120. package/dist/plugins/fusion-plugin-cursor-runtime/bundled.js +10 -1
  121. package/dist/plugins/fusion-plugin-cursor-runtime/package.json +1 -1
  122. package/dist/plugins/fusion-plugin-dependency-graph/bundled.js +10 -1
  123. package/dist/plugins/fusion-plugin-dependency-graph/package.json +1 -1
  124. package/dist/plugins/fusion-plugin-droid-runtime/bundled.js +12 -2
  125. package/dist/plugins/fusion-plugin-droid-runtime/package.json +1 -1
  126. package/dist/plugins/fusion-plugin-grok-runtime/bundled.js +12 -2
  127. package/dist/plugins/fusion-plugin-grok-runtime/package.json +1 -1
  128. package/dist/plugins/fusion-plugin-hermes-runtime/bundled.js +10 -1
  129. package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
  130. package/dist/plugins/fusion-plugin-linear-import/bundled.js +10 -1
  131. package/dist/plugins/fusion-plugin-linear-import/package.json +1 -1
  132. package/dist/plugins/fusion-plugin-omp-runtime/bundled.js +12 -2
  133. package/dist/plugins/fusion-plugin-omp-runtime/package.json +1 -1
  134. package/dist/plugins/fusion-plugin-openclaw-runtime/bundled.js +10 -1
  135. package/dist/plugins/fusion-plugin-openclaw-runtime/package.json +1 -1
  136. package/dist/plugins/fusion-plugin-paperclip-runtime/bundled.js +10 -1
  137. package/dist/plugins/fusion-plugin-paperclip-runtime/package.json +1 -1
  138. package/dist/plugins/fusion-plugin-quality/bundled.js +10 -1
  139. package/dist/plugins/fusion-plugin-quality/package.json +1 -1
  140. package/dist/plugins/fusion-plugin-reports/bundled.js +10 -1
  141. package/dist/plugins/fusion-plugin-reports/package.json +1 -1
  142. package/dist/plugins/fusion-plugin-roadmap/bundled.js +10 -1
  143. package/dist/plugins/fusion-plugin-roadmap/package.json +1 -1
  144. package/dist/plugins/fusion-plugin-todos/bundled.js +10 -1
  145. package/dist/plugins/fusion-plugin-todos/package.json +1 -1
  146. package/dist/plugins/fusion-plugin-whatsapp-chat/bundled.js +10 -1
  147. package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +1 -1
  148. package/package.json +1 -1
  149. package/skill/fusion/SKILL.md +1 -1
  150. package/skill/fusion/references/extension-tools.md +17 -0
  151. package/skill/fusion/references/fusion-capabilities.md +2 -0
  152. package/dist/client/assets/ChatView-cNYtYx05.js +0 -13
  153. package/dist/client/assets/DocumentsView-ksK9f7xt.js +0 -1
  154. package/dist/client/assets/MemoryView-Cagk2wZG.js +0 -3
  155. package/dist/client/assets/PluginManager-D2csmdQa.js +0 -1
  156. package/dist/client/assets/ReportModal-M3uh98sc.css +0 -1
  157. package/dist/client/assets/ReportModal-YMP6V4vu.js +0 -21
  158. package/dist/client/assets/SessionTerminal-BjGcxq22.js +0 -2
  159. package/dist/client/assets/SettingsModal-C0FY8MPW.css +0 -1
  160. package/dist/client/assets/SettingsModal-DLfy2e_5.js +0 -21
  161. package/dist/client/assets/SetupWizardModal-DRJ96pHQ.js +0 -2
  162. package/dist/client/assets/app-BgpuMvTU.js +0 -13
  163. package/dist/client/assets/app-BlexHhbW.js +0 -13
  164. package/dist/client/assets/app-BsuUOR0P.js +0 -13
  165. package/dist/client/assets/app-DQVOujmO.js +0 -13
  166. package/dist/client/assets/app-DjyTRx1N.js +0 -5
  167. package/dist/client/assets/app-Dniggype.js +0 -13
  168. package/dist/client/assets/app-EV-lyZ0T.js +0 -5
  169. package/dist/client/assets/channel-D-UHgx8G.js +0 -1
  170. package/dist/client/assets/classDiagram-4FO5ZUOK-Do-8MdAc.js +0 -1
  171. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-Do-8MdAc.js +0 -1
  172. package/dist/client/assets/index-B_z7OKl4.js +0 -2818
  173. package/dist/client/assets/index-DPo-IAb2.css +0 -1
@@ -1,3 +1,3 @@
1
- import{r as m,j as e}from"./vendor-react-SZ_qB27O.js";import{bL as at}from"./index-B_z7OKl4.js";import{a as Et}from"./vendor-i18n-Duky4gdQ.js";import{L as Vt}from"./loader-circle-BZLkElvN.js";import{P as It,C as dt,X as rt,a as jt,T as Ct,b as Xt}from"./x-Bt4TvqS0.js";import{L as wt,C as qt,E as Wt,a as zt,b as Gt,c as Yt,d as Qt,B as kt}from"./list-checks-Dj2-DY9o.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-reactflow-BlIeoTu4.js";import"./vendor-xterm-BNq00GSj.js";import"./createLucideIcon-CshVyKO4.js";const Zt="/api/plugins/fusion-plugin-todos";function T(s){return s?`?projectId=${encodeURIComponent(s)}`:""}async function E(s,o){const a=await fetch(`${Zt}${s}`,{headers:{"Content-Type":"application/json",...o?.headers??{}},...o});if(!a.ok){const x=await a.json().catch(()=>({}));throw new Error(x.error??a.statusText)}return a.status===204?void 0:a.json()}const te=s=>E(`/todos${T(s)}`),ee=(s,o)=>E(`/todos${T(o)}`,{method:"POST",body:JSON.stringify({title:s,projectId:o})}),oe=(s,o,a)=>E(`/todos/${encodeURIComponent(s)}${T(a)}`,{method:"PATCH",body:JSON.stringify({title:o,projectId:a})}),se=(s,o)=>E(`/todos/${encodeURIComponent(s)}${T(o)}`,{method:"DELETE"}),ne=(s,o,a)=>E(`/todos/${encodeURIComponent(s)}/items${T(a)}`,{method:"POST",body:JSON.stringify({text:o,projectId:a})}),ie=(s,o,a)=>E(`/todos/items/${encodeURIComponent(s)}${T(a)}`,{method:"PATCH",body:JSON.stringify({...o,projectId:a})}),ae=(s,o)=>E(`/todos/items/${encodeURIComponent(s)}${T(o)}`,{method:"DELETE"}),de=(s,o,a)=>E(`/todos/${encodeURIComponent(s)}/items/reorder${T(a)}`,{method:"POST",body:JSON.stringify({itemIds:o,projectId:a})}),St=(s,o)=>E(`/todos/items/${encodeURIComponent(String(s.todoItemId??""))}/create-task${T(o)}`,{method:"POST",body:JSON.stringify(s)}),re=async(s,o)=>E(`/host/agents${T(o)}`),le={TODO_LISTS_PREFIX:"fusion:todos:"},Nt=6e4,Dt=new Map;function At(s,o){const a=Dt.get(s);return a&&Date.now()-a.at<=o.maxAgeMs?a.value:null}function ce(s,o,a){Dt.set(s,{value:o,at:Date.now()})}function me(s){const{items:o,...a}=s;return a}function Tt(s){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?`${s}-${crypto.randomUUID()}`:`${s}-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function ue(s={}){const{t:o}=Et("app"),{projectId:a,addToast:x}=s,i=`${le.TODO_LISTS_PREFIX}${a??"global"}`,[k,C]=m.useState(()=>{const n=At(i,{maxAgeMs:Nt});return Array.isArray(n)?n:[]}),[S,w]=m.useState([]),[D,J]=m.useState(()=>k.length===0),[tt,I]=m.useState(null),[M,P]=m.useState(null),[j,g]=m.useState([]),A=m.useRef(M);A.current=M,m.useEffect(()=>{let n=!1;const u=At(i,{maxAgeMs:Nt}),p=Array.isArray(u)&&u.length>0;p?(C(u),J(!1)):(C([]),J(!0));async function f(){p||J(!0),I(null);try{const r=await te(a);if(n)return;g(r);const d=r.map(me);C(d),ce(i,d,{maxBytes:5e5});const l=A.current&&r.some(c=>c.id===A.current)?A.current:r[0]?.id??null;P(l),w(l?r.find(c=>c.id===l)?.items??[]:[])}catch(r){if(n)return;g([]),C([]),w([]),P(null),I(r instanceof Error?r.message:o("todo.failedLoadLists","Failed to load todo lists"))}finally{n||J(!1)}}return f(),()=>{n=!0}},[i,a]),m.useEffect(()=>{if(!M){w([]);return}const n=j.find(u=>u.id===M);w(n?.items??[])},[j,M]);const et=m.useCallback(async n=>{const u=k,p=j,f=new Date().toISOString(),r={id:Tt("temp-list"),projectId:a??"",title:n,createdAt:f,updatedAt:f};I(null),C(d=>[...d,r]),g(d=>[...d,{...r,items:[]}]);try{const d=await ee(n,a);C(l=>l.map(c=>c.id===r.id?d:c)),g(l=>l.map(c=>c.id===r.id?{...d,items:[]}:c)),A.current||P(d.id)}catch(d){C(u),g(p),I(d instanceof Error?d.message:o("todo.failedCreateList","Failed to create list")),x?.(o("todo.failedCreateListToast","Failed to create todo list"),"error")}},[x,j,k,a,o]),K=m.useCallback(async(n,u)=>{const p=k,f=j;I(null),C(r=>r.map(d=>d.id===n?{...d,title:u}:d)),g(r=>r.map(d=>d.id===n?{...d,title:u}:d));try{const r=await oe(n,u,a);C(d=>d.map(l=>l.id===n?r:l)),g(d=>d.map(l=>l.id===n?{...r,items:l.items}:l))}catch(r){C(p),g(f),I(r instanceof Error?r.message:o("todo.failedRenameList","Failed to rename list")),x?.(o("todo.failedRenameListToast","Failed to rename todo list"),"error")}},[x,j,k,a,o]),$=m.useCallback(async n=>{const u=k,p=j,f=A.current,r=f===n?k.find(d=>d.id!==n)?.id??null:f;I(null),C(d=>d.filter(l=>l.id!==n)),g(d=>d.filter(l=>l.id!==n)),f===n&&P(r);try{await se(n,a)}catch(d){C(u),g(p),P(f),I(d instanceof Error?d.message:o("todo.failedDeleteList","Failed to delete list")),x?.(o("todo.failedDeleteListToast","Failed to delete todo list"),"error")}},[x,j,k,a,o]),z=m.useCallback(async n=>{const u=A.current;if(!u)return;const p=S,f=j,r=new Date().toISOString(),d=S.reduce((c,h)=>Math.max(c,h.sortOrder),-1),l={id:Tt("temp-item"),listId:u,text:n,completed:!1,completedAt:null,createdAt:r,updatedAt:r,sortOrder:d+1};I(null),w(c=>[...c,l]),g(c=>c.map(h=>h.id===u?{...h,items:[...h.items,l]}:h));try{const c=await ne(u,n,a);w(h=>h.map(v=>v.id===l.id?c:v)),g(h=>h.map(v=>v.id===u?{...v,items:v.items.map(_=>_.id===l.id?c:_)}:v))}catch(c){w(p),g(f),I(c instanceof Error?c.message:o("todo.failedCreateItem","Failed to create item")),x?.(o("todo.failedCreateItemToast","Failed to create todo item"),"error")}},[x,S,j,a,o]),N=m.useCallback(async(n,u)=>{const p=S.find(c=>c.id===n);if(!p)return;const f=S,r=j,d=u.completed??p.completed,l={...p,...u,completed:d,completedAt:d?p.completedAt??new Date().toISOString():null,updatedAt:new Date().toISOString()};I(null),w(c=>c.map(h=>h.id===n?l:h)),g(c=>c.map(h=>h.id===l.listId?{...h,items:h.items.map(v=>v.id===n?l:v)}:h));try{const c=await ie(n,u,a);w(h=>h.map(v=>v.id===n?c:v)),g(h=>h.map(v=>v.id===c.listId?{...v,items:v.items.map(_=>_.id===n?c:_)}:v))}catch(c){w(f),g(r),I(c instanceof Error?c.message:o("todo.failedUpdateItem","Failed to update item")),x?.(o("todo.failedUpdateItemToast","Failed to update todo item"),"error")}},[x,S,j,a,o]),V=m.useCallback(async n=>{const u=S.find(p=>p.id===n);u&&await N(n,{completed:!u.completed})},[S,N]),U=m.useCallback(async n=>{const u=S,p=j;I(null),w(f=>f.filter(r=>r.id!==n)),g(f=>f.map(r=>({...r,items:r.items.filter(d=>d.id!==n)})));try{await ae(n,a)}catch(f){w(u),g(p),I(f instanceof Error?f.message:o("todo.failedDeleteItem","Failed to delete item")),x?.(o("todo.failedDeleteItemToast","Failed to delete todo item"),"error")}},[x,S,j,a,o]),G=m.useCallback(async n=>{const u=A.current;if(!u)return;const p=S,f=j,r=new Map(S.map(l=>[l.id,l])),d=n.map((l,c)=>{const h=r.get(l);return h?{...h,sortOrder:c}:null}).filter(l=>l!==null);I(null),w(d),g(l=>l.map(c=>c.id===u?{...c,items:d}:c));try{await de(u,n,a)}catch(l){w(p),g(f),I(l instanceof Error?l.message:o("todo.failedReorderItems","Failed to reorder items")),x?.(o("todo.failedReorderItemsToast","Failed to reorder todo items"),"error")}},[x,S,j,a,o]);return{lists:k,items:S,loading:D,error:tt,selectedListId:M,setSelectedListId:P,createList:et,renameList:K,deleteList:$,createItem:z,updateItem:N,toggleItem:V,deleteItem:U,reorderItems:G}}function be(){return{confirm:async s=>window.confirm(typeof s=="string"?s:[s.title,s.message].filter(Boolean).join(`
1
+ import{r as m,j as e}from"./vendor-react-SZ_qB27O.js";import{bN as at}from"./index-I32FijPT.js";import{a as Et}from"./vendor-i18n-Duky4gdQ.js";import{L as Vt}from"./loader-circle-BZLkElvN.js";import{P as It,C as dt,X as rt,a as jt,T as Ct,b as Xt}from"./x-Bt4TvqS0.js";import{L as wt,C as qt,E as Wt,a as zt,b as Gt,c as Yt,d as Qt,B as kt}from"./list-checks-Dj2-DY9o.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-reactflow-BlIeoTu4.js";import"./vendor-xterm-BNq00GSj.js";import"./createLucideIcon-CshVyKO4.js";const Zt="/api/plugins/fusion-plugin-todos";function T(s){return s?`?projectId=${encodeURIComponent(s)}`:""}async function E(s,o){const a=await fetch(`${Zt}${s}`,{headers:{"Content-Type":"application/json",...o?.headers??{}},...o});if(!a.ok){const x=await a.json().catch(()=>({}));throw new Error(x.error??a.statusText)}return a.status===204?void 0:a.json()}const te=s=>E(`/todos${T(s)}`),ee=(s,o)=>E(`/todos${T(o)}`,{method:"POST",body:JSON.stringify({title:s,projectId:o})}),oe=(s,o,a)=>E(`/todos/${encodeURIComponent(s)}${T(a)}`,{method:"PATCH",body:JSON.stringify({title:o,projectId:a})}),se=(s,o)=>E(`/todos/${encodeURIComponent(s)}${T(o)}`,{method:"DELETE"}),ne=(s,o,a)=>E(`/todos/${encodeURIComponent(s)}/items${T(a)}`,{method:"POST",body:JSON.stringify({text:o,projectId:a})}),ie=(s,o,a)=>E(`/todos/items/${encodeURIComponent(s)}${T(a)}`,{method:"PATCH",body:JSON.stringify({...o,projectId:a})}),ae=(s,o)=>E(`/todos/items/${encodeURIComponent(s)}${T(o)}`,{method:"DELETE"}),de=(s,o,a)=>E(`/todos/${encodeURIComponent(s)}/items/reorder${T(a)}`,{method:"POST",body:JSON.stringify({itemIds:o,projectId:a})}),St=(s,o)=>E(`/todos/items/${encodeURIComponent(String(s.todoItemId??""))}/create-task${T(o)}`,{method:"POST",body:JSON.stringify(s)}),re=async(s,o)=>E(`/host/agents${T(o)}`),le={TODO_LISTS_PREFIX:"fusion:todos:"},Nt=6e4,Dt=new Map;function At(s,o){const a=Dt.get(s);return a&&Date.now()-a.at<=o.maxAgeMs?a.value:null}function ce(s,o,a){Dt.set(s,{value:o,at:Date.now()})}function me(s){const{items:o,...a}=s;return a}function Tt(s){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?`${s}-${crypto.randomUUID()}`:`${s}-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function ue(s={}){const{t:o}=Et("app"),{projectId:a,addToast:x}=s,i=`${le.TODO_LISTS_PREFIX}${a??"global"}`,[k,C]=m.useState(()=>{const n=At(i,{maxAgeMs:Nt});return Array.isArray(n)?n:[]}),[S,w]=m.useState([]),[D,J]=m.useState(()=>k.length===0),[tt,I]=m.useState(null),[M,P]=m.useState(null),[j,g]=m.useState([]),A=m.useRef(M);A.current=M,m.useEffect(()=>{let n=!1;const u=At(i,{maxAgeMs:Nt}),p=Array.isArray(u)&&u.length>0;p?(C(u),J(!1)):(C([]),J(!0));async function f(){p||J(!0),I(null);try{const r=await te(a);if(n)return;g(r);const d=r.map(me);C(d),ce(i,d,{maxBytes:5e5});const l=A.current&&r.some(c=>c.id===A.current)?A.current:r[0]?.id??null;P(l),w(l?r.find(c=>c.id===l)?.items??[]:[])}catch(r){if(n)return;g([]),C([]),w([]),P(null),I(r instanceof Error?r.message:o("todo.failedLoadLists","Failed to load todo lists"))}finally{n||J(!1)}}return f(),()=>{n=!0}},[i,a]),m.useEffect(()=>{if(!M){w([]);return}const n=j.find(u=>u.id===M);w(n?.items??[])},[j,M]);const et=m.useCallback(async n=>{const u=k,p=j,f=new Date().toISOString(),r={id:Tt("temp-list"),projectId:a??"",title:n,createdAt:f,updatedAt:f};I(null),C(d=>[...d,r]),g(d=>[...d,{...r,items:[]}]);try{const d=await ee(n,a);C(l=>l.map(c=>c.id===r.id?d:c)),g(l=>l.map(c=>c.id===r.id?{...d,items:[]}:c)),A.current||P(d.id)}catch(d){C(u),g(p),I(d instanceof Error?d.message:o("todo.failedCreateList","Failed to create list")),x?.(o("todo.failedCreateListToast","Failed to create todo list"),"error")}},[x,j,k,a,o]),K=m.useCallback(async(n,u)=>{const p=k,f=j;I(null),C(r=>r.map(d=>d.id===n?{...d,title:u}:d)),g(r=>r.map(d=>d.id===n?{...d,title:u}:d));try{const r=await oe(n,u,a);C(d=>d.map(l=>l.id===n?r:l)),g(d=>d.map(l=>l.id===n?{...r,items:l.items}:l))}catch(r){C(p),g(f),I(r instanceof Error?r.message:o("todo.failedRenameList","Failed to rename list")),x?.(o("todo.failedRenameListToast","Failed to rename todo list"),"error")}},[x,j,k,a,o]),$=m.useCallback(async n=>{const u=k,p=j,f=A.current,r=f===n?k.find(d=>d.id!==n)?.id??null:f;I(null),C(d=>d.filter(l=>l.id!==n)),g(d=>d.filter(l=>l.id!==n)),f===n&&P(r);try{await se(n,a)}catch(d){C(u),g(p),P(f),I(d instanceof Error?d.message:o("todo.failedDeleteList","Failed to delete list")),x?.(o("todo.failedDeleteListToast","Failed to delete todo list"),"error")}},[x,j,k,a,o]),z=m.useCallback(async n=>{const u=A.current;if(!u)return;const p=S,f=j,r=new Date().toISOString(),d=S.reduce((c,h)=>Math.max(c,h.sortOrder),-1),l={id:Tt("temp-item"),listId:u,text:n,completed:!1,completedAt:null,createdAt:r,updatedAt:r,sortOrder:d+1};I(null),w(c=>[...c,l]),g(c=>c.map(h=>h.id===u?{...h,items:[...h.items,l]}:h));try{const c=await ne(u,n,a);w(h=>h.map(v=>v.id===l.id?c:v)),g(h=>h.map(v=>v.id===u?{...v,items:v.items.map(_=>_.id===l.id?c:_)}:v))}catch(c){w(p),g(f),I(c instanceof Error?c.message:o("todo.failedCreateItem","Failed to create item")),x?.(o("todo.failedCreateItemToast","Failed to create todo item"),"error")}},[x,S,j,a,o]),N=m.useCallback(async(n,u)=>{const p=S.find(c=>c.id===n);if(!p)return;const f=S,r=j,d=u.completed??p.completed,l={...p,...u,completed:d,completedAt:d?p.completedAt??new Date().toISOString():null,updatedAt:new Date().toISOString()};I(null),w(c=>c.map(h=>h.id===n?l:h)),g(c=>c.map(h=>h.id===l.listId?{...h,items:h.items.map(v=>v.id===n?l:v)}:h));try{const c=await ie(n,u,a);w(h=>h.map(v=>v.id===n?c:v)),g(h=>h.map(v=>v.id===c.listId?{...v,items:v.items.map(_=>_.id===n?c:_)}:v))}catch(c){w(f),g(r),I(c instanceof Error?c.message:o("todo.failedUpdateItem","Failed to update item")),x?.(o("todo.failedUpdateItemToast","Failed to update todo item"),"error")}},[x,S,j,a,o]),V=m.useCallback(async n=>{const u=S.find(p=>p.id===n);u&&await N(n,{completed:!u.completed})},[S,N]),U=m.useCallback(async n=>{const u=S,p=j;I(null),w(f=>f.filter(r=>r.id!==n)),g(f=>f.map(r=>({...r,items:r.items.filter(d=>d.id!==n)})));try{await ae(n,a)}catch(f){w(u),g(p),I(f instanceof Error?f.message:o("todo.failedDeleteItem","Failed to delete item")),x?.(o("todo.failedDeleteItemToast","Failed to delete todo item"),"error")}},[x,S,j,a,o]),G=m.useCallback(async n=>{const u=A.current;if(!u)return;const p=S,f=j,r=new Map(S.map(l=>[l.id,l])),d=n.map((l,c)=>{const h=r.get(l);return h?{...h,sortOrder:c}:null}).filter(l=>l!==null);I(null),w(d),g(l=>l.map(c=>c.id===u?{...c,items:d}:c));try{await de(u,n,a)}catch(l){w(p),g(f),I(l instanceof Error?l.message:o("todo.failedReorderItems","Failed to reorder items")),x?.(o("todo.failedReorderItemsToast","Failed to reorder todo items"),"error")}},[x,S,j,a,o]);return{lists:k,items:S,loading:D,error:tt,selectedListId:M,setSelectedListId:P,createList:et,renameList:K,deleteList:$,createItem:z,updateItem:N,toggleItem:V,deleteItem:U,reorderItems:G}}function be(){return{confirm:async s=>window.confirm(typeof s=="string"?s:[s.title,s.message].filter(Boolean).join(`
2
2
 
3
3
  `))}}function pe({label:s="Loading"}){return e.jsxs("span",{"aria-label":s,children:[s,"…"]})}function $t(s,o){return o?`${s}:${o}`:s}function fe(s,o){return window.localStorage.getItem($t(s,o))}function he(s,o,a){window.localStorage.setItem($t(s,a),o)}function ge(s){return[...s].sort((o,a)=>o.sortOrder-a.sortOrder)}function xe(s){try{const o=fe("kb-dashboard-todo-hide-done",s);if(o!==null)return o==="true"}catch{}return!1}function ye({projectId:s,addToast:o,onPlanningMode:a,onTaskCreated:x}){const{t:i}=Et("app"),{lists:k,items:C,loading:S,error:w,selectedListId:D,setSelectedListId:J,createList:tt,renameList:I,deleteList:M,createItem:P,updateItem:j,toggleItem:g,deleteItem:A,reorderItems:et}=ue({projectId:s,addToast:(t,b)=>{if(b==="success"||b==="error"||b==="info"||b===void 0){o(t,b);return}o(t,"info")}}),[K,$]=m.useState(null),[z,N]=m.useState(""),[V,U]=m.useState(null),[G,n]=m.useState(""),[u,p]=m.useState(""),[f,r]=m.useState(!1),[d,l]=m.useState(""),[c,h]=m.useState([]),[v,_]=m.useState(!1),[ot,X]=m.useState(!1),[lt,q]=m.useState(null),[B,Ft]=m.useState(()=>xe(s)),st=m.useRef(null),{confirm:Rt}=be(),[Ot,ct]=m.useState("list"),Y=m.useMemo(()=>k.find(t=>t.id===D)??null,[k,D]),H=m.useMemo(()=>ge(C.filter(t=>t.listId===D)),[C,D]),Q=m.useMemo(()=>B?H.filter(t=>!t.completed):H,[B,H]),mt=m.useMemo(()=>{const t=new Map;for(const b of k)t.set(b.id,{total:0,completed:0});for(const b of C){const L=t.get(b.listId)??{total:0,completed:0};L.total+=1,b.completed&&(L.completed+=1),t.set(b.listId,L)}return t},[C,k]),nt=Y?mt.get(Y.id)??{total:H.length,completed:H.filter(t=>t.completed).length}:null;function ut(){$(null),N(""),p(""),r(!1)}function Z(){U(null),n(""),l("")}function Mt(t){ut(),Z(),J(t),ct("detail")}function Pt(){ct("list")}const Ut=m.useCallback(async()=>{_(!0);try{const t=await re(void 0,s);h(t),X(!0)}catch(t){o(i("todo.failedToLoadAgents","Failed to load agents: {{error}}",{error:at(t)}),"error"),X(!1),q(null)}finally{_(!1)}},[s,o,i]);m.useEffect(()=>{$(null),N(""),p(""),r(!1),U(null),n(""),l(""),X(!1),q(null)},[D]),m.useEffect(()=>{typeof window<"u"&&he("kb-dashboard-todo-hide-done",B.toString(),s)},[B,s]),m.useEffect(()=>{if(!ot)return;const t=b=>{st.current&&!st.current.contains(b.target)&&(X(!1),q(null))};return document.addEventListener("mousedown",t),()=>{document.removeEventListener("mousedown",t)}},[ot]);function _t(t){Z(),$(t.id),N(t.title),r(!1)}async function bt(){if(!K)return;const t=z.trim();if(!t){$(null),N("");return}await I(K,t),$(null),N("")}function pt(){$(null),N("")}function ft(t){ut(),U(t.id),n(t.text)}async function ht(){if(!V)return;const t=G.trim();if(!t){U(null),n("");return}await j(V,{text:t}),U(null),n("")}function gt(){U(null),n("")}async function xt(){const t=u.trim();t&&(await tt(t),p(""),r(!1))}async function yt(){if(!D)return;const t=d.trim();t&&(await P(t),l(""))}async function Bt(t){await Rt({title:i("todo.deleteListTitle","Delete List"),message:i("todo.deleteListConfirm","Delete this list and all its items?"),danger:!0})&&await M(t)}async function Ht(t){await A(t)}async function vt(t,b){const L=Q.map(O=>O.id),y=L.findIndex(O=>O===t);if(y<0)return;const F=b==="up"?y-1:y+1;if(F<0||F>=L.length)return;const R=H.map(O=>O.id),W=R.findIndex(O=>O===t),it=R.findIndex(O=>O===L[F]);W<0||it<0||([R[W],R[it]]=[R[it],R[W]],await et(R))}const Jt=m.useCallback(async t=>{try{const b={description:t.text,source:{sourceType:"dashboard_ui"}},L=await St({...b,todoItemId:t.id},s);x?.(L),o(i("todo.taskCreatedFromTodo","Created {{id}} from todo",{id:L.id}),"success")}catch(b){o(i("todo.failedToCreateTask","Failed to create task: {{error}}",{error:at(b)}),"error")}},[s,o,x,i]),Kt=m.useCallback(async(t,b)=>{try{const L={description:t.text,assignedAgentId:b,source:{sourceType:"dashboard_ui"}},y=await St({...L,todoItemId:t.id},s);x?.(y);const R=c.find(W=>W.id===b)?.name??b;o(i("todo.taskCreatedAndAssigned","Created {{id}} and assigned to {{agent}}",{id:y.id,agent:R}),"success"),X(!1),q(null)}catch(L){o(i("todo.failedToCreateAndAssign","Failed to create and assign task: {{error}}",{error:at(L)}),"error")}},[s,o,c,x,i]),Lt=null;return S?e.jsxs("div",{className:"todo-view","data-testid":"todo-view-root",children:[Lt,e.jsxs("div",{className:"todo-loading",children:[e.jsx(Vt,{className:"todo-loading-icon","aria-hidden":"true"}),e.jsx("p",{children:i("todo.loading","Loading todos...")})]})]}):e.jsxs("div",{className:"todo-view","data-testid":"todo-view-root",children:[Lt,e.jsxs("div",{className:"todo-view-layout","data-mobile-stack-view":Ot,children:[e.jsxs("aside",{className:"todo-view-sidebar","aria-label":i("todo.listsLabel","Todo lists sidebar"),children:[e.jsxs("div",{className:"todo-sidebar-header",children:[e.jsx("h3",{className:"todo-sidebar-title",children:i("todo.lists","Lists")}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-add-list-btn",onClick:()=>{Z(),r(!0),$(null)},"aria-label":i("todo.addList","Add list"),"data-testid":"add-list-button",children:e.jsx(It,{})})]}),f&&e.jsxs("div",{className:"todo-list-item",children:[e.jsx("input",{className:"input todo-inline-edit-input",placeholder:i("todo.newListTitle","New list title"),value:u,onChange:t=>p(t.target.value),onKeyDown:t=>{t.key==="Enter"&&xt(),t.key==="Escape"&&(p(""),r(!1))},autoFocus:!0,"data-testid":"new-list-input"}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{xt()},"aria-label":i("todo.saveList","Save list"),children:e.jsx(dt,{})}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{p(""),r(!1)},"aria-label":i("todo.cancelList","Cancel list"),children:e.jsx(rt,{})})]}),k.length===0&&!f?e.jsxs("div",{className:"todo-empty-state",children:[e.jsx(wt,{"aria-hidden":"true"}),e.jsx("p",{children:i("todo.noListsEmpty","No todo lists yet. Create one to get started.")}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>{Z(),r(!0)},children:i("todo.createList","Create List")})]}):e.jsx("div",{className:"todo-list-items",role:"list","aria-label":i("todo.todoListsLabel","Todo lists"),children:k.map(t=>{const b=t.id===D,L=t.id===K,y=mt.get(t.id)??{total:0,completed:0};return e.jsx("div",{className:`todo-list-item${b?" todo-list-item--active":""}`,role:"listitem",children:L?e.jsxs(e.Fragment,{children:[e.jsx("input",{className:"input todo-inline-edit-input",value:z,onChange:F=>N(F.target.value),onKeyDown:F=>{F.key==="Enter"&&bt(),F.key==="Escape"&&pt()},autoFocus:!0,"data-testid":`rename-list-input-${t.id}`}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{bt()},"aria-label":i("todo.saveListRename","Save list rename"),children:e.jsx(dt,{})}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:pt,"aria-label":i("todo.cancelListRename","Cancel list rename"),children:e.jsx(rt,{})})]}):e.jsxs(e.Fragment,{children:[e.jsxs("button",{type:"button",className:"todo-list-select-btn",onClick:()=>Mt(t.id),"aria-label":i("todo.selectList","Select list {{title}}",{title:t.title}),"aria-current":b?"true":void 0,"data-testid":`todo-list-${t.id}`,children:[e.jsx("span",{className:"todo-list-item-name",children:t.title}),e.jsxs("span",{className:"todo-list-item-count",children:[y.completed,"/",y.total]})]}),e.jsxs("div",{className:"todo-list-item-actions",children:[e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{_t(t)},"aria-label":i("todo.renameList","Rename {{title}}",{title:t.title}),"data-testid":`rename-list-button-${t.id}`,children:e.jsx(jt,{})}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon btn-danger todo-icon-btn",onClick:()=>{Bt(t.id)},"aria-label":i("todo.deleteList","Delete {{title}}",{title:t.title}),"data-testid":`delete-list-button-${t.id}`,children:e.jsx(Ct,{})})]})]})},t.id)})})]}),e.jsxs("section",{className:"todo-view-main","aria-label":i("todo.itemsLabel","Todo items"),children:[w&&e.jsxs("div",{className:"todo-error-banner",role:"alert",children:[e.jsx("span",{className:"todo-error-message",children:w}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>window.location.reload(),children:i("actions.retry","Retry")})]}),Y?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"todo-items-header",children:[e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn todo-mobile-back-btn",onClick:Pt,"aria-label":i("todo.backToLists","Back to lists"),"data-testid":"todo-mobile-back-button",children:e.jsx(qt,{})}),e.jsxs("div",{className:"todo-items-heading",children:[e.jsx("h3",{children:Y.title}),nt&&e.jsx("span",{className:"todo-items-progress",children:i("todo.completedCount","{{completed}}/{{total}} complete",{completed:nt.completed,total:nt.total})})]}),e.jsxs("button",{type:"button",className:"btn btn-sm todo-hide-done-toggle","aria-pressed":B,onClick:()=>Ft(t=>!t),"data-testid":"todo-hide-done-toggle",children:[B?e.jsx(Wt,{"aria-hidden":"true"}):e.jsx(zt,{"aria-hidden":"true"}),B?i("todo.showDone","Show done"):i("todo.hideDone","Hide done")]})]}),e.jsxs("div",{className:"todo-add-item-row",children:[e.jsx("input",{className:"input",placeholder:i("todo.addItemPlaceholder","Add a todo item"),value:d,onChange:t=>l(t.target.value),onKeyDown:t=>{t.key==="Enter"&&yt(),t.key==="Escape"&&l("")},"data-testid":"new-item-input"}),e.jsxs("button",{type:"button",className:"btn btn-primary",onClick:()=>{yt()},children:[e.jsx(It,{size:14}),i("actions.add","Add")]})]}),H.length===0?e.jsx("div",{className:"todo-empty-state",children:e.jsx("p",{children:i("todo.noItemsEmpty","No items in this list. Add one above.")})}):Q.length===0?e.jsx("div",{className:"todo-empty-state","data-testid":"todo-all-done-hidden-empty",children:e.jsx("p",{children:i("todo.allDoneHidden","All items are complete. Choose Show done to view them.")})}):e.jsx("div",{className:"todo-items-list",children:Q.map((t,b)=>{const L=t.id===V;return e.jsxs("div",{className:"todo-item","data-testid":`todo-item-${t.id}`,children:[e.jsxs("div",{className:"todo-item-main-row",children:[e.jsx("input",{type:"checkbox",checked:t.completed,onChange:()=>{g(t.id)},className:"todo-item-checkbox","aria-label":`Toggle ${t.text}`,"data-testid":`toggle-item-${t.id}`}),L?e.jsx("input",{className:"input todo-inline-edit-input",value:G,onChange:y=>n(y.target.value),onKeyDown:y=>{y.key==="Enter"&&ht(),y.key==="Escape"&&gt()},autoFocus:!0,"data-testid":`edit-item-input-${t.id}`}):e.jsx("button",{type:"button",className:`todo-item-text${t.completed?" todo-item-text--completed":""}`,onClick:()=>ft(t),children:t.text})]}),e.jsx("div",{className:"todo-item-actions","data-testid":`todo-item-actions-${t.id}`,children:L?e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{ht()},"aria-label":i("todo.saveItemEdit","Save item edit"),children:e.jsx(dt,{})}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:gt,"aria-label":i("todo.cancelItemEdit","Cancel item edit"),children:e.jsx(rt,{})})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"todo-item-reorder-btns",children:[e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-item-reorder-btn",onClick:()=>{vt(t.id,"up")},disabled:b===0,"aria-label":i("todo.moveItemUp","Move {{text}} up",{text:t.text}),"data-testid":`move-up-${t.id}`,children:e.jsx(Xt,{})}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-item-reorder-btn",onClick:()=>{vt(t.id,"down")},disabled:b===Q.length-1,"aria-label":i("todo.moveItemDown","Move {{text}} down",{text:t.text}),"data-testid":`move-down-${t.id}`,children:e.jsx(Gt,{})})]}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{a?.(t.text)},"aria-label":i("todo.startPlanning","Start planning from {{text}}",{text:t.text}),"data-testid":`planning-from-${t.id}`,children:e.jsx(Yt,{})}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{Jt(t)},"aria-label":i("todo.createTaskFrom","Create task from {{text}}",{text:t.text}),"data-testid":`create-task-from-${t.id}`,children:e.jsx(Qt,{})}),e.jsxs("div",{className:"todo-agent-picker-trigger",ref:lt===t.id?st:void 0,children:[e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>{q(t.id),Ut()},"aria-label":i("todo.assignAgent","Assign {{text}} to agent",{text:t.text}),"data-testid":`assign-agent-for-${t.id}`,children:e.jsx(kt,{})}),ot&&lt===t.id&&e.jsx("div",{className:"todo-agent-picker-dropdown",onMouseDown:y=>{y.preventDefault()},children:v?e.jsx("div",{className:"todo-agent-picker-loading",children:e.jsx(pe,{label:i("todo.loadingAgents","Loading agents...")})}):c.length>0?c.map(y=>e.jsxs("button",{type:"button",className:"todo-agent-picker-item",onClick:()=>{Kt(t,y.id)},children:[e.jsx(kt,{}),e.jsx("span",{children:y.name}),e.jsx("span",{className:"todo-agent-picker-role",children:y.role})]},y.id)):e.jsx("div",{className:"todo-agent-picker-empty",children:i("todo.noAgentsAvailable","No agents available")})})]}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon todo-icon-btn",onClick:()=>ft(t),"aria-label":i("todo.editItem","Edit {{text}}",{text:t.text}),"data-testid":`edit-item-${t.id}`,children:e.jsx(jt,{})}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon btn-danger todo-icon-btn",onClick:()=>{Ht(t.id)},"aria-label":i("todo.deleteItem","Delete {{text}}",{text:t.text}),"data-testid":`delete-item-${t.id}`,children:e.jsx(Ct,{})})]})})]},t.id)})})]}):e.jsxs("div",{className:"todo-empty-state",children:[e.jsx(wt,{"aria-hidden":"true"}),e.jsx("p",{children:i("todo.selectListEmpty","Select a list from the sidebar")})]})]})]})]})}function Te({context:s}){return e.jsx(ye,{projectId:s?.projectId,addToast:s?.addToast??(()=>{}),onPlanningMode:s?.openPlanningMode,onTaskCreated:s?.onTaskCreated})}export{Te as TodoDashboardView};
@@ -1 +1 @@
1
- import{r as t,j as I}from"./vendor-react-SZ_qB27O.js";import{e9 as Ae,dy as ve,dA as Xe,dz as Ye}from"./index-B_z7OKl4.js";import{Z as _e,a as je,M as $e,R as Ge}from"./zoom-out-DzDzWQt1.js";import"./vendor-i18n-Duky4gdQ.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-reactflow-BlIeoTu4.js";import"./vendor-xterm-BNq00GSj.js";import"./createLucideIcon-CshVyKO4.js";const xe=4,we=300,We=24;function Fe({taskId:n,position:s,scale:r,canDrag:i,onPositionChange:p,onDragStateChange:a,onDragEnd:k,onDoubleTap:b}){const[R,H]=t.useState(!1),M=t.useRef(null),C=t.useRef(s),v=t.useRef(!1),o=t.useRef(null),c=t.useRef(!1);C.current=s,c.current=R;const d=t.useCallback(()=>{o.current=null},[]),g=t.useCallback(l=>{M.current=null,H(!1),c.current=!1,l&&(a?.(!1),k?.(),v.current=!0,d())},[k,a,d]),Y=t.useCallback(l=>{if(!l.isPrimary)return;if(l.defaultPrevented){d();return}const f=Date.now();o.current&&f-o.current.timeStamp>we&&d(),i&&l.stopPropagation();const N=l.currentTarget;i&&typeof N.setPointerCapture=="function"&&N.setPointerCapture(l.pointerId),M.current={pointerId:l.pointerId,pointerType:l.pointerType,startPointer:{x:l.clientX,y:l.clientY},startPosition:C.current,defaultPrevented:l.defaultPrevented,movedBeyondThreshold:!1}},[i,d]),O=t.useCallback(l=>{const f=M.current;if(!f||f.pointerId!==l.pointerId)return;i&&l.stopPropagation();const N=l.clientX-f.startPointer.x,E=l.clientY-f.startPointer.y,J=Math.hypot(N,E);if(J>=xe&&(f.movedBeyondThreshold=!0),!i){f.movedBeyondThreshold&&d();return}if(!c.current&&J>=xe&&(H(!0),c.current=!0,a?.(!0),d()),J<xe)return;const U=r>0?r:1;p(n,{x:f.startPosition.x+N/U,y:f.startPosition.y+E/U})},[i,a,p,d,r,n]),L=t.useCallback((l,f)=>{if(!b||f.defaultPrevented||f.movedBeyondThreshold)return Date.now()-(o.current?.timeStamp??0)>we&&d(),!1;if(f.pointerType==="mouse")return d(),!1;const N={timeStamp:Date.now(),point:{x:f.startPointer.x,y:f.startPointer.y}},E=o.current;return!E||N.timeStamp-E.timeStamp>we||Math.hypot(N.point.x-E.point.x,N.point.y-E.point.y)>We?(o.current=N,!1):(v.current=!0,d(),b(),!0)},[b,d]),B=t.useCallback(l=>{const f=M.current;if(!f||f.pointerId!==l.pointerId)return;i&&l.stopPropagation(),i&&typeof l.currentTarget.hasPointerCapture=="function"&&l.currentTarget.hasPointerCapture(l.pointerId)&&typeof l.currentTarget.releasePointerCapture=="function"&&l.currentTarget.releasePointerCapture(l.pointerId);const N=c.current;!N&&L(l,f)&&l.preventDefault(),g(N)},[i,g,L]),X=t.useCallback(l=>{const f=M.current;!f||f.pointerId!==l.pointerId||(i&&l.stopPropagation(),i&&typeof l.currentTarget.hasPointerCapture=="function"&&l.currentTarget.hasPointerCapture(l.pointerId)&&typeof l.currentTarget.releasePointerCapture=="function"&&l.currentTarget.releasePointerCapture(l.pointerId),d(),g(c.current))},[i,g,d]),G=t.useCallback(l=>{v.current&&(v.current=!1,l.preventDefault(),l.stopPropagation())},[]);return t.useMemo(()=>({isDragging:R,onPointerDown:Y,onPointerMove:O,onPointerUp:B,onPointerCancel:X,onClickCapture:G}),[R,G,X,Y,O,B])}const Le=new Set(["planning","researching","executing","finalizing","merging","merging-fix"]);function Ue(n){return n?n.charAt(0).toUpperCase()+n.slice(1):"Executing"}function Be({taskColumnFlags:n,style:s,position:r,scale:i,isSelected:p=!1,isHighlighted:a=!1,isDimmed:k=!1,onMouseEnter:b,onMouseLeave:R,onClick:H,onNodePositionChange:M,onNodeDragStateChange:C,onNodeDragEnd:v,...o}){const{task:c,globalPaused:d,onOpenDetail:g}=o,Y=c.status==="failed",O=c.paused===!0,L=c.column==="in-progress"||Le.has(c.status),B=c.status==="awaiting-approval"&&!L,X=!d&&!Y&&!O&&!B&&L,G=typeof c.currentStep=="number"&&c.currentStep>=0&&Array.isArray(c.steps)&&c.currentStep<c.steps.length,l=c.column==="in-review",f=Fe({taskId:c.id,position:r,scale:i,canDrag:p,onPositionChange:M,onDragStateChange:C,onDragEnd:v,onDoubleTap:()=>g(c)});return I.jsxs("div",{className:`graph-task-node${p?" graph-node--draggable graph-task-node--selected":""}${f.isDragging?" graph-node--dragging":""}${a?" graph-task-node--highlighted graph-node--highlighted":""}${k?" graph-task-node--dimmed graph-node--dimmed":""}${X?" graph-task-node--active":""}${l?" graph-task-node--in-review":""}`,style:s,draggable:!1,"data-testid":`graph-task-node-${c.id}`,"data-current-step":X&&G?String(c.currentStep):void 0,onMouseEnter:b,onMouseLeave:R,onClick:H,onDoubleClick:N=>{N.defaultPrevented||g(c)},onClickCapture:f.onClickCapture,onPointerDown:f.onPointerDown,onPointerMove:f.onPointerMove,onPointerUp:f.onPointerUp,onPointerCancel:f.onPointerCancel,children:[X?I.jsx("div",{className:"graph-task-active-indicator",children:I.jsx("span",{className:"graph-task-active-indicator-text",children:Ue(c.status)})}):null,I.jsx(Ae,{...o,taskColumnFlags:n,onOpenDetail:()=>{},disableDrag:!0})]})}function Ze({zoom:n,onZoomIn:s,onZoomOut:r,onFitToGraph:i,onResetView:p}){return I.jsxs("div",{className:"graph-toolbar","data-testid":"graph-toolbar",children:[I.jsx("button",{className:"btn btn-icon",title:"Zoom in (Ctrl+=)","aria-label":"Zoom in",onClick:s,children:I.jsx(_e,{size:16})}),I.jsx("button",{className:"btn btn-icon",title:"Zoom out (Ctrl+-)","aria-label":"Zoom out",onClick:r,children:I.jsx(je,{size:16})}),I.jsxs("div",{className:"graph-toolbar__zoom-label","aria-live":"polite",children:[Math.round(n*100),"%"]}),I.jsx("button",{className:"btn btn-icon",title:"Fit to graph (Ctrl+Shift+F)","aria-label":"Fit to graph",onClick:i,children:I.jsx($e,{size:16})}),I.jsx("button",{className:"btn btn-icon",title:"Reset view (Ctrl+0)","aria-label":"Reset view",onClick:p,children:I.jsx(Ge,{size:16})})]})}const Ke=280,Ve=100;function qe({edges:n,positions:s,nodeWidth:r=Ke,nodeHeight:i=Ve,nodeHeights:p,highlightedEdgeIds:a}){const k=!!(a&&a.size>0);return I.jsxs("svg",{className:"dependency-graph-edges","aria-hidden":"true",children:[I.jsx("defs",{children:I.jsx("marker",{id:"dependency-graph-arrowhead",markerWidth:"10",markerHeight:"7",refX:"10",refY:"3.5",orient:"auto",markerUnits:"strokeWidth",children:I.jsx("path",{d:"M 0 0 L 10 3.5 L 0 7 z",style:{fill:"var(--border)"}})})}),n.map(b=>{const R=s.get(b.source),H=s.get(b.target);if(!R||!H)return null;const M=`${b.source}->${b.target}`,C=k&&(a?.has(M)??!1),v=R.x+r/2,o=R.y+(p?.get(b.source)??i),c=H.x+r/2,d=H.y,g=o+(d-o)/2;return I.jsx("path",{"data-testid":"dependency-edge","data-edge-id":M,className:`dependency-graph-edge${C?" graph-edge--highlighted":""}${k&&!C?" graph-edge--dimmed":""}`,d:`M ${v} ${o} C ${v} ${g}, ${c} ${g}, ${c} ${d}`,fill:"none",markerEnd:"url(#dependency-graph-arrowhead)",style:{opacity:k&&!C?.15:1,stroke:C?"var(--todo)":"var(--border)",strokeWidth:C?"var(--space-xs)":"var(--btn-border-width)",transition:"opacity var(--transition-fast), stroke var(--transition-fast), stroke-width var(--transition-fast)"}},M)})]})}const Je=new Set(["done","archived"]);function Qe(n){return n.filter(s=>typeof s.column=="string"&&s.column.length>0&&!Je.has(s.column))}const et={nodeWidth:280,nodeHeight:100,horizontalGap:40,verticalGap:80,orientation:"vertical"};function ke(n,s){const r={...et,...s},i=n.nodes.map(o=>o.task.id);if(i.length===0)return new Map;const p=new Map,a=new Map;for(const o of i)a.set(o,0),p.set(o,[]);for(const o of n.edges)!a.has(o.source)||!a.has(o.target)||(p.get(o.target)?.push(o.source),a.set(o.source,(a.get(o.source)??0)+1));const k=i.filter(o=>(a.get(o)??0)===0),b=[];for(;k.length>0;){const o=k.shift();b.push(o);for(const c of p.get(o)??[]){const d=(a.get(c)??0)-1;a.set(c,d),d===0&&k.push(c)}}for(const o of i)b.includes(o)||b.push(o);const R=new Map;for(const o of b){const c=n.edges.filter(g=>g.source===o).map(g=>g.target);let d=0;for(const g of c)d=Math.max(d,(R.get(g)??0)+1);R.set(o,d)}const H=new Map;for(const o of i){const c=R.get(o)??0,d=H.get(c)??[];d.push(o),H.set(c,d)}const M=new Map,C=Array.from(H.keys()).sort((o,c)=>o-c),v=new Map;if(r.orientation==="vertical"){let o=0;for(const c of C){v.set(c,o);const d=H.get(c)??[],g=Math.max(r.nodeHeight,...d.map(Y=>r.measuredHeights?.get(Y)??r.nodeHeight));o+=g+r.verticalGap}}for(const o of C){const c=H.get(o)??[];if(c.sort(),r.orientation==="horizontal"){const L=-(c.reduce((G,l)=>G+(r.measuredHeights?.get(l)??r.nodeHeight),0)+Math.max(0,c.length-1)*r.verticalGap)/2,B=o*(r.nodeWidth+r.horizontalGap);let X=L;for(const G of c)M.set(G,{x:B,y:X}),X+=(r.measuredHeights?.get(G)??r.nodeHeight)+r.verticalGap;continue}const Y=-(c.length*r.nodeWidth+Math.max(0,c.length-1)*r.horizontalGap)/2;c.forEach((O,L)=>{const B=Y+L*(r.nodeWidth+r.horizontalGap),X=v.get(o)??o*(r.nodeHeight+r.verticalGap);M.set(O,{x:B,y:X})})}return M}function tt(n){return t.useMemo(()=>{const s=n.map(p=>({task:p})),r=new Set(n.map(p=>p.id)),i=n.flatMap(p=>(p.dependencies??[]).filter(a=>r.has(a)).map(a=>({source:p.id,target:a})));return{nodes:s,edges:i}},[n])}const ue=.1,le=3,De=40,nt=200;function ne(n,s,r){return Math.min(r,Math.max(s,n))}function rt(n){if(!(n instanceof HTMLElement))return!1;const s=n.tagName.toLowerCase();return n.isContentEditable||s==="input"||s==="textarea"||s==="select"}function ot(){const[n,s]=t.useState({x:0,y:0}),[r,i]=t.useState(1),[p,a]=t.useState(!1),k=t.useRef(n),b=t.useRef(r),R=t.useRef(null),H=t.useRef(null),M=t.useRef(new Map),C=t.useRef(null),v=t.useRef({minX:0,minY:0,maxX:0,maxY:0});t.useEffect(()=>{k.current=n},[n]),t.useEffect(()=>{b.current=r},[r]),t.useEffect(()=>()=>{R.current!==null&&window.clearTimeout(R.current)},[]);const o=t.useMemo(()=>`translate(${n.x}px, ${n.y}px) scale(${r})`,[n.x,n.y,r]),c=t.useMemo(()=>Math.round(r*100),[r]),d=t.useCallback(u=>{if(!u){R.current!==null&&(window.clearTimeout(R.current),R.current=null),a(!1);return}a(!0),R.current!==null&&window.clearTimeout(R.current),R.current=window.setTimeout(()=>{a(!1),R.current=null},nt)},[]),g=t.useCallback((u,m,y,T=b.current)=>{const P=v.current;if(P.maxX<=P.minX||P.maxY<=P.minY)return{x:ne(u.x,-m,m),y:ne(u.y,-y,y)};const W=m-P.maxX*T,A=-P.minX*T,_=y-P.maxY*T,K=-P.minY*T,oe=W>A?(W+A)/2:ne(u.x,W,A),$=_>K?(_+K)/2:ne(u.y,_,K);return{x:oe,y:$}},[]),Y=t.useCallback((u,m,y,T)=>{const P=b.current,W=k.current,A=ne(u,ue,le),_=A/P,K=g({x:m.x-(m.x-W.x)*_,y:m.y-(m.y-W.y)*_},y,T,A);i(A),s(K)},[g]),O=t.useCallback((u,m,y,T)=>{d(!1);const P=T??{x:m/2,y:y/2};Y(b.current*u,P,m,y)},[d,Y]),L=t.useCallback((u,m)=>{if(u&&m){O(1.2,u,m);return}i(y=>ne(y+.1,ue,le))},[O]),B=t.useCallback((u,m)=>{if(u&&m){O(1/1.2,u,m);return}i(y=>ne(y-.1,ue,le))},[O]),X=t.useCallback(()=>{d(!0),s({x:0,y:0}),i(1)},[d]),G=t.useCallback((u,m,y,T)=>{if(d(!0),u.size===0){s({x:0,y:0}),i(1);return}const P=T?.nodeWidth??280,W=T?.nodeHeight??100,A=Array.from(u.entries()),_=Math.min(...A.map(([,te])=>te.x)),K=Math.min(...A.map(([,te])=>te.y)),oe=Math.max(...A.map(([,te])=>te.x+P)),$=Math.max(...A.map(([te,me])=>me.y+(T?.measuredHeights?.get(te)??W))),Q=Math.max(1,oe-_),V=Math.max(1,$-K),ce=Math.max(1,m-De*2),fe=Math.max(1,y-De*2),ee=ne(Math.min(ce/Q,fe/V),ue,le),pe=(m-Q*ee)/2-_*ee,he=(y-V*ee)/2-K*ee;i(ee),s(g({x:pe,y:he},m,y,ee))},[g,d]),l=t.useCallback((u,m)=>{if(M.current.set(u,m),M.current.size===2){const[y,T]=Array.from(M.current.values());C.current={distance:Math.hypot(y.x-T.x,y.y-T.y),zoom:b.current,pan:k.current,midpoint:{x:(y.x+T.x)/2,y:(y.y+T.y)/2}},H.current=null;return}H.current={start:m,panStart:k.current}},[]),f=t.useCallback((u,m,y,T)=>{if(M.current.has(u)&&M.current.set(u,m),M.current.size===2&&C.current){d(!1);const[A,_]=Array.from(M.current.values()),oe=Math.hypot(A.x-_.x,A.y-_.y)/Math.max(1,C.current.distance),$={x:(A.x+_.x)/2,y:(A.y+_.y)/2},Q=ne(C.current.zoom*oe,ue,le),V=Q/C.current.zoom,ce=g({x:$.x-(C.current.midpoint.x-C.current.pan.x)*V,y:$.y-(C.current.midpoint.y-C.current.pan.y)*V},y,T);i(Q),s(ce);return}const P=H.current;if(!P)return;d(!1);const W={x:P.panStart.x+(m.x-P.start.x),y:P.panStart.y+(m.y-P.start.y)};s(g(W,y,T))},[g,d]),N=t.useCallback(u=>{if(M.current.delete(u),M.current.size<2&&(C.current=null),M.current.size===1){const[m]=Array.from(M.current.values());H.current={start:m,panStart:k.current};return}M.current.size===0&&(H.current=null)},[]),E=t.useCallback((u,m,y,T)=>{d(!1);const P={x:k.current.x-u,y:k.current.y-m};s(g(P,y,T))},[g,d]),J=t.useCallback((u,m,y,T)=>{const P=u<0?1.1:.9;d(!1),Y(b.current*P,m,y,T)},[d,Y]),U=t.useCallback(u=>{v.current=u},[]),Z=t.useCallback((u,m,y,T,P)=>{if(rt(u.target))return;const W=u.metaKey||u.ctrlKey;if(u.key==="Escape"){u.preventDefault(),X();return}if(W){if(u.key==="="||u.key==="+"){u.preventDefault(),O(1.2,m,y);return}if(u.key==="-"){u.preventDefault(),O(1/1.2,m,y);return}if(u.key==="0"){u.preventDefault(),X();return}(u.key==="f"||u.key==="F")&&u.shiftKey&&(u.preventDefault(),G(T,m,y,P))}},[G,X,O]);return{pan:n,zoom:r,zoomPercent:c,transform:o,transitioning:p,zoomIn:L,zoomOut:B,resetView:X,fitToGraph:G,setAnimate:d,onPointerDown:l,onPointerMove:f,onPointerUp:N,onWheelPan:E,onWheelZoom:J,handleKeyDown:Z,setGraphBounds:U}}function st(n){const{upstreamMap:s,downstreamMap:r}=t.useMemo(()=>{const p=new Map,a=new Map;for(const k of n)p.set(k.id,new Set(k.dependencies??[])),a.has(k.id)||a.set(k.id,new Set);for(const k of n)for(const b of k.dependencies??[])a.has(b)||a.set(b,new Set),a.get(b)?.add(k.id);return{upstreamMap:p,downstreamMap:a}},[n]);return{getChain:t.useCallback(p=>{if(!s.has(p)&&!r.has(p))return new Set;const a=new Set([p]),k=(b,R)=>{const H=[b],M=new Set([b]);for(;H.length>0;){const C=H.shift();if(!C)continue;const v=R.get(C);if(v)for(const o of v)M.has(o)||(M.add(o),a.add(o),H.push(o))}};return k(p,s),k(p,r),a},[r,s])}}const Me="fusion-plugin-dependency-graph:positions";function de(n){if(!n||typeof n!="object")return!1;const s=n;return typeof s.x=="number"&&Number.isFinite(s.x)&&typeof s.y=="number"&&Number.isFinite(s.y)}function it(n){const s=ve(Me,n);if(!s)return{};try{const r=JSON.parse(s);if(!r||typeof r!="object")return{};const i={};for(const[p,a]of Object.entries(r))de(a)&&(i[p]=a);return i}catch{return{}}}function at(n,s,r){const i={};for(const[p,a]of Object.entries(n))s.has(p)&&de(a)&&(i[p]=a);Xe(Me,JSON.stringify(i),r)}function ct(n){Ye(Me,n)}function ut(n,s,r){const i={};for(const[p,a]of Object.entries(n))r.has(p)&&de(a)&&(i[p]=a);for(const[p,a]of Object.entries(s))r.has(p)&&de(a)&&(i[p]=a);return i}function lt(n,s){const r={};for(const[i,p]of Object.entries(n))s.has(i)&&(r[i]=p);return r}function dt({projectId:n,visibleTaskIds:s}){const[r,i]=t.useState(null);t.useEffect(()=>{i(it(n))},[n]);const p=t.useCallback(k=>{at(k,s,n),i(lt(k,s))},[n,s]),a=t.useCallback(()=>{ct(n),i(null)},[n]);return{savedPositions:r,persistPositions:p,clearSavedPositions:a}}const ae=280,re=100,ft=768,Re=4;function pt({tasks:n,projectId:s,columnFlagsByTaskId:r,onOpenTaskDetail:i,onOpenDetail:p,addToast:a,globalPaused:k,onUpdateTask:b,onArchiveTask:R,onUnarchiveTask:H,onDeleteTask:M,onRetryTask:C,onOpenDetailWithTab:v,onOpenMission:o,onMoveTask:c,lastFetchTimeMs:d}){const g=t.useRef(null),Y=t.useRef(null),O=t.useRef(!1),L=t.useRef(new Map),[B,X]=t.useState(null),[G,l]=t.useState(null),[f,N]=t.useState({width:0,height:0}),[E,J]=t.useState(new Map),U=t.useMemo(()=>Qe(n),[n]),Z=tt(U),{getChain:u}=st(U),m=B??G,y=t.useMemo(()=>m?u(m):new Set,[m,u]),T=t.useMemo(()=>{const e=f.width||(typeof window<"u"?window.innerWidth:0);return(f.height||(typeof window<"u"?window.innerHeight:0))>e||e<ft?"horizontal":"vertical"},[f.height,f.width]),P=t.useMemo(()=>({nodeWidth:ae,nodeHeight:re,horizontalGap:40,verticalGap:80,orientation:T,measuredHeights:E}),[E,T]),W=t.useMemo(()=>ke(Z,P),[Z,P]),A=t.useMemo(()=>new Set(U.map(e=>e.id)),[U]),{savedPositions:_,persistPositions:K,clearSavedPositions:oe}=dt({projectId:s,visibleTaskIds:A}),[$,Q]=t.useState(W),[V,ce]=t.useState(!1);t.useEffect(()=>{const e={};for(const[x,S]of W.entries())e[x]=S;const h=_?ut(e,_,A):e;Q(new Map(Object.entries(h)))},[W,_,A]),t.useEffect(()=>{const e=g.current;if(!e)return;const h=(S,z)=>{N(w=>w.width===S&&w.height===z?w:{width:S,height:z})};if(typeof ResizeObserver>"u"){h(e.clientWidth||(typeof window<"u"?window.innerWidth:0),e.clientHeight||(typeof window<"u"?window.innerHeight:0));return}h(e.clientWidth,e.clientHeight);const x=new ResizeObserver(S=>{const z=S[0];z&&h(z.contentRect.width,z.contentRect.height)});return x.observe(e),()=>x.disconnect()},[]),t.useEffect(()=>{const e=g.current;if(!e)return;const h=new Set(Z.nodes.map(w=>w.task.id)),x=new Map;for(const w of h){const D=e.querySelector(`[data-testid="graph-task-node-${w}"]`);D&&x.set(w,D)}L.current=x,J(w=>{let D=!1;const j=new Map;for(const[q,ie]of w.entries()){if(!h.has(q)){D=!0;continue}j.set(q,ie)}return D?j:w});const S=(w,D)=>{J(j=>{const q=j.get(w);if(q!==void 0&&Math.abs(q-D)<1)return j;const ie=new Map(j);return ie.set(w,D),ie})};for(const[w,D]of x.entries())S(w,D.offsetHeight||re);if(typeof ResizeObserver>"u")return;const z=new ResizeObserver(w=>{for(const D of w){const j=D.target,q=Array.from(x.entries()).find(([,ie])=>ie===j)?.[0];q&&S(q,j.offsetHeight||re)}});for(const w of x.values())z.observe(w);return()=>z.disconnect()},[Z.nodes,$,f.height,f.width]);const{transform:fe,zoom:ee,transitioning:pe,zoomIn:he,zoomOut:te,resetView:me,fitToGraph:ge,onPointerDown:Ie,onPointerMove:He,onPointerUp:be,onWheelPan:ze,onWheelZoom:Ee,handleKeyDown:Oe,setGraphBounds:Pe}=ot(),F=t.useMemo(()=>{const e=Array.from($.values());if(e.length===0)return{minX:0,minY:0,maxX:0,maxY:0,width:0,height:0};const h=Math.min(...e.map(w=>w.x)),x=Math.min(...e.map(w=>w.y)),S=Math.max(...e.map(w=>w.x+ae)),z=Math.max(...Array.from($.entries()).map(([w,D])=>D.y+(E.get(w)??re)));return{minX:h,minY:x,maxX:S,maxY:z,width:Math.max(0,S-h),height:Math.max(0,z-x)}},[E,$]),se=t.useMemo(()=>{if($.size===0)return $;const e=new Map;for(const[h,x]of $.entries())e.set(h,{x:x.x-F.minX,y:x.y-F.minY});return e},[F.minX,F.minY,$]);t.useEffect(()=>{Pe({minX:0,minY:0,maxX:F.width,maxY:F.height})},[F.height,F.width,Pe]);const Ce=t.useMemo(()=>Array.from(se.keys()).sort().join("|"),[se]),ye=t.useMemo(()=>[Ce,f.width,f.height,F.width,F.height,Array.from(E.entries()).sort(([e],[h])=>e.localeCompare(h)).map(([e,h])=>`${e}:${Math.round(h)}`).join("|")].join("::"),[F.height,F.width,Ce,E,f.height,f.width]),Te=t.useRef(null);t.useEffect(()=>{if(U.length===0||se.size===0)return;const e=g.current;if(!e)return;const h=e.clientWidth||f.width,x=e.clientHeight||f.height;if(h===0||x===0||Te.current===ye)return;let S=0,z=0;const w=()=>{const D=g.current;if(!D)return;const j=D.clientWidth||f.width,q=D.clientHeight||f.height;j===0||q===0||(ge(se,j,q,{nodeWidth:ae,nodeHeight:re,measuredHeights:E}),Te.current=ye)};return typeof requestAnimationFrame=="function"?S=requestAnimationFrame(()=>{z=requestAnimationFrame(w)}):w(),()=>{S&&cancelAnimationFrame(S),z&&cancelAnimationFrame(z)}},[U.length,ye,ge,E,se,f.height,f.width]);const Se=t.useCallback(()=>{oe();const e=ke(Z,P);Q(e)},[oe,Z,P]),Ne=t.useCallback(()=>{const e={};for(const[h,x]of $.entries())e[h]=x;K(e)},[K,$]);return I.jsxs("section",{className:"dependency-graph","data-testid":"dependency-graph",children:[I.jsx("div",{ref:g,className:"dependency-graph__viewport",onPointerDown:e=>{V||(Y.current={x:e.clientX,y:e.clientY},O.current=!1,Ie(e.pointerId,{x:e.clientX,y:e.clientY}))},onPointerMove:e=>{if(V)return;const h=g.current;if(!h)return;const x=Y.current;if(x){const S=Math.abs(e.clientX-x.x),z=Math.abs(e.clientY-x.y);(S>Re||z>Re)&&(O.current=!0)}He(e.pointerId,{x:e.clientX,y:e.clientY},h.clientWidth,h.clientHeight)},onPointerUp:e=>{V||be(e.pointerId),Y.current=null},onPointerCancel:e=>{V||be(e.pointerId),Y.current=null,O.current=!1},onWheel:e=>{e.preventDefault();const h=g.current;if(h){if(e.ctrlKey||e.metaKey){const x=h.getBoundingClientRect();Ee(e.deltaY,{x:e.clientX-x.left,y:e.clientY-x.top},h.clientWidth,h.clientHeight);return}ze(e.deltaX,e.deltaY,h.clientWidth,h.clientHeight)}},onKeyDown:e=>{const h=g.current;h&&Oe(e,h.clientWidth,h.clientHeight,se,{nodeWidth:ae,nodeHeight:re,measuredHeights:E})},tabIndex:0,onClick:()=>{O.current||V||l(null)},children:U.length===0?I.jsx("div",{className:"dependency-graph__empty",children:"No active tasks to display in graph view."}):I.jsxs("div",{className:`graph-canvas-transform${pe?" graph-canvas-transform--animate":""}`,style:{transform:fe,width:`${F.width}px`,height:`${F.height}px`},children:[I.jsx(qe,{edges:Z.edges,positions:se,nodeWidth:ae,nodeHeight:re,nodeHeights:E,highlightedEdgeIds:y.size>0?new Set(Z.edges.filter(e=>y.has(e.source)&&y.has(e.target)).map(e=>`${e.source}->${e.target}`)):void 0}),I.jsx("div",{className:"dependency-graph__nodes-layer",children:Z.nodes.map(e=>{const h=se.get(e.task.id);return h?I.jsx(Be,{task:e.task,projectId:s,taskColumnFlags:r?.get(e.task.id),isSelected:G===e.task.id,style:{minHeight:`${re}px`,left:`${h.x}px`,top:`${h.y}px`},position:h,scale:ee,onNodePositionChange:(x,S)=>{Q(z=>{const w={x:S.x+F.minX,y:S.y+F.minY},D=z.get(x);if(D&&D.x===w.x&&D.y===w.y)return z;const j=new Map(z);return j.set(x,w),j})},onNodeDragStateChange:ce,onNodeDragEnd:Ne,isHighlighted:y.size>0&&y.has(e.task.id),isDimmed:y.size>0&&!y.has(e.task.id),onOpenDetail:p??(x=>i?.(x.id)),addToast:a??(()=>{}),globalPaused:k,onUpdateTask:b,onArchiveTask:R,onUnarchiveTask:H,onDeleteTask:M,onRetryTask:C,onOpenDetailWithTab:v,onOpenMission:o,onMoveTask:c,lastFetchTimeMs:d,onMouseEnter:()=>X(e.task.id),onMouseLeave:()=>X(null),onClick:x=>{x.stopPropagation(),O.current=!1,l(S=>S===e.task.id?null:e.task.id)}},e.task.id):null})})]})}),I.jsx(Ze,{zoom:ee,onZoomIn:()=>{const e=g.current;e&&he(e.clientWidth,e.clientHeight)},onZoomOut:()=>{const e=g.current;e&&te(e.clientWidth,e.clientHeight)},onFitToGraph:()=>{Se();const e=g.current;if(!e)return;const h=ke(Z,P),x=new Map,S=Array.from(h.values()),z=S.length>0?Math.min(...S.map(D=>D.x)):0,w=S.length>0?Math.min(...S.map(D=>D.y)):0;for(const[D,j]of h.entries())x.set(D,{x:j.x-z,y:j.y-w});ge(x,e.clientWidth,e.clientHeight,{nodeWidth:ae,nodeHeight:re,measuredHeights:E})},onResetView:()=>{Se(),me()}})]})}function bt({context:n}){return t.createElement(pt,{tasks:n?.tasks??[],projectId:n?.projectId,columnFlagsByTaskId:n?.columnFlagsByTaskId,onOpenDetail:n?.openTaskDetail})}export{pt as DependencyGraph,bt as DependencyGraphDashboardView,bt as default};
1
+ import{r as t,j as I}from"./vendor-react-SZ_qB27O.js";import{ef as Ae,du as ve,dw as Xe,dv as Ye}from"./index-I32FijPT.js";import{Z as _e,a as je,M as $e,R as Ge}from"./zoom-out-DzDzWQt1.js";import"./vendor-i18n-Duky4gdQ.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-reactflow-BlIeoTu4.js";import"./vendor-xterm-BNq00GSj.js";import"./createLucideIcon-CshVyKO4.js";const xe=4,we=300,We=24;function Fe({taskId:n,position:s,scale:r,canDrag:i,onPositionChange:p,onDragStateChange:a,onDragEnd:k,onDoubleTap:b}){const[R,H]=t.useState(!1),M=t.useRef(null),C=t.useRef(s),v=t.useRef(!1),o=t.useRef(null),c=t.useRef(!1);C.current=s,c.current=R;const d=t.useCallback(()=>{o.current=null},[]),g=t.useCallback(l=>{M.current=null,H(!1),c.current=!1,l&&(a?.(!1),k?.(),v.current=!0,d())},[k,a,d]),Y=t.useCallback(l=>{if(!l.isPrimary)return;if(l.defaultPrevented){d();return}const f=Date.now();o.current&&f-o.current.timeStamp>we&&d(),i&&l.stopPropagation();const N=l.currentTarget;i&&typeof N.setPointerCapture=="function"&&N.setPointerCapture(l.pointerId),M.current={pointerId:l.pointerId,pointerType:l.pointerType,startPointer:{x:l.clientX,y:l.clientY},startPosition:C.current,defaultPrevented:l.defaultPrevented,movedBeyondThreshold:!1}},[i,d]),O=t.useCallback(l=>{const f=M.current;if(!f||f.pointerId!==l.pointerId)return;i&&l.stopPropagation();const N=l.clientX-f.startPointer.x,E=l.clientY-f.startPointer.y,J=Math.hypot(N,E);if(J>=xe&&(f.movedBeyondThreshold=!0),!i){f.movedBeyondThreshold&&d();return}if(!c.current&&J>=xe&&(H(!0),c.current=!0,a?.(!0),d()),J<xe)return;const U=r>0?r:1;p(n,{x:f.startPosition.x+N/U,y:f.startPosition.y+E/U})},[i,a,p,d,r,n]),L=t.useCallback((l,f)=>{if(!b||f.defaultPrevented||f.movedBeyondThreshold)return Date.now()-(o.current?.timeStamp??0)>we&&d(),!1;if(f.pointerType==="mouse")return d(),!1;const N={timeStamp:Date.now(),point:{x:f.startPointer.x,y:f.startPointer.y}},E=o.current;return!E||N.timeStamp-E.timeStamp>we||Math.hypot(N.point.x-E.point.x,N.point.y-E.point.y)>We?(o.current=N,!1):(v.current=!0,d(),b(),!0)},[b,d]),B=t.useCallback(l=>{const f=M.current;if(!f||f.pointerId!==l.pointerId)return;i&&l.stopPropagation(),i&&typeof l.currentTarget.hasPointerCapture=="function"&&l.currentTarget.hasPointerCapture(l.pointerId)&&typeof l.currentTarget.releasePointerCapture=="function"&&l.currentTarget.releasePointerCapture(l.pointerId);const N=c.current;!N&&L(l,f)&&l.preventDefault(),g(N)},[i,g,L]),X=t.useCallback(l=>{const f=M.current;!f||f.pointerId!==l.pointerId||(i&&l.stopPropagation(),i&&typeof l.currentTarget.hasPointerCapture=="function"&&l.currentTarget.hasPointerCapture(l.pointerId)&&typeof l.currentTarget.releasePointerCapture=="function"&&l.currentTarget.releasePointerCapture(l.pointerId),d(),g(c.current))},[i,g,d]),G=t.useCallback(l=>{v.current&&(v.current=!1,l.preventDefault(),l.stopPropagation())},[]);return t.useMemo(()=>({isDragging:R,onPointerDown:Y,onPointerMove:O,onPointerUp:B,onPointerCancel:X,onClickCapture:G}),[R,G,X,Y,O,B])}const Le=new Set(["planning","researching","executing","finalizing","merging","merging-fix"]);function Ue(n){return n?n.charAt(0).toUpperCase()+n.slice(1):"Executing"}function Be({taskColumnFlags:n,style:s,position:r,scale:i,isSelected:p=!1,isHighlighted:a=!1,isDimmed:k=!1,onMouseEnter:b,onMouseLeave:R,onClick:H,onNodePositionChange:M,onNodeDragStateChange:C,onNodeDragEnd:v,...o}){const{task:c,globalPaused:d,onOpenDetail:g}=o,Y=c.status==="failed",O=c.paused===!0,L=c.column==="in-progress"||Le.has(c.status),B=c.status==="awaiting-approval"&&!L,X=!d&&!Y&&!O&&!B&&L,G=typeof c.currentStep=="number"&&c.currentStep>=0&&Array.isArray(c.steps)&&c.currentStep<c.steps.length,l=c.column==="in-review",f=Fe({taskId:c.id,position:r,scale:i,canDrag:p,onPositionChange:M,onDragStateChange:C,onDragEnd:v,onDoubleTap:()=>g(c)});return I.jsxs("div",{className:`graph-task-node${p?" graph-node--draggable graph-task-node--selected":""}${f.isDragging?" graph-node--dragging":""}${a?" graph-task-node--highlighted graph-node--highlighted":""}${k?" graph-task-node--dimmed graph-node--dimmed":""}${X?" graph-task-node--active":""}${l?" graph-task-node--in-review":""}`,style:s,draggable:!1,"data-testid":`graph-task-node-${c.id}`,"data-current-step":X&&G?String(c.currentStep):void 0,onMouseEnter:b,onMouseLeave:R,onClick:H,onDoubleClick:N=>{N.defaultPrevented||g(c)},onClickCapture:f.onClickCapture,onPointerDown:f.onPointerDown,onPointerMove:f.onPointerMove,onPointerUp:f.onPointerUp,onPointerCancel:f.onPointerCancel,children:[X?I.jsx("div",{className:"graph-task-active-indicator",children:I.jsx("span",{className:"graph-task-active-indicator-text",children:Ue(c.status)})}):null,I.jsx(Ae,{...o,taskColumnFlags:n,onOpenDetail:()=>{},disableDrag:!0})]})}function Ze({zoom:n,onZoomIn:s,onZoomOut:r,onFitToGraph:i,onResetView:p}){return I.jsxs("div",{className:"graph-toolbar","data-testid":"graph-toolbar",children:[I.jsx("button",{className:"btn btn-icon",title:"Zoom in (Ctrl+=)","aria-label":"Zoom in",onClick:s,children:I.jsx(_e,{size:16})}),I.jsx("button",{className:"btn btn-icon",title:"Zoom out (Ctrl+-)","aria-label":"Zoom out",onClick:r,children:I.jsx(je,{size:16})}),I.jsxs("div",{className:"graph-toolbar__zoom-label","aria-live":"polite",children:[Math.round(n*100),"%"]}),I.jsx("button",{className:"btn btn-icon",title:"Fit to graph (Ctrl+Shift+F)","aria-label":"Fit to graph",onClick:i,children:I.jsx($e,{size:16})}),I.jsx("button",{className:"btn btn-icon",title:"Reset view (Ctrl+0)","aria-label":"Reset view",onClick:p,children:I.jsx(Ge,{size:16})})]})}const Ke=280,Ve=100;function qe({edges:n,positions:s,nodeWidth:r=Ke,nodeHeight:i=Ve,nodeHeights:p,highlightedEdgeIds:a}){const k=!!(a&&a.size>0);return I.jsxs("svg",{className:"dependency-graph-edges","aria-hidden":"true",children:[I.jsx("defs",{children:I.jsx("marker",{id:"dependency-graph-arrowhead",markerWidth:"10",markerHeight:"7",refX:"10",refY:"3.5",orient:"auto",markerUnits:"strokeWidth",children:I.jsx("path",{d:"M 0 0 L 10 3.5 L 0 7 z",style:{fill:"var(--border)"}})})}),n.map(b=>{const R=s.get(b.source),H=s.get(b.target);if(!R||!H)return null;const M=`${b.source}->${b.target}`,C=k&&(a?.has(M)??!1),v=R.x+r/2,o=R.y+(p?.get(b.source)??i),c=H.x+r/2,d=H.y,g=o+(d-o)/2;return I.jsx("path",{"data-testid":"dependency-edge","data-edge-id":M,className:`dependency-graph-edge${C?" graph-edge--highlighted":""}${k&&!C?" graph-edge--dimmed":""}`,d:`M ${v} ${o} C ${v} ${g}, ${c} ${g}, ${c} ${d}`,fill:"none",markerEnd:"url(#dependency-graph-arrowhead)",style:{opacity:k&&!C?.15:1,stroke:C?"var(--todo)":"var(--border)",strokeWidth:C?"var(--space-xs)":"var(--btn-border-width)",transition:"opacity var(--transition-fast), stroke var(--transition-fast), stroke-width var(--transition-fast)"}},M)})]})}const Je=new Set(["done","archived"]);function Qe(n){return n.filter(s=>typeof s.column=="string"&&s.column.length>0&&!Je.has(s.column))}const et={nodeWidth:280,nodeHeight:100,horizontalGap:40,verticalGap:80,orientation:"vertical"};function ke(n,s){const r={...et,...s},i=n.nodes.map(o=>o.task.id);if(i.length===0)return new Map;const p=new Map,a=new Map;for(const o of i)a.set(o,0),p.set(o,[]);for(const o of n.edges)!a.has(o.source)||!a.has(o.target)||(p.get(o.target)?.push(o.source),a.set(o.source,(a.get(o.source)??0)+1));const k=i.filter(o=>(a.get(o)??0)===0),b=[];for(;k.length>0;){const o=k.shift();b.push(o);for(const c of p.get(o)??[]){const d=(a.get(c)??0)-1;a.set(c,d),d===0&&k.push(c)}}for(const o of i)b.includes(o)||b.push(o);const R=new Map;for(const o of b){const c=n.edges.filter(g=>g.source===o).map(g=>g.target);let d=0;for(const g of c)d=Math.max(d,(R.get(g)??0)+1);R.set(o,d)}const H=new Map;for(const o of i){const c=R.get(o)??0,d=H.get(c)??[];d.push(o),H.set(c,d)}const M=new Map,C=Array.from(H.keys()).sort((o,c)=>o-c),v=new Map;if(r.orientation==="vertical"){let o=0;for(const c of C){v.set(c,o);const d=H.get(c)??[],g=Math.max(r.nodeHeight,...d.map(Y=>r.measuredHeights?.get(Y)??r.nodeHeight));o+=g+r.verticalGap}}for(const o of C){const c=H.get(o)??[];if(c.sort(),r.orientation==="horizontal"){const L=-(c.reduce((G,l)=>G+(r.measuredHeights?.get(l)??r.nodeHeight),0)+Math.max(0,c.length-1)*r.verticalGap)/2,B=o*(r.nodeWidth+r.horizontalGap);let X=L;for(const G of c)M.set(G,{x:B,y:X}),X+=(r.measuredHeights?.get(G)??r.nodeHeight)+r.verticalGap;continue}const Y=-(c.length*r.nodeWidth+Math.max(0,c.length-1)*r.horizontalGap)/2;c.forEach((O,L)=>{const B=Y+L*(r.nodeWidth+r.horizontalGap),X=v.get(o)??o*(r.nodeHeight+r.verticalGap);M.set(O,{x:B,y:X})})}return M}function tt(n){return t.useMemo(()=>{const s=n.map(p=>({task:p})),r=new Set(n.map(p=>p.id)),i=n.flatMap(p=>(p.dependencies??[]).filter(a=>r.has(a)).map(a=>({source:p.id,target:a})));return{nodes:s,edges:i}},[n])}const ue=.1,le=3,De=40,nt=200;function ne(n,s,r){return Math.min(r,Math.max(s,n))}function rt(n){if(!(n instanceof HTMLElement))return!1;const s=n.tagName.toLowerCase();return n.isContentEditable||s==="input"||s==="textarea"||s==="select"}function ot(){const[n,s]=t.useState({x:0,y:0}),[r,i]=t.useState(1),[p,a]=t.useState(!1),k=t.useRef(n),b=t.useRef(r),R=t.useRef(null),H=t.useRef(null),M=t.useRef(new Map),C=t.useRef(null),v=t.useRef({minX:0,minY:0,maxX:0,maxY:0});t.useEffect(()=>{k.current=n},[n]),t.useEffect(()=>{b.current=r},[r]),t.useEffect(()=>()=>{R.current!==null&&window.clearTimeout(R.current)},[]);const o=t.useMemo(()=>`translate(${n.x}px, ${n.y}px) scale(${r})`,[n.x,n.y,r]),c=t.useMemo(()=>Math.round(r*100),[r]),d=t.useCallback(u=>{if(!u){R.current!==null&&(window.clearTimeout(R.current),R.current=null),a(!1);return}a(!0),R.current!==null&&window.clearTimeout(R.current),R.current=window.setTimeout(()=>{a(!1),R.current=null},nt)},[]),g=t.useCallback((u,m,y,T=b.current)=>{const P=v.current;if(P.maxX<=P.minX||P.maxY<=P.minY)return{x:ne(u.x,-m,m),y:ne(u.y,-y,y)};const W=m-P.maxX*T,A=-P.minX*T,_=y-P.maxY*T,K=-P.minY*T,oe=W>A?(W+A)/2:ne(u.x,W,A),$=_>K?(_+K)/2:ne(u.y,_,K);return{x:oe,y:$}},[]),Y=t.useCallback((u,m,y,T)=>{const P=b.current,W=k.current,A=ne(u,ue,le),_=A/P,K=g({x:m.x-(m.x-W.x)*_,y:m.y-(m.y-W.y)*_},y,T,A);i(A),s(K)},[g]),O=t.useCallback((u,m,y,T)=>{d(!1);const P=T??{x:m/2,y:y/2};Y(b.current*u,P,m,y)},[d,Y]),L=t.useCallback((u,m)=>{if(u&&m){O(1.2,u,m);return}i(y=>ne(y+.1,ue,le))},[O]),B=t.useCallback((u,m)=>{if(u&&m){O(1/1.2,u,m);return}i(y=>ne(y-.1,ue,le))},[O]),X=t.useCallback(()=>{d(!0),s({x:0,y:0}),i(1)},[d]),G=t.useCallback((u,m,y,T)=>{if(d(!0),u.size===0){s({x:0,y:0}),i(1);return}const P=T?.nodeWidth??280,W=T?.nodeHeight??100,A=Array.from(u.entries()),_=Math.min(...A.map(([,te])=>te.x)),K=Math.min(...A.map(([,te])=>te.y)),oe=Math.max(...A.map(([,te])=>te.x+P)),$=Math.max(...A.map(([te,me])=>me.y+(T?.measuredHeights?.get(te)??W))),Q=Math.max(1,oe-_),V=Math.max(1,$-K),ce=Math.max(1,m-De*2),fe=Math.max(1,y-De*2),ee=ne(Math.min(ce/Q,fe/V),ue,le),pe=(m-Q*ee)/2-_*ee,he=(y-V*ee)/2-K*ee;i(ee),s(g({x:pe,y:he},m,y,ee))},[g,d]),l=t.useCallback((u,m)=>{if(M.current.set(u,m),M.current.size===2){const[y,T]=Array.from(M.current.values());C.current={distance:Math.hypot(y.x-T.x,y.y-T.y),zoom:b.current,pan:k.current,midpoint:{x:(y.x+T.x)/2,y:(y.y+T.y)/2}},H.current=null;return}H.current={start:m,panStart:k.current}},[]),f=t.useCallback((u,m,y,T)=>{if(M.current.has(u)&&M.current.set(u,m),M.current.size===2&&C.current){d(!1);const[A,_]=Array.from(M.current.values()),oe=Math.hypot(A.x-_.x,A.y-_.y)/Math.max(1,C.current.distance),$={x:(A.x+_.x)/2,y:(A.y+_.y)/2},Q=ne(C.current.zoom*oe,ue,le),V=Q/C.current.zoom,ce=g({x:$.x-(C.current.midpoint.x-C.current.pan.x)*V,y:$.y-(C.current.midpoint.y-C.current.pan.y)*V},y,T);i(Q),s(ce);return}const P=H.current;if(!P)return;d(!1);const W={x:P.panStart.x+(m.x-P.start.x),y:P.panStart.y+(m.y-P.start.y)};s(g(W,y,T))},[g,d]),N=t.useCallback(u=>{if(M.current.delete(u),M.current.size<2&&(C.current=null),M.current.size===1){const[m]=Array.from(M.current.values());H.current={start:m,panStart:k.current};return}M.current.size===0&&(H.current=null)},[]),E=t.useCallback((u,m,y,T)=>{d(!1);const P={x:k.current.x-u,y:k.current.y-m};s(g(P,y,T))},[g,d]),J=t.useCallback((u,m,y,T)=>{const P=u<0?1.1:.9;d(!1),Y(b.current*P,m,y,T)},[d,Y]),U=t.useCallback(u=>{v.current=u},[]),Z=t.useCallback((u,m,y,T,P)=>{if(rt(u.target))return;const W=u.metaKey||u.ctrlKey;if(u.key==="Escape"){u.preventDefault(),X();return}if(W){if(u.key==="="||u.key==="+"){u.preventDefault(),O(1.2,m,y);return}if(u.key==="-"){u.preventDefault(),O(1/1.2,m,y);return}if(u.key==="0"){u.preventDefault(),X();return}(u.key==="f"||u.key==="F")&&u.shiftKey&&(u.preventDefault(),G(T,m,y,P))}},[G,X,O]);return{pan:n,zoom:r,zoomPercent:c,transform:o,transitioning:p,zoomIn:L,zoomOut:B,resetView:X,fitToGraph:G,setAnimate:d,onPointerDown:l,onPointerMove:f,onPointerUp:N,onWheelPan:E,onWheelZoom:J,handleKeyDown:Z,setGraphBounds:U}}function st(n){const{upstreamMap:s,downstreamMap:r}=t.useMemo(()=>{const p=new Map,a=new Map;for(const k of n)p.set(k.id,new Set(k.dependencies??[])),a.has(k.id)||a.set(k.id,new Set);for(const k of n)for(const b of k.dependencies??[])a.has(b)||a.set(b,new Set),a.get(b)?.add(k.id);return{upstreamMap:p,downstreamMap:a}},[n]);return{getChain:t.useCallback(p=>{if(!s.has(p)&&!r.has(p))return new Set;const a=new Set([p]),k=(b,R)=>{const H=[b],M=new Set([b]);for(;H.length>0;){const C=H.shift();if(!C)continue;const v=R.get(C);if(v)for(const o of v)M.has(o)||(M.add(o),a.add(o),H.push(o))}};return k(p,s),k(p,r),a},[r,s])}}const Me="fusion-plugin-dependency-graph:positions";function de(n){if(!n||typeof n!="object")return!1;const s=n;return typeof s.x=="number"&&Number.isFinite(s.x)&&typeof s.y=="number"&&Number.isFinite(s.y)}function it(n){const s=ve(Me,n);if(!s)return{};try{const r=JSON.parse(s);if(!r||typeof r!="object")return{};const i={};for(const[p,a]of Object.entries(r))de(a)&&(i[p]=a);return i}catch{return{}}}function at(n,s,r){const i={};for(const[p,a]of Object.entries(n))s.has(p)&&de(a)&&(i[p]=a);Xe(Me,JSON.stringify(i),r)}function ct(n){Ye(Me,n)}function ut(n,s,r){const i={};for(const[p,a]of Object.entries(n))r.has(p)&&de(a)&&(i[p]=a);for(const[p,a]of Object.entries(s))r.has(p)&&de(a)&&(i[p]=a);return i}function lt(n,s){const r={};for(const[i,p]of Object.entries(n))s.has(i)&&(r[i]=p);return r}function dt({projectId:n,visibleTaskIds:s}){const[r,i]=t.useState(null);t.useEffect(()=>{i(it(n))},[n]);const p=t.useCallback(k=>{at(k,s,n),i(lt(k,s))},[n,s]),a=t.useCallback(()=>{ct(n),i(null)},[n]);return{savedPositions:r,persistPositions:p,clearSavedPositions:a}}const ae=280,re=100,ft=768,Re=4;function pt({tasks:n,projectId:s,columnFlagsByTaskId:r,onOpenTaskDetail:i,onOpenDetail:p,addToast:a,globalPaused:k,onUpdateTask:b,onArchiveTask:R,onUnarchiveTask:H,onDeleteTask:M,onRetryTask:C,onOpenDetailWithTab:v,onOpenMission:o,onMoveTask:c,lastFetchTimeMs:d}){const g=t.useRef(null),Y=t.useRef(null),O=t.useRef(!1),L=t.useRef(new Map),[B,X]=t.useState(null),[G,l]=t.useState(null),[f,N]=t.useState({width:0,height:0}),[E,J]=t.useState(new Map),U=t.useMemo(()=>Qe(n),[n]),Z=tt(U),{getChain:u}=st(U),m=B??G,y=t.useMemo(()=>m?u(m):new Set,[m,u]),T=t.useMemo(()=>{const e=f.width||(typeof window<"u"?window.innerWidth:0);return(f.height||(typeof window<"u"?window.innerHeight:0))>e||e<ft?"horizontal":"vertical"},[f.height,f.width]),P=t.useMemo(()=>({nodeWidth:ae,nodeHeight:re,horizontalGap:40,verticalGap:80,orientation:T,measuredHeights:E}),[E,T]),W=t.useMemo(()=>ke(Z,P),[Z,P]),A=t.useMemo(()=>new Set(U.map(e=>e.id)),[U]),{savedPositions:_,persistPositions:K,clearSavedPositions:oe}=dt({projectId:s,visibleTaskIds:A}),[$,Q]=t.useState(W),[V,ce]=t.useState(!1);t.useEffect(()=>{const e={};for(const[x,S]of W.entries())e[x]=S;const h=_?ut(e,_,A):e;Q(new Map(Object.entries(h)))},[W,_,A]),t.useEffect(()=>{const e=g.current;if(!e)return;const h=(S,z)=>{N(w=>w.width===S&&w.height===z?w:{width:S,height:z})};if(typeof ResizeObserver>"u"){h(e.clientWidth||(typeof window<"u"?window.innerWidth:0),e.clientHeight||(typeof window<"u"?window.innerHeight:0));return}h(e.clientWidth,e.clientHeight);const x=new ResizeObserver(S=>{const z=S[0];z&&h(z.contentRect.width,z.contentRect.height)});return x.observe(e),()=>x.disconnect()},[]),t.useEffect(()=>{const e=g.current;if(!e)return;const h=new Set(Z.nodes.map(w=>w.task.id)),x=new Map;for(const w of h){const D=e.querySelector(`[data-testid="graph-task-node-${w}"]`);D&&x.set(w,D)}L.current=x,J(w=>{let D=!1;const j=new Map;for(const[q,ie]of w.entries()){if(!h.has(q)){D=!0;continue}j.set(q,ie)}return D?j:w});const S=(w,D)=>{J(j=>{const q=j.get(w);if(q!==void 0&&Math.abs(q-D)<1)return j;const ie=new Map(j);return ie.set(w,D),ie})};for(const[w,D]of x.entries())S(w,D.offsetHeight||re);if(typeof ResizeObserver>"u")return;const z=new ResizeObserver(w=>{for(const D of w){const j=D.target,q=Array.from(x.entries()).find(([,ie])=>ie===j)?.[0];q&&S(q,j.offsetHeight||re)}});for(const w of x.values())z.observe(w);return()=>z.disconnect()},[Z.nodes,$,f.height,f.width]);const{transform:fe,zoom:ee,transitioning:pe,zoomIn:he,zoomOut:te,resetView:me,fitToGraph:ge,onPointerDown:Ie,onPointerMove:He,onPointerUp:be,onWheelPan:ze,onWheelZoom:Ee,handleKeyDown:Oe,setGraphBounds:Pe}=ot(),F=t.useMemo(()=>{const e=Array.from($.values());if(e.length===0)return{minX:0,minY:0,maxX:0,maxY:0,width:0,height:0};const h=Math.min(...e.map(w=>w.x)),x=Math.min(...e.map(w=>w.y)),S=Math.max(...e.map(w=>w.x+ae)),z=Math.max(...Array.from($.entries()).map(([w,D])=>D.y+(E.get(w)??re)));return{minX:h,minY:x,maxX:S,maxY:z,width:Math.max(0,S-h),height:Math.max(0,z-x)}},[E,$]),se=t.useMemo(()=>{if($.size===0)return $;const e=new Map;for(const[h,x]of $.entries())e.set(h,{x:x.x-F.minX,y:x.y-F.minY});return e},[F.minX,F.minY,$]);t.useEffect(()=>{Pe({minX:0,minY:0,maxX:F.width,maxY:F.height})},[F.height,F.width,Pe]);const Ce=t.useMemo(()=>Array.from(se.keys()).sort().join("|"),[se]),ye=t.useMemo(()=>[Ce,f.width,f.height,F.width,F.height,Array.from(E.entries()).sort(([e],[h])=>e.localeCompare(h)).map(([e,h])=>`${e}:${Math.round(h)}`).join("|")].join("::"),[F.height,F.width,Ce,E,f.height,f.width]),Te=t.useRef(null);t.useEffect(()=>{if(U.length===0||se.size===0)return;const e=g.current;if(!e)return;const h=e.clientWidth||f.width,x=e.clientHeight||f.height;if(h===0||x===0||Te.current===ye)return;let S=0,z=0;const w=()=>{const D=g.current;if(!D)return;const j=D.clientWidth||f.width,q=D.clientHeight||f.height;j===0||q===0||(ge(se,j,q,{nodeWidth:ae,nodeHeight:re,measuredHeights:E}),Te.current=ye)};return typeof requestAnimationFrame=="function"?S=requestAnimationFrame(()=>{z=requestAnimationFrame(w)}):w(),()=>{S&&cancelAnimationFrame(S),z&&cancelAnimationFrame(z)}},[U.length,ye,ge,E,se,f.height,f.width]);const Se=t.useCallback(()=>{oe();const e=ke(Z,P);Q(e)},[oe,Z,P]),Ne=t.useCallback(()=>{const e={};for(const[h,x]of $.entries())e[h]=x;K(e)},[K,$]);return I.jsxs("section",{className:"dependency-graph","data-testid":"dependency-graph",children:[I.jsx("div",{ref:g,className:"dependency-graph__viewport",onPointerDown:e=>{V||(Y.current={x:e.clientX,y:e.clientY},O.current=!1,Ie(e.pointerId,{x:e.clientX,y:e.clientY}))},onPointerMove:e=>{if(V)return;const h=g.current;if(!h)return;const x=Y.current;if(x){const S=Math.abs(e.clientX-x.x),z=Math.abs(e.clientY-x.y);(S>Re||z>Re)&&(O.current=!0)}He(e.pointerId,{x:e.clientX,y:e.clientY},h.clientWidth,h.clientHeight)},onPointerUp:e=>{V||be(e.pointerId),Y.current=null},onPointerCancel:e=>{V||be(e.pointerId),Y.current=null,O.current=!1},onWheel:e=>{e.preventDefault();const h=g.current;if(h){if(e.ctrlKey||e.metaKey){const x=h.getBoundingClientRect();Ee(e.deltaY,{x:e.clientX-x.left,y:e.clientY-x.top},h.clientWidth,h.clientHeight);return}ze(e.deltaX,e.deltaY,h.clientWidth,h.clientHeight)}},onKeyDown:e=>{const h=g.current;h&&Oe(e,h.clientWidth,h.clientHeight,se,{nodeWidth:ae,nodeHeight:re,measuredHeights:E})},tabIndex:0,onClick:()=>{O.current||V||l(null)},children:U.length===0?I.jsx("div",{className:"dependency-graph__empty",children:"No active tasks to display in graph view."}):I.jsxs("div",{className:`graph-canvas-transform${pe?" graph-canvas-transform--animate":""}`,style:{transform:fe,width:`${F.width}px`,height:`${F.height}px`},children:[I.jsx(qe,{edges:Z.edges,positions:se,nodeWidth:ae,nodeHeight:re,nodeHeights:E,highlightedEdgeIds:y.size>0?new Set(Z.edges.filter(e=>y.has(e.source)&&y.has(e.target)).map(e=>`${e.source}->${e.target}`)):void 0}),I.jsx("div",{className:"dependency-graph__nodes-layer",children:Z.nodes.map(e=>{const h=se.get(e.task.id);return h?I.jsx(Be,{task:e.task,projectId:s,taskColumnFlags:r?.get(e.task.id),isSelected:G===e.task.id,style:{minHeight:`${re}px`,left:`${h.x}px`,top:`${h.y}px`},position:h,scale:ee,onNodePositionChange:(x,S)=>{Q(z=>{const w={x:S.x+F.minX,y:S.y+F.minY},D=z.get(x);if(D&&D.x===w.x&&D.y===w.y)return z;const j=new Map(z);return j.set(x,w),j})},onNodeDragStateChange:ce,onNodeDragEnd:Ne,isHighlighted:y.size>0&&y.has(e.task.id),isDimmed:y.size>0&&!y.has(e.task.id),onOpenDetail:p??(x=>i?.(x.id)),addToast:a??(()=>{}),globalPaused:k,onUpdateTask:b,onArchiveTask:R,onUnarchiveTask:H,onDeleteTask:M,onRetryTask:C,onOpenDetailWithTab:v,onOpenMission:o,onMoveTask:c,lastFetchTimeMs:d,onMouseEnter:()=>X(e.task.id),onMouseLeave:()=>X(null),onClick:x=>{x.stopPropagation(),O.current=!1,l(S=>S===e.task.id?null:e.task.id)}},e.task.id):null})})]})}),I.jsx(Ze,{zoom:ee,onZoomIn:()=>{const e=g.current;e&&he(e.clientWidth,e.clientHeight)},onZoomOut:()=>{const e=g.current;e&&te(e.clientWidth,e.clientHeight)},onFitToGraph:()=>{Se();const e=g.current;if(!e)return;const h=ke(Z,P),x=new Map,S=Array.from(h.values()),z=S.length>0?Math.min(...S.map(D=>D.x)):0,w=S.length>0?Math.min(...S.map(D=>D.y)):0;for(const[D,j]of h.entries())x.set(D,{x:j.x-z,y:j.y-w});ge(x,e.clientWidth,e.clientHeight,{nodeWidth:ae,nodeHeight:re,measuredHeights:E})},onResetView:()=>{Se(),me()}})]})}function bt({context:n}){return t.createElement(pt,{tasks:n?.tasks??[],projectId:n?.projectId,columnFlagsByTaskId:n?.columnFlagsByTaskId,onOpenDetail:n?.openTaskDetail})}export{pt as DependencyGraph,bt as DependencyGraphDashboardView,bt as default};
@@ -1,4 +1,4 @@
1
- import{s as k,g as R,q as E,p as I,a as _,b as F,_ as l,K as D,z,G as y,E as C,H as G,l as P,L as W,d as B}from"./mermaid.core-Bh02RvfX.js";import{p as H}from"./chunk-4BX2VUAB-DmdAX9Bx.js";import{p as V}from"./wardley-L42UT6IY-gO_fGvF9.js";import"./index-B_z7OKl4.js";import"./vendor-react-SZ_qB27O.js";import"./vendor-i18n-Duky4gdQ.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-reactflow-BlIeoTu4.js";import"./vendor-xterm-BNq00GSj.js";import"./step-yuy0qJer.js";var x={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},w={axes:[],curves:[],options:x},g=structuredClone(w),j=G.radar,q=l(()=>y({...j,...C().radar}),"getConfig"),b=l(()=>g.axes,"getAxes"),K=l(()=>g.curves,"getCurves"),N=l(()=>g.options,"getOptions"),U=l(a=>{g.axes=a.map(t=>({name:t.name,label:t.label??t.name}))},"setAxes"),X=l(a=>{g.curves=a.map(t=>({name:t.name,label:t.label??t.name,entries:Y(t.entries)}))},"setCurves"),Y=l(a=>{if(a[0].axis==null)return a.map(e=>e.value);const t=b();if(t.length===0)throw new Error("Axes must be populated before curves for reference entries");return t.map(e=>{const r=a.find(s=>s.axis?.$refText===e.name);if(r===void 0)throw new Error("Missing entry for axis "+e.label);return r.value})},"computeCurveEntries"),Z=l(a=>{const t=a.reduce((e,r)=>(e[r.name]=r,e),{});g.options={showLegend:t.showLegend?.value??x.showLegend,ticks:t.ticks?.value??x.ticks,max:t.max?.value??x.max,min:t.min?.value??x.min,graticule:t.graticule?.value??x.graticule}},"setOptions"),J=l(()=>{z(),g=structuredClone(w)},"clear"),$={getAxes:b,getCurves:K,getOptions:N,setAxes:U,setCurves:X,setOptions:Z,getConfig:q,clear:J,setAccTitle:F,getAccTitle:_,setDiagramTitle:I,getDiagramTitle:E,getAccDescription:R,setAccDescription:k},Q=l(a=>{H(a,$);const{axes:t,curves:e,options:r}=a;$.setAxes(t),$.setCurves(e),$.setOptions(r)},"populate"),tt={parse:l(async a=>{const t=await V("radar",a);P.debug(t),Q(t)},"parse")},et=l((a,t,e,r)=>{const s=r.db,o=s.getAxes(),i=s.getCurves(),n=s.getOptions(),c=s.getConfig(),d=s.getDiagramTitle(),u=D(t),p=at(u,c),m=n.max??Math.max(...i.map(f=>Math.max(...f.entries))),h=n.min,v=Math.min(c.width,c.height)/2;rt(p,o,v,n.ticks,n.graticule),st(p,o,v,c),M(p,o,i,h,m,n.graticule,c),T(p,i,n.showLegend,c),p.append("text").attr("class","radarTitle").text(d).attr("x",0).attr("y",-c.height/2-c.marginTop)},"draw"),at=l((a,t)=>{const e=t.width+t.marginLeft+t.marginRight,r=t.height+t.marginTop+t.marginBottom,s={x:t.marginLeft+t.width/2,y:t.marginTop+t.height/2};return B(a,r,e,t.useMaxWidth??!0),a.attr("viewBox",`0 0 ${e} ${r}`),a.append("g").attr("transform",`translate(${s.x}, ${s.y})`)},"drawFrame"),rt=l((a,t,e,r,s)=>{if(s==="circle")for(let o=0;o<r;o++){const i=e*(o+1)/r;a.append("circle").attr("r",i).attr("class","radarGraticule")}else if(s==="polygon"){const o=t.length;for(let i=0;i<r;i++){const n=e*(i+1)/r,c=t.map((d,u)=>{const p=2*u*Math.PI/o-Math.PI/2,m=n*Math.cos(p),h=n*Math.sin(p);return`${m},${h}`}).join(" ");a.append("polygon").attr("points",c).attr("class","radarGraticule")}}},"drawGraticule"),st=l((a,t,e,r)=>{const s=t.length;for(let o=0;o<s;o++){const i=t[o].label,n=2*o*Math.PI/s-Math.PI/2;a.append("line").attr("x1",0).attr("y1",0).attr("x2",e*r.axisScaleFactor*Math.cos(n)).attr("y2",e*r.axisScaleFactor*Math.sin(n)).attr("class","radarAxisLine"),a.append("text").text(i).attr("x",e*r.axisLabelFactor*Math.cos(n)).attr("y",e*r.axisLabelFactor*Math.sin(n)).attr("class","radarAxisLabel")}},"drawAxes");function M(a,t,e,r,s,o,i){const n=t.length,c=Math.min(i.width,i.height)/2;e.forEach((d,u)=>{if(d.entries.length!==n)return;const p=d.entries.map((m,h)=>{const v=2*Math.PI*h/n-Math.PI/2,f=A(m,r,s,c),S=f*Math.cos(v),O=f*Math.sin(v);return{x:S,y:O}});o==="circle"?a.append("path").attr("d",L(p,i.curveTension)).attr("class",`radarCurve-${u}`):o==="polygon"&&a.append("polygon").attr("points",p.map(m=>`${m.x},${m.y}`).join(" ")).attr("class",`radarCurve-${u}`)})}l(M,"drawCurves");function A(a,t,e,r){const s=Math.min(Math.max(a,t),e);return r*(s-t)/(e-t)}l(A,"relativeRadius");function L(a,t){const e=a.length;let r=`M${a[0].x},${a[0].y}`;for(let s=0;s<e;s++){const o=a[(s-1+e)%e],i=a[s],n=a[(s+1)%e],c=a[(s+2)%e],d={x:i.x+(n.x-o.x)*t,y:i.y+(n.y-o.y)*t},u={x:n.x-(c.x-i.x)*t,y:n.y-(c.y-i.y)*t};r+=` C${d.x},${d.y} ${u.x},${u.y} ${n.x},${n.y}`}return`${r} Z`}l(L,"closedRoundCurve");function T(a,t,e,r){if(!e)return;const s=(r.width/2+r.marginRight)*3/4,o=-(r.height/2+r.marginTop)*3/4,i=20;t.forEach((n,c)=>{const d=a.append("g").attr("transform",`translate(${s}, ${o+c*i})`);d.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${c}`),d.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(n.label)})}l(T,"drawLegend");var nt={draw:et},ot=l((a,t)=>{let e="";for(let r=0;r<a.THEME_COLOR_LIMIT;r++){const s=a[`cScale${r}`];e+=`
1
+ import{s as k,g as R,q as E,p as I,a as _,b as F,_ as l,K as D,z,G as y,E as C,H as G,l as P,L as W,d as B}from"./mermaid.core-B2zD934i.js";import{p as H}from"./chunk-4BX2VUAB-hjiKRusj.js";import{p as V}from"./wardley-L42UT6IY-BOqYltGN.js";import"./index-I32FijPT.js";import"./vendor-react-SZ_qB27O.js";import"./vendor-i18n-Duky4gdQ.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-reactflow-BlIeoTu4.js";import"./vendor-xterm-BNq00GSj.js";import"./step-yuy0qJer.js";var x={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},w={axes:[],curves:[],options:x},g=structuredClone(w),j=G.radar,q=l(()=>y({...j,...C().radar}),"getConfig"),b=l(()=>g.axes,"getAxes"),K=l(()=>g.curves,"getCurves"),N=l(()=>g.options,"getOptions"),U=l(a=>{g.axes=a.map(t=>({name:t.name,label:t.label??t.name}))},"setAxes"),X=l(a=>{g.curves=a.map(t=>({name:t.name,label:t.label??t.name,entries:Y(t.entries)}))},"setCurves"),Y=l(a=>{if(a[0].axis==null)return a.map(e=>e.value);const t=b();if(t.length===0)throw new Error("Axes must be populated before curves for reference entries");return t.map(e=>{const r=a.find(s=>s.axis?.$refText===e.name);if(r===void 0)throw new Error("Missing entry for axis "+e.label);return r.value})},"computeCurveEntries"),Z=l(a=>{const t=a.reduce((e,r)=>(e[r.name]=r,e),{});g.options={showLegend:t.showLegend?.value??x.showLegend,ticks:t.ticks?.value??x.ticks,max:t.max?.value??x.max,min:t.min?.value??x.min,graticule:t.graticule?.value??x.graticule}},"setOptions"),J=l(()=>{z(),g=structuredClone(w)},"clear"),$={getAxes:b,getCurves:K,getOptions:N,setAxes:U,setCurves:X,setOptions:Z,getConfig:q,clear:J,setAccTitle:F,getAccTitle:_,setDiagramTitle:I,getDiagramTitle:E,getAccDescription:R,setAccDescription:k},Q=l(a=>{H(a,$);const{axes:t,curves:e,options:r}=a;$.setAxes(t),$.setCurves(e),$.setOptions(r)},"populate"),tt={parse:l(async a=>{const t=await V("radar",a);P.debug(t),Q(t)},"parse")},et=l((a,t,e,r)=>{const s=r.db,o=s.getAxes(),i=s.getCurves(),n=s.getOptions(),c=s.getConfig(),d=s.getDiagramTitle(),u=D(t),p=at(u,c),m=n.max??Math.max(...i.map(f=>Math.max(...f.entries))),h=n.min,v=Math.min(c.width,c.height)/2;rt(p,o,v,n.ticks,n.graticule),st(p,o,v,c),M(p,o,i,h,m,n.graticule,c),T(p,i,n.showLegend,c),p.append("text").attr("class","radarTitle").text(d).attr("x",0).attr("y",-c.height/2-c.marginTop)},"draw"),at=l((a,t)=>{const e=t.width+t.marginLeft+t.marginRight,r=t.height+t.marginTop+t.marginBottom,s={x:t.marginLeft+t.width/2,y:t.marginTop+t.height/2};return B(a,r,e,t.useMaxWidth??!0),a.attr("viewBox",`0 0 ${e} ${r}`),a.append("g").attr("transform",`translate(${s.x}, ${s.y})`)},"drawFrame"),rt=l((a,t,e,r,s)=>{if(s==="circle")for(let o=0;o<r;o++){const i=e*(o+1)/r;a.append("circle").attr("r",i).attr("class","radarGraticule")}else if(s==="polygon"){const o=t.length;for(let i=0;i<r;i++){const n=e*(i+1)/r,c=t.map((d,u)=>{const p=2*u*Math.PI/o-Math.PI/2,m=n*Math.cos(p),h=n*Math.sin(p);return`${m},${h}`}).join(" ");a.append("polygon").attr("points",c).attr("class","radarGraticule")}}},"drawGraticule"),st=l((a,t,e,r)=>{const s=t.length;for(let o=0;o<s;o++){const i=t[o].label,n=2*o*Math.PI/s-Math.PI/2;a.append("line").attr("x1",0).attr("y1",0).attr("x2",e*r.axisScaleFactor*Math.cos(n)).attr("y2",e*r.axisScaleFactor*Math.sin(n)).attr("class","radarAxisLine"),a.append("text").text(i).attr("x",e*r.axisLabelFactor*Math.cos(n)).attr("y",e*r.axisLabelFactor*Math.sin(n)).attr("class","radarAxisLabel")}},"drawAxes");function M(a,t,e,r,s,o,i){const n=t.length,c=Math.min(i.width,i.height)/2;e.forEach((d,u)=>{if(d.entries.length!==n)return;const p=d.entries.map((m,h)=>{const v=2*Math.PI*h/n-Math.PI/2,f=A(m,r,s,c),S=f*Math.cos(v),O=f*Math.sin(v);return{x:S,y:O}});o==="circle"?a.append("path").attr("d",L(p,i.curveTension)).attr("class",`radarCurve-${u}`):o==="polygon"&&a.append("polygon").attr("points",p.map(m=>`${m.x},${m.y}`).join(" ")).attr("class",`radarCurve-${u}`)})}l(M,"drawCurves");function A(a,t,e,r){const s=Math.min(Math.max(a,t),e);return r*(s-t)/(e-t)}l(A,"relativeRadius");function L(a,t){const e=a.length;let r=`M${a[0].x},${a[0].y}`;for(let s=0;s<e;s++){const o=a[(s-1+e)%e],i=a[s],n=a[(s+1)%e],c=a[(s+2)%e],d={x:i.x+(n.x-o.x)*t,y:i.y+(n.y-o.y)*t},u={x:n.x-(c.x-i.x)*t,y:n.y-(c.y-i.y)*t};r+=` C${d.x},${d.y} ${u.x},${u.y} ${n.x},${n.y}`}return`${r} Z`}l(L,"closedRoundCurve");function T(a,t,e,r){if(!e)return;const s=(r.width/2+r.marginRight)*3/4,o=-(r.height/2+r.marginTop)*3/4,i=20;t.forEach((n,c)=>{const d=a.append("g").attr("transform",`translate(${s}, ${o+c*i})`);d.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${c}`),d.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(n.label)})}l(T,"drawLegend");var nt={draw:et},ot=l((a,t)=>{let e="";for(let r=0;r<a.THEME_COLOR_LIMIT;r++){const s=a[`cScale${r}`];e+=`
2
2
  .radarCurve-${r} {
3
3
  color: ${s};
4
4
  fill: ${s};
@@ -1,4 +1,4 @@
1
- import{p as x,b as f,s as C,q as B,g as T,a as y,_ as s,G as u,l as k,K as V,d as _,E as N,z as S,H as D}from"./mermaid.core-Bh02RvfX.js";import{p as $}from"./chunk-4BX2VUAB-DmdAX9Bx.js";import{I as z}from"./chunk-QZHKN3VN-DqiRniYQ.js";import{p as A}from"./wardley-L42UT6IY-gO_fGvF9.js";import"./index-B_z7OKl4.js";import"./vendor-react-SZ_qB27O.js";import"./vendor-i18n-Duky4gdQ.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-reactflow-BlIeoTu4.js";import"./vendor-xterm-BNq00GSj.js";import"./step-yuy0qJer.js";var l=new z(()=>({cnt:1,stack:[{id:0,level:-1,name:"/",children:[]}]})),H=s(()=>{l.reset(),S()},"clear"),I=s(()=>l.records.stack[0],"getRoot"),X=s(()=>l.records.cnt,"getCount"),E=D.treeView,L=s(()=>u(E,N().treeView),"getConfig"),R=s((e,t)=>{for(;e<=l.records.stack[l.records.stack.length-1].level;)l.records.stack.pop();const r={id:l.records.cnt++,level:e,name:t,children:[]};l.records.stack[l.records.stack.length-1].children.push(r),l.records.stack.push(r)},"addNode"),W={clear:H,addNode:R,getRoot:I,getCount:X,getConfig:L,getAccTitle:y,getAccDescription:T,getDiagramTitle:B,setAccDescription:C,setAccTitle:f,setDiagramTitle:x},w=W,M=s(e=>{$(e,w),e.nodes.map(t=>w.addNode(t.indent?parseInt(t.indent):0,t.name))},"populate"),F={parse:s(async e=>{const t=await A("treeView",e);k.debug(t),M(t)},"parse")},Y=s((e,t,r,i,n)=>{const c=i.append("text").text(r.name).attr("dominant-baseline","middle").attr("class","treeView-node-label"),{height:p,width:a}=c.node().getBBox(),d=p+n.paddingY*2,o=a+n.paddingX*2;c.attr("x",e+n.paddingX),c.attr("y",t+d/2),r.BBox={x:e,y:t,width:o,height:d}},"positionLabel"),b=s((e,t,r,i,n,c)=>e.append("line").attr("x1",t).attr("y1",r).attr("x2",i).attr("y2",n).attr("stroke-width",c).attr("class","treeView-node-line"),"positionLine"),q=s((e,t,r)=>{let i=0,n=0;const c=s((a,d,o,h)=>{const m=h*(o.rowIndent+o.paddingX);Y(m,i,d,a,o);const{height:g,width:v}=d.BBox;b(a,m-o.rowIndent,i+g/2,m,i+g/2,o.lineThickness),n=Math.max(n,m+v),i+=g},"drawNode"),p=s((a,d=0)=>{c(e,a,r,d),a.children.forEach(g=>{p(g,d+1)});const{x:o,y:h,height:m}=a.BBox;if(a.children.length){const{y:g,height:v}=a.children[a.children.length-1].BBox;b(e,o+r.paddingX,h+m,o+r.paddingX,g+v/2+r.lineThickness/2,r.lineThickness)}},"processNode");return p(t),{totalHeight:i,totalWidth:n}},"drawTree"),G=s((e,t,r,i)=>{k.debug(`Rendering treeView diagram
1
+ import{p as x,b as f,s as C,q as B,g as T,a as y,_ as s,G as u,l as k,K as V,d as _,E as N,z as S,H as D}from"./mermaid.core-B2zD934i.js";import{p as $}from"./chunk-4BX2VUAB-hjiKRusj.js";import{I as z}from"./chunk-QZHKN3VN-MCOlJ723.js";import{p as A}from"./wardley-L42UT6IY-BOqYltGN.js";import"./index-I32FijPT.js";import"./vendor-react-SZ_qB27O.js";import"./vendor-i18n-Duky4gdQ.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-reactflow-BlIeoTu4.js";import"./vendor-xterm-BNq00GSj.js";import"./step-yuy0qJer.js";var l=new z(()=>({cnt:1,stack:[{id:0,level:-1,name:"/",children:[]}]})),H=s(()=>{l.reset(),S()},"clear"),I=s(()=>l.records.stack[0],"getRoot"),X=s(()=>l.records.cnt,"getCount"),E=D.treeView,L=s(()=>u(E,N().treeView),"getConfig"),R=s((e,t)=>{for(;e<=l.records.stack[l.records.stack.length-1].level;)l.records.stack.pop();const r={id:l.records.cnt++,level:e,name:t,children:[]};l.records.stack[l.records.stack.length-1].children.push(r),l.records.stack.push(r)},"addNode"),W={clear:H,addNode:R,getRoot:I,getCount:X,getConfig:L,getAccTitle:y,getAccDescription:T,getDiagramTitle:B,setAccDescription:C,setAccTitle:f,setDiagramTitle:x},w=W,M=s(e=>{$(e,w),e.nodes.map(t=>w.addNode(t.indent?parseInt(t.indent):0,t.name))},"populate"),F={parse:s(async e=>{const t=await A("treeView",e);k.debug(t),M(t)},"parse")},Y=s((e,t,r,i,n)=>{const c=i.append("text").text(r.name).attr("dominant-baseline","middle").attr("class","treeView-node-label"),{height:p,width:a}=c.node().getBBox(),d=p+n.paddingY*2,o=a+n.paddingX*2;c.attr("x",e+n.paddingX),c.attr("y",t+d/2),r.BBox={x:e,y:t,width:o,height:d}},"positionLabel"),b=s((e,t,r,i,n,c)=>e.append("line").attr("x1",t).attr("y1",r).attr("x2",i).attr("y2",n).attr("stroke-width",c).attr("class","treeView-node-line"),"positionLine"),q=s((e,t,r)=>{let i=0,n=0;const c=s((a,d,o,h)=>{const m=h*(o.rowIndent+o.paddingX);Y(m,i,d,a,o);const{height:g,width:v}=d.BBox;b(a,m-o.rowIndent,i+g/2,m,i+g/2,o.lineThickness),n=Math.max(n,m+v),i+=g},"drawNode"),p=s((a,d=0)=>{c(e,a,r,d),a.children.forEach(g=>{p(g,d+1)});const{x:o,y:h,height:m}=a.BBox;if(a.children.length){const{y:g,height:v}=a.children[a.children.length-1].BBox;b(e,o+r.paddingX,h+m,o+r.paddingX,g+v/2+r.lineThickness/2,r.lineThickness)}},"processNode");return p(t),{totalHeight:i,totalWidth:n}},"drawTree"),G=s((e,t,r,i)=>{k.debug(`Rendering treeView diagram
2
2
  `+e);const n=i.db,c=n.getRoot(),p=n.getConfig(),a=V(t),d=a.append("g");d.attr("class","tree-view");const{totalHeight:o,totalWidth:h}=q(d,c,p);a.attr("viewBox",`-${p.lineThickness/2} 0 ${h} ${o}`),_(a,o,h,p.useMaxWidth)},"draw"),K={draw:G},j=K,J={labelFontSize:"16px",labelColor:"black",lineColor:"black"},O=s(({treeView:e})=>{const{labelFontSize:t,labelColor:r,lineColor:i}=u(J,e);return`
3
3
  .treeView-node-label {
4
4
  font-size: ${t};
@@ -1,3 +1,3 @@
1
- import{p as re}from"./chunk-4BX2VUAB-DmdAX9Bx.js";import{q as oe,p as se,s as de,g as le,a as ce,b as me,_ as o,l as g,c as T,F as ue,z as xe,G as fe,E as M,H as ge,h as y,w as P,a3 as he}from"./mermaid.core-Bh02RvfX.js";import{p as pe,i as be}from"./wardley-L42UT6IY-gO_fGvF9.js";import{s as ve}from"./vendor-reactflow-BlIeoTu4.js";import"./index-B_z7OKl4.js";import"./vendor-react-SZ_qB27O.js";import"./vendor-i18n-Duky4gdQ.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-xterm-BNq00GSj.js";import"./step-yuy0qJer.js";var $="position frame",D="frame positioned",S="position relation",N="relation positioned",we=o(function(e){g.debug("options str",e)},"setOptions"),ye=o(function(){return{}},"getOptions"),Pe=o(function(){C(),xe()},"clear");function C(){B={}}o(C,"reset");var Se=ge.eventmodeling,Fe=o(()=>fe({...Se,...M().eventmodeling}),"getConfig"),B={};function O(){let e=ke;const{ast:n}=B,t=E();if(!n)throw new Error("No data for EventModel");return n.frames.forEach((i,a)=>{const r=L(i,n.dataEntities,t);e=v(e,{$kind:$,index:a,frame:i,textProps:r});let d;K(i)?(g.debug("source frame",i.sourceFrames),d=n.frames.filter(l=>i.sourceFrames.some(c=>c.$refText===l.name)),d.forEach(l=>{e=v(e,{$kind:S,index:a,frame:i,sourceFrame:l})})):e=v(e,{$kind:S,index:a,frame:i})}),e={...e,sortedSwimlanesArray:A(e.swimlanes)},e}o(O,"getState");function I(e){B.ast=e}o(I,"setAst");var s={swimlaneMinHeight:70,swimlanePadding:15,swimlaneGap:10,boxPadding:10,boxOverlap:90,boxDefaultY:0,boxMinWidth:80,boxMaxWidth:450,boxMinHeight:80,boxMaxHeight:750,contentStartX:250,textMaxWidth:430,boxTextFontWeight:"bold",boxTextPadding:10,swimlaneTextFontWeight:"bold",labelUiAutomation:"UI/Automation",labelUiAutomationPrefix:"UI/A: ",labelCommandReadModel:"Command/Read Model",labelCommandReadModelPrefix:"C/RM: ",labelEvents:"Events",labelEventsPrefix:"Stream: "};function E(){return s}o(E,"getDiagramProps");var ke={boxes:[],swimlanes:{},relations:[],maxR:0,sortedSwimlanesArray:[]};function W(e){const n=e.split(".");if(n.length===2)return n[0]}o(W,"extractNamespace");function H(e){const n=e.split(".");return n.length===2?n[1]:e}o(H,"extractName");function U(e,n){if(!(!n||n.length===0))return Object.values(e).find(t=>t.namespace===n)}o(U,"findSwimlaneByNamespace");function b(e,n,t){return Math.max(n,...Object.keys(e).filter(i=>{const a=Number.parseInt(i);return a>n&&a<t}).map(i=>Number.parseInt(i)))+1}o(b,"findNextAvailableIndex");function _(e,n){const t=W(e.entityIdentifier),i=U(n,t);switch(e.modelEntityType){case"ui":case"pcr":case"processor":return i?{index:i.index,label:i.namespace||s.labelUiAutomation}:t?{index:b(n,0,100),label:s.labelUiAutomationPrefix+t}:{index:0,label:s.labelUiAutomation};case"rmo":case"readmodel":case"cmd":case"command":return i?{index:i.index,label:i.namespace||s.labelCommandReadModel}:t?{index:b(n,100,200),label:s.labelCommandReadModelPrefix+t}:{index:100,label:s.labelCommandReadModel};case"evt":case"event":default:return i?{index:i.index,label:i.namespace||s.labelEvents}:t?{index:b(n,200,300),label:s.labelEventsPrefix+t}:{index:200,label:s.labelEvents}}}o(_,"calculateSwimlaneProps");function G(e){const{themeVariables:n}=M();switch(e.modelEntityType){case"ui":return{fill:n.emUiFill??"white",stroke:n.emUiStroke??"#dbdada"};case"pcr":case"processor":return{fill:n.emProcessorFill??"#edb3f6",stroke:n.emProcessorStroke??"#b88cbf"};case"rmo":case"readmodel":return{fill:n.emReadModelFill??"#d3f1a2",stroke:n.emReadModelStroke??"#a3b732"};case"cmd":case"command":return{fill:n.emCommandFill??"#bcd6fe",stroke:n.emCommandStroke??"#679ac3"};case"evt":case"event":return{fill:n.emEventFill??"#ffb778",stroke:n.emEventStroke??"#c19a0f"};default:return{fill:"red",stroke:"black"}}}o(G,"calculateEntityVisualProps");function L(e,n,t){const i=M(),a=y(H(e.entityIdentifier)??"",i);let r;const d={fontSize:16,fontWeight:700,fontFamily:'"trebuchet ms", verdana, arial, sans-serif',joinWith:"<br/>"};let c=`<b>${P(a,t.textMaxWidth,d)}</b>`;if(e.dataInlineValue&&(r=e.dataInlineValue,r=r.substring(r.indexOf("{")+1),r=r.substring(0,r.lastIndexOf("}")-1),r=y(r,i),r=P(r,t.textMaxWidth,d),r=r.replaceAll(" ","&nbsp;")),e.dataReference){const p=n.find(w=>w.name===e.dataReference?.$refText);p&&(r=p.dataBlockValue,r=r.substring(r.indexOf(`{
1
+ import{p as re}from"./chunk-4BX2VUAB-hjiKRusj.js";import{q as oe,p as se,s as de,g as le,a as ce,b as me,_ as o,l as g,c as T,F as ue,z as xe,G as fe,E as M,H as ge,h as y,w as P,a3 as he}from"./mermaid.core-B2zD934i.js";import{p as pe,i as be}from"./wardley-L42UT6IY-BOqYltGN.js";import{s as ve}from"./vendor-reactflow-BlIeoTu4.js";import"./index-I32FijPT.js";import"./vendor-react-SZ_qB27O.js";import"./vendor-i18n-Duky4gdQ.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-xterm-BNq00GSj.js";import"./step-yuy0qJer.js";var $="position frame",D="frame positioned",S="position relation",N="relation positioned",we=o(function(e){g.debug("options str",e)},"setOptions"),ye=o(function(){return{}},"getOptions"),Pe=o(function(){C(),xe()},"clear");function C(){B={}}o(C,"reset");var Se=ge.eventmodeling,Fe=o(()=>fe({...Se,...M().eventmodeling}),"getConfig"),B={};function O(){let e=ke;const{ast:n}=B,t=E();if(!n)throw new Error("No data for EventModel");return n.frames.forEach((i,a)=>{const r=L(i,n.dataEntities,t);e=v(e,{$kind:$,index:a,frame:i,textProps:r});let d;K(i)?(g.debug("source frame",i.sourceFrames),d=n.frames.filter(l=>i.sourceFrames.some(c=>c.$refText===l.name)),d.forEach(l=>{e=v(e,{$kind:S,index:a,frame:i,sourceFrame:l})})):e=v(e,{$kind:S,index:a,frame:i})}),e={...e,sortedSwimlanesArray:A(e.swimlanes)},e}o(O,"getState");function I(e){B.ast=e}o(I,"setAst");var s={swimlaneMinHeight:70,swimlanePadding:15,swimlaneGap:10,boxPadding:10,boxOverlap:90,boxDefaultY:0,boxMinWidth:80,boxMaxWidth:450,boxMinHeight:80,boxMaxHeight:750,contentStartX:250,textMaxWidth:430,boxTextFontWeight:"bold",boxTextPadding:10,swimlaneTextFontWeight:"bold",labelUiAutomation:"UI/Automation",labelUiAutomationPrefix:"UI/A: ",labelCommandReadModel:"Command/Read Model",labelCommandReadModelPrefix:"C/RM: ",labelEvents:"Events",labelEventsPrefix:"Stream: "};function E(){return s}o(E,"getDiagramProps");var ke={boxes:[],swimlanes:{},relations:[],maxR:0,sortedSwimlanesArray:[]};function W(e){const n=e.split(".");if(n.length===2)return n[0]}o(W,"extractNamespace");function H(e){const n=e.split(".");return n.length===2?n[1]:e}o(H,"extractName");function U(e,n){if(!(!n||n.length===0))return Object.values(e).find(t=>t.namespace===n)}o(U,"findSwimlaneByNamespace");function b(e,n,t){return Math.max(n,...Object.keys(e).filter(i=>{const a=Number.parseInt(i);return a>n&&a<t}).map(i=>Number.parseInt(i)))+1}o(b,"findNextAvailableIndex");function _(e,n){const t=W(e.entityIdentifier),i=U(n,t);switch(e.modelEntityType){case"ui":case"pcr":case"processor":return i?{index:i.index,label:i.namespace||s.labelUiAutomation}:t?{index:b(n,0,100),label:s.labelUiAutomationPrefix+t}:{index:0,label:s.labelUiAutomation};case"rmo":case"readmodel":case"cmd":case"command":return i?{index:i.index,label:i.namespace||s.labelCommandReadModel}:t?{index:b(n,100,200),label:s.labelCommandReadModelPrefix+t}:{index:100,label:s.labelCommandReadModel};case"evt":case"event":default:return i?{index:i.index,label:i.namespace||s.labelEvents}:t?{index:b(n,200,300),label:s.labelEventsPrefix+t}:{index:200,label:s.labelEvents}}}o(_,"calculateSwimlaneProps");function G(e){const{themeVariables:n}=M();switch(e.modelEntityType){case"ui":return{fill:n.emUiFill??"white",stroke:n.emUiStroke??"#dbdada"};case"pcr":case"processor":return{fill:n.emProcessorFill??"#edb3f6",stroke:n.emProcessorStroke??"#b88cbf"};case"rmo":case"readmodel":return{fill:n.emReadModelFill??"#d3f1a2",stroke:n.emReadModelStroke??"#a3b732"};case"cmd":case"command":return{fill:n.emCommandFill??"#bcd6fe",stroke:n.emCommandStroke??"#679ac3"};case"evt":case"event":return{fill:n.emEventFill??"#ffb778",stroke:n.emEventStroke??"#c19a0f"};default:return{fill:"red",stroke:"black"}}}o(G,"calculateEntityVisualProps");function L(e,n,t){const i=M(),a=y(H(e.entityIdentifier)??"",i);let r;const d={fontSize:16,fontWeight:700,fontFamily:'"trebuchet ms", verdana, arial, sans-serif',joinWith:"<br/>"};let c=`<b>${P(a,t.textMaxWidth,d)}</b>`;if(e.dataInlineValue&&(r=e.dataInlineValue,r=r.substring(r.indexOf("{")+1),r=r.substring(0,r.lastIndexOf("}")-1),r=y(r,i),r=P(r,t.textMaxWidth,d),r=r.replaceAll(" ","&nbsp;")),e.dataReference){const p=n.find(w=>w.name===e.dataReference?.$refText);p&&(r=p.dataBlockValue,r=r.substring(r.indexOf(`{
2
2
  `)+2),r=r.substring(0,r.lastIndexOf("}")-1),r=y(r,i),r=P(r,t.textMaxWidth,d),r=r.replaceAll(" ","&nbsp;"),r+="<br/>")}const m=r!==void 0;m&&(c+=`<br/><br/><code style="text-align: left; display: block;max-width:${t.textMaxWidth}px">${r}</code>`);const x={fontSize:d.fontSize,fontWeight:d.fontWeight,fontFamily:d.fontFamily},u=he(c,x),h=m?u.width/3:u.width,f={content:c,width:h,height:u.height};return g.debug(`[${e.name}] ${e.entityIdentifier} text`,f),f}o(L,"calculateTextProps");function V(e,n){const t=n,i=G(t.frame),a={width:t.textProps.width+2*s.boxTextPadding,height:t.textProps.height+2*s.boxTextPadding};return[{$kind:D,frame:t.frame,index:t.index,visual:i,dimension:a,textProps:t.textProps}]}o(V,"decidePositionFrame");function X(e,n,t){return n===void 0?s.contentStartX:n.index===e.index&&e.r?e.r+s.boxPadding:t===void 0?s.contentStartX:t.r-s.boxOverlap+s.boxPadding}o(X,"calculateX");function j(e,n){const t=[...e.map(i=>i.r),n];return Math.max(...t)}o(j,"calculateMaxRight");function A(e){return Object.values(e).sort((n,t)=>n.index-t.index)}o(A,"sortedSwimlanesArray");function Y(e,n){const t=n,i=_(t.frame,e.swimlanes);let a;i.index in e.swimlanes?a=e.swimlanes[i.index]:a={index:i.index,label:i.label,r:0,y:i.index*s.swimlaneMinHeight+s.swimlaneGap,height:s.swimlaneMinHeight,maxHeight:s.swimlaneMinHeight};const r=e.boxes.length>0?e.boxes[e.boxes.length-1]:void 0,d=e.previousSwimlaneNumber!==void 0?e.swimlanes[e.previousSwimlaneNumber]:void 0,l={width:Math.max(s.boxMinWidth,Math.min(s.boxMaxWidth,t.dimension.width))+2*s.boxPadding,height:Math.max(s.boxMinHeight,Math.min(s.boxMaxHeight,t.dimension.height))+2*s.boxPadding},c=X(a,d,r),m=c+l.width+s.boxPadding,x=j(Object.values(e.swimlanes),m);a.r=c+l.width,a.maxHeight=Math.max(a.maxHeight,l.height),a.height=Math.max(s.swimlaneMinHeight,a.maxHeight)+2*s.swimlanePadding;const u={x:c,y:s.swimlanePadding+a.y,r:m,dimension:l,leftSibling:!1,swimlane:a,visual:t.visual,text:t.textProps.content,frame:t.frame,index:t.index},h={...e,boxes:[...e.boxes,u],swimlanes:{...e.swimlanes,[`${a.index}`]:a},previousSwimlaneNumber:i.index,previousFrame:t.frame,maxR:x},f=A(h.swimlanes);f.length>0&&(f[0].y=0);for(let p=1;p<f.length;p++){const w=f[p],R=f[p-1];w.y=R.y+R.height+s.swimlaneGap}return h}o(Y,"evolveFramePositioned");function z(e,n){return e===0&&n.sourceFrames.length===0}o(z,"isFirstFrame");function K(e){return e.sourceFrames!==void 0&&e.sourceFrames!==null&&e.sourceFrames.length>0}o(K,"hasSourceFrame");function F(e,n){if(n!=null)return e.find(t=>t.frame.name===n.name)}o(F,"findBoxByFrame");function q(e,n,t){if(!(t<0))for(let i=t;i>=0;i--){const a=e[i];if(a.swimlane.index!==n)return a}}o(q,"findBoxByLineIndex");function J(e,n){const t=n;if(be(t.frame)||z(t.index,t.frame))return[];const i=F(e.boxes,t.frame);if(i===void 0)throw new Error(`Target box not found for frame ${t.frame.name}`);let a;return t.sourceFrame?a=F(e.boxes,t.sourceFrame):a=q(e.boxes,i.swimlane.index,t.index-1),a===void 0?[]:[{$kind:N,frame:t.frame,index:t.index,sourceBox:a,targetBox:i}]}o(J,"decidePositionRelation");function Q(e,n){const t=n,i={visual:{fill:"none",stroke:"#000"},source:{x:t.sourceBox.x,y:t.sourceBox.y},target:{x:t.targetBox.x,y:t.targetBox.y},sourceBox:t.sourceBox,targetBox:t.targetBox};return{...e,relations:[...e.relations,i]}}o(Q,"evolveRelationPositioned");var Me={[$]:V,[S]:J},Be={[D]:Y,[N]:Q};function Z(e,n){const t=Me[n.$kind];if(t==null)return[];const i=t(e,n);return g.debug("decided events",i),i}o(Z,"decide");function ee(e,n){const t=n.reduce((i,a)=>{const r=Be[a.$kind];return r==null?i:r(i,a)},e);return g.debug("evolve events",{state:e,newState:t,events:n}),t}o(ee,"evolve");function v(e,n){const t=Z(e,n);return ee(e,t)}o(v,"dispatch");var k={getConfig:Fe,setOptions:we,getOptions:ye,clear:Pe,setAccTitle:me,getAccTitle:ce,getAccDescription:le,setAccDescription:de,setDiagramTitle:se,getDiagramTitle:oe,setAst:I,getDiagramProps:E,getState:O},Ee={parse:o(async e=>{const n=await pe("eventmodeling",e);g.debug(n),k.setAst(n),re(n,k)},"parse")},Ae=T(),Re=Ae?.eventmodeling;function te(e,n){return t=>{const i=t.swimlane.y+n.swimlanePadding,a=e.append("g").attr("class","em-box");a.append("rect").attr("x",t.x).attr("y",i).attr("rx","3").attr("width",t.dimension.width).attr("height",t.dimension.height).attr("stroke",t.visual.stroke).attr("fill",t.visual.fill),a.append("foreignObject").attr("x",t.x+n.boxPadding).attr("y",i+10).attr("width",t.dimension.width-2*n.boxPadding).attr("height",t.dimension.height-2*n.boxPadding).append("xhtml:div").style("display","table").style("height","100%").style("width","100%").append("span").style("display","table-cell").style("text-align","center").style("vertical-align","middle").html(t.text)}}o(te,"renderD3Box");function ne(e,n){return e>n}o(ne,"dirUpwards");function ie(e,n,t,i){return a=>{const r=a.sourceBox.swimlane.y+n.swimlanePadding,d=a.targetBox.swimlane.y+n.swimlanePadding,l=ne(r,d),c=a.sourceBox.x+a.sourceBox.dimension.width*2/3,m=a.targetBox.x+a.targetBox.dimension.width/3;let x,u;g.debug(`rendering relation up=${l} for `,{sourceBox:a.sourceBox,targetBox:a.targetBox}),l?(x=r,u=d+a.targetBox.dimension.height):(x=r+a.sourceBox.dimension.height,u=d);const h=i.emRelationStroke??a.visual.stroke;e.append("path").attr("class","em-relation").attr("fill",a.visual.fill).attr("stroke",h).attr("stroke-width","1").attr("marker-end",`url(#${t})`).attr("d",`M${c} ${x} L${m} ${u}`)}}o(ie,"renderD3Relation");function ae(e,n,t,i){return a=>{const r=e.append("g").attr("class","em-swimlane"),d=i.emSwimlaneBackgroundOdd??"rgb(250,250,250)",l=i.emSwimlaneBackgroundStroke??"rgb(240,240,240)";r.append("rect").attr("x",0).attr("y",a.y).attr("rx","3").attr("width",n+t.swimlanePadding).attr("height",a.height).attr("fill",d).attr("stroke",l),r.append("text").attr("font-weight",t.swimlaneTextFontWeight).attr("x",30).attr("y",a.y+30).text(a.label)}}o(ae,"renderD3Swimlane");var Te=o(function(e,n,t,i){if(g.debug("in eventmodeling renderer",e+`
3
3
  `,"id:",n,t),!Re)throw new Error("EventModeling config not found");const a=i.db,{themeVariables:r,eventmodeling:d}=T(),l=ve(`[id="${n}"]`),c=a.getDiagramProps(),m=a.getState(),x=`em-arrowhead-${n}`,u=r.emArrowhead??"#000000";m.sortedSwimlanesArray.forEach(ae(l,m.maxR,c,r)),m.boxes.forEach(te(l,c)),m.relations.forEach(ie(l,c,x,r)),l.append("defs").append("marker").attr("id",x).attr("markerWidth","10").attr("markerHeight","7").attr("refX","10").attr("refY","3.5").attr("orient","auto").append("polygon").attr("points","0 0, 10 3.5, 0 7").attr("fill",u),ue(void 0,l,d?.padding??30,d?.useMaxWidth)},"draw"),$e={draw:Te},De=o(e=>"","getStyles"),Ne=De,Xe={parser:Ee,db:k,renderer:$e,styles:Ne};export{Xe as diagram};
@@ -1,4 +1,4 @@
1
- import{_ as b,G as m,K as $,d as B,l as u,b as C,a as S,p as D,q as T,g as z,s as E,E as P,H as F,z as A}from"./mermaid.core-Bh02RvfX.js";import{p as W}from"./chunk-4BX2VUAB-DmdAX9Bx.js";import{p as _}from"./wardley-L42UT6IY-gO_fGvF9.js";import"./index-B_z7OKl4.js";import"./vendor-react-SZ_qB27O.js";import"./vendor-i18n-Duky4gdQ.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-reactflow-BlIeoTu4.js";import"./vendor-xterm-BNq00GSj.js";import"./step-yuy0qJer.js";var N=F.packet,w=class{constructor(){this.packet=[],this.setAccTitle=C,this.getAccTitle=S,this.setDiagramTitle=D,this.getDiagramTitle=T,this.getAccDescription=z,this.setAccDescription=E}static{b(this,"PacketDB")}getConfig(){const t=m({...N,...P().packet});return t.showBits&&(t.paddingY+=10),t}getPacket(){return this.packet}pushWord(t){t.length>0&&this.packet.push(t)}clear(){A(),this.packet=[]}},L=1e4,M=b((t,e)=>{W(t,e);let r=-1,o=[],n=1;const{bitsPerRow:l}=e.getConfig();for(let{start:a,end:i,bits:d,label:c}of t.blocks){if(a!==void 0&&i!==void 0&&i<a)throw new Error(`Packet block ${a} - ${i} is invalid. End must be greater than start.`);if(a??=r+1,a!==r+1)throw new Error(`Packet block ${a} - ${i??a} is not contiguous. It should start from ${r+1}.`);if(d===0)throw new Error(`Packet block ${a} is invalid. Cannot have a zero bit field.`);for(i??=a+(d??1)-1,d??=i-a+1,r=i,u.debug(`Packet block ${a} - ${r} with label ${c}`);o.length<=l+1&&e.getPacket().length<L;){const[p,s]=Y({start:a,end:i,bits:d,label:c},n,l);if(o.push(p),p.end+1===n*l&&(e.pushWord(o),o=[],n++),!s)break;({start:a,end:i,bits:d,label:c}=s)}}e.pushWord(o)},"populate"),Y=b((t,e,r)=>{if(t.start===void 0)throw new Error("start should have been set during first phase");if(t.end===void 0)throw new Error("end should have been set during first phase");if(t.start>t.end)throw new Error(`Block start ${t.start} is greater than block end ${t.end}.`);if(t.end+1<=e*r)return[t,void 0];const o=e*r-1,n=e*r;return[{start:t.start,end:o,label:t.label,bits:o-t.start},{start:n,end:t.end,label:t.label,bits:t.end-n}]},"getNextFittingBlock"),v={parser:{yy:void 0},parse:b(async t=>{const e=await _("packet",t),r=v.parser?.yy;if(!(r instanceof w))throw new Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");u.debug(e),M(e,r)},"parse")},G=b((t,e,r,o)=>{const n=o.db,l=n.getConfig(),{rowHeight:a,paddingY:i,bitWidth:d,bitsPerRow:c}=l,p=n.getPacket(),s=n.getDiagramTitle(),h=a+i,g=h*(p.length+1)-(s?0:a),k=d*c+2,f=$(e);f.attr("viewBox",`0 0 ${k} ${g}`),B(f,g,k,l.useMaxWidth);for(const[x,y]of p.entries())H(f,y,x,l);f.append("text").text(s).attr("x",k/2).attr("y",g-h/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),H=b((t,e,r,{rowHeight:o,paddingX:n,paddingY:l,bitWidth:a,bitsPerRow:i,showBits:d})=>{const c=t.append("g"),p=r*(o+l)+l;for(const s of e){const h=s.start%i*a+1,g=(s.end-s.start+1)*a-n;if(c.append("rect").attr("x",h).attr("y",p).attr("width",g).attr("height",o).attr("class","packetBlock"),c.append("text").attr("x",h+g/2).attr("y",p+o/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(s.label),!d)continue;const k=s.end===s.start,f=p-2;c.append("text").attr("x",h+(k?g/2:0)).attr("y",f).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",k?"middle":"start").text(s.start),k||c.append("text").attr("x",h+g).attr("y",f).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(s.end)}},"drawWord"),I={draw:G},K={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},O=b(({packet:t}={})=>{const e=m(K,t);return`
1
+ import{_ as b,G as m,K as $,d as B,l as u,b as C,a as S,p as D,q as T,g as z,s as E,E as P,H as F,z as A}from"./mermaid.core-B2zD934i.js";import{p as W}from"./chunk-4BX2VUAB-hjiKRusj.js";import{p as _}from"./wardley-L42UT6IY-BOqYltGN.js";import"./index-I32FijPT.js";import"./vendor-react-SZ_qB27O.js";import"./vendor-i18n-Duky4gdQ.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-reactflow-BlIeoTu4.js";import"./vendor-xterm-BNq00GSj.js";import"./step-yuy0qJer.js";var N=F.packet,w=class{constructor(){this.packet=[],this.setAccTitle=C,this.getAccTitle=S,this.setDiagramTitle=D,this.getDiagramTitle=T,this.getAccDescription=z,this.setAccDescription=E}static{b(this,"PacketDB")}getConfig(){const t=m({...N,...P().packet});return t.showBits&&(t.paddingY+=10),t}getPacket(){return this.packet}pushWord(t){t.length>0&&this.packet.push(t)}clear(){A(),this.packet=[]}},L=1e4,M=b((t,e)=>{W(t,e);let r=-1,o=[],n=1;const{bitsPerRow:l}=e.getConfig();for(let{start:a,end:i,bits:d,label:c}of t.blocks){if(a!==void 0&&i!==void 0&&i<a)throw new Error(`Packet block ${a} - ${i} is invalid. End must be greater than start.`);if(a??=r+1,a!==r+1)throw new Error(`Packet block ${a} - ${i??a} is not contiguous. It should start from ${r+1}.`);if(d===0)throw new Error(`Packet block ${a} is invalid. Cannot have a zero bit field.`);for(i??=a+(d??1)-1,d??=i-a+1,r=i,u.debug(`Packet block ${a} - ${r} with label ${c}`);o.length<=l+1&&e.getPacket().length<L;){const[p,s]=Y({start:a,end:i,bits:d,label:c},n,l);if(o.push(p),p.end+1===n*l&&(e.pushWord(o),o=[],n++),!s)break;({start:a,end:i,bits:d,label:c}=s)}}e.pushWord(o)},"populate"),Y=b((t,e,r)=>{if(t.start===void 0)throw new Error("start should have been set during first phase");if(t.end===void 0)throw new Error("end should have been set during first phase");if(t.start>t.end)throw new Error(`Block start ${t.start} is greater than block end ${t.end}.`);if(t.end+1<=e*r)return[t,void 0];const o=e*r-1,n=e*r;return[{start:t.start,end:o,label:t.label,bits:o-t.start},{start:n,end:t.end,label:t.label,bits:t.end-n}]},"getNextFittingBlock"),v={parser:{yy:void 0},parse:b(async t=>{const e=await _("packet",t),r=v.parser?.yy;if(!(r instanceof w))throw new Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");u.debug(e),M(e,r)},"parse")},G=b((t,e,r,o)=>{const n=o.db,l=n.getConfig(),{rowHeight:a,paddingY:i,bitWidth:d,bitsPerRow:c}=l,p=n.getPacket(),s=n.getDiagramTitle(),h=a+i,g=h*(p.length+1)-(s?0:a),k=d*c+2,f=$(e);f.attr("viewBox",`0 0 ${k} ${g}`),B(f,g,k,l.useMaxWidth);for(const[x,y]of p.entries())H(f,y,x,l);f.append("text").text(s).attr("x",k/2).attr("y",g-h/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),H=b((t,e,r,{rowHeight:o,paddingX:n,paddingY:l,bitWidth:a,bitsPerRow:i,showBits:d})=>{const c=t.append("g"),p=r*(o+l)+l;for(const s of e){const h=s.start%i*a+1,g=(s.end-s.start+1)*a-n;if(c.append("rect").attr("x",h).attr("y",p).attr("width",g).attr("height",o).attr("class","packetBlock"),c.append("text").attr("x",h+g/2).attr("y",p+o/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(s.label),!d)continue;const k=s.end===s.start,f=p-2;c.append("text").attr("x",h+(k?g/2:0)).attr("y",f).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",k?"middle":"start").text(s.start),k||c.append("text").attr("x",h+g).attr("y",f).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(s.end)}},"drawWord"),I={draw:G},K={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},O=b(({packet:t}={})=>{const e=m(K,t);return`
2
2
  .packetByte {
3
3
  font-size: ${e.byteFontSize};
4
4
  }
@@ -1,4 +1,4 @@
1
- import{_ as w,L as de,E as Q,G as Z,K as he,d as pe,l as J,aR as P,b as ue,a as fe,p as me,q as ge,g as ye,s as Se,H as ve,aS as xe,z as be}from"./mermaid.core-Bh02RvfX.js";import{s as we}from"./chunk-2J33WTMH-DQ-9Xccu.js";import{p as Ce}from"./chunk-4BX2VUAB-DmdAX9Bx.js";import{p as Te}from"./wardley-L42UT6IY-gO_fGvF9.js";import{s as Y}from"./vendor-reactflow-BlIeoTu4.js";import{b as I}from"./defaultLocale-DX6XiGOO.js";import{o as U}from"./ordinal-DILIJJjt.js";import"./index-B_z7OKl4.js";import"./vendor-react-SZ_qB27O.js";import"./vendor-i18n-Duky4gdQ.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-xterm-BNq00GSj.js";import"./step-yuy0qJer.js";import"./init-Dmth1JHB.js";function Le(e){var a=0,n=e.children,l=n&&n.length;if(!l)a=1;else for(;--l>=0;)a+=n[l].value;e.value=a}function $e(){return this.eachAfter(Le)}function Ae(e,a){let n=-1;for(const l of this)e.call(a,l,++n,this);return this}function Fe(e,a){for(var n=this,l=[n],r,o,d=-1;n=l.pop();)if(e.call(a,n,++d,this),r=n.children)for(o=r.length-1;o>=0;--o)l.push(r[o]);return this}function Ne(e,a){for(var n=this,l=[n],r=[],o,d,h,m=-1;n=l.pop();)if(r.push(n),o=n.children)for(d=0,h=o.length;d<h;++d)l.push(o[d]);for(;n=r.pop();)e.call(a,n,++m,this);return this}function Me(e,a){let n=-1;for(const l of this)if(e.call(a,l,++n,this))return l}function Ve(e){return this.eachAfter(function(a){for(var n=+e(a.data)||0,l=a.children,r=l&&l.length;--r>=0;)n+=l[r].value;a.value=n})}function _e(e){return this.eachBefore(function(a){a.children&&a.children.sort(e)})}function ke(e){for(var a=this,n=ze(a,e),l=[a];a!==n;)a=a.parent,l.push(a);for(var r=l.length;e!==n;)l.splice(r,0,e),e=e.parent;return l}function ze(e,a){if(e===a)return e;var n=e.ancestors(),l=a.ancestors(),r=null;for(e=n.pop(),a=l.pop();e===a;)r=e,e=n.pop(),a=l.pop();return r}function De(){for(var e=this,a=[e];e=e.parent;)a.push(e);return a}function Pe(){return Array.from(this)}function Be(){var e=[];return this.eachBefore(function(a){a.children||e.push(a)}),e}function Re(){var e=this,a=[];return e.each(function(n){n!==e&&a.push({source:n.parent,target:n})}),a}function*Ee(){var e=this,a,n=[e],l,r,o;do for(a=n.reverse(),n=[];e=a.pop();)if(yield e,l=e.children)for(r=0,o=l.length;r<o;++r)n.push(l[r]);while(n.length)}function ee(e,a){e instanceof Map?(e=[void 0,e],a===void 0&&(a=Ie)):a===void 0&&(a=He);for(var n=new j(e),l,r=[n],o,d,h,m;l=r.pop();)if((d=a(l.data))&&(m=(d=Array.from(d)).length))for(l.children=d,h=m-1;h>=0;--h)r.push(o=d[h]=new j(d[h])),o.parent=l,o.depth=l.depth+1;return n.eachBefore(Ge)}function We(){return ee(this).eachBefore(Oe)}function He(e){return e.children}function Ie(e){return Array.isArray(e)?e[1]:null}function Oe(e){e.data.value!==void 0&&(e.value=e.data.value),e.data=e.data.data}function Ge(e){var a=0;do e.height=a;while((e=e.parent)&&e.height<++a)}function j(e){this.data=e,this.depth=this.height=0,this.parent=null}j.prototype=ee.prototype={constructor:j,count:$e,each:Ae,eachAfter:Ne,eachBefore:Fe,find:Me,sum:Ve,sort:_e,path:ke,ancestors:De,descendants:Pe,leaves:Be,links:Re,copy:We,[Symbol.iterator]:Ee};function qe(e){if(typeof e!="function")throw new Error;return e}function O(){return 0}function G(e){return function(){return e}}function Xe(e){e.x0=Math.round(e.x0),e.y0=Math.round(e.y0),e.x1=Math.round(e.x1),e.y1=Math.round(e.y1)}function Ye(e,a,n,l,r){for(var o=e.children,d,h=-1,m=o.length,c=e.value&&(l-a)/e.value;++h<m;)d=o[h],d.y0=n,d.y1=r,d.x0=a,d.x1=a+=d.value*c}function je(e,a,n,l,r){for(var o=e.children,d,h=-1,m=o.length,c=e.value&&(r-n)/e.value;++h<m;)d=o[h],d.x0=a,d.x1=l,d.y0=n,d.y1=n+=d.value*c}var Ke=(1+Math.sqrt(5))/2;function Ue(e,a,n,l,r,o){for(var d=[],h=a.children,m,c,p=0,b=0,s=h.length,x,S,v=a.value,u,g,M,N,z,R,V;p<s;){x=r-n,S=o-l;do u=h[b++].value;while(!u&&b<s);for(g=M=u,R=Math.max(S/x,x/S)/(v*e),V=u*u*R,z=Math.max(M/V,V/g);b<s;++b){if(u+=c=h[b].value,c<g&&(g=c),c>M&&(M=c),V=u*u*R,N=Math.max(M/V,V/g),N>z){u-=c;break}z=N}d.push(m={value:u,dice:x<S,children:h.slice(p,b)}),m.dice?Ye(m,n,l,r,v?l+=S*u/v:o):je(m,n,l,v?n+=x*u/v:r,o),v-=u,p=b}return d}const Ze=(function e(a){function n(l,r,o,d,h){Ue(a,l,r,o,d,h)}return n.ratio=function(l){return e((l=+l)>1?l:1)},n})(Ke);function Je(){var e=Ze,a=!1,n=1,l=1,r=[0],o=O,d=O,h=O,m=O,c=O;function p(s){return s.x0=s.y0=0,s.x1=n,s.y1=l,s.eachBefore(b),r=[0],a&&s.eachBefore(Xe),s}function b(s){var x=r[s.depth],S=s.x0+x,v=s.y0+x,u=s.x1-x,g=s.y1-x;u<S&&(S=u=(S+u)/2),g<v&&(v=g=(v+g)/2),s.x0=S,s.y0=v,s.x1=u,s.y1=g,s.children&&(x=r[s.depth+1]=o(s)/2,S+=c(s)-x,v+=d(s)-x,u-=h(s)-x,g-=m(s)-x,u<S&&(S=u=(S+u)/2),g<v&&(v=g=(v+g)/2),e(s,S,v,u,g))}return p.round=function(s){return arguments.length?(a=!!s,p):a},p.size=function(s){return arguments.length?(n=+s[0],l=+s[1],p):[n,l]},p.tile=function(s){return arguments.length?(e=qe(s),p):e},p.padding=function(s){return arguments.length?p.paddingInner(s).paddingOuter(s):p.paddingInner()},p.paddingInner=function(s){return arguments.length?(o=typeof s=="function"?s:G(+s),p):o},p.paddingOuter=function(s){return arguments.length?p.paddingTop(s).paddingRight(s).paddingBottom(s).paddingLeft(s):p.paddingTop()},p.paddingTop=function(s){return arguments.length?(d=typeof s=="function"?s:G(+s),p):d},p.paddingRight=function(s){return arguments.length?(h=typeof s=="function"?s:G(+s),p):h},p.paddingBottom=function(s){return arguments.length?(m=typeof s=="function"?s:G(+s),p):m},p.paddingLeft=function(s){return arguments.length?(c=typeof s=="function"?s:G(+s),p):c},p}var ae=class{constructor(){this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.setAccTitle=ue,this.getAccTitle=fe,this.setDiagramTitle=me,this.getDiagramTitle=ge,this.getAccDescription=ye,this.setAccDescription=Se}static{w(this,"TreeMapDB")}getNodes(){return this.nodes}getConfig(){const e=ve,a=Q();return Z({...e.treemap,...a.treemap??{}})}addNode(e,a){this.nodes.push(e),this.levels.set(e,a),a===0&&(this.outerNodes.push(e),this.root??=e)}getRoot(){return{name:"",children:this.outerNodes}}addClass(e,a){const n=this.classes.get(e)??{id:e,styles:[],textStyles:[]},l=a.replace(/\\,/g,"§§§").replace(/,/g,";").replace(/§§§/g,",").split(";");l&&l.forEach(r=>{xe(r)&&(n?.textStyles?n.textStyles.push(r):n.textStyles=[r]),n?.styles?n.styles.push(r):n.styles=[r]}),this.classes.set(e,n)}getClasses(){return this.classes}getStylesForClass(e){return this.classes.get(e)?.styles??[]}clear(){be(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}};function ne(e){if(!e.length)return[];const a=[],n=[];return e.forEach(l=>{const r={name:l.name,children:l.type==="Leaf"?void 0:[]};for(r.classSelector=l?.classSelector,l?.cssCompiledStyles&&(r.cssCompiledStyles=l.cssCompiledStyles),l.type==="Leaf"&&l.value!==void 0&&(r.value=l.value);n.length>0&&n[n.length-1].level>=l.level;)n.pop();if(n.length===0)a.push(r);else{const o=n[n.length-1].node;o.children?o.children.push(r):o.children=[r]}l.type!=="Leaf"&&n.push({node:r,level:l.level})}),a}w(ne,"buildHierarchy");var Qe=w((e,a)=>{Ce(e,a);const n=[];for(const o of e.TreemapRows??[])o.$type==="ClassDefStatement"&&a.addClass(o.className??"",o.styleText??"");for(const o of e.TreemapRows??[]){const d=o.item;if(!d)continue;const h=o.indent?parseInt(o.indent):0,m=et(d),c=d.classSelector?a.getStylesForClass(d.classSelector):[],p=c.length>0?c:void 0,b={level:h,name:m,type:d.$type,value:d.value,classSelector:d.classSelector,cssCompiledStyles:p};n.push(b)}const l=ne(n),r=w((o,d)=>{for(const h of o)a.addNode(h,d),h.children&&h.children.length>0&&r(h.children,d+1)},"addNodesRecursively");r(l,0)},"populate"),et=w(e=>e.name?String(e.name):"","getItemName"),le={parser:{yy:void 0},parse:w(async e=>{try{const n=await Te("treemap",e);J.debug("Treemap AST:",n);const l=le.parser?.yy;if(!(l instanceof ae))throw new Error("parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");Qe(n,l)}catch(a){throw J.error("Error parsing treemap:",a),a}},"parse")},tt=10,B=10,q=25,at=w((e,a,n,l)=>{const r=l.db,o=r.getConfig(),d=o.padding??tt,h=r.getDiagramTitle(),m=r.getRoot(),{themeVariables:c}=Q();if(!m)return;const p=h?30:0,b=he(a),s=o.nodeWidth?o.nodeWidth*B:960,x=o.nodeHeight?o.nodeHeight*B:500,S=s,v=x+p;b.attr("viewBox",`0 0 ${S} ${v}`),pe(b,v,S,o.useMaxWidth);let u;try{const t=o.valueFormat||",";if(t==="$0,0")u=w(i=>"$"+I(",")(i),"valueFormat");else if(t.startsWith("$")&&t.includes(",")){const i=/\.\d+/.exec(t),f=i?i[0]:"";u=w(C=>"$"+I(","+f)(C),"valueFormat")}else if(t.startsWith("$")){const i=t.substring(1);u=w(f=>"$"+I(i||"")(f),"valueFormat")}else u=I(t)}catch(t){J.error("Error creating format function:",t),u=I(",")}const g=U().range(["transparent",c.cScale0,c.cScale1,c.cScale2,c.cScale3,c.cScale4,c.cScale5,c.cScale6,c.cScale7,c.cScale8,c.cScale9,c.cScale10,c.cScale11]),M=U().range(["transparent",c.cScalePeer0,c.cScalePeer1,c.cScalePeer2,c.cScalePeer3,c.cScalePeer4,c.cScalePeer5,c.cScalePeer6,c.cScalePeer7,c.cScalePeer8,c.cScalePeer9,c.cScalePeer10,c.cScalePeer11]),N=U().range([c.cScaleLabel0,c.cScaleLabel1,c.cScaleLabel2,c.cScaleLabel3,c.cScaleLabel4,c.cScaleLabel5,c.cScaleLabel6,c.cScaleLabel7,c.cScaleLabel8,c.cScaleLabel9,c.cScaleLabel10,c.cScaleLabel11]);h&&b.append("text").attr("x",S/2).attr("y",p/2).attr("class","treemapTitle").attr("text-anchor","middle").attr("dominant-baseline","middle").text(h);const z=b.append("g").attr("transform",`translate(0, ${p})`).attr("class","treemapContainer"),R=ee(m).sum(t=>t.value??0).sort((t,i)=>(i.value??0)-(t.value??0)),te=Je().size([s,x]).paddingTop(t=>t.children&&t.children.length>0?q+B:0).paddingInner(d).paddingLeft(t=>t.children&&t.children.length>0?B:0).paddingRight(t=>t.children&&t.children.length>0?B:0).paddingBottom(t=>t.children&&t.children.length>0?B:0).round(!0)(R),re=te.descendants().filter(t=>t.children&&t.children.length>0),E=z.selectAll(".treemapSection").data(re).enter().append("g").attr("class","treemapSection").attr("transform",t=>`translate(${t.x0},${t.y0})`);E.append("rect").attr("width",t=>t.x1-t.x0).attr("height",q).attr("class","treemapSectionHeader").attr("fill","none").attr("fill-opacity",.6).attr("stroke-width",.6).attr("style",t=>t.depth===0?"display: none;":""),E.append("clipPath").attr("id",(t,i)=>`clip-section-${a}-${i}`).append("rect").attr("width",t=>Math.max(0,t.x1-t.x0-12)).attr("height",q),E.append("rect").attr("width",t=>t.x1-t.x0).attr("height",t=>t.y1-t.y0).attr("class",(t,i)=>`treemapSection section${i}`).attr("fill",t=>g(t.data.name)).attr("fill-opacity",.6).attr("stroke",t=>M(t.data.name)).attr("stroke-width",2).attr("stroke-opacity",.4).attr("style",t=>{if(t.depth===0)return"display: none;";const i=P({cssCompiledStyles:t.data.cssCompiledStyles});return i.nodeStyles+";"+i.borderStyles.join(";")}),E.append("text").attr("class","treemapSectionLabel").attr("x",6).attr("y",q/2).attr("dominant-baseline","middle").text(t=>t.depth===0?"":t.data.name).attr("font-weight","bold").attr("style",t=>{if(t.depth===0)return"display: none;";const i="dominant-baseline: middle; font-size: 12px; fill:"+N(t.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",f=P({cssCompiledStyles:t.data.cssCompiledStyles});return i+f.labelStyles.replace("color:","fill:")}).each(function(t){if(t.depth===0)return;const i=Y(this),f=t.data.name;i.text(f);const C=t.x1-t.x0,L=6;let $;o.showValues!==!1&&t.value?$=C-10-30-10-L:$=C-L-6;const A=Math.max(15,$),y=i.node();if(y.getComputedTextLength()>A){let T=f;for(;T.length>0;){if(T=f.substring(0,T.length-1),T.length===0){i.text("..."),y.getComputedTextLength()>A&&i.text("");break}if(i.text(T+"..."),y.getComputedTextLength()<=A)break}}}),o.showValues!==!1&&E.append("text").attr("class","treemapSectionValue").attr("x",t=>t.x1-t.x0-10).attr("y",q/2).attr("text-anchor","end").attr("dominant-baseline","middle").text(t=>t.value?u(t.value):"").attr("font-style","italic").attr("style",t=>{if(t.depth===0)return"display: none;";const i="text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:"+N(t.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",f=P({cssCompiledStyles:t.data.cssCompiledStyles});return i+f.labelStyles.replace("color:","fill:")});const se=te.leaves(),X=z.selectAll(".treemapLeafGroup").data(se).enter().append("g").attr("class",(t,i)=>`treemapNode treemapLeafGroup leaf${i}${t.data.classSelector?` ${t.data.classSelector}`:""}x`).attr("transform",t=>`translate(${t.x0},${t.y0})`);X.append("rect").attr("width",t=>t.x1-t.x0).attr("height",t=>t.y1-t.y0).attr("class","treemapLeaf").attr("fill",t=>t.parent?g(t.parent.data.name):g(t.data.name)).attr("style",t=>P({cssCompiledStyles:t.data.cssCompiledStyles}).nodeStyles).attr("fill-opacity",.3).attr("stroke",t=>t.parent?g(t.parent.data.name):g(t.data.name)).attr("stroke-width",3),X.append("clipPath").attr("id",(t,i)=>`clip-${a}-${i}`).append("rect").attr("width",t=>Math.max(0,t.x1-t.x0-4)).attr("height",t=>Math.max(0,t.y1-t.y0-4)),X.append("text").attr("class","treemapLabel").attr("x",t=>(t.x1-t.x0)/2).attr("y",t=>(t.y1-t.y0)/2).attr("style",t=>{const i="text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:"+N(t.data.name)+";",f=P({cssCompiledStyles:t.data.cssCompiledStyles});return i+f.labelStyles.replace("color:","fill:")}).attr("clip-path",(t,i)=>`url(#clip-${a}-${i})`).text(t=>t.data.name).each(function(t){const i=Y(this),f=t.x1-t.x0,C=t.y1-t.y0,L=i.node(),$=4,D=f-2*$,A=C-2*$;if(D<10||A<10){i.style("display","none");return}let y=parseInt(i.style("font-size"),10);const _=8,F=28,T=.6,k=6,W=2;for(;L.getComputedTextLength()>D&&y>_;)y--,i.style("font-size",`${y}px`);let H=Math.max(k,Math.min(F,Math.round(y*T))),K=y+W+H;for(;K>A&&y>_&&(y--,H=Math.max(k,Math.min(F,Math.round(y*T))),!(H<k&&y===_));)i.style("font-size",`${y}px`),K=y+W+H;i.style("font-size",`${y}px`),(L.getComputedTextLength()>D||y<_||A<y)&&i.style("display","none")}),o.showValues!==!1&&X.append("text").attr("class","treemapValue").attr("x",i=>(i.x1-i.x0)/2).attr("y",function(i){return(i.y1-i.y0)/2}).attr("style",i=>{const f="text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:"+N(i.data.name)+";",C=P({cssCompiledStyles:i.data.cssCompiledStyles});return f+C.labelStyles.replace("color:","fill:")}).attr("clip-path",(i,f)=>`url(#clip-${a}-${f})`).text(i=>i.value?u(i.value):"").each(function(i){const f=Y(this),C=this.parentNode;if(!C){f.style("display","none");return}const L=Y(C).select(".treemapLabel");if(L.empty()||L.style("display")==="none"){f.style("display","none");return}const $=parseFloat(L.style("font-size")),D=28,A=.6,y=6,_=2,F=Math.max(y,Math.min(D,Math.round($*A)));f.style("font-size",`${F}px`);const k=(i.y1-i.y0)/2+$/2+_;f.attr("y",k);const W=i.x1-i.x0,oe=i.y1-i.y0-4,ce=W-8;f.node().getComputedTextLength()>ce||k+F>oe||F<y?f.style("display","none"):f.style("display",null)});const ie=o.diagramPadding??8;we(b,ie,"flowchart",o?.useMaxWidth||!1)},"draw"),nt=w(function(e,a){return a.db.getClasses()},"getClasses"),lt={draw:at,getClasses:nt},rt={sectionStrokeColor:"black",sectionStrokeWidth:"1",sectionFillColor:"#efefef",leafStrokeColor:"black",leafStrokeWidth:"1",leafFillColor:"#efefef",labelFontSize:"12px",valueFontSize:"10px",titleFontSize:"14px"},st=w(({treemap:e}={})=>{const a=de(),n=Q(),l=Z(a,n.themeVariables),r=Z(rt,e),o=r.titleColor??l.titleColor,d=r.labelColor??l.textColor,h=r.valueColor??l.textColor;return`
1
+ import{_ as w,L as de,E as Q,G as Z,K as he,d as pe,l as J,aR as P,b as ue,a as fe,p as me,q as ge,g as ye,s as Se,H as ve,aS as xe,z as be}from"./mermaid.core-B2zD934i.js";import{s as we}from"./chunk-2J33WTMH-Bcai1sOm.js";import{p as Ce}from"./chunk-4BX2VUAB-hjiKRusj.js";import{p as Te}from"./wardley-L42UT6IY-BOqYltGN.js";import{s as Y}from"./vendor-reactflow-BlIeoTu4.js";import{b as I}from"./defaultLocale-DX6XiGOO.js";import{o as U}from"./ordinal-DILIJJjt.js";import"./index-I32FijPT.js";import"./vendor-react-SZ_qB27O.js";import"./vendor-i18n-Duky4gdQ.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-xterm-BNq00GSj.js";import"./step-yuy0qJer.js";import"./init-Dmth1JHB.js";function Le(e){var a=0,n=e.children,l=n&&n.length;if(!l)a=1;else for(;--l>=0;)a+=n[l].value;e.value=a}function $e(){return this.eachAfter(Le)}function Ae(e,a){let n=-1;for(const l of this)e.call(a,l,++n,this);return this}function Fe(e,a){for(var n=this,l=[n],r,o,d=-1;n=l.pop();)if(e.call(a,n,++d,this),r=n.children)for(o=r.length-1;o>=0;--o)l.push(r[o]);return this}function Ne(e,a){for(var n=this,l=[n],r=[],o,d,h,m=-1;n=l.pop();)if(r.push(n),o=n.children)for(d=0,h=o.length;d<h;++d)l.push(o[d]);for(;n=r.pop();)e.call(a,n,++m,this);return this}function Me(e,a){let n=-1;for(const l of this)if(e.call(a,l,++n,this))return l}function Ve(e){return this.eachAfter(function(a){for(var n=+e(a.data)||0,l=a.children,r=l&&l.length;--r>=0;)n+=l[r].value;a.value=n})}function _e(e){return this.eachBefore(function(a){a.children&&a.children.sort(e)})}function ke(e){for(var a=this,n=ze(a,e),l=[a];a!==n;)a=a.parent,l.push(a);for(var r=l.length;e!==n;)l.splice(r,0,e),e=e.parent;return l}function ze(e,a){if(e===a)return e;var n=e.ancestors(),l=a.ancestors(),r=null;for(e=n.pop(),a=l.pop();e===a;)r=e,e=n.pop(),a=l.pop();return r}function De(){for(var e=this,a=[e];e=e.parent;)a.push(e);return a}function Pe(){return Array.from(this)}function Be(){var e=[];return this.eachBefore(function(a){a.children||e.push(a)}),e}function Re(){var e=this,a=[];return e.each(function(n){n!==e&&a.push({source:n.parent,target:n})}),a}function*Ee(){var e=this,a,n=[e],l,r,o;do for(a=n.reverse(),n=[];e=a.pop();)if(yield e,l=e.children)for(r=0,o=l.length;r<o;++r)n.push(l[r]);while(n.length)}function ee(e,a){e instanceof Map?(e=[void 0,e],a===void 0&&(a=Ie)):a===void 0&&(a=He);for(var n=new j(e),l,r=[n],o,d,h,m;l=r.pop();)if((d=a(l.data))&&(m=(d=Array.from(d)).length))for(l.children=d,h=m-1;h>=0;--h)r.push(o=d[h]=new j(d[h])),o.parent=l,o.depth=l.depth+1;return n.eachBefore(Ge)}function We(){return ee(this).eachBefore(Oe)}function He(e){return e.children}function Ie(e){return Array.isArray(e)?e[1]:null}function Oe(e){e.data.value!==void 0&&(e.value=e.data.value),e.data=e.data.data}function Ge(e){var a=0;do e.height=a;while((e=e.parent)&&e.height<++a)}function j(e){this.data=e,this.depth=this.height=0,this.parent=null}j.prototype=ee.prototype={constructor:j,count:$e,each:Ae,eachAfter:Ne,eachBefore:Fe,find:Me,sum:Ve,sort:_e,path:ke,ancestors:De,descendants:Pe,leaves:Be,links:Re,copy:We,[Symbol.iterator]:Ee};function qe(e){if(typeof e!="function")throw new Error;return e}function O(){return 0}function G(e){return function(){return e}}function Xe(e){e.x0=Math.round(e.x0),e.y0=Math.round(e.y0),e.x1=Math.round(e.x1),e.y1=Math.round(e.y1)}function Ye(e,a,n,l,r){for(var o=e.children,d,h=-1,m=o.length,c=e.value&&(l-a)/e.value;++h<m;)d=o[h],d.y0=n,d.y1=r,d.x0=a,d.x1=a+=d.value*c}function je(e,a,n,l,r){for(var o=e.children,d,h=-1,m=o.length,c=e.value&&(r-n)/e.value;++h<m;)d=o[h],d.x0=a,d.x1=l,d.y0=n,d.y1=n+=d.value*c}var Ke=(1+Math.sqrt(5))/2;function Ue(e,a,n,l,r,o){for(var d=[],h=a.children,m,c,p=0,b=0,s=h.length,x,S,v=a.value,u,g,M,N,z,R,V;p<s;){x=r-n,S=o-l;do u=h[b++].value;while(!u&&b<s);for(g=M=u,R=Math.max(S/x,x/S)/(v*e),V=u*u*R,z=Math.max(M/V,V/g);b<s;++b){if(u+=c=h[b].value,c<g&&(g=c),c>M&&(M=c),V=u*u*R,N=Math.max(M/V,V/g),N>z){u-=c;break}z=N}d.push(m={value:u,dice:x<S,children:h.slice(p,b)}),m.dice?Ye(m,n,l,r,v?l+=S*u/v:o):je(m,n,l,v?n+=x*u/v:r,o),v-=u,p=b}return d}const Ze=(function e(a){function n(l,r,o,d,h){Ue(a,l,r,o,d,h)}return n.ratio=function(l){return e((l=+l)>1?l:1)},n})(Ke);function Je(){var e=Ze,a=!1,n=1,l=1,r=[0],o=O,d=O,h=O,m=O,c=O;function p(s){return s.x0=s.y0=0,s.x1=n,s.y1=l,s.eachBefore(b),r=[0],a&&s.eachBefore(Xe),s}function b(s){var x=r[s.depth],S=s.x0+x,v=s.y0+x,u=s.x1-x,g=s.y1-x;u<S&&(S=u=(S+u)/2),g<v&&(v=g=(v+g)/2),s.x0=S,s.y0=v,s.x1=u,s.y1=g,s.children&&(x=r[s.depth+1]=o(s)/2,S+=c(s)-x,v+=d(s)-x,u-=h(s)-x,g-=m(s)-x,u<S&&(S=u=(S+u)/2),g<v&&(v=g=(v+g)/2),e(s,S,v,u,g))}return p.round=function(s){return arguments.length?(a=!!s,p):a},p.size=function(s){return arguments.length?(n=+s[0],l=+s[1],p):[n,l]},p.tile=function(s){return arguments.length?(e=qe(s),p):e},p.padding=function(s){return arguments.length?p.paddingInner(s).paddingOuter(s):p.paddingInner()},p.paddingInner=function(s){return arguments.length?(o=typeof s=="function"?s:G(+s),p):o},p.paddingOuter=function(s){return arguments.length?p.paddingTop(s).paddingRight(s).paddingBottom(s).paddingLeft(s):p.paddingTop()},p.paddingTop=function(s){return arguments.length?(d=typeof s=="function"?s:G(+s),p):d},p.paddingRight=function(s){return arguments.length?(h=typeof s=="function"?s:G(+s),p):h},p.paddingBottom=function(s){return arguments.length?(m=typeof s=="function"?s:G(+s),p):m},p.paddingLeft=function(s){return arguments.length?(c=typeof s=="function"?s:G(+s),p):c},p}var ae=class{constructor(){this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.setAccTitle=ue,this.getAccTitle=fe,this.setDiagramTitle=me,this.getDiagramTitle=ge,this.getAccDescription=ye,this.setAccDescription=Se}static{w(this,"TreeMapDB")}getNodes(){return this.nodes}getConfig(){const e=ve,a=Q();return Z({...e.treemap,...a.treemap??{}})}addNode(e,a){this.nodes.push(e),this.levels.set(e,a),a===0&&(this.outerNodes.push(e),this.root??=e)}getRoot(){return{name:"",children:this.outerNodes}}addClass(e,a){const n=this.classes.get(e)??{id:e,styles:[],textStyles:[]},l=a.replace(/\\,/g,"§§§").replace(/,/g,";").replace(/§§§/g,",").split(";");l&&l.forEach(r=>{xe(r)&&(n?.textStyles?n.textStyles.push(r):n.textStyles=[r]),n?.styles?n.styles.push(r):n.styles=[r]}),this.classes.set(e,n)}getClasses(){return this.classes}getStylesForClass(e){return this.classes.get(e)?.styles??[]}clear(){be(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}};function ne(e){if(!e.length)return[];const a=[],n=[];return e.forEach(l=>{const r={name:l.name,children:l.type==="Leaf"?void 0:[]};for(r.classSelector=l?.classSelector,l?.cssCompiledStyles&&(r.cssCompiledStyles=l.cssCompiledStyles),l.type==="Leaf"&&l.value!==void 0&&(r.value=l.value);n.length>0&&n[n.length-1].level>=l.level;)n.pop();if(n.length===0)a.push(r);else{const o=n[n.length-1].node;o.children?o.children.push(r):o.children=[r]}l.type!=="Leaf"&&n.push({node:r,level:l.level})}),a}w(ne,"buildHierarchy");var Qe=w((e,a)=>{Ce(e,a);const n=[];for(const o of e.TreemapRows??[])o.$type==="ClassDefStatement"&&a.addClass(o.className??"",o.styleText??"");for(const o of e.TreemapRows??[]){const d=o.item;if(!d)continue;const h=o.indent?parseInt(o.indent):0,m=et(d),c=d.classSelector?a.getStylesForClass(d.classSelector):[],p=c.length>0?c:void 0,b={level:h,name:m,type:d.$type,value:d.value,classSelector:d.classSelector,cssCompiledStyles:p};n.push(b)}const l=ne(n),r=w((o,d)=>{for(const h of o)a.addNode(h,d),h.children&&h.children.length>0&&r(h.children,d+1)},"addNodesRecursively");r(l,0)},"populate"),et=w(e=>e.name?String(e.name):"","getItemName"),le={parser:{yy:void 0},parse:w(async e=>{try{const n=await Te("treemap",e);J.debug("Treemap AST:",n);const l=le.parser?.yy;if(!(l instanceof ae))throw new Error("parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");Qe(n,l)}catch(a){throw J.error("Error parsing treemap:",a),a}},"parse")},tt=10,B=10,q=25,at=w((e,a,n,l)=>{const r=l.db,o=r.getConfig(),d=o.padding??tt,h=r.getDiagramTitle(),m=r.getRoot(),{themeVariables:c}=Q();if(!m)return;const p=h?30:0,b=he(a),s=o.nodeWidth?o.nodeWidth*B:960,x=o.nodeHeight?o.nodeHeight*B:500,S=s,v=x+p;b.attr("viewBox",`0 0 ${S} ${v}`),pe(b,v,S,o.useMaxWidth);let u;try{const t=o.valueFormat||",";if(t==="$0,0")u=w(i=>"$"+I(",")(i),"valueFormat");else if(t.startsWith("$")&&t.includes(",")){const i=/\.\d+/.exec(t),f=i?i[0]:"";u=w(C=>"$"+I(","+f)(C),"valueFormat")}else if(t.startsWith("$")){const i=t.substring(1);u=w(f=>"$"+I(i||"")(f),"valueFormat")}else u=I(t)}catch(t){J.error("Error creating format function:",t),u=I(",")}const g=U().range(["transparent",c.cScale0,c.cScale1,c.cScale2,c.cScale3,c.cScale4,c.cScale5,c.cScale6,c.cScale7,c.cScale8,c.cScale9,c.cScale10,c.cScale11]),M=U().range(["transparent",c.cScalePeer0,c.cScalePeer1,c.cScalePeer2,c.cScalePeer3,c.cScalePeer4,c.cScalePeer5,c.cScalePeer6,c.cScalePeer7,c.cScalePeer8,c.cScalePeer9,c.cScalePeer10,c.cScalePeer11]),N=U().range([c.cScaleLabel0,c.cScaleLabel1,c.cScaleLabel2,c.cScaleLabel3,c.cScaleLabel4,c.cScaleLabel5,c.cScaleLabel6,c.cScaleLabel7,c.cScaleLabel8,c.cScaleLabel9,c.cScaleLabel10,c.cScaleLabel11]);h&&b.append("text").attr("x",S/2).attr("y",p/2).attr("class","treemapTitle").attr("text-anchor","middle").attr("dominant-baseline","middle").text(h);const z=b.append("g").attr("transform",`translate(0, ${p})`).attr("class","treemapContainer"),R=ee(m).sum(t=>t.value??0).sort((t,i)=>(i.value??0)-(t.value??0)),te=Je().size([s,x]).paddingTop(t=>t.children&&t.children.length>0?q+B:0).paddingInner(d).paddingLeft(t=>t.children&&t.children.length>0?B:0).paddingRight(t=>t.children&&t.children.length>0?B:0).paddingBottom(t=>t.children&&t.children.length>0?B:0).round(!0)(R),re=te.descendants().filter(t=>t.children&&t.children.length>0),E=z.selectAll(".treemapSection").data(re).enter().append("g").attr("class","treemapSection").attr("transform",t=>`translate(${t.x0},${t.y0})`);E.append("rect").attr("width",t=>t.x1-t.x0).attr("height",q).attr("class","treemapSectionHeader").attr("fill","none").attr("fill-opacity",.6).attr("stroke-width",.6).attr("style",t=>t.depth===0?"display: none;":""),E.append("clipPath").attr("id",(t,i)=>`clip-section-${a}-${i}`).append("rect").attr("width",t=>Math.max(0,t.x1-t.x0-12)).attr("height",q),E.append("rect").attr("width",t=>t.x1-t.x0).attr("height",t=>t.y1-t.y0).attr("class",(t,i)=>`treemapSection section${i}`).attr("fill",t=>g(t.data.name)).attr("fill-opacity",.6).attr("stroke",t=>M(t.data.name)).attr("stroke-width",2).attr("stroke-opacity",.4).attr("style",t=>{if(t.depth===0)return"display: none;";const i=P({cssCompiledStyles:t.data.cssCompiledStyles});return i.nodeStyles+";"+i.borderStyles.join(";")}),E.append("text").attr("class","treemapSectionLabel").attr("x",6).attr("y",q/2).attr("dominant-baseline","middle").text(t=>t.depth===0?"":t.data.name).attr("font-weight","bold").attr("style",t=>{if(t.depth===0)return"display: none;";const i="dominant-baseline: middle; font-size: 12px; fill:"+N(t.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",f=P({cssCompiledStyles:t.data.cssCompiledStyles});return i+f.labelStyles.replace("color:","fill:")}).each(function(t){if(t.depth===0)return;const i=Y(this),f=t.data.name;i.text(f);const C=t.x1-t.x0,L=6;let $;o.showValues!==!1&&t.value?$=C-10-30-10-L:$=C-L-6;const A=Math.max(15,$),y=i.node();if(y.getComputedTextLength()>A){let T=f;for(;T.length>0;){if(T=f.substring(0,T.length-1),T.length===0){i.text("..."),y.getComputedTextLength()>A&&i.text("");break}if(i.text(T+"..."),y.getComputedTextLength()<=A)break}}}),o.showValues!==!1&&E.append("text").attr("class","treemapSectionValue").attr("x",t=>t.x1-t.x0-10).attr("y",q/2).attr("text-anchor","end").attr("dominant-baseline","middle").text(t=>t.value?u(t.value):"").attr("font-style","italic").attr("style",t=>{if(t.depth===0)return"display: none;";const i="text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:"+N(t.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",f=P({cssCompiledStyles:t.data.cssCompiledStyles});return i+f.labelStyles.replace("color:","fill:")});const se=te.leaves(),X=z.selectAll(".treemapLeafGroup").data(se).enter().append("g").attr("class",(t,i)=>`treemapNode treemapLeafGroup leaf${i}${t.data.classSelector?` ${t.data.classSelector}`:""}x`).attr("transform",t=>`translate(${t.x0},${t.y0})`);X.append("rect").attr("width",t=>t.x1-t.x0).attr("height",t=>t.y1-t.y0).attr("class","treemapLeaf").attr("fill",t=>t.parent?g(t.parent.data.name):g(t.data.name)).attr("style",t=>P({cssCompiledStyles:t.data.cssCompiledStyles}).nodeStyles).attr("fill-opacity",.3).attr("stroke",t=>t.parent?g(t.parent.data.name):g(t.data.name)).attr("stroke-width",3),X.append("clipPath").attr("id",(t,i)=>`clip-${a}-${i}`).append("rect").attr("width",t=>Math.max(0,t.x1-t.x0-4)).attr("height",t=>Math.max(0,t.y1-t.y0-4)),X.append("text").attr("class","treemapLabel").attr("x",t=>(t.x1-t.x0)/2).attr("y",t=>(t.y1-t.y0)/2).attr("style",t=>{const i="text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:"+N(t.data.name)+";",f=P({cssCompiledStyles:t.data.cssCompiledStyles});return i+f.labelStyles.replace("color:","fill:")}).attr("clip-path",(t,i)=>`url(#clip-${a}-${i})`).text(t=>t.data.name).each(function(t){const i=Y(this),f=t.x1-t.x0,C=t.y1-t.y0,L=i.node(),$=4,D=f-2*$,A=C-2*$;if(D<10||A<10){i.style("display","none");return}let y=parseInt(i.style("font-size"),10);const _=8,F=28,T=.6,k=6,W=2;for(;L.getComputedTextLength()>D&&y>_;)y--,i.style("font-size",`${y}px`);let H=Math.max(k,Math.min(F,Math.round(y*T))),K=y+W+H;for(;K>A&&y>_&&(y--,H=Math.max(k,Math.min(F,Math.round(y*T))),!(H<k&&y===_));)i.style("font-size",`${y}px`),K=y+W+H;i.style("font-size",`${y}px`),(L.getComputedTextLength()>D||y<_||A<y)&&i.style("display","none")}),o.showValues!==!1&&X.append("text").attr("class","treemapValue").attr("x",i=>(i.x1-i.x0)/2).attr("y",function(i){return(i.y1-i.y0)/2}).attr("style",i=>{const f="text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:"+N(i.data.name)+";",C=P({cssCompiledStyles:i.data.cssCompiledStyles});return f+C.labelStyles.replace("color:","fill:")}).attr("clip-path",(i,f)=>`url(#clip-${a}-${f})`).text(i=>i.value?u(i.value):"").each(function(i){const f=Y(this),C=this.parentNode;if(!C){f.style("display","none");return}const L=Y(C).select(".treemapLabel");if(L.empty()||L.style("display")==="none"){f.style("display","none");return}const $=parseFloat(L.style("font-size")),D=28,A=.6,y=6,_=2,F=Math.max(y,Math.min(D,Math.round($*A)));f.style("font-size",`${F}px`);const k=(i.y1-i.y0)/2+$/2+_;f.attr("y",k);const W=i.x1-i.x0,oe=i.y1-i.y0-4,ce=W-8;f.node().getComputedTextLength()>ce||k+F>oe||F<y?f.style("display","none"):f.style("display",null)});const ie=o.diagramPadding??8;we(b,ie,"flowchart",o?.useMaxWidth||!1)},"draw"),nt=w(function(e,a){return a.db.getClasses()},"getClasses"),lt={draw:at,getClasses:nt},rt={sectionStrokeColor:"black",sectionStrokeWidth:"1",sectionFillColor:"#efefef",leafStrokeColor:"black",leafStrokeWidth:"1",leafFillColor:"#efefef",labelFontSize:"12px",valueFontSize:"10px",titleFontSize:"14px"},st=w(({treemap:e}={})=>{const a=de(),n=Q(),l=Z(a,n.themeVariables),r=Z(rt,e),o=r.titleColor??l.titleColor,d=r.labelColor??l.textColor,h=r.valueColor??l.textColor;return`
2
2
  .treemapNode.section {
3
3
  stroke: ${r.sectionStrokeColor};
4
4
  stroke-width: ${r.sectionStrokeWidth};
@@ -1,4 +1,4 @@
1
- import{g as Mt}from"./chunk-55IACEB6-IF2bk5IL.js";import{s as Bt}from"./chunk-2J33WTMH-DQ-9Xccu.js";import{_ as l,b as Ft,a as Yt,s as Pt,g as zt,p as Gt,q as Kt,c as it,l as V,z as Ut,x as Zt,B as jt,D as Wt,o as Qt,r as Xt,u as Ht}from"./mermaid.core-Bh02RvfX.js";import{s as qt}from"./vendor-reactflow-BlIeoTu4.js";import{c as Jt}from"./channel-D-UHgx8G.js";import"./index-B_z7OKl4.js";import"./vendor-react-SZ_qB27O.js";import"./vendor-i18n-Duky4gdQ.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-xterm-BNq00GSj.js";import"./step-yuy0qJer.js";var _t=(function(){var e=l(function(I,n,o,c){for(o=o||{},c=I.length;c--;o[I[c]]=n);return o},"o"),i=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52],h=[1,10],a=[1,11],u=[1,12],d=[1,13],y=[1,23],f=[1,24],k=[1,25],j=[1,26],W=[1,27],T=[1,19],Q=[1,28],M=[1,29],D=[1,20],R=[1,18],S=[1,21],C=[1,22],nt=[1,36],at=[1,37],ot=[1,38],ct=[1,39],lt=[1,40],B=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52,65,66,67,68,69],O=[1,45],N=[1,46],F=[1,55],Y=[40,48,50,51,52,70,71],P=[1,66],z=[1,64],A=[1,61],G=[1,65],K=[1,67],X=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,51,52,65,66,67,68,69],gt=[65,66,67,68,69],bt=[1,84],mt=[1,83],kt=[1,81],Et=[1,82],Tt=[6,10,42,47],L=[6,10,13,41,42,47,48,49],H=[1,92],q=[1,91],J=[1,90],U=[19,58],St=[1,101],Ot=[1,100],ht=[19,58,60,62],ut={trace:l(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,COLON:13,role:14,STYLE_SEPARATOR:15,idList:16,BLOCK_START:17,attributes:18,BLOCK_STOP:19,SQS:20,SQE:21,title:22,title_value:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,direction:29,classDefStatement:30,classStatement:31,styleStatement:32,direction_tb:33,direction_bt:34,direction_rl:35,direction_lr:36,CLASSDEF:37,stylesOpt:38,separator:39,UNICODE_TEXT:40,STYLE_TEXT:41,COMMA:42,CLASS:43,STYLE:44,style:45,styleComponent:46,SEMI:47,NUM:48,BRKT:49,ENTITY_NAME:50,DECIMAL_NUM:51,ENTITY_ONE:52,attribute:53,attributeType:54,attributeName:55,attributeKeyTypeList:56,attributeComment:57,ATTRIBUTE_WORD:58,attributeKeyType:59,",":60,ATTRIBUTE_KEY:61,COMMENT:62,cardinality:63,relType:64,ZERO_OR_ONE:65,ZERO_OR_MORE:66,ONE_OR_MORE:67,ONLY_ONE:68,MD_PARENT:69,NON_IDENTIFYING:70,IDENTIFYING:71,WORD:72,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:"COLON",15:"STYLE_SEPARATOR",17:"BLOCK_START",19:"BLOCK_STOP",20:"SQS",21:"SQE",22:"title",23:"title_value",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"direction_tb",34:"direction_bt",35:"direction_rl",36:"direction_lr",37:"CLASSDEF",40:"UNICODE_TEXT",41:"STYLE_TEXT",42:"COMMA",43:"CLASS",44:"STYLE",47:"SEMI",48:"NUM",49:"BRKT",50:"ENTITY_NAME",51:"DECIMAL_NUM",52:"ENTITY_ONE",58:"ATTRIBUTE_WORD",60:",",61:"ATTRIBUTE_KEY",62:"COMMENT",65:"ZERO_OR_ONE",66:"ZERO_OR_MORE",67:"ONE_OR_MORE",68:"ONLY_ONE",69:"MD_PARENT",70:"NON_IDENTIFYING",71:"IDENTIFYING",72:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[11,1],[11,1],[11,1],[18,1],[18,2],[53,2],[53,3],[53,3],[53,4],[54,1],[55,1],[56,1],[56,3],[59,1],[57,1],[12,3],[63,1],[63,1],[63,1],[63,1],[63,1],[64,1],[64,1],[14,1],[14,1],[14,1]],performAction:l(function(n,o,c,r,p,t,Z){var s=t.length-1;switch(p){case 1:break;case 2:this.$=[];break;case 3:t[s-1].push(t[s]),this.$=t[s-1];break;case 4:case 5:this.$=t[s];break;case 6:case 7:this.$=[];break;case 8:r.addEntity(t[s-4]),r.addEntity(t[s-2]),r.addRelationship(t[s-4],t[s],t[s-2],t[s-3]);break;case 9:r.addEntity(t[s-8]),r.addEntity(t[s-4]),r.addRelationship(t[s-8],t[s],t[s-4],t[s-5]),r.setClass([t[s-8]],t[s-6]),r.setClass([t[s-4]],t[s-2]);break;case 10:r.addEntity(t[s-6]),r.addEntity(t[s-2]),r.addRelationship(t[s-6],t[s],t[s-2],t[s-3]),r.setClass([t[s-6]],t[s-4]);break;case 11:r.addEntity(t[s-6]),r.addEntity(t[s-4]),r.addRelationship(t[s-6],t[s],t[s-4],t[s-5]),r.setClass([t[s-4]],t[s-2]);break;case 12:r.addEntity(t[s-3]),r.addAttributes(t[s-3],t[s-1]);break;case 13:r.addEntity(t[s-5]),r.addAttributes(t[s-5],t[s-1]),r.setClass([t[s-5]],t[s-3]);break;case 14:r.addEntity(t[s-2]);break;case 15:r.addEntity(t[s-4]),r.setClass([t[s-4]],t[s-2]);break;case 16:r.addEntity(t[s]);break;case 17:r.addEntity(t[s-2]),r.setClass([t[s-2]],t[s]);break;case 18:r.addEntity(t[s-6],t[s-4]),r.addAttributes(t[s-6],t[s-1]);break;case 19:r.addEntity(t[s-8],t[s-6]),r.addAttributes(t[s-8],t[s-1]),r.setClass([t[s-8]],t[s-3]);break;case 20:r.addEntity(t[s-5],t[s-3]);break;case 21:r.addEntity(t[s-7],t[s-5]),r.setClass([t[s-7]],t[s-2]);break;case 22:r.addEntity(t[s-3],t[s-1]);break;case 23:r.addEntity(t[s-5],t[s-3]),r.setClass([t[s-5]],t[s]);break;case 24:case 25:this.$=t[s].trim(),r.setAccTitle(this.$);break;case 26:case 27:this.$=t[s].trim(),r.setAccDescription(this.$);break;case 32:r.setDirection("TB");break;case 33:r.setDirection("BT");break;case 34:r.setDirection("RL");break;case 35:r.setDirection("LR");break;case 36:this.$=t[s-3],r.addClass(t[s-2],t[s-1]);break;case 37:case 38:case 59:case 67:this.$=[t[s]];break;case 39:case 40:this.$=t[s-2].concat([t[s]]);break;case 41:this.$=t[s-2],r.setClass(t[s-1],t[s]);break;case 42:this.$=t[s-3],r.addCssStyles(t[s-2],t[s-1]);break;case 43:this.$=[t[s]];break;case 44:t[s-2].push(t[s]),this.$=t[s-2];break;case 46:this.$=t[s-1]+t[s];break;case 54:case 79:case 80:this.$=t[s].replace(/"/g,"");break;case 55:case 56:case 57:case 58:case 81:this.$=t[s];break;case 60:t[s].push(t[s-1]),this.$=t[s];break;case 61:this.$={type:t[s-1],name:t[s]};break;case 62:this.$={type:t[s-2],name:t[s-1],keys:t[s]};break;case 63:this.$={type:t[s-2],name:t[s-1],comment:t[s]};break;case 64:this.$={type:t[s-3],name:t[s-2],keys:t[s-1],comment:t[s]};break;case 65:case 66:case 69:this.$=t[s];break;case 68:t[s-2].push(t[s]),this.$=t[s-2];break;case 70:this.$=t[s].replace(/"/g,"");break;case 71:this.$={cardA:t[s],relType:t[s-1],cardB:t[s-2]};break;case 72:this.$=r.Cardinality.ZERO_OR_ONE;break;case 73:this.$=r.Cardinality.ZERO_OR_MORE;break;case 74:this.$=r.Cardinality.ONE_OR_MORE;break;case 75:this.$=r.Cardinality.ONLY_ONE;break;case 76:this.$=r.Cardinality.MD_PARENT;break;case 77:this.$=r.Identification.NON_IDENTIFYING;break;case 78:this.$=r.Identification.IDENTIFYING;break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},e(i,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:h,24:a,26:u,28:d,29:14,30:15,31:16,32:17,33:y,34:f,35:k,36:j,37:W,40:T,43:Q,44:M,48:D,50:R,51:S,52:C},e(i,[2,7],{1:[2,1]}),e(i,[2,3]),{9:30,11:9,22:h,24:a,26:u,28:d,29:14,30:15,31:16,32:17,33:y,34:f,35:k,36:j,37:W,40:T,43:Q,44:M,48:D,50:R,51:S,52:C},e(i,[2,5]),e(i,[2,6]),e(i,[2,16],{12:31,63:35,15:[1,32],17:[1,33],20:[1,34],65:nt,66:at,67:ot,68:ct,69:lt}),{23:[1,41]},{25:[1,42]},{27:[1,43]},e(i,[2,27]),e(i,[2,28]),e(i,[2,29]),e(i,[2,30]),e(i,[2,31]),e(B,[2,54]),e(B,[2,55]),e(B,[2,56]),e(B,[2,57]),e(B,[2,58]),e(i,[2,32]),e(i,[2,33]),e(i,[2,34]),e(i,[2,35]),{16:44,40:O,41:N},{16:47,40:O,41:N},{16:48,40:O,41:N},e(i,[2,4]),{11:49,40:T,48:D,50:R,51:S,52:C},{16:50,40:O,41:N},{18:51,19:[1,52],53:53,54:54,58:F},{11:56,40:T,48:D,50:R,51:S,52:C},{64:57,70:[1,58],71:[1,59]},e(Y,[2,72]),e(Y,[2,73]),e(Y,[2,74]),e(Y,[2,75]),e(Y,[2,76]),e(i,[2,24]),e(i,[2,25]),e(i,[2,26]),{13:P,38:60,41:z,42:A,45:62,46:63,48:G,49:K},e(X,[2,37]),e(X,[2,38]),{16:68,40:O,41:N,42:A},{13:P,38:69,41:z,42:A,45:62,46:63,48:G,49:K},{13:[1,70],15:[1,71]},e(i,[2,17],{63:35,12:72,17:[1,73],42:A,65:nt,66:at,67:ot,68:ct,69:lt}),{19:[1,74]},e(i,[2,14]),{18:75,19:[2,59],53:53,54:54,58:F},{55:76,58:[1,77]},{58:[2,65]},{21:[1,78]},{63:79,65:nt,66:at,67:ot,68:ct,69:lt},e(gt,[2,77]),e(gt,[2,78]),{6:bt,10:mt,39:80,42:kt,47:Et},{40:[1,85],41:[1,86]},e(Tt,[2,43],{46:87,13:P,41:z,48:G,49:K}),e(L,[2,45]),e(L,[2,50]),e(L,[2,51]),e(L,[2,52]),e(L,[2,53]),e(i,[2,41],{42:A}),{6:bt,10:mt,39:88,42:kt,47:Et},{14:89,40:H,50:q,72:J},{16:93,40:O,41:N},{11:94,40:T,48:D,50:R,51:S,52:C},{18:95,19:[1,96],53:53,54:54,58:F},e(i,[2,12]),{19:[2,60]},e(U,[2,61],{56:97,57:98,59:99,61:St,62:Ot}),e([19,58,61,62],[2,66]),e(i,[2,22],{15:[1,103],17:[1,102]}),e([40,48,50,51,52],[2,71]),e(i,[2,36]),{13:P,41:z,45:104,46:63,48:G,49:K},e(i,[2,47]),e(i,[2,48]),e(i,[2,49]),e(X,[2,39]),e(X,[2,40]),e(L,[2,46]),e(i,[2,42]),e(i,[2,8]),e(i,[2,79]),e(i,[2,80]),e(i,[2,81]),{13:[1,105],42:A},{13:[1,107],15:[1,106]},{19:[1,108]},e(i,[2,15]),e(U,[2,62],{57:109,60:[1,110],62:Ot}),e(U,[2,63]),e(ht,[2,67]),e(U,[2,70]),e(ht,[2,69]),{18:111,19:[1,112],53:53,54:54,58:F},{16:113,40:O,41:N},e(Tt,[2,44],{46:87,13:P,41:z,48:G,49:K}),{14:114,40:H,50:q,72:J},{16:115,40:O,41:N},{14:116,40:H,50:q,72:J},e(i,[2,13]),e(U,[2,64]),{59:117,61:St},{19:[1,118]},e(i,[2,20]),e(i,[2,23],{17:[1,119],42:A}),e(i,[2,11]),{13:[1,120],42:A},e(i,[2,10]),e(ht,[2,68]),e(i,[2,18]),{18:121,19:[1,122],53:53,54:54,58:F},{14:123,40:H,50:q,72:J},{19:[1,124]},e(i,[2,21]),e(i,[2,9]),e(i,[2,19])],defaultActions:{55:[2,65],75:[2,60]},parseError:l(function(n,o){if(o.recoverable)this.trace(n);else{var c=new Error(n);throw c.hash=o,c}},"parseError"),parse:l(function(n){var o=this,c=[0],r=[],p=[null],t=[],Z=this.table,s="",tt=0,Nt=0,Dt=2,At=1,Lt=t.slice.call(arguments,1),_=Object.create(this.lexer),x={yy:{}};for(var dt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,dt)&&(x.yy[dt]=this.yy[dt]);_.setInput(n,x.yy),x.yy.lexer=_,x.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var pt=_.yylloc;t.push(pt);var wt=_.options&&_.options.ranges;typeof x.yy.parseError=="function"?this.parseError=x.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Vt(b){c.length=c.length-2*b,p.length=p.length-b,t.length=t.length-b}l(Vt,"popStack");function It(){var b;return b=r.pop()||_.lex()||At,typeof b!="number"&&(b instanceof Array&&(r=b,b=r.pop()),b=o.symbols_[b]||b),b}l(It,"lex");for(var g,v,m,ft,w={},et,E,Rt,st;;){if(v=c[c.length-1],this.defaultActions[v]?m=this.defaultActions[v]:((g===null||typeof g>"u")&&(g=It()),m=Z[v]&&Z[v][g]),typeof m>"u"||!m.length||!m[0]){var yt="";st=[];for(et in Z[v])this.terminals_[et]&&et>Dt&&st.push("'"+this.terminals_[et]+"'");_.showPosition?yt="Parse error on line "+(tt+1)+`:
1
+ import{g as Mt}from"./chunk-55IACEB6-DpO9nIb0.js";import{s as Bt}from"./chunk-2J33WTMH-Bcai1sOm.js";import{_ as l,b as Ft,a as Yt,s as Pt,g as zt,p as Gt,q as Kt,c as it,l as V,z as Ut,x as Zt,B as jt,D as Wt,o as Qt,r as Xt,u as Ht}from"./mermaid.core-B2zD934i.js";import{s as qt}from"./vendor-reactflow-BlIeoTu4.js";import{c as Jt}from"./channel-CP2ySYs0.js";import"./index-I32FijPT.js";import"./vendor-react-SZ_qB27O.js";import"./vendor-i18n-Duky4gdQ.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-xterm-BNq00GSj.js";import"./step-yuy0qJer.js";var _t=(function(){var e=l(function(I,n,o,c){for(o=o||{},c=I.length;c--;o[I[c]]=n);return o},"o"),i=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52],h=[1,10],a=[1,11],u=[1,12],d=[1,13],y=[1,23],f=[1,24],k=[1,25],j=[1,26],W=[1,27],T=[1,19],Q=[1,28],M=[1,29],D=[1,20],R=[1,18],S=[1,21],C=[1,22],nt=[1,36],at=[1,37],ot=[1,38],ct=[1,39],lt=[1,40],B=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52,65,66,67,68,69],O=[1,45],N=[1,46],F=[1,55],Y=[40,48,50,51,52,70,71],P=[1,66],z=[1,64],A=[1,61],G=[1,65],K=[1,67],X=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,51,52,65,66,67,68,69],gt=[65,66,67,68,69],bt=[1,84],mt=[1,83],kt=[1,81],Et=[1,82],Tt=[6,10,42,47],L=[6,10,13,41,42,47,48,49],H=[1,92],q=[1,91],J=[1,90],U=[19,58],St=[1,101],Ot=[1,100],ht=[19,58,60,62],ut={trace:l(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,COLON:13,role:14,STYLE_SEPARATOR:15,idList:16,BLOCK_START:17,attributes:18,BLOCK_STOP:19,SQS:20,SQE:21,title:22,title_value:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,direction:29,classDefStatement:30,classStatement:31,styleStatement:32,direction_tb:33,direction_bt:34,direction_rl:35,direction_lr:36,CLASSDEF:37,stylesOpt:38,separator:39,UNICODE_TEXT:40,STYLE_TEXT:41,COMMA:42,CLASS:43,STYLE:44,style:45,styleComponent:46,SEMI:47,NUM:48,BRKT:49,ENTITY_NAME:50,DECIMAL_NUM:51,ENTITY_ONE:52,attribute:53,attributeType:54,attributeName:55,attributeKeyTypeList:56,attributeComment:57,ATTRIBUTE_WORD:58,attributeKeyType:59,",":60,ATTRIBUTE_KEY:61,COMMENT:62,cardinality:63,relType:64,ZERO_OR_ONE:65,ZERO_OR_MORE:66,ONE_OR_MORE:67,ONLY_ONE:68,MD_PARENT:69,NON_IDENTIFYING:70,IDENTIFYING:71,WORD:72,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:"COLON",15:"STYLE_SEPARATOR",17:"BLOCK_START",19:"BLOCK_STOP",20:"SQS",21:"SQE",22:"title",23:"title_value",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"direction_tb",34:"direction_bt",35:"direction_rl",36:"direction_lr",37:"CLASSDEF",40:"UNICODE_TEXT",41:"STYLE_TEXT",42:"COMMA",43:"CLASS",44:"STYLE",47:"SEMI",48:"NUM",49:"BRKT",50:"ENTITY_NAME",51:"DECIMAL_NUM",52:"ENTITY_ONE",58:"ATTRIBUTE_WORD",60:",",61:"ATTRIBUTE_KEY",62:"COMMENT",65:"ZERO_OR_ONE",66:"ZERO_OR_MORE",67:"ONE_OR_MORE",68:"ONLY_ONE",69:"MD_PARENT",70:"NON_IDENTIFYING",71:"IDENTIFYING",72:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[11,1],[11,1],[11,1],[18,1],[18,2],[53,2],[53,3],[53,3],[53,4],[54,1],[55,1],[56,1],[56,3],[59,1],[57,1],[12,3],[63,1],[63,1],[63,1],[63,1],[63,1],[64,1],[64,1],[14,1],[14,1],[14,1]],performAction:l(function(n,o,c,r,p,t,Z){var s=t.length-1;switch(p){case 1:break;case 2:this.$=[];break;case 3:t[s-1].push(t[s]),this.$=t[s-1];break;case 4:case 5:this.$=t[s];break;case 6:case 7:this.$=[];break;case 8:r.addEntity(t[s-4]),r.addEntity(t[s-2]),r.addRelationship(t[s-4],t[s],t[s-2],t[s-3]);break;case 9:r.addEntity(t[s-8]),r.addEntity(t[s-4]),r.addRelationship(t[s-8],t[s],t[s-4],t[s-5]),r.setClass([t[s-8]],t[s-6]),r.setClass([t[s-4]],t[s-2]);break;case 10:r.addEntity(t[s-6]),r.addEntity(t[s-2]),r.addRelationship(t[s-6],t[s],t[s-2],t[s-3]),r.setClass([t[s-6]],t[s-4]);break;case 11:r.addEntity(t[s-6]),r.addEntity(t[s-4]),r.addRelationship(t[s-6],t[s],t[s-4],t[s-5]),r.setClass([t[s-4]],t[s-2]);break;case 12:r.addEntity(t[s-3]),r.addAttributes(t[s-3],t[s-1]);break;case 13:r.addEntity(t[s-5]),r.addAttributes(t[s-5],t[s-1]),r.setClass([t[s-5]],t[s-3]);break;case 14:r.addEntity(t[s-2]);break;case 15:r.addEntity(t[s-4]),r.setClass([t[s-4]],t[s-2]);break;case 16:r.addEntity(t[s]);break;case 17:r.addEntity(t[s-2]),r.setClass([t[s-2]],t[s]);break;case 18:r.addEntity(t[s-6],t[s-4]),r.addAttributes(t[s-6],t[s-1]);break;case 19:r.addEntity(t[s-8],t[s-6]),r.addAttributes(t[s-8],t[s-1]),r.setClass([t[s-8]],t[s-3]);break;case 20:r.addEntity(t[s-5],t[s-3]);break;case 21:r.addEntity(t[s-7],t[s-5]),r.setClass([t[s-7]],t[s-2]);break;case 22:r.addEntity(t[s-3],t[s-1]);break;case 23:r.addEntity(t[s-5],t[s-3]),r.setClass([t[s-5]],t[s]);break;case 24:case 25:this.$=t[s].trim(),r.setAccTitle(this.$);break;case 26:case 27:this.$=t[s].trim(),r.setAccDescription(this.$);break;case 32:r.setDirection("TB");break;case 33:r.setDirection("BT");break;case 34:r.setDirection("RL");break;case 35:r.setDirection("LR");break;case 36:this.$=t[s-3],r.addClass(t[s-2],t[s-1]);break;case 37:case 38:case 59:case 67:this.$=[t[s]];break;case 39:case 40:this.$=t[s-2].concat([t[s]]);break;case 41:this.$=t[s-2],r.setClass(t[s-1],t[s]);break;case 42:this.$=t[s-3],r.addCssStyles(t[s-2],t[s-1]);break;case 43:this.$=[t[s]];break;case 44:t[s-2].push(t[s]),this.$=t[s-2];break;case 46:this.$=t[s-1]+t[s];break;case 54:case 79:case 80:this.$=t[s].replace(/"/g,"");break;case 55:case 56:case 57:case 58:case 81:this.$=t[s];break;case 60:t[s].push(t[s-1]),this.$=t[s];break;case 61:this.$={type:t[s-1],name:t[s]};break;case 62:this.$={type:t[s-2],name:t[s-1],keys:t[s]};break;case 63:this.$={type:t[s-2],name:t[s-1],comment:t[s]};break;case 64:this.$={type:t[s-3],name:t[s-2],keys:t[s-1],comment:t[s]};break;case 65:case 66:case 69:this.$=t[s];break;case 68:t[s-2].push(t[s]),this.$=t[s-2];break;case 70:this.$=t[s].replace(/"/g,"");break;case 71:this.$={cardA:t[s],relType:t[s-1],cardB:t[s-2]};break;case 72:this.$=r.Cardinality.ZERO_OR_ONE;break;case 73:this.$=r.Cardinality.ZERO_OR_MORE;break;case 74:this.$=r.Cardinality.ONE_OR_MORE;break;case 75:this.$=r.Cardinality.ONLY_ONE;break;case 76:this.$=r.Cardinality.MD_PARENT;break;case 77:this.$=r.Identification.NON_IDENTIFYING;break;case 78:this.$=r.Identification.IDENTIFYING;break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},e(i,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:h,24:a,26:u,28:d,29:14,30:15,31:16,32:17,33:y,34:f,35:k,36:j,37:W,40:T,43:Q,44:M,48:D,50:R,51:S,52:C},e(i,[2,7],{1:[2,1]}),e(i,[2,3]),{9:30,11:9,22:h,24:a,26:u,28:d,29:14,30:15,31:16,32:17,33:y,34:f,35:k,36:j,37:W,40:T,43:Q,44:M,48:D,50:R,51:S,52:C},e(i,[2,5]),e(i,[2,6]),e(i,[2,16],{12:31,63:35,15:[1,32],17:[1,33],20:[1,34],65:nt,66:at,67:ot,68:ct,69:lt}),{23:[1,41]},{25:[1,42]},{27:[1,43]},e(i,[2,27]),e(i,[2,28]),e(i,[2,29]),e(i,[2,30]),e(i,[2,31]),e(B,[2,54]),e(B,[2,55]),e(B,[2,56]),e(B,[2,57]),e(B,[2,58]),e(i,[2,32]),e(i,[2,33]),e(i,[2,34]),e(i,[2,35]),{16:44,40:O,41:N},{16:47,40:O,41:N},{16:48,40:O,41:N},e(i,[2,4]),{11:49,40:T,48:D,50:R,51:S,52:C},{16:50,40:O,41:N},{18:51,19:[1,52],53:53,54:54,58:F},{11:56,40:T,48:D,50:R,51:S,52:C},{64:57,70:[1,58],71:[1,59]},e(Y,[2,72]),e(Y,[2,73]),e(Y,[2,74]),e(Y,[2,75]),e(Y,[2,76]),e(i,[2,24]),e(i,[2,25]),e(i,[2,26]),{13:P,38:60,41:z,42:A,45:62,46:63,48:G,49:K},e(X,[2,37]),e(X,[2,38]),{16:68,40:O,41:N,42:A},{13:P,38:69,41:z,42:A,45:62,46:63,48:G,49:K},{13:[1,70],15:[1,71]},e(i,[2,17],{63:35,12:72,17:[1,73],42:A,65:nt,66:at,67:ot,68:ct,69:lt}),{19:[1,74]},e(i,[2,14]),{18:75,19:[2,59],53:53,54:54,58:F},{55:76,58:[1,77]},{58:[2,65]},{21:[1,78]},{63:79,65:nt,66:at,67:ot,68:ct,69:lt},e(gt,[2,77]),e(gt,[2,78]),{6:bt,10:mt,39:80,42:kt,47:Et},{40:[1,85],41:[1,86]},e(Tt,[2,43],{46:87,13:P,41:z,48:G,49:K}),e(L,[2,45]),e(L,[2,50]),e(L,[2,51]),e(L,[2,52]),e(L,[2,53]),e(i,[2,41],{42:A}),{6:bt,10:mt,39:88,42:kt,47:Et},{14:89,40:H,50:q,72:J},{16:93,40:O,41:N},{11:94,40:T,48:D,50:R,51:S,52:C},{18:95,19:[1,96],53:53,54:54,58:F},e(i,[2,12]),{19:[2,60]},e(U,[2,61],{56:97,57:98,59:99,61:St,62:Ot}),e([19,58,61,62],[2,66]),e(i,[2,22],{15:[1,103],17:[1,102]}),e([40,48,50,51,52],[2,71]),e(i,[2,36]),{13:P,41:z,45:104,46:63,48:G,49:K},e(i,[2,47]),e(i,[2,48]),e(i,[2,49]),e(X,[2,39]),e(X,[2,40]),e(L,[2,46]),e(i,[2,42]),e(i,[2,8]),e(i,[2,79]),e(i,[2,80]),e(i,[2,81]),{13:[1,105],42:A},{13:[1,107],15:[1,106]},{19:[1,108]},e(i,[2,15]),e(U,[2,62],{57:109,60:[1,110],62:Ot}),e(U,[2,63]),e(ht,[2,67]),e(U,[2,70]),e(ht,[2,69]),{18:111,19:[1,112],53:53,54:54,58:F},{16:113,40:O,41:N},e(Tt,[2,44],{46:87,13:P,41:z,48:G,49:K}),{14:114,40:H,50:q,72:J},{16:115,40:O,41:N},{14:116,40:H,50:q,72:J},e(i,[2,13]),e(U,[2,64]),{59:117,61:St},{19:[1,118]},e(i,[2,20]),e(i,[2,23],{17:[1,119],42:A}),e(i,[2,11]),{13:[1,120],42:A},e(i,[2,10]),e(ht,[2,68]),e(i,[2,18]),{18:121,19:[1,122],53:53,54:54,58:F},{14:123,40:H,50:q,72:J},{19:[1,124]},e(i,[2,21]),e(i,[2,9]),e(i,[2,19])],defaultActions:{55:[2,65],75:[2,60]},parseError:l(function(n,o){if(o.recoverable)this.trace(n);else{var c=new Error(n);throw c.hash=o,c}},"parseError"),parse:l(function(n){var o=this,c=[0],r=[],p=[null],t=[],Z=this.table,s="",tt=0,Nt=0,Dt=2,At=1,Lt=t.slice.call(arguments,1),_=Object.create(this.lexer),x={yy:{}};for(var dt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,dt)&&(x.yy[dt]=this.yy[dt]);_.setInput(n,x.yy),x.yy.lexer=_,x.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var pt=_.yylloc;t.push(pt);var wt=_.options&&_.options.ranges;typeof x.yy.parseError=="function"?this.parseError=x.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Vt(b){c.length=c.length-2*b,p.length=p.length-b,t.length=t.length-b}l(Vt,"popStack");function It(){var b;return b=r.pop()||_.lex()||At,typeof b!="number"&&(b instanceof Array&&(r=b,b=r.pop()),b=o.symbols_[b]||b),b}l(It,"lex");for(var g,v,m,ft,w={},et,E,Rt,st;;){if(v=c[c.length-1],this.defaultActions[v]?m=this.defaultActions[v]:((g===null||typeof g>"u")&&(g=It()),m=Z[v]&&Z[v][g]),typeof m>"u"||!m.length||!m[0]){var yt="";st=[];for(et in Z[v])this.terminals_[et]&&et>Dt&&st.push("'"+this.terminals_[et]+"'");_.showPosition?yt="Parse error on line "+(tt+1)+`:
2
2
  `+_.showPosition()+`
3
3
  Expecting `+st.join(", ")+", got '"+(this.terminals_[g]||g)+"'":yt="Parse error on line "+(tt+1)+": Unexpected "+(g==At?"end of input":"'"+(this.terminals_[g]||g)+"'"),this.parseError(yt,{text:_.match,token:this.terminals_[g]||g,line:_.yylineno,loc:pt,expected:st})}if(m[0]instanceof Array&&m.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+g);switch(m[0]){case 1:c.push(g),p.push(_.yytext),t.push(_.yylloc),c.push(m[1]),g=null,Nt=_.yyleng,s=_.yytext,tt=_.yylineno,pt=_.yylloc;break;case 2:if(E=this.productions_[m[1]][1],w.$=p[p.length-E],w._$={first_line:t[t.length-(E||1)].first_line,last_line:t[t.length-1].last_line,first_column:t[t.length-(E||1)].first_column,last_column:t[t.length-1].last_column},wt&&(w._$.range=[t[t.length-(E||1)].range[0],t[t.length-1].range[1]]),ft=this.performAction.apply(w,[s,Nt,tt,x.yy,m[1],p,t].concat(Lt)),typeof ft<"u")return ft;E&&(c=c.slice(0,-1*E*2),p=p.slice(0,-1*E),t=t.slice(0,-1*E)),c.push(this.productions_[m[1]][0]),p.push(w.$),t.push(w._$),Rt=Z[c[c.length-2]][c[c.length-1]],c.push(Rt);break;case 3:return!0}}return!0},"parse")},vt=(function(){var I={EOF:1,parseError:l(function(o,c){if(this.yy.parser)this.yy.parser.parseError(o,c);else throw new Error(o)},"parseError"),setInput:l(function(n,o){return this.yy=o||this.yy||{},this._input=n,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},"setInput"),input:l(function(){var n=this._input[0];this.yytext+=n,this.yyleng++,this.offset++,this.match+=n,this.matched+=n;var o=n.match(/(?:\r\n?|\n).*/g);return o?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),n},"input"),unput:l(function(n){var o=n.length,c=n.split(/(?:\r\n?|\n)/g);this._input=n+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-o),this.offset-=o;var r=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),c.length-1&&(this.yylineno-=c.length-1);var p=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:c?(c.length===r.length?this.yylloc.first_column:0)+r[r.length-c.length].length-c[0].length:this.yylloc.first_column-o},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-o]),this.yyleng=this.yytext.length,this},"unput"),more:l(function(){return this._more=!0,this},"more"),reject:l(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},"reject"),less:l(function(n){this.unput(this.match.slice(n))},"less"),pastInput:l(function(){var n=this.matched.substr(0,this.matched.length-this.match.length);return(n.length>20?"...":"")+n.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:l(function(){var n=this.match;return n.length<20&&(n+=this._input.substr(0,20-n.length)),(n.substr(0,20)+(n.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:l(function(){var n=this.pastInput(),o=new Array(n.length+1).join("-");return n+this.upcomingInput()+`
@@ -1,4 +1,4 @@
1
- import{g as qe}from"./chunk-FMBD7UC4-Bt_riVlZ.js";import{_ as b,n as Oe,l as Q,c as g1,o as He,r as Xe,u as ie,b as Qe,s as Je,p as Ze,a as $e,g as et,q as tt,j as st,t as it,J as rt,v as at,x as te,y as nt,z as ut,A as ot,B as lt}from"./mermaid.core-Bh02RvfX.js";import{c as ct}from"./chunk-ND2GUHAM-CbyjNbXR.js";import{g as ht}from"./chunk-55IACEB6-IF2bk5IL.js";import{s as dt}from"./chunk-2J33WTMH-DQ-9Xccu.js";import{s as se}from"./vendor-reactflow-BlIeoTu4.js";import{c as pt}from"./channel-D-UHgx8G.js";import"./index-B_z7OKl4.js";import"./vendor-react-SZ_qB27O.js";import"./vendor-i18n-Duky4gdQ.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-xterm-BNq00GSj.js";import"./step-yuy0qJer.js";var ft="flowchart-",gt=class{constructor(){this.vertexCounter=0,this.config=g1(),this.diagramId="",this.vertices=new Map,this.edges=[],this.classes=new Map,this.subGraphs=[],this.subGraphLookup=new Map,this.tooltips=new Map,this.subCount=0,this.firstGraphFlag=!0,this.secCount=-1,this.posCrossRef=[],this.funs=[],this.setAccTitle=Qe,this.setAccDescription=Je,this.setDiagramTitle=Ze,this.getAccTitle=$e,this.getAccDescription=et,this.getDiagramTitle=tt,this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}static{b(this,"FlowDB")}sanitizeText(e){return st.sanitizeText(e,this.config)}sanitizeNodeLabelType(e){switch(e){case"markdown":case"string":case"text":return e;default:return"markdown"}}setDiagramId(e){this.diagramId=e}lookUpDomId(e){for(const i of this.vertices.values())if(i.id===e)return this.diagramId?`${this.diagramId}-${i.domId}`:i.domId;return this.diagramId?`${this.diagramId}-${e}`:e}addVertex(e,i,r,a,o,d,l={},f){if(!e||e.trim().length===0)return;let n;if(f!==void 0){let E;f.includes(`
1
+ import{g as qe}from"./chunk-FMBD7UC4-CRkrJ51d.js";import{_ as b,n as Oe,l as Q,c as g1,o as He,r as Xe,u as ie,b as Qe,s as Je,p as Ze,a as $e,g as et,q as tt,j as st,t as it,J as rt,v as at,x as te,y as nt,z as ut,A as ot,B as lt}from"./mermaid.core-B2zD934i.js";import{c as ct}from"./chunk-ND2GUHAM-BLQsKt7a.js";import{g as ht}from"./chunk-55IACEB6-DpO9nIb0.js";import{s as dt}from"./chunk-2J33WTMH-Bcai1sOm.js";import{s as se}from"./vendor-reactflow-BlIeoTu4.js";import{c as pt}from"./channel-CP2ySYs0.js";import"./index-I32FijPT.js";import"./vendor-react-SZ_qB27O.js";import"./vendor-i18n-Duky4gdQ.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-xterm-BNq00GSj.js";import"./step-yuy0qJer.js";var ft="flowchart-",gt=class{constructor(){this.vertexCounter=0,this.config=g1(),this.diagramId="",this.vertices=new Map,this.edges=[],this.classes=new Map,this.subGraphs=[],this.subGraphLookup=new Map,this.tooltips=new Map,this.subCount=0,this.firstGraphFlag=!0,this.secCount=-1,this.posCrossRef=[],this.funs=[],this.setAccTitle=Qe,this.setAccDescription=Je,this.setDiagramTitle=Ze,this.getAccTitle=$e,this.getAccDescription=et,this.getDiagramTitle=tt,this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}static{b(this,"FlowDB")}sanitizeText(e){return st.sanitizeText(e,this.config)}sanitizeNodeLabelType(e){switch(e){case"markdown":case"string":case"text":return e;default:return"markdown"}}setDiagramId(e){this.diagramId=e}lookUpDomId(e){for(const i of this.vertices.values())if(i.id===e)return this.diagramId?`${this.diagramId}-${i.domId}`:i.domId;return this.diagramId?`${this.diagramId}-${e}`:e}addVertex(e,i,r,a,o,d,l={},f){if(!e||e.trim().length===0)return;let n;if(f!==void 0){let E;f.includes(`
2
2
  `)?E=f+`
3
3
  `:E=`{
4
4
  `+f+`
@@ -1,4 +1,4 @@
1
- import{c as a}from"./index-B_z7OKl4.js";/**
1
+ import{c as a}from"./index-I32FijPT.js";/**
2
2
  * @license lucide-react v1.7.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.