collabmd 0.1.34 → 0.1.36

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 (375) hide show
  1. package/dist/client/assets/{CodeMirrorEditor-UCMRAMCV-Bg0dawOb.js → CodeMirrorEditor-UCMRAMCV-DnBV8gCm.js} +1 -1
  2. package/dist/client/assets/_baseFor-BSErPbF2.js +1 -0
  3. package/dist/client/assets/{ar-SA-NXDWD63E-WivLHHDW.js → ar-SA-NXDWD63E-CTf_wpt3.js} +1 -1
  4. package/dist/client/assets/arc-DD8jaAGl.js +1 -0
  5. package/dist/client/assets/architecture-YZFGNWBL-DWWrde02.js +1 -0
  6. package/dist/client/assets/{architectureDiagram-2XIMDMQ5-kYbOThe4.js → architectureDiagram-Q4EWVU46-BftXiJA8.js} +4 -4
  7. package/dist/client/assets/{az-AZ-MXSORGZV-DOdq1TKC.js → az-AZ-MXSORGZV-C_C9i9u3.js} +1 -1
  8. package/dist/client/assets/{bg-BG-O6MV2KSF-CYucKuDS.js → bg-BG-O6MV2KSF-YmfvQf63.js} +1 -1
  9. package/dist/client/assets/blockDiagram-DXYQGD6D-6UN-nR8-.js +132 -0
  10. package/dist/client/assets/{bn-IN-MMW2ORAC-DYr8kqNL.js → bn-BD-T2VJNT7N-BD0ob0JE.js} +1 -1
  11. package/dist/client/assets/{bn-BD-T2VJNT7N-2OKWLCYa.js → bn-IN-MMW2ORAC-BTEFR4Ed.js} +1 -1
  12. package/dist/client/assets/c4Diagram-AHTNJAMY-Gz7ZAK0d.js +10 -0
  13. package/dist/client/assets/{ca-ES-MKBCGNOG-B9Aeb43I.js → ca-ES-MKBCGNOG-aLX_cjA0.js} +1 -1
  14. package/dist/client/assets/channel-XGCkuPi6.js +1 -0
  15. package/dist/client/assets/chunk-2KRD3SAO-CFcF2aNP.js +1 -0
  16. package/dist/client/assets/chunk-336JU56O-DvrrHsJT.js +2 -0
  17. package/dist/client/assets/chunk-426QAEUC-CEbmCgux.js +1 -0
  18. package/dist/client/assets/{chunk-4BX2VUAB-2e7V-uuE.js → chunk-4BX2VUAB-D5YiFdu1.js} +1 -1
  19. package/dist/client/assets/chunk-4TB4RGXK-CoouNThi.js +206 -0
  20. package/dist/client/assets/{chunk-55IACEB6-CpncB3ru.js → chunk-55IACEB6-VHgZjidg.js} +1 -1
  21. package/dist/client/assets/chunk-5FUZZQ4R-CxIIxXPy.js +62 -0
  22. package/dist/client/assets/chunk-5PVQY5BW-ciE7eHID.js +2 -0
  23. package/dist/client/assets/chunk-67CJDMHE-CW-fbgQB.js +1 -0
  24. package/dist/client/assets/chunk-7N4EOEYR-DbAW6XnF.js +1 -0
  25. package/dist/client/assets/chunk-AA7GKIK3-ClDHDAza.js +1 -0
  26. package/dist/client/assets/chunk-BSJP7CBP-D2KkrA_B.js +1 -0
  27. package/dist/client/assets/chunk-CIAEETIT-BnB8a6HR.js +1 -0
  28. package/dist/client/assets/{chunk-KX2RTZJC-BTiOJb7N.js → chunk-EDXVE4YY-M4QxyGNt.js} +1 -1
  29. package/dist/client/assets/chunk-ENJZ2VHE-BQj_1YA_.js +10 -0
  30. package/dist/client/assets/{chunk-FMBD7UC4-CMahlBa_.js → chunk-FMBD7UC4-qQT7MtX2.js} +1 -1
  31. package/dist/client/assets/chunk-FOC6F5B3-Bw6XfKDP.js +1 -0
  32. package/dist/client/assets/chunk-ICPOFSXX-DqJi89rc.js +122 -0
  33. package/dist/client/assets/chunk-K5T4RW27-CQtjKF2g.js +94 -0
  34. package/dist/client/assets/chunk-KGLVRYIC-BWSPiKjp.js +1 -0
  35. package/dist/client/assets/chunk-LIHQZDEY-DtYrHuCi.js +1 -0
  36. package/dist/client/assets/{chunk-AXZTUZBK-DuMiJYO9.js → chunk-LOOWOR4L-C5BUwXgZ.js} +2 -2
  37. package/dist/client/assets/chunk-ORNJ4GCN-Csga44e5.js +1 -0
  38. package/dist/client/assets/{chunk-NQ4KR5QH-CMJKI6Oj.js → chunk-OYMX7WX6-DvtmCasj.js} +25 -14
  39. package/dist/client/assets/chunk-QZHKN3VN-CHVH9_3S.js +1 -0
  40. package/dist/client/assets/{chunk-SRAX5OIU-CLVBQRWC.js → chunk-SRAX5OIU-yDw8XRsi.js} +1 -1
  41. package/dist/client/assets/{chunk-PU5JKC2W-D_6N6t8f.js → chunk-U2HBQHQK-BBXgsocS.js} +6 -6
  42. package/dist/client/assets/{chunk-PQ6SQG4A-D1AbThjy.js → chunk-X2U36JSP-D3OEPG7k.js} +1 -1
  43. package/dist/client/assets/{chunk-XPW4576I-DJr4_4Yy.js → chunk-XPW4576I-BUfyrOtN.js} +2 -2
  44. package/dist/client/assets/chunk-YHkbxXgt.js +1 -0
  45. package/dist/client/assets/chunk-YKPWT25G-GISHuloq.js +35 -0
  46. package/dist/client/assets/{chunk-JSJVCQXG-DPQ9cPJt.js → chunk-YZCP3GAM-D1jf1WUI.js} +1 -1
  47. package/dist/client/assets/{chunk-Z5NKEFVG-HOkYqaKa.js → chunk-Z5NKEFVG-Vu8zBV4H.js} +1 -1
  48. package/dist/client/assets/chunk-ZZ45TVLE-DGIhE_ST.js +1 -0
  49. package/dist/client/assets/classDiagram-6PBFFD2Q-D1KhAUL3.js +1 -0
  50. package/dist/client/assets/classDiagram-v2-HSJHXN6E-BSyyJpnR.js +1 -0
  51. package/dist/client/assets/clike-BFTLRaGS.js +1 -0
  52. package/dist/client/assets/clone-DI0bYZ1L.js +1 -0
  53. package/dist/client/assets/{coffeescript-B_7eyHAa.js → coffeescript-B7GZajzV.js} +1 -1
  54. package/dist/client/assets/{cose-bilkent-S5V4N54A-DASO2hrk.js → cose-bilkent-S5V4N54A-A8ssRFyt.js} +1 -1
  55. package/dist/client/assets/{cs-CZ-V77HGUP7-BDg-F0CJ.js → cs-CZ-V77HGUP7-Du3y53BB.js} +1 -1
  56. package/dist/client/assets/{cypher-DE6I2lIA.js → cypher-DEGl2llJ.js} +1 -1
  57. package/dist/client/assets/cytoscape.esm-BurByw8X.js +321 -0
  58. package/dist/client/assets/{d-BNkKjn0o.js → d-BspB0dox.js} +1 -1
  59. package/dist/client/assets/{da-DK-I5RFNTM4-wtSQ0Jxa.js → da-DK-I5RFNTM4-CDJtjf5s.js} +1 -1
  60. package/dist/client/assets/dagre-Dn6rkrte.js +1 -0
  61. package/dist/client/assets/dagre-KV5264BT-COzej2en.js +4 -0
  62. package/dist/client/assets/{de-CH-WLRDEVBV-C1swvmZy.js → de-CH-WLRDEVBV-CLV2tVw6.js} +1 -1
  63. package/dist/client/assets/{de-DE-DTI4WUSC-C0L6Nz8X.js → de-DE-DTI4WUSC-B53J0BQ8.js} +1 -1
  64. package/dist/client/assets/diagram-5BDNPKRD-BuK-UBuN.js +10 -0
  65. package/dist/client/assets/diagram-G4DWMVQ6-CbswIU9X.js +24 -0
  66. package/dist/client/assets/diagram-MMDJMWI5-BE-yOVGX.js +43 -0
  67. package/dist/client/assets/diagram-TYMM5635-CT8BdT4s.js +24 -0
  68. package/dist/client/assets/{dist-3uAMa5w5.js → dist-B98fHn5m.js} +1 -1
  69. package/dist/client/assets/{dist-BtnXjRx0.js → dist-BE8C_ouo.js} +1 -1
  70. package/dist/client/assets/{dist-rMhng5DK.js → dist-BEKQo64E.js} +1 -1
  71. package/dist/client/assets/{dist-DsL7sqZR.js → dist-BOP-dC-R.js} +1 -1
  72. package/dist/client/assets/{dist-DUvaQ-Bj.js → dist-BPEi1dEF.js} +1 -1
  73. package/dist/client/assets/{dist-B4uQVR_X.js → dist-BScEL4VP.js} +1 -1
  74. package/dist/client/assets/dist-BfVljg0L2.js +1 -0
  75. package/dist/client/assets/{dist-CGV1S_as.js → dist-BiCgLddE.js} +1 -1
  76. package/dist/client/assets/{dist-CxfohGIV.js → dist-Bn8WRPs1.js} +1 -1
  77. package/dist/client/assets/dist-Brrlevif.js +6 -0
  78. package/dist/client/assets/{dist-BLAlZer_.js → dist-CBEw2W2P.js} +1 -1
  79. package/dist/client/assets/{dist-B-02vKOA.js → dist-CJWCCWEW.js} +1 -1
  80. package/dist/client/assets/{dist-Dyt7n5Ui.js → dist-CQVTTk81.js} +1 -1
  81. package/dist/client/assets/dist-CaMl1R6P.js +13 -0
  82. package/dist/client/assets/dist-CcG3Y7Wp.js +1 -0
  83. package/dist/client/assets/dist-CghBwrO3.js +1 -0
  84. package/dist/client/assets/dist-Csbx9lQ-.js +1 -0
  85. package/dist/client/assets/dist-D34Xzrah.js +1 -0
  86. package/dist/client/assets/dist-DLyohOXi.js +1 -0
  87. package/dist/client/assets/{dist-Bc2ND6i3.js → dist-DPCUH5MO.js} +1 -1
  88. package/dist/client/assets/{dist-BzpfHRaE.js → dist-DQiph4qx.js} +1 -1
  89. package/dist/client/assets/{dist-CL-jjdvG.js → dist-DWRyOl2w.js} +1 -1
  90. package/dist/client/assets/{dist-CXpKYW9s.js → dist-DZ2t5lUX.js} +1 -1
  91. package/dist/client/assets/{dist-BzbYwa8m.js → dist-Dbg8P4C5.js} +1 -1
  92. package/dist/client/assets/{dist-k47-Io7D.js → dist-DdAqzGFU.js} +1 -1
  93. package/dist/client/assets/dist-DwvSvkOE.js +1 -0
  94. package/dist/client/assets/dist-WXLmfDGg.js +1 -0
  95. package/dist/client/assets/{dist-lDhnP-K1.js → dist-aE0_04fl.js} +1 -1
  96. package/dist/client/assets/{dist-E_jPb93e.js → dist-mPPUaHhq.js} +1 -1
  97. package/dist/client/assets/{dist-CjII8VDS.js → dist-v3i1ifes.js} +1 -1
  98. package/dist/client/assets/dist-wkd-N1L5.js +1 -0
  99. package/dist/client/assets/drawio-editor-D4Qoluwz.js +9 -0
  100. package/dist/client/assets/{drawioEditor-D6clB5OH.js → drawioEditor-B65FWq-b.js} +2 -2
  101. package/dist/client/assets/{ecl-M7Iek4lq.js → ecl-D9rhJ9-u.js} +1 -1
  102. package/dist/client/assets/editor-session-DV80PhYL.js +16 -0
  103. package/dist/client/assets/{el-GR-ZXDJ2OS4-BH0saXds.js → el-GR-ZXDJ2OS4-DFmRQv0o.js} +1 -1
  104. package/dist/client/assets/{en-IQZW2TQM-CzlcEpq3.js → en-CMP6EMR6-D9x8hVSu.js} +1 -1
  105. package/dist/client/assets/{erDiagram-INFDFZHY-DlIf-fb7.js → erDiagram-SMLLAGMA-6VFZA3Qb.js} +33 -18
  106. package/dist/client/assets/{es-ES-DYQHAD43-CyzL9Mni.js → es-ES-DYQHAD43-BiGWIrBG.js} +1 -1
  107. package/dist/client/assets/{eu-ES-QDSYU5Y3-D2-x316S.js → eu-ES-QDSYU5Y3-BjwS0kZi.js} +1 -1
  108. package/dist/client/assets/excalidraw-editor-BZCE9ydu.css +1 -0
  109. package/dist/client/assets/excalidraw-editor-hiJQt1cX.js +9 -0
  110. package/dist/client/assets/{excalidraw-mermaid-stub-Bwe-bKcT.js → excalidraw-mermaid-stub-Df0Q2qkW.js} +1 -1
  111. package/dist/client/assets/excalidraw-scene-MyNAJi2A.js +176 -0
  112. package/dist/client/assets/excalidrawEditor-BnbblxK4.js +2 -0
  113. package/dist/client/assets/{export-page-PeexH2QK.js → export-page-BKDarp9x.js} +3 -3
  114. package/dist/client/assets/exportDocument-CULEGKmb.js +2 -0
  115. package/dist/client/assets/{fa-IR-26LZG4PM-D8-trU2x.js → fa-IR-26LZG4PM-BgANg2TD.js} +1 -1
  116. package/dist/client/assets/{fcl-BWKK0S4-.js → fcl-CUXJFJn1.js} +1 -1
  117. package/dist/client/assets/{fi-FI-6YS4KDE4-CCdRVFDQ.js → fi-FI-6YS4KDE4-CBL5f3oN.js} +1 -1
  118. package/dist/client/assets/flatten-DjXjUsvv.js +1 -0
  119. package/dist/client/assets/flowDiagram-DWJPFMVM-DO9RH8YQ.js +162 -0
  120. package/dist/client/assets/{fr-FR-BRLLPTZC-Dqq-O5T_.js → fr-FR-BRLLPTZC-CRibNSLG.js} +1 -1
  121. package/dist/client/assets/ganttDiagram-T4ZO3ILL-B-NMvHWN.js +292 -0
  122. package/dist/client/assets/gitGraph-7Q5UKJZL-DWNinXu4.js +1 -0
  123. package/dist/client/assets/gitGraphDiagram-UUTBAWPF-B95qkCUx.js +106 -0
  124. package/dist/client/assets/{gl-ES-OKUZTLYG-BK7pbLbm.js → gl-ES-OKUZTLYG-DEDwa_xt.js} +1 -1
  125. package/dist/client/assets/graphlib-CAwOVCJc.js +1 -0
  126. package/dist/client/assets/{groovy-BEKazBrO.js → groovy-Di--Vb9Z.js} +1 -1
  127. package/dist/client/assets/{haxe-BY9d_5nB.js → haxe-CcPA1xnA.js} +1 -1
  128. package/dist/client/assets/{he-IL-26MGYIU7-C3BuYKyY.js → he-IL-26MGYIU7-47wxy70N.js} +1 -1
  129. package/dist/client/assets/{hi-IN-Q4ZOGTP2-BEvXWXnH.js → hi-IN-Q4ZOGTP2-bhV7c3dK.js} +1 -1
  130. package/dist/client/assets/{hu-HU-P2OXPSN5-BWWZeJNp.js → hu-HU-P2OXPSN5-xG-gBMzE.js} +1 -1
  131. package/dist/client/assets/{id-ID-2EIKXYN6-DxSKi_aJ.js → id-ID-2EIKXYN6-MQuYaNHo.js} +1 -1
  132. package/dist/client/assets/image-J2CAS7OM-DD4DaQTs.js +1 -0
  133. package/dist/client/assets/image-blob-reduce.esm-D8JQdTFk.js +2 -0
  134. package/dist/client/assets/{index-BLrtj9YM.js → index-BjdYZiBM.js} +2 -2
  135. package/dist/client/assets/{index-BIt5EZXz.css → index-BryqP9QY.css} +1 -1
  136. package/dist/client/assets/info-OMHHGYJF-DtYG_rX0.js +1 -0
  137. package/dist/client/assets/{infoDiagram-LFFYTUFH-DFTI0nfs.js → infoDiagram-42DDH7IO-C77Pt7T1.js} +1 -1
  138. package/dist/client/assets/isEmpty-CpfhGGBo.js +1 -0
  139. package/dist/client/assets/ishikawaDiagram-UXIWVN3A-Cy1fwvvg.js +70 -0
  140. package/dist/client/assets/{it-IT-4CFKVXI2-BmA8wW6q.js → it-IT-4CFKVXI2-v2kj-y7j.js} +1 -1
  141. package/dist/client/assets/{ja-JP-MAND2Z4V-CLS1jI9o.js → ja-JP-MAND2Z4V-BahXSQz-.js} +1 -1
  142. package/dist/client/assets/{javascript-CdiVhQeA.js → javascript-gTK9fxz6.js} +1 -1
  143. package/dist/client/assets/javascript-qUBHINSy.js +1 -0
  144. package/dist/client/assets/{journeyDiagram-4ABVD52K-DDur6iHm.js → journeyDiagram-VCZTEJTY-CYWaI6re.js} +2 -2
  145. package/dist/client/assets/{jsx-runtime-C2p7wRmT.js → jsx-runtime-1KUJVfx8.js} +1 -1
  146. package/dist/client/assets/{kaa-HQRTCXTJ-W15DEDPz.js → kaa-HQRTCXTJ-BF26ydFa.js} +1 -1
  147. package/dist/client/assets/{kab-KAB-JKIKKTGH-MLh1inqS.js → kab-KAB-JKIKKTGH-CEIH0F80.js} +1 -1
  148. package/dist/client/assets/{kanban-definition-K7BYSVSG-dA6NPLsg.js → kanban-definition-6JOO6SKY-DY1xE7tm.js} +2 -2
  149. package/dist/client/assets/{kk-KZ-HXQ63ZFC-BtFrPeLs.js → kk-KZ-HXQ63ZFC-CxWjc9Sf.js} +1 -1
  150. package/dist/client/assets/{km-KH-PKL3LSGX-xO5FyM9T.js → km-KH-PKL3LSGX-DJlCteEp.js} +1 -1
  151. package/dist/client/assets/{ko-KR-KXLREZX3-NZFoRybS.js → ko-KR-KXLREZX3-B1gtI_ci.js} +1 -1
  152. package/dist/client/assets/{ku-TR-MJ4IER3X-B5eVPIpK.js → ku-TR-MJ4IER3X-Bf41y2v2.js} +1 -1
  153. package/dist/client/assets/line-BCItEgq3.js +1 -0
  154. package/dist/client/assets/{linear-B2dOdA24.js → linear-dsIQT_iU.js} +1 -1
  155. package/dist/client/assets/{lt-LT-H6WFQ6FJ-D_7_OeJD.js → lt-LT-H6WFQ6FJ-DA1or-Eo.js} +1 -1
  156. package/dist/client/assets/{lua-kutgyRGY.js → lua-Cg0FqIlO.js} +1 -1
  157. package/dist/client/assets/{lv-LV-GOCK6SJW-CnpKr0oQ.js → lv-LV-GOCK6SJW-qa0BoYMm.js} +1 -1
  158. package/dist/client/assets/main-QJcxyvDa.js +1404 -0
  159. package/dist/client/assets/mermaid-parser.core-CsTVsPcD.js +4 -0
  160. package/dist/client/assets/mermaid-runtime-BGlnoUXY.js +11 -0
  161. package/dist/client/assets/{mindmap-definition-YRQLILUH-DjQcsPoe.js → mindmap-definition-QFDTVHPH-DB_M5r-j.js} +39 -11
  162. package/dist/client/assets/{mr-IN-IXVLDMEQ-Pht2X_GK.js → mr-IN-IXVLDMEQ-DXFRgvgb.js} +1 -1
  163. package/dist/client/assets/{my-MM-YG6MYTTD-Cgq4HhPO.js → my-MM-YG6MYTTD-BKDIfalJ.js} +1 -1
  164. package/dist/client/assets/{nb-NO-XGWJISD2-Bn_Bk2un.js → nb-NO-XGWJISD2-DbwbopH8.js} +1 -1
  165. package/dist/client/assets/{nl-NL-XVDVCPNC-YkWSJS94.js → nl-NL-XVDVCPNC-ChSneTSU.js} +1 -1
  166. package/dist/client/assets/{nn-NO-EMX5MJX5-DhP5eZJ7.js → nn-NO-EMX5MJX5-Cf7ZWKWZ.js} +1 -1
  167. package/dist/client/assets/{oc-FR-ROEINTVO-D3udMPnr.js → oc-FR-ROEINTVO-lM7Nl7hD.js} +1 -1
  168. package/dist/client/assets/{pa-IN-ZYN6SUDY-CR5YzFig.js → pa-IN-ZYN6SUDY-C9WNUTeR.js} +1 -1
  169. package/dist/client/assets/packet-4T2RLAQJ-CUVefhAv.js +1 -0
  170. package/dist/client/assets/percentages-5DKR754L-DuhOjTM2.js +1 -0
  171. package/dist/client/assets/pica-CgGaIJly.js +2 -0
  172. package/dist/client/assets/pie-ZZUOXDRM-BHBJ1dLX.js +1 -0
  173. package/dist/client/assets/pieDiagram-DEJITSTG-BOo-WzjZ.js +30 -0
  174. package/dist/client/assets/{pl-PL-6VTG7PHC-_wZuoIDM.js → pl-PL-6VTG7PHC-DqRVepnC.js} +1 -1
  175. package/dist/client/assets/{preview-diagram-utils-COt-IYMD.js → preview-diagram-utils-Nqpp4FNV.js} +1 -1
  176. package/dist/client/assets/preview-render-compiler-BCB8u6iM.js +1 -0
  177. package/dist/client/assets/{preview-render-compiler-BjLlHmiQ.js → preview-render-compiler-Tkc6JX1O.js} +2 -2
  178. package/dist/client/assets/{preview-render-profile-CR4dJZrp.js → preview-render-profile-Bf6R7v4w.js} +6 -6
  179. package/dist/client/assets/{preview-render-worker-B4dH2yxj.js → preview-render-worker-1LBLqgKu.js} +7 -7
  180. package/dist/client/assets/{pt-BR-5YFKRR5G-M7gIm2Hi.js → pt-BR-5YFKRR5G-CopLYEA6.js} +1 -1
  181. package/dist/client/assets/{pt-PT-GEIXXZ67-CcxWpkGj.js → pt-PT-GEIXXZ67-BjZ_Lphg.js} +1 -1
  182. package/dist/client/assets/{pug-DkUcLYWt.js → pug-lkTEco3G.js} +1 -1
  183. package/dist/client/assets/{python-CZtTmYkS.js → python-BUyhM0Ew.js} +1 -1
  184. package/dist/client/assets/{q-I27iQntV.js → q-Dls1OX0D.js} +1 -1
  185. package/dist/client/assets/{quadrantDiagram-337W2JSQ-CYKgdx7K.js → quadrantDiagram-34T5L4WZ-2vfo0l5S.js} +1 -1
  186. package/dist/client/assets/{quick-switcher-controller-DcyllYpm.js → quick-switcher-controller-B1erSgJ1.js} +1 -1
  187. package/dist/client/assets/{r-DN_EydfL.js → r-DeZ8Mdev.js} +1 -1
  188. package/dist/client/assets/radar-PYXPWWZC-2jR4qZNU.js +1 -0
  189. package/dist/client/assets/reduce-ChpYjEUB.js +1 -0
  190. package/dist/client/assets/requirementDiagram-MS252O5E-CtUIQnWa.js +84 -0
  191. package/dist/client/assets/{ro-RO-E2P6TFZI-qR9noVzP.js → ro-RO-E2P6TFZI-DakDz5Xu.js} +1 -1
  192. package/dist/client/assets/{room-yJaBAoEU.js → room-z2w9b96b.js} +1 -1
  193. package/dist/client/assets/{ru-RU-YBIIY43T-CE4S_RX8.js → ru-RU-YBIIY43T-BMvCT-XT.js} +1 -1
  194. package/dist/client/assets/{sankeyDiagram-WA2Y5GQK-CfHe3D6R.js → sankeyDiagram-XADWPNL6-tcSeuifE.js} +1 -1
  195. package/dist/client/assets/sequenceDiagram-FGHM5R23-DtF-1Kt2.js +157 -0
  196. package/dist/client/assets/{si-LK-673C2CI2-Bv6Avh3z.js → si-LK-673C2CI2-hGdH1S9E.js} +1 -1
  197. package/dist/client/assets/{sk-SK-CKZHQ4AP-Cnlpp55z.js → sk-SK-CKZHQ4AP-DiRA-fj8.js} +1 -1
  198. package/dist/client/assets/{sl-SI-557H2GWM-BfGq7AQF.js → sl-SI-557H2GWM-DN94n_1-.js} +1 -1
  199. package/dist/client/assets/{sparql-BOvq0dv7.js → sparql-vm8qNO8J.js} +1 -1
  200. package/dist/client/assets/sql-GL7dVWcd.js +1 -0
  201. package/dist/client/assets/src-BuiVcSz-.js +1 -0
  202. package/dist/client/assets/stateDiagram-FHFEXIEX-DKk7Sb0f.js +1 -0
  203. package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-DJUaiADr.js +1 -0
  204. package/dist/client/assets/subset-shared.chunk-CWNYNLru.js +1 -0
  205. package/dist/client/assets/{subset-worker.chunk-BSCP6IiC.js → subset-worker.chunk-kj1e3wjW.js} +1 -1
  206. package/dist/client/assets/{sv-SE-XOPKKDWS-B2_Vk-sp.js → sv-SE-XOPKKDWS-CkHUNABj.js} +1 -1
  207. package/dist/client/assets/{swift-BCxe4-cw.js → swift-CKcKnWv9.js} +1 -1
  208. package/dist/client/assets/{ta-IN-XBH7DQI3-BXQMZZIx.js → ta-IN-XBH7DQI3-W-157oVK.js} +1 -1
  209. package/dist/client/assets/{th-TH-TOCWH3R4-C-ZIYMfH.js → th-TH-TOCWH3R4-BsU-Pydr.js} +1 -1
  210. package/dist/client/assets/timeline-definition-GMOUNBTQ-Bs6U53Mo.js +120 -0
  211. package/dist/client/assets/{tr-TR-GXW6CYY5-dl702PMA.js → tr-TR-GXW6CYY5-CTddyq89.js} +1 -1
  212. package/dist/client/assets/treeView-SZITEDCU-DN5dP2ol.js +1 -0
  213. package/dist/client/assets/treemap-W4RFUUIX-Dva7DBJR.js +1 -0
  214. package/dist/client/assets/{turtle-GBz_E4RG.js → turtle-BkP3ExOG.js} +1 -1
  215. package/dist/client/assets/{uk-UA-IJKTNUDG-CUYQvSSF.js → uk-UA-IJKTNUDG-1LzXkII3.js} +1 -1
  216. package/dist/client/assets/{uz-UZ-TBZZEA4V-B9qw0PXX.js → uz-UZ-TBZZEA4V-kqm-qcUj.js} +1 -1
  217. package/dist/client/assets/{vault-api-client-p7h7cXKM.js → vault-api-client-DSx3mWkH.js} +1 -1
  218. package/dist/client/assets/{vault-utils-5Xr0MXCb.js → vault-utils-CRpy8MQz.js} +1 -1
  219. package/dist/client/assets/vennDiagram-DHZGUBPP-DNnIjRae.js +34 -0
  220. package/dist/client/assets/{verilog-C4wTycyo.js → verilog-DSARZZPc.js} +1 -1
  221. package/dist/client/assets/{vhdl-Bwndeg44.js → vhdl-CnYyYTpa.js} +1 -1
  222. package/dist/client/assets/{vi-VN-MULSGNVB-DqxZ_sVc.js → vi-VN-MULSGNVB-C3H2AUhm.js} +1 -1
  223. package/dist/client/assets/wardley-RL74JXVD-CDZW5uzY.js +1 -0
  224. package/dist/client/assets/wardleyDiagram-NUSXRM2D-C-scJfPY.js +20 -0
  225. package/dist/client/assets/{xychartDiagram-JWTSCODW-C3vA70iJ.js → xychartDiagram-5P7HB3ND-D3nQoxhz.js} +6 -6
  226. package/dist/client/assets/yjs-provider-reset-guard-DSPzcvAO.js +4 -0
  227. package/dist/client/assets/{zh-CN-MVX3E32U-BM0aLuGc.js → zh-CN-MVX3E32U-BULPbsyl.js} +1 -1
  228. package/dist/client/assets/{zh-HK-JNU5RLIE-dmG_YD0d.js → zh-HK-JNU5RLIE-bNGmeSaW.js} +1 -1
  229. package/dist/client/assets/{zh-TW-LENVCA6T-LFgbiOi3.js → zh-TW-LENVCA6T-CQDp064P.js} +1 -1
  230. package/dist/client/drawio-editor.html +1 -1
  231. package/dist/client/excalidraw-editor.html +1 -1
  232. package/dist/client/export-document.html +1 -1
  233. package/dist/client/index.html +2 -2
  234. package/package.json +15 -15
  235. package/src/client/application/app-shell/presence-feature.js +265 -34
  236. package/src/client/application/app-shell/ui-feature-shell.js +31 -5
  237. package/src/client/application/app-shell/ui-feature-tab-activity.js +1 -0
  238. package/src/client/application/app-shell/workspace-feature.js +5 -2
  239. package/src/client/application/app-shell-elements.js +3 -0
  240. package/src/client/application/diagram-preview-export.js +304 -0
  241. package/src/client/application/mermaid-preview-hydrator.js +153 -23
  242. package/src/client/application/plantuml-preview-hydrator.js +155 -20
  243. package/src/client/application/preview-diagram-utils.js +48 -8
  244. package/src/client/application/preview-renderer.js +2 -0
  245. package/src/client/application/quick-switcher-loader.js +42 -0
  246. package/src/client/application/workspace-route-controller.js +35 -2
  247. package/src/client/application/workspace-state-store.js +1 -0
  248. package/src/client/bootstrap/collabmd-app-shell.js +25 -20
  249. package/src/client/domain/diagram-action-icons.js +21 -0
  250. package/src/client/domain/excalidraw-api-scene-sync.js +70 -0
  251. package/src/client/domain/keyboard-shortcuts.js +8 -0
  252. package/src/client/drawio-editor.js +13 -0
  253. package/src/client/excalidraw-editor.js +119 -18
  254. package/src/client/infrastructure/excalidraw-room-client.js +42 -5
  255. package/src/client/infrastructure/workspace-sync-client.js +26 -3
  256. package/src/client/presentation/app-shell-template.js +18 -1
  257. package/src/client/presentation/comment-ui/comment-ui-card.js +83 -3
  258. package/src/client/presentation/comment-ui/comment-ui-state.js +25 -2
  259. package/src/client/presentation/drawio-embed-controller.js +18 -0
  260. package/src/client/presentation/excalidraw-embed-controller.js +7 -0
  261. package/src/client/presentation/file-explorer-controller.js +10 -0
  262. package/src/client/presentation/file-explorer-view.js +6 -0
  263. package/src/client/presentation/git-panel-controller.js +2 -0
  264. package/src/client/presentation/image-lightbox-controller.js +290 -29
  265. package/src/client/styles/features/collaboration-presence.css +212 -0
  266. package/src/client/styles/features/diagram-preview.css +71 -4
  267. package/src/client/styles/features/embedded-preview.css +4 -6
  268. package/src/client/styles/features/media-lightbox.css +2 -0
  269. package/src/server/config/env.js +4 -0
  270. package/src/server/create-app-server.js +2 -0
  271. package/src/server/domain/backlink-index.js +33 -72
  272. package/src/server/domain/bases/base-index-snapshot-store.js +46 -62
  273. package/src/server/domain/bases/base-query-service.js +89 -7
  274. package/src/server/domain/collaboration/collaboration-room.js +10 -1
  275. package/src/server/domain/markdown-reference-extractor.js +233 -0
  276. package/src/server/infrastructure/http/create-request-handler.js +1 -0
  277. package/src/server/infrastructure/http/create-vault-api-handler.js +2 -0
  278. package/src/server/infrastructure/http/create-vault-api-query-handler.js +100 -26
  279. package/src/server/infrastructure/persistence/vault-file-store.js +175 -4
  280. package/src/server/infrastructure/workspace/file-system-sync-service.js +45 -21
  281. package/dist/client/assets/_basePickBy-Dv0sK1l7.js +0 -1
  282. package/dist/client/assets/_baseUniq-DKYX57ji.js +0 -1
  283. package/dist/client/assets/arc-DrfYGhWk.js +0 -1
  284. package/dist/client/assets/architecture-PBZL5I3N-DiglIZi9.js +0 -1
  285. package/dist/client/assets/blockDiagram-WCTKOSBZ-GIgTqnhk.js +0 -132
  286. package/dist/client/assets/c4Diagram-IC4MRINW-CkHO1i_L.js +0 -10
  287. package/dist/client/assets/channel-CgsU9TSN.js +0 -1
  288. package/dist/client/assets/chunk-7E7YKBS2-TdU92i9i.js +0 -1
  289. package/dist/client/assets/chunk-7R4GIKGN-mqd2GwMg.js +0 -80
  290. package/dist/client/assets/chunk-C72U2L5F-CJKQWBtz.js +0 -1
  291. package/dist/client/assets/chunk-DpHwWhuW.js +0 -1
  292. package/dist/client/assets/chunk-EGIJ26TM-C4nq20om.js +0 -1
  293. package/dist/client/assets/chunk-GEFDOKGD-Bs7FmFox.js +0 -2
  294. package/dist/client/assets/chunk-GLR3WWYH-qQe2O5VQ.js +0 -2
  295. package/dist/client/assets/chunk-HHEYEP7N-DlevL8bq.js +0 -1
  296. package/dist/client/assets/chunk-KYZI473N-CTSCuqRb.js +0 -53
  297. package/dist/client/assets/chunk-L3YUKLVL-CJZMBtKF.js +0 -1
  298. package/dist/client/assets/chunk-MX3YWQON-DQpSwRf6.js +0 -1
  299. package/dist/client/assets/chunk-NU2UP6EN-DlUENSHU.js +0 -35
  300. package/dist/client/assets/chunk-O4XLMI2P-CcVxZh41.js +0 -7
  301. package/dist/client/assets/chunk-OZEHJAEY-DjBZbgu0.js +0 -1
  302. package/dist/client/assets/chunk-QZHKN3VN-CgLPFSk5.js +0 -1
  303. package/dist/client/assets/chunk-R5LLSJPH-CkjKXM73.js +0 -1
  304. package/dist/client/assets/chunk-WL4C6EOR-axcuKSup.js +0 -189
  305. package/dist/client/assets/chunk-XIRO2GV7-4wqVHjs_.js +0 -1
  306. package/dist/client/assets/chunk-XZSTWKYB-C8Y_hIKZ.js +0 -94
  307. package/dist/client/assets/chunk-YBOYWFTD-CKg4ymFF.js +0 -1
  308. package/dist/client/assets/classDiagram-VBA2DB6C-BHZpvOxK.js +0 -1
  309. package/dist/client/assets/classDiagram-v2-RAHNMMFH-DA7HMUUs.js +0 -1
  310. package/dist/client/assets/clike-1_ZsiVV8.js +0 -1
  311. package/dist/client/assets/clone-Dgi8Z4IL.js +0 -1
  312. package/dist/client/assets/cytoscape.esm-Czjc507F.js +0 -321
  313. package/dist/client/assets/dagre-CfB3Fw33.js +0 -1
  314. package/dist/client/assets/dagre-KLK3FWXG-CC7tq2Ky.js +0 -4
  315. package/dist/client/assets/diagram-E7M64L7V-CMt7BN5M.js +0 -24
  316. package/dist/client/assets/diagram-IFDJBPK2-BFMBUGpd.js +0 -43
  317. package/dist/client/assets/diagram-P4PSJMXO-CviA1xXr.js +0 -24
  318. package/dist/client/assets/dist-3bQB_we3.js +0 -1
  319. package/dist/client/assets/dist-8Igu3Ee_2.js +0 -1
  320. package/dist/client/assets/dist-BU8uusJX.js +0 -1
  321. package/dist/client/assets/dist-BVB8rn7o.js +0 -1
  322. package/dist/client/assets/dist-D5QOYy7y.js +0 -6
  323. package/dist/client/assets/dist-DIi0uqLJ.js +0 -1
  324. package/dist/client/assets/dist-DJ16N7ol.js +0 -1
  325. package/dist/client/assets/dist-DWJL3_bF.js +0 -13
  326. package/dist/client/assets/dist-O1z0Ayg0.js +0 -1
  327. package/dist/client/assets/dist-OQE68wIX.js +0 -1
  328. package/dist/client/assets/dist-x7PIEmJu.js +0 -1
  329. package/dist/client/assets/drawio-editor-BMTwP5mD.js +0 -9
  330. package/dist/client/assets/editor-session-Dzy_85Wp.js +0 -16
  331. package/dist/client/assets/excalidraw-editor-CAP9F8CB.js +0 -9
  332. package/dist/client/assets/excalidraw-editor-Dj3i59LW.css +0 -1
  333. package/dist/client/assets/excalidraw-scene-BF_bT1OL.js +0 -176
  334. package/dist/client/assets/excalidrawEditor-DD4AvzYP.js +0 -2
  335. package/dist/client/assets/exportDocument-Zfwq1XVx.js +0 -2
  336. package/dist/client/assets/flowDiagram-PKNHOUZH-C_t-mkwb.js +0 -162
  337. package/dist/client/assets/ganttDiagram-A5KZAMGK-BtK9Tb--.js +0 -292
  338. package/dist/client/assets/gitGraph-HDMCJU4V-CT7YfbD3.js +0 -1
  339. package/dist/client/assets/gitGraphDiagram-K3NZZRJ6-DULDLGiJ.js +0 -65
  340. package/dist/client/assets/graphlib-BgRST-Qg.js +0 -1
  341. package/dist/client/assets/image-XLNPCCAD-CFiKwiWK.js +0 -1
  342. package/dist/client/assets/image-blob-reduce.esm-DriR2zT9.js +0 -2
  343. package/dist/client/assets/info-3K5VOQVL-DUpNyDC-.js +0 -1
  344. package/dist/client/assets/isArrayLikeObject-BId_dPHM.js +0 -1
  345. package/dist/client/assets/isEmpty-CVvRj8fj.js +0 -1
  346. package/dist/client/assets/ishikawaDiagram-PHBUUO56-DpBuDpC6.js +0 -70
  347. package/dist/client/assets/javascript-UJe68_xi.js +0 -1
  348. package/dist/client/assets/line-B2GMovaI.js +0 -1
  349. package/dist/client/assets/main-CfSHaGes.js +0 -1368
  350. package/dist/client/assets/math-B-LMBwub.js +0 -1
  351. package/dist/client/assets/mermaid-parser.core-B1ogGcR8.js +0 -4
  352. package/dist/client/assets/mermaid-runtime-Bn8A6DGx.js +0 -11
  353. package/dist/client/assets/packet-RMMSAZCW-DEwNbIrA.js +0 -1
  354. package/dist/client/assets/percentages-5DKR754L-D7n4T776.js +0 -1
  355. package/dist/client/assets/pica-C1TdTz-C.js +0 -2
  356. package/dist/client/assets/pie-UPGHQEXC-D5M_lSjo.js +0 -1
  357. package/dist/client/assets/pieDiagram-SKSYHLDU-jhHouFpk.js +0 -30
  358. package/dist/client/assets/preview-render-compiler-Duy_3IcP.js +0 -1
  359. package/dist/client/assets/radar-KQ55EAFF-AU1qh3Bw.js +0 -1
  360. package/dist/client/assets/requirementDiagram-Z7DCOOCP-D9SHxoW7.js +0 -73
  361. package/dist/client/assets/sequenceDiagram-2WXFIKYE-CZsMMqAJ.js +0 -145
  362. package/dist/client/assets/sql-DDFeQNTK.js +0 -1
  363. package/dist/client/assets/src-Pgt9Gp65.js +0 -1
  364. package/dist/client/assets/stateDiagram-RAJIS63D-CoNZjTYV.js +0 -1
  365. package/dist/client/assets/stateDiagram-v2-FVOUBMTO-1zOw6NmQ.js +0 -1
  366. package/dist/client/assets/subset-shared.chunk-C9HjwTXy.js +0 -1
  367. package/dist/client/assets/timeline-definition-YZTLITO2-DSe2mrG8.js +0 -61
  368. package/dist/client/assets/treemap-KZPCXAKY-C9UI2fwP.js +0 -1
  369. package/dist/client/assets/vennDiagram-LZ73GAT5-xSzaIpy1.js +0 -34
  370. package/dist/client/assets/yjs-provider-reset-guard-CtERLBID.js +0 -4
  371. /package/dist/client/assets/{drawio-room-DEivFyNV.js → drawio-room-1i6Nn0_Z.js} +0 -0
  372. /package/dist/client/assets/{excalidraw-mermaid-stub-BZPU4ZhU.js → excalidraw-mermaid-stub-DzxtBcQW.js} +0 -0
  373. /package/dist/client/assets/{file-kind-DBptLlF_.js → file-kind-DmKq2MvD.js} +0 -0
  374. /package/dist/client/assets/{rough.esm-DE_lJ5Ge.js → rough.esm-BU2knLt9.js} +0 -0
  375. /package/dist/client/assets/{runtime-config-CqhchMC4.js → runtime-config-DWTejofP.js} +0 -0
