dominds 1.25.2 → 1.25.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/cli/tui.js +2 -0
  2. package/dist/cli/webui.js +2 -0
  3. package/dist/cli.js +2 -0
  4. package/dist/dialog-display-state.js +6 -7
  5. package/dist/docs/dialog-system.md +15 -29
  6. package/dist/docs/dialog-system.zh.md +15 -29
  7. package/dist/evt-registry.js +2 -0
  8. package/dist/llm/kernel-driver/drive.js +137 -7
  9. package/dist/llm/kernel-driver/flow.js +46 -20
  10. package/dist/llm/kernel-driver/reply-guidance.js +5 -5
  11. package/dist/persistence-errors.d.ts +1 -1
  12. package/dist/persistence.d.ts +50 -1
  13. package/dist/persistence.js +549 -4
  14. package/dist/process-title.d.ts +2 -0
  15. package/dist/process-title.js +13 -0
  16. package/dist/runtime/driver-messages.d.ts +7 -1
  17. package/dist/runtime/driver-messages.js +33 -11
  18. package/dist/runtime/interjection-pause-stop.js +8 -7
  19. package/dist/server/api-routes.js +14 -0
  20. package/dist/server/dominds-self-update.d.ts +1 -0
  21. package/dist/server/dominds-self-update.js +17 -0
  22. package/dist/server/websocket-handler.js +73 -6
  23. package/dist/tools/cmd-runner-protocol.d.ts +1 -0
  24. package/dist/tools/cmd-runner-protocol.js +6 -0
  25. package/dist/tools/cmd-runner.js +1 -0
  26. package/dist/tools/os.d.ts +2 -4
  27. package/dist/tools/os.js +79 -4
  28. package/package.json +3 -3
  29. package/webapp/dist/assets/{_basePickBy-CbWZ8qnS.js → _basePickBy-fZ31r-iF.js} +3 -3
  30. package/webapp/dist/assets/_basePickBy-fZ31r-iF.js.map +1 -0
  31. package/webapp/dist/assets/{_baseUniq-IY-Vfzx1.js → _baseUniq-CI1keLoL.js} +2 -2
  32. package/webapp/dist/assets/_baseUniq-CI1keLoL.js.map +1 -0
  33. package/webapp/dist/assets/{arc--U2Vks6y.js → arc-1NeUqzoV.js} +2 -2
  34. package/webapp/dist/assets/arc-1NeUqzoV.js.map +1 -0
  35. package/webapp/dist/assets/{architectureDiagram-VXUJARFQ-DpryGqjy.js → architectureDiagram-2XIMDMQ5-C7SdzYIh.js} +26 -8
  36. package/webapp/dist/assets/architectureDiagram-2XIMDMQ5-C7SdzYIh.js.map +1 -0
  37. package/webapp/dist/assets/{blockDiagram-VD42YOAC-TTufCfiE.js → blockDiagram-WCTKOSBZ-Cmpu3kIy.js} +187 -170
  38. package/webapp/dist/assets/blockDiagram-WCTKOSBZ-Cmpu3kIy.js.map +1 -0
  39. package/webapp/dist/assets/{c4Diagram-YG6GDRKO-B4RPsw5H.js → c4Diagram-IC4MRINW-ChGTHIor.js} +4 -4
  40. package/webapp/dist/assets/c4Diagram-IC4MRINW-ChGTHIor.js.map +1 -0
  41. package/webapp/dist/assets/{channel-DAtGYJHZ.js → channel-ndS-XTQQ.js} +2 -2
  42. package/webapp/dist/assets/channel-ndS-XTQQ.js.map +1 -0
  43. package/webapp/dist/assets/{chunk-4BX2VUAB-JtO__vAF.js → chunk-4BX2VUAB-Cw5FtBd_.js} +2 -2
  44. package/webapp/dist/assets/chunk-4BX2VUAB-Cw5FtBd_.js.map +1 -0
  45. package/webapp/dist/assets/{chunk-55IACEB6-JMRC8yG1.js → chunk-55IACEB6-D3G71JdA.js} +2 -2
  46. package/webapp/dist/assets/chunk-55IACEB6-D3G71JdA.js.map +1 -0
  47. package/webapp/dist/assets/{chunk-FMBD7UC4-DFXKLjHC.js → chunk-FMBD7UC4-BcugPyy7.js} +2 -2
  48. package/webapp/dist/assets/chunk-FMBD7UC4-BcugPyy7.js.map +1 -0
  49. package/webapp/dist/assets/{chunk-TZMSLE5B-BaE4C244.js → chunk-JSJVCQXG-DvuxYuNq.js} +14 -6
  50. package/webapp/dist/assets/chunk-JSJVCQXG-DvuxYuNq.js.map +1 -0
  51. package/webapp/dist/assets/{chunk-QN33PNHL-BKzkeJ-b.js → chunk-KX2RTZJC-BQ42xd4s.js} +2 -2
  52. package/webapp/dist/assets/chunk-KX2RTZJC-BQ42xd4s.js.map +1 -0
  53. package/webapp/dist/assets/{chunk-DI55MBZ5-j9B4rifK.js → chunk-NQ4KR5QH-CGEMYTch.js} +9 -7
  54. package/webapp/dist/assets/chunk-NQ4KR5QH-CGEMYTch.js.map +1 -0
  55. package/webapp/dist/assets/{chunk-QZHKN3VN-DiZd3UNl.js → chunk-QZHKN3VN-CxNTVm5w.js} +2 -2
  56. package/webapp/dist/assets/chunk-QZHKN3VN-CxNTVm5w.js.map +1 -0
  57. package/webapp/dist/assets/{chunk-B4BG7PRW-BDIpf8Iz.js → chunk-WL4C6EOR-CIwdSg5q.js} +171 -121
  58. package/webapp/dist/assets/chunk-WL4C6EOR-CIwdSg5q.js.map +1 -0
  59. package/webapp/dist/assets/{classDiagram-2ON5EDUG-CNF8ZohD.js → classDiagram-VBA2DB6C-Dl05PJAP.js} +7 -6
  60. package/webapp/dist/assets/classDiagram-VBA2DB6C-Dl05PJAP.js.map +1 -0
  61. package/webapp/dist/assets/{classDiagram-v2-WZHVMYZB-CNF8ZohD.js → classDiagram-v2-RAHNMMFH-Dl05PJAP.js} +7 -6
  62. package/webapp/dist/assets/classDiagram-v2-RAHNMMFH-Dl05PJAP.js.map +1 -0
  63. package/webapp/dist/assets/{clone-Nq0Ko0Gv.js → clone-KCj1-QMr.js} +2 -2
  64. package/webapp/dist/assets/clone-KCj1-QMr.js.map +1 -0
  65. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-uHPLSeKv.js → cose-bilkent-S5V4N54A-BttciCz5.js} +2 -2
  66. package/webapp/dist/assets/cose-bilkent-S5V4N54A-BttciCz5.js.map +1 -0
  67. package/webapp/dist/assets/cytoscape.esm-Bm8DJGmZ.js.map +1 -1
  68. package/webapp/dist/assets/{dagre-6UL2VRFP-C1awWpU3.js → dagre-KLK3FWXG-Dm5yE9k2.js} +7 -7
  69. package/webapp/dist/assets/dagre-KLK3FWXG-Dm5yE9k2.js.map +1 -0
  70. package/webapp/dist/assets/defaultLocale-B2RvLBDe.js.map +1 -1
  71. package/webapp/dist/assets/{diagram-PSM6KHXK-Bf69p76M.js → diagram-E7M64L7V-C80ZsiBG.js} +10 -10
  72. package/webapp/dist/assets/diagram-E7M64L7V-C80ZsiBG.js.map +1 -0
  73. package/webapp/dist/assets/{diagram-QEK2KX5R-Bvlbx8Jp.js → diagram-IFDJBPK2-CqKidH4n.js} +9 -8
  74. package/webapp/dist/assets/diagram-IFDJBPK2-CqKidH4n.js.map +1 -0
  75. package/webapp/dist/assets/{diagram-S2PKOQOG-CGjGalBu.js → diagram-P4PSJMXO-EHVjfzUV.js} +8 -8
  76. package/webapp/dist/assets/diagram-P4PSJMXO-EHVjfzUV.js.map +1 -0
  77. package/webapp/dist/assets/{erDiagram-Q2GNP2WA-Ds3qhwkG.js → erDiagram-INFDFZHY-7MrtsOIt.js} +96 -75
  78. package/webapp/dist/assets/erDiagram-INFDFZHY-7MrtsOIt.js.map +1 -0
  79. package/webapp/dist/assets/{flowDiagram-NV44I4VS-B1wDG_l5.js → flowDiagram-PKNHOUZH-D6hXqCy7.js} +98 -81
  80. package/webapp/dist/assets/flowDiagram-PKNHOUZH-D6hXqCy7.js.map +1 -0
  81. package/webapp/dist/assets/{ganttDiagram-JELNMOA3-BwuYt2bO.js → ganttDiagram-A5KZAMGK-DLO0XCDk.js} +28 -3
  82. package/webapp/dist/assets/ganttDiagram-A5KZAMGK-DLO0XCDk.js.map +1 -0
  83. package/webapp/dist/assets/{gitGraphDiagram-V2S2FVAM-B2Tw773z.js → gitGraphDiagram-K3NZZRJ6-BmVD_nQP.js} +38 -46
  84. package/webapp/dist/assets/gitGraphDiagram-K3NZZRJ6-BmVD_nQP.js.map +1 -0
  85. package/webapp/dist/assets/graph-DQTj8O0Q.js +782 -0
  86. package/webapp/dist/assets/graph-DQTj8O0Q.js.map +1 -0
  87. package/webapp/dist/assets/{index-yycTJNYb.css → index-BQoNJEGT.css} +1 -1
  88. package/webapp/dist/assets/{index-arD81Nnh.js → index-BXjq-k48.js} +1512 -1097
  89. package/webapp/dist/assets/{index-arD81Nnh.js.map → index-BXjq-k48.js.map} +1 -1
  90. package/webapp/dist/assets/{infoDiagram-HS3SLOUP-C9_JKYhm.js → infoDiagram-LFFYTUFH-D2fqM9Fn.js} +7 -7
  91. package/webapp/dist/assets/infoDiagram-LFFYTUFH-D2fqM9Fn.js.map +1 -0
  92. package/webapp/dist/assets/init-ZxktEp_H.js.map +1 -1
  93. package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-kp7lB6-f.js +966 -0
  94. package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-kp7lB6-f.js.map +1 -0
  95. package/webapp/dist/assets/{journeyDiagram-XKPGCS4Q-BhZggYOL.js → journeyDiagram-4ABVD52K-DmbA52J-.js} +5 -5
  96. package/webapp/dist/assets/journeyDiagram-4ABVD52K-DmbA52J-.js.map +1 -0
  97. package/webapp/dist/assets/{kanban-definition-3W4ZIXB7-B-R2Xm4Y.js → kanban-definition-K7BYSVSG-DRUw-P-d.js} +5 -3
  98. package/webapp/dist/assets/kanban-definition-K7BYSVSG-DRUw-P-d.js.map +1 -0
  99. package/webapp/dist/assets/{layout-BzMatxDa.js → layout-BUoHHXzn.js} +5 -5
  100. package/webapp/dist/assets/layout-BUoHHXzn.js.map +1 -0
  101. package/webapp/dist/assets/{linear-BuuJkw_U.js → linear-xVSAq8rI.js} +2 -2
  102. package/webapp/dist/assets/linear-xVSAq8rI.js.map +1 -0
  103. package/webapp/dist/assets/{mindmap-definition-VGOIOE7T-BR7oDKBR.js → mindmap-definition-YRQLILUH-BcajbGmW.js} +7 -5
  104. package/webapp/dist/assets/mindmap-definition-YRQLILUH-BcajbGmW.js.map +1 -0
  105. package/webapp/dist/assets/ordinal-CxptdPJm.js.map +1 -1
  106. package/webapp/dist/assets/{pieDiagram-ADFJNKIX--QWeT2vZ.js → pieDiagram-SKSYHLDU-Bu8kmCW6.js} +8 -8
  107. package/webapp/dist/assets/pieDiagram-SKSYHLDU-Bu8kmCW6.js.map +1 -0
  108. package/webapp/dist/assets/{quadrantDiagram-AYHSOK5B-BpqtmN3r.js → quadrantDiagram-337W2JSQ-DIBSNUGa.js} +3 -3
  109. package/webapp/dist/assets/quadrantDiagram-337W2JSQ-DIBSNUGa.js.map +1 -0
  110. package/webapp/dist/assets/{requirementDiagram-UZGBJVZJ-CIXjIi4F.js → requirementDiagram-Z7DCOOCP-CkrDkbBt.js} +16 -6
  111. package/webapp/dist/assets/requirementDiagram-Z7DCOOCP-CkrDkbBt.js.map +1 -0
  112. package/webapp/dist/assets/{sankeyDiagram-TZEHDZUN-DJIt7SRz.js → sankeyDiagram-WA2Y5GQK-BZ-1R8pc.js} +2 -2
  113. package/webapp/dist/assets/sankeyDiagram-WA2Y5GQK-BZ-1R8pc.js.map +1 -0
  114. package/webapp/dist/assets/{sequenceDiagram-WL72ISMW-BpDK1ROT.js → sequenceDiagram-2WXFIKYE-DYoNARdO.js} +601 -201
  115. package/webapp/dist/assets/sequenceDiagram-2WXFIKYE-DYoNARdO.js.map +1 -0
  116. package/webapp/dist/assets/{stateDiagram-FKZM4ZOC-BoKGfmHf.js → stateDiagram-RAJIS63D-D9v19nvh.js} +9 -9
  117. package/webapp/dist/assets/stateDiagram-RAJIS63D-D9v19nvh.js.map +1 -0
  118. package/webapp/dist/assets/{stateDiagram-v2-4FDKWEC3--haXC2JK.js → stateDiagram-v2-FVOUBMTO-BYw5ZwtH.js} +5 -5
  119. package/webapp/dist/assets/stateDiagram-v2-FVOUBMTO-BYw5ZwtH.js.map +1 -0
  120. package/webapp/dist/assets/{timeline-definition-IT6M3QCI-BmSg3Hjf.js → timeline-definition-YZTLITO2-BT10dRIJ.js} +3 -3
  121. package/webapp/dist/assets/timeline-definition-YZTLITO2-BT10dRIJ.js.map +1 -0
  122. package/webapp/dist/assets/{treemap-GDKQZRPO-D9OuyDVA.js → treemap-KZPCXAKY-yPoPC5hc.js} +37 -24
  123. package/webapp/dist/assets/treemap-KZPCXAKY-yPoPC5hc.js.map +1 -0
  124. package/webapp/dist/assets/vennDiagram-LZ73GAT5-tryg3OaY.js +2487 -0
  125. package/webapp/dist/assets/vennDiagram-LZ73GAT5-tryg3OaY.js.map +1 -0
  126. package/webapp/dist/assets/{xychartDiagram-PRI3JC2R-CVqSvO_S.js → xychartDiagram-JWTSCODW-BWLUzo9S.js} +4 -4
  127. package/webapp/dist/assets/xychartDiagram-JWTSCODW-BWLUzo9S.js.map +1 -0
  128. package/webapp/dist/index.html +2 -2
  129. package/webapp/dist/assets/_basePickBy-CbWZ8qnS.js.map +0 -1
  130. package/webapp/dist/assets/_baseUniq-IY-Vfzx1.js.map +0 -1
  131. package/webapp/dist/assets/arc--U2Vks6y.js.map +0 -1
  132. package/webapp/dist/assets/architectureDiagram-VXUJARFQ-DpryGqjy.js.map +0 -1
  133. package/webapp/dist/assets/blockDiagram-VD42YOAC-TTufCfiE.js.map +0 -1
  134. package/webapp/dist/assets/c4Diagram-YG6GDRKO-B4RPsw5H.js.map +0 -1
  135. package/webapp/dist/assets/channel-DAtGYJHZ.js.map +0 -1
  136. package/webapp/dist/assets/chunk-4BX2VUAB-JtO__vAF.js.map +0 -1
  137. package/webapp/dist/assets/chunk-55IACEB6-JMRC8yG1.js.map +0 -1
  138. package/webapp/dist/assets/chunk-B4BG7PRW-BDIpf8Iz.js.map +0 -1
  139. package/webapp/dist/assets/chunk-DI55MBZ5-j9B4rifK.js.map +0 -1
  140. package/webapp/dist/assets/chunk-FMBD7UC4-DFXKLjHC.js.map +0 -1
  141. package/webapp/dist/assets/chunk-QN33PNHL-BKzkeJ-b.js.map +0 -1
  142. package/webapp/dist/assets/chunk-QZHKN3VN-DiZd3UNl.js.map +0 -1
  143. package/webapp/dist/assets/chunk-TZMSLE5B-BaE4C244.js.map +0 -1
  144. package/webapp/dist/assets/classDiagram-2ON5EDUG-CNF8ZohD.js.map +0 -1
  145. package/webapp/dist/assets/classDiagram-v2-WZHVMYZB-CNF8ZohD.js.map +0 -1
  146. package/webapp/dist/assets/clone-Nq0Ko0Gv.js.map +0 -1
  147. package/webapp/dist/assets/cose-bilkent-S5V4N54A-uHPLSeKv.js.map +0 -1
  148. package/webapp/dist/assets/dagre-6UL2VRFP-C1awWpU3.js.map +0 -1
  149. package/webapp/dist/assets/diagram-PSM6KHXK-Bf69p76M.js.map +0 -1
  150. package/webapp/dist/assets/diagram-QEK2KX5R-Bvlbx8Jp.js.map +0 -1
  151. package/webapp/dist/assets/diagram-S2PKOQOG-CGjGalBu.js.map +0 -1
  152. package/webapp/dist/assets/erDiagram-Q2GNP2WA-Ds3qhwkG.js.map +0 -1
  153. package/webapp/dist/assets/flowDiagram-NV44I4VS-B1wDG_l5.js.map +0 -1
  154. package/webapp/dist/assets/ganttDiagram-JELNMOA3-BwuYt2bO.js.map +0 -1
  155. package/webapp/dist/assets/gitGraphDiagram-V2S2FVAM-B2Tw773z.js.map +0 -1
  156. package/webapp/dist/assets/graph-CS_H7jBi.js +0 -425
  157. package/webapp/dist/assets/graph-CS_H7jBi.js.map +0 -1
  158. package/webapp/dist/assets/infoDiagram-HS3SLOUP-C9_JKYhm.js.map +0 -1
  159. package/webapp/dist/assets/journeyDiagram-XKPGCS4Q-BhZggYOL.js.map +0 -1
  160. package/webapp/dist/assets/kanban-definition-3W4ZIXB7-B-R2Xm4Y.js.map +0 -1
  161. package/webapp/dist/assets/layout-BzMatxDa.js.map +0 -1
  162. package/webapp/dist/assets/linear-BuuJkw_U.js.map +0 -1
  163. package/webapp/dist/assets/mindmap-definition-VGOIOE7T-BR7oDKBR.js.map +0 -1
  164. package/webapp/dist/assets/pieDiagram-ADFJNKIX--QWeT2vZ.js.map +0 -1
  165. package/webapp/dist/assets/quadrantDiagram-AYHSOK5B-BpqtmN3r.js.map +0 -1
  166. package/webapp/dist/assets/requirementDiagram-UZGBJVZJ-CIXjIi4F.js.map +0 -1
  167. package/webapp/dist/assets/sankeyDiagram-TZEHDZUN-DJIt7SRz.js.map +0 -1
  168. package/webapp/dist/assets/sequenceDiagram-WL72ISMW-BpDK1ROT.js.map +0 -1
  169. package/webapp/dist/assets/stateDiagram-FKZM4ZOC-BoKGfmHf.js.map +0 -1
  170. package/webapp/dist/assets/stateDiagram-v2-4FDKWEC3--haXC2JK.js.map +0 -1
  171. package/webapp/dist/assets/timeline-definition-IT6M3QCI-BmSg3Hjf.js.map +0 -1
  172. package/webapp/dist/assets/treemap-GDKQZRPO-D9OuyDVA.js.map +0 -1
  173. package/webapp/dist/assets/xychartDiagram-PRI3JC2R-CVqSvO_S.js.map +0 -1
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-6UL2VRFP-C1awWpU3.js","assets/graph-CS_H7jBi.js","assets/_baseUniq-IY-Vfzx1.js","assets/layout-BzMatxDa.js","assets/_basePickBy-CbWZ8qnS.js","assets/clone-Nq0Ko0Gv.js","assets/cose-bilkent-S5V4N54A-uHPLSeKv.js","assets/cytoscape.esm-Bm8DJGmZ.js","assets/c4Diagram-YG6GDRKO-B4RPsw5H.js","assets/chunk-TZMSLE5B-BaE4C244.js","assets/flowDiagram-NV44I4VS-B1wDG_l5.js","assets/chunk-FMBD7UC4-DFXKLjHC.js","assets/chunk-55IACEB6-JMRC8yG1.js","assets/chunk-QN33PNHL-BKzkeJ-b.js","assets/channel-DAtGYJHZ.js","assets/erDiagram-Q2GNP2WA-Ds3qhwkG.js","assets/gitGraphDiagram-V2S2FVAM-B2Tw773z.js","assets/chunk-4BX2VUAB-JtO__vAF.js","assets/chunk-QZHKN3VN-DiZd3UNl.js","assets/treemap-GDKQZRPO-D9OuyDVA.js","assets/ganttDiagram-JELNMOA3-BwuYt2bO.js","assets/linear-BuuJkw_U.js","assets/init-ZxktEp_H.js","assets/defaultLocale-B2RvLBDe.js","assets/infoDiagram-HS3SLOUP-C9_JKYhm.js","assets/pieDiagram-ADFJNKIX--QWeT2vZ.js","assets/arc--U2Vks6y.js","assets/ordinal-CxptdPJm.js","assets/quadrantDiagram-AYHSOK5B-BpqtmN3r.js","assets/xychartDiagram-PRI3JC2R-CVqSvO_S.js","assets/requirementDiagram-UZGBJVZJ-CIXjIi4F.js","assets/sequenceDiagram-WL72ISMW-BpDK1ROT.js","assets/classDiagram-2ON5EDUG-CNF8ZohD.js","assets/chunk-B4BG7PRW-BDIpf8Iz.js","assets/classDiagram-v2-WZHVMYZB-CNF8ZohD.js","assets/stateDiagram-FKZM4ZOC-BoKGfmHf.js","assets/chunk-DI55MBZ5-j9B4rifK.js","assets/stateDiagram-v2-4FDKWEC3--haXC2JK.js","assets/journeyDiagram-XKPGCS4Q-BhZggYOL.js","assets/timeline-definition-IT6M3QCI-BmSg3Hjf.js","assets/mindmap-definition-VGOIOE7T-BR7oDKBR.js","assets/kanban-definition-3W4ZIXB7-B-R2Xm4Y.js","assets/sankeyDiagram-TZEHDZUN-DJIt7SRz.js","assets/diagram-S2PKOQOG-CGjGalBu.js","assets/diagram-QEK2KX5R-Bvlbx8Jp.js","assets/blockDiagram-VD42YOAC-TTufCfiE.js","assets/architectureDiagram-VXUJARFQ-DpryGqjy.js","assets/diagram-PSM6KHXK-Bf69p76M.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-KLK3FWXG-Dm5yE9k2.js","assets/graph-DQTj8O0Q.js","assets/_baseUniq-CI1keLoL.js","assets/layout-BUoHHXzn.js","assets/_basePickBy-fZ31r-iF.js","assets/clone-KCj1-QMr.js","assets/cose-bilkent-S5V4N54A-BttciCz5.js","assets/cytoscape.esm-Bm8DJGmZ.js","assets/c4Diagram-IC4MRINW-ChGTHIor.js","assets/chunk-JSJVCQXG-DvuxYuNq.js","assets/flowDiagram-PKNHOUZH-D6hXqCy7.js","assets/chunk-FMBD7UC4-BcugPyy7.js","assets/chunk-55IACEB6-D3G71JdA.js","assets/chunk-KX2RTZJC-BQ42xd4s.js","assets/channel-ndS-XTQQ.js","assets/erDiagram-INFDFZHY-7MrtsOIt.js","assets/gitGraphDiagram-K3NZZRJ6-BmVD_nQP.js","assets/chunk-4BX2VUAB-Cw5FtBd_.js","assets/chunk-QZHKN3VN-CxNTVm5w.js","assets/treemap-KZPCXAKY-yPoPC5hc.js","assets/ganttDiagram-A5KZAMGK-DLO0XCDk.js","assets/linear-xVSAq8rI.js","assets/init-ZxktEp_H.js","assets/defaultLocale-B2RvLBDe.js","assets/infoDiagram-LFFYTUFH-D2fqM9Fn.js","assets/pieDiagram-SKSYHLDU-Bu8kmCW6.js","assets/arc-1NeUqzoV.js","assets/ordinal-CxptdPJm.js","assets/quadrantDiagram-337W2JSQ-DIBSNUGa.js","assets/xychartDiagram-JWTSCODW-BWLUzo9S.js","assets/requirementDiagram-Z7DCOOCP-CkrDkbBt.js","assets/sequenceDiagram-2WXFIKYE-DYoNARdO.js","assets/classDiagram-VBA2DB6C-Dl05PJAP.js","assets/chunk-WL4C6EOR-CIwdSg5q.js","assets/classDiagram-v2-RAHNMMFH-Dl05PJAP.js","assets/stateDiagram-RAJIS63D-D9v19nvh.js","assets/chunk-NQ4KR5QH-CGEMYTch.js","assets/stateDiagram-v2-FVOUBMTO-BYw5ZwtH.js","assets/journeyDiagram-4ABVD52K-DmbA52J-.js","assets/timeline-definition-YZTLITO2-BT10dRIJ.js","assets/mindmap-definition-YRQLILUH-BcajbGmW.js","assets/kanban-definition-K7BYSVSG-DRUw-P-d.js","assets/sankeyDiagram-WA2Y5GQK-BZ-1R8pc.js","assets/diagram-P4PSJMXO-EHVjfzUV.js","assets/diagram-IFDJBPK2-CqKidH4n.js","assets/blockDiagram-WCTKOSBZ-Cmpu3kIy.js","assets/architectureDiagram-2XIMDMQ5-C7SdzYIh.js","assets/diagram-E7M64L7V-C80ZsiBG.js"])))=>i.map(i=>d[i]);
2
2
  var __defProp = Object.defineProperty;
3
3
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
@@ -270,6 +270,7 @@ function getUiStrings(language2) {
270
270
  backendWorkspaceTitle: "后端运行时工作区",
271
271
  backendWorkspaceLoading: "加载中…",
272
272
  domindsVersionTitle: "Dominds 版本",
273
+ domindsVersionCheckTitle: "Dominds 版本,双击立即检查更新",
273
274
  domindsVersionUpdateLabel: "更新",
274
275
  domindsVersionRestartLabel: "重启",
275
276
  domindsVersionInstallingLabel: "安装中",
@@ -283,6 +284,15 @@ function getUiStrings(language2) {
283
284
  domindsVersionRestartScheduled: "Dominds 后台正在重启…",
284
285
  domindsVersionRestartInProgress: "后端正在重启,若页面没有自动刷新,可手动刷新看看。",
285
286
  domindsVersionActionFailedPrefix: "Dominds 更新失败:",
287
+ domindsVersionCheckUpdateAvailable: "检查完成:发现新版本 v<latest>,点击版本号可安装。",
288
+ domindsVersionCheckRestartAvailable: "检查完成:新版本 v<latest> 已就绪,点击版本号可重启。",
289
+ domindsVersionCheckUpToDate: "检查完成:当前已是最新版本 v<current>。",
290
+ domindsVersionCheckFailedPrefix: "Dominds 版本检查失败:",
291
+ domindsVersionTooltipCurrent: "当前版本",
292
+ domindsVersionTooltipLatest: "最新版本",
293
+ domindsVersionTooltipLastChecked: "最近检查",
294
+ domindsVersionTooltipNeverChecked: "尚未检查",
295
+ domindsVersionTooltipStatus: "状态",
286
296
  loading: "加载中…",
287
297
  uiLanguageSelectTitle: "界面语言(也用于提示 agent 用该语言回复)",
288
298
  themeToggleTitle: "切换主题",
@@ -388,8 +398,8 @@ function getUiStrings(language2) {
388
398
  declareDeathConfirm: "宣布此支线对话“卡死”?此操作不可逆转;诉请者将收到系统反馈并不再等待该支线对话。后续仍可重用相同 slug 发起全新支线,但此前上下文不再保留,新的诉请正文需提供最新完整上下文。",
389
399
  declareDeathConfirmSessionless: "宣布此一次性支线对话“卡死”?此操作不可逆转;诉请者将收到系统反馈并不再等待该支线对话。后续若仍需继续,请重新发起新的支线对话;由于不会续接此前上下文,新的诉请正文需提供最新完整上下文。",
390
400
  declareDeathConfirmFbr: "宣布此扪心自问(FBR)支线对话“卡死”?此操作不可逆转;诉请者将收到系统反馈并不再等待该支线对话。后续若仍需继续,请重新发起新的扪心自问(FBR)支线对话;由于不会续接此前上下文,新的诉请正文需提供最新完整上下文。",
391
- q4hNoPending: "暂无待处理问题",
392
- q4hPendingQuestions: "待处理问题",
401
+ q4hNoPending: "暂无待人处理项",
402
+ q4hPendingQuestions: "待人处理",
393
403
  q4hInputPlaceholder: "输入你的回答…",
394
404
  q4hEnterToSendTitle: "按 Enter 发送\n- Shift+Enter 换行\n- Cmd/Ctrl+Enter 发送",
395
405
  q4hCtrlEnterToSendTitle: "按 Cmd/Ctrl+Enter 发送\n- Enter 换行\n- Shift+Enter 换行",
@@ -398,6 +408,7 @@ function getUiStrings(language2) {
398
408
  q4hEnterToStopTitle: "按 Enter 停止",
399
409
  q4hCtrlEnterToStopTitle: "按 Cmd/Ctrl+Enter 停止",
400
410
  q4hGoToCallSiteTitle: "定位到提问点",
411
+ a2hGoToAnswerTitle: "定位到答复",
401
412
  q4hAnswerCallSitesLabel: "本次回答对应提问点:",
402
413
  q4hOpenInNewTabTitle: "新标签打开",
403
414
  q4hCopyLinkTitle: "复制链接",
@@ -649,6 +660,7 @@ function getUiStrings(language2) {
649
660
  backendWorkspaceTitle: "Backend Runtime Workspace",
650
661
  backendWorkspaceLoading: "Loading...",
651
662
  domindsVersionTitle: "Dominds version",
663
+ domindsVersionCheckTitle: "Dominds version. Double-click to check for updates now.",
652
664
  domindsVersionUpdateLabel: "Update",
653
665
  domindsVersionRestartLabel: "Restart",
654
666
  domindsVersionInstallingLabel: "Installing",
@@ -662,6 +674,15 @@ function getUiStrings(language2) {
662
674
  domindsVersionRestartScheduled: "Dominds backend is restarting…",
663
675
  domindsVersionRestartInProgress: "Backend is restarting. If the page does not refresh automatically, try a manual refresh.",
664
676
  domindsVersionActionFailedPrefix: "Dominds update failed: ",
677
+ domindsVersionCheckUpdateAvailable: "Check complete: v<latest> is available. Click the version to install.",
678
+ domindsVersionCheckRestartAvailable: "Check complete: v<latest> is ready. Click the version to restart.",
679
+ domindsVersionCheckUpToDate: "Check complete: v<current> is already the latest.",
680
+ domindsVersionCheckFailedPrefix: "Dominds version check failed: ",
681
+ domindsVersionTooltipCurrent: "Current version",
682
+ domindsVersionTooltipLatest: "Latest version",
683
+ domindsVersionTooltipLastChecked: "Last checked",
684
+ domindsVersionTooltipNeverChecked: "Not checked yet",
685
+ domindsVersionTooltipStatus: "Status",
665
686
  loading: "Loading…",
666
687
  uiLanguageSelectTitle: "UI language (also used to prompt agent replies)",
667
688
  themeToggleTitle: "Switch theme",
@@ -767,8 +788,8 @@ function getUiStrings(language2) {
767
788
  declareDeathConfirm: "Declare this Side Dialog as “dead”? This is irreversible; the tellasker will receive a system notice and stop waiting for it. You may still reuse the same slug to start a new Side Dialog, but prior context will be gone, so include the latest full context in the new tellask body.",
768
789
  declareDeathConfirmSessionless: "Declare this one-shot Side Dialog as “dead”? This is irreversible; the tellasker will receive a system notice and stop waiting for it. If the work is still needed later, start a new Side Dialog. Prior context will not carry over, so include the latest full context in the new tellask body.",
769
790
  declareDeathConfirmFbr: "Declare this FBR Side Dialog as “dead”? This is irreversible; the tellasker will receive a system notice and stop waiting for it. If the work is still needed later, start a new FBR Side Dialog. Prior context will not carry over, so include the latest full context in the new tellask body.",
770
- q4hNoPending: "No pending questions",
771
- q4hPendingQuestions: "Pending Questions",
791
+ q4hNoPending: "No items need attention",
792
+ q4hPendingQuestions: "Human Attention",
772
793
  q4hInputPlaceholder: "Type your answer...",
773
794
  q4hEnterToSendTitle: "Press Enter to send\n- Shift+Enter newline\n- Cmd/Ctrl+Enter send",
774
795
  q4hCtrlEnterToSendTitle: "Press Cmd/Ctrl+Enter to send\n- Enter newline\n- Shift+Enter newline",
@@ -777,6 +798,7 @@ function getUiStrings(language2) {
777
798
  q4hEnterToStopTitle: "Press Enter to stop",
778
799
  q4hCtrlEnterToStopTitle: "Press Cmd/Ctrl+Enter to stop",
779
800
  q4hGoToCallSiteTitle: "Go to call site",
801
+ a2hGoToAnswerTitle: "Go to answer",
780
802
  q4hAnswerCallSitesLabel: "Answer applies to call sites:",
781
803
  q4hOpenInNewTabTitle: "Open in new tab",
782
804
  q4hCopyLinkTitle: "Copy link",
@@ -1421,6 +1443,12 @@ class ApiClient {
1421
1443
  body: { action }
1422
1444
  });
1423
1445
  }
1446
+ async checkDomindsSelfUpdate() {
1447
+ return this.request("/api/dominds/self-update/check", {
1448
+ method: "POST",
1449
+ body: {}
1450
+ });
1451
+ }
1424
1452
  /**
1425
1453
  * Get server information
1426
1454
  */
@@ -2166,6 +2194,14 @@ function requireDriveIntent() {
2166
2194
  Object.defineProperty(driveIntent, "__esModule", { value: true });
2167
2195
  return driveIntent;
2168
2196
  }
2197
+ var humanAttention = {};
2198
+ var hasRequiredHumanAttention;
2199
+ function requireHumanAttention() {
2200
+ if (hasRequiredHumanAttention) return humanAttention;
2201
+ hasRequiredHumanAttention = 1;
2202
+ Object.defineProperty(humanAttention, "__esModule", { value: true });
2203
+ return humanAttention;
2204
+ }
2169
2205
  var i18n = {};
2170
2206
  var hasRequiredI18n;
2171
2207
  function requireI18n() {
@@ -2357,6 +2393,7 @@ function requireTypes() {
2357
2393
  __exportStar(requireDialog(), exports$1);
2358
2394
  __exportStar(requireDisplayState(), exports$1);
2359
2395
  __exportStar(requireDriveIntent(), exports$1);
2396
+ __exportStar(requireHumanAttention(), exports$1);
2360
2397
  __exportStar(requireI18n(), exports$1);
2361
2398
  __exportStar(requireLanguage(), exports$1);
2362
2399
  __exportStar(requirePriming(), exports$1);
@@ -5661,7 +5698,7 @@ const _createHooksMap = function _createHooksMap2() {
5661
5698
  function createDOMPurify() {
5662
5699
  let window2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal();
5663
5700
  const DOMPurify = (root2) => createDOMPurify(root2);
5664
- DOMPurify.version = "3.3.2";
5701
+ DOMPurify.version = "3.3.3";
5665
5702
  DOMPurify.removed = [];
5666
5703
  if (!window2 || !window2.document || window2.document.nodeType !== NODE_TYPE.document || !window2.Element) {
5667
5704
  DOMPurify.isSupported = false;
@@ -11597,9 +11634,9 @@ MarkdownIt.prototype.disable = function(list2, ignoreInvalid) {
11597
11634
  }
11598
11635
  return this;
11599
11636
  };
11600
- MarkdownIt.prototype.use = function(plugin22) {
11637
+ MarkdownIt.prototype.use = function(plugin23) {
11601
11638
  const args = [this].concat(Array.prototype.slice.call(arguments, 1));
11602
- plugin22.apply(plugin22, args);
11639
+ plugin23.apply(plugin23, args);
11603
11640
  return this;
11604
11641
  };
11605
11642
  MarkdownIt.prototype.parse = function(src, env) {
@@ -13075,37 +13112,37 @@ function requireCore() {
13075
13112
  const lang = getLanguage(name);
13076
13113
  return lang && !lang.disableAutodetect;
13077
13114
  }
13078
- function upgradePluginAPI(plugin22) {
13079
- if (plugin22["before:highlightBlock"] && !plugin22["before:highlightElement"]) {
13080
- plugin22["before:highlightElement"] = (data) => {
13081
- plugin22["before:highlightBlock"](
13115
+ function upgradePluginAPI(plugin23) {
13116
+ if (plugin23["before:highlightBlock"] && !plugin23["before:highlightElement"]) {
13117
+ plugin23["before:highlightElement"] = (data) => {
13118
+ plugin23["before:highlightBlock"](
13082
13119
  Object.assign({ block: data.el }, data)
13083
13120
  );
13084
13121
  };
13085
13122
  }
13086
- if (plugin22["after:highlightBlock"] && !plugin22["after:highlightElement"]) {
13087
- plugin22["after:highlightElement"] = (data) => {
13088
- plugin22["after:highlightBlock"](
13123
+ if (plugin23["after:highlightBlock"] && !plugin23["after:highlightElement"]) {
13124
+ plugin23["after:highlightElement"] = (data) => {
13125
+ plugin23["after:highlightBlock"](
13089
13126
  Object.assign({ block: data.el }, data)
13090
13127
  );
13091
13128
  };
13092
13129
  }
13093
13130
  }
13094
- function addPlugin(plugin22) {
13095
- upgradePluginAPI(plugin22);
13096
- plugins.push(plugin22);
13131
+ function addPlugin(plugin23) {
13132
+ upgradePluginAPI(plugin23);
13133
+ plugins.push(plugin23);
13097
13134
  }
13098
- function removePlugin(plugin22) {
13099
- const index = plugins.indexOf(plugin22);
13135
+ function removePlugin(plugin23) {
13136
+ const index = plugins.indexOf(plugin23);
13100
13137
  if (index !== -1) {
13101
13138
  plugins.splice(index, 1);
13102
13139
  }
13103
13140
  }
13104
13141
  function fire(event, args) {
13105
13142
  const cb = event;
13106
- plugins.forEach(function(plugin22) {
13107
- if (plugin22[cb]) {
13108
- plugin22[cb](args);
13143
+ plugins.forEach(function(plugin23) {
13144
+ if (plugin23[cb]) {
13145
+ plugin23[cb](args);
13109
13146
  }
13110
13147
  });
13111
13148
  }
@@ -64733,8 +64770,8 @@ class Settings {
64733
64770
  }
64734
64771
  }
64735
64772
  class Style {
64736
- constructor(id28, size, cramped) {
64737
- this.id = id28;
64773
+ constructor(id30, size, cramped) {
64774
+ this.id = id30;
64738
64775
  this.size = size;
64739
64776
  this.cramped = cramped;
64740
64777
  }
@@ -65062,6 +65099,44 @@ var tallDelim = function tallDelim2(label, midHeight) {
65062
65099
  throw new Error("Unknown stretchy delimiter.");
65063
65100
  }
65064
65101
  };
65102
+ class DocumentFragment {
65103
+ // Never used; needed for satisfying interface.
65104
+ constructor(children2) {
65105
+ this.children = children2;
65106
+ this.classes = [];
65107
+ this.height = 0;
65108
+ this.depth = 0;
65109
+ this.maxFontSize = 0;
65110
+ this.style = {};
65111
+ }
65112
+ hasClass(className) {
65113
+ return this.classes.includes(className);
65114
+ }
65115
+ /** Convert the fragment into a node. */
65116
+ toNode() {
65117
+ var frag = document.createDocumentFragment();
65118
+ for (var i2 = 0; i2 < this.children.length; i2++) {
65119
+ frag.appendChild(this.children[i2].toNode());
65120
+ }
65121
+ return frag;
65122
+ }
65123
+ /** Convert the fragment into HTML markup. */
65124
+ toMarkup() {
65125
+ var markup = "";
65126
+ for (var i2 = 0; i2 < this.children.length; i2++) {
65127
+ markup += this.children[i2].toMarkup();
65128
+ }
65129
+ return markup;
65130
+ }
65131
+ /**
65132
+ * Converts the math node into a string, similar to innerText. Applies to
65133
+ * MathDomNode's only.
65134
+ */
65135
+ toText() {
65136
+ var toText = (child) => child.toText();
65137
+ return this.children.map(toText).join("");
65138
+ }
65139
+ }
65065
65140
  var ptPerUnit = {
65066
65141
  // https://en.wikibooks.org/wiki/LaTeX/Lengths and
65067
65142
  // https://tex.stackexchange.com/a/8263
@@ -65445,6 +65520,7 @@ function assertSpan(group) {
65445
65520
  throw new Error("Expected span<HtmlDomNode> but got " + String(group) + ".");
65446
65521
  }
65447
65522
  }
65523
+ var hasHtmlDomChildren = (node2) => node2 instanceof Span || node2 instanceof Anchor || node2 instanceof DocumentFragment;
65448
65524
  var fontMetricsData = {
65449
65525
  "AMS-Regular": {
65450
65526
  "32": [0, 0, 0, 0, 0.25],
@@ -68552,44 +68628,6 @@ var wideCharacterFont = (wideChar2, mode) => {
68552
68628
  throw new ParseError("Unsupported character: " + wideChar2);
68553
68629
  }
68554
68630
  };
68555
- class DocumentFragment {
68556
- // Never used; needed for satisfying interface.
68557
- constructor(children2) {
68558
- this.children = children2;
68559
- this.classes = [];
68560
- this.height = 0;
68561
- this.depth = 0;
68562
- this.maxFontSize = 0;
68563
- this.style = {};
68564
- }
68565
- hasClass(className) {
68566
- return this.classes.includes(className);
68567
- }
68568
- /** Convert the fragment into a node. */
68569
- toNode() {
68570
- var frag = document.createDocumentFragment();
68571
- for (var i2 = 0; i2 < this.children.length; i2++) {
68572
- frag.appendChild(this.children[i2].toNode());
68573
- }
68574
- return frag;
68575
- }
68576
- /** Convert the fragment into HTML markup. */
68577
- toMarkup() {
68578
- var markup = "";
68579
- for (var i2 = 0; i2 < this.children.length; i2++) {
68580
- markup += this.children[i2].toMarkup();
68581
- }
68582
- return markup;
68583
- }
68584
- /**
68585
- * Converts the math node into a string, similar to innerText. Applies to
68586
- * MathDomNode's only.
68587
- */
68588
- toText() {
68589
- var toText = (child) => child.toText();
68590
- return this.children.map(toText).join("");
68591
- }
68592
- }
68593
68631
  var lookupSymbol = function lookupSymbol2(value, fontName, mode) {
68594
68632
  if (symbols[mode][value]) {
68595
68633
  var replacement = symbols[mode][value].replace;
@@ -70290,6 +70328,14 @@ function checkSymbolNodeType(node2) {
70290
70328
  }
70291
70329
  return null;
70292
70330
  }
70331
+ var getBaseSymbol = (group) => {
70332
+ if (group instanceof SymbolNode) {
70333
+ return group;
70334
+ }
70335
+ if (hasHtmlDomChildren(group) && group.children.length === 1) {
70336
+ return getBaseSymbol(group.children[0]);
70337
+ }
70338
+ };
70293
70339
  var htmlBuilder$a = (grp, options) => {
70294
70340
  var base2;
70295
70341
  var group;
@@ -70308,9 +70354,8 @@ var htmlBuilder$a = (grp, options) => {
70308
70354
  var mustShift = group.isShifty && isCharacterBox(base2);
70309
70355
  var skew2 = 0;
70310
70356
  if (mustShift) {
70311
- var baseChar = getBaseElem(base2);
70312
- var baseGroup = buildGroup$1(baseChar, options.havingCrampedStyle());
70313
- skew2 = assertSymbolDomNode(baseGroup).skew;
70357
+ var _getBaseSymbol$skew, _getBaseSymbol;
70358
+ skew2 = (_getBaseSymbol$skew = (_getBaseSymbol = getBaseSymbol(body)) == null ? void 0 : _getBaseSymbol.skew) != null ? _getBaseSymbol$skew : 0;
70314
70359
  }
70315
70360
  var accentBelow = group.label === "\\c";
70316
70361
  var clearance = accentBelow ? body.height + body.depth : Math.min(body.height, options.fontMetrics().xHeight);
@@ -78607,7 +78652,7 @@ var renderToHTMLTree = function renderToHTMLTree2(expression, options) {
78607
78652
  return renderError(error2, expression, settings);
78608
78653
  }
78609
78654
  };
78610
- var version = "0.16.37";
78655
+ var version = "0.16.38";
78611
78656
  var __domTree = {
78612
78657
  Span,
78613
78658
  Anchor,
@@ -78837,147 +78882,6 @@ const __vitePreload = function preload(baseModule, deps, importerUrl) {
78837
78882
  return baseModule().catch(handlePreloadError);
78838
78883
  });
78839
78884
  };
78840
- var package_default = {
78841
- name: "mermaid",
78842
- version: "11.12.3",
78843
- description: "Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.",
78844
- type: "module",
78845
- module: "./dist/mermaid.core.mjs",
78846
- types: "./dist/mermaid.d.ts",
78847
- exports: {
78848
- ".": {
78849
- types: "./dist/mermaid.d.ts",
78850
- import: "./dist/mermaid.core.mjs",
78851
- default: "./dist/mermaid.core.mjs"
78852
- },
78853
- "./*": "./*"
78854
- },
78855
- keywords: [
78856
- "diagram",
78857
- "markdown",
78858
- "flowchart",
78859
- "sequence diagram",
78860
- "gantt",
78861
- "class diagram",
78862
- "git graph",
78863
- "mindmap",
78864
- "packet diagram",
78865
- "c4 diagram",
78866
- "er diagram",
78867
- "pie chart",
78868
- "pie diagram",
78869
- "quadrant chart",
78870
- "requirement diagram",
78871
- "graph"
78872
- ],
78873
- scripts: {
78874
- clean: "rimraf dist",
78875
- dev: "pnpm -w dev",
78876
- "docs:code": "typedoc src/defaultConfig.ts src/config.ts src/mermaid.ts && prettier --write ./src/docs/config/setup",
78877
- "docs:build": "rimraf ../../docs && pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts",
78878
- "docs:verify": "pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts --verify",
78879
- "docs:pre:vitepress": "pnpm --filter ./src/docs prefetch && rimraf src/vitepress && pnpm docs:code && tsx scripts/docs.cli.mts --vitepress && pnpm --filter ./src/vitepress install --no-frozen-lockfile --ignore-scripts",
78880
- "docs:build:vitepress": "pnpm docs:pre:vitepress && (cd src/vitepress && pnpm run build) && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing",
78881
- "docs:dev": 'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev" "tsx scripts/docs.cli.mts --watch --vitepress"',
78882
- "docs:dev:docker": 'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev:docker" "tsx scripts/docs.cli.mts --watch --vitepress"',
78883
- "docs:serve": "pnpm docs:build:vitepress && vitepress serve src/vitepress",
78884
- "docs:spellcheck": 'cspell "src/docs/**/*.md"',
78885
- "docs:release-version": "tsx scripts/update-release-version.mts",
78886
- "docs:verify-version": "tsx scripts/update-release-version.mts --verify",
78887
- "types:build-config": "tsx scripts/create-types-from-json-schema.mts",
78888
- "types:verify-config": "tsx scripts/create-types-from-json-schema.mts --verify",
78889
- checkCircle: "npx madge --circular ./src",
78890
- prepublishOnly: "pnpm docs:verify-version"
78891
- },
78892
- repository: {
78893
- type: "git",
78894
- url: "https://github.com/mermaid-js/mermaid"
78895
- },
78896
- author: "Knut Sveidqvist",
78897
- license: "MIT",
78898
- standard: {
78899
- ignore: [
78900
- "**/parser/*.js",
78901
- "dist/**/*.js",
78902
- "cypress/**/*.js"
78903
- ],
78904
- globals: [
78905
- "page"
78906
- ]
78907
- },
78908
- dependencies: {
78909
- "@braintree/sanitize-url": "^7.1.1",
78910
- "@iconify/utils": "^3.0.1",
78911
- "@mermaid-js/parser": "workspace:^",
78912
- "@types/d3": "^7.4.3",
78913
- cytoscape: "^3.29.3",
78914
- "cytoscape-cose-bilkent": "^4.1.0",
78915
- "cytoscape-fcose": "^2.2.0",
78916
- d3: "^7.9.0",
78917
- "d3-sankey": "^0.12.3",
78918
- "dagre-d3-es": "7.0.13",
78919
- dayjs: "^1.11.18",
78920
- dompurify: "^3.2.5",
78921
- katex: "^0.16.22",
78922
- khroma: "^2.1.0",
78923
- "lodash-es": "^4.17.23",
78924
- marked: "^16.2.1",
78925
- roughjs: "^4.6.6",
78926
- stylis: "^4.3.6",
78927
- "ts-dedent": "^2.2.0",
78928
- uuid: "^11.1.0"
78929
- },
78930
- devDependencies: {
78931
- "@adobe/jsonschema2md": "^8.0.5",
78932
- "@iconify/types": "^2.0.0",
78933
- "@types/cytoscape": "^3.21.9",
78934
- "@types/cytoscape-fcose": "^2.2.4",
78935
- "@types/d3-sankey": "^0.12.4",
78936
- "@types/d3-scale": "^4.0.9",
78937
- "@types/d3-scale-chromatic": "^3.1.0",
78938
- "@types/d3-selection": "^3.0.11",
78939
- "@types/d3-shape": "^3.1.7",
78940
- "@types/jsdom": "^21.1.7",
78941
- "@types/katex": "^0.16.7",
78942
- "@types/lodash-es": "^4.17.12",
78943
- "@types/micromatch": "^4.0.9",
78944
- "@types/stylis": "^4.2.7",
78945
- "@types/uuid": "^10.0.0",
78946
- ajv: "^8.17.1",
78947
- canvas: "^3.1.2",
78948
- chokidar: "3.6.0",
78949
- concurrently: "^9.1.2",
78950
- "csstree-validator": "^4.0.1",
78951
- globby: "^14.1.0",
78952
- jison: "^0.4.18",
78953
- "js-base64": "^3.7.8",
78954
- jsdom: "^26.1.0",
78955
- "json-schema-to-typescript": "^15.0.4",
78956
- micromatch: "^4.0.8",
78957
- "path-browserify": "^1.0.1",
78958
- prettier: "^3.5.3",
78959
- remark: "^15.0.1",
78960
- "remark-frontmatter": "^5.0.0",
78961
- "remark-gfm": "^4.0.1",
78962
- rimraf: "^6.0.1",
78963
- "start-server-and-test": "^2.0.13",
78964
- "type-fest": "^4.35.0",
78965
- typedoc: "^0.28.12",
78966
- "typedoc-plugin-markdown": "^4.8.1",
78967
- typescript: "~5.7.3",
78968
- "unist-util-flatmap": "^1.0.0",
78969
- "unist-util-visit": "^5.0.0",
78970
- vitepress: "^1.6.4",
78971
- "vitepress-plugin-search": "1.0.4-alpha.22"
78972
- },
78973
- files: [
78974
- "dist/",
78975
- "README.md"
78976
- ],
78977
- publishConfig: {
78978
- access: "public"
78979
- }
78980
- };
78981
78885
  var dayjs_min$1 = { exports: {} };
78982
78886
  var dayjs_min = dayjs_min$1.exports;
78983
78887
  var hasRequiredDayjs_min;
@@ -79998,8 +79902,8 @@ var UnknownDiagramError = (_a2 = class extends Error {
79998
79902
  var detectors = {};
79999
79903
  var detectType$1 = /* @__PURE__ */ __name(function(text2, config2) {
80000
79904
  text2 = text2.replace(frontMatterRegex, "").replace(directiveRegex, "").replace(anyCommentRegex, "\n");
80001
- for (const [key, { detector: detector28 }] of Object.entries(detectors)) {
80002
- const diagram2 = detector28(text2, config2);
79905
+ for (const [key, { detector: detector30 }] of Object.entries(detectors)) {
79906
+ const diagram2 = detector30(text2, config2);
80003
79907
  if (diagram2) {
80004
79908
  return key;
80005
79909
  }
@@ -80009,16 +79913,16 @@ var detectType$1 = /* @__PURE__ */ __name(function(text2, config2) {
80009
79913
  );
80010
79914
  }, "detectType");
80011
79915
  var registerLazyLoadedDiagrams = /* @__PURE__ */ __name((...diagrams2) => {
80012
- for (const { id: id28, detector: detector28, loader: loader28 } of diagrams2) {
80013
- addDetector(id28, detector28, loader28);
79916
+ for (const { id: id30, detector: detector30, loader: loader30 } of diagrams2) {
79917
+ addDetector(id30, detector30, loader30);
80014
79918
  }
80015
79919
  }, "registerLazyLoadedDiagrams");
80016
- var addDetector = /* @__PURE__ */ __name((key, detector28, loader28) => {
79920
+ var addDetector = /* @__PURE__ */ __name((key, detector30, loader30) => {
80017
79921
  if (detectors[key]) {
80018
79922
  log.warn(`Detector with key ${key} already exists. Overwriting.`);
80019
79923
  }
80020
- detectors[key] = { detector: detector28, loader: loader28 };
80021
- log.debug(`Detector with key ${key} added${loader28 ? " with loader" : ""}`);
79924
+ detectors[key] = { detector: detector30, loader: loader30 };
79925
+ log.debug(`Detector with key ${key} added${loader30 ? " with loader" : ""}`);
80022
79926
  }, "addDetector");
80023
79927
  var getDiagramLoader = /* @__PURE__ */ __name((key) => {
80024
79928
  return detectors[key].loader;
@@ -80045,7 +79949,7 @@ var assignWithDepth = /* @__PURE__ */ __name((dst, src, { depth = 2, clobber = f
80045
79949
  }
80046
79950
  if (src !== void 0 && typeof dst === "object" && typeof src === "object") {
80047
79951
  Object.keys(src).forEach((key) => {
80048
- if (typeof src[key] === "object" && (dst[key] === void 0 || typeof dst[key] === "object")) {
79952
+ if (typeof src[key] === "object" && src[key] !== null && (dst[key] === void 0 || typeof dst[key] === "object")) {
80049
79953
  if (dst[key] === void 0) {
80050
79954
  dst[key] = Array.isArray(src[key]) ? [] : {};
80051
79955
  }
@@ -80226,6 +80130,16 @@ var Theme = (_b = class {
80226
80130
  this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || "2px";
80227
80131
  this.pieOuterStrokeColor = this.pieOuterStrokeColor || "black";
80228
80132
  this.pieOpacity = this.pieOpacity || "0.7";
80133
+ this.venn1 = this.venn1 ?? adjust(this.primaryColor, { l: -30 });
80134
+ this.venn2 = this.venn2 ?? adjust(this.secondaryColor, { l: -30 });
80135
+ this.venn3 = this.venn3 ?? adjust(this.tertiaryColor, { l: -30 });
80136
+ this.venn4 = this.venn4 ?? adjust(this.primaryColor, { h: 60, l: -30 });
80137
+ this.venn5 = this.venn5 ?? adjust(this.primaryColor, { h: -60, l: -30 });
80138
+ this.venn6 = this.venn6 ?? adjust(this.secondaryColor, { h: 60, l: -30 });
80139
+ this.venn7 = this.venn7 ?? adjust(this.primaryColor, { h: 120, l: -30 });
80140
+ this.venn8 = this.venn8 ?? adjust(this.secondaryColor, { h: 120, l: -30 });
80141
+ this.vennTitleTextColor = this.vennTitleTextColor ?? this.titleColor;
80142
+ this.vennSetTextColor = this.vennSetTextColor ?? this.textColor;
80229
80143
  this.radar = {
80230
80144
  axisColor: this.radar?.axisColor || this.lineColor,
80231
80145
  axisStrokeWidth: this.radar?.axisStrokeWidth || 2,
@@ -80467,7 +80381,7 @@ var Theme2 = (_c = class {
80467
80381
  this.taskTextOutsideColor = this.taskTextLightColor;
80468
80382
  this.gridColor = this.mainContrastColor;
80469
80383
  this.doneTaskBkgColor = this.mainContrastColor;
80470
- this.taskTextDarkColor = this.darkTextColor;
80384
+ this.taskTextDarkColor = invert(this.doneTaskBkgColor);
80471
80385
  this.archEdgeColor = this.lineColor;
80472
80386
  this.archEdgeArrowColor = this.lineColor;
80473
80387
  this.transitionColor = this.transitionColor || this.lineColor;
@@ -80533,16 +80447,21 @@ var Theme2 = (_c = class {
80533
80447
  this["pie" + i2] = this["cScale" + i2];
80534
80448
  }
80535
80449
  this.pieTitleTextSize = this.pieTitleTextSize || "25px";
80536
- this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;
80450
+ this.pieTitleTextColor = this.pieTitleTextColor || this.mainContrastColor;
80537
80451
  this.pieSectionTextSize = this.pieSectionTextSize || "17px";
80538
80452
  this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;
80539
80453
  this.pieLegendTextSize = this.pieLegendTextSize || "17px";
80540
- this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;
80454
+ this.pieLegendTextColor = this.pieLegendTextColor || this.mainContrastColor;
80541
80455
  this.pieStrokeColor = this.pieStrokeColor || "black";
80542
80456
  this.pieStrokeWidth = this.pieStrokeWidth || "2px";
80543
80457
  this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || "2px";
80544
80458
  this.pieOuterStrokeColor = this.pieOuterStrokeColor || "black";
80545
80459
  this.pieOpacity = this.pieOpacity || "0.7";
80460
+ for (let i2 = 0; i2 < 8; i2++) {
80461
+ this["venn" + (i2 + 1)] = this["venn" + (i2 + 1)] ?? lighten(this["cScale" + i2], 30);
80462
+ }
80463
+ this.vennTitleTextColor = this.vennTitleTextColor ?? this.titleColor;
80464
+ this.vennSetTextColor = this.vennSetTextColor ?? this.textColor;
80546
80465
  this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;
80547
80466
  this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });
80548
80467
  this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });
@@ -80861,6 +80780,16 @@ var Theme3 = (_d = class {
80861
80780
  this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || "2px";
80862
80781
  this.pieOuterStrokeColor = this.pieOuterStrokeColor || "black";
80863
80782
  this.pieOpacity = this.pieOpacity || "0.7";
80783
+ this.venn1 = this.venn1 ?? adjust(this.primaryColor, { l: -30 });
80784
+ this.venn2 = this.venn2 ?? adjust(this.secondaryColor, { l: -30 });
80785
+ this.venn3 = this.venn3 ?? adjust(this.tertiaryColor, { l: -40 });
80786
+ this.venn4 = this.venn4 ?? adjust(this.primaryColor, { h: 60, l: -30 });
80787
+ this.venn5 = this.venn5 ?? adjust(this.primaryColor, { h: -60, l: -30 });
80788
+ this.venn6 = this.venn6 ?? adjust(this.secondaryColor, { h: 60, l: -30 });
80789
+ this.venn7 = this.venn7 ?? adjust(this.primaryColor, { h: 120, l: -30 });
80790
+ this.venn8 = this.venn8 ?? adjust(this.secondaryColor, { h: 120, l: -30 });
80791
+ this.vennTitleTextColor = this.vennTitleTextColor ?? this.titleColor;
80792
+ this.vennSetTextColor = this.vennSetTextColor ?? this.textColor;
80864
80793
  this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;
80865
80794
  this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });
80866
80795
  this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });
@@ -81162,6 +81091,16 @@ var Theme4 = (_e2 = class {
81162
81091
  this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || "2px";
81163
81092
  this.pieOuterStrokeColor = this.pieOuterStrokeColor || "black";
81164
81093
  this.pieOpacity = this.pieOpacity || "0.7";
81094
+ this.venn1 = this.venn1 ?? adjust(this.primaryColor, { l: -30 });
81095
+ this.venn2 = this.venn2 ?? adjust(this.secondaryColor, { l: -30 });
81096
+ this.venn3 = this.venn3 ?? adjust(this.tertiaryColor, { l: -30 });
81097
+ this.venn4 = this.venn4 ?? adjust(this.primaryColor, { h: 60, l: -30 });
81098
+ this.venn5 = this.venn5 ?? adjust(this.primaryColor, { h: -60, l: -30 });
81099
+ this.venn6 = this.venn6 ?? adjust(this.secondaryColor, { h: 60, l: -30 });
81100
+ this.venn7 = this.venn7 ?? adjust(this.primaryColor, { h: 120, l: -30 });
81101
+ this.venn8 = this.venn8 ?? adjust(this.secondaryColor, { h: 120, l: -30 });
81102
+ this.vennTitleTextColor = this.vennTitleTextColor ?? this.titleColor;
81103
+ this.vennSetTextColor = this.vennSetTextColor ?? this.textColor;
81165
81104
  this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;
81166
81105
  this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });
81167
81106
  this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });
@@ -81483,6 +81422,11 @@ var Theme5 = (_f = class {
81483
81422
  this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || "2px";
81484
81423
  this.pieOuterStrokeColor = this.pieOuterStrokeColor || "black";
81485
81424
  this.pieOpacity = this.pieOpacity || "0.7";
81425
+ for (let i2 = 0; i2 < 8; i2++) {
81426
+ this["venn" + (i2 + 1)] = this["venn" + (i2 + 1)] ?? this["cScale" + i2];
81427
+ }
81428
+ this.vennTitleTextColor = this.vennTitleTextColor ?? this.titleColor;
81429
+ this.vennSetTextColor = this.vennSetTextColor ?? this.textColor;
81486
81430
  this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;
81487
81431
  this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });
81488
81432
  this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });
@@ -81611,7 +81555,7 @@ var config_schema_default = {
81611
81555
  "bottom": 0
81612
81556
  },
81613
81557
  "diagramPadding": 8,
81614
- "htmlLabels": true,
81558
+ "htmlLabels": null,
81615
81559
  "nodeSpacing": 50,
81616
81560
  "rankSpacing": 50,
81617
81561
  "curve": "basis",
@@ -81842,6 +81786,10 @@ var config_schema_default = {
81842
81786
  "maxNodeWidth": 200,
81843
81787
  "layoutAlgorithm": "cose-bilkent"
81844
81788
  },
81789
+ "ishikawa": {
81790
+ "useMaxWidth": true,
81791
+ "diagramPadding": 20
81792
+ },
81845
81793
  "kanban": {
81846
81794
  "useMaxWidth": true,
81847
81795
  "padding": 8,
@@ -82069,6 +82017,13 @@ var config_schema_default = {
82069
82017
  "axisLabelFactor": 1.05,
82070
82018
  "curveTension": 0.17
82071
82019
  },
82020
+ "venn": {
82021
+ "useMaxWidth": true,
82022
+ "width": 800,
82023
+ "height": 450,
82024
+ "padding": 8,
82025
+ "useDebugLayout": false
82026
+ },
82072
82027
  "theme": "default",
82073
82028
  "look": "classic",
82074
82029
  "handDrawnSeed": 0,
@@ -82325,6 +82280,9 @@ var config = {
82325
82280
  radar: {
82326
82281
  ...config_schema_default.radar
82327
82282
  },
82283
+ ishikawa: {
82284
+ ...config_schema_default.ishikawa
82285
+ },
82328
82286
  treemap: {
82329
82287
  useMaxWidth: true,
82330
82288
  padding: 10,
@@ -82336,6 +82294,9 @@ var config = {
82336
82294
  valueFontSize: 12,
82337
82295
  labelFontSize: 14,
82338
82296
  valueFormat: ","
82297
+ },
82298
+ venn: {
82299
+ ...config_schema_default.venn
82339
82300
  }
82340
82301
  };
82341
82302
  var keyify = /* @__PURE__ */ __name((obj, prefix = "") => Object.keys(obj).reduce((res, el) => {
@@ -82406,6 +82367,7 @@ var sanitizeCss = /* @__PURE__ */ __name((str2) => {
82406
82367
  return str2;
82407
82368
  }, "sanitizeCss");
82408
82369
  var defaultConfig = Object.freeze(defaultConfig_default);
82370
+ var evaluate = /* @__PURE__ */ __name((val) => val === false || ["false", "null", "0"].includes(String(val).trim().toLowerCase()) ? false : true, "evaluate");
82409
82371
  var siteConfig = assignWithDepth_default({}, defaultConfig);
82410
82372
  var configFromInitialize;
82411
82373
  var directives = [];
@@ -82500,7 +82462,8 @@ var reset = /* @__PURE__ */ __name((config2 = siteConfig) => {
82500
82462
  updateCurrentConfig(config2, directives);
82501
82463
  }, "reset");
82502
82464
  var ConfigWarning = {
82503
- LAZY_LOAD_DEPRECATED: "The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."
82465
+ LAZY_LOAD_DEPRECATED: "The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.",
82466
+ FLOWCHART_HTML_LABELS_DEPRECATED: "flowchart.htmlLabels is deprecated. Please use global htmlLabels instead."
82504
82467
  };
82505
82468
  var issuedWarnings = {};
82506
82469
  var issueWarning = /* @__PURE__ */ __name((warning) => {
@@ -82528,6 +82491,12 @@ var getUserDefinedConfig = /* @__PURE__ */ __name(() => {
82528
82491
  }
82529
82492
  return userConfig;
82530
82493
  }, "getUserDefinedConfig");
82494
+ var getEffectiveHtmlLabels = /* @__PURE__ */ __name((config2) => {
82495
+ if (config2.flowchart?.htmlLabels != void 0) {
82496
+ issueWarning("FLOWCHART_HTML_LABELS_DEPRECATED");
82497
+ }
82498
+ return evaluate(config2.htmlLabels ?? config2.flowchart?.htmlLabels ?? true);
82499
+ }, "getEffectiveHtmlLabels");
82531
82500
  var lineBreakRegex = /<br\s*\/?>/gi;
82532
82501
  var getRows = /* @__PURE__ */ __name((s2) => {
82533
82502
  if (!s2) {
@@ -82569,9 +82538,9 @@ var removeScript = /* @__PURE__ */ __name((txt) => {
82569
82538
  return sanitizedText;
82570
82539
  }, "removeScript");
82571
82540
  var sanitizeMore = /* @__PURE__ */ __name((text2, config2) => {
82572
- if (config2.flowchart?.htmlLabels !== false) {
82541
+ if (getEffectiveHtmlLabels(config2)) {
82573
82542
  const level = config2.securityLevel;
82574
- if (level === "antiscript" || level === "strict") {
82543
+ if (level === "antiscript" || level === "strict" || level === "sandbox") {
82575
82544
  text2 = removeScript(text2);
82576
82545
  } else if (level !== "loose") {
82577
82546
  text2 = breakToPlaceholder(text2);
@@ -82621,7 +82590,6 @@ var getUrl = /* @__PURE__ */ __name((useAbsolute) => {
82621
82590
  }
82622
82591
  return url;
82623
82592
  }, "getUrl");
82624
- var evaluate = /* @__PURE__ */ __name((val) => val === false || ["false", "null", "0"].includes(String(val).trim().toLowerCase()) ? false : true, "evaluate");
82625
82593
  var getMax = /* @__PURE__ */ __name(function(...values) {
82626
82594
  const newValues = values.filter((value) => {
82627
82595
  return !isNaN(value);
@@ -82910,15 +82878,15 @@ var getCommonDb = /* @__PURE__ */ __name(() => {
82910
82878
  return commonDb_exports;
82911
82879
  }, "getCommonDb");
82912
82880
  var diagrams = {};
82913
- var registerDiagram = /* @__PURE__ */ __name((id28, diagram2, detector28) => {
82914
- if (diagrams[id28]) {
82915
- log2.warn(`Diagram with id ${id28} already registered. Overwriting.`);
82881
+ var registerDiagram = /* @__PURE__ */ __name((id30, diagram2, detector30) => {
82882
+ if (diagrams[id30]) {
82883
+ log2.warn(`Diagram with id ${id30} already registered. Overwriting.`);
82916
82884
  }
82917
- diagrams[id28] = diagram2;
82918
- if (detector28) {
82919
- addDetector(id28, detector28);
82885
+ diagrams[id30] = diagram2;
82886
+ if (detector30) {
82887
+ addDetector(id30, detector30);
82920
82888
  }
82921
- addStylesForDiagram(id28, diagram2.styles);
82889
+ addStylesForDiagram(id30, diagram2.styles);
82922
82890
  diagram2.injectUtils?.(
82923
82891
  log2,
82924
82892
  setLogLevel2,
@@ -84319,11 +84287,11 @@ var STARTED = 3;
84319
84287
  var RUNNING = 4;
84320
84288
  var ENDING = 5;
84321
84289
  var ENDED = 6;
84322
- function schedule(node2, name, id28, index, group, timing) {
84290
+ function schedule(node2, name, id30, index, group, timing) {
84323
84291
  var schedules = node2.__transition;
84324
84292
  if (!schedules) node2.__transition = {};
84325
- else if (id28 in schedules) return;
84326
- create(node2, id28, {
84293
+ else if (id30 in schedules) return;
84294
+ create(node2, id30, {
84327
84295
  name,
84328
84296
  index,
84329
84297
  // For context during callback.
@@ -84339,24 +84307,24 @@ function schedule(node2, name, id28, index, group, timing) {
84339
84307
  state: CREATED
84340
84308
  });
84341
84309
  }
84342
- function init$1(node2, id28) {
84343
- var schedule2 = get(node2, id28);
84310
+ function init$1(node2, id30) {
84311
+ var schedule2 = get(node2, id30);
84344
84312
  if (schedule2.state > CREATED) throw new Error("too late; already scheduled");
84345
84313
  return schedule2;
84346
84314
  }
84347
- function set$1(node2, id28) {
84348
- var schedule2 = get(node2, id28);
84315
+ function set$1(node2, id30) {
84316
+ var schedule2 = get(node2, id30);
84349
84317
  if (schedule2.state > STARTED) throw new Error("too late; already running");
84350
84318
  return schedule2;
84351
84319
  }
84352
- function get(node2, id28) {
84320
+ function get(node2, id30) {
84353
84321
  var schedule2 = node2.__transition;
84354
- if (!schedule2 || !(schedule2 = schedule2[id28])) throw new Error("transition not found");
84322
+ if (!schedule2 || !(schedule2 = schedule2[id30])) throw new Error("transition not found");
84355
84323
  return schedule2;
84356
84324
  }
84357
- function create(node2, id28, self2) {
84325
+ function create(node2, id30, self2) {
84358
84326
  var schedules = node2.__transition, tween;
84359
- schedules[id28] = self2;
84327
+ schedules[id30] = self2;
84360
84328
  self2.timer = timer(schedule2, 0, self2.time);
84361
84329
  function schedule2(elapsed) {
84362
84330
  self2.state = SCHEDULED;
@@ -84375,7 +84343,7 @@ function create(node2, id28, self2) {
84375
84343
  o2.timer.stop();
84376
84344
  o2.on.call("interrupt", node2, node2.__data__, o2.index, o2.group);
84377
84345
  delete schedules[i2];
84378
- } else if (+i2 < id28) {
84346
+ } else if (+i2 < id30) {
84379
84347
  o2.state = ENDED;
84380
84348
  o2.timer.stop();
84381
84349
  o2.on.call("cancel", node2, node2.__data__, o2.index, o2.group);
@@ -84414,7 +84382,7 @@ function create(node2, id28, self2) {
84414
84382
  function stop() {
84415
84383
  self2.state = ENDED;
84416
84384
  self2.timer.stop();
84417
- delete schedules[id28];
84385
+ delete schedules[id30];
84418
84386
  for (var i2 in schedules) return;
84419
84387
  delete node2.__transition;
84420
84388
  }
@@ -84441,10 +84409,10 @@ function selection_interrupt(name) {
84441
84409
  interrupt(this, name);
84442
84410
  });
84443
84411
  }
84444
- function tweenRemove(id28, name) {
84412
+ function tweenRemove(id30, name) {
84445
84413
  var tween0, tween1;
84446
84414
  return function() {
84447
- var schedule2 = set$1(this, id28), tween = schedule2.tween;
84415
+ var schedule2 = set$1(this, id30), tween = schedule2.tween;
84448
84416
  if (tween !== tween0) {
84449
84417
  tween1 = tween0 = tween;
84450
84418
  for (var i2 = 0, n2 = tween1.length; i2 < n2; ++i2) {
@@ -84458,11 +84426,11 @@ function tweenRemove(id28, name) {
84458
84426
  schedule2.tween = tween1;
84459
84427
  };
84460
84428
  }
84461
- function tweenFunction(id28, name, value) {
84429
+ function tweenFunction(id30, name, value) {
84462
84430
  var tween0, tween1;
84463
84431
  if (typeof value !== "function") throw new Error();
84464
84432
  return function() {
84465
- var schedule2 = set$1(this, id28), tween = schedule2.tween;
84433
+ var schedule2 = set$1(this, id30), tween = schedule2.tween;
84466
84434
  if (tween !== tween0) {
84467
84435
  tween1 = (tween0 = tween).slice();
84468
84436
  for (var t2 = { name, value }, i2 = 0, n2 = tween1.length; i2 < n2; ++i2) {
@@ -84477,10 +84445,10 @@ function tweenFunction(id28, name, value) {
84477
84445
  };
84478
84446
  }
84479
84447
  function transition_tween(name, value) {
84480
- var id28 = this._id;
84448
+ var id30 = this._id;
84481
84449
  name += "";
84482
84450
  if (arguments.length < 2) {
84483
- var tween = get(this.node(), id28).tween;
84451
+ var tween = get(this.node(), id30).tween;
84484
84452
  for (var i2 = 0, n2 = tween.length, t2; i2 < n2; ++i2) {
84485
84453
  if ((t2 = tween[i2]).name === name) {
84486
84454
  return t2.value;
@@ -84488,16 +84456,16 @@ function transition_tween(name, value) {
84488
84456
  }
84489
84457
  return null;
84490
84458
  }
84491
- return this.each((value == null ? tweenRemove : tweenFunction)(id28, name, value));
84459
+ return this.each((value == null ? tweenRemove : tweenFunction)(id30, name, value));
84492
84460
  }
84493
84461
  function tweenValue(transition, name, value) {
84494
- var id28 = transition._id;
84462
+ var id30 = transition._id;
84495
84463
  transition.each(function() {
84496
- var schedule2 = set$1(this, id28);
84464
+ var schedule2 = set$1(this, id30);
84497
84465
  (schedule2.value || (schedule2.value = {}))[name] = value.apply(this, arguments);
84498
84466
  });
84499
84467
  return function(node2) {
84500
- return get(node2, id28).value[name];
84468
+ return get(node2, id30).value[name];
84501
84469
  };
84502
84470
  }
84503
84471
  function interpolate(a2, b2) {
@@ -84590,49 +84558,49 @@ function transition_attrTween(name, value) {
84590
84558
  var fullname = namespace(name);
84591
84559
  return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));
84592
84560
  }
84593
- function delayFunction(id28, value) {
84561
+ function delayFunction(id30, value) {
84594
84562
  return function() {
84595
- init$1(this, id28).delay = +value.apply(this, arguments);
84563
+ init$1(this, id30).delay = +value.apply(this, arguments);
84596
84564
  };
84597
84565
  }
84598
- function delayConstant(id28, value) {
84566
+ function delayConstant(id30, value) {
84599
84567
  return value = +value, function() {
84600
- init$1(this, id28).delay = value;
84568
+ init$1(this, id30).delay = value;
84601
84569
  };
84602
84570
  }
84603
84571
  function transition_delay(value) {
84604
- var id28 = this._id;
84605
- return arguments.length ? this.each((typeof value === "function" ? delayFunction : delayConstant)(id28, value)) : get(this.node(), id28).delay;
84572
+ var id30 = this._id;
84573
+ return arguments.length ? this.each((typeof value === "function" ? delayFunction : delayConstant)(id30, value)) : get(this.node(), id30).delay;
84606
84574
  }
84607
- function durationFunction(id28, value) {
84575
+ function durationFunction(id30, value) {
84608
84576
  return function() {
84609
- set$1(this, id28).duration = +value.apply(this, arguments);
84577
+ set$1(this, id30).duration = +value.apply(this, arguments);
84610
84578
  };
84611
84579
  }
84612
- function durationConstant(id28, value) {
84580
+ function durationConstant(id30, value) {
84613
84581
  return value = +value, function() {
84614
- set$1(this, id28).duration = value;
84582
+ set$1(this, id30).duration = value;
84615
84583
  };
84616
84584
  }
84617
84585
  function transition_duration(value) {
84618
- var id28 = this._id;
84619
- return arguments.length ? this.each((typeof value === "function" ? durationFunction : durationConstant)(id28, value)) : get(this.node(), id28).duration;
84586
+ var id30 = this._id;
84587
+ return arguments.length ? this.each((typeof value === "function" ? durationFunction : durationConstant)(id30, value)) : get(this.node(), id30).duration;
84620
84588
  }
84621
- function easeConstant(id28, value) {
84589
+ function easeConstant(id30, value) {
84622
84590
  if (typeof value !== "function") throw new Error();
84623
84591
  return function() {
84624
- set$1(this, id28).ease = value;
84592
+ set$1(this, id30).ease = value;
84625
84593
  };
84626
84594
  }
84627
84595
  function transition_ease(value) {
84628
- var id28 = this._id;
84629
- return arguments.length ? this.each(easeConstant(id28, value)) : get(this.node(), id28).ease;
84596
+ var id30 = this._id;
84597
+ return arguments.length ? this.each(easeConstant(id30, value)) : get(this.node(), id30).ease;
84630
84598
  }
84631
- function easeVarying(id28, value) {
84599
+ function easeVarying(id30, value) {
84632
84600
  return function() {
84633
84601
  var v2 = value.apply(this, arguments);
84634
84602
  if (typeof v2 !== "function") throw new Error();
84635
- set$1(this, id28).ease = v2;
84603
+ set$1(this, id30).ease = v2;
84636
84604
  };
84637
84605
  }
84638
84606
  function transition_easeVarying(value) {
@@ -84671,22 +84639,22 @@ function start(name) {
84671
84639
  return !t2 || t2 === "start";
84672
84640
  });
84673
84641
  }
84674
- function onFunction(id28, name, listener) {
84642
+ function onFunction(id30, name, listener) {
84675
84643
  var on0, on1, sit = start(name) ? init$1 : set$1;
84676
84644
  return function() {
84677
- var schedule2 = sit(this, id28), on = schedule2.on;
84645
+ var schedule2 = sit(this, id30), on = schedule2.on;
84678
84646
  if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);
84679
84647
  schedule2.on = on1;
84680
84648
  };
84681
84649
  }
84682
84650
  function transition_on(name, listener) {
84683
- var id28 = this._id;
84684
- return arguments.length < 2 ? get(this.node(), id28).on.on(name) : this.each(onFunction(id28, name, listener));
84651
+ var id30 = this._id;
84652
+ return arguments.length < 2 ? get(this.node(), id30).on.on(name) : this.each(onFunction(id30, name, listener));
84685
84653
  }
84686
- function removeFunction(id28) {
84654
+ function removeFunction(id30) {
84687
84655
  return function() {
84688
84656
  var parent = this.parentNode;
84689
- for (var i2 in this.__transition) if (+i2 !== id28) return;
84657
+ for (var i2 in this.__transition) if (+i2 !== id30) return;
84690
84658
  if (parent) parent.removeChild(this);
84691
84659
  };
84692
84660
  }
@@ -84694,28 +84662,28 @@ function transition_remove() {
84694
84662
  return this.on("end.remove", removeFunction(this._id));
84695
84663
  }
84696
84664
  function transition_select(select2) {
84697
- var name = this._name, id28 = this._id;
84665
+ var name = this._name, id30 = this._id;
84698
84666
  if (typeof select2 !== "function") select2 = selector(select2);
84699
84667
  for (var groups = this._groups, m2 = groups.length, subgroups = new Array(m2), j2 = 0; j2 < m2; ++j2) {
84700
84668
  for (var group = groups[j2], n2 = group.length, subgroup = subgroups[j2] = new Array(n2), node2, subnode, i2 = 0; i2 < n2; ++i2) {
84701
84669
  if ((node2 = group[i2]) && (subnode = select2.call(node2, node2.__data__, i2, group))) {
84702
84670
  if ("__data__" in node2) subnode.__data__ = node2.__data__;
84703
84671
  subgroup[i2] = subnode;
84704
- schedule(subgroup[i2], name, id28, i2, subgroup, get(node2, id28));
84672
+ schedule(subgroup[i2], name, id30, i2, subgroup, get(node2, id30));
84705
84673
  }
84706
84674
  }
84707
84675
  }
84708
- return new Transition(subgroups, this._parents, name, id28);
84676
+ return new Transition(subgroups, this._parents, name, id30);
84709
84677
  }
84710
84678
  function transition_selectAll(select2) {
84711
- var name = this._name, id28 = this._id;
84679
+ var name = this._name, id30 = this._id;
84712
84680
  if (typeof select2 !== "function") select2 = selectorAll(select2);
84713
84681
  for (var groups = this._groups, m2 = groups.length, subgroups = [], parents = [], j2 = 0; j2 < m2; ++j2) {
84714
84682
  for (var group = groups[j2], n2 = group.length, node2, i2 = 0; i2 < n2; ++i2) {
84715
84683
  if (node2 = group[i2]) {
84716
- for (var children2 = select2.call(node2, node2.__data__, i2, group), child, inherit2 = get(node2, id28), k2 = 0, l4 = children2.length; k2 < l4; ++k2) {
84684
+ for (var children2 = select2.call(node2, node2.__data__, i2, group), child, inherit2 = get(node2, id30), k2 = 0, l4 = children2.length; k2 < l4; ++k2) {
84717
84685
  if (child = children2[k2]) {
84718
- schedule(child, name, id28, k2, children2, inherit2);
84686
+ schedule(child, name, id30, k2, children2, inherit2);
84719
84687
  }
84720
84688
  }
84721
84689
  subgroups.push(children2);
@@ -84723,7 +84691,7 @@ function transition_selectAll(select2) {
84723
84691
  }
84724
84692
  }
84725
84693
  }
84726
- return new Transition(subgroups, parents, name, id28);
84694
+ return new Transition(subgroups, parents, name, id30);
84727
84695
  }
84728
84696
  var Selection = selection.prototype.constructor;
84729
84697
  function transition_selection() {
@@ -84756,10 +84724,10 @@ function styleFunction(name, interpolate2, value) {
84756
84724
  return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate2(string00 = string0, value1));
84757
84725
  };
84758
84726
  }
84759
- function styleMaybeRemove(id28, name) {
84727
+ function styleMaybeRemove(id30, name) {
84760
84728
  var on0, on1, listener0, key = "style." + name, event = "end." + key, remove2;
84761
84729
  return function() {
84762
- var schedule2 = set$1(this, id28), on = schedule2.on, listener = schedule2.value[key] == null ? remove2 || (remove2 = styleRemove(name)) : void 0;
84730
+ var schedule2 = set$1(this, id30), on = schedule2.on, listener = schedule2.value[key] == null ? remove2 || (remove2 = styleRemove(name)) : void 0;
84763
84731
  if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);
84764
84732
  schedule2.on = on1;
84765
84733
  };
@@ -84844,13 +84812,13 @@ function transition_transition() {
84844
84812
  return new Transition(groups, this._parents, name, id1);
84845
84813
  }
84846
84814
  function transition_end() {
84847
- var on0, on1, that = this, id28 = that._id, size = that.size();
84815
+ var on0, on1, that = this, id30 = that._id, size = that.size();
84848
84816
  return new Promise(function(resolve, reject) {
84849
84817
  var cancel = { value: reject }, end = { value: function() {
84850
84818
  if (--size === 0) resolve();
84851
84819
  } };
84852
84820
  that.each(function() {
84853
- var schedule2 = set$1(this, id28), on = schedule2.on;
84821
+ var schedule2 = set$1(this, id30), on = schedule2.on;
84854
84822
  if (on !== on0) {
84855
84823
  on1 = (on0 = on).copy();
84856
84824
  on1._.cancel.push(cancel);
@@ -84863,11 +84831,11 @@ function transition_end() {
84863
84831
  });
84864
84832
  }
84865
84833
  var id$2 = 0;
84866
- function Transition(groups, parents, name, id28) {
84834
+ function Transition(groups, parents, name, id30) {
84867
84835
  this._groups = groups;
84868
84836
  this._parents = parents;
84869
84837
  this._name = name;
84870
- this._id = id28;
84838
+ this._id = id30;
84871
84839
  }
84872
84840
  function newId() {
84873
84841
  return ++id$2;
@@ -84915,30 +84883,30 @@ var defaultTiming = {
84915
84883
  duration: 250,
84916
84884
  ease: cubicInOut
84917
84885
  };
84918
- function inherit(node2, id28) {
84886
+ function inherit(node2, id30) {
84919
84887
  var timing;
84920
- while (!(timing = node2.__transition) || !(timing = timing[id28])) {
84888
+ while (!(timing = node2.__transition) || !(timing = timing[id30])) {
84921
84889
  if (!(node2 = node2.parentNode)) {
84922
- throw new Error(`transition ${id28} not found`);
84890
+ throw new Error(`transition ${id30} not found`);
84923
84891
  }
84924
84892
  }
84925
84893
  return timing;
84926
84894
  }
84927
84895
  function selection_transition(name) {
84928
- var id28, timing;
84896
+ var id30, timing;
84929
84897
  if (name instanceof Transition) {
84930
- id28 = name._id, name = name._name;
84898
+ id30 = name._id, name = name._name;
84931
84899
  } else {
84932
- id28 = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + "";
84900
+ id30 = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + "";
84933
84901
  }
84934
84902
  for (var groups = this._groups, m2 = groups.length, j2 = 0; j2 < m2; ++j2) {
84935
84903
  for (var group = groups[j2], n2 = group.length, node2, i2 = 0; i2 < n2; ++i2) {
84936
84904
  if (node2 = group[i2]) {
84937
- schedule(node2, name, id28, i2, group, timing || inherit(node2, id28));
84905
+ schedule(node2, name, id30, i2, group, timing || inherit(node2, id30));
84938
84906
  }
84939
84907
  }
84940
84908
  }
84941
- return new Transition(groups, this._parents, name, id28);
84909
+ return new Transition(groups, this._parents, name, id30);
84942
84910
  }
84943
84911
  selection.prototype.interrupt = selection_interrupt;
84944
84912
  selection.prototype.transition = selection_transition;
@@ -86043,15 +86011,15 @@ Transform.prototype = {
86043
86011
  }
86044
86012
  };
86045
86013
  Transform.prototype;
86046
- var selectSvgElement = /* @__PURE__ */ __name((id28) => {
86014
+ var selectSvgElement = /* @__PURE__ */ __name((id30) => {
86047
86015
  const { securityLevel } = getConfig2();
86048
86016
  let root2 = select("body");
86049
86017
  if (securityLevel === "sandbox") {
86050
- const sandboxElement = select(`#i${id28}`);
86018
+ const sandboxElement = select(`#i${id30}`);
86051
86019
  const doc = sandboxElement.node()?.contentDocument ?? document;
86052
86020
  root2 = select(doc.body);
86053
86021
  }
86054
- const svg2 = root2.select(`#${id28}`);
86022
+ const svg2 = root2.select(`#${id30}`);
86055
86023
  return svg2;
86056
86024
  }, "selectSvgElement");
86057
86025
  function isNothing(subject) {
@@ -86974,6 +86942,19 @@ function charFromCodepoint(c2) {
86974
86942
  );
86975
86943
  }
86976
86944
  __name(charFromCodepoint, "charFromCodepoint");
86945
+ function setProperty(object, key, value) {
86946
+ if (key === "__proto__") {
86947
+ Object.defineProperty(object, key, {
86948
+ configurable: true,
86949
+ enumerable: true,
86950
+ writable: true,
86951
+ value
86952
+ });
86953
+ } else {
86954
+ object[key] = value;
86955
+ }
86956
+ }
86957
+ __name(setProperty, "setProperty");
86977
86958
  var simpleEscapeCheck = new Array(256);
86978
86959
  var simpleEscapeMap = new Array(256);
86979
86960
  for (i$1 = 0; i$1 < 256; i$1++) {
@@ -87098,7 +87079,7 @@ function mergeMappings(state2, destination, source, overridableKeys) {
87098
87079
  for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {
87099
87080
  key = sourceKeys[index];
87100
87081
  if (!_hasOwnProperty$1.call(destination, key)) {
87101
- destination[key] = source[key];
87082
+ setProperty(destination, key, source[key]);
87102
87083
  overridableKeys[key] = true;
87103
87084
  }
87104
87085
  }
@@ -87139,16 +87120,7 @@ function storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, val
87139
87120
  state2.position = startPos || state2.position;
87140
87121
  throwError(state2, "duplicated mapping key");
87141
87122
  }
87142
- if (keyNode === "__proto__") {
87143
- Object.defineProperty(_result, keyNode, {
87144
- configurable: true,
87145
- enumerable: true,
87146
- writable: true,
87147
- value: valueNode
87148
- });
87149
- } else {
87150
- _result[keyNode] = valueNode;
87151
- }
87123
+ setProperty(_result, keyNode, valueNode);
87152
87124
  delete overridableKeys[keyNode];
87153
87125
  }
87154
87126
  return _result;
@@ -88740,6 +88712,14 @@ function renamed(from2, to) {
88740
88712
  __name(renamed, "renamed");
88741
88713
  var JSON_SCHEMA = json;
88742
88714
  var load = loader$1.load;
88715
+ var computeLabelTransform = /* @__PURE__ */ __name((bbox, useHtmlLabels) => {
88716
+ if (useHtmlLabels) {
88717
+ return "translate(" + -bbox.width / 2 + ", " + -bbox.height / 2 + ")";
88718
+ }
88719
+ const x2 = bbox.x ?? 0;
88720
+ const y3 = bbox.y ?? 0;
88721
+ return "translate(" + -(x2 + bbox.width / 2) + ", " + -(y3 + bbox.height / 2) + ")";
88722
+ }, "computeLabelTransform");
88743
88723
  var markerOffsets = {
88744
88724
  aggregation: 17.25,
88745
88725
  extension: 17.25,
@@ -88849,113 +88829,6 @@ var getLineFunctionsWithOffset = /* @__PURE__ */ __name((edge) => {
88849
88829
  }, "y")
88850
88830
  };
88851
88831
  }, "getLineFunctionsWithOffset");
88852
- var getSubGraphTitleMargins = /* @__PURE__ */ __name(({
88853
- flowchart
88854
- }) => {
88855
- const subGraphTitleTopMargin = flowchart?.subGraphTitleMargin?.top ?? 0;
88856
- const subGraphTitleBottomMargin = flowchart?.subGraphTitleMargin?.bottom ?? 0;
88857
- const subGraphTitleTotalMargin = subGraphTitleTopMargin + subGraphTitleBottomMargin;
88858
- return {
88859
- subGraphTitleTopMargin,
88860
- subGraphTitleBottomMargin,
88861
- subGraphTitleTotalMargin
88862
- };
88863
- }, "getSubGraphTitleMargins");
88864
- var solidStateFill = /* @__PURE__ */ __name((color2) => {
88865
- const { handDrawnSeed } = getConfig2();
88866
- return {
88867
- fill: color2,
88868
- hachureAngle: 120,
88869
- // angle of hachure,
88870
- hachureGap: 4,
88871
- fillWeight: 2,
88872
- roughness: 0.7,
88873
- stroke: color2,
88874
- seed: handDrawnSeed
88875
- };
88876
- }, "solidStateFill");
88877
- var compileStyles = /* @__PURE__ */ __name((node2) => {
88878
- const stylesMap = styles2Map([
88879
- ...node2.cssCompiledStyles || [],
88880
- ...node2.cssStyles || [],
88881
- ...node2.labelStyle || []
88882
- ]);
88883
- return { stylesMap, stylesArray: [...stylesMap] };
88884
- }, "compileStyles");
88885
- var styles2Map = /* @__PURE__ */ __name((styles2) => {
88886
- const styleMap2 = /* @__PURE__ */ new Map();
88887
- styles2.forEach((style2) => {
88888
- const [key, value] = style2.split(":");
88889
- styleMap2.set(key.trim(), value?.trim());
88890
- });
88891
- return styleMap2;
88892
- }, "styles2Map");
88893
- var isLabelStyle = /* @__PURE__ */ __name((key) => {
88894
- return key === "color" || key === "font-size" || key === "font-family" || key === "font-weight" || key === "font-style" || key === "text-decoration" || key === "text-align" || key === "text-transform" || key === "line-height" || key === "letter-spacing" || key === "word-spacing" || key === "text-shadow" || key === "text-overflow" || key === "white-space" || key === "word-wrap" || key === "word-break" || key === "overflow-wrap" || key === "hyphens";
88895
- }, "isLabelStyle");
88896
- var styles2String = /* @__PURE__ */ __name((node2) => {
88897
- const { stylesArray } = compileStyles(node2);
88898
- const labelStyles = [];
88899
- const nodeStyles = [];
88900
- const borderStyles = [];
88901
- const backgroundStyles = [];
88902
- stylesArray.forEach((style2) => {
88903
- const key = style2[0];
88904
- if (isLabelStyle(key)) {
88905
- labelStyles.push(style2.join(":") + " !important");
88906
- } else {
88907
- nodeStyles.push(style2.join(":") + " !important");
88908
- if (key.includes("stroke")) {
88909
- borderStyles.push(style2.join(":") + " !important");
88910
- }
88911
- if (key === "fill") {
88912
- backgroundStyles.push(style2.join(":") + " !important");
88913
- }
88914
- }
88915
- });
88916
- return {
88917
- labelStyles: labelStyles.join(";"),
88918
- nodeStyles: nodeStyles.join(";"),
88919
- stylesArray,
88920
- borderStyles,
88921
- backgroundStyles
88922
- };
88923
- }, "styles2String");
88924
- var userNodeOverrides = /* @__PURE__ */ __name((node2, options) => {
88925
- const { themeVariables, handDrawnSeed } = getConfig2();
88926
- const { nodeBorder, mainBkg } = themeVariables;
88927
- const { stylesMap } = compileStyles(node2);
88928
- const result = Object.assign(
88929
- {
88930
- roughness: 0.7,
88931
- fill: stylesMap.get("fill") || mainBkg,
88932
- fillStyle: "hachure",
88933
- // solid fill
88934
- fillWeight: 4,
88935
- hachureGap: 5.2,
88936
- stroke: stylesMap.get("stroke") || nodeBorder,
88937
- seed: handDrawnSeed,
88938
- strokeWidth: stylesMap.get("stroke-width")?.replace("px", "") || 1.3,
88939
- fillLineDash: [0, 0],
88940
- strokeLineDash: getStrokeDashArray(stylesMap.get("stroke-dasharray"))
88941
- },
88942
- options
88943
- );
88944
- return result;
88945
- }, "userNodeOverrides");
88946
- var getStrokeDashArray = /* @__PURE__ */ __name((strokeDasharrayStyle) => {
88947
- if (!strokeDasharrayStyle) {
88948
- return [0, 0];
88949
- }
88950
- const dashArray = strokeDasharrayStyle.trim().split(/\s+/).map(Number);
88951
- if (dashArray.length === 1) {
88952
- const val = isNaN(dashArray[0]) ? 0 : dashArray[0];
88953
- return [val, val];
88954
- }
88955
- const first = isNaN(dashArray[0]) ? 0 : dashArray[0];
88956
- const second = isNaN(dashArray[1]) ? 0 : dashArray[1];
88957
- return [first, second];
88958
- }, "getStrokeDashArray");
88959
88832
  var dist$1 = {};
88960
88833
  var constants = {};
88961
88834
  var hasRequiredConstants;
@@ -90287,9 +90160,9 @@ var getEdgeId = /* @__PURE__ */ __name((from2, to, {
90287
90160
  counter = 0,
90288
90161
  prefix,
90289
90162
  suffix
90290
- }, id28) => {
90291
- if (id28) {
90292
- return id28;
90163
+ }, id30) => {
90164
+ if (id30) {
90165
+ return id30;
90293
90166
  }
90294
90167
  return `${prefix ? `${prefix}_` : ""}${from2}_${to}_${counter}${suffix ? `_${suffix}` : ""}`;
90295
90168
  }, "getEdgeId");
@@ -90307,6 +90180,150 @@ function isLabelCoordinateInPath(point2, dAttr) {
90307
90180
  return sanitizedD.includes(roundedX.toString()) || sanitizedD.includes(roundedY.toString());
90308
90181
  }
90309
90182
  __name(isLabelCoordinateInPath, "isLabelCoordinateInPath");
90183
+ var getSubGraphTitleMargins = /* @__PURE__ */ __name(({
90184
+ flowchart
90185
+ }) => {
90186
+ const subGraphTitleTopMargin = flowchart?.subGraphTitleMargin?.top ?? 0;
90187
+ const subGraphTitleBottomMargin = flowchart?.subGraphTitleMargin?.bottom ?? 0;
90188
+ const subGraphTitleTotalMargin = subGraphTitleTopMargin + subGraphTitleBottomMargin;
90189
+ return {
90190
+ subGraphTitleTopMargin,
90191
+ subGraphTitleBottomMargin,
90192
+ subGraphTitleTotalMargin
90193
+ };
90194
+ }, "getSubGraphTitleMargins");
90195
+ async function configureLabelImages(container, labelText) {
90196
+ const images = container.getElementsByTagName("img");
90197
+ if (!images || images.length === 0) {
90198
+ return;
90199
+ }
90200
+ const noImgText = labelText.replace(/<img[^>]*>/g, "").trim() === "";
90201
+ await Promise.all(
90202
+ [...images].map(
90203
+ (img) => new Promise((res) => {
90204
+ function setupImage() {
90205
+ img.style.display = "flex";
90206
+ img.style.flexDirection = "column";
90207
+ if (noImgText) {
90208
+ const bodyFontSize = getConfig2().fontSize ? getConfig2().fontSize : window.getComputedStyle(document.body).fontSize;
90209
+ const enlargingFactor = 5;
90210
+ const [parsedBodyFontSize = defaultConfig_default.fontSize] = parseFontSize(bodyFontSize);
90211
+ const width = parsedBodyFontSize * enlargingFactor + "px";
90212
+ img.style.minWidth = width;
90213
+ img.style.maxWidth = width;
90214
+ } else {
90215
+ img.style.width = "100%";
90216
+ }
90217
+ res(img);
90218
+ }
90219
+ __name(setupImage, "setupImage");
90220
+ setTimeout(() => {
90221
+ if (img.complete) {
90222
+ setupImage();
90223
+ }
90224
+ });
90225
+ img.addEventListener("error", setupImage);
90226
+ img.addEventListener("load", setupImage);
90227
+ })
90228
+ )
90229
+ );
90230
+ }
90231
+ __name(configureLabelImages, "configureLabelImages");
90232
+ var solidStateFill = /* @__PURE__ */ __name((color2) => {
90233
+ const { handDrawnSeed } = getConfig2();
90234
+ return {
90235
+ fill: color2,
90236
+ hachureAngle: 120,
90237
+ // angle of hachure,
90238
+ hachureGap: 4,
90239
+ fillWeight: 2,
90240
+ roughness: 0.7,
90241
+ stroke: color2,
90242
+ seed: handDrawnSeed
90243
+ };
90244
+ }, "solidStateFill");
90245
+ var compileStyles = /* @__PURE__ */ __name((node2) => {
90246
+ const stylesMap = styles2Map([
90247
+ ...node2.cssCompiledStyles || [],
90248
+ ...node2.cssStyles || [],
90249
+ ...node2.labelStyle || []
90250
+ ]);
90251
+ return { stylesMap, stylesArray: [...stylesMap] };
90252
+ }, "compileStyles");
90253
+ var styles2Map = /* @__PURE__ */ __name((styles2) => {
90254
+ const styleMap2 = /* @__PURE__ */ new Map();
90255
+ styles2.forEach((style2) => {
90256
+ const [key, value] = style2.split(":");
90257
+ styleMap2.set(key.trim(), value?.trim());
90258
+ });
90259
+ return styleMap2;
90260
+ }, "styles2Map");
90261
+ var isLabelStyle = /* @__PURE__ */ __name((key) => {
90262
+ return key === "color" || key === "font-size" || key === "font-family" || key === "font-weight" || key === "font-style" || key === "text-decoration" || key === "text-align" || key === "text-transform" || key === "line-height" || key === "letter-spacing" || key === "word-spacing" || key === "text-shadow" || key === "text-overflow" || key === "white-space" || key === "word-wrap" || key === "word-break" || key === "overflow-wrap" || key === "hyphens";
90263
+ }, "isLabelStyle");
90264
+ var styles2String = /* @__PURE__ */ __name((node2) => {
90265
+ const { stylesArray } = compileStyles(node2);
90266
+ const labelStyles = [];
90267
+ const nodeStyles = [];
90268
+ const borderStyles = [];
90269
+ const backgroundStyles = [];
90270
+ stylesArray.forEach((style2) => {
90271
+ const key = style2[0];
90272
+ if (isLabelStyle(key)) {
90273
+ labelStyles.push(style2.join(":") + " !important");
90274
+ } else {
90275
+ nodeStyles.push(style2.join(":") + " !important");
90276
+ if (key.includes("stroke")) {
90277
+ borderStyles.push(style2.join(":") + " !important");
90278
+ }
90279
+ if (key === "fill") {
90280
+ backgroundStyles.push(style2.join(":") + " !important");
90281
+ }
90282
+ }
90283
+ });
90284
+ return {
90285
+ labelStyles: labelStyles.join(";"),
90286
+ nodeStyles: nodeStyles.join(";"),
90287
+ stylesArray,
90288
+ borderStyles,
90289
+ backgroundStyles
90290
+ };
90291
+ }, "styles2String");
90292
+ var userNodeOverrides = /* @__PURE__ */ __name((node2, options) => {
90293
+ const { themeVariables, handDrawnSeed } = getConfig2();
90294
+ const { nodeBorder, mainBkg } = themeVariables;
90295
+ const { stylesMap } = compileStyles(node2);
90296
+ const result = Object.assign(
90297
+ {
90298
+ roughness: 0.7,
90299
+ fill: stylesMap.get("fill") || mainBkg,
90300
+ fillStyle: "hachure",
90301
+ // solid fill
90302
+ fillWeight: 4,
90303
+ hachureGap: 5.2,
90304
+ stroke: stylesMap.get("stroke") || nodeBorder,
90305
+ seed: handDrawnSeed,
90306
+ strokeWidth: stylesMap.get("stroke-width")?.replace("px", "") || 1.3,
90307
+ fillLineDash: [0, 0],
90308
+ strokeLineDash: getStrokeDashArray(stylesMap.get("stroke-dasharray"))
90309
+ },
90310
+ options
90311
+ );
90312
+ return result;
90313
+ }, "userNodeOverrides");
90314
+ var getStrokeDashArray = /* @__PURE__ */ __name((strokeDasharrayStyle) => {
90315
+ if (!strokeDasharrayStyle) {
90316
+ return [0, 0];
90317
+ }
90318
+ const dashArray = strokeDasharrayStyle.trim().split(/\s+/).map(Number);
90319
+ if (dashArray.length === 1) {
90320
+ const val = isNaN(dashArray[0]) ? 0 : dashArray[0];
90321
+ return [val, val];
90322
+ }
90323
+ const first = isNaN(dashArray[0]) ? 0 : dashArray[0];
90324
+ const second = isNaN(dashArray[1]) ? 0 : dashArray[1];
90325
+ return [first, second];
90326
+ }, "getStrokeDashArray");
90310
90327
  const defaultIconDimensions = Object.freeze({
90311
90328
  left: 0,
90312
90329
  top: 0,
@@ -90569,11 +90586,11 @@ function iconToSVG(icon2, customisations) {
90569
90586
  }
90570
90587
  const regex = /\sid="(\S+)"/g;
90571
90588
  const counters = /* @__PURE__ */ new Map();
90572
- function nextID(id28) {
90573
- id28 = id28.replace(/[0-9]+$/, "") || "a";
90574
- const count = counters.get(id28) || 0;
90575
- counters.set(id28, count + 1);
90576
- return count ? `${id28}${count}` : id28;
90589
+ function nextID(id30) {
90590
+ id30 = id30.replace(/[0-9]+$/, "") || "a";
90591
+ const count = counters.get(id30) || 0;
90592
+ counters.set(id30, count + 1);
90593
+ return count ? `${id30}${count}` : id30;
90577
90594
  }
90578
90595
  function replaceIDs(body) {
90579
90596
  const ids = [];
@@ -90581,9 +90598,9 @@ function replaceIDs(body) {
90581
90598
  while (match2 = regex.exec(body)) ids.push(match2[1]);
90582
90599
  if (!ids.length) return body;
90583
90600
  const suffix = "suffix" + (Math.random() * 16777216 | Date.now()).toString(16);
90584
- ids.forEach((id28) => {
90585
- const newID = nextID(id28);
90586
- const escapedID = id28.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
90601
+ ids.forEach((id30) => {
90602
+ const newID = nextID(id30);
90603
+ const escapedID = id30.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
90587
90604
  body = body.replace(new RegExp('([#;"])(' + escapedID + ')([")]|\\.[a-z])', "g"), "$1" + newID + suffix + "$3");
90588
90605
  });
90589
90606
  body = body.replace(new RegExp(suffix, "g"), "");
@@ -91760,12 +91777,12 @@ var getRegisteredIconData = /* @__PURE__ */ __name(async (iconName, fallbackPref
91760
91777
  }
91761
91778
  let icons = iconsStore.get(prefix);
91762
91779
  if (!icons) {
91763
- const loader28 = loaderStore.get(prefix);
91764
- if (!loader28) {
91780
+ const loader30 = loaderStore.get(prefix);
91781
+ if (!loader30) {
91765
91782
  throw new Error(`Icon set not found: ${data.prefix}`);
91766
91783
  }
91767
91784
  try {
91768
- const loaded = await loader28();
91785
+ const loaded = await loader30();
91769
91786
  icons = { ...loaded, prefix };
91770
91787
  iconsStore.set(prefix, icons);
91771
91788
  } catch (e2) {
@@ -91806,12 +91823,15 @@ function preprocessMarkdown(markdown, { markdownAutoWrap }) {
91806
91823
  const withoutBR = markdown.replace(/<br\/>/g, "\n");
91807
91824
  const withoutMultipleNewlines = withoutBR.replace(/\n{2,}/g, "\n");
91808
91825
  const withoutExtraSpaces = dedent(withoutMultipleNewlines);
91809
- if (markdownAutoWrap === false) {
91810
- return withoutExtraSpaces.replace(/ /g, "&nbsp;");
91811
- }
91812
91826
  return withoutExtraSpaces;
91813
91827
  }
91814
91828
  __name(preprocessMarkdown, "preprocessMarkdown");
91829
+ function nonMarkdownToLines(nonMarkdownText) {
91830
+ return nonMarkdownText.split(/\\n|\n|<br\s*\/?>/gi).map(
91831
+ (line2) => line2.trim().match(/<[^>]+>|[^\s<>]+/g)?.map((word) => ({ content: word, type: "normal" })) ?? []
91832
+ );
91833
+ }
91834
+ __name(nonMarkdownToLines, "nonMarkdownToLines");
91815
91835
  function markdownToLines(markdown, config2 = {}) {
91816
91836
  const preprocessedMarkdown = preprocessMarkdown(markdown, config2);
91817
91837
  const nodes = k$1.lexer(preprocessedMarkdown);
@@ -91855,6 +91875,18 @@ function markdownToLines(markdown, config2 = {}) {
91855
91875
  return lines;
91856
91876
  }
91857
91877
  __name(markdownToLines, "markdownToLines");
91878
+ function nonMarkdownToHTML(text2) {
91879
+ if (!text2) {
91880
+ return "";
91881
+ }
91882
+ return `<p>${/**
91883
+ * Replace new lines with <br /> tags.
91884
+ *
91885
+ * Unlike in markdown text, `\n` sequences are treated as line breaks here.
91886
+ */
91887
+ text2.replace(/\\n|\n/g, "<br />")}</p>`;
91888
+ }
91889
+ __name(nonMarkdownToHTML, "nonMarkdownToHTML");
91858
91890
  function markdownToHTML(markdown, { markdownAutoWrap } = {}) {
91859
91891
  const nodes = k$1.lexer(markdown);
91860
91892
  function output(node2) {
@@ -91958,29 +91990,32 @@ function splitLineToFitWidthRecursion(words, checkFit, lines = [], newLine = [])
91958
91990
  return splitLineToFitWidthRecursion(words, checkFit, lines);
91959
91991
  }
91960
91992
  __name(splitLineToFitWidthRecursion, "splitLineToFitWidthRecursion");
91961
- function applyStyle$1(dom, styleFn) {
91993
+ function applyStyle(dom, styleFn) {
91962
91994
  if (styleFn) {
91963
91995
  dom.attr("style", styleFn);
91964
91996
  }
91965
91997
  }
91966
- __name(applyStyle$1, "applyStyle");
91998
+ __name(applyStyle, "applyStyle");
91999
+ var maxSafeSizeForWidth = 16384;
91967
92000
  async function addHtmlSpan(element, node2, width, classes, addBackground = false, config2 = getConfig()) {
91968
92001
  const fo = element.append("foreignObject");
91969
- fo.attr("width", `${10 * width}px`);
91970
- fo.attr("height", `${10 * width}px`);
92002
+ fo.attr("width", `${Math.min(10 * width, maxSafeSizeForWidth)}px`);
92003
+ fo.attr("height", `${Math.min(10 * width, maxSafeSizeForWidth)}px`);
91971
92004
  const div = fo.append("xhtml:div");
91972
92005
  const sanitizedLabel = hasKatex(node2.label) ? await renderKatexSanitized(node2.label.replace(common_default.lineBreakRegex, "\n"), config2) : sanitizeText(node2.label, config2);
91973
92006
  const labelClass = node2.isNode ? "nodeLabel" : "edgeLabel";
91974
92007
  const span = div.append("span");
91975
92008
  span.html(sanitizedLabel);
91976
- applyStyle$1(span, node2.labelStyle);
92009
+ applyStyle(span, node2.labelStyle);
91977
92010
  span.attr("class", `${labelClass} ${classes}`);
91978
- applyStyle$1(div, node2.labelStyle);
92011
+ applyStyle(div, node2.labelStyle);
91979
92012
  div.style("display", "table-cell");
91980
92013
  div.style("white-space", "nowrap");
91981
92014
  div.style("line-height", "1.5");
91982
- div.style("max-width", width + "px");
91983
- div.style("text-align", "center");
92015
+ if (width !== Number.POSITIVE_INFINITY) {
92016
+ div.style("max-width", width + "px");
92017
+ div.style("text-align", "center");
92018
+ }
91984
92019
  div.attr("xmlns", "http://www.w3.org/1999/xhtml");
91985
92020
  if (addBackground) {
91986
92021
  div.attr("class", "labelBkg");
@@ -91995,8 +92030,12 @@ async function addHtmlSpan(element, node2, width, classes, addBackground = false
91995
92030
  return fo.node();
91996
92031
  }
91997
92032
  __name(addHtmlSpan, "addHtmlSpan");
91998
- function createTspan(textElement, lineIndex, lineHeight) {
91999
- return textElement.append("tspan").attr("class", "text-outer-tspan").attr("x", 0).attr("y", lineIndex * lineHeight - 0.1 + "em").attr("dy", lineHeight + "em");
92033
+ function createTspan(textElement, lineIndex, lineHeight, centerText = false) {
92034
+ const tspan = textElement.append("tspan").attr("class", "text-outer-tspan").attr("x", 0).attr("y", lineIndex * lineHeight - 0.1 + "em").attr("dy", lineHeight + "em");
92035
+ if (centerText) {
92036
+ tspan.attr("text-anchor", "middle");
92037
+ }
92038
+ return tspan;
92000
92039
  }
92001
92040
  __name(createTspan, "createTspan");
92002
92041
  function computeWidthOfText(parentNode, lineHeight, line2) {
@@ -92019,17 +92058,20 @@ function computeDimensionOfText(parentNode, lineHeight, text2) {
92019
92058
  return textDimension;
92020
92059
  }
92021
92060
  __name(computeDimensionOfText, "computeDimensionOfText");
92022
- function createFormattedText(width, g2, structuredText, addBackground = false) {
92061
+ function createFormattedText(width, g2, structuredText, addBackground = false, centerText = false) {
92023
92062
  const lineHeight = 1.1;
92024
92063
  const labelGroup = g2.append("g");
92025
92064
  const bkg = labelGroup.insert("rect").attr("class", "background").attr("style", "stroke: none");
92026
92065
  const textElement = labelGroup.append("text").attr("y", "-10.1");
92066
+ if (centerText) {
92067
+ textElement.attr("text-anchor", "middle");
92068
+ }
92027
92069
  let lineIndex = 0;
92028
92070
  for (const line2 of structuredText) {
92029
92071
  const checkWidth = /* @__PURE__ */ __name((line22) => computeWidthOfText(labelGroup, lineHeight, line22) <= width, "checkWidth");
92030
92072
  const linesUnderWidth = checkWidth(line2) ? [line2] : splitLineToFitWidth(line2, checkWidth);
92031
92073
  for (const preparedLine of linesUnderWidth) {
92032
- const tspan = createTspan(textElement, lineIndex, lineHeight);
92074
+ const tspan = createTspan(textElement, lineIndex, lineHeight, centerText);
92033
92075
  updateTextContentAndStyles(tspan, preparedLine);
92034
92076
  lineIndex++;
92035
92077
  }
@@ -92080,7 +92122,11 @@ var createText = /* @__PURE__ */ __name(async (el, text2 = "", {
92080
92122
  isTitle = false,
92081
92123
  classes = "",
92082
92124
  useHtmlLabels = true,
92125
+ markdown = true,
92083
92126
  isNode = true,
92127
+ /**
92128
+ * The width to wrap the text within. Set to `Number.POSITIVE_INFINITY` for no wrapping.
92129
+ */
92084
92130
  width = 200,
92085
92131
  addSvgBackground = false
92086
92132
  } = {}, config2) => {
@@ -92096,7 +92142,7 @@ var createText = /* @__PURE__ */ __name(async (el, text2 = "", {
92096
92142
  addSvgBackground
92097
92143
  );
92098
92144
  if (useHtmlLabels) {
92099
- const htmlText = markdownToHTML(text2, config2);
92145
+ const htmlText = markdown ? markdownToHTML(text2, config2) : nonMarkdownToHTML(text2);
92100
92146
  const decodedReplacedText = await replaceIconSubstring(decodeEntities(htmlText), config2);
92101
92147
  const inputForKatex = text2.replace(/\\\\/g, "\\");
92102
92148
  const node2 = {
@@ -92108,12 +92154,13 @@ var createText = /* @__PURE__ */ __name(async (el, text2 = "", {
92108
92154
  return vertexNode;
92109
92155
  } else {
92110
92156
  const sanitizeBR = text2.replace(/<br\s*\/?>/g, "<br/>");
92111
- const structuredText = markdownToLines(sanitizeBR.replace("<br>", "<br/>"), config2);
92157
+ const structuredText = markdown ? markdownToLines(sanitizeBR.replace("<br>", "<br/>"), config2) : nonMarkdownToLines(sanitizeBR);
92112
92158
  const svgLabel = createFormattedText(
92113
92159
  width,
92114
92160
  el,
92115
92161
  structuredText,
92116
- text2 ? addSvgBackground : false
92162
+ text2 ? addSvgBackground : false,
92163
+ !isNode
92117
92164
  );
92118
92165
  if (isNode) {
92119
92166
  if (/stroke:/.exec(style2)) {
@@ -92127,6 +92174,11 @@ var createText = /* @__PURE__ */ __name(async (el, text2 = "", {
92127
92174
  const edgeLabelTextStyle = style2.replace(/stroke:[^;]+;?/g, "").replace(/stroke-width:[^;]+;?/g, "").replace(/fill:[^;]+;?/g, "").replace(/color:/g, "fill:");
92128
92175
  select(svgLabel).select("text").attr("style", edgeLabelTextStyle);
92129
92176
  }
92177
+ if (isTitle) {
92178
+ select(svgLabel).selectAll("tspan.text-outer-tspan").classed("title-row", true);
92179
+ } else {
92180
+ select(svgLabel).selectAll("tspan.text-outer-tspan").classed("row", true);
92181
+ }
92130
92182
  return svgLabel;
92131
92183
  }
92132
92184
  }, "createText");
@@ -93144,52 +93196,28 @@ var labelHelper = /* @__PURE__ */ __name(async (parent, node2, _classes) => {
93144
93196
  } else {
93145
93197
  label = typeof node2.label === "string" ? node2.label : node2.label[0];
93146
93198
  }
93147
- const text2 = await createText(labelEl, sanitizeText(decodeEntities(label), getConfig2()), {
93148
- useHtmlLabels,
93149
- width: node2.width || getConfig2().flowchart?.wrappingWidth,
93150
- // @ts-expect-error -- This is currently not used. Should this be `classes` instead?
93151
- cssClasses: "markdown-node-label",
93152
- style: node2.labelStyle,
93153
- addSvgBackground: !!node2.icon || !!node2.img
93154
- });
93199
+ const addBackground = !!node2.icon || !!node2.img;
93200
+ const isMarkdown = node2.labelType === "markdown";
93201
+ const text2 = await createText(
93202
+ labelEl,
93203
+ sanitizeText(decodeEntities(label), getConfig2()),
93204
+ {
93205
+ useHtmlLabels,
93206
+ width: node2.width || getConfig2().flowchart?.wrappingWidth,
93207
+ // @ts-expect-error -- This is currently not used. Should this be `classes` instead?
93208
+ cssClasses: isMarkdown ? "markdown-node-label" : void 0,
93209
+ style: node2.labelStyle,
93210
+ addSvgBackground: addBackground,
93211
+ markdown: isMarkdown
93212
+ },
93213
+ getConfig2()
93214
+ );
93155
93215
  let bbox = text2.getBBox();
93156
93216
  const halfPadding = (node2?.padding ?? 0) / 2;
93157
93217
  if (useHtmlLabels) {
93158
93218
  const div = text2.children[0];
93159
93219
  const dv = select(text2);
93160
- const images = div.getElementsByTagName("img");
93161
- if (images) {
93162
- const noImgText = label.replace(/<img[^>]*>/g, "").trim() === "";
93163
- await Promise.all(
93164
- [...images].map(
93165
- (img) => new Promise((res) => {
93166
- function setupImage() {
93167
- img.style.display = "flex";
93168
- img.style.flexDirection = "column";
93169
- if (noImgText) {
93170
- const bodyFontSize = getConfig2().fontSize ? getConfig2().fontSize : window.getComputedStyle(document.body).fontSize;
93171
- const enlargingFactor = 5;
93172
- const [parsedBodyFontSize = defaultConfig_default.fontSize] = parseFontSize(bodyFontSize);
93173
- const width = parsedBodyFontSize * enlargingFactor + "px";
93174
- img.style.minWidth = width;
93175
- img.style.maxWidth = width;
93176
- } else {
93177
- img.style.width = "100%";
93178
- }
93179
- res(img);
93180
- }
93181
- __name(setupImage, "setupImage");
93182
- setTimeout(() => {
93183
- if (img.complete) {
93184
- setupImage();
93185
- }
93186
- });
93187
- img.addEventListener("error", setupImage);
93188
- img.addEventListener("load", setupImage);
93189
- })
93190
- )
93191
- );
93192
- }
93220
+ await configureLabelImages(div, label);
93193
93221
  bbox = div.getBoundingClientRect();
93194
93222
  dv.attr("width", bbox.width);
93195
93223
  dv.attr("height", bbox.height);
@@ -93206,7 +93234,7 @@ var labelHelper = /* @__PURE__ */ __name(async (parent, node2, _classes) => {
93206
93234
  return { shapeSvg, bbox, halfPadding, label: labelEl };
93207
93235
  }, "labelHelper");
93208
93236
  var insertLabel = /* @__PURE__ */ __name(async (parent, label, options) => {
93209
- const useHtmlLabels = options.useHtmlLabels || evaluate(getConfig2()?.flowchart?.htmlLabels);
93237
+ const useHtmlLabels = options.useHtmlLabels ?? getEffectiveHtmlLabels(getConfig2());
93210
93238
  const labelEl = parent.insert("g").attr("class", "label").attr("style", options.labelStyle || "");
93211
93239
  const text2 = await createText(labelEl, sanitizeText(decodeEntities(label), getConfig2()), {
93212
93240
  useHtmlLabels,
@@ -93216,7 +93244,7 @@ var insertLabel = /* @__PURE__ */ __name(async (parent, label, options) => {
93216
93244
  });
93217
93245
  let bbox = text2.getBBox();
93218
93246
  const halfPadding = options.padding / 2;
93219
- if (evaluate(getConfig2()?.flowchart?.htmlLabels)) {
93247
+ if (getEffectiveHtmlLabels(getConfig2())) {
93220
93248
  const div = text2.children[0];
93221
93249
  const dv = select(text2);
93222
93250
  bbox = div.getBoundingClientRect();
@@ -93302,76 +93330,26 @@ var intersectRect = /* @__PURE__ */ __name((node2, point2) => {
93302
93330
  return { x: x2 + sx, y: y3 + sy };
93303
93331
  }, "intersectRect");
93304
93332
  var intersect_rect_default = intersectRect;
93305
- function applyStyle(dom, styleFn) {
93306
- if (styleFn) {
93307
- dom.attr("style", styleFn);
93308
- }
93309
- }
93310
- __name(applyStyle, "applyStyle");
93311
- async function addHtmlLabel(node2) {
93312
- const fo = select(document.createElementNS("http://www.w3.org/2000/svg", "foreignObject"));
93313
- const div = fo.append("xhtml:div");
93314
- const config2 = getConfig2();
93315
- let label = node2.label;
93316
- if (node2.label && hasKatex(node2.label)) {
93317
- label = await renderKatexSanitized(node2.label.replace(common_default.lineBreakRegex, "\n"), config2);
93318
- }
93319
- const labelClass = node2.isNode ? "nodeLabel" : "edgeLabel";
93320
- const labelSpan = '<span class="' + labelClass + '" ' + (node2.labelStyle ? 'style="' + node2.labelStyle + '"' : "") + // codeql [js/html-constructed-from-input] : false positive
93321
- ">" + label + "</span>";
93322
- div.html(sanitizeText(labelSpan, config2));
93323
- applyStyle(div, node2.labelStyle);
93324
- div.style("display", "inline-block");
93325
- div.style("padding-right", "1px");
93326
- div.style("white-space", "nowrap");
93327
- div.attr("xmlns", "http://www.w3.org/1999/xhtml");
93328
- return fo.node();
93329
- }
93330
- __name(addHtmlLabel, "addHtmlLabel");
93331
- var createLabel = /* @__PURE__ */ __name(async (_vertexText, style2, isTitle, isNode) => {
93333
+ var createLabel = /* @__PURE__ */ __name(async (element, _vertexText, style2, isTitle = false, isNode = false) => {
93332
93334
  let vertexText = _vertexText || "";
93333
93335
  if (typeof vertexText === "object") {
93334
93336
  vertexText = vertexText[0];
93335
93337
  }
93336
- if (evaluate(getConfig2().flowchart.htmlLabels)) {
93337
- vertexText = vertexText.replace(/\\n|\n/g, "<br />");
93338
- log.info("vertexText" + vertexText);
93339
- const node2 = {
93338
+ const config2 = getConfig2();
93339
+ const useHtmlLabels = getEffectiveHtmlLabels(config2);
93340
+ return await createText(
93341
+ element,
93342
+ vertexText,
93343
+ {
93344
+ style: style2,
93345
+ isTitle,
93346
+ useHtmlLabels,
93347
+ markdown: false,
93340
93348
  isNode,
93341
- label: decodeEntities(vertexText).replace(
93342
- /fa[blrs]?:fa-[\w-]+/g,
93343
- (s2) => `<i class='${s2.replace(":", " ")}'></i>`
93344
- ),
93345
- labelStyle: style2 ? style2.replace("fill:", "color:") : style2
93346
- };
93347
- let vertexNode = await addHtmlLabel(node2);
93348
- return vertexNode;
93349
- } else {
93350
- const svgLabel = document.createElementNS("http://www.w3.org/2000/svg", "text");
93351
- svgLabel.setAttribute("style", style2.replace("color:", "fill:"));
93352
- let rows = [];
93353
- if (typeof vertexText === "string") {
93354
- rows = vertexText.split(/\\n|\n|<br\s*\/?>/gi);
93355
- } else if (Array.isArray(vertexText)) {
93356
- rows = vertexText;
93357
- } else {
93358
- rows = [];
93359
- }
93360
- for (const row of rows) {
93361
- const tspan = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
93362
- tspan.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space", "preserve");
93363
- tspan.setAttribute("dy", "1em");
93364
- tspan.setAttribute("x", "0");
93365
- if (isTitle) {
93366
- tspan.setAttribute("class", "title-row");
93367
- } else {
93368
- tspan.setAttribute("class", "row");
93369
- }
93370
- tspan.textContent = row.trim();
93371
- svgLabel.appendChild(tspan);
93372
- }
93373
- return svgLabel;
93374
- }
93349
+ width: Number.POSITIVE_INFINITY
93350
+ },
93351
+ config2
93352
+ );
93375
93353
  }, "createLabel");
93376
93354
  var createLabel_default = createLabel;
93377
93355
  var createRoundedRectPathD = /* @__PURE__ */ __name((x2, y3, totalWidth, totalHeight, radius) => [
@@ -93437,15 +93415,21 @@ var rect = /* @__PURE__ */ __name(async (parent, node2) => {
93437
93415
  const { clusterBkg, clusterBorder } = themeVariables;
93438
93416
  const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node2);
93439
93417
  const shapeSvg = parent.insert("g").attr("class", "cluster " + node2.cssClasses).attr("id", node2.id).attr("data-look", node2.look);
93440
- const useHtmlLabels = evaluate(siteConfig2.flowchart.htmlLabels);
93418
+ const useHtmlLabels = getEffectiveHtmlLabels(siteConfig2);
93441
93419
  const labelEl = shapeSvg.insert("g").attr("class", "cluster-label ");
93442
- const text2 = await createText(labelEl, node2.label, {
93443
- style: node2.labelStyle,
93444
- useHtmlLabels,
93445
- isNode: true
93446
- });
93420
+ let text2;
93421
+ if (node2.labelType === "markdown") {
93422
+ text2 = await createText(labelEl, node2.label, {
93423
+ style: node2.labelStyle,
93424
+ useHtmlLabels,
93425
+ isNode: true,
93426
+ width: node2.width
93427
+ });
93428
+ } else {
93429
+ text2 = await createLabel_default(labelEl, node2.label, node2.labelStyle || "", false, true);
93430
+ }
93447
93431
  let bbox = text2.getBBox();
93448
- if (evaluate(siteConfig2.flowchart.htmlLabels)) {
93432
+ if (getEffectiveHtmlLabels(siteConfig2)) {
93449
93433
  const div = text2.children[0];
93450
93434
  const dv = select(text2);
93451
93435
  bbox = div.getBoundingClientRect();
@@ -93528,9 +93512,9 @@ var roundedWithTitle = /* @__PURE__ */ __name(async (parent, node2) => {
93528
93512
  const outerRectG = shapeSvg.insert("g", ":first-child");
93529
93513
  const label = shapeSvg.insert("g").attr("class", "cluster-label");
93530
93514
  let innerRect = shapeSvg.append("rect");
93531
- const text2 = label.node().appendChild(await createLabel_default(node2.label, node2.labelStyle, void 0, true));
93515
+ const text2 = await createLabel_default(label, node2.label, node2.labelStyle, void 0, true);
93532
93516
  let bbox = text2.getBBox();
93533
- if (evaluate(siteConfig2.flowchart.htmlLabels)) {
93517
+ if (getEffectiveHtmlLabels(siteConfig2)) {
93534
93518
  const div = text2.children[0];
93535
93519
  const dv = select(text2);
93536
93520
  bbox = div.getBoundingClientRect();
@@ -93579,7 +93563,7 @@ var roundedWithTitle = /* @__PURE__ */ __name(async (parent, node2) => {
93579
93563
  }
93580
93564
  label.attr(
93581
93565
  "transform",
93582
- `translate(${node2.x - bbox.width / 2}, ${y3 + 1 - (evaluate(siteConfig2.flowchart.htmlLabels) ? 0 : 3)})`
93566
+ `translate(${node2.x - bbox.width / 2}, ${y3 + 1 - (getEffectiveHtmlLabels(siteConfig2) ? 0 : 3)})`
93583
93567
  );
93584
93568
  const rectBox = rect2.node().getBBox();
93585
93569
  node2.height = rectBox.height;
@@ -93598,7 +93582,7 @@ var kanbanSection = /* @__PURE__ */ __name(async (parent, node2) => {
93598
93582
  const { clusterBkg, clusterBorder } = themeVariables;
93599
93583
  const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node2);
93600
93584
  const shapeSvg = parent.insert("g").attr("class", "cluster " + node2.cssClasses).attr("id", node2.id).attr("data-look", node2.look);
93601
- const useHtmlLabels = evaluate(siteConfig2.flowchart.htmlLabels);
93585
+ const useHtmlLabels = getEffectiveHtmlLabels(siteConfig2);
93602
93586
  const labelEl = shapeSvg.insert("g").attr("class", "cluster-label ");
93603
93587
  const text2 = await createText(labelEl, node2.label, {
93604
93588
  style: node2.labelStyle,
@@ -93607,7 +93591,7 @@ var kanbanSection = /* @__PURE__ */ __name(async (parent, node2) => {
93607
93591
  width: node2.width
93608
93592
  });
93609
93593
  let bbox = text2.getBBox();
93610
- if (evaluate(siteConfig2.flowchart.htmlLabels)) {
93594
+ if (getEffectiveHtmlLabels(siteConfig2)) {
93611
93595
  const div = text2.children[0];
93612
93596
  const dv = select(text2);
93613
93597
  bbox = div.getBoundingClientRect();
@@ -94719,44 +94703,49 @@ async function halfRoundedRectangle(parent, node2) {
94719
94703
  return shapeSvg;
94720
94704
  }
94721
94705
  __name(halfRoundedRectangle, "halfRoundedRectangle");
94706
+ var createHexagonPathD = /* @__PURE__ */ __name((x2, y3, width, height, m2) => {
94707
+ return [
94708
+ `M${x2 + m2},${y3}`,
94709
+ `L${x2 + width - m2},${y3}`,
94710
+ `L${x2 + width},${y3 - height / 2}`,
94711
+ `L${x2 + width - m2},${y3 - height}`,
94712
+ `L${x2 + m2},${y3 - height}`,
94713
+ `L${x2},${y3 - height / 2}`,
94714
+ "Z"
94715
+ ].join(" ");
94716
+ }, "createHexagonPathD");
94722
94717
  async function hexagon(parent, node2) {
94723
94718
  const { labelStyles, nodeStyles } = styles2String(node2);
94724
94719
  node2.labelStyle = labelStyles;
94725
94720
  const { shapeSvg, bbox } = await labelHelper(parent, node2, getNodeClasses(node2));
94726
- const h2 = bbox.height + (node2.padding ?? 0);
94727
- const w2 = bbox.width + (node2.padding ?? 0) * 2.5;
94728
- const { cssStyles } = node2;
94729
- const rc = at.svg(shapeSvg);
94730
- const options = userNodeOverrides(node2, {});
94731
- if (node2.look !== "handDrawn") {
94732
- options.roughness = 0;
94733
- options.fillStyle = "solid";
94734
- }
94735
- let halfWidth = w2 / 2;
94736
- const m2 = halfWidth / 6;
94737
- halfWidth = halfWidth + m2;
94738
- const halfHeight = h2 / 2;
94739
- const fixedLength = halfHeight / 2;
94740
- const deducedWidth = halfWidth - fixedLength;
94721
+ const f2 = 4;
94722
+ const h2 = bbox.height + node2.padding;
94723
+ const m2 = h2 / f2;
94724
+ const w2 = bbox.width + 2 * m2 + node2.padding;
94741
94725
  const points = [
94742
- { x: -deducedWidth, y: -halfHeight },
94743
- { x: 0, y: -halfHeight },
94744
- { x: deducedWidth, y: -halfHeight },
94745
- { x: halfWidth, y: 0 },
94746
- { x: deducedWidth, y: halfHeight },
94747
- { x: 0, y: halfHeight },
94748
- { x: -deducedWidth, y: halfHeight },
94749
- { x: -halfWidth, y: 0 }
94726
+ { x: m2, y: 0 },
94727
+ { x: w2 - m2, y: 0 },
94728
+ { x: w2, y: -h2 / 2 },
94729
+ { x: w2 - m2, y: -h2 },
94730
+ { x: m2, y: -h2 },
94731
+ { x: 0, y: -h2 / 2 }
94750
94732
  ];
94751
- const pathData = createPathFromPoints(points);
94752
- const shapeNode = rc.path(pathData, options);
94753
- const polygon = shapeSvg.insert(() => shapeNode, ":first-child");
94754
- polygon.attr("class", "basic label-container");
94755
- if (cssStyles && node2.look !== "handDrawn") {
94756
- polygon.selectChildren("path").attr("style", cssStyles);
94733
+ let polygon;
94734
+ const { cssStyles } = node2;
94735
+ if (node2.look === "handDrawn") {
94736
+ const rc = at.svg(shapeSvg);
94737
+ const options = userNodeOverrides(node2, {});
94738
+ const pathData = createHexagonPathD(0, 0, w2, h2, m2);
94739
+ const roughNode = rc.path(pathData, options);
94740
+ polygon = shapeSvg.insert(() => roughNode, ":first-child").attr("transform", `translate(${-w2 / 2}, ${h2 / 2})`);
94741
+ if (cssStyles) {
94742
+ polygon.attr("style", cssStyles);
94743
+ }
94744
+ } else {
94745
+ polygon = insertPolygonShape(shapeSvg, w2, h2, points);
94757
94746
  }
94758
- if (nodeStyles && node2.look !== "handDrawn") {
94759
- polygon.selectChildren("path").attr("style", nodeStyles);
94747
+ if (nodeStyles) {
94748
+ polygon.attr("style", nodeStyles);
94760
94749
  }
94761
94750
  node2.width = w2;
94762
94751
  node2.height = h2;
@@ -95775,7 +95764,7 @@ __name(multiWaveEdgedRectangle, "multiWaveEdgedRectangle");
95775
95764
  async function note(parent, node2, { config: { themeVariables } }) {
95776
95765
  const { labelStyles, nodeStyles } = styles2String(node2);
95777
95766
  node2.labelStyle = labelStyles;
95778
- const useHtmlLabels = node2.useHtmlLabels || getConfig().flowchart?.htmlLabels !== false;
95767
+ const useHtmlLabels = node2.useHtmlLabels || getEffectiveHtmlLabels(getConfig());
95779
95768
  if (!useHtmlLabels) {
95780
95769
  node2.centerLabel = true;
95781
95770
  }
@@ -95932,9 +95921,9 @@ async function rectWithTitle(parent, node2) {
95932
95921
  const label = shapeSvg.insert("g").attr("class", "label").attr("style", nodeStyles);
95933
95922
  const description = node2.description;
95934
95923
  const title = node2.label;
95935
- const text2 = label.node().appendChild(await createLabel_default(title, node2.labelStyle, true, true));
95924
+ const text2 = await createLabel_default(label, title, node2.labelStyle, true, true);
95936
95925
  let bbox = { width: 0, height: 0 };
95937
- if (evaluate(getConfig2()?.flowchart?.htmlLabels)) {
95926
+ if (getEffectiveHtmlLabels(getConfig2())) {
95938
95927
  const div2 = text2.children[0];
95939
95928
  const dv2 = select(text2);
95940
95929
  bbox = div2.getBoundingClientRect();
@@ -95944,13 +95933,12 @@ async function rectWithTitle(parent, node2) {
95944
95933
  log.info("Text 2", description);
95945
95934
  const textRows = description || [];
95946
95935
  const titleBox = text2.getBBox();
95947
- const descr = label.node().appendChild(
95948
- await createLabel_default(
95949
- textRows.join ? textRows.join("<br/>") : textRows,
95950
- node2.labelStyle,
95951
- true,
95952
- true
95953
- )
95936
+ const descr = await createLabel_default(
95937
+ label,
95938
+ Array.isArray(textRows) ? textRows.join("<br/>") : textRows,
95939
+ node2.labelStyle,
95940
+ true,
95941
+ true
95954
95942
  );
95955
95943
  const div = descr.children[0];
95956
95944
  const dv = select(descr);
@@ -96012,108 +96000,14 @@ async function rectWithTitle(parent, node2) {
96012
96000
  return shapeSvg;
96013
96001
  }
96014
96002
  __name(rectWithTitle, "rectWithTitle");
96015
- function generateArcPoints2(x1, y1, x2, y22, rx, ry, clockwise) {
96016
- const numPoints = 20;
96017
- const midX = (x1 + x2) / 2;
96018
- const midY = (y1 + y22) / 2;
96019
- const angle = Math.atan2(y22 - y1, x2 - x1);
96020
- const dx = (x2 - x1) / 2;
96021
- const dy = (y22 - y1) / 2;
96022
- const transformedX = dx / rx;
96023
- const transformedY = dy / ry;
96024
- const distance2 = Math.sqrt(transformedX ** 2 + transformedY ** 2);
96025
- if (distance2 > 1) {
96026
- throw new Error("The given radii are too small to create an arc between the points.");
96027
- }
96028
- const scaledCenterDistance = Math.sqrt(1 - distance2 ** 2);
96029
- const centerX = midX + scaledCenterDistance * ry * Math.sin(angle) * (clockwise ? -1 : 1);
96030
- const centerY = midY - scaledCenterDistance * rx * Math.cos(angle) * (clockwise ? -1 : 1);
96031
- const startAngle = Math.atan2((y1 - centerY) / ry, (x1 - centerX) / rx);
96032
- const endAngle = Math.atan2((y22 - centerY) / ry, (x2 - centerX) / rx);
96033
- let angleRange = endAngle - startAngle;
96034
- if (clockwise && angleRange < 0) {
96035
- angleRange += 2 * Math.PI;
96036
- }
96037
- if (!clockwise && angleRange > 0) {
96038
- angleRange -= 2 * Math.PI;
96039
- }
96040
- const points = [];
96041
- for (let i2 = 0; i2 < numPoints; i2++) {
96042
- const t2 = i2 / (numPoints - 1);
96043
- const angle2 = startAngle + t2 * angleRange;
96044
- const x3 = centerX + rx * Math.cos(angle2);
96045
- const y3 = centerY + ry * Math.sin(angle2);
96046
- points.push({ x: x3, y: y3 });
96047
- }
96048
- return points;
96049
- }
96050
- __name(generateArcPoints2, "generateArcPoints");
96051
96003
  async function roundedRect(parent, node2) {
96052
- const { labelStyles, nodeStyles } = styles2String(node2);
96053
- node2.labelStyle = labelStyles;
96054
- const { shapeSvg, bbox } = await labelHelper(parent, node2, getNodeClasses(node2));
96055
- const labelPaddingX = node2?.padding ?? 0;
96056
- const labelPaddingY = node2?.padding ?? 0;
96057
- const w2 = (node2?.width ? node2?.width : bbox.width) + labelPaddingX * 2;
96058
- const h2 = (node2?.height ? node2?.height : bbox.height) + labelPaddingY * 2;
96059
- const radius = node2.radius || 5;
96060
- const taper = node2.taper || 5;
96061
- const { cssStyles } = node2;
96062
- const rc = at.svg(shapeSvg);
96063
- const options = userNodeOverrides(node2, {});
96064
- if (node2.stroke) {
96065
- options.stroke = node2.stroke;
96066
- }
96067
- if (node2.look !== "handDrawn") {
96068
- options.roughness = 0;
96069
- options.fillStyle = "solid";
96070
- }
96071
- const points = [
96072
- // Top edge (left to right)
96073
- { x: -w2 / 2 + taper, y: -h2 / 2 },
96074
- // Top-left corner start (1)
96075
- { x: w2 / 2 - taper, y: -h2 / 2 },
96076
- // Top-right corner start (2)
96077
- ...generateArcPoints2(w2 / 2 - taper, -h2 / 2, w2 / 2, -h2 / 2 + taper, radius, radius, true),
96078
- // Top-left arc (2 to 3)
96079
- // Right edge (top to bottom)
96080
- { x: w2 / 2, y: -h2 / 2 + taper },
96081
- // Top-right taper point (3)
96082
- { x: w2 / 2, y: h2 / 2 - taper },
96083
- // Bottom-right taper point (4)
96084
- ...generateArcPoints2(w2 / 2, h2 / 2 - taper, w2 / 2 - taper, h2 / 2, radius, radius, true),
96085
- // Top-left arc (4 to 5)
96086
- // Bottom edge (right to left)
96087
- { x: w2 / 2 - taper, y: h2 / 2 },
96088
- // Bottom-right corner start (5)
96089
- { x: -w2 / 2 + taper, y: h2 / 2 },
96090
- // Bottom-left corner start (6)
96091
- ...generateArcPoints2(-w2 / 2 + taper, h2 / 2, -w2 / 2, h2 / 2 - taper, radius, radius, true),
96092
- // Top-left arc (4 to 5)
96093
- // Left edge (bottom to top)
96094
- { x: -w2 / 2, y: h2 / 2 - taper },
96095
- // Bottom-left taper point (7)
96096
- { x: -w2 / 2, y: -h2 / 2 + taper },
96097
- // Top-left taper point (8)
96098
- ...generateArcPoints2(-w2 / 2, -h2 / 2 + taper, -w2 / 2 + taper, -h2 / 2, radius, radius, true)
96099
- // Top-left arc (4 to 5)
96100
- ];
96101
- const pathData = createPathFromPoints(points);
96102
- const shapeNode = rc.path(pathData, options);
96103
- const polygon = shapeSvg.insert(() => shapeNode, ":first-child");
96104
- polygon.attr("class", "basic label-container outer-path");
96105
- if (cssStyles && node2.look !== "handDrawn") {
96106
- polygon.selectChildren("path").attr("style", cssStyles);
96107
- }
96108
- if (nodeStyles && node2.look !== "handDrawn") {
96109
- polygon.selectChildren("path").attr("style", nodeStyles);
96110
- }
96111
- updateNodeBounds(node2, polygon);
96112
- node2.intersect = function(point2) {
96113
- const pos = intersect_default.polygon(node2, points, point2);
96114
- return pos;
96004
+ const options = {
96005
+ rx: 5,
96006
+ ry: 5,
96007
+ labelPaddingX: (node2?.padding || 0) * 1,
96008
+ labelPaddingY: (node2?.padding || 0) * 1
96115
96009
  };
96116
- return shapeSvg;
96010
+ return drawRect(parent, node2, options);
96117
96011
  }
96118
96012
  __name(roundedRect, "roundedRect");
96119
96013
  async function shadedProcess(parent, node2) {
@@ -96679,7 +96573,7 @@ async function triangle(parent, node2) {
96679
96573
  const { labelStyles, nodeStyles } = styles2String(node2);
96680
96574
  node2.labelStyle = labelStyles;
96681
96575
  const { shapeSvg, bbox, label } = await labelHelper(parent, node2, getNodeClasses(node2));
96682
- const useHtmlLabels = evaluate(getConfig2().flowchart?.htmlLabels);
96576
+ const useHtmlLabels = node2.useHtmlLabels || getEffectiveHtmlLabels(getConfig2());
96683
96577
  const w2 = bbox.width + (node2.padding ?? 0);
96684
96578
  const h2 = w2 + bbox.height;
96685
96579
  const tw = w2 + bbox.height;
@@ -98337,12 +98231,12 @@ var positionNode = /* @__PURE__ */ __name((node2) => {
98337
98231
  }
98338
98232
  return diff;
98339
98233
  }, "positionNode");
98340
- var addEdgeMarkers = /* @__PURE__ */ __name((svgPath, edge, url, id28, diagramType, strokeColor) => {
98234
+ var addEdgeMarkers = /* @__PURE__ */ __name((svgPath, edge, url, id30, diagramType, strokeColor) => {
98341
98235
  if (edge.arrowTypeStart) {
98342
- addEdgeMarker(svgPath, "start", edge.arrowTypeStart, url, id28, diagramType, strokeColor);
98236
+ addEdgeMarker(svgPath, "start", edge.arrowTypeStart, url, id30, diagramType, strokeColor);
98343
98237
  }
98344
98238
  if (edge.arrowTypeEnd) {
98345
- addEdgeMarker(svgPath, "end", edge.arrowTypeEnd, url, id28, diagramType, strokeColor);
98239
+ addEdgeMarker(svgPath, "end", edge.arrowTypeEnd, url, id30, diagramType, strokeColor);
98346
98240
  }
98347
98241
  }, "addEdgeMarkers");
98348
98242
  var arrowTypesMap = {
@@ -98362,7 +98256,7 @@ var arrowTypesMap = {
98362
98256
  requirement_arrow: { type: "requirement_arrow", fill: false },
98363
98257
  requirement_contains: { type: "requirement_contains", fill: false }
98364
98258
  };
98365
- var addEdgeMarker = /* @__PURE__ */ __name((svgPath, position2, arrowType, url, id28, diagramType, strokeColor) => {
98259
+ var addEdgeMarker = /* @__PURE__ */ __name((svgPath, position2, arrowType, url, id30, diagramType, strokeColor) => {
98366
98260
  const arrowTypeInfo = arrowTypesMap[arrowType];
98367
98261
  if (!arrowTypeInfo) {
98368
98262
  log.warn(`Unknown arrow type: ${arrowType}`);
@@ -98370,7 +98264,7 @@ var addEdgeMarker = /* @__PURE__ */ __name((svgPath, position2, arrowType, url,
98370
98264
  }
98371
98265
  const endMarkerType = arrowTypeInfo.type;
98372
98266
  const suffix = position2 === "start" ? "Start" : "End";
98373
- const originalMarkerId = `${id28}_${diagramType}-${endMarkerType}${suffix}`;
98267
+ const originalMarkerId = `${id30}_${diagramType}-${endMarkerType}${suffix}`;
98374
98268
  if (strokeColor && strokeColor.trim() !== "") {
98375
98269
  const colorId = strokeColor.replace(/[^\dA-Za-z]/g, "_");
98376
98270
  const coloredMarkerId = `${originalMarkerId}_${colorId}`;
@@ -98394,6 +98288,9 @@ var addEdgeMarker = /* @__PURE__ */ __name((svgPath, position2, arrowType, url,
98394
98288
  svgPath.attr(`marker-${position2}`, `url(${url}#${originalMarkerId})`);
98395
98289
  }
98396
98290
  }, "addEdgeMarker");
98291
+ var resolveEdgeCurveType = /* @__PURE__ */ __name((edgeCurve) => {
98292
+ return typeof edgeCurve === "string" ? edgeCurve : getConfig2()?.flowchart?.curve;
98293
+ }, "resolveEdgeCurveType");
98397
98294
  var edgeLabels = /* @__PURE__ */ new Map();
98398
98295
  var terminalLabels = /* @__PURE__ */ new Map();
98399
98296
  var clear = /* @__PURE__ */ __name(() => {
@@ -98401,46 +98298,79 @@ var clear = /* @__PURE__ */ __name(() => {
98401
98298
  terminalLabels.clear();
98402
98299
  }, "clear");
98403
98300
  var getLabelStyles = /* @__PURE__ */ __name((styleArray) => {
98404
- let styles2 = styleArray ? styleArray.reduce((acc, style2) => acc + ";" + style2, "") : "";
98405
- return styles2;
98301
+ if (!styleArray) {
98302
+ return "";
98303
+ }
98304
+ if (typeof styleArray === "string") {
98305
+ return styleArray;
98306
+ }
98307
+ return styleArray.reduce((acc, style2) => acc + ";" + style2, "");
98406
98308
  }, "getLabelStyles");
98407
98309
  var insertEdgeLabel = /* @__PURE__ */ __name(async (elem, edge) => {
98408
- let useHtmlLabels = evaluate(getConfig2().flowchart.htmlLabels);
98310
+ const config2 = getConfig2();
98311
+ let useHtmlLabels = getEffectiveHtmlLabels(config2);
98409
98312
  const { labelStyles } = styles2String(edge);
98410
98313
  edge.labelStyle = labelStyles;
98411
- const labelElement = await createText(elem, edge.label, {
98412
- style: edge.labelStyle,
98413
- useHtmlLabels,
98414
- addSvgBackground: true,
98415
- isNode: false
98416
- });
98417
- log.info("abc82", edge, edge.labelType);
98418
98314
  const edgeLabel = elem.insert("g").attr("class", "edgeLabel");
98419
98315
  const label = edgeLabel.insert("g").attr("class", "label").attr("data-id", edge.id);
98316
+ const isMarkdown = edge.labelType === "markdown";
98317
+ const markdownWidth = void 0;
98318
+ const labelElement = await createText(
98319
+ elem,
98320
+ edge.label,
98321
+ {
98322
+ style: getLabelStyles(edge.labelStyle),
98323
+ useHtmlLabels,
98324
+ addSvgBackground: true,
98325
+ isNode: false,
98326
+ markdown: isMarkdown,
98327
+ // Plain text edge labels should auto-wrap, markdown edge labels respect markdownAutoWrap config
98328
+ width: isMarkdown ? markdownWidth : void 0
98329
+ },
98330
+ config2
98331
+ );
98420
98332
  label.node().appendChild(labelElement);
98333
+ log.info("abc82", edge, edge.labelType);
98421
98334
  let bbox = labelElement.getBBox();
98335
+ let transformBbox = bbox;
98422
98336
  if (useHtmlLabels) {
98423
98337
  const div = labelElement.children[0];
98424
98338
  const dv = select(labelElement);
98425
98339
  bbox = div.getBoundingClientRect();
98340
+ transformBbox = bbox;
98426
98341
  dv.attr("width", bbox.width);
98427
98342
  dv.attr("height", bbox.height);
98343
+ } else {
98344
+ const textEl = select(labelElement).select("text").node();
98345
+ if (textEl && typeof textEl.getBBox === "function") {
98346
+ transformBbox = textEl.getBBox();
98347
+ }
98428
98348
  }
98429
- label.attr("transform", "translate(" + -bbox.width / 2 + ", " + -bbox.height / 2 + ")");
98349
+ label.attr("transform", computeLabelTransform(transformBbox, useHtmlLabels));
98430
98350
  edgeLabels.set(edge.id, edgeLabel);
98431
98351
  edge.width = bbox.width;
98432
98352
  edge.height = bbox.height;
98433
98353
  let fo;
98434
98354
  if (edge.startLabelLeft) {
98355
+ const startEdgeLabelLeft = elem.insert("g").attr("class", "edgeTerminals");
98356
+ const inner2 = startEdgeLabelLeft.insert("g").attr("class", "inner");
98435
98357
  const startLabelElement = await createLabel_default(
98358
+ inner2,
98436
98359
  edge.startLabelLeft,
98437
- getLabelStyles(edge.labelStyle)
98360
+ getLabelStyles(edge.labelStyle) || "",
98361
+ false,
98362
+ false
98438
98363
  );
98439
- const startEdgeLabelLeft = elem.insert("g").attr("class", "edgeTerminals");
98440
- const inner2 = startEdgeLabelLeft.insert("g").attr("class", "inner");
98441
- fo = inner2.node().appendChild(startLabelElement);
98442
- const slBox = startLabelElement.getBBox();
98443
- inner2.attr("transform", "translate(" + -slBox.width / 2 + ", " + -slBox.height / 2 + ")");
98364
+ fo = startLabelElement;
98365
+ let slBox = startLabelElement.getBBox();
98366
+ if (useHtmlLabels) {
98367
+ const div = startLabelElement.children[0];
98368
+ const dv = select(startLabelElement);
98369
+ slBox = div.getBoundingClientRect();
98370
+ dv.attr("width", slBox.width);
98371
+ dv.attr("height", slBox.height);
98372
+ }
98373
+ inner2.attr("transform", computeLabelTransform(slBox, useHtmlLabels));
98444
98374
  if (!terminalLabels.get(edge.id)) {
98445
98375
  terminalLabels.set(edge.id, {});
98446
98376
  }
@@ -98448,16 +98378,26 @@ var insertEdgeLabel = /* @__PURE__ */ __name(async (elem, edge) => {
98448
98378
  setTerminalWidth(fo, edge.startLabelLeft);
98449
98379
  }
98450
98380
  if (edge.startLabelRight) {
98381
+ const startEdgeLabelRight = elem.insert("g").attr("class", "edgeTerminals");
98382
+ const inner2 = startEdgeLabelRight.insert("g").attr("class", "inner");
98451
98383
  const startLabelElement = await createLabel_default(
98384
+ inner2,
98452
98385
  edge.startLabelRight,
98453
- getLabelStyles(edge.labelStyle)
98386
+ getLabelStyles(edge.labelStyle) || "",
98387
+ false,
98388
+ false
98454
98389
  );
98455
- const startEdgeLabelRight = elem.insert("g").attr("class", "edgeTerminals");
98456
- const inner2 = startEdgeLabelRight.insert("g").attr("class", "inner");
98457
- fo = startEdgeLabelRight.node().appendChild(startLabelElement);
98390
+ fo = startLabelElement;
98458
98391
  inner2.node().appendChild(startLabelElement);
98459
- const slBox = startLabelElement.getBBox();
98460
- inner2.attr("transform", "translate(" + -slBox.width / 2 + ", " + -slBox.height / 2 + ")");
98392
+ let slBox = startLabelElement.getBBox();
98393
+ if (useHtmlLabels) {
98394
+ const div = startLabelElement.children[0];
98395
+ const dv = select(startLabelElement);
98396
+ slBox = div.getBoundingClientRect();
98397
+ dv.attr("width", slBox.width);
98398
+ dv.attr("height", slBox.height);
98399
+ }
98400
+ inner2.attr("transform", computeLabelTransform(slBox, useHtmlLabels));
98461
98401
  if (!terminalLabels.get(edge.id)) {
98462
98402
  terminalLabels.set(edge.id, {});
98463
98403
  }
@@ -98465,12 +98405,25 @@ var insertEdgeLabel = /* @__PURE__ */ __name(async (elem, edge) => {
98465
98405
  setTerminalWidth(fo, edge.startLabelRight);
98466
98406
  }
98467
98407
  if (edge.endLabelLeft) {
98468
- const endLabelElement = await createLabel_default(edge.endLabelLeft, getLabelStyles(edge.labelStyle));
98469
98408
  const endEdgeLabelLeft = elem.insert("g").attr("class", "edgeTerminals");
98470
98409
  const inner2 = endEdgeLabelLeft.insert("g").attr("class", "inner");
98471
- fo = inner2.node().appendChild(endLabelElement);
98472
- const slBox = endLabelElement.getBBox();
98473
- inner2.attr("transform", "translate(" + -slBox.width / 2 + ", " + -slBox.height / 2 + ")");
98410
+ const endLabelElement = await createLabel_default(
98411
+ inner2,
98412
+ edge.endLabelLeft,
98413
+ getLabelStyles(edge.labelStyle) || "",
98414
+ false,
98415
+ false
98416
+ );
98417
+ fo = endLabelElement;
98418
+ let slBox = endLabelElement.getBBox();
98419
+ if (useHtmlLabels) {
98420
+ const div = endLabelElement.children[0];
98421
+ const dv = select(endLabelElement);
98422
+ slBox = div.getBoundingClientRect();
98423
+ dv.attr("width", slBox.width);
98424
+ dv.attr("height", slBox.height);
98425
+ }
98426
+ inner2.attr("transform", computeLabelTransform(slBox, useHtmlLabels));
98474
98427
  endEdgeLabelLeft.node().appendChild(endLabelElement);
98475
98428
  if (!terminalLabels.get(edge.id)) {
98476
98429
  terminalLabels.set(edge.id, {});
@@ -98479,12 +98432,25 @@ var insertEdgeLabel = /* @__PURE__ */ __name(async (elem, edge) => {
98479
98432
  setTerminalWidth(fo, edge.endLabelLeft);
98480
98433
  }
98481
98434
  if (edge.endLabelRight) {
98482
- const endLabelElement = await createLabel_default(edge.endLabelRight, getLabelStyles(edge.labelStyle));
98483
98435
  const endEdgeLabelRight = elem.insert("g").attr("class", "edgeTerminals");
98484
98436
  const inner2 = endEdgeLabelRight.insert("g").attr("class", "inner");
98485
- fo = inner2.node().appendChild(endLabelElement);
98486
- const slBox = endLabelElement.getBBox();
98487
- inner2.attr("transform", "translate(" + -slBox.width / 2 + ", " + -slBox.height / 2 + ")");
98437
+ const endLabelElement = await createLabel_default(
98438
+ inner2,
98439
+ edge.endLabelRight,
98440
+ getLabelStyles(edge.labelStyle) || "",
98441
+ false,
98442
+ false
98443
+ );
98444
+ fo = endLabelElement;
98445
+ let slBox = endLabelElement.getBBox();
98446
+ if (useHtmlLabels) {
98447
+ const div = endLabelElement.children[0];
98448
+ const dv = select(endLabelElement);
98449
+ slBox = div.getBoundingClientRect();
98450
+ dv.attr("width", slBox.width);
98451
+ dv.attr("height", slBox.height);
98452
+ }
98453
+ inner2.attr("transform", computeLabelTransform(slBox, useHtmlLabels));
98488
98454
  endEdgeLabelRight.node().appendChild(endLabelElement);
98489
98455
  if (!terminalLabels.get(edge.id)) {
98490
98456
  terminalLabels.set(edge.id, {});
@@ -98495,7 +98461,7 @@ var insertEdgeLabel = /* @__PURE__ */ __name(async (elem, edge) => {
98495
98461
  return labelElement;
98496
98462
  }, "insertEdgeLabel");
98497
98463
  function setTerminalWidth(fo, value) {
98498
- if (getConfig2().flowchart.htmlLabels && fo) {
98464
+ if (getEffectiveHtmlLabels(getConfig2()) && fo) {
98499
98465
  fo.style.width = value.length * 9 + "px";
98500
98466
  fo.style.height = "12px";
98501
98467
  }
@@ -98757,7 +98723,7 @@ var generateDashArray = /* @__PURE__ */ __name((len, oValueS, oValueE) => {
98757
98723
  const dashArray = `0 ${oValueS} ${middlePattern} ${oValueE}`;
98758
98724
  return dashArray;
98759
98725
  }, "generateDashArray");
98760
- var insertEdge = /* @__PURE__ */ __name(function(elem, edge, clusterDb, diagramType, startNode, endNode, id28, skipIntersect = false) {
98726
+ var insertEdge = /* @__PURE__ */ __name(function(elem, edge, clusterDb, diagramType, startNode, endNode, id30, skipIntersect = false) {
98761
98727
  const { handDrawnSeed } = getConfig2();
98762
98728
  let points = edge.points;
98763
98729
  let pointsHasChanged = false;
@@ -98801,10 +98767,12 @@ var insertEdge = /* @__PURE__ */ __name(function(elem, edge, clusterDb, diagramT
98801
98767
  pointsHasChanged = true;
98802
98768
  }
98803
98769
  let lineData = points.filter((p2) => !Number.isNaN(p2.y));
98804
- lineData = fixCorners(lineData);
98805
- let curve = curveBasis;
98806
- curve = curveLinear;
98807
- switch (edge.curve) {
98770
+ const edgeCurveType = resolveEdgeCurveType(edge.curve);
98771
+ if (edgeCurveType !== "rounded") {
98772
+ lineData = fixCorners(lineData);
98773
+ }
98774
+ let curve = curveLinear;
98775
+ switch (edgeCurveType) {
98808
98776
  case "linear":
98809
98777
  curve = curveLinear;
98810
98778
  break;
@@ -98841,6 +98809,9 @@ var insertEdge = /* @__PURE__ */ __name(function(elem, edge, clusterDb, diagramT
98841
98809
  case "stepBefore":
98842
98810
  curve = stepBefore;
98843
98811
  break;
98812
+ case "rounded":
98813
+ curve = curveLinear;
98814
+ break;
98844
98815
  default:
98845
98816
  curve = curveBasis;
98846
98817
  }
@@ -98874,9 +98845,16 @@ var insertEdge = /* @__PURE__ */ __name(function(elem, edge, clusterDb, diagramT
98874
98845
  strokeClasses += " edge-pattern-solid";
98875
98846
  }
98876
98847
  let svgPath;
98877
- let linePath = edge.curve === "rounded" ? generateRoundedPath(applyMarkerOffsetsToPoints(lineData, edge), 5) : lineFunction(lineData);
98848
+ let linePath = edgeCurveType === "rounded" ? generateRoundedPath(applyMarkerOffsetsToPoints(lineData, edge), 5) : lineFunction(lineData);
98878
98849
  const edgeStyles = Array.isArray(edge.style) ? edge.style : [edge.style];
98879
98850
  let strokeColor = edgeStyles.find((style2) => style2?.startsWith("stroke:"));
98851
+ let animationClass = "";
98852
+ if (edge.animate) {
98853
+ animationClass = "edge-animation-fast";
98854
+ }
98855
+ if (edge.animation) {
98856
+ animationClass = "edge-animation-" + edge.animation;
98857
+ }
98880
98858
  let animatedEdge = false;
98881
98859
  if (edge.look === "handDrawn") {
98882
98860
  const rc = at.svg(elem);
@@ -98886,24 +98864,20 @@ var insertEdge = /* @__PURE__ */ __name(function(elem, edge, clusterDb, diagramT
98886
98864
  seed: handDrawnSeed
98887
98865
  });
98888
98866
  strokeClasses += " transition";
98889
- svgPath = select(svgPathNode).select("path").attr("id", edge.id).attr("class", " " + strokeClasses + (edge.classes ? " " + edge.classes : "")).attr("style", edgeStyles ? edgeStyles.reduce((acc, style2) => acc + ";" + style2, "") : "");
98867
+ svgPath = select(svgPathNode).select("path").attr("id", edge.id).attr(
98868
+ "class",
98869
+ " " + strokeClasses + (edge.classes ? " " + edge.classes : "") + (animationClass ? " " + animationClass : "")
98870
+ ).attr("style", edgeStyles ? edgeStyles.reduce((acc, style2) => acc + ";" + style2, "") : "");
98890
98871
  let d2 = svgPath.attr("d");
98891
98872
  svgPath.attr("d", d2);
98892
98873
  elem.node().appendChild(svgPath.node());
98893
98874
  } else {
98894
98875
  const stylesFromClasses = edgeClassStyles.join(";");
98895
98876
  const styles2 = edgeStyles ? edgeStyles.reduce((acc, style2) => acc + style2 + ";", "") : "";
98896
- let animationClass = "";
98897
- if (edge.animate) {
98898
- animationClass = " edge-animation-fast";
98899
- }
98900
- if (edge.animation) {
98901
- animationClass = " edge-animation-" + edge.animation;
98902
- }
98903
98877
  const pathStyle = (stylesFromClasses ? stylesFromClasses + ";" + styles2 + ";" : styles2) + ";" + (edgeStyles ? edgeStyles.reduce((acc, style2) => acc + ";" + style2, "") : "");
98904
98878
  svgPath = elem.append("path").attr("d", linePath).attr("id", edge.id).attr(
98905
98879
  "class",
98906
- " " + strokeClasses + (edge.classes ? " " + edge.classes : "") + (animationClass ?? "")
98880
+ " " + strokeClasses + (edge.classes ? " " + edge.classes : "") + (animationClass ? " " + animationClass : "")
98907
98881
  ).attr("style", pathStyle);
98908
98882
  strokeColor = pathStyle.match(/stroke:([^;]+)/)?.[1];
98909
98883
  animatedEdge = edge.animate === true || !!edge.animation || stylesFromClasses.includes("animation");
@@ -98933,7 +98907,7 @@ var insertEdge = /* @__PURE__ */ __name(function(elem, edge, clusterDb, diagramT
98933
98907
  }
98934
98908
  log.info("arrowTypeStart", edge.arrowTypeStart);
98935
98909
  log.info("arrowTypeEnd", edge.arrowTypeEnd);
98936
- addEdgeMarkers(svgPath, edge, url, id28, diagramType, strokeColor);
98910
+ addEdgeMarkers(svgPath, edge, url, id30, diagramType, strokeColor);
98937
98911
  const midIndex = Math.floor(points.length / 2);
98938
98912
  const point2 = points[midIndex];
98939
98913
  if (!utils_default.isLabelCoordinateInPath(point2, svgPath.attr("d"))) {
@@ -99031,73 +99005,73 @@ function applyMarkerOffsetsToPoints(points, edge) {
99031
99005
  return newPoints;
99032
99006
  }
99033
99007
  __name(applyMarkerOffsetsToPoints, "applyMarkerOffsetsToPoints");
99034
- var insertMarkers = /* @__PURE__ */ __name((elem, markerArray, type2, id28) => {
99008
+ var insertMarkers = /* @__PURE__ */ __name((elem, markerArray, type2, id30) => {
99035
99009
  markerArray.forEach((markerName) => {
99036
- markers[markerName](elem, type2, id28);
99010
+ markers[markerName](elem, type2, id30);
99037
99011
  });
99038
99012
  }, "insertMarkers");
99039
- var extension = /* @__PURE__ */ __name((elem, type2, id28) => {
99040
- log.trace("Making markers for ", id28);
99041
- elem.append("defs").append("marker").attr("id", id28 + "_" + type2 + "-extensionStart").attr("class", "marker extension " + type2).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 1,7 L18,13 V 1 Z");
99042
- elem.append("defs").append("marker").attr("id", id28 + "_" + type2 + "-extensionEnd").attr("class", "marker extension " + type2).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 1,1 V 13 L18,7 Z");
99013
+ var extension = /* @__PURE__ */ __name((elem, type2, id30) => {
99014
+ log.trace("Making markers for ", id30);
99015
+ elem.append("defs").append("marker").attr("id", id30 + "_" + type2 + "-extensionStart").attr("class", "marker extension " + type2).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 1,7 L18,13 V 1 Z");
99016
+ elem.append("defs").append("marker").attr("id", id30 + "_" + type2 + "-extensionEnd").attr("class", "marker extension " + type2).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 1,1 V 13 L18,7 Z");
99043
99017
  }, "extension");
99044
- var composition = /* @__PURE__ */ __name((elem, type2, id28) => {
99045
- elem.append("defs").append("marker").attr("id", id28 + "_" + type2 + "-compositionStart").attr("class", "marker composition " + type2).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
99046
- elem.append("defs").append("marker").attr("id", id28 + "_" + type2 + "-compositionEnd").attr("class", "marker composition " + type2).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
99018
+ var composition = /* @__PURE__ */ __name((elem, type2, id30) => {
99019
+ elem.append("defs").append("marker").attr("id", id30 + "_" + type2 + "-compositionStart").attr("class", "marker composition " + type2).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
99020
+ elem.append("defs").append("marker").attr("id", id30 + "_" + type2 + "-compositionEnd").attr("class", "marker composition " + type2).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
99047
99021
  }, "composition");
99048
- var aggregation = /* @__PURE__ */ __name((elem, type2, id28) => {
99049
- elem.append("defs").append("marker").attr("id", id28 + "_" + type2 + "-aggregationStart").attr("class", "marker aggregation " + type2).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
99050
- elem.append("defs").append("marker").attr("id", id28 + "_" + type2 + "-aggregationEnd").attr("class", "marker aggregation " + type2).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
99022
+ var aggregation = /* @__PURE__ */ __name((elem, type2, id30) => {
99023
+ elem.append("defs").append("marker").attr("id", id30 + "_" + type2 + "-aggregationStart").attr("class", "marker aggregation " + type2).attr("refX", 18).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
99024
+ elem.append("defs").append("marker").attr("id", id30 + "_" + type2 + "-aggregationEnd").attr("class", "marker aggregation " + type2).attr("refX", 1).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L1,7 L9,1 Z");
99051
99025
  }, "aggregation");
99052
- var dependency = /* @__PURE__ */ __name((elem, type2, id28) => {
99053
- elem.append("defs").append("marker").attr("id", id28 + "_" + type2 + "-dependencyStart").attr("class", "marker dependency " + type2).attr("refX", 6).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 5,7 L9,13 L1,7 L9,1 Z");
99054
- elem.append("defs").append("marker").attr("id", id28 + "_" + type2 + "-dependencyEnd").attr("class", "marker dependency " + type2).attr("refX", 13).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L14,7 L9,1 Z");
99026
+ var dependency = /* @__PURE__ */ __name((elem, type2, id30) => {
99027
+ elem.append("defs").append("marker").attr("id", id30 + "_" + type2 + "-dependencyStart").attr("class", "marker dependency " + type2).attr("refX", 6).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("path").attr("d", "M 5,7 L9,13 L1,7 L9,1 Z");
99028
+ elem.append("defs").append("marker").attr("id", id30 + "_" + type2 + "-dependencyEnd").attr("class", "marker dependency " + type2).attr("refX", 13).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 18,7 L9,13 L14,7 L9,1 Z");
99055
99029
  }, "dependency");
99056
- var lollipop = /* @__PURE__ */ __name((elem, type2, id28) => {
99057
- elem.append("defs").append("marker").attr("id", id28 + "_" + type2 + "-lollipopStart").attr("class", "marker lollipop " + type2).attr("refX", 13).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("circle").attr("stroke", "black").attr("fill", "transparent").attr("cx", 7).attr("cy", 7).attr("r", 6);
99058
- elem.append("defs").append("marker").attr("id", id28 + "_" + type2 + "-lollipopEnd").attr("class", "marker lollipop " + type2).attr("refX", 1).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("circle").attr("stroke", "black").attr("fill", "transparent").attr("cx", 7).attr("cy", 7).attr("r", 6);
99030
+ var lollipop = /* @__PURE__ */ __name((elem, type2, id30) => {
99031
+ elem.append("defs").append("marker").attr("id", id30 + "_" + type2 + "-lollipopStart").attr("class", "marker lollipop " + type2).attr("refX", 13).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("circle").attr("fill", "transparent").attr("cx", 7).attr("cy", 7).attr("r", 6);
99032
+ elem.append("defs").append("marker").attr("id", id30 + "_" + type2 + "-lollipopEnd").attr("class", "marker lollipop " + type2).attr("refX", 1).attr("refY", 7).attr("markerWidth", 190).attr("markerHeight", 240).attr("orient", "auto").append("circle").attr("fill", "transparent").attr("cx", 7).attr("cy", 7).attr("r", 6);
99059
99033
  }, "lollipop");
99060
- var point = /* @__PURE__ */ __name((elem, type2, id28) => {
99061
- elem.append("marker").attr("id", id28 + "_" + type2 + "-pointEnd").attr("class", "marker " + type2).attr("viewBox", "0 0 10 10").attr("refX", 5).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 8).attr("markerHeight", 8).attr("orient", "auto").append("path").attr("d", "M 0 0 L 10 5 L 0 10 z").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0");
99062
- elem.append("marker").attr("id", id28 + "_" + type2 + "-pointStart").attr("class", "marker " + type2).attr("viewBox", "0 0 10 10").attr("refX", 4.5).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 8).attr("markerHeight", 8).attr("orient", "auto").append("path").attr("d", "M 0 5 L 10 10 L 10 0 z").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0");
99034
+ var point = /* @__PURE__ */ __name((elem, type2, id30) => {
99035
+ elem.append("marker").attr("id", id30 + "_" + type2 + "-pointEnd").attr("class", "marker " + type2).attr("viewBox", "0 0 10 10").attr("refX", 5).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 8).attr("markerHeight", 8).attr("orient", "auto").append("path").attr("d", "M 0 0 L 10 5 L 0 10 z").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0");
99036
+ elem.append("marker").attr("id", id30 + "_" + type2 + "-pointStart").attr("class", "marker " + type2).attr("viewBox", "0 0 10 10").attr("refX", 4.5).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 8).attr("markerHeight", 8).attr("orient", "auto").append("path").attr("d", "M 0 5 L 10 10 L 10 0 z").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0");
99063
99037
  }, "point");
99064
- var circle = /* @__PURE__ */ __name((elem, type2, id28) => {
99065
- elem.append("marker").attr("id", id28 + "_" + type2 + "-circleEnd").attr("class", "marker " + type2).attr("viewBox", "0 0 10 10").attr("refX", 11).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("circle").attr("cx", "5").attr("cy", "5").attr("r", "5").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0");
99066
- elem.append("marker").attr("id", id28 + "_" + type2 + "-circleStart").attr("class", "marker " + type2).attr("viewBox", "0 0 10 10").attr("refX", -1).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("circle").attr("cx", "5").attr("cy", "5").attr("r", "5").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0");
99038
+ var circle = /* @__PURE__ */ __name((elem, type2, id30) => {
99039
+ elem.append("marker").attr("id", id30 + "_" + type2 + "-circleEnd").attr("class", "marker " + type2).attr("viewBox", "0 0 10 10").attr("refX", 11).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("circle").attr("cx", "5").attr("cy", "5").attr("r", "5").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0");
99040
+ elem.append("marker").attr("id", id30 + "_" + type2 + "-circleStart").attr("class", "marker " + type2).attr("viewBox", "0 0 10 10").attr("refX", -1).attr("refY", 5).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("circle").attr("cx", "5").attr("cy", "5").attr("r", "5").attr("class", "arrowMarkerPath").style("stroke-width", 1).style("stroke-dasharray", "1,0");
99067
99041
  }, "circle");
99068
- var cross = /* @__PURE__ */ __name((elem, type2, id28) => {
99069
- elem.append("marker").attr("id", id28 + "_" + type2 + "-crossEnd").attr("class", "marker cross " + type2).attr("viewBox", "0 0 11 11").attr("refX", 12).attr("refY", 5.2).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("path").attr("d", "M 1,1 l 9,9 M 10,1 l -9,9").attr("class", "arrowMarkerPath").style("stroke-width", 2).style("stroke-dasharray", "1,0");
99070
- elem.append("marker").attr("id", id28 + "_" + type2 + "-crossStart").attr("class", "marker cross " + type2).attr("viewBox", "0 0 11 11").attr("refX", -1).attr("refY", 5.2).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("path").attr("d", "M 1,1 l 9,9 M 10,1 l -9,9").attr("class", "arrowMarkerPath").style("stroke-width", 2).style("stroke-dasharray", "1,0");
99042
+ var cross = /* @__PURE__ */ __name((elem, type2, id30) => {
99043
+ elem.append("marker").attr("id", id30 + "_" + type2 + "-crossEnd").attr("class", "marker cross " + type2).attr("viewBox", "0 0 11 11").attr("refX", 12).attr("refY", 5.2).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("path").attr("d", "M 1,1 l 9,9 M 10,1 l -9,9").attr("class", "arrowMarkerPath").style("stroke-width", 2).style("stroke-dasharray", "1,0");
99044
+ elem.append("marker").attr("id", id30 + "_" + type2 + "-crossStart").attr("class", "marker cross " + type2).attr("viewBox", "0 0 11 11").attr("refX", -1).attr("refY", 5.2).attr("markerUnits", "userSpaceOnUse").attr("markerWidth", 11).attr("markerHeight", 11).attr("orient", "auto").append("path").attr("d", "M 1,1 l 9,9 M 10,1 l -9,9").attr("class", "arrowMarkerPath").style("stroke-width", 2).style("stroke-dasharray", "1,0");
99071
99045
  }, "cross");
99072
- var barb = /* @__PURE__ */ __name((elem, type2, id28) => {
99073
- elem.append("defs").append("marker").attr("id", id28 + "_" + type2 + "-barbEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 14).attr("markerUnits", "userSpaceOnUse").attr("orient", "auto").append("path").attr("d", "M 19,7 L9,13 L14,7 L9,1 Z");
99046
+ var barb = /* @__PURE__ */ __name((elem, type2, id30) => {
99047
+ elem.append("defs").append("marker").attr("id", id30 + "_" + type2 + "-barbEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 14).attr("markerUnits", "userSpaceOnUse").attr("orient", "auto").append("path").attr("d", "M 19,7 L9,13 L14,7 L9,1 Z");
99074
99048
  }, "barb");
99075
- var only_one = /* @__PURE__ */ __name((elem, type2, id28) => {
99076
- elem.append("defs").append("marker").attr("id", id28 + "_" + type2 + "-onlyOneStart").attr("class", "marker onlyOne " + type2).attr("refX", 0).attr("refY", 9).attr("markerWidth", 18).attr("markerHeight", 18).attr("orient", "auto").append("path").attr("d", "M9,0 L9,18 M15,0 L15,18");
99077
- elem.append("defs").append("marker").attr("id", id28 + "_" + type2 + "-onlyOneEnd").attr("class", "marker onlyOne " + type2).attr("refX", 18).attr("refY", 9).attr("markerWidth", 18).attr("markerHeight", 18).attr("orient", "auto").append("path").attr("d", "M3,0 L3,18 M9,0 L9,18");
99049
+ var only_one = /* @__PURE__ */ __name((elem, type2, id30) => {
99050
+ elem.append("defs").append("marker").attr("id", id30 + "_" + type2 + "-onlyOneStart").attr("class", "marker onlyOne " + type2).attr("refX", 0).attr("refY", 9).attr("markerWidth", 18).attr("markerHeight", 18).attr("orient", "auto").append("path").attr("d", "M9,0 L9,18 M15,0 L15,18");
99051
+ elem.append("defs").append("marker").attr("id", id30 + "_" + type2 + "-onlyOneEnd").attr("class", "marker onlyOne " + type2).attr("refX", 18).attr("refY", 9).attr("markerWidth", 18).attr("markerHeight", 18).attr("orient", "auto").append("path").attr("d", "M3,0 L3,18 M9,0 L9,18");
99078
99052
  }, "only_one");
99079
- var zero_or_one = /* @__PURE__ */ __name((elem, type2, id28) => {
99080
- const startMarker = elem.append("defs").append("marker").attr("id", id28 + "_" + type2 + "-zeroOrOneStart").attr("class", "marker zeroOrOne " + type2).attr("refX", 0).attr("refY", 9).attr("markerWidth", 30).attr("markerHeight", 18).attr("orient", "auto");
99053
+ var zero_or_one = /* @__PURE__ */ __name((elem, type2, id30) => {
99054
+ const startMarker = elem.append("defs").append("marker").attr("id", id30 + "_" + type2 + "-zeroOrOneStart").attr("class", "marker zeroOrOne " + type2).attr("refX", 0).attr("refY", 9).attr("markerWidth", 30).attr("markerHeight", 18).attr("orient", "auto");
99081
99055
  startMarker.append("circle").attr("fill", "white").attr("cx", 21).attr("cy", 9).attr("r", 6);
99082
99056
  startMarker.append("path").attr("d", "M9,0 L9,18");
99083
- const endMarker = elem.append("defs").append("marker").attr("id", id28 + "_" + type2 + "-zeroOrOneEnd").attr("class", "marker zeroOrOne " + type2).attr("refX", 30).attr("refY", 9).attr("markerWidth", 30).attr("markerHeight", 18).attr("orient", "auto");
99057
+ const endMarker = elem.append("defs").append("marker").attr("id", id30 + "_" + type2 + "-zeroOrOneEnd").attr("class", "marker zeroOrOne " + type2).attr("refX", 30).attr("refY", 9).attr("markerWidth", 30).attr("markerHeight", 18).attr("orient", "auto");
99084
99058
  endMarker.append("circle").attr("fill", "white").attr("cx", 9).attr("cy", 9).attr("r", 6);
99085
99059
  endMarker.append("path").attr("d", "M21,0 L21,18");
99086
99060
  }, "zero_or_one");
99087
- var one_or_more = /* @__PURE__ */ __name((elem, type2, id28) => {
99088
- elem.append("defs").append("marker").attr("id", id28 + "_" + type2 + "-oneOrMoreStart").attr("class", "marker oneOrMore " + type2).attr("refX", 18).attr("refY", 18).attr("markerWidth", 45).attr("markerHeight", 36).attr("orient", "auto").append("path").attr("d", "M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27");
99089
- elem.append("defs").append("marker").attr("id", id28 + "_" + type2 + "-oneOrMoreEnd").attr("class", "marker oneOrMore " + type2).attr("refX", 27).attr("refY", 18).attr("markerWidth", 45).attr("markerHeight", 36).attr("orient", "auto").append("path").attr("d", "M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18");
99061
+ var one_or_more = /* @__PURE__ */ __name((elem, type2, id30) => {
99062
+ elem.append("defs").append("marker").attr("id", id30 + "_" + type2 + "-oneOrMoreStart").attr("class", "marker oneOrMore " + type2).attr("refX", 18).attr("refY", 18).attr("markerWidth", 45).attr("markerHeight", 36).attr("orient", "auto").append("path").attr("d", "M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27");
99063
+ elem.append("defs").append("marker").attr("id", id30 + "_" + type2 + "-oneOrMoreEnd").attr("class", "marker oneOrMore " + type2).attr("refX", 27).attr("refY", 18).attr("markerWidth", 45).attr("markerHeight", 36).attr("orient", "auto").append("path").attr("d", "M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18");
99090
99064
  }, "one_or_more");
99091
- var zero_or_more = /* @__PURE__ */ __name((elem, type2, id28) => {
99092
- const startMarker = elem.append("defs").append("marker").attr("id", id28 + "_" + type2 + "-zeroOrMoreStart").attr("class", "marker zeroOrMore " + type2).attr("refX", 18).attr("refY", 18).attr("markerWidth", 57).attr("markerHeight", 36).attr("orient", "auto");
99065
+ var zero_or_more = /* @__PURE__ */ __name((elem, type2, id30) => {
99066
+ const startMarker = elem.append("defs").append("marker").attr("id", id30 + "_" + type2 + "-zeroOrMoreStart").attr("class", "marker zeroOrMore " + type2).attr("refX", 18).attr("refY", 18).attr("markerWidth", 57).attr("markerHeight", 36).attr("orient", "auto");
99093
99067
  startMarker.append("circle").attr("fill", "white").attr("cx", 48).attr("cy", 18).attr("r", 6);
99094
99068
  startMarker.append("path").attr("d", "M0,18 Q18,0 36,18 Q18,36 0,18");
99095
- const endMarker = elem.append("defs").append("marker").attr("id", id28 + "_" + type2 + "-zeroOrMoreEnd").attr("class", "marker zeroOrMore " + type2).attr("refX", 39).attr("refY", 18).attr("markerWidth", 57).attr("markerHeight", 36).attr("orient", "auto");
99069
+ const endMarker = elem.append("defs").append("marker").attr("id", id30 + "_" + type2 + "-zeroOrMoreEnd").attr("class", "marker zeroOrMore " + type2).attr("refX", 39).attr("refY", 18).attr("markerWidth", 57).attr("markerHeight", 36).attr("orient", "auto");
99096
99070
  endMarker.append("circle").attr("fill", "white").attr("cx", 9).attr("cy", 18).attr("r", 6);
99097
99071
  endMarker.append("path").attr("d", "M21,18 Q39,0 57,18 Q39,36 21,18");
99098
99072
  }, "zero_or_more");
99099
- var requirement_arrow = /* @__PURE__ */ __name((elem, type2, id28) => {
99100
- elem.append("defs").append("marker").attr("id", id28 + "_" + type2 + "-requirement_arrowEnd").attr("refX", 20).attr("refY", 10).attr("markerWidth", 20).attr("markerHeight", 20).attr("orient", "auto").append("path").attr(
99073
+ var requirement_arrow = /* @__PURE__ */ __name((elem, type2, id30) => {
99074
+ elem.append("defs").append("marker").attr("id", id30 + "_" + type2 + "-requirement_arrowEnd").attr("refX", 20).attr("refY", 10).attr("markerWidth", 20).attr("markerHeight", 20).attr("orient", "auto").append("path").attr(
99101
99075
  "d",
99102
99076
  `M0,0
99103
99077
  L20,10
@@ -99105,8 +99079,8 @@ var requirement_arrow = /* @__PURE__ */ __name((elem, type2, id28) => {
99105
99079
  L0,20`
99106
99080
  );
99107
99081
  }, "requirement_arrow");
99108
- var requirement_contains = /* @__PURE__ */ __name((elem, type2, id28) => {
99109
- const containsNode = elem.append("defs").append("marker").attr("id", id28 + "_" + type2 + "-requirement_containsStart").attr("refX", 0).attr("refY", 10).attr("markerWidth", 20).attr("markerHeight", 20).attr("orient", "auto").append("g");
99082
+ var requirement_contains = /* @__PURE__ */ __name((elem, type2, id30) => {
99083
+ const containsNode = elem.append("defs").append("marker").attr("id", id30 + "_" + type2 + "-requirement_containsStart").attr("refX", 0).attr("refY", 10).attr("markerWidth", 20).attr("markerHeight", 20).attr("orient", "auto").append("g");
99110
99084
  containsNode.append("circle").attr("cx", 10).attr("cy", 10).attr("r", 9).attr("fill", "none");
99111
99085
  containsNode.append("line").attr("x1", 1).attr("x2", 19).attr("y1", 10).attr("y2", 10);
99112
99086
  containsNode.append("line").attr("y1", 1).attr("y2", 19).attr("x1", 10).attr("x2", 10);
@@ -99144,20 +99118,20 @@ var internalHelpers = {
99144
99118
  };
99145
99119
  var layoutAlgorithms = {};
99146
99120
  var registerLayoutLoaders = /* @__PURE__ */ __name((loaders) => {
99147
- for (const loader28 of loaders) {
99148
- layoutAlgorithms[loader28.name] = loader28;
99121
+ for (const loader30 of loaders) {
99122
+ layoutAlgorithms[loader30.name] = loader30;
99149
99123
  }
99150
99124
  }, "registerLayoutLoaders");
99151
99125
  var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
99152
99126
  registerLayoutLoaders([
99153
99127
  {
99154
99128
  name: "dagre",
99155
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-6UL2VRFP-C1awWpU3.js"), true ? __vite__mapDeps([0,1,2,3,4,5]) : void 0), "loader")
99129
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./dagre-KLK3FWXG-Dm5yE9k2.js"), true ? __vite__mapDeps([0,1,2,3,4,5]) : void 0), "loader")
99156
99130
  },
99157
99131
  ...[
99158
99132
  {
99159
99133
  name: "cose-bilkent",
99160
- loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./cose-bilkent-S5V4N54A-uHPLSeKv.js"), true ? __vite__mapDeps([6,7]) : void 0), "loader")
99134
+ loader: /* @__PURE__ */ __name(async () => await __vitePreload(() => import("./cose-bilkent-S5V4N54A-BttciCz5.js"), true ? __vite__mapDeps([6,7]) : void 0), "loader")
99161
99135
  }
99162
99136
  ]
99163
99137
  ]);
@@ -99597,7 +99571,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
99597
99571
  }, "detector");
99598
99572
  var loader = /* @__PURE__ */ __name(async () => {
99599
99573
  const { diagram: diagram2 } = await __vitePreload(async () => {
99600
- const { diagram: diagram22 } = await import("./c4Diagram-YG6GDRKO-B4RPsw5H.js");
99574
+ const { diagram: diagram22 } = await import("./c4Diagram-IC4MRINW-ChGTHIor.js");
99601
99575
  return { diagram: diagram22 };
99602
99576
  }, true ? __vite__mapDeps([8,9]) : void 0);
99603
99577
  return { id: id$1, diagram: diagram2 };
@@ -99617,9 +99591,9 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
99617
99591
  }, "detector");
99618
99592
  var loader2 = /* @__PURE__ */ __name(async () => {
99619
99593
  const { diagram: diagram2 } = await __vitePreload(async () => {
99620
- const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-B1wDG_l5.js");
99594
+ const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-D6hXqCy7.js");
99621
99595
  return { diagram: diagram22 };
99622
- }, true ? __vite__mapDeps([10,11,12,13,14]) : void 0);
99596
+ }, true ? __vite__mapDeps([10,11,9,12,13,14]) : void 0);
99623
99597
  return { id: id2, diagram: diagram2 };
99624
99598
  }, "loader");
99625
99599
  var plugin2 = {
@@ -99643,9 +99617,9 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
99643
99617
  }, "detector");
99644
99618
  var loader3 = /* @__PURE__ */ __name(async () => {
99645
99619
  const { diagram: diagram2 } = await __vitePreload(async () => {
99646
- const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-B1wDG_l5.js");
99620
+ const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-D6hXqCy7.js");
99647
99621
  return { diagram: diagram22 };
99648
- }, true ? __vite__mapDeps([10,11,12,13,14]) : void 0);
99622
+ }, true ? __vite__mapDeps([10,11,9,12,13,14]) : void 0);
99649
99623
  return { id: id3, diagram: diagram2 };
99650
99624
  }, "loader");
99651
99625
  var plugin3 = {
@@ -99660,7 +99634,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
99660
99634
  }, "detector");
99661
99635
  var loader4 = /* @__PURE__ */ __name(async () => {
99662
99636
  const { diagram: diagram2 } = await __vitePreload(async () => {
99663
- const { diagram: diagram22 } = await import("./erDiagram-Q2GNP2WA-Ds3qhwkG.js");
99637
+ const { diagram: diagram22 } = await import("./erDiagram-INFDFZHY-7MrtsOIt.js");
99664
99638
  return { diagram: diagram22 };
99665
99639
  }, true ? __vite__mapDeps([15,12,13,14]) : void 0);
99666
99640
  return { id: id4, diagram: diagram2 };
@@ -99677,7 +99651,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
99677
99651
  }, "detector");
99678
99652
  var loader5 = /* @__PURE__ */ __name(async () => {
99679
99653
  const { diagram: diagram2 } = await __vitePreload(async () => {
99680
- const { diagram: diagram22 } = await import("./gitGraphDiagram-V2S2FVAM-B2Tw773z.js");
99654
+ const { diagram: diagram22 } = await import("./gitGraphDiagram-K3NZZRJ6-BmVD_nQP.js");
99681
99655
  return { diagram: diagram22 };
99682
99656
  }, true ? __vite__mapDeps([16,17,18,19,2,4,5]) : void 0);
99683
99657
  return { id: id5, diagram: diagram2 };
@@ -99694,7 +99668,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
99694
99668
  }, "detector");
99695
99669
  var loader6 = /* @__PURE__ */ __name(async () => {
99696
99670
  const { diagram: diagram2 } = await __vitePreload(async () => {
99697
- const { diagram: diagram22 } = await import("./ganttDiagram-JELNMOA3-BwuYt2bO.js");
99671
+ const { diagram: diagram22 } = await import("./ganttDiagram-A5KZAMGK-DLO0XCDk.js");
99698
99672
  return { diagram: diagram22 };
99699
99673
  }, true ? __vite__mapDeps([20,21,22,23]) : void 0);
99700
99674
  return { id: id6, diagram: diagram2 };
@@ -99711,7 +99685,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
99711
99685
  }, "detector");
99712
99686
  var loader7 = /* @__PURE__ */ __name(async () => {
99713
99687
  const { diagram: diagram2 } = await __vitePreload(async () => {
99714
- const { diagram: diagram22 } = await import("./infoDiagram-HS3SLOUP-C9_JKYhm.js");
99688
+ const { diagram: diagram22 } = await import("./infoDiagram-LFFYTUFH-D2fqM9Fn.js");
99715
99689
  return { diagram: diagram22 };
99716
99690
  }, true ? __vite__mapDeps([24,19,2,4,5]) : void 0);
99717
99691
  return { id: id7, diagram: diagram2 };
@@ -99727,7 +99701,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
99727
99701
  }, "detector");
99728
99702
  var loader8 = /* @__PURE__ */ __name(async () => {
99729
99703
  const { diagram: diagram2 } = await __vitePreload(async () => {
99730
- const { diagram: diagram22 } = await import("./pieDiagram-ADFJNKIX--QWeT2vZ.js");
99704
+ const { diagram: diagram22 } = await import("./pieDiagram-SKSYHLDU-Bu8kmCW6.js");
99731
99705
  return { diagram: diagram22 };
99732
99706
  }, true ? __vite__mapDeps([25,17,19,2,4,5,26,27,22]) : void 0);
99733
99707
  return { id: id8, diagram: diagram2 };
@@ -99743,7 +99717,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
99743
99717
  }, "detector");
99744
99718
  var loader9 = /* @__PURE__ */ __name(async () => {
99745
99719
  const { diagram: diagram2 } = await __vitePreload(async () => {
99746
- const { diagram: diagram22 } = await import("./quadrantDiagram-AYHSOK5B-BpqtmN3r.js");
99720
+ const { diagram: diagram22 } = await import("./quadrantDiagram-337W2JSQ-DIBSNUGa.js");
99747
99721
  return { diagram: diagram22 };
99748
99722
  }, true ? __vite__mapDeps([28,21,22,23]) : void 0);
99749
99723
  return { id: id9, diagram: diagram2 };
@@ -99760,7 +99734,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
99760
99734
  }, "detector");
99761
99735
  var loader10 = /* @__PURE__ */ __name(async () => {
99762
99736
  const { diagram: diagram2 } = await __vitePreload(async () => {
99763
- const { diagram: diagram22 } = await import("./xychartDiagram-PRI3JC2R-CVqSvO_S.js");
99737
+ const { diagram: diagram22 } = await import("./xychartDiagram-JWTSCODW-BWLUzo9S.js");
99764
99738
  return { diagram: diagram22 };
99765
99739
  }, true ? __vite__mapDeps([29,22,27,21,23]) : void 0);
99766
99740
  return { id: id10, diagram: diagram2 };
@@ -99777,7 +99751,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
99777
99751
  }, "detector");
99778
99752
  var loader11 = /* @__PURE__ */ __name(async () => {
99779
99753
  const { diagram: diagram2 } = await __vitePreload(async () => {
99780
- const { diagram: diagram22 } = await import("./requirementDiagram-UZGBJVZJ-CIXjIi4F.js");
99754
+ const { diagram: diagram22 } = await import("./requirementDiagram-Z7DCOOCP-CkrDkbBt.js");
99781
99755
  return { diagram: diagram22 };
99782
99756
  }, true ? __vite__mapDeps([30,12,13]) : void 0);
99783
99757
  return { id: id11, diagram: diagram2 };
@@ -99794,7 +99768,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
99794
99768
  }, "detector");
99795
99769
  var loader12 = /* @__PURE__ */ __name(async () => {
99796
99770
  const { diagram: diagram2 } = await __vitePreload(async () => {
99797
- const { diagram: diagram22 } = await import("./sequenceDiagram-WL72ISMW-BpDK1ROT.js");
99771
+ const { diagram: diagram22 } = await import("./sequenceDiagram-2WXFIKYE-DYoNARdO.js");
99798
99772
  return { diagram: diagram22 };
99799
99773
  }, true ? __vite__mapDeps([31,9,18]) : void 0);
99800
99774
  return { id: id12, diagram: diagram2 };
@@ -99814,9 +99788,9 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
99814
99788
  }, "detector");
99815
99789
  var loader13 = /* @__PURE__ */ __name(async () => {
99816
99790
  const { diagram: diagram2 } = await __vitePreload(async () => {
99817
- const { diagram: diagram22 } = await import("./classDiagram-2ON5EDUG-CNF8ZohD.js");
99791
+ const { diagram: diagram22 } = await import("./classDiagram-VBA2DB6C-Dl05PJAP.js");
99818
99792
  return { diagram: diagram22 };
99819
- }, true ? __vite__mapDeps([32,33,11,12,13]) : void 0);
99793
+ }, true ? __vite__mapDeps([32,33,11,9,12,13]) : void 0);
99820
99794
  return { id: id13, diagram: diagram2 };
99821
99795
  }, "loader");
99822
99796
  var plugin11 = {
@@ -99834,9 +99808,9 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
99834
99808
  }, "detector");
99835
99809
  var loader14 = /* @__PURE__ */ __name(async () => {
99836
99810
  const { diagram: diagram2 } = await __vitePreload(async () => {
99837
- const { diagram: diagram22 } = await import("./classDiagram-v2-WZHVMYZB-CNF8ZohD.js");
99811
+ const { diagram: diagram22 } = await import("./classDiagram-v2-RAHNMMFH-Dl05PJAP.js");
99838
99812
  return { diagram: diagram22 };
99839
- }, true ? __vite__mapDeps([34,33,11,12,13]) : void 0);
99813
+ }, true ? __vite__mapDeps([34,33,11,9,12,13]) : void 0);
99840
99814
  return { id: id14, diagram: diagram2 };
99841
99815
  }, "loader");
99842
99816
  var plugin12 = {
@@ -99854,7 +99828,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
99854
99828
  }, "detector");
99855
99829
  var loader15 = /* @__PURE__ */ __name(async () => {
99856
99830
  const { diagram: diagram2 } = await __vitePreload(async () => {
99857
- const { diagram: diagram22 } = await import("./stateDiagram-FKZM4ZOC-BoKGfmHf.js");
99831
+ const { diagram: diagram22 } = await import("./stateDiagram-RAJIS63D-D9v19nvh.js");
99858
99832
  return { diagram: diagram22 };
99859
99833
  }, true ? __vite__mapDeps([35,36,12,13,1,2,3,4]) : void 0);
99860
99834
  return { id: id15, diagram: diagram2 };
@@ -99877,7 +99851,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
99877
99851
  }, "detector");
99878
99852
  var loader16 = /* @__PURE__ */ __name(async () => {
99879
99853
  const { diagram: diagram2 } = await __vitePreload(async () => {
99880
- const { diagram: diagram22 } = await import("./stateDiagram-v2-4FDKWEC3--haXC2JK.js");
99854
+ const { diagram: diagram22 } = await import("./stateDiagram-v2-FVOUBMTO-BYw5ZwtH.js");
99881
99855
  return { diagram: diagram22 };
99882
99856
  }, true ? __vite__mapDeps([37,36,12,13]) : void 0);
99883
99857
  return { id: id16, diagram: diagram2 };
@@ -99894,9 +99868,9 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
99894
99868
  }, "detector");
99895
99869
  var loader17 = /* @__PURE__ */ __name(async () => {
99896
99870
  const { diagram: diagram2 } = await __vitePreload(async () => {
99897
- const { diagram: diagram22 } = await import("./journeyDiagram-XKPGCS4Q-BhZggYOL.js");
99871
+ const { diagram: diagram22 } = await import("./journeyDiagram-4ABVD52K-DmbA52J-.js");
99898
99872
  return { diagram: diagram22 };
99899
- }, true ? __vite__mapDeps([38,9,11,26]) : void 0);
99873
+ }, true ? __vite__mapDeps([38,11,9,26]) : void 0);
99900
99874
  return { id: id17, diagram: diagram2 };
99901
99875
  }, "loader");
99902
99876
  var plugin15 = {
@@ -99905,9 +99879,9 @@ var plugin15 = {
99905
99879
  loader: loader17
99906
99880
  };
99907
99881
  var journeyDetector_default = plugin15;
99908
- var draw = /* @__PURE__ */ __name((_text, id28, version2) => {
99882
+ var draw = /* @__PURE__ */ __name((_text, id30, version2) => {
99909
99883
  log.debug("rendering svg for syntax error\n");
99910
- const svg2 = selectSvgElement(id28);
99884
+ const svg2 = selectSvgElement(id30);
99911
99885
  const g2 = svg2.append("g");
99912
99886
  svg2.attr("viewBox", "0 0 2412 512");
99913
99887
  configureSvgSize(svg2, 100, 512, true);
@@ -99964,9 +99938,9 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
99964
99938
  }, "detector");
99965
99939
  var loader18 = /* @__PURE__ */ __name(async () => {
99966
99940
  const { diagram: diagram2 } = await __vitePreload(async () => {
99967
- const { diagram: diagram22 } = await import("./flowDiagram-NV44I4VS-B1wDG_l5.js");
99941
+ const { diagram: diagram22 } = await import("./flowDiagram-PKNHOUZH-D6hXqCy7.js");
99968
99942
  return { diagram: diagram22 };
99969
- }, true ? __vite__mapDeps([10,11,12,13,14]) : void 0);
99943
+ }, true ? __vite__mapDeps([10,11,9,12,13,14]) : void 0);
99970
99944
  return { id: id18, diagram: diagram2 };
99971
99945
  }, "loader");
99972
99946
  var plugin16 = {
@@ -99981,7 +99955,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
99981
99955
  }, "detector");
99982
99956
  var loader19 = /* @__PURE__ */ __name(async () => {
99983
99957
  const { diagram: diagram2 } = await __vitePreload(async () => {
99984
- const { diagram: diagram22 } = await import("./timeline-definition-IT6M3QCI-BmSg3Hjf.js");
99958
+ const { diagram: diagram22 } = await import("./timeline-definition-YZTLITO2-BT10dRIJ.js");
99985
99959
  return { diagram: diagram22 };
99986
99960
  }, true ? __vite__mapDeps([39,26]) : void 0);
99987
99961
  return { id: id19, diagram: diagram2 };
@@ -99998,7 +99972,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
99998
99972
  }, "detector");
99999
99973
  var loader20 = /* @__PURE__ */ __name(async () => {
100000
99974
  const { diagram: diagram2 } = await __vitePreload(async () => {
100001
- const { diagram: diagram22 } = await import("./mindmap-definition-VGOIOE7T-BR7oDKBR.js");
99975
+ const { diagram: diagram22 } = await import("./mindmap-definition-YRQLILUH-BcajbGmW.js");
100002
99976
  return { diagram: diagram22 };
100003
99977
  }, true ? __vite__mapDeps([40,12,13]) : void 0);
100004
99978
  return { id: id20, diagram: diagram2 };
@@ -100015,7 +99989,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
100015
99989
  }, "detector");
100016
99990
  var loader21 = /* @__PURE__ */ __name(async () => {
100017
99991
  const { diagram: diagram2 } = await __vitePreload(async () => {
100018
- const { diagram: diagram22 } = await import("./kanban-definition-3W4ZIXB7-B-R2Xm4Y.js");
99992
+ const { diagram: diagram22 } = await import("./kanban-definition-K7BYSVSG-DRUw-P-d.js");
100019
99993
  return { diagram: diagram22 };
100020
99994
  }, true ? __vite__mapDeps([41,11]) : void 0);
100021
99995
  return { id: id21, diagram: diagram2 };
@@ -100032,7 +100006,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
100032
100006
  }, "detector");
100033
100007
  var loader22 = /* @__PURE__ */ __name(async () => {
100034
100008
  const { diagram: diagram2 } = await __vitePreload(async () => {
100035
- const { diagram: diagram22 } = await import("./sankeyDiagram-TZEHDZUN-DJIt7SRz.js");
100009
+ const { diagram: diagram22 } = await import("./sankeyDiagram-WA2Y5GQK-BZ-1R8pc.js");
100036
100010
  return { diagram: diagram22 };
100037
100011
  }, true ? __vite__mapDeps([42,27,22]) : void 0);
100038
100012
  return { id: id22, diagram: diagram2 };
@@ -100049,7 +100023,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
100049
100023
  }, "detector");
100050
100024
  var loader23 = /* @__PURE__ */ __name(async () => {
100051
100025
  const { diagram: diagram2 } = await __vitePreload(async () => {
100052
- const { diagram: diagram22 } = await import("./diagram-S2PKOQOG-CGjGalBu.js");
100026
+ const { diagram: diagram22 } = await import("./diagram-P4PSJMXO-EHVjfzUV.js");
100053
100027
  return { diagram: diagram22 };
100054
100028
  }, true ? __vite__mapDeps([43,17,19,2,4,5]) : void 0);
100055
100029
  return { id: id23, diagram: diagram2 };
@@ -100065,7 +100039,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
100065
100039
  }, "detector");
100066
100040
  var loader24 = /* @__PURE__ */ __name(async () => {
100067
100041
  const { diagram: diagram2 } = await __vitePreload(async () => {
100068
- const { diagram: diagram22 } = await import("./diagram-QEK2KX5R-Bvlbx8Jp.js");
100042
+ const { diagram: diagram22 } = await import("./diagram-IFDJBPK2-CqKidH4n.js");
100069
100043
  return { diagram: diagram22 };
100070
100044
  }, true ? __vite__mapDeps([44,17,19,2,4,5]) : void 0);
100071
100045
  return { id: id24, diagram: diagram2 };
@@ -100081,7 +100055,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
100081
100055
  }, "detector");
100082
100056
  var loader25 = /* @__PURE__ */ __name(async () => {
100083
100057
  const { diagram: diagram2 } = await __vitePreload(async () => {
100084
- const { diagram: diagram22 } = await import("./blockDiagram-VD42YOAC-TTufCfiE.js");
100058
+ const { diagram: diagram22 } = await import("./blockDiagram-WCTKOSBZ-Cmpu3kIy.js");
100085
100059
  return { diagram: diagram22 };
100086
100060
  }, true ? __vite__mapDeps([45,11,5,2,1,14]) : void 0);
100087
100061
  return { id: id25, diagram: diagram2 };
@@ -100098,7 +100072,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
100098
100072
  }, "detector");
100099
100073
  var loader26 = /* @__PURE__ */ __name(async () => {
100100
100074
  const { diagram: diagram2 } = await __vitePreload(async () => {
100101
- const { diagram: diagram22 } = await import("./architectureDiagram-VXUJARFQ-DpryGqjy.js");
100075
+ const { diagram: diagram22 } = await import("./architectureDiagram-2XIMDMQ5-C7SdzYIh.js");
100102
100076
  return { diagram: diagram22 };
100103
100077
  }, true ? __vite__mapDeps([46,17,19,2,4,5,7]) : void 0);
100104
100078
  return { id: id26, diagram: diagram2 };
@@ -100109,22 +100083,55 @@ var architecture = {
100109
100083
  loader: loader26
100110
100084
  };
100111
100085
  var architectureDetector_default = architecture;
100112
- var id27 = "treemap";
100086
+ var id27 = "ishikawa";
100113
100087
  var detector27 = /* @__PURE__ */ __name((txt) => {
100114
- return /^\s*treemap/.test(txt);
100088
+ return /^\s*ishikawa(-beta)?\b/i.test(txt);
100115
100089
  }, "detector");
100116
100090
  var loader27 = /* @__PURE__ */ __name(async () => {
100117
100091
  const { diagram: diagram2 } = await __vitePreload(async () => {
100118
- const { diagram: diagram22 } = await import("./diagram-PSM6KHXK-Bf69p76M.js");
100092
+ const { diagram: diagram22 } = await import("./ishikawaDiagram-PHBUUO56-kp7lB6-f.js");
100119
100093
  return { diagram: diagram22 };
100120
- }, true ? __vite__mapDeps([47,13,17,19,2,4,5,23,27,22]) : void 0);
100094
+ }, true ? [] : void 0);
100121
100095
  return { id: id27, diagram: diagram2 };
100122
100096
  }, "loader");
100123
- var treemap = {
100097
+ var ishikawa = {
100124
100098
  id: id27,
100125
100099
  detector: detector27,
100126
100100
  loader: loader27
100127
100101
  };
100102
+ var id28 = "venn";
100103
+ var detector28 = /* @__PURE__ */ __name((txt) => {
100104
+ return /^\s*venn-beta/.test(txt);
100105
+ }, "detector");
100106
+ var loader28 = /* @__PURE__ */ __name(async () => {
100107
+ const { diagram: diagram2 } = await __vitePreload(async () => {
100108
+ const { diagram: diagram22 } = await import("./vennDiagram-LZ73GAT5-tryg3OaY.js");
100109
+ return { diagram: diagram22 };
100110
+ }, true ? [] : void 0);
100111
+ return { id: id28, diagram: diagram2 };
100112
+ }, "loader");
100113
+ var plugin22 = {
100114
+ id: id28,
100115
+ detector: detector28,
100116
+ loader: loader28
100117
+ };
100118
+ var vennDetector_default = plugin22;
100119
+ var id29 = "treemap";
100120
+ var detector29 = /* @__PURE__ */ __name((txt) => {
100121
+ return /^\s*treemap/.test(txt);
100122
+ }, "detector");
100123
+ var loader29 = /* @__PURE__ */ __name(async () => {
100124
+ const { diagram: diagram2 } = await __vitePreload(async () => {
100125
+ const { diagram: diagram22 } = await import("./diagram-E7M64L7V-C80ZsiBG.js");
100126
+ return { diagram: diagram22 };
100127
+ }, true ? __vite__mapDeps([47,13,17,19,2,4,5,23,27,22]) : void 0);
100128
+ return { id: id29, diagram: diagram2 };
100129
+ }, "loader");
100130
+ var treemap = {
100131
+ id: id29,
100132
+ detector: detector29,
100133
+ loader: loader29
100134
+ };
100128
100135
  var hasLoadedDiagrams = false;
100129
100136
  var addDiagrams = /* @__PURE__ */ __name(() => {
100130
100137
  if (hasLoadedDiagrams) {
@@ -100189,22 +100196,24 @@ var addDiagrams = /* @__PURE__ */ __name(() => {
100189
100196
  xychartDetector_default,
100190
100197
  blockDetector_default,
100191
100198
  radar,
100192
- treemap
100199
+ ishikawa,
100200
+ treemap,
100201
+ vennDetector_default
100193
100202
  );
100194
100203
  }, "addDiagrams");
100195
100204
  var loadRegisteredDiagrams = /* @__PURE__ */ __name(async () => {
100196
100205
  log.debug(`Loading registered diagrams`);
100197
100206
  const results = await Promise.allSettled(
100198
- Object.entries(detectors).map(async ([key, { detector: detector28, loader: loader28 }]) => {
100199
- if (!loader28) {
100207
+ Object.entries(detectors).map(async ([key, { detector: detector30, loader: loader30 }]) => {
100208
+ if (!loader30) {
100200
100209
  return;
100201
100210
  }
100202
100211
  try {
100203
100212
  getDiagram(key);
100204
100213
  } catch {
100205
100214
  try {
100206
- const { diagram: diagram2, id: id28 } = await loader28();
100207
- registerDiagram(id28, diagram2, detector28);
100215
+ const { diagram: diagram2, id: id30 } = await loader30();
100216
+ registerDiagram(id30, diagram2, detector30);
100208
100217
  } catch (err) {
100209
100218
  log.error(`Failed to load external diagram with key ${key}. Removing from detectors.`);
100210
100219
  delete detectors[key];
@@ -100261,12 +100270,12 @@ var Diagram = (_j = class {
100261
100270
  try {
100262
100271
  getDiagram(type2);
100263
100272
  } catch {
100264
- const loader28 = getDiagramLoader(type2);
100265
- if (!loader28) {
100273
+ const loader30 = getDiagramLoader(type2);
100274
+ if (!loader30) {
100266
100275
  throw new UnknownDiagramError(`Diagram ${type2} not found.`);
100267
100276
  }
100268
- const { id: id28, diagram: diagram2 } = await loader28();
100269
- registerDiagram(id28, diagram2);
100277
+ const { id: id30, diagram: diagram2 } = await loader30();
100278
+ registerDiagram(id30, diagram2);
100270
100279
  }
100271
100280
  const { db, parser, renderer: renderer2, init: init2 } = getDiagram(type2);
100272
100281
  if (parser.parser) {
@@ -100280,8 +100289,8 @@ var Diagram = (_j = class {
100280
100289
  await parser.parse(text2);
100281
100290
  return new _j(type2, text2, db, parser, renderer2);
100282
100291
  }
100283
- async render(id28, version2) {
100284
- await this.renderer.draw(this.text, id28, version2, this);
100292
+ async render(id30, version2) {
100293
+ await this.renderer.draw(this.text, id30, version2, this);
100285
100294
  }
100286
100295
  getParser() {
100287
100296
  return this.parser;
@@ -100434,7 +100443,7 @@ ${config2.themeCSS}`;
100434
100443
  :root { --mermaid-alt-font-family: ${config2.altFontFamily}}`;
100435
100444
  }
100436
100445
  if (classDefs instanceof Map) {
100437
- const htmlLabels = config2.htmlLabels ?? config2.flowchart?.htmlLabels;
100446
+ const htmlLabels = getEffectiveHtmlLabels(config2);
100438
100447
  const cssHtmlElements = ["> *", "span"];
100439
100448
  const cssShapeElements = ["rect", "polygon", "ellipse", "circle", "path"];
100440
100449
  const cssElements = htmlLabels ? cssHtmlElements : cssShapeElements;
@@ -100479,13 +100488,13 @@ var putIntoIFrame = /* @__PURE__ */ __name((svgCode = "", svgElement) => {
100479
100488
  ${IFRAME_NOT_SUPPORTED_MSG}
100480
100489
  </iframe>`;
100481
100490
  }, "putIntoIFrame");
100482
- var appendDivSvgG = /* @__PURE__ */ __name((parentRoot, id28, enclosingDivId, divStyle, svgXlink) => {
100491
+ var appendDivSvgG = /* @__PURE__ */ __name((parentRoot, id30, enclosingDivId, divStyle, svgXlink) => {
100483
100492
  const enclosingDiv = parentRoot.append("div");
100484
100493
  enclosingDiv.attr("id", enclosingDivId);
100485
100494
  if (divStyle) {
100486
100495
  enclosingDiv.attr("style", divStyle);
100487
100496
  }
100488
- const svgNode2 = enclosingDiv.append("svg").attr("id", id28).attr("width", "100%").attr("xmlns", XMLNS_SVG_STD);
100497
+ const svgNode2 = enclosingDiv.append("svg").attr("id", id30).attr("width", "100%").attr("xmlns", XMLNS_SVG_STD);
100489
100498
  if (svgXlink) {
100490
100499
  svgNode2.attr("xmlns:xlink", svgXlink);
100491
100500
  }
@@ -100496,12 +100505,12 @@ function sandboxedIframe(parentNode, iFrameId) {
100496
100505
  return parentNode.append("iframe").attr("id", iFrameId).attr("style", "width: 100%; height: 100%;").attr("sandbox", "");
100497
100506
  }
100498
100507
  __name(sandboxedIframe, "sandboxedIframe");
100499
- var removeExistingElements = /* @__PURE__ */ __name((doc, id28, divId, iFrameId) => {
100500
- doc.getElementById(id28)?.remove();
100508
+ var removeExistingElements = /* @__PURE__ */ __name((doc, id30, divId, iFrameId) => {
100509
+ doc.getElementById(id30)?.remove();
100501
100510
  doc.getElementById(divId)?.remove();
100502
100511
  doc.getElementById(iFrameId)?.remove();
100503
100512
  }, "removeExistingElements");
100504
- var render2 = /* @__PURE__ */ __name(async function(id28, text2, svgContainingElement) {
100513
+ var render2 = /* @__PURE__ */ __name(async function(id30, text2, svgContainingElement) {
100505
100514
  addDiagrams();
100506
100515
  const processed = processAndSetConfigs(text2);
100507
100516
  text2 = processed.code;
@@ -100510,10 +100519,10 @@ var render2 = /* @__PURE__ */ __name(async function(id28, text2, svgContainingEl
100510
100519
  if (text2.length > (config2?.maxTextSize ?? MAX_TEXTLENGTH)) {
100511
100520
  text2 = MAX_TEXTLENGTH_EXCEEDED_MSG;
100512
100521
  }
100513
- const idSelector = "#" + id28;
100514
- const iFrameID = "i" + id28;
100522
+ const idSelector = "#" + id30;
100523
+ const iFrameID = "i" + id30;
100515
100524
  const iFrameID_selector = "#" + iFrameID;
100516
- const enclosingDivID = "d" + id28;
100525
+ const enclosingDivID = "d" + id30;
100517
100526
  const enclosingDivID_selector = "#" + enclosingDivID;
100518
100527
  const removeTempElements = /* @__PURE__ */ __name(() => {
100519
100528
  const tmpElementSelector = isSandboxed ? iFrameID_selector : enclosingDivID_selector;
@@ -100537,9 +100546,9 @@ var render2 = /* @__PURE__ */ __name(async function(id28, text2, svgContainingEl
100537
100546
  } else {
100538
100547
  root2 = select(svgContainingElement);
100539
100548
  }
100540
- appendDivSvgG(root2, id28, enclosingDivID, `font-family: ${fontFamily}`, XMLNS_XLINK_STD);
100549
+ appendDivSvgG(root2, id30, enclosingDivID, `font-family: ${fontFamily}`, XMLNS_XLINK_STD);
100541
100550
  } else {
100542
- removeExistingElements(document, id28, enclosingDivID, iFrameID);
100551
+ removeExistingElements(document, id30, enclosingDivID, iFrameID);
100543
100552
  if (isSandboxed) {
100544
100553
  const iframe = sandboxedIframe(select("body"), iFrameID);
100545
100554
  root2 = select(iframe.nodes()[0].contentDocument.body);
@@ -100547,7 +100556,7 @@ var render2 = /* @__PURE__ */ __name(async function(id28, text2, svgContainingEl
100547
100556
  } else {
100548
100557
  root2 = select("body");
100549
100558
  }
100550
- appendDivSvgG(root2, id28, enclosingDivID);
100559
+ appendDivSvgG(root2, id30, enclosingDivID);
100551
100560
  }
100552
100561
  let diag;
100553
100562
  let parseEncounteredException;
@@ -100571,12 +100580,12 @@ var render2 = /* @__PURE__ */ __name(async function(id28, text2, svgContainingEl
100571
100580
  style1.innerHTML = rules;
100572
100581
  svg2.insertBefore(style1, firstChild);
100573
100582
  try {
100574
- await diag.renderer.draw(text2, id28, package_default.version, diag);
100583
+ await diag.renderer.draw(text2, id30, "11.13.0", diag);
100575
100584
  } catch (e2) {
100576
100585
  if (config2.suppressErrorRendering) {
100577
100586
  removeTempElements();
100578
100587
  } else {
100579
- errorRenderer_default.draw(text2, id28, package_default.version);
100588
+ errorRenderer_default.draw(text2, id30, "11.13.0");
100580
100589
  }
100581
100590
  throw e2;
100582
100591
  }
@@ -100584,7 +100593,7 @@ var render2 = /* @__PURE__ */ __name(async function(id28, text2, svgContainingEl
100584
100593
  const a11yTitle = diag.db.getAccTitle?.();
100585
100594
  const a11yDescr = diag.db.getAccDescription?.();
100586
100595
  addA11yInfo(diagramType, svgNode2, a11yTitle, a11yDescr);
100587
- root2.select(`[id="${id28}"]`).selectAll("foreignobject > *").attr("xmlns", XMLNS_XHTML_STD);
100596
+ root2.select(`[id="${id30}"]`).selectAll("foreignobject > *").attr("xmlns", XMLNS_XHTML_STD);
100588
100597
  let svgCode = root2.select(enclosingDivID_selector).node().innerHTML;
100589
100598
  log.debug("config.arrowMarkerAbsolute", config2.arrowMarkerAbsolute);
100590
100599
  svgCode = cleanUpSvgCode(svgCode, isSandboxed, evaluate(config2.arrowMarkerAbsolute));
@@ -100724,7 +100733,7 @@ var runThrowsErrors = /* @__PURE__ */ __name(async function({ postRenderCallback
100724
100733
  continue;
100725
100734
  }
100726
100735
  element.setAttribute("data-processed", "true");
100727
- const id28 = `mermaid-${idGenerator.next()}`;
100736
+ const id30 = `mermaid-${idGenerator.next()}`;
100728
100737
  txt = element.innerHTML;
100729
100738
  txt = dedent(utils_default.entityDecode(txt)).trim().replace(/<br\s*\/?>/gi, "<br/>");
100730
100739
  const init2 = utils_default.detectInit(txt);
@@ -100732,10 +100741,10 @@ var runThrowsErrors = /* @__PURE__ */ __name(async function({ postRenderCallback
100732
100741
  log.debug("Detected early reinit: ", init2);
100733
100742
  }
100734
100743
  try {
100735
- const { svg: svg2, bindFunctions } = await render22(id28, txt, element);
100744
+ const { svg: svg2, bindFunctions } = await render22(id30, txt, element);
100736
100745
  element.innerHTML = svg2;
100737
100746
  if (postRenderCallback) {
100738
- await postRenderCallback(id28);
100747
+ await postRenderCallback(id30);
100739
100748
  }
100740
100749
  if (bindFunctions) {
100741
100750
  bindFunctions(element);
@@ -100830,10 +100839,10 @@ var parse2 = /* @__PURE__ */ __name(async (text2, parseOptions) => {
100830
100839
  executeQueue().catch(reject);
100831
100840
  });
100832
100841
  }, "parse");
100833
- var render22 = /* @__PURE__ */ __name((id28, text2, container) => {
100842
+ var render22 = /* @__PURE__ */ __name((id30, text2, container) => {
100834
100843
  return new Promise((resolve, reject) => {
100835
100844
  const performCall = /* @__PURE__ */ __name(() => new Promise((res, rej) => {
100836
- mermaidAPI.render(id28, text2, container).then(
100845
+ mermaidAPI.render(id30, text2, container).then(
100837
100846
  (r2) => {
100838
100847
  res(r2);
100839
100848
  resolve(r2);
@@ -100851,8 +100860,8 @@ var render22 = /* @__PURE__ */ __name((id28, text2, container) => {
100851
100860
  });
100852
100861
  }, "render");
100853
100862
  var getRegisteredDiagramsMetadata = /* @__PURE__ */ __name(() => {
100854
- return Object.keys(detectors).map((id28) => ({
100855
- id: id28
100863
+ return Object.keys(detectors).map((id30) => ({
100864
+ id: id30
100856
100865
  }));
100857
100866
  }, "getRegisteredDiagramsMetadata");
100858
100867
  var mermaid = {
@@ -100885,13 +100894,13 @@ class DomindsMermaidBlock extends HTMLElement {
100885
100894
  return normalizedNewlines.replace(
100886
100895
  /(\b[\w-]+)\[([^\]\n]*?)\]/g,
100887
100896
  (_full, rawId, rawLabel) => {
100888
- const id28 = String(rawId);
100897
+ const id30 = String(rawId);
100889
100898
  const label = String(rawLabel).trim();
100890
- if (!label) return `${id28}[]`;
100891
- if (label.startsWith('"') || label.startsWith("'")) return `${id28}[${label}]`;
100892
- if (!/[<>()|]/.test(label)) return `${id28}[${label}]`;
100899
+ if (!label) return `${id30}[]`;
100900
+ if (label.startsWith('"') || label.startsWith("'")) return `${id30}[${label}]`;
100901
+ if (!/[<>()|]/.test(label)) return `${id30}[${label}]`;
100893
100902
  const escaped = label.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
100894
- return `${id28}["${escaped}"]`;
100903
+ return `${id30}["${escaped}"]`;
100895
100904
  }
100896
100905
  );
100897
100906
  }
@@ -101336,14 +101345,14 @@ md.core.ruler.push("dominds_heading_ids", (state2) => {
101336
101345
  const rawText = inline2.content;
101337
101346
  const base2 = slugifyHeadingId(rawText);
101338
101347
  if (!base2) continue;
101339
- let id28 = base2;
101348
+ let id30 = base2;
101340
101349
  let attempt = 2;
101341
- while (used.has(id28)) {
101342
- id28 = `${base2}-${attempt}`;
101350
+ while (used.has(id30)) {
101351
+ id30 = `${base2}-${attempt}`;
101343
101352
  attempt += 1;
101344
101353
  }
101345
- used.add(id28);
101346
- token2.attrSet("id", id28);
101354
+ used.add(id30);
101355
+ token2.attrSet("id", id30);
101347
101356
  }
101348
101357
  });
101349
101358
  installDomindsMathBlockRule(md);
@@ -102502,7 +102511,7 @@ class DomindsDialogContainer extends HTMLElement {
102502
102511
  this.teamConfiguration = {
102503
102512
  memberDefaults: { icon: cfg.memberDefaults.icon, name: cfg.memberDefaults.name },
102504
102513
  members: Object.fromEntries(
102505
- Object.entries(cfg.members).map(([id28, m2]) => [id28, { icon: m2.icon, name: m2.name }])
102514
+ Object.entries(cfg.members).map(([id30, m2]) => [id30, { icon: m2.icon, name: m2.name }])
102506
102515
  )
102507
102516
  };
102508
102517
  } catch (error2) {
@@ -104048,9 +104057,9 @@ itemId: ${itemId}` : ""}` : `itemId: ${itemId}`;
104048
104057
  const seen2 = /* @__PURE__ */ new Set();
104049
104058
  const out = [];
104050
104059
  for (const match2 of headline.matchAll(re2)) {
104051
- const id28 = (match2[1] ?? "").trim();
104052
- if (id28 === "") continue;
104053
- const mention = `@${id28}`;
104060
+ const id30 = (match2[1] ?? "").trim();
104061
+ if (id30 === "") continue;
104062
+ const mention = `@${id30}`;
104054
104063
  if (seen2.has(mention)) continue;
104055
104064
  seen2.add(mention);
104056
104065
  out.push(mention);
@@ -106144,19 +106153,19 @@ ${event.content}`;
106144
106153
  // User messages are now handled by 'end_of_user_saying_evt' event - see handleDialogEvent()
106145
106154
  getAuthorLabel(role, responderId) {
106146
106155
  if (role === "user") return "Human";
106147
- const id28 = responderId || this.currentDialog?.agentId || "";
106148
- if (!id28) return "🤖 Assistant";
106149
- if (this.teamConfiguration?.members?.[id28]) {
106150
- const member = this.teamConfiguration.members[id28];
106156
+ const id30 = responderId || this.currentDialog?.agentId || "";
106157
+ if (!id30) return "🤖 Assistant";
106158
+ if (this.teamConfiguration?.members?.[id30]) {
106159
+ const member = this.teamConfiguration.members[id30];
106151
106160
  const icon2 = member.icon || this.teamConfiguration.memberDefaults?.icon || "🤖";
106152
- const name = member.name || `@${id28}`;
106161
+ const name = member.name || `@${id30}`;
106153
106162
  return `${icon2} ${name}`;
106154
106163
  }
106155
106164
  if (this.teamConfiguration?.memberDefaults) {
106156
106165
  const icon2 = this.teamConfiguration.memberDefaults.icon || "🤖";
106157
- return `${icon2} @${id28}`;
106166
+ return `${icon2} @${id30}`;
106158
106167
  }
106159
- return `🤖 @${id28}`;
106168
+ return `🤖 @${id30}`;
106160
106169
  }
106161
106170
  escapeHtml(text2) {
106162
106171
  return text2.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;");
@@ -108023,16 +108032,16 @@ class DomindsDocsPanel extends HTMLElement {
108023
108032
  }
108024
108033
  scrollToPendingAnchorIfAny() {
108025
108034
  if (!this.pendingScrollAnchorId) return;
108026
- const id28 = this.pendingScrollAnchorId;
108035
+ const id30 = this.pendingScrollAnchorId;
108027
108036
  this.pendingScrollAnchorId = null;
108028
- this.scrollToAnchorId(id28);
108037
+ this.scrollToAnchorId(id30);
108029
108038
  }
108030
- scrollToAnchorId(id28) {
108039
+ scrollToAnchorId(id30) {
108031
108040
  const root2 = this.shadowRoot;
108032
108041
  if (!root2) return;
108033
108042
  const body = root2.querySelector(".docs-body");
108034
108043
  if (!(body instanceof HTMLElement)) return;
108035
- const anchor2 = body.querySelector(`#${CSS.escape(id28)}`);
108044
+ const anchor2 = body.querySelector(`#${CSS.escape(id30)}`);
108036
108045
  if (!(anchor2 instanceof HTMLElement)) return;
108037
108046
  anchor2.scrollIntoView({ behavior: "smooth", block: "start" });
108038
108047
  }
@@ -108083,13 +108092,13 @@ class DomindsDocsPanel extends HTMLElement {
108083
108092
  if (href.startsWith("#")) {
108084
108093
  const idRaw = href.slice(1);
108085
108094
  if (!idRaw) return;
108086
- let id28 = idRaw;
108095
+ let id30 = idRaw;
108087
108096
  try {
108088
- id28 = decodeURIComponent(idRaw);
108097
+ id30 = decodeURIComponent(idRaw);
108089
108098
  } catch {
108090
108099
  }
108091
- if (!id28) return;
108092
- this.scrollToAnchorId(id28);
108100
+ if (!id30) return;
108101
+ this.scrollToAnchorId(id30);
108093
108102
  return;
108094
108103
  }
108095
108104
  if (href.startsWith("/f/") || href === "/f" || href === "/workspace" || href.startsWith("/workspace/") || href === "/rtws" || href.startsWith("/rtws/")) {
@@ -108541,13 +108550,13 @@ const _DomindsQ4HInput = class _DomindsQ4HInput extends HTMLElement {
108541
108550
  this.showError(error2 instanceof Error ? error2.message : t2.readFailed);
108542
108551
  });
108543
108552
  }
108544
- removeImageAttachment(id28) {
108545
- const existing = this.imageAttachments.find((attachment) => attachment.id === id28);
108553
+ removeImageAttachment(id30) {
108554
+ const existing = this.imageAttachments.find((attachment) => attachment.id === id30);
108546
108555
  if (existing) {
108547
108556
  URL.revokeObjectURL(existing.objectUrl);
108548
108557
  }
108549
- this.imageAttachments = this.imageAttachments.filter((attachment) => attachment.id !== id28);
108550
- if (this.openImageAttachmentId === id28) {
108558
+ this.imageAttachments = this.imageAttachments.filter((attachment) => attachment.id !== id30);
108559
+ if (this.openImageAttachmentId === id30) {
108551
108560
  this.openImageAttachmentId = null;
108552
108561
  }
108553
108562
  this.safeRender();
@@ -109153,9 +109162,9 @@ const _DomindsQ4HInput = class _DomindsQ4HInput extends HTMLElement {
109153
109162
  }
109154
109163
  this.shadowRoot.querySelectorAll(".attachment-thumb").forEach((button) => {
109155
109164
  button.addEventListener("click", () => {
109156
- const id28 = button.dataset.attachmentId;
109157
- if (typeof id28 !== "string") return;
109158
- this.openImageAttachmentId = id28;
109165
+ const id30 = button.dataset.attachmentId;
109166
+ if (typeof id30 !== "string") return;
109167
+ this.openImageAttachmentId = id30;
109159
109168
  this.safeRender();
109160
109169
  });
109161
109170
  });
@@ -109163,9 +109172,9 @@ const _DomindsQ4HInput = class _DomindsQ4HInput extends HTMLElement {
109163
109172
  button.addEventListener("click", (event) => {
109164
109173
  event.preventDefault();
109165
109174
  event.stopPropagation();
109166
- const id28 = button.dataset.attachmentId;
109167
- if (typeof id28 !== "string") return;
109168
- this.removeImageAttachment(id28);
109175
+ const id30 = button.dataset.attachmentId;
109176
+ if (typeof id30 !== "string") return;
109177
+ this.removeImageAttachment(id30);
109169
109178
  });
109170
109179
  });
109171
109180
  const modalCloseTargets = this.shadowRoot.querySelectorAll(
@@ -109433,17 +109442,17 @@ const _DomindsQ4HInput = class _DomindsQ4HInput extends HTMLElement {
109433
109442
  if (this.imageAttachments.length === 0) return "";
109434
109443
  const t2 = IMAGE_ATTACHMENT_I18N[this.uiLanguage];
109435
109444
  const items = this.imageAttachments.map((attachment) => {
109436
- const id28 = _DomindsQ4HInput.escapeHtml(attachment.id);
109445
+ const id30 = _DomindsQ4HInput.escapeHtml(attachment.id);
109437
109446
  const name = _DomindsQ4HInput.escapeHtml(attachment.name);
109438
109447
  const src = _DomindsQ4HInput.escapeHtml(attachment.objectUrl);
109439
109448
  return `
109440
109449
  <div class="attachment-item">
109441
- <button class="attachment-thumb" type="button" data-attachment-id="${id28}" title="${_DomindsQ4HInput.escapeHtml(
109450
+ <button class="attachment-thumb" type="button" data-attachment-id="${id30}" title="${_DomindsQ4HInput.escapeHtml(
109442
109451
  t2.preview
109443
109452
  )}" aria-label="${_DomindsQ4HInput.escapeHtml(t2.preview)}">
109444
109453
  <img src="${src}" alt="${name}">
109445
109454
  </button>
109446
- <button class="attachment-remove" type="button" data-attachment-id="${id28}" title="${_DomindsQ4HInput.escapeHtml(
109455
+ <button class="attachment-remove" type="button" data-attachment-id="${id30}" title="${_DomindsQ4HInput.escapeHtml(
109447
109456
  t2.remove
109448
109457
  )}" aria-label="${_DomindsQ4HInput.escapeHtml(t2.remove)}">
109449
109458
  <span class="icon-mask attachment-remove-icon" aria-hidden="true"></span>
@@ -110028,7 +110037,8 @@ class DomindsQ4HPanel extends HTMLElement {
110028
110037
  this.uiLanguage = "en";
110029
110038
  this.props = {
110030
110039
  count: 0,
110031
- dialogContexts: []
110040
+ dialogContexts: [],
110041
+ answers: []
110032
110042
  };
110033
110043
  this.expandedQuestions = /* @__PURE__ */ new Set();
110034
110044
  this.selectedQuestionId = null;
@@ -110070,6 +110080,12 @@ class DomindsQ4HPanel extends HTMLElement {
110070
110080
  }
110071
110081
  this.render();
110072
110082
  }
110083
+ setHumanAttention(count, dialogContexts, answers) {
110084
+ this.props.count = count;
110085
+ this.props.dialogContexts = dialogContexts;
110086
+ this.props.answers = answers;
110087
+ this.render();
110088
+ }
110073
110089
  /**
110074
110090
  * Navigate to a specific question's call site
110075
110091
  * Dispatches event for parent component to handle navigation
@@ -110131,8 +110147,8 @@ class DomindsQ4HPanel extends HTMLElement {
110131
110147
  if (!root2) return;
110132
110148
  const selectedId = this.selectedQuestionId;
110133
110149
  root2.querySelectorAll(".q4h-question-card").forEach((card2) => {
110134
- const id28 = card2.getAttribute("data-question-id");
110135
- const selected = selectedId !== null && id28 === selectedId;
110150
+ const id30 = card2.getAttribute("data-question-id");
110151
+ const selected = selectedId !== null && id30 === selectedId;
110136
110152
  card2.classList.toggle("selected", selected);
110137
110153
  });
110138
110154
  if (selectedId !== null) {
@@ -110185,6 +110201,18 @@ class DomindsQ4HPanel extends HTMLElement {
110185
110201
  { bubbles: true, composed: true }
110186
110202
  );
110187
110203
  }
110204
+ ackAnswer(answer) {
110205
+ dispatchDomindsEvent(
110206
+ this,
110207
+ "a2h-ack",
110208
+ {
110209
+ answerId: answer.id,
110210
+ dialogId: answer.selfId,
110211
+ rootId: answer.rootId
110212
+ },
110213
+ { bubbles: true, composed: true }
110214
+ );
110215
+ }
110188
110216
  handleSelectFromCard(card2) {
110189
110217
  const questionId = card2.getAttribute("data-question-id");
110190
110218
  const dialogId = card2.getAttribute("data-dialog-id");
@@ -110233,7 +110261,9 @@ class DomindsQ4HPanel extends HTMLElement {
110233
110261
  icon2.addEventListener("click", (e2) => {
110234
110262
  e2.stopPropagation();
110235
110263
  const target = e2.currentTarget;
110236
- const questionId = target.closest(".q4h-question-card")?.getAttribute("data-question-id");
110264
+ const card2 = target.closest(".q4h-question-card");
110265
+ if (card2?.classList.contains("a2h-card")) return;
110266
+ const questionId = card2?.getAttribute("data-question-id");
110237
110267
  if (questionId) {
110238
110268
  this.toggleQuestion(questionId);
110239
110269
  }
@@ -110248,6 +110278,7 @@ class DomindsQ4HPanel extends HTMLElement {
110248
110278
  if (target.closest(".q4h-question-actions-top")) return;
110249
110279
  const card2 = header.closest(".q4h-question-card");
110250
110280
  if (!card2) return;
110281
+ if (card2.classList.contains("a2h-card")) return;
110251
110282
  e2.preventDefault();
110252
110283
  e2.stopPropagation();
110253
110284
  this.handleSelectFromCard(card2);
@@ -110259,6 +110290,7 @@ class DomindsQ4HPanel extends HTMLElement {
110259
110290
  e2.stopPropagation();
110260
110291
  const card2 = el.closest(".q4h-question-card");
110261
110292
  if (!card2) return;
110293
+ if (card2.classList.contains("a2h-card")) return;
110262
110294
  this.handleSelectFromCard(card2);
110263
110295
  });
110264
110296
  });
@@ -110350,6 +110382,48 @@ class DomindsQ4HPanel extends HTMLElement {
110350
110382
  );
110351
110383
  });
110352
110384
  });
110385
+ this.shadowRoot.querySelectorAll(".a2h-ack-btn").forEach((btn) => {
110386
+ btn.addEventListener("click", (e2) => {
110387
+ e2.preventDefault();
110388
+ e2.stopPropagation();
110389
+ const target = e2.currentTarget;
110390
+ const answerId = target.getAttribute("data-answer-id");
110391
+ const dialogId = target.getAttribute("data-dialog-id");
110392
+ const rootId = target.getAttribute("data-root-id");
110393
+ if (!answerId || !dialogId || !rootId) return;
110394
+ const answer = this.props.answers.find(
110395
+ (item) => item.id === answerId && item.selfId === dialogId && item.rootId === rootId
110396
+ );
110397
+ if (!answer) return;
110398
+ this.ackAnswer(answer);
110399
+ });
110400
+ });
110401
+ this.shadowRoot.querySelectorAll(".a2h-goto-answer-btn").forEach((btn) => {
110402
+ btn.addEventListener("click", (e2) => {
110403
+ e2.preventDefault();
110404
+ e2.stopPropagation();
110405
+ const target = e2.currentTarget;
110406
+ const dialogId = target.getAttribute("data-dialog-id");
110407
+ const rootId = target.getAttribute("data-root-id");
110408
+ const course = target.getAttribute("data-course");
110409
+ const genseq = target.getAttribute("data-genseq");
110410
+ if (!dialogId || !rootId || !course || !genseq) return;
110411
+ const parsedCourse = Number.parseInt(course, 10);
110412
+ const parsedGenseq = Number.parseInt(genseq, 10);
110413
+ if (!Number.isFinite(parsedCourse) || !Number.isFinite(parsedGenseq)) return;
110414
+ dispatchDomindsEvent(
110415
+ this,
110416
+ "navigate-genseq",
110417
+ {
110418
+ rootId,
110419
+ selfId: dialogId,
110420
+ course: parsedCourse,
110421
+ genseq: parsedGenseq
110422
+ },
110423
+ { bubbles: true, composed: true }
110424
+ );
110425
+ });
110426
+ });
110353
110427
  }
110354
110428
  render() {
110355
110429
  if (!this.shadowRoot) return;
@@ -110446,6 +110520,22 @@ class DomindsQ4HPanel extends HTMLElement {
110446
110520
  box-shadow: 0 2px 8px color-mix(in srgb, var(--color-accent-primary, #007acc) 15%, transparent);
110447
110521
  }
110448
110522
 
110523
+ .a2h-card {
110524
+ border-color: color-mix(in srgb, var(--color-success, #16a34a) 35%, var(--color-border-primary, #e2e8f0));
110525
+ }
110526
+
110527
+ .a2h-card .q4h-question-body {
110528
+ display: block;
110529
+ }
110530
+
110531
+ .a2h-header {
110532
+ cursor: default;
110533
+ }
110534
+
110535
+ .a2h-header:hover {
110536
+ background: transparent;
110537
+ }
110538
+
110449
110539
  /* Selected state for question card */
110450
110540
  .q4h-question-card.selected {
110451
110541
  border-color: var(--dominds-primary, #007acc);
@@ -110757,9 +110847,41 @@ class DomindsQ4HPanel extends HTMLElement {
110757
110847
  transition: all 0.15s ease;
110758
110848
  }
110759
110849
 
110850
+ .a2h-ack-btn {
110851
+ width: 24px;
110852
+ height: 24px;
110853
+ padding: 0;
110854
+ display: inline-flex;
110855
+ align-items: center;
110856
+ justify-content: center;
110857
+ border-radius: 6px;
110858
+ border: 1px solid transparent;
110859
+ background: transparent;
110860
+ color: var(--color-fg-tertiary, #64748b);
110861
+ cursor: pointer;
110862
+ transition: all 0.15s ease;
110863
+ }
110864
+
110865
+ .a2h-goto-answer-btn {
110866
+ width: 24px;
110867
+ height: 24px;
110868
+ padding: 0;
110869
+ display: inline-flex;
110870
+ align-items: center;
110871
+ justify-content: center;
110872
+ border-radius: 6px;
110873
+ border: 1px solid transparent;
110874
+ background: transparent;
110875
+ color: var(--color-fg-tertiary, #64748b);
110876
+ cursor: pointer;
110877
+ transition: all 0.15s ease;
110878
+ }
110879
+
110760
110880
  .q4h-goto-site-btn:hover,
110761
110881
  .q4h-open-external-btn:hover,
110762
- .q4h-share-link-btn:hover {
110882
+ .q4h-share-link-btn:hover,
110883
+ .a2h-goto-answer-btn:hover,
110884
+ .a2h-ack-btn:hover {
110763
110885
  border-color: var(--color-border-primary, #e2e8f0);
110764
110886
  background: var(--color-bg-tertiary, #f8fafc);
110765
110887
  color: var(--color-fg-secondary, #475569);
@@ -110767,7 +110889,9 @@ class DomindsQ4HPanel extends HTMLElement {
110767
110889
 
110768
110890
  .q4h-goto-site-btn:focus-visible,
110769
110891
  .q4h-open-external-btn:focus-visible,
110770
- .q4h-share-link-btn:focus-visible {
110892
+ .q4h-share-link-btn:focus-visible,
110893
+ .a2h-goto-answer-btn:focus-visible,
110894
+ .a2h-ack-btn:focus-visible {
110771
110895
  outline: 2px solid color-mix(in srgb, var(--color-fg-tertiary, #64748b) 70%, transparent);
110772
110896
  outline-offset: 2px;
110773
110897
  }
@@ -110775,7 +110899,9 @@ class DomindsQ4HPanel extends HTMLElement {
110775
110899
  .q4h-expand-icon.icon-mask,
110776
110900
  .q4h-goto-site-btn .icon-mask,
110777
110901
  .q4h-open-external-btn .icon-mask,
110778
- .q4h-share-link-btn .icon-mask {
110902
+ .q4h-share-link-btn .icon-mask,
110903
+ .a2h-goto-answer-btn .icon-mask,
110904
+ .a2h-ack-btn .icon-mask {
110779
110905
  width: 14px;
110780
110906
  height: 14px;
110781
110907
  }
@@ -110792,16 +110918,21 @@ class DomindsQ4HPanel extends HTMLElement {
110792
110918
  --icon-mask: ${ICON_MASK_URLS.link};
110793
110919
  }
110794
110920
 
110921
+ .q4h-icon-check-circle {
110922
+ --icon-mask: ${ICON_MASK_URLS.checkCircle};
110923
+ }
110924
+
110795
110925
  `;
110796
110926
  }
110797
110927
  getHTML() {
110798
- const { dialogContexts } = this.props;
110799
- if (dialogContexts.length === 0) {
110928
+ const { dialogContexts, answers } = this.props;
110929
+ if (dialogContexts.length === 0 && answers.length === 0) {
110800
110930
  return "";
110801
110931
  }
110802
110932
  return `
110803
110933
  <div class="q4h-panel-content">
110804
110934
  ${this.renderQuestions(dialogContexts)}
110935
+ ${this.renderAnswers(answers)}
110805
110936
  </div>
110806
110937
  `;
110807
110938
  }
@@ -110822,6 +110953,69 @@ class DomindsQ4HPanel extends HTMLElement {
110822
110953
  `;
110823
110954
  }).join("");
110824
110955
  }
110956
+ renderAnswers(answers) {
110957
+ if (answers.length === 0) return "";
110958
+ return `
110959
+ <div class="q4h-dialog-group a2h-group">
110960
+ <div class="q4h-dialog-header">
110961
+ <span class="q4h-dialog-icon icon-mask q4h-icon-pin" aria-hidden="true"></span>
110962
+ <span class="q4h-dialog-name">${this.escapeHtml(
110963
+ this.uiLanguage === "zh" ? "A2H / 待确认" : "A2H / Awaiting Ack"
110964
+ )}</span>
110965
+ </div>
110966
+ ${answers.map((answer) => this.renderAnswerCard(answer)).join("")}
110967
+ </div>
110968
+ `;
110969
+ }
110970
+ renderAnswerCard(answer) {
110971
+ const t2 = getUiStrings(this.uiLanguage);
110972
+ return `
110973
+ <div class="q4h-question-card a2h-card" data-answer-id="${this.escapeHtml(answer.id)}" data-dialog-id="${this.escapeHtml(answer.selfId)}" data-root-id="${this.escapeHtml(answer.rootId)}">
110974
+ <div class="q4h-question-header a2h-header">
110975
+ <span class="q4h-question-title">
110976
+ <span class="q4h-question-origin">@${this.escapeHtml(answer.agentId)}</span>
110977
+ <span class="q4h-question-origin-sep">•</span>
110978
+ <span class="q4h-question-origin-id">${this.escapeHtml(answer.selfId)}</span>
110979
+ <span class="q4h-question-origin-sep">•</span>
110980
+ <span class="q4h-question-origin-asked-at">${this.escapeHtml(answer.answeredAt)}</span>
110981
+ </span>
110982
+ <span class="q4h-question-actions-top">
110983
+ <button
110984
+ class="a2h-goto-answer-btn"
110985
+ type="button"
110986
+ title="${this.escapeHtml(t2.a2hGoToAnswerTitle)}"
110987
+ aria-label="${this.escapeHtml(t2.a2hGoToAnswerTitle)}"
110988
+ data-dialog-id="${this.escapeHtml(answer.selfId)}"
110989
+ data-root-id="${this.escapeHtml(answer.rootId)}"
110990
+ data-course="${answer.answerRef.course}"
110991
+ data-genseq="${answer.answerRef.genseq}"
110992
+ >
110993
+ <span class="icon-mask q4h-icon-goto" aria-hidden="true"></span>
110994
+ </button>
110995
+ <button
110996
+ class="a2h-ack-btn"
110997
+ type="button"
110998
+ title="${this.escapeHtml(this.uiLanguage === "zh" ? "确认已阅" : "Acknowledge")}"
110999
+ aria-label="${this.escapeHtml(this.uiLanguage === "zh" ? "确认已阅" : "Acknowledge")}"
111000
+ data-answer-id="${this.escapeHtml(answer.id)}"
111001
+ data-dialog-id="${this.escapeHtml(answer.selfId)}"
111002
+ data-root-id="${this.escapeHtml(answer.rootId)}"
111003
+ >
111004
+ <span class="icon-mask q4h-icon-check-circle" aria-hidden="true"></span>
111005
+ </button>
111006
+ </span>
111007
+ </div>
111008
+ <div class="q4h-question-body a2h-body">
111009
+ <div class="q4h-tellask">
111010
+ <div class="q4h-tellask-body">${renderDomindsMarkdown(answer.content, {
111011
+ kind: "chat",
111012
+ allowRelativeWorkspaceLinks: true
111013
+ })}</div>
111014
+ </div>
111015
+ </div>
111016
+ </div>
111017
+ `;
111018
+ }
110825
111019
  renderQuestionCard(question2, dialogContext) {
110826
111020
  const isExpanded = this.expandedQuestions.has(question2.id);
110827
111021
  const isSelected = this.selectedQuestionId === question2.id;
@@ -111767,10 +111961,10 @@ class DomindsSnippetsPanel extends HTMLElement {
111767
111961
  }
111768
111962
  selectSnippetFromCard(card2) {
111769
111963
  if (this.state.kind !== "ready") return;
111770
- const id28 = card2.getAttribute("data-id");
111771
- if (typeof id28 !== "string" || id28 === "") return;
111964
+ const id30 = card2.getAttribute("data-id");
111965
+ if (typeof id30 !== "string" || id30 === "") return;
111772
111966
  const all = this.state.groups.flatMap((g2) => g2.templates);
111773
- const snippet2 = all.find((x2) => x2.id === id28);
111967
+ const snippet2 = all.find((x2) => x2.id === id30);
111774
111968
  this.selectSnippet(snippet2 ?? null);
111775
111969
  }
111776
111970
  captureSnippetScroll() {
@@ -111965,8 +112159,8 @@ function requireAppJson() {
111965
112159
  function parseToolsetJson(v2, at2) {
111966
112160
  if (!isRecord(v2))
111967
112161
  return { ok: false, errorText: `Invalid ${at2}: expected object` };
111968
- const id28 = asString(v2["id"]);
111969
- if (!id28 || id28.trim() === "")
112162
+ const id30 = asString(v2["id"]);
112163
+ if (!id30 || id30.trim() === "")
111970
112164
  return { ok: false, errorText: `Invalid ${at2}.id: required` };
111971
112165
  const descriptionI18n = v2["descriptionI18n"];
111972
112166
  if (descriptionI18n !== void 0 && !isI18nText(descriptionI18n)) {
@@ -111985,7 +112179,7 @@ function requireAppJson() {
111985
112179
  return {
111986
112180
  ok: true,
111987
112181
  toolset: {
111988
- id: id28,
112182
+ id: id30,
111989
112183
  descriptionI18n,
111990
112184
  tools
111991
112185
  }
@@ -111994,8 +112188,8 @@ function requireAppJson() {
111994
112188
  function parseDialogRunControlJson(v2, at2) {
111995
112189
  if (!isRecord(v2))
111996
112190
  return { ok: false, errorText: `Invalid ${at2}: expected object` };
111997
- const id28 = asString(v2["id"]);
111998
- if (!id28 || id28.trim() === "")
112191
+ const id30 = asString(v2["id"]);
112192
+ if (!id30 || id30.trim() === "")
111999
112193
  return { ok: false, errorText: `Invalid ${at2}.id: required` };
112000
112194
  const descriptionI18n = v2["descriptionI18n"];
112001
112195
  if (descriptionI18n !== void 0 && !isI18nText(descriptionI18n)) {
@@ -112004,7 +112198,7 @@ function requireAppJson() {
112004
112198
  return {
112005
112199
  ok: true,
112006
112200
  control: {
112007
- id: id28,
112201
+ id: id30,
112008
112202
  descriptionI18n
112009
112203
  }
112010
112204
  };
@@ -112518,16 +112712,16 @@ class DomindsTeamManualPanel extends HTMLElement {
112518
112712
  const href = link2.getAttribute("href");
112519
112713
  if (typeof href !== "string") return;
112520
112714
  if (!href.startsWith("#")) return;
112521
- let id28 = href.slice(1);
112715
+ let id30 = href.slice(1);
112522
112716
  try {
112523
- id28 = decodeURIComponent(id28);
112717
+ id30 = decodeURIComponent(id30);
112524
112718
  } catch {
112525
112719
  }
112526
- if (!id28) {
112720
+ if (!id30) {
112527
112721
  e2.preventDefault();
112528
112722
  return;
112529
112723
  }
112530
- const anchor2 = body.querySelector(`#${CSS.escape(id28)}`);
112724
+ const anchor2 = body.querySelector(`#${CSS.escape(id30)}`);
112531
112725
  e2.preventDefault();
112532
112726
  if (!(anchor2 instanceof HTMLElement)) return;
112533
112727
  anchor2.scrollIntoView({ behavior: "smooth", block: "start" });
@@ -116840,6 +117034,8 @@ const _DomindsApp = class _DomindsApp extends HTMLElement {
116840
117034
  this.backendVersion = "";
116841
117035
  this.backendMode = null;
116842
117036
  this.domindsSelfUpdate = null;
117037
+ this.domindsSelfUpdateCheckInFlight = false;
117038
+ this.domindsVersionClickTimer = null;
116843
117039
  this.toolbarCurrentCourse = 1;
116844
117040
  this.toolbarTotalCourses = 1;
116845
117041
  this.toolbarReminders = [];
@@ -117030,6 +117226,7 @@ const _DomindsApp = class _DomindsApp extends HTMLElement {
117030
117226
  };
117031
117227
  this.q4hQuestionCount = 0;
117032
117228
  this.q4hQuestions = [];
117229
+ this.a2hAnswers = [];
117033
117230
  this.q4hDialogContexts = [];
117034
117231
  this.bottomPanelTab = "q4h";
117035
117232
  this.bottomPanelExpanded = false;
@@ -117298,13 +117495,14 @@ const _DomindsApp = class _DomindsApp extends HTMLElement {
117298
117495
  if (q4hTab) {
117299
117496
  const badge2 = q4hTab.querySelector(".bp-badge");
117300
117497
  if (badge2) {
117301
- badge2.textContent = String(this.q4hQuestionCount);
117302
- badge2.setAttribute("data-has-questions", this.q4hQuestionCount > 0 ? "true" : "false");
117498
+ const humanAttentionCount = this.humanAttentionCount;
117499
+ badge2.textContent = String(humanAttentionCount);
117500
+ badge2.setAttribute("data-has-questions", humanAttentionCount > 0 ? "true" : "false");
117303
117501
  }
117304
117502
  }
117305
117503
  const q4hEmpty = sr.querySelector(".bp-q4h-empty");
117306
117504
  if (q4hEmpty) {
117307
- q4hEmpty.classList.toggle("hidden", this.q4hQuestionCount !== 0);
117505
+ q4hEmpty.classList.toggle("hidden", this.humanAttentionCount !== 0);
117308
117506
  }
117309
117507
  const diligenceTab = sr.querySelector(
117310
117508
  'button.bp-tab[data-bp-tab="diligence"]'
@@ -117331,11 +117529,14 @@ const _DomindsApp = class _DomindsApp extends HTMLElement {
117331
117529
  }
117332
117530
  const q4hPanel = sr.querySelector("#q4h-panel");
117333
117531
  if (q4hPanel) {
117334
- q4hPanel.classList.toggle("hidden", this.q4hQuestionCount === 0);
117532
+ q4hPanel.classList.toggle("hidden", this.humanAttentionCount === 0);
117335
117533
  }
117336
117534
  }
117337
117535
  get hasQuestions() {
117338
- return this.q4hQuestionCount > 0;
117536
+ return this.humanAttentionCount > 0;
117537
+ }
117538
+ get humanAttentionCount() {
117539
+ return this.q4hQuestionCount + this.a2hAnswers.length;
117339
117540
  }
117340
117541
  get q4hInput() {
117341
117542
  return this.shadowRoot?.querySelector("#q4h-input") ?? null;
@@ -118195,6 +118396,7 @@ ${formatUiLanguageOptionLabel({
118195
118396
  this.wsManager.disconnect();
118196
118397
  window.removeEventListener("resize", this.boundOnWindowResize);
118197
118398
  this.clearRetryCountdownTimer();
118399
+ this.cancelDomindsVersionClickAction();
118198
118400
  for (const t2 of this.runControlRefreshTimers) {
118199
118401
  clearTimeout(t2);
118200
118402
  }
@@ -118337,6 +118539,7 @@ ${formatUiLanguageOptionLabel({
118337
118539
  const t2 = getUiStrings(this.uiLanguage);
118338
118540
  const versionText = this.backendVersion ? `v${this.backendVersion}` : "";
118339
118541
  const state2 = this.getDomindsVersionActionState();
118542
+ const checking = this.domindsSelfUpdateCheckInFlight;
118340
118543
  const latestVersionText = state2.kind !== "idle" && state2.latestVersion !== null && state2.latestVersion.trim() !== "" ? `v${state2.latestVersion.trim()}` : "";
118341
118544
  let actionLabel = "";
118342
118545
  let showIcon = false;
@@ -118362,7 +118565,14 @@ ${formatUiLanguageOptionLabel({
118362
118565
  showIcon = true;
118363
118566
  break;
118364
118567
  }
118365
- const versionHtml = latestVersionText !== "" && latestVersionText !== versionText ? `
118568
+ const versionHtml = checking ? `
118569
+ <span class="dominds-version-checking" aria-hidden="true">
118570
+ <span class="dominds-version-checking-base">${htmlExports.escapeHtml(versionText)}</span>
118571
+ <span class="dominds-version-checking-dots">
118572
+ <span>.</span><span>.</span><span>.</span>
118573
+ </span>
118574
+ </span>
118575
+ ` : latestVersionText !== "" && latestVersionText !== versionText ? `
118366
118576
  <span class="dominds-version-roll" aria-hidden="true">
118367
118577
  <span class="dominds-version-roll-track">
118368
118578
  <span class="dominds-version-roll-item dominds-version-roll-latest">${htmlExports.escapeHtml(latestVersionText)}</span>
@@ -118381,25 +118591,32 @@ ${formatUiLanguageOptionLabel({
118381
118591
  const t2 = getUiStrings(this.uiLanguage);
118382
118592
  const currentVersion = this.backendVersion ? `v${this.backendVersion}` : "unknown";
118383
118593
  const latestVersion = this.domindsSelfUpdate?.targetVersion ?? this.domindsSelfUpdate?.latestVersion ?? null;
118384
- const latestLabel = latestVersion ? `v${latestVersion}` : currentVersion;
118594
+ const checkedAt = this.formatVersionCheckCheckedAt(this.domindsSelfUpdate?.checkedAt ?? null);
118385
118595
  const state2 = this.getDomindsVersionActionState();
118596
+ const lines = [
118597
+ t2.domindsVersionCheckTitle,
118598
+ `${t2.domindsVersionTooltipCurrent}: ${currentVersion}`,
118599
+ `${t2.domindsVersionTooltipLastChecked}: ${checkedAt}`
118600
+ ];
118601
+ if (latestVersion !== null && latestVersion.trim() !== "") {
118602
+ lines.push(`${t2.domindsVersionTooltipLatest}: v${latestVersion.trim()}`);
118603
+ }
118386
118604
  switch (state2.kind) {
118387
118605
  case "install":
118388
118606
  case "installing":
118389
- return `${t2.domindsVersionUpdateAvailableTitle}
118390
- ${currentVersion} -> ${latestLabel}`;
118607
+ lines.push(`${t2.domindsVersionTooltipStatus}: ${t2.domindsVersionUpdateAvailableTitle}`);
118608
+ break;
118391
118609
  case "restart":
118392
118610
  case "restarting":
118393
- return `${t2.domindsVersionRestartAvailableTitle}
118394
- ${currentVersion} -> ${latestLabel}`;
118611
+ lines.push(`${t2.domindsVersionTooltipStatus}: ${t2.domindsVersionRestartAvailableTitle}`);
118612
+ break;
118395
118613
  case "idle":
118396
118614
  if (this.domindsSelfUpdate?.reason === "latest_check_failed" && this.domindsSelfUpdate.message) {
118397
- return `${t2.domindsVersionTitle}
118398
- ${this.domindsSelfUpdate.message}`;
118615
+ lines.push(`${t2.domindsVersionTooltipStatus}: ${this.domindsSelfUpdate.message}`);
118399
118616
  }
118400
- return `${t2.domindsVersionTitle}
118401
- ${currentVersion}`;
118617
+ break;
118402
118618
  }
118619
+ return lines.join("\n");
118403
118620
  }
118404
118621
  updateDomindsVersionUi() {
118405
118622
  const versionIndicator = this.shadowRoot?.querySelector("#dominds-version");
@@ -118412,10 +118629,11 @@ ${currentVersion}`;
118412
118629
  const actionState = this.getDomindsVersionActionState();
118413
118630
  const isActionable = actionState.kind === "install" || actionState.kind === "restart";
118414
118631
  const needsAttention = isActionable;
118415
- versionIndicator.disabled = !isActionable;
118632
+ versionIndicator.disabled = false;
118416
118633
  versionIndicator.dataset.actionable = isActionable ? "true" : "false";
118417
118634
  versionIndicator.dataset.attention = needsAttention ? "true" : "false";
118418
118635
  versionIndicator.dataset.state = actionState.kind;
118636
+ versionIndicator.dataset.checking = this.domindsSelfUpdateCheckInFlight ? "true" : "false";
118419
118637
  }
118420
118638
  /**
118421
118639
  * Surgical update: Update only the rtws indicator text.
@@ -118456,6 +118674,35 @@ ${currentVersion}`;
118456
118674
  const targetVersion = latestVersion ?? currentVersion;
118457
118675
  return template.split("<current>").join(currentVersion).split("<latest>").join(targetVersion);
118458
118676
  }
118677
+ formatVersionCheckResult(template, status) {
118678
+ const currentVersion = status.currentVersion.trim() !== "" ? status.currentVersion.trim() : this.backendVersion !== "" ? this.backendVersion : "unknown";
118679
+ const targetVersion = status.targetVersion?.trim() || status.latestVersion?.trim() || currentVersion;
118680
+ return template.split("<current>").join(currentVersion).split("<latest>").join(targetVersion);
118681
+ }
118682
+ formatVersionCheckCheckedAt(checkedAt) {
118683
+ if (checkedAt === null) {
118684
+ return getUiStrings(this.uiLanguage).domindsVersionTooltipNeverChecked;
118685
+ }
118686
+ return checkedAt;
118687
+ }
118688
+ showDomindsVersionCheckResult(status) {
118689
+ const t2 = getUiStrings(this.uiLanguage);
118690
+ if (status.action === "install") {
118691
+ this.showSuccess(this.formatVersionCheckResult(t2.domindsVersionCheckUpdateAvailable, status));
118692
+ return;
118693
+ }
118694
+ if (status.action === "restart") {
118695
+ this.showSuccess(
118696
+ this.formatVersionCheckResult(t2.domindsVersionCheckRestartAvailable, status)
118697
+ );
118698
+ return;
118699
+ }
118700
+ if (status.reason === "latest_check_failed" && status.message) {
118701
+ this.showToast(`${t2.domindsVersionCheckFailedPrefix}${status.message}`, "warning");
118702
+ return;
118703
+ }
118704
+ this.showSuccess(this.formatVersionCheckResult(t2.domindsVersionCheckUpToDate, status));
118705
+ }
118459
118706
  async handleDomindsVersionAction() {
118460
118707
  const status = this.domindsSelfUpdate;
118461
118708
  const t2 = getUiStrings(this.uiLanguage);
@@ -118497,6 +118744,49 @@ ${currentVersion}`;
118497
118744
  this.showToast(`${t2.domindsVersionActionFailedPrefix}${message}`, "error");
118498
118745
  }
118499
118746
  }
118747
+ async handleDomindsVersionCheck() {
118748
+ if (this.domindsSelfUpdateCheckInFlight) return;
118749
+ this.domindsSelfUpdateCheckInFlight = true;
118750
+ this.updateDomindsVersionUi();
118751
+ try {
118752
+ const resp = await this.apiClient.checkDomindsSelfUpdate();
118753
+ if (!resp.success) {
118754
+ if (resp.status === 401) {
118755
+ this.onAuthRejected("api");
118756
+ return;
118757
+ }
118758
+ const t2 = getUiStrings(this.uiLanguage);
118759
+ throw new Error(resp.error || t2.unknownError);
118760
+ }
118761
+ const nextStatus = resp.data?.update;
118762
+ if (!nextStatus) {
118763
+ throw new Error("Missing Dominds self-update check payload");
118764
+ }
118765
+ this.domindsSelfUpdate = nextStatus;
118766
+ this.showDomindsVersionCheckResult(nextStatus);
118767
+ } catch (error2) {
118768
+ const t2 = getUiStrings(this.uiLanguage);
118769
+ const message = error2 instanceof Error ? error2.message : t2.unknownError;
118770
+ this.showToast(`${t2.domindsVersionCheckFailedPrefix}${message}`, "error");
118771
+ } finally {
118772
+ this.domindsSelfUpdateCheckInFlight = false;
118773
+ this.updateDomindsVersionUi();
118774
+ }
118775
+ }
118776
+ queueDomindsVersionClickAction() {
118777
+ if (this.domindsVersionClickTimer !== null) {
118778
+ window.clearTimeout(this.domindsVersionClickTimer);
118779
+ }
118780
+ this.domindsVersionClickTimer = window.setTimeout(() => {
118781
+ this.domindsVersionClickTimer = null;
118782
+ void this.handleDomindsVersionAction();
118783
+ }, 420);
118784
+ }
118785
+ cancelDomindsVersionClickAction() {
118786
+ if (this.domindsVersionClickTimer === null) return;
118787
+ window.clearTimeout(this.domindsVersionClickTimer);
118788
+ this.domindsVersionClickTimer = null;
118789
+ }
118500
118790
  /**
118501
118791
  * Surgical update: Update only the toolbar display elements.
118502
118792
  * Use this when dialog is loaded or course changes.
@@ -119222,11 +119512,16 @@ ${currentVersion}`;
119222
119512
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--dominds-warning, #bb8009) 14%, transparent) inset;
119223
119513
  }
119224
119514
 
119515
+ .dominds-version[data-checking='true'] {
119516
+ cursor: progress;
119517
+ }
119518
+
119225
119519
  .dominds-version[data-actionable='true']:hover {
119226
119520
  border-color: color-mix(in srgb, var(--dominds-warning, #bb8009) 42%, var(--dominds-warning-border, #e6d2b4));
119227
119521
  background: color-mix(in srgb, var(--dominds-warning, #bb8009) 16%, var(--dominds-warning-bg, #fff4e5));
119228
119522
  }
119229
119523
 
119524
+ .dominds-version-checking,
119230
119525
  .dominds-version-text,
119231
119526
  .dominds-version-action,
119232
119527
  .dominds-version-divider {
@@ -119238,6 +119533,41 @@ ${currentVersion}`;
119238
119533
  transform-origin: center bottom;
119239
119534
  }
119240
119535
 
119536
+ .dominds-version-checking {
119537
+ display: inline-flex;
119538
+ align-items: baseline;
119539
+ gap: 0;
119540
+ min-width: max-content;
119541
+ }
119542
+
119543
+ .dominds-version-checking-base {
119544
+ display: inline-block;
119545
+ }
119546
+
119547
+ .dominds-version-checking-dots {
119548
+ display: inline-flex;
119549
+ align-items: baseline;
119550
+ width: 1.4em;
119551
+ overflow: hidden;
119552
+ letter-spacing: 0;
119553
+ font-weight: 700;
119554
+ }
119555
+
119556
+ .dominds-version-checking-dots > span {
119557
+ display: inline-block;
119558
+ width: 0.46em;
119559
+ opacity: 0.12;
119560
+ animation: domindsVersionDotPulse 1.1s ease-in-out infinite;
119561
+ }
119562
+
119563
+ .dominds-version-checking-dots > span:nth-child(2) {
119564
+ animation-delay: 0.14s;
119565
+ }
119566
+
119567
+ .dominds-version-checking-dots > span:nth-child(3) {
119568
+ animation-delay: 0.28s;
119569
+ }
119570
+
119241
119571
  .dominds-version-roll {
119242
119572
  --version-roll-step: 14px;
119243
119573
  position: relative;
@@ -119299,6 +119629,17 @@ ${currentVersion}`;
119299
119629
  }
119300
119630
  }
119301
119631
 
119632
+ @keyframes domindsVersionDotPulse {
119633
+ 0%, 100% {
119634
+ opacity: 0.14;
119635
+ transform: translateY(0);
119636
+ }
119637
+ 50% {
119638
+ opacity: 1;
119639
+ transform: translateY(-1px);
119640
+ }
119641
+ }
119642
+
119302
119643
  .dominds-version[data-attention='true'] .dominds-version-roll-track {
119303
119644
  animation: domindsVersionTrackRoll 3s cubic-bezier(0.28, 0.78, 0.28, 1) infinite;
119304
119645
  }
@@ -119307,6 +119648,10 @@ ${currentVersion}`;
119307
119648
  .dominds-version[data-attention='true'] .dominds-version-roll-track {
119308
119649
  animation: none;
119309
119650
  }
119651
+ .dominds-version[data-checking='true'] .dominds-version-checking-dots > span {
119652
+ animation: none;
119653
+ opacity: 0.55;
119654
+ }
119310
119655
  }
119311
119656
 
119312
119657
  .rtws-indicator {
@@ -122594,7 +122939,7 @@ ${currentVersion}`;
122594
122939
  </a>
122595
122940
  <button type="button" id="dominds-version" class="dominds-version ${this.backendVersion ? "" : "hidden"}" title="${htmlExports.escapeHtml(
122596
122941
  this.getDomindsVersionTitle()
122597
- )}" aria-label="${htmlExports.escapeHtml(this.getDomindsVersionTitle())}" data-actionable="false" data-attention="false" data-state="idle" ${this.getDomindsVersionActionState().kind === "install" || this.getDomindsVersionActionState().kind === "restart" ? "" : "disabled"}>
122942
+ )}" aria-label="${htmlExports.escapeHtml(this.getDomindsVersionTitle())}" data-actionable="false" data-attention="false" data-state="idle" data-checking="false">
122598
122943
  ${this.renderDomindsVersionBadge()}
122599
122944
  </button>
122600
122945
  </div>
@@ -122809,8 +123154,8 @@ ${uiLanguageButtonTooltip}">
122809
123154
  </div>
122810
123155
  <div class="bottom-panel-content" id="bottom-panel-content">
122811
123156
  <div class="bp-content bp-q4h ${this.bottomPanelTab === "q4h" ? "" : "hidden"}">
122812
- <div class="bp-q4h-empty ${this.q4hQuestionCount === 0 ? "" : "hidden"}">${t2.q4hNoPending}</div>
122813
- <dominds-q4h-panel id="q4h-panel" ui-language="${this.uiLanguage}" class="${this.q4hQuestionCount === 0 ? "hidden" : ""}"></dominds-q4h-panel>
123157
+ <div class="bp-q4h-empty ${this.humanAttentionCount === 0 ? "" : "hidden"}">${t2.q4hNoPending}</div>
123158
+ <dominds-q4h-panel id="q4h-panel" ui-language="${this.uiLanguage}" class="${this.humanAttentionCount === 0 ? "hidden" : ""}"></dominds-q4h-panel>
122814
123159
  </div>
122815
123160
  <div class="bp-content bp-diligence ${this.bottomPanelTab === "diligence" ? "" : "hidden"}">
122816
123161
  <div class="bp-diligence-row">
@@ -122839,7 +123184,7 @@ ${uiLanguageButtonTooltip}">
122839
123184
  </div>
122840
123185
  <div class="bottom-panel-footer" id="bottom-panel-footer">
122841
123186
  <button class="bp-tab ${this.bottomPanelExpanded && this.bottomPanelTab === "q4h" ? "active" : ""}" type="button" data-bp-tab="q4h">
122842
- <span class="bp-badge" data-has-questions="${this.q4hQuestionCount > 0 ? "true" : "false"}">${String(this.q4hQuestionCount)}</span>
123187
+ <span class="bp-badge" data-has-questions="${this.humanAttentionCount > 0 ? "true" : "false"}">${String(this.humanAttentionCount)}</span>
122843
123188
  <span class="bp-label" data-bp-label="q4h">${t2.q4hPendingQuestions}</span>
122844
123189
  </button>
122845
123190
  <button class="bp-tab ${this.bottomPanelExpanded && this.bottomPanelTab === "diligence" ? "active" : ""}" type="button" data-bp-tab="diligence">
@@ -123078,6 +123423,16 @@ ${content}`;
123078
123423
  }, 100);
123079
123424
  }
123080
123425
  });
123426
+ this.shadowRoot.addEventListener("a2h-ack", (event) => {
123427
+ this.wsManager.sendRaw({
123428
+ type: "ack_a2h",
123429
+ dialog: {
123430
+ selfId: event.detail.dialogId,
123431
+ rootId: event.detail.rootId
123432
+ },
123433
+ answerId: event.detail.answerId
123434
+ });
123435
+ });
123081
123436
  this.shadowRoot.addEventListener("navigate-genseq", (event) => {
123082
123437
  const detail = event.detail;
123083
123438
  this.pendingDeepLink = {
@@ -123116,6 +123471,16 @@ ${content}`;
123116
123471
  captureKeyboardCountSnapshot(button, this.resumableDialogsCount);
123117
123472
  }
123118
123473
  });
123474
+ this.shadowRoot.addEventListener("dblclick", (evt2) => {
123475
+ const target = evt2.target;
123476
+ if (!(target instanceof Element)) return;
123477
+ const versionBtn = target.closest("#dominds-version");
123478
+ if (versionBtn === null) return;
123479
+ evt2.preventDefault();
123480
+ evt2.stopPropagation();
123481
+ this.cancelDomindsVersionClickAction();
123482
+ void this.handleDomindsVersionCheck();
123483
+ });
123119
123484
  this.shadowRoot.addEventListener("click", async (evt2) => {
123120
123485
  const target = evt2.target;
123121
123486
  if (!(target instanceof Element)) return;
@@ -123125,7 +123490,11 @@ ${content}`;
123125
123490
  }
123126
123491
  const versionBtn = target.closest("#dominds-version");
123127
123492
  if (versionBtn) {
123128
- await this.handleDomindsVersionAction();
123493
+ if (evt2 instanceof MouseEvent && evt2.detail > 1) {
123494
+ this.cancelDomindsVersionClickAction();
123495
+ return;
123496
+ }
123497
+ this.queueDomindsVersionClickAction();
123129
123498
  return;
123130
123499
  }
123131
123500
  const statusBtn = target.closest("#dialog-status-btn");
@@ -123682,8 +124051,12 @@ ${content}`;
123682
124051
  async ensureBottomPanelLoaded() {
123683
124052
  if (this.bottomPanelTab === "q4h") {
123684
124053
  const panel = this.shadowRoot?.querySelector("#q4h-panel");
123685
- if (panel instanceof HTMLElement && typeof panel.setQuestions === "function") {
123686
- panel.setQuestions(this.q4hQuestionCount, this.q4hDialogContexts);
124054
+ if (panel instanceof HTMLElement && typeof panel.setHumanAttention === "function") {
124055
+ panel.setHumanAttention(
124056
+ this.humanAttentionCount,
124057
+ this.q4hDialogContexts,
124058
+ this.a2hAnswers
124059
+ );
123687
124060
  }
123688
124061
  return;
123689
124062
  }
@@ -125957,13 +126330,13 @@ ${content}`;
125957
126330
  for (const item of value) {
125958
126331
  if (typeof item !== "object" || item === null) continue;
125959
126332
  const rec = item;
125960
- const id28 = typeof rec["id"] === "string" ? rec["id"] : "";
126333
+ const id30 = typeof rec["id"] === "string" ? rec["id"] : "";
125961
126334
  const timestamp2 = typeof rec["timestamp"] === "string" ? rec["timestamp"].trim() : "";
125962
126335
  const kind = rec["kind"];
125963
126336
  const message = typeof rec["message"] === "string" ? rec["message"] : "";
125964
- if (!id28 || !_DomindsApp.UNIFIED_TIMESTAMP_PATTERN.test(timestamp2) || !message) continue;
126337
+ if (!id30 || !_DomindsApp.UNIFIED_TIMESTAMP_PATTERN.test(timestamp2) || !message) continue;
125965
126338
  if (kind !== "error" && kind !== "warning" && kind !== "info") continue;
125966
- next2.push({ id: id28, timestamp: timestamp2, kind, message });
126339
+ next2.push({ id: id30, timestamp: timestamp2, kind, message });
125967
126340
  }
125968
126341
  return next2;
125969
126342
  }
@@ -125980,11 +126353,11 @@ ${content}`;
125980
126353
  pushToastHistoryEntry(entry) {
125981
126354
  this.loadToastHistoryFromStorage();
125982
126355
  const now2 = /* @__PURE__ */ new Date();
125983
- const id28 = `${String(now2.getTime())}-${String(this.toastHistorySeq += 1)}`;
126356
+ const id30 = `${String(now2.getTime())}-${String(this.toastHistorySeq += 1)}`;
125984
126357
  const trimmed = entry.message.trim();
125985
126358
  if (trimmed === "") return;
125986
126359
  const next2 = {
125987
- id: id28,
126360
+ id: id30,
125988
126361
  timestamp: timeExports.formatUnifiedTimestamp(now2),
125989
126362
  kind: entry.kind,
125990
126363
  message: trimmed
@@ -126753,6 +127126,16 @@ ${content}`;
126753
127126
  this.handleQ4HStateResponse(event);
126754
127127
  return true;
126755
127128
  }
127129
+ case "a2h_acknowledged": {
127130
+ const event = message;
127131
+ this.handleA2HAcknowledged(event);
127132
+ return true;
127133
+ }
127134
+ case "new_a2h_answered": {
127135
+ const event = message;
127136
+ this.handleNewA2HAnswered(event);
127137
+ return true;
127138
+ }
126756
127139
  case "dialogs_moved": {
126757
127140
  void this.loadDialogs();
126758
127141
  return true;
@@ -127604,7 +127987,7 @@ ${content}`;
127604
127987
  * Removes a question from the global Q4H state
127605
127988
  */
127606
127989
  handleQ4HAnswered(event) {
127607
- const wasVisibleQ4HCount = this.q4hQuestionCount;
127990
+ const wasVisibleHumanAttentionCount = this.humanAttentionCount;
127608
127991
  const removeIndex = this.q4hQuestions.findIndex((q2) => q2.id === event.questionId);
127609
127992
  if (removeIndex >= 0) {
127610
127993
  this.q4hQuestions.splice(removeIndex, 1);
@@ -127612,7 +127995,7 @@ ${content}`;
127612
127995
  this.wsManager.sendRaw({ type: "get_q4h_state" });
127613
127996
  }
127614
127997
  this.updateQ4HComponent();
127615
- if (removeIndex >= 0 && wasVisibleQ4HCount > 0 && this.q4hQuestionCount === 0) {
127998
+ if (removeIndex >= 0 && wasVisibleHumanAttentionCount > 0 && this.humanAttentionCount === 0) {
127616
127999
  this.collapseBottomPanelQ4HTabIfExpanded();
127617
128000
  }
127618
128001
  }
@@ -127635,28 +128018,28 @@ ${content}`;
127635
128018
  const next2 = [];
127636
128019
  const seenIds = /* @__PURE__ */ new Set();
127637
128020
  for (const existing of this.q4hQuestions) {
127638
- const id28 = typeof existing.id === "string" ? existing.id : "";
127639
- if (!id28) {
128021
+ const id30 = typeof existing.id === "string" ? existing.id : "";
128022
+ if (!id30) {
127640
128023
  throw new Error("Q4H client cache violation: existing question has invalid id");
127641
128024
  }
127642
- if (seenIds.has(id28)) {
127643
- throw new Error(`Q4H client cache violation: duplicate cached question id (${id28})`);
128025
+ if (seenIds.has(id30)) {
128026
+ throw new Error(`Q4H client cache violation: duplicate cached question id (${id30})`);
127644
128027
  }
127645
- seenIds.add(id28);
128028
+ seenIds.add(id30);
127646
128029
  const existingWithDialog = existing;
127647
128030
  const selfId = typeof existingWithDialog.selfId === "string" ? existingWithDialog.selfId : null;
127648
128031
  if (!selfId) {
127649
- const incoming2 = incomingById.get(id28);
128032
+ const incoming2 = incomingById.get(id30);
127650
128033
  next2.push(incoming2 ?? existing);
127651
- if (incoming2) incomingById.delete(id28);
128034
+ if (incoming2) incomingById.delete(id30);
127652
128035
  continue;
127653
128036
  }
127654
128037
  const rootId = typeof existingWithDialog.rootId === "string" && existingWithDialog.rootId ? existingWithDialog.rootId : selfId;
127655
128038
  const status = this.lookupVisibleDialogStatusByIds(rootId, selfId);
127656
- const incoming = incomingById.get(id28);
128039
+ const incoming = incomingById.get(id30);
127657
128040
  if (incoming) {
127658
128041
  next2.push(incoming);
127659
- incomingById.delete(id28);
128042
+ incomingById.delete(id30);
127660
128043
  continue;
127661
128044
  }
127662
128045
  if (status === "running") {
@@ -127664,18 +128047,40 @@ ${content}`;
127664
128047
  }
127665
128048
  next2.push(existing);
127666
128049
  }
127667
- for (const [id28, q2] of incomingById.entries()) {
127668
- if (seenIds.has(id28)) {
127669
- throw new Error(`Q4H state merge violation: duplicate id during merge (${id28})`);
128050
+ for (const [id30, q2] of incomingById.entries()) {
128051
+ if (seenIds.has(id30)) {
128052
+ throw new Error(`Q4H state merge violation: duplicate id during merge (${id30})`);
127670
128053
  }
127671
- seenIds.add(id28);
128054
+ seenIds.add(id30);
127672
128055
  next2.push(q2);
127673
128056
  }
127674
128057
  this.q4hQuestions = next2;
128058
+ this.a2hAnswers = event.answers;
127675
128059
  this.updateQ4HComponent();
127676
128060
  this.applyPendingQ4HSelectionFromDeepLink();
127677
128061
  this.applyPendingDeepLinkIfQ4H();
127678
128062
  }
128063
+ handleA2HAcknowledged(event) {
128064
+ const removeIndex = this.a2hAnswers.findIndex(
128065
+ (answer) => answer.id === event.answerId && answer.selfId === event.selfId && answer.rootId === event.rootId
128066
+ );
128067
+ if (removeIndex >= 0) {
128068
+ this.a2hAnswers.splice(removeIndex, 1);
128069
+ this.updateQ4HComponent();
128070
+ return;
128071
+ }
128072
+ this.wsManager.sendRaw({ type: "get_q4h_state" });
128073
+ }
128074
+ handleNewA2HAnswered(event) {
128075
+ const answer = event.answer;
128076
+ const existingIndex = this.a2hAnswers.findIndex((item) => item.id === answer.id);
128077
+ if (existingIndex >= 0) {
128078
+ this.a2hAnswers[existingIndex] = answer;
128079
+ } else {
128080
+ this.a2hAnswers.push(answer);
128081
+ }
128082
+ this.updateQ4HComponent();
128083
+ }
127679
128084
  resolveHydratedQ4HDialogContext(question2) {
127680
128085
  const globalQuestion = question2;
127681
128086
  if (globalQuestion.selfId) {
@@ -127690,7 +128095,8 @@ ${content}`;
127690
128095
  rootId,
127691
128096
  agentId: globalQuestion.agentId ?? "unknown",
127692
128097
  taskDocPath: globalQuestion.taskDocPath ?? "",
127693
- questions: [question2]
128098
+ questions: [question2],
128099
+ answers: []
127694
128100
  };
127695
128101
  }
127696
128102
  const dialogInfo = this.findDialogForQuestion(question2);
@@ -127706,7 +128112,8 @@ ${content}`;
127706
128112
  rootId: dialogInfo.rootId,
127707
128113
  agentId: dialogInfo.agentId,
127708
128114
  taskDocPath: dialogInfo.taskDocPath,
127709
- questions: [question2]
128115
+ questions: [question2],
128116
+ answers: []
127710
128117
  };
127711
128118
  }
127712
128119
  /**
@@ -127736,8 +128143,12 @@ ${content}`;
127736
128143
  this.q4hInput.setQuestions(q4hQuestions);
127737
128144
  }
127738
128145
  const panel = this.shadowRoot?.querySelector("#q4h-panel");
127739
- if (panel instanceof HTMLElement && typeof panel.setQuestions === "function") {
127740
- panel.setQuestions(this.q4hQuestionCount, this.q4hDialogContexts);
128146
+ if (panel instanceof HTMLElement && typeof panel.setHumanAttention === "function") {
128147
+ panel.setHumanAttention(
128148
+ this.humanAttentionCount,
128149
+ this.q4hDialogContexts,
128150
+ this.a2hAnswers
128151
+ );
127741
128152
  }
127742
128153
  this.updateBottomPanelFooterUi();
127743
128154
  }
@@ -127777,7 +128188,8 @@ ${content}`;
127777
128188
  rootId: rootId ?? dialogId,
127778
128189
  agentId: agentId ?? "unknown",
127779
128190
  taskDocPath: taskDocPath ?? "",
127780
- questions: []
128191
+ questions: [],
128192
+ answers: []
127781
128193
  };
127782
128194
  contextMap.set(key, context);
127783
128195
  }
@@ -129747,15 +130159,15 @@ document.addEventListener("DOMContentLoaded", async () => {
129747
130159
  });
129748
130160
  export {
129749
130161
  commonDb_exports as $,
129750
- rgba$1 as A,
129751
- __export as B,
129752
- setupGraphViewbox2 as C,
129753
- cleanAndMerge as D,
129754
- defaultConfig_default as E,
129755
- getConfig as F,
129756
- random as G,
129757
- selectSvgElement as H,
129758
- package_default as I,
130162
+ defaultConfig2 as A,
130163
+ rgba$1 as B,
130164
+ __export as C,
130165
+ setupGraphViewbox2 as D,
130166
+ cleanAndMerge as E,
130167
+ defaultConfig_default as F,
130168
+ getConfig as G,
130169
+ random as H,
130170
+ selectSvgElement as I,
129759
130171
  JSON_SCHEMA as J,
129760
130172
  getThemeVariables3 as K,
129761
130173
  hasKatex as L,
@@ -129775,7 +130187,7 @@ export {
129775
130187
  ZERO_WIDTH_SPACE as Z,
129776
130188
  __name as _,
129777
130189
  getAccTitle as a,
129778
- isLabelStyle as a$,
130190
+ isIndex as a$,
129779
130191
  withPath as a0,
129780
130192
  halfPi as a1,
129781
130193
  epsilon as a2,
@@ -129786,33 +130198,33 @@ export {
129786
130198
  abs$1 as a7,
129787
130199
  pi as a8,
129788
130200
  sqrt as a9,
129789
- baseRest as aA,
129790
- isArrayLikeObject as aB,
129791
- constant as aC,
129792
- isFunction as aD,
129793
- isEmpty2 as aE,
129794
- computeDimensionOfText as aF,
129795
- array as aG,
129796
- getUserDefinedConfig as aH,
129797
- getDefaultExportFromCjs as aI,
129798
- getIconSVG as aJ,
129799
- registerIconPacks as aK,
129800
- unknownIcon as aL,
129801
- constant$2 as aM,
129802
- interpolateNumber as aN,
129803
- color as aO,
129804
- interpolateRgb as aP,
129805
- interpolateString as aQ,
129806
- isObject as aR,
129807
- isIterateeCall as aS,
129808
- keysIn as aT,
129809
- eq as aU,
129810
- isArrayLike as aV,
129811
- isArray as aW,
129812
- identity as aX,
129813
- isIndex as aY,
129814
- assignValue as aZ,
129815
- styles2String as a_,
130201
+ positionEdgeLabel as aA,
130202
+ insertEdgeLabel as aB,
130203
+ baseRest as aC,
130204
+ isArrayLikeObject as aD,
130205
+ constant as aE,
130206
+ isFunction as aF,
130207
+ isEmpty2 as aG,
130208
+ computeDimensionOfText as aH,
130209
+ adjustChannel as aI,
130210
+ array as aJ,
130211
+ getUserDefinedConfig as aK,
130212
+ getDefaultExportFromCjs as aL,
130213
+ getIconSVG as aM,
130214
+ registerIconPacks as aN,
130215
+ unknownIcon as aO,
130216
+ constant$2 as aP,
130217
+ interpolateNumber as aQ,
130218
+ color as aR,
130219
+ interpolateRgb as aS,
130220
+ interpolateString as aT,
130221
+ isObject as aU,
130222
+ isIterateeCall as aV,
130223
+ keysIn as aW,
130224
+ eq as aX,
130225
+ isArrayLike as aY,
130226
+ isArray as aZ,
130227
+ identity as a_,
129816
130228
  atan2 as aa,
129817
130229
  constant$1 as ab,
129818
130230
  asin as ac,
@@ -129822,65 +130234,68 @@ export {
129822
130234
  insertNode as ag,
129823
130235
  positionNode as ah,
129824
130236
  getLineFunctionsWithOffset as ai,
129825
- evaluate as aj,
130237
+ getEffectiveHtmlLabels as aj,
129826
130238
  createText as ak,
129827
- getSubGraphTitleMargins as al,
129828
- replaceIconSubstring as am,
129829
- decodeEntities as an,
129830
- getStylesFromArray as ao,
129831
- Utils as ap,
129832
- Color$1 as aq,
129833
- markers_default as ar,
129834
- clear2 as as,
129835
- clear as at,
129836
- clear$1 as au,
129837
- updateNodeBounds as av,
129838
- setNodeElem as aw,
129839
- insertEdge as ax,
129840
- positionEdgeLabel as ay,
129841
- insertEdgeLabel as az,
130239
+ computeLabelTransform as al,
130240
+ getSubGraphTitleMargins as am,
130241
+ getStylesFromArray as an,
130242
+ decodeEntities as ao,
130243
+ configureLabelImages as ap,
130244
+ Utils as aq,
130245
+ Color$1 as ar,
130246
+ at as as,
130247
+ markers_default as at,
130248
+ clear2 as au,
130249
+ clear as av,
130250
+ clear$1 as aw,
130251
+ updateNodeBounds as ax,
130252
+ setNodeElem as ay,
130253
+ insertEdge as az,
129842
130254
  setAccTitle as b,
129843
- Rgb as b0,
129844
- rgbConvert as b1,
129845
- define as b2,
129846
- extend$1 as b3,
129847
- Color as b4,
129848
- nogamma as b5,
129849
- hue as b6,
129850
- dayjs2 as b7,
129851
- setToString as b8,
129852
- overRest as b9,
129853
- Set$1 as bA,
129854
- createAssigner as bB,
129855
- isPrototype as bC,
129856
- getAugmentedNamespace as bD,
129857
- __vitePreload as bE,
129858
- baseFor as ba,
129859
- baseAssignValue as bb,
129860
- baseUnary as bc,
129861
- merge as bd,
129862
- isObjectLike as be,
129863
- baseGetTag as bf,
129864
- Symbol$1 as bg,
129865
- arrayLikeKeys as bh,
129866
- baseKeys as bi,
129867
- memoize as bj,
129868
- isArguments as bk,
129869
- copyObject as bl,
129870
- getPrototype as bm,
129871
- cloneArrayBuffer as bn,
129872
- cloneTypedArray as bo,
129873
- getTag as bp,
129874
- nodeUtil as bq,
129875
- copyArray as br,
129876
- isBuffer as bs,
129877
- cloneBuffer as bt,
129878
- initCloneObject as bu,
129879
- Stack as bv,
129880
- MapCache as bw,
129881
- Uint8Array$1 as bx,
129882
- isTypedArray as by,
129883
- isLength as bz,
130255
+ assignValue as b0,
130256
+ styles2String as b1,
130257
+ isLabelStyle as b2,
130258
+ Rgb as b3,
130259
+ rgbConvert as b4,
130260
+ define as b5,
130261
+ extend$1 as b6,
130262
+ Color as b7,
130263
+ nogamma as b8,
130264
+ hue as b9,
130265
+ Uint8Array$1 as bA,
130266
+ isTypedArray as bB,
130267
+ isLength as bC,
130268
+ Set$1 as bD,
130269
+ createAssigner as bE,
130270
+ isPrototype as bF,
130271
+ getAugmentedNamespace as bG,
130272
+ __vitePreload as bH,
130273
+ dayjs2 as ba,
130274
+ setToString as bb,
130275
+ overRest as bc,
130276
+ baseFor as bd,
130277
+ baseAssignValue as be,
130278
+ baseUnary as bf,
130279
+ merge as bg,
130280
+ isObjectLike as bh,
130281
+ baseGetTag as bi,
130282
+ Symbol$1 as bj,
130283
+ arrayLikeKeys as bk,
130284
+ baseKeys as bl,
130285
+ memoize as bm,
130286
+ isArguments as bn,
130287
+ copyObject as bo,
130288
+ getPrototype as bp,
130289
+ cloneArrayBuffer as bq,
130290
+ cloneTypedArray as br,
130291
+ getTag as bs,
130292
+ nodeUtil as bt,
130293
+ copyArray as bu,
130294
+ isBuffer as bv,
130295
+ cloneBuffer as bw,
130296
+ initCloneObject as bx,
130297
+ Stack as by,
130298
+ MapCache as bz,
129884
130299
  getConfig2 as c,
129885
130300
  select as d,
129886
130301
  configureSvgSize as e,
@@ -129903,7 +130318,7 @@ export {
129903
130318
  isValidShape as v,
129904
130319
  wrapLabel as w,
129905
130320
  getEdgeId as x,
129906
- clear$2 as y,
129907
- defaultConfig2 as z
130321
+ purify as y,
130322
+ clear$2 as z
129908
130323
  };
129909
- //# sourceMappingURL=index-arD81Nnh.js.map
130324
+ //# sourceMappingURL=index-BXjq-k48.js.map