@@ -43,6 +43,7 @@ function openComposerForSelection(origin = 'editor', sourceRect = null) {
43
43
  : this.session?.getCommentAnchorClientRect?.(anchor));
44
44
  this.activeCard = {
45
45
  anchor,
46
+ composerDraft: null,
46
47
  mode: 'create',
47
48
  origin: nextOrigin,
48
49
  replyThreadId: null,
@@ -57,8 +58,10 @@ function openThreadGroup(group, { anchor, origin, sourceRect }) {
57
58
  this.activeCard = {
58
59
  anchor,
59
60
  groupKey: group.key,
61
+ groupThreadIds: group.threads.map((thread) => thread.id),
60
62
  mode: 'group',
61
63
  origin,
64
+ replyDrafts: {},
62
65
  replyThreadId: null,
63
66
  sourceRect,
64
67
  };
@@ -97,9 +100,59 @@ function updateCardSourceRect() {
97
100
  return this.activeCard.sourceRect;
98
101
  }
99
102
 
103
+ /** @this {any} */
104
+ function createTextareaDraft(textarea) {
105
+ if (!(textarea instanceof HTMLTextAreaElement)) {
106
+ return null;
107
+ }
108
+
109
+ return {
110
+ selectionDirection: textarea.selectionDirection ?? 'none',
111
+ selectionEnd: textarea.selectionEnd,
112
+ selectionStart: textarea.selectionStart,
113
+ value: textarea.value,
114
+ };
115
+ }
116
+
117
+ /** @this {any} */
118
+ function captureActiveCardDraft() {
119
+ if (!this.activeCard) {
120
+ return;
121
+ }
122
+
123
+ const textarea = this.cardRoot?.querySelector('.comment-card-input');
124
+ const draft = createTextareaDraft(textarea);
125
+ if (!draft) {
126
+ return;
127
+ }
128
+
129
+ if (this.activeCard.mode === 'create') {
130
+ this.activeCard.composerDraft = draft;
131
+ return;
132
+ }
133
+
134
+ if (this.activeCard.mode === 'group' && this.activeCard.replyThreadId) {
135
+ this.activeCard.replyDrafts = {
136
+ ...(this.activeCard.replyDrafts ?? {}),
137
+ [this.activeCard.replyThreadId]: draft,
138
+ };
139
+ }
140
+ }
141
+
142
+ /** @this {any} */
143
+ function createPendingFocusTarget(element, draft = null) {
144
+ return {
145
+ element,
146
+ selectionDirection: draft?.selectionDirection ?? 'none',
147
+ selectionEnd: Number.isInteger(draft?.selectionEnd) ? draft.selectionEnd : null,
148
+ selectionStart: Number.isInteger(draft?.selectionStart) ? draft.selectionStart : null,
149
+ };
150
+ }
151
+
100
152
  /** @this {any} */
101
153
  function renderCard() {
102
154
  const root = this.ensureCardRoot();
155
+ this.captureActiveCardDraft();
103
156
  root.replaceChildren();
104
157
  root.classList.toggle('hidden', !this.activeCard);
105
158
  if (!this.activeCard) {
@@ -245,6 +298,7 @@ function createComposer() {
245
298
  textarea.rows = 4;
246
299
  textarea.maxLength = COMMENT_BODY_MAX_LENGTH;
247
300
  textarea.placeholder = 'Add context, feedback, or a question...';
301
+ textarea.value = this.activeCard?.composerDraft?.value ?? '';
248
302
 
249
303
  const actions = document.createElement('div');
250
304
  actions.className = 'ui-record-actions comment-card-actions';
@@ -277,7 +331,7 @@ function createComposer() {
277
331
  this.closeCard();
278
332
  });
279
333
 
280
- this.pendingCardFocusElement = textarea;
334
+ this.pendingCardFocusElement = createPendingFocusTarget(textarea, this.activeCard?.composerDraft);
281
335
  return form;
282
336
  }
283
337
 
@@ -329,6 +383,9 @@ function createThreadElement(thread) {
329
383
  reply.setAttribute('aria-label', isReplying ? 'Cancel reply' : 'Reply to thread');
330
384
  reply.title = isReplying ? 'Cancel reply' : 'Reply to thread';
331
385
  reply.addEventListener('click', () => {
386
+ if (isReplying && this.activeCard?.replyDrafts?.[thread.id]) {
387
+ delete this.activeCard.replyDrafts[thread.id];
388
+ }
332
389
  this.activeCard = {
333
390
  ...this.activeCard,
334
391
  replyThreadId: isReplying ? null : thread.id,
@@ -517,12 +574,14 @@ function createReactionPickerButton(thread, message, emoji) {
517
574
  function createReplyComposer(thread) {
518
575
  const form = document.createElement('form');
519
576
  form.className = 'comment-reply-form';
577
+ const draft = this.activeCard?.replyDrafts?.[thread.id] ?? null;
520
578
 
521
579
  const textarea = document.createElement('textarea');
522
580
  textarea.className = inputClassNames({ extra: 'comment-card-input' });
523
581
  textarea.rows = 3;
524
582
  textarea.maxLength = COMMENT_BODY_MAX_LENGTH;
525
583
  textarea.placeholder = 'Reply to thread...';
584
+ textarea.value = draft?.value ?? '';
526
585
 
527
586
  const actions = document.createElement('div');
528
587
  actions.className = 'ui-record-actions comment-card-actions';
@@ -532,6 +591,9 @@ function createReplyComposer(thread) {
532
591
  cancel.className = buttonClassNames({ variant: 'secondary' });
533
592
  cancel.textContent = 'Cancel';
534
593
  cancel.addEventListener('click', () => {
594
+ if (this.activeCard?.replyDrafts?.[thread.id]) {
595
+ delete this.activeCard.replyDrafts[thread.id];
596
+ }
535
597
  this.activeCard = {
536
598
  ...this.activeCard,
537
599
  replyThreadId: null,
@@ -546,7 +608,7 @@ function createReplyComposer(thread) {
546
608
 
547
609
  actions.append(cancel, submit);
548
610
  form.append(textarea, actions);
549
- this.pendingCardFocusElement = textarea;
611
+ this.pendingCardFocusElement = createPendingFocusTarget(textarea, draft);
550
612
 
551
613
  form.addEventListener('submit', async (event) => {
552
614
  event.preventDefault();
@@ -556,6 +618,9 @@ function createReplyComposer(thread) {
556
618
  return;
557
619
  }
558
620
 
621
+ if (this.activeCard?.replyDrafts?.[thread.id]) {
622
+ delete this.activeCard.replyDrafts[thread.id];
623
+ }
559
624
  this.activeCard = {
560
625
  ...this.activeCard,
561
626
  replyThreadId: null,
@@ -597,7 +662,8 @@ function positionCard(card) {
597
662
 
598
663
  /** @this {any} */
599
664
  function flushPendingCardFocus() {
600
- const element = this.pendingCardFocusElement;
665
+ const pendingTarget = this.pendingCardFocusElement;
666
+ const element = pendingTarget instanceof HTMLElement ? pendingTarget : pendingTarget?.element;
601
667
  if (!(element instanceof HTMLElement) || !element.isConnected) {
602
668
  this.pendingCardFocusElement = null;
603
669
  return;
@@ -615,6 +681,17 @@ function flushPendingCardFocus() {
615
681
  }
616
682
 
617
683
  element.focus({ preventScroll: true });
684
+ if (
685
+ element instanceof HTMLTextAreaElement
686
+ && Number.isInteger(pendingTarget?.selectionStart)
687
+ && Number.isInteger(pendingTarget?.selectionEnd)
688
+ ) {
689
+ element.setSelectionRange(
690
+ pendingTarget.selectionStart,
691
+ pendingTarget.selectionEnd,
692
+ pendingTarget.selectionDirection ?? 'none',
693
+ );
694
+ }
618
695
  };
619
696
 
620
697
  focusElement();
@@ -633,14 +710,17 @@ function flushPendingCardFocus() {
633
710
  }
634
711
 
635
712
  export const commentUiCardMethods = {
713
+ captureActiveCardDraft,
636
714
  closeCard,
637
715
  createComposer,
716
+ createPendingFocusTarget,
638
717
  createMessageElement,
639
718
  createQuickReactionButton,
640
719
  createReactionBar,
641
720
  createReactionPicker,
642
721
  createReactionPickerButton,
643
722
  createReplyComposer,
723
+ createTextareaDraft,
644
724
  createThreadElement,
645
725
  ensureCardRoot,
646
726
  flushPendingCardFocus,
@@ -165,11 +165,34 @@ function handleEditorContentChange() {
165
165
  /** @this {CommentUiStateContext} */
166
166
  function setThreads(threads = []) {
167
167
  this.threads = sortThreads(threads);
168
+ const groups = this.getThreadGroups();
168
169
  if (
169
170
  this.activeCard?.mode === 'group'
170
- && !this.getThreadGroups().some((group) => group.key === this.activeCard.groupKey)
171
171
  ) {
172
- this.activeCard = null;
172
+ const activeThreadIds = Array.isArray(this.activeCard.groupThreadIds)
173
+ ? this.activeCard.groupThreadIds
174
+ : [];
175
+ const matchingGroup = groups.find((group) => group.key === this.activeCard.groupKey)
176
+ ?? groups.find((group) => (
177
+ group.threads.length === activeThreadIds.length
178
+ && group.threads.every((thread) => activeThreadIds.includes(thread.id))
179
+ ));
180
+ if (!matchingGroup) {
181
+ this.activeCard = null;
182
+ } else {
183
+ this.activeCard = {
184
+ ...this.activeCard,
185
+ anchor: matchingGroup.anchor,
186
+ groupKey: matchingGroup.key,
187
+ groupThreadIds: matchingGroup.threads.map((thread) => thread.id),
188
+ };
189
+ if (
190
+ this.activeCard.replyThreadId
191
+ && !matchingGroup.threads.some((thread) => thread.id === this.activeCard.replyThreadId)
192
+ ) {
193
+ this.activeCard.replyThreadId = null;
194
+ }
195
+ }
173
196
  }
174
197
  if (
175
198
  this.reactionPicker
@@ -98,6 +98,7 @@ export class DrawioEmbedController {
98
98
  getTheme,
99
99
  onOpenFile = null,
100
100
  onOpenTextFile = null,
101
+ onToggleQuickSwitcher = null,
101
102
  previewContainer,
102
103
  previewElement,
103
104
  toastController,
@@ -106,6 +107,7 @@ export class DrawioEmbedController {
106
107
  this.getTheme = getTheme;
107
108
  this.onOpenFile = onOpenFile;
108
109
  this.onOpenTextFile = onOpenTextFile;
110
+ this.onToggleQuickSwitcher = onToggleQuickSwitcher;
109
111
  this.previewContainer = previewContainer;
110
112
  this.previewElement = previewElement;
111
113
  this.toastController = toastController;
@@ -585,7 +587,15 @@ export class DrawioEmbedController {
585
587
  return null;
586
588
  }
587
589
 
590
+ _isMessageFromEntry(event, entry) {
591
+ return Boolean(entry?.iframe?.contentWindow && event.source === entry.iframe.contentWindow);
592
+ }
593
+
588
594
  _onMessage(event) {
595
+ if (event.origin !== window.location.origin) {
596
+ return;
597
+ }
598
+
589
599
  const payload = event.data;
590
600
  if (!payload || payload.source !== 'drawio-editor') {
591
601
  return;
@@ -595,6 +605,9 @@ export class DrawioEmbedController {
595
605
  if (!entry) {
596
606
  return;
597
607
  }
608
+ if (!this._isMessageFromEntry(event, entry)) {
609
+ return;
610
+ }
598
611
 
599
612
  if (payload.type === 'fallback-text') {
600
613
  if (entry.mode === 'view') {
@@ -616,6 +629,11 @@ export class DrawioEmbedController {
616
629
 
617
630
  if (payload.type === 'request-open-file') {
618
631
  this.onOpenFile?.(entry.filePath);
632
+ return;
633
+ }
634
+
635
+ if (payload.type === 'request-toggle-quick-switcher') {
636
+ this.onToggleQuickSwitcher?.();
619
637
  }
620
638
  }
621
639
 
@@ -55,6 +55,7 @@ export class ExcalidrawEmbedController {
55
55
  getTheme,
56
56
  getLocalUser,
57
57
  onOpenFile = null,
58
+ onToggleQuickSwitcher = null,
58
59
  previewContainer,
59
60
  previewElement,
60
61
  toastController,
@@ -62,6 +63,7 @@ export class ExcalidrawEmbedController {
62
63
  this.getTheme = getTheme;
63
64
  this.getLocalUser = getLocalUser;
64
65
  this.onOpenFile = onOpenFile;
66
+ this.onToggleQuickSwitcher = onToggleQuickSwitcher;
65
67
  this.previewContainer = previewContainer;
66
68
  this.previewElement = previewElement;
67
69
  this.toastController = toastController;
@@ -1197,6 +1199,11 @@ export class ExcalidrawEmbedController {
1197
1199
  return;
1198
1200
  }
1199
1201
 
1202
+ if (msg.type === 'request-toggle-quick-switcher') {
1203
+ this.onToggleQuickSwitcher?.();
1204
+ return;
1205
+ }
1206
+
1200
1207
  if (msg.type === 'error') {
1201
1208
  if (entry.isParked) {
1202
1209
  return;
@@ -90,6 +90,16 @@ export class FileExplorerController {
90
90
  this.renderTree();
91
91
  }
92
92
 
93
+ revealFile(filePath, { clearSearch = false } = {}) {
94
+ if (clearSearch) {
95
+ this.state.setSearchQuery('');
96
+ }
97
+
98
+ this.state.setActiveFile(filePath);
99
+ this.renderTree({ reset: clearSearch });
100
+ this.view.revealFile(filePath);
101
+ }
102
+
93
103
  get flatFiles() {
94
104
  return this.state.flatFiles;
95
105
  }
@@ -131,6 +131,12 @@ export class FileExplorerView {
131
131
  });
132
132
  }
133
133
 
134
+ revealFile(filePath) {
135
+ const fileItem = Array.from(this.treeContainer?.querySelectorAll('.file-tree-file') ?? [])
136
+ .find((element) => element.dataset.path === filePath);
137
+ fileItem?.scrollIntoView({ block: 'nearest' });
138
+ }
139
+
134
140
  render({ activeFilePath, changedPaths = null, expandedDirs, reset = false, searchMatches, searchQuery, tree }) {
135
141
  if (!this.treeContainer) {
136
142
  return;
@@ -730,6 +730,7 @@ export class GitPanelController {
730
730
  && this.selection.scope === file.scope;
731
731
  const dirPath = getPathDir(file.path);
732
732
  const displayName = getPathLeaf(file.path);
733
+ const fullPath = String(file.path || '');
733
734
  const statusClass = badgeClass(file.status);
734
735
  const stageAction = file.scope === 'staged'
735
736
  ? { label: 'Unstage', value: 'unstage' }
@@ -746,6 +747,7 @@ export class GitPanelController {
746
747
  type="button"
747
748
  data-git-path="${escapeHtml(file.path)}"
748
749
  data-git-scope="${escapeHtml(file.scope)}"
750
+ title="${escapeHtml(fullPath)}"
749
751
  >
750
752
  ${fileIconSvg()}
751
753
  <span class="ui-item-copy git-file-copy">