collabmd 0.1.27 → 0.1.30

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 (469) hide show
  1. package/README.md +5 -0
  2. package/dist/client/assets/{CodeMirrorEditor-UCMRAMCV-C5yVpm45.js → CodeMirrorEditor-UCMRAMCV-tj0_ycIx.js} +1 -1
  3. package/dist/client/assets/{_basePickBy-Dr0N-hVE.js → _basePickBy-B6kIfhzj.js} +1 -1
  4. package/dist/client/assets/{_baseUniq-BddJc3B1.js → _baseUniq-Bbn0_sHS.js} +1 -1
  5. package/dist/client/assets/actions-XO29hEzr.css +1 -0
  6. package/dist/client/assets/{ar-SA-NXDWD63E-C3GLfrYV.js → ar-SA-NXDWD63E-BWO5oYxe.js} +1 -1
  7. package/dist/client/assets/{arc-fx_D7wYg.js → arc-BIqum3oD.js} +1 -1
  8. package/dist/client/assets/architecture-PBZL5I3N-iRyVT2GQ.js +1 -0
  9. package/dist/client/assets/architectureDiagram-2XIMDMQ5-BPG5b65m.js +36 -0
  10. package/dist/client/assets/{az-AZ-MXSORGZV-BJ2t-y-C.js → az-AZ-MXSORGZV-Cfw6Z5oY.js} +1 -1
  11. package/dist/client/assets/base-CaIEJUF9.css +1 -0
  12. package/dist/client/assets/base-h1uscjTi.js +1 -0
  13. package/dist/client/assets/{bg-BG-O6MV2KSF-Cd3kEZI-.js → bg-BG-O6MV2KSF-CQmG3YpD.js} +1 -1
  14. package/dist/client/assets/{blockDiagram-WCTKOSBZ-BivLpsk_.js → blockDiagram-WCTKOSBZ-F38TRzI3.js} +1 -1
  15. package/dist/client/assets/{bn-IN-MMW2ORAC-Dn9W9dUT.js → bn-BD-T2VJNT7N-C4S6DZ6o.js} +1 -1
  16. package/dist/client/assets/{bn-BD-T2VJNT7N-BFCx9nbZ.js → bn-IN-MMW2ORAC-DZKVshfk.js} +1 -1
  17. package/dist/client/assets/{c4Diagram-IC4MRINW-nVzPTZmV.js → c4Diagram-IC4MRINW-DHwxcDlQ.js} +1 -1
  18. package/dist/client/assets/{ca-ES-MKBCGNOG-D_BNlrmg.js → ca-ES-MKBCGNOG-Do3aMgyu.js} +1 -1
  19. package/dist/client/assets/channel-s0w88EQN.js +1 -0
  20. package/dist/client/assets/{chunk-4BX2VUAB-n_yl-toC.js → chunk-4BX2VUAB-BqEY6cCE.js} +1 -1
  21. package/dist/client/assets/{chunk-55IACEB6-CJ9i_5Da.js → chunk-55IACEB6-039iVf6v.js} +1 -1
  22. package/dist/client/assets/{chunk-7E7YKBS2-CebEBDsj.js → chunk-7E7YKBS2-BreG0gYL.js} +1 -1
  23. package/dist/client/assets/{chunk-7R4GIKGN-BXNhzFkP.js → chunk-7R4GIKGN-BMrp52Pk.js} +2 -2
  24. package/dist/client/assets/{chunk-ETSVUAFD-C8C1JDu2.js → chunk-AXZTUZBK-Cxfm7hmm.js} +1 -1
  25. package/dist/client/assets/{chunk-C72U2L5F-Cck8MvGP.js → chunk-C72U2L5F-BLB26v5d.js} +1 -1
  26. package/dist/client/assets/{chunk-EGIJ26TM-BDQ7tRV-.js → chunk-EGIJ26TM-fG-0Yh0k.js} +1 -1
  27. package/dist/client/assets/{chunk-FMBD7UC4-DAcjCJR-.js → chunk-FMBD7UC4-EWK5Pt4D.js} +1 -1
  28. package/dist/client/assets/{chunk-GEFDOKGD-CYSNVsp-.js → chunk-GEFDOKGD-DYHmaq-c.js} +1 -1
  29. package/dist/client/assets/chunk-GLR3WWYH-CQ1LryrI.js +2 -0
  30. package/dist/client/assets/chunk-HHEYEP7N-DOQ0PCdH.js +1 -0
  31. package/dist/client/assets/{chunk-JSJVCQXG-CLgStmEI.js → chunk-JSJVCQXG-B69YGtcQ.js} +1 -1
  32. package/dist/client/assets/{chunk-KX2RTZJC-B__vUl1o.js → chunk-KX2RTZJC-tuEC7hg1.js} +1 -1
  33. package/dist/client/assets/{chunk-KYZI473N-BpfobHkp.js → chunk-KYZI473N-D4r5eMJZ.js} +1 -1
  34. package/dist/client/assets/{chunk-L3YUKLVL-B7jdwbRL.js → chunk-L3YUKLVL-CD9nJYL8.js} +1 -1
  35. package/dist/client/assets/{chunk-MX3YWQON-DNcuP5dS.js → chunk-MX3YWQON-DqN0TF5Q.js} +1 -1
  36. package/dist/client/assets/{chunk-NQ4KR5QH-oaq5iS2W.js → chunk-NQ4KR5QH-BBX89uUa.js} +1 -1
  37. package/dist/client/assets/chunk-NU2UP6EN-CGeKI3BV.js +35 -0
  38. package/dist/client/assets/{chunk-O4XLMI2P-NI4OcSZ6.js → chunk-O4XLMI2P-DaS3COAu.js} +1 -1
  39. package/dist/client/assets/{chunk-OZEHJAEY-BevHLeQ0.js → chunk-OZEHJAEY-BaBXI-8x.js} +1 -1
  40. package/dist/client/assets/{chunk-PQ6SQG4A-fQ_Oml5n.js → chunk-PQ6SQG4A-BY9_Srs_.js} +1 -1
  41. package/dist/client/assets/{chunk-PU5JKC2W-Bp4H-mwZ.js → chunk-PU5JKC2W-t0zUh6E3.js} +1 -1
  42. package/dist/client/assets/chunk-QZHKN3VN-B0v4d-CS.js +1 -0
  43. package/dist/client/assets/{chunk-R5LLSJPH-CZzZlfdI.js → chunk-R5LLSJPH-BjSMFnTi.js} +1 -1
  44. package/dist/client/assets/{chunk-SRAX5OIU-CtUYAya6.js → chunk-SRAX5OIU-CC2mobFL.js} +1 -1
  45. package/dist/client/assets/{chunk-WL4C6EOR-DnV9nMco.js → chunk-WL4C6EOR-zSV-8h7F.js} +1 -1
  46. package/dist/client/assets/{chunk-XIRO2GV7-BnkmoLpc.js → chunk-XIRO2GV7-2tirYN5A.js} +1 -1
  47. package/dist/client/assets/{chunk-XPW4576I-DOk6pMat.js → chunk-XPW4576I-C0GpOUHf.js} +1 -1
  48. package/dist/client/assets/{chunk-XZSTWKYB-DZzfqgVn.js → chunk-XZSTWKYB-DDkpyNVE.js} +1 -1
  49. package/dist/client/assets/{chunk-YBOYWFTD-CrI5WFnC.js → chunk-YBOYWFTD-CzyyfGQX.js} +1 -1
  50. package/dist/client/assets/{chunk-Z5NKEFVG-EGvolisB.js → chunk-Z5NKEFVG-Dgem5v98.js} +1 -1
  51. package/dist/client/assets/classDiagram-VBA2DB6C-BQqG4q1b.js +1 -0
  52. package/dist/client/assets/classDiagram-v2-RAHNMMFH-BUKbprX1.js +1 -0
  53. package/dist/client/assets/clone-C-n46MFF.js +1 -0
  54. package/dist/client/assets/controls-CLpueX2m.css +1 -0
  55. package/dist/client/assets/{cose-bilkent-S5V4N54A-PcMOD_rX.js → cose-bilkent-S5V4N54A-jZzFUguD.js} +1 -1
  56. package/dist/client/assets/{cs-CZ-V77HGUP7-gpioT6mv.js → cs-CZ-V77HGUP7-DmZRJ2UO.js} +1 -1
  57. package/dist/client/assets/{da-DK-I5RFNTM4-CVv-_qu9.js → da-DK-I5RFNTM4-CRIiLQ-G.js} +1 -1
  58. package/dist/client/assets/dagre-KLK3FWXG-CAG8WeES.js +4 -0
  59. package/dist/client/assets/{dagre-BD9xHP_z.js → dagre-fvYjRtTE.js} +1 -1
  60. package/dist/client/assets/{de-CH-WLRDEVBV-CL0gsFEp.js → de-CH-WLRDEVBV-k728UA4j.js} +1 -1
  61. package/dist/client/assets/{de-DE-DTI4WUSC-BQO1SHIK.js → de-DE-DTI4WUSC-MFge9MC3.js} +1 -1
  62. package/dist/client/assets/diagram-E7M64L7V-Bm5FD0I5.js +24 -0
  63. package/dist/client/assets/diagram-IFDJBPK2-pqicH-av.js +43 -0
  64. package/dist/client/assets/diagram-P4PSJMXO-DwIXO27H.js +24 -0
  65. package/dist/client/assets/dist-3bQB_we3.js +1 -0
  66. package/dist/client/assets/dist-3uAMa5w5.js +1 -0
  67. package/dist/client/assets/{dist-Q6uG0wie.js → dist-B-02vKOA.js} +1 -1
  68. package/dist/client/assets/{dist-DzArd_Bk.js → dist-BLAlZer_.js} +1 -1
  69. package/dist/client/assets/dist-BVB8rn7o.js +1 -0
  70. package/dist/client/assets/{dist-DrNF924C.js → dist-Bc2ND6i3.js} +1 -1
  71. package/dist/client/assets/{dist-lbtQBzLu.js → dist-BqQjnEWr.js} +1 -1
  72. package/dist/client/assets/{dist-BQhICHxD.js → dist-BtnXjRx0.js} +1 -1
  73. package/dist/client/assets/{dist-Ciw3BJA2.js → dist-BzbYwa8m.js} +1 -1
  74. package/dist/client/assets/{dist-fkQ6urpt.js → dist-BzpfHRaE.js} +1 -1
  75. package/dist/client/assets/{dist-DhzldYic.js → dist-CGV1S_as.js} +1 -1
  76. package/dist/client/assets/dist-CL-jjdvG.js +1 -0
  77. package/dist/client/assets/{dist-WrbPKwPQ.js → dist-CXpKYW9s.js} +1 -1
  78. package/dist/client/assets/{dist-60g3bzYH.js → dist-CjII8VDS.js} +1 -1
  79. package/dist/client/assets/{dist-BiFbHWxc.js → dist-CsYRf4AV.js} +1 -1
  80. package/dist/client/assets/{dist-U9MIFRLF.js → dist-CxfohGIV.js} +1 -1
  81. package/dist/client/assets/{dist-D2m8lD1h.js → dist-D5QOYy7y.js} +1 -1
  82. package/dist/client/assets/{dist-CvMToPSN.js → dist-DIi0uqLJ.js} +1 -1
  83. package/dist/client/assets/dist-DJ16N7ol.js +1 -0
  84. package/dist/client/assets/dist-DUvaQ-Bj.js +1 -0
  85. package/dist/client/assets/{dist-yRVuIDKu.js → dist-DWJL3_bF.js} +6 -6
  86. package/dist/client/assets/dist-DsL7sqZR.js +1 -0
  87. package/dist/client/assets/{dist-DAwSRqIJ.js → dist-Dyt7n5Ui.js} +1 -1
  88. package/dist/client/assets/{dist-B2pRSR5A.js → dist-E_jPb93e.js} +1 -1
  89. package/dist/client/assets/{dist-EPRNBXHp.js → dist-O1z0Ayg0.js} +1 -1
  90. package/dist/client/assets/dist-OQE68wIX.js +1 -0
  91. package/dist/client/assets/dist-k47-Io7D.js +1 -0
  92. package/dist/client/assets/{dist-2HWwyMLA.js → dist-lDhnP-K1.js} +1 -1
  93. package/dist/client/assets/{dist-BZc5d15t.js → dist-rMhng5DK.js} +1 -1
  94. package/dist/client/assets/dist-xO1ImhKz.js +1 -0
  95. package/dist/client/assets/{dockerfile-Ci0-ApQC.js → dockerfile-C0qQqxf9.js} +1 -1
  96. package/dist/client/assets/drawio-editor-CTZtMo1J.js +9 -0
  97. package/dist/client/assets/drawio-editor-UQQ8XHou.css +1 -0
  98. package/dist/client/assets/drawioEditor-keSJVTcv.js +2 -0
  99. package/dist/client/assets/editor-session-C9l9XwVg.js +16 -0
  100. package/dist/client/assets/{el-GR-ZXDJ2OS4-DGa9DqWI.js → el-GR-ZXDJ2OS4-Bbz93mrG.js} +1 -1
  101. package/dist/client/assets/embedded-editor-base-DgmRcsR8.css +1 -0
  102. package/dist/client/assets/{en-CTDJDZ6K-DC-4I8h8.js → en-IQZW2TQM-CZeIyvu2.js} +1 -1
  103. package/dist/client/assets/{erDiagram-INFDFZHY-Dnub3poK.js → erDiagram-INFDFZHY-DlhPv4az.js} +1 -1
  104. package/dist/client/assets/{es-ES-DYQHAD43-Cox3GUnj.js → es-ES-DYQHAD43-CReXU-Nn.js} +1 -1
  105. package/dist/client/assets/{eu-ES-QDSYU5Y3-DrPM2uSX.js → eu-ES-QDSYU5Y3-jRpcaWwz.js} +1 -1
  106. package/dist/client/assets/excalidraw-editor-CBEWfuhb.js +9 -0
  107. package/dist/client/assets/excalidraw-editor-Dj3i59LW.css +1 -0
  108. package/dist/client/assets/{excalidraw-mermaid-stub-LpuTrLnr.js → excalidraw-mermaid-stub-efoh2lJm.js} +1 -1
  109. package/dist/client/assets/excalidraw-scene-BL-OtvCd.js +176 -0
  110. package/dist/client/assets/excalidrawEditor-Ws-fwGOc.js +2 -0
  111. package/dist/client/assets/export-page-B6xYnwy7.js +39 -0
  112. package/dist/client/assets/exportDocument-8JBw0p8O.js +2 -0
  113. package/dist/client/assets/exportDocument-CtX_4PSk.css +1 -0
  114. package/dist/client/assets/{fa-IR-26LZG4PM-ViTdxAWX.js → fa-IR-26LZG4PM-DP8pJ8e3.js} +1 -1
  115. package/dist/client/assets/{factor-DMvifS-k.js → factor-2uy-lXe_.js} +1 -1
  116. package/dist/client/assets/{fi-FI-6YS4KDE4-BTBRGd69.js → fi-FI-6YS4KDE4-BLUDpNOj.js} +1 -1
  117. package/dist/client/assets/{flowDiagram-PKNHOUZH-DF4dDV_8.js → flowDiagram-PKNHOUZH-BU4MOSq8.js} +1 -1
  118. package/dist/client/assets/{fr-FR-BRLLPTZC-z-POHcHJ.js → fr-FR-BRLLPTZC-BoZz3Pi8.js} +1 -1
  119. package/dist/client/assets/ganttDiagram-A5KZAMGK-CbX67lZu.js +292 -0
  120. package/dist/client/assets/gitGraph-HDMCJU4V-kkuqHGSM.js +1 -0
  121. package/dist/client/assets/gitGraphDiagram-K3NZZRJ6-DhyvWcW1.js +65 -0
  122. package/dist/client/assets/{gl-ES-OKUZTLYG-BQtfDFNk.js → gl-ES-OKUZTLYG-CaEvhjDi.js} +1 -1
  123. package/dist/client/assets/{graphlib-B7v-yqry.js → graphlib-DSzYgMXB.js} +1 -1
  124. package/dist/client/assets/{he-IL-26MGYIU7-Dyw-xS4W.js → he-IL-26MGYIU7-DYOchgy9.js} +1 -1
  125. package/dist/client/assets/{hi-IN-Q4ZOGTP2-BqENUkZA.js → hi-IN-Q4ZOGTP2-yRs8g46n.js} +1 -1
  126. package/dist/client/assets/{hu-HU-P2OXPSN5-D1HGK0_M.js → hu-HU-P2OXPSN5-1skPmtgc.js} +1 -1
  127. package/dist/client/assets/{id-ID-2EIKXYN6-BEjyfllL.js → id-ID-2EIKXYN6-iUugQJd9.js} +1 -1
  128. package/dist/client/assets/image-XLNPCCAD-B4wZgh-Y.js +1 -0
  129. package/dist/client/assets/index-CywRKxsk.js +2 -0
  130. package/dist/client/assets/index-R4OArFku.css +1 -0
  131. package/dist/client/assets/info-3K5VOQVL-DPN78whf.js +1 -0
  132. package/dist/client/assets/infoDiagram-LFFYTUFH-Bap6MyHX.js +2 -0
  133. package/dist/client/assets/{isEmpty-CLDc0Kt_.js → isEmpty-C7iPDOO3.js} +1 -1
  134. package/dist/client/assets/{ishikawaDiagram-PHBUUO56-CmO_FyHY.js → ishikawaDiagram-PHBUUO56-DbftskqN.js} +1 -1
  135. package/dist/client/assets/{it-IT-4CFKVXI2-C24G-VcQ.js → it-IT-4CFKVXI2-a5DFhzuI.js} +1 -1
  136. package/dist/client/assets/{ja-JP-MAND2Z4V-DLhvsdYk.js → ja-JP-MAND2Z4V-DwogHVKd.js} +1 -1
  137. package/dist/client/assets/javascript-8DvdgifH.js +1 -0
  138. package/dist/client/assets/{journeyDiagram-4ABVD52K-DF4HAYLk.js → journeyDiagram-4ABVD52K-165YoX6B.js} +1 -1
  139. package/dist/client/assets/{jsx-runtime-DJkgQklN.js → jsx-runtime-DiaMmmG6.js} +1 -1
  140. package/dist/client/assets/{kaa-HQRTCXTJ-DC8l3BuJ.js → kaa-HQRTCXTJ-p81XNRfH.js} +1 -1
  141. package/dist/client/assets/{kab-KAB-JKIKKTGH-DVFog4hd.js → kab-KAB-JKIKKTGH-mV5VzQZc.js} +1 -1
  142. package/dist/client/assets/{kanban-definition-K7BYSVSG-nQoJJABn.js → kanban-definition-K7BYSVSG-MlixoNyx.js} +1 -1
  143. package/dist/client/assets/{kk-KZ-HXQ63ZFC-CULUfwMg.js → kk-KZ-HXQ63ZFC-IIPX0GQv.js} +1 -1
  144. package/dist/client/assets/{km-KH-PKL3LSGX-CnLlEv7i.js → km-KH-PKL3LSGX-D7WQFJuZ.js} +1 -1
  145. package/dist/client/assets/{ko-KR-KXLREZX3-DNKXAYCx.js → ko-KR-KXLREZX3-Bs1oLtJs.js} +1 -1
  146. package/dist/client/assets/{ku-TR-MJ4IER3X-DLUiMa4h.js → ku-TR-MJ4IER3X-DlxOs6aZ.js} +1 -1
  147. package/dist/client/assets/{line-DvLjT0Gv.js → line-D57TbKb7.js} +1 -1
  148. package/dist/client/assets/{linear-CEb8O7zv.js → linear-BIf852wI.js} +1 -1
  149. package/dist/client/assets/{lt-LT-H6WFQ6FJ-CoFiurzb.js → lt-LT-H6WFQ6FJ-xuo-3zKH.js} +1 -1
  150. package/dist/client/assets/{lv-LV-GOCK6SJW-DzeEvHxX.js → lv-LV-GOCK6SJW-C7S3M1nr.js} +1 -1
  151. package/dist/client/assets/main-CB97rY6B.js +1213 -0
  152. package/dist/client/assets/mermaid-parser.core-lf87rdG-.js +4 -0
  153. package/dist/client/assets/{mermaid-runtime-DbCLD8Ih.js → mermaid-runtime-C4a7TrTS.js} +3 -3
  154. package/dist/client/assets/{mindmap-definition-YRQLILUH-DaMULsE9.js → mindmap-definition-YRQLILUH-_YbQSc4Q.js} +1 -1
  155. package/dist/client/assets/{mr-IN-IXVLDMEQ-C5i5R9H5.js → mr-IN-IXVLDMEQ-BsoowyZT.js} +1 -1
  156. package/dist/client/assets/{my-MM-YG6MYTTD-DvwceqO-.js → my-MM-YG6MYTTD-DCqwN_K_.js} +1 -1
  157. package/dist/client/assets/navigation-Du6CLhvs.css +1 -0
  158. package/dist/client/assets/{nb-NO-XGWJISD2-BUhX8hX0.js → nb-NO-XGWJISD2-CZ5ytLgj.js} +1 -1
  159. package/dist/client/assets/{nl-NL-XVDVCPNC-BV6Y0-Q0.js → nl-NL-XVDVCPNC-wADsdb-h.js} +1 -1
  160. package/dist/client/assets/{nn-NO-EMX5MJX5-CF_bB9Jq.js → nn-NO-EMX5MJX5-D9zIKTL2.js} +1 -1
  161. package/dist/client/assets/{nsis-42hkxqLx.js → nsis-CUd4RnvJ.js} +1 -1
  162. package/dist/client/assets/{oc-FR-ROEINTVO-CiNI8fg8.js → oc-FR-ROEINTVO-BSbBugJB.js} +1 -1
  163. package/dist/client/assets/{ordinal-fW5lWpNM.js → ordinal-B0PAtOQ6.js} +1 -1
  164. package/dist/client/assets/{pa-IN-ZYN6SUDY-CsbIU150.js → pa-IN-ZYN6SUDY-1pFA_3Pb.js} +1 -1
  165. package/dist/client/assets/packet-RMMSAZCW-BymvQ5cQ.js +1 -0
  166. package/dist/client/assets/percentages-5DKR754L-CiI2D7zA.js +1 -0
  167. package/dist/client/assets/{pica-BbcTjVoI.js → pica-By-YDy_B.js} +1 -1
  168. package/dist/client/assets/pie-UPGHQEXC-MmzJzWOE.js +1 -0
  169. package/dist/client/assets/pieDiagram-SKSYHLDU-CqCgXFom.js +30 -0
  170. package/dist/client/assets/{pl-PL-6VTG7PHC-D1Nnx7R3.js → pl-PL-6VTG7PHC-DyYw0u_z.js} +1 -1
  171. package/dist/client/assets/preview-diagram-utils-Dc83ucbv.js +1 -0
  172. package/dist/client/assets/preview-render-compiler-TmHpBDlh.js +1 -0
  173. package/dist/client/assets/preview-render-compiler-aYpnXmNm.js +35 -0
  174. package/dist/client/assets/{preview-render-profile-DQsam_Ol.js → preview-render-profile-DPzmho7I.js} +1 -1
  175. package/dist/client/assets/preview-render-worker-BVbVXXPS.js +59 -0
  176. package/dist/client/assets/{pt-BR-5YFKRR5G-DEDTeWEP.js → pt-BR-5YFKRR5G-DJCCBBDl.js} +1 -1
  177. package/dist/client/assets/{pt-PT-GEIXXZ67-BpqPVZom.js → pt-PT-GEIXXZ67-BPJd09Ax.js} +1 -1
  178. package/dist/client/assets/{pug-BANqyQJ9.js → pug-BqBF8qF7.js} +1 -1
  179. package/dist/client/assets/{quadrantDiagram-337W2JSQ-DjPGrcJM.js → quadrantDiagram-337W2JSQ-B8eMuhg4.js} +1 -1
  180. package/dist/client/assets/{quick-switcher-controller-n6Jhu3Z9.js → quick-switcher-controller-DplOTsT3.js} +1 -1
  181. package/dist/client/assets/radar-KQ55EAFF-CCohASSY.js +1 -0
  182. package/dist/client/assets/{requirementDiagram-Z7DCOOCP-BmiYAMKV.js → requirementDiagram-Z7DCOOCP-B6POvqz4.js} +1 -1
  183. package/dist/client/assets/{ro-RO-E2P6TFZI-4vRM1jVT.js → ro-RO-E2P6TFZI-DWVyTV7V.js} +1 -1
  184. package/dist/client/assets/{room-DyhEnogt.js → room-COWSP--i.js} +1 -1
  185. package/dist/client/assets/{ru-RU-YBIIY43T-Cfbhz4Ew.js → ru-RU-YBIIY43T-Dyar7CYM.js} +1 -1
  186. package/dist/client/assets/runtime-config-CqX_f_Q4.js +1 -0
  187. package/dist/client/assets/{sankeyDiagram-WA2Y5GQK-BEoPAlcC.js → sankeyDiagram-WA2Y5GQK-CXRga6Op.js} +1 -1
  188. package/dist/client/assets/{sequenceDiagram-2WXFIKYE-BXqojuDS.js → sequenceDiagram-2WXFIKYE-CeSFlFx5.js} +1 -1
  189. package/dist/client/assets/{si-LK-673C2CI2-0muNkOEn.js → si-LK-673C2CI2-C61aLrIy.js} +1 -1
  190. package/dist/client/assets/{sk-SK-CKZHQ4AP-EnLgxyJL.js → sk-SK-CKZHQ4AP-BlFwOxRD.js} +1 -1
  191. package/dist/client/assets/{sl-SI-557H2GWM-BN6npqVj.js → sl-SI-557H2GWM-DcAVW-_t.js} +1 -1
  192. package/dist/client/assets/{src-DUDi_GeV.js → src-E3c2cohN.js} +1 -1
  193. package/dist/client/assets/stateDiagram-RAJIS63D-DbewhqwJ.js +1 -0
  194. package/dist/client/assets/stateDiagram-v2-FVOUBMTO-DbW-jVkS.js +1 -0
  195. package/dist/client/assets/states-P2LsGDDn.css +1 -0
  196. package/dist/client/assets/subset-shared.chunk-CC_u8ICU.js +1 -0
  197. package/dist/client/assets/{subset-worker.chunk-1FoL7eL0.js → subset-worker.chunk-DVGT6bvR.js} +1 -1
  198. package/dist/client/assets/{sv-SE-XOPKKDWS-D3VSs2SQ.js → sv-SE-XOPKKDWS-BkhfOHzh.js} +1 -1
  199. package/dist/client/assets/{ta-IN-XBH7DQI3-BKR1mqfo.js → ta-IN-XBH7DQI3-BIfwglZa.js} +1 -1
  200. package/dist/client/assets/{th-TH-TOCWH3R4-Bek1dQcW.js → th-TH-TOCWH3R4-CkrxqVkf.js} +1 -1
  201. package/dist/client/assets/{timeline-definition-YZTLITO2-BP09qqIh.js → timeline-definition-YZTLITO2-BXBHNWLQ.js} +1 -1
  202. package/dist/client/assets/{tr-TR-GXW6CYY5-xdLb7Dgi.js → tr-TR-GXW6CYY5-CDdvG9rD.js} +1 -1
  203. package/dist/client/assets/treemap-KZPCXAKY-9kxB0uNY.js +1 -0
  204. package/dist/client/assets/{uk-UA-IJKTNUDG-Cd0AhTti.js → uk-UA-IJKTNUDG-DRHp0lWp.js} +1 -1
  205. package/dist/client/assets/{uz-UZ-TBZZEA4V-DQH4e-QC.js → uz-UZ-TBZZEA4V-BIn-VE3Y.js} +1 -1
  206. package/dist/client/assets/vault-api-client-DIaCC56H.js +1 -0
  207. package/dist/client/assets/vault-api-client-De7kMvrE.css +1 -0
  208. package/dist/client/assets/{vennDiagram-LZ73GAT5-BvSlhnT0.js → vennDiagram-LZ73GAT5-C1hrSbf2.js} +1 -1
  209. package/dist/client/assets/{vi-VN-MULSGNVB-BYDcPrAo.js → vi-VN-MULSGNVB-Du7t5I0v.js} +1 -1
  210. package/dist/client/assets/{xychartDiagram-JWTSCODW-BvZ78F0j.js → xychartDiagram-JWTSCODW-DhpWp8LV.js} +1 -1
  211. package/dist/client/assets/yjs-provider-reset-guard-DWGhQClh.js +4 -0
  212. package/dist/client/assets/{zh-CN-MVX3E32U-BqZQ-18-.js → zh-CN-MVX3E32U-RcjS3rjt.js} +1 -1
  213. package/dist/client/assets/{zh-HK-JNU5RLIE-CbF8Agwa.js → zh-HK-JNU5RLIE-g8UeEw5v.js} +1 -1
  214. package/dist/client/assets/{zh-TW-LENVCA6T-CepoVycx.js → zh-TW-LENVCA6T-DwV25BqC.js} +1 -1
  215. package/dist/client/drawio-editor.html +4 -26
  216. package/dist/client/excalidraw-editor.html +4 -19
  217. package/dist/client/export-document.html +29 -0
  218. package/dist/client/index.html +7 -445
  219. package/docker-compose.yml +1 -0
  220. package/package.json +26 -22
  221. package/src/client/app/drawio-editor.html +1 -23
  222. package/src/client/app/excalidraw-editor.html +1 -16
  223. package/src/client/app/export-document-entry.js +25 -0
  224. package/src/client/app/export-document.html +24 -0
  225. package/src/client/app/index.html +1 -441
  226. package/src/client/app/main-entry.js +2 -0
  227. package/src/client/application/app-shell/export-feature.js +39 -0
  228. package/src/client/application/app-shell/ui-feature-shell.js +112 -17
  229. package/src/client/application/app-shell/ui-feature-toolbar.js +26 -4
  230. package/src/client/application/app-shell/workspace-feature.js +31 -3
  231. package/src/client/application/app-shell-elements.js +5 -0
  232. package/src/client/application/diagram-preview-hydrator.js +1 -1
  233. package/src/client/application/markdown-frontmatter.js +152 -0
  234. package/src/client/application/preview-render-compiler.js +16 -4
  235. package/src/client/application/preview-render-executor.js +8 -1
  236. package/src/client/application/preview-render-worker.js +4 -0
  237. package/src/client/application/preview-renderer.js +51 -1
  238. package/src/client/application/workspace-chrome-controller.js +3 -1
  239. package/src/client/application/workspace-coordinator.js +8 -1
  240. package/src/client/application/workspace-preview-controller.js +9 -3
  241. package/src/client/application/workspace-state-store.js +1 -0
  242. package/src/client/bootstrap/collabmd-app-shell.js +13 -1
  243. package/src/client/domain/markdown-formatting.js +1 -1
  244. package/src/client/domain/markdown-toolbar-actions.js +36 -0
  245. package/src/client/drawio-editor.js +4 -1
  246. package/src/client/excalidraw-editor.js +8 -0
  247. package/src/client/export/export-host.js +193 -0
  248. package/src/client/export/export-page.js +60 -0
  249. package/src/client/export/export-pipeline.js +1412 -0
  250. package/src/client/export/export-print-layout.js +50 -0
  251. package/src/client/infrastructure/auth-client.js +2 -203
  252. package/src/client/infrastructure/editor-session.js +12 -0
  253. package/src/client/infrastructure/editor-view-adapter.js +70 -2
  254. package/src/client/infrastructure/excalidraw-room-client.js +12 -4
  255. package/src/client/presentation/app-shell-renderer.js +13 -0
  256. package/src/client/presentation/app-shell-template.js +605 -0
  257. package/src/client/presentation/comment-ui/comment-ui-card.js +32 -10
  258. package/src/client/presentation/comments-panel.js +5 -3
  259. package/src/client/presentation/components/ui/badge.js +24 -0
  260. package/src/client/presentation/components/ui/button.js +78 -0
  261. package/src/client/presentation/components/ui/class-names.js +30 -0
  262. package/src/client/presentation/components/ui/ensure-ui-component-styles.js +18 -0
  263. package/src/client/presentation/components/ui/input.js +9 -0
  264. package/src/client/presentation/components/ui/segmented-control.js +31 -0
  265. package/src/client/presentation/create-menu-presenter.js +10 -2
  266. package/src/client/presentation/file-action-controller.js +5 -6
  267. package/src/client/presentation/file-explorer-view.js +9 -2
  268. package/src/client/presentation/file-history-view-controller.js +4 -3
  269. package/src/client/presentation/git-diff-view-controller.js +9 -11
  270. package/src/client/presentation/git-panel-controller.js +10 -8
  271. package/src/client/presentation/layout-controller.js +34 -4
  272. package/src/client/styles/base.css +5 -0
  273. package/src/client/styles/components/actions.css +6 -0
  274. package/src/client/styles/components/navigation.css +1 -0
  275. package/src/client/styles/export-document.css +250 -0
  276. package/src/client/styles/features/auth-gate.css +182 -0
  277. package/src/client/styles/features/git-branch.css +30 -2
  278. package/src/client/styles/features/preview-markdown.css +145 -4
  279. package/src/client/styles/layout/editor-page.css +101 -3
  280. package/src/client/styles/layout/responsive.css +97 -7
  281. package/src/client/styles/layout/shell.css +6 -0
  282. package/src/client/styles/layout/sidebar.css +1 -1
  283. package/src/client/styles/overrides/codemirror.css +74 -0
  284. package/src/client/styles/primitives/controls.css +22 -31
  285. package/src/client/styles/style.css +0 -4
  286. package/src/client/styles/surfaces/drawio-editor.css +104 -0
  287. package/src/client/styles/surfaces/embedded-editor-base.css +23 -0
  288. package/src/client/styles/surfaces/excalidraw-editor.css +16 -0
  289. package/src/server/auth/create-auth-service.js +32 -6
  290. package/src/server/config/env.js +27 -0
  291. package/src/server/config/perf-logging.js +39 -0
  292. package/src/server/create-app-server.js +105 -5
  293. package/src/server/domain/backlink-index.js +31 -7
  294. package/src/server/domain/collaboration/collaboration-room.js +28 -5
  295. package/src/server/domain/docx-exporter.js +62 -0
  296. package/src/server/infrastructure/git/history-service.js +1 -1
  297. package/src/server/infrastructure/http/create-request-handler.js +2 -0
  298. package/src/server/infrastructure/http/create-vault-api-command-handler.js +59 -1
  299. package/src/server/infrastructure/http/create-vault-api-handler.js +2 -0
  300. package/src/server/infrastructure/http/request-body.js +2 -2
  301. package/src/server/infrastructure/persistence/pull-backup-store.js +1 -1
  302. package/src/server/infrastructure/persistence/vault-file-store.js +74 -31
  303. package/src/server/infrastructure/workspace/file-system-sync-service.js +46 -12
  304. package/src/server/infrastructure/workspace/workspace-mutation-coordinator.js +32 -7
  305. package/src/server/shared/async-utils.js +25 -0
  306. package/dist/client/assets/architecture-PBZL5I3N-C1Yv7agI.js +0 -1
  307. package/dist/client/assets/architectureDiagram-2XIMDMQ5-T__yxKk2.js +0 -36
  308. package/dist/client/assets/channel-DBZin7O0.js +0 -1
  309. package/dist/client/assets/chunk-27N2SPOM-CyIruM79.js +0 -34
  310. package/dist/client/assets/chunk-GLR3WWYH-FplqAopN.js +0 -2
  311. package/dist/client/assets/chunk-HHEYEP7N-Bv_FKHmu.js +0 -1
  312. package/dist/client/assets/chunk-QZHKN3VN-Blawx8vd.js +0 -1
  313. package/dist/client/assets/classDiagram-VBA2DB6C-CreQafQu.js +0 -1
  314. package/dist/client/assets/classDiagram-v2-RAHNMMFH-BIYHzbiv.js +0 -1
  315. package/dist/client/assets/clone-C3ajWNce.js +0 -1
  316. package/dist/client/assets/dagre-KLK3FWXG-Ct1xwvCC.js +0 -4
  317. package/dist/client/assets/diagram-E7M64L7V-DkHzt94k.js +0 -24
  318. package/dist/client/assets/diagram-IFDJBPK2-D4g8afpU.js +0 -43
  319. package/dist/client/assets/diagram-P4PSJMXO-DVwwx6ED.js +0 -24
  320. package/dist/client/assets/dist-BS6yAJ9F.js +0 -1
  321. package/dist/client/assets/dist-BUnp4fHW.js +0 -1
  322. package/dist/client/assets/dist-BWEDjv8G.js +0 -1
  323. package/dist/client/assets/dist-BdtPRC1F.js +0 -1
  324. package/dist/client/assets/dist-BlhsMbAl.js +0 -1
  325. package/dist/client/assets/dist-CLsz2DCg.js +0 -1
  326. package/dist/client/assets/dist-DZD5y4h6.js +0 -1
  327. package/dist/client/assets/dist-_L_gn5XE.js +0 -1
  328. package/dist/client/assets/dist-a6bFAbQd.js +0 -1
  329. package/dist/client/assets/dist-naAaVPPS.js +0 -1
  330. package/dist/client/assets/drawio-editor-BW2z4NH2.js +0 -9
  331. package/dist/client/assets/drawioEditor-DgoA4Zqi.js +0 -2
  332. package/dist/client/assets/editor-session-xPvmulmt.js +0 -16
  333. package/dist/client/assets/excalidraw-editor-BAYca95w.js +0 -182
  334. package/dist/client/assets/excalidraw-editor-D8O7A69r.css +0 -1
  335. package/dist/client/assets/excalidrawEditor-BY5rq_Bn.js +0 -2
  336. package/dist/client/assets/ganttDiagram-A5KZAMGK-CwrN53Gu.js +0 -292
  337. package/dist/client/assets/gitGraph-HDMCJU4V-DbS2XnWK.js +0 -1
  338. package/dist/client/assets/gitGraphDiagram-K3NZZRJ6-BV9w0K-N.js +0 -65
  339. package/dist/client/assets/image-32MOCVDX-BBXPyAeU.js +0 -1
  340. package/dist/client/assets/index-D4FS-o13.js +0 -2
  341. package/dist/client/assets/index-DRgeOr4A.css +0 -1
  342. package/dist/client/assets/info-3K5VOQVL-Bre4VStM.js +0 -1
  343. package/dist/client/assets/infoDiagram-LFFYTUFH-CuUbZqrG.js +0 -2
  344. package/dist/client/assets/javascript-DdEc60Aj.js +0 -1
  345. package/dist/client/assets/main-Q1xvhoqP.js +0 -600
  346. package/dist/client/assets/mermaid-parser.core-DllATXd7.js +0 -4
  347. package/dist/client/assets/packet-RMMSAZCW-B7lnOkip.js +0 -1
  348. package/dist/client/assets/percentages-5DKR754L-Dp1vwDEq.js +0 -1
  349. package/dist/client/assets/pie-UPGHQEXC-D0gHdMgb.js +0 -1
  350. package/dist/client/assets/pieDiagram-SKSYHLDU-BPFp1WBd.js +0 -30
  351. package/dist/client/assets/preview-render-compiler-BYiRMsPq.js +0 -1
  352. package/dist/client/assets/preview-render-worker-CcASh3y3.js +0 -23
  353. package/dist/client/assets/radar-KQ55EAFF-D48du2CB.js +0 -1
  354. package/dist/client/assets/stateDiagram-RAJIS63D-DTR2sQs8.js +0 -1
  355. package/dist/client/assets/stateDiagram-v2-FVOUBMTO-BwVII-kJ.js +0 -1
  356. package/dist/client/assets/subset-shared.chunk-C6pUl_Oh.js +0 -1
  357. package/dist/client/assets/treemap-KZPCXAKY-BBRObSiT.js +0 -1
  358. package/dist/client/assets/vault-api-client-fFJfUVXM.js +0 -188
  359. package/dist/client/assets/yjs-provider-reset-guard-Cj00kgyM.js +0 -4
  360. /package/dist/client/assets/{apl-CJPt5sW7.js → apl-QJCYYBkj.js} +0 -0
  361. /package/dist/client/assets/{array-e43ctQmx.js → array-DwdVlTkF.js} +0 -0
  362. /package/dist/client/assets/{asciiarmor-D0oCypDs.js → asciiarmor-DNy0UPqh.js} +0 -0
  363. /package/dist/client/assets/{asn1-8xgVfRoq.js → asn1-CNPXj-s7.js} +0 -0
  364. /package/dist/client/assets/{asterisk-B5kv5AQp.js → asterisk-BwMdLpT2.js} +0 -0
  365. /package/dist/client/assets/{brainfuck-Dh7M1Ucz.js → brainfuck-C2gHT8aA.js} +0 -0
  366. /package/dist/client/assets/{chunk-3PELD44J-D4qJ8fq7.js → chunk-3PELD44J-CL87tpFo.js} +0 -0
  367. /package/dist/client/assets/{chunk-A66AFZZU-CJuwmF1m.js → chunk-A66AFZZU-DuceaGnc.js} +0 -0
  368. /package/dist/client/assets/{chunk-D-fkvfCP.js → chunk-DpHwWhuW.js} +0 -0
  369. /package/dist/client/assets/{clike-zYz_LEkw.js → clike-D5X7HJpo.js} +0 -0
  370. /package/dist/client/assets/{clojure-CdWlIeQh.js → clojure-BEDKZv_5.js} +0 -0
  371. /package/dist/client/assets/{cmake-wWuF5ifR.js → cmake-Y3shE7av.js} +0 -0
  372. /package/dist/client/assets/{cobol-D3WLbLVy.js → cobol-f-3TLk62.js} +0 -0
  373. /package/dist/client/assets/{coffeescript-DRtt-5a2.js → coffeescript-C0XA9-xa.js} +0 -0
  374. /package/dist/client/assets/{commonlisp-DJV75lsU.js → commonlisp-BOB6sIEu.js} +0 -0
  375. /package/dist/client/assets/{crystal-C7mEw92C.js → crystal-ByNgE_My.js} +0 -0
  376. /package/dist/client/assets/{css-_6KgQwpu.js → css-eaI-ENiR.js} +0 -0
  377. /package/dist/client/assets/{cypher-B3uWx7jm.js → cypher-CQ-dGGSi.js} +0 -0
  378. /package/dist/client/assets/{cytoscape.esm-BbbuX1pV.js → cytoscape.esm-DBDRhUia.js} +0 -0
  379. /package/dist/client/assets/{d-D3kOh3JF.js → d-D9pnu4Cr.js} +0 -0
  380. /package/dist/client/assets/{defaultLocale-DTn6RiRA.js → defaultLocale-BWgun1yJ.js} +0 -0
  381. /package/dist/client/assets/{diff-CoamybWh.js → diff-z9q33Lo6.js} +0 -0
  382. /package/dist/client/assets/{drawio-room-D6352KkV.js → drawio-room-C592VDk7.js} +0 -0
  383. /package/dist/client/assets/{dtd-BjGQwMWL.js → dtd-BDizf_te.js} +0 -0
  384. /package/dist/client/assets/{dylan-B9W3X2GI.js → dylan-Bk__XCKW.js} +0 -0
  385. /package/dist/client/assets/{ebnf-d5D0otVn.js → ebnf-SzN4Kxtp.js} +0 -0
  386. /package/dist/client/assets/{ecl-C5Q_IBPt.js → ecl-5ulxiKbt.js} +0 -0
  387. /package/dist/client/assets/{eiffel-BQA_6I3b.js → eiffel-Bhoaqbb6.js} +0 -0
  388. /package/dist/client/assets/{elm-unPS17vB.js → elm-C3je846J.js} +0 -0
  389. /package/dist/client/assets/{erlang-R8nOsUTx.js → erlang-Cgk9SIAz.js} +0 -0
  390. /package/dist/client/assets/{excalidraw-mermaid-stub-BJq3n7pR.js → excalidraw-mermaid-stub-B_2dv3Ll.js} +0 -0
  391. /package/dist/client/assets/{fcl-CVAfW9wK.js → fcl-dvkZwp9p.js} +0 -0
  392. /package/dist/client/assets/{forth-DHbsK8X8.js → forth-DmfSa3jN.js} +0 -0
  393. /package/dist/client/assets/{fortran-4jMwxW9-.js → fortran-BsZAiNnN.js} +0 -0
  394. /package/dist/client/assets/{gas-zC_XGrQT.js → gas-DBpKE9ut.js} +0 -0
  395. /package/dist/client/assets/{gherkin-CPBQou3u.js → gherkin-CceEbBs7.js} +0 -0
  396. /package/dist/client/assets/{groovy-Cqopym0q.js → groovy-CxJnDvES.js} +0 -0
  397. /package/dist/client/assets/{haskell-imzbNPgF.js → haskell-CUSb34Xy.js} +0 -0
  398. /package/dist/client/assets/{haxe-Doh225Ku.js → haxe-6EHO_h-N.js} +0 -0
  399. /package/dist/client/assets/{http-j4R5uEso.js → http-C3qcBpvG.js} +0 -0
  400. /package/dist/client/assets/{idl-l9d1__Hj.js → idl-C95wIO2I.js} +0 -0
  401. /package/dist/client/assets/{image-blob-reduce.esm-CQfEe3_g.js → image-blob-reduce.esm-BaW4gpT9.js} +0 -0
  402. /package/dist/client/assets/{init-207s1ipc.js → init-Bjj5fg68.js} +0 -0
  403. /package/dist/client/assets/{isArrayLikeObject-ZCMZRndo.js → isArrayLikeObject-Cmt1CYnI.js} +0 -0
  404. /package/dist/client/assets/{javascript-9dQYqEHJ.js → javascript-aWB87b1w.js} +0 -0
  405. /package/dist/client/assets/{julia-ByGjwiLn.js → julia-DF9PPAXG.js} +0 -0
  406. /package/dist/client/assets/{katex-XOVNa2d9.js → katex-BPsFnA3D.js} +0 -0
  407. /package/dist/client/assets/{livescript-B8l2m7xO.js → livescript-CnOyWwUY.js} +0 -0
  408. /package/dist/client/assets/{lua-DrfAKnQQ.js → lua-a0rEq19C.js} +0 -0
  409. /package/dist/client/assets/{math-BlD6rf4Z.js → math-BaavbII8.js} +0 -0
  410. /package/dist/client/assets/{mathematica-DYk_2Ik_.js → mathematica-CKUq0Ojc.js} +0 -0
  411. /package/dist/client/assets/{mbox-BOzVHzVt.js → mbox-a-u2PLog.js} +0 -0
  412. /package/dist/client/assets/{mirc-DStbUCmv.js → mirc-BOd43sOX.js} +0 -0
  413. /package/dist/client/assets/{mllike-BmhQglqS.js → mllike-fHruGivh.js} +0 -0
  414. /package/dist/client/assets/{modelica-ZElxtbqD.js → modelica-B0NJqf1C.js} +0 -0
  415. /package/dist/client/assets/{mscgen-f-YxHPr0.js → mscgen-DJZ33SrF.js} +0 -0
  416. /package/dist/client/assets/{mumps-B79RJJhR.js → mumps-DvMvHTxU.js} +0 -0
  417. /package/dist/client/assets/{nginx-c--axfuP.js → nginx-BVAs8laz.js} +0 -0
  418. /package/dist/client/assets/{ntriples-CgD4YZZC.js → ntriples-DrdyAZU1.js} +0 -0
  419. /package/dist/client/assets/{octave-BQk-bCrp.js → octave-_YqJ0g7E.js} +0 -0
  420. /package/dist/client/assets/{oz-DPCSPrx5.js → oz-k7T3LoMr.js} +0 -0
  421. /package/dist/client/assets/{pascal-C1iGzZ53.js → pascal-CftsTvte.js} +0 -0
  422. /package/dist/client/assets/{path-CDSE7Nw0.js → path-BUmMWM1-.js} +0 -0
  423. /package/dist/client/assets/{perl-DQ3L8ffg.js → perl-CbsLFc7A.js} +0 -0
  424. /package/dist/client/assets/{pig-B4S8acys.js → pig-C-jTwMS-.js} +0 -0
  425. /package/dist/client/assets/{powershell-BhSVdaeY.js → powershell-DqXLgSHX.js} +0 -0
  426. /package/dist/client/assets/{preload-helper-I1wKxk_B.js → preload-helper-Bo9GmnuQ.js} +0 -0
  427. /package/dist/client/assets/{properties-B2nfdtxE.js → properties-05jaw55P.js} +0 -0
  428. /package/dist/client/assets/{protobuf-BFW_iwVN.js → protobuf-DThTsZQN.js} +0 -0
  429. /package/dist/client/assets/{puppet-C1-CkyhQ.js → puppet-DuHxMpoj.js} +0 -0
  430. /package/dist/client/assets/{python-CYXPDD4I.js → python-BiE2VHJI.js} +0 -0
  431. /package/dist/client/assets/{q-Bub5Xmxm.js → q-DH46YfNw.js} +0 -0
  432. /package/dist/client/assets/{r-C59ONZO2.js → r-DmEm46kJ.js} +0 -0
  433. /package/dist/client/assets/{rough.esm-xhKrnp4d.js → rough.esm-jZQkcmER.js} +0 -0
  434. /package/dist/client/assets/{roundRect-CTz-kxJH.js → roundRect-CI6UmGg6.js} +0 -0
  435. /package/dist/client/assets/{rpm-DiM-R-wd.js → rpm-DILIIbRB.js} +0 -0
  436. /package/dist/client/assets/{ruby-DTqG95KX.js → ruby-2LcnHEMS.js} +0 -0
  437. /package/dist/client/assets/{runtime-config-loader-DwWsKc1-.js → runtime-config-loader-_D2KZKn-.js} +0 -0
  438. /package/dist/client/assets/{sas-BjdhmGHX.js → sas-Bn81MKuB.js} +0 -0
  439. /package/dist/client/assets/{scheme-CWNdoI17.js → scheme-B8kPNbgd.js} +0 -0
  440. /package/dist/client/assets/{shell-iaorleRB.js → shell-CGj6v8kb.js} +0 -0
  441. /package/dist/client/assets/{sieve-D8m9Etmd.js → sieve-CfVNFN1K.js} +0 -0
  442. /package/dist/client/assets/{simple-mode-kdHrpFjq.js → simple-mode-_FSHdiXs.js} +0 -0
  443. /package/dist/client/assets/{smalltalk-28WS1mUj.js → smalltalk-BpIFyCPt.js} +0 -0
  444. /package/dist/client/assets/{solr-x8qQ6eAP.js → solr-B7iFaetn.js} +0 -0
  445. /package/dist/client/assets/{sparql-BvLmi7B6.js → sparql-COhgMTFK.js} +0 -0
  446. /package/dist/client/assets/{spreadsheet-BuqSwScP.js → spreadsheet-BzuffEeg.js} +0 -0
  447. /package/dist/client/assets/{sql-B8tBavZM.js → sql-13lT5zDl.js} +0 -0
  448. /package/dist/client/assets/{stex-Bx4bLPxI.js → stex-BRSfZZYG.js} +0 -0
  449. /package/dist/client/assets/{stylus-CMEhEjuV.js → stylus-fFo0QRk_.js} +0 -0
  450. /package/dist/client/assets/{swift-wY9II8hY.js → swift-wb5gyb6a.js} +0 -0
  451. /package/dist/client/assets/{tcl-BGywDEsi.js → tcl-BJA7GgWY.js} +0 -0
  452. /package/dist/client/assets/{textile-K_mvsehZ.js → textile-BQjiYu-x.js} +0 -0
  453. /package/dist/client/assets/{tiddlywiki-BrpeQ34q.js → tiddlywiki-D2vUXB6n.js} +0 -0
  454. /package/dist/client/assets/{tiki-z2eQQPgI.js → tiki-BFhpdznG.js} +0 -0
  455. /package/dist/client/assets/{toml-Dcu7S7XA.js → toml-DN06iQUw.js} +0 -0
  456. /package/dist/client/assets/{troff-Djlumm7T.js → troff-DuQfjhPH.js} +0 -0
  457. /package/dist/client/assets/{ttcn-XqU6tthJ.js → ttcn-BCTy6d50.js} +0 -0
  458. /package/dist/client/assets/{ttcn-cfg-BzD0wr3i.js → ttcn-cfg-BYnZQqGa.js} +0 -0
  459. /package/dist/client/assets/{turtle-DcjXkx6M.js → turtle-BvN-Me9x.js} +0 -0
  460. /package/dist/client/assets/{vault-utils-BM4i-Ofm.js → vault-utils-BW53lKl1.js} +0 -0
  461. /package/dist/client/assets/{vb-DV4y2QrD.js → vb-DYk3wW9u.js} +0 -0
  462. /package/dist/client/assets/{vbscript-BS8DsYJ_.js → vbscript-BKI61VS6.js} +0 -0
  463. /package/dist/client/assets/{velocity-CS6Ly2yV.js → velocity-BrtitHHA.js} +0 -0
  464. /package/dist/client/assets/{verilog-DbEC7ose.js → verilog-CjUx3yiL.js} +0 -0
  465. /package/dist/client/assets/{vhdl-DBLrW9bF.js → vhdl-CPWwYF4V.js} +0 -0
  466. /package/dist/client/assets/{webidl-CnE8KY-y.js → webidl-PiVOzma8.js} +0 -0
  467. /package/dist/client/assets/{xquery--K5Za5EW.js → xquery-CiTzM_oK.js} +0 -0
  468. /package/dist/client/assets/{yacas-ClQfYBmX.js → yacas-4QS9CntY.js} +0 -0
  469. /package/dist/client/assets/{z80-Dr2oR3X2.js → z80-BxidrTKR.js} +0 -0
@@ -12,6 +12,8 @@ import {
12
12
  hasLocalReaction,
13
13
  isReactionPickerOpen,
14
14
  } from './comment-ui-shared.js';
15
+ import { buttonClassNames } from '../components/ui/button.js';
16
+ import { inputClassNames } from '../components/ui/input.js';
15
17
 
16
18
  /** @this {any} */
17
19
  function ensureCardRoot() {
@@ -144,7 +146,12 @@ function renderCard() {
144
146
 
145
147
  const closeButton = document.createElement('button');
146
148
  closeButton.type = 'button';
147
- closeButton.className = 'ui-button ui-button--compact btn btn-ghost ui-pill-button ui-action-pill comment-card-close';
149
+ closeButton.className = buttonClassNames({
150
+ variant: 'ghost',
151
+ size: 'compact',
152
+ pill: true,
153
+ extra: ['ui-action-pill', 'comment-card-close'],
154
+ });
148
155
  closeButton.setAttribute('aria-label', 'Close comments');
149
156
  closeButton.textContent = 'Close';
150
157
  closeButton.addEventListener('click', () => this.closeCard());
@@ -234,7 +241,7 @@ function createComposer() {
234
241
  form.className = 'comment-card-form';
235
242
 
236
243
  const textarea = document.createElement('textarea');
237
- textarea.className = 'input comment-card-input';
244
+ textarea.className = inputClassNames({ extra: 'comment-card-input' });
238
245
  textarea.rows = 4;
239
246
  textarea.maxLength = COMMENT_BODY_MAX_LENGTH;
240
247
  textarea.placeholder = 'Add context, feedback, or a question...';
@@ -244,13 +251,13 @@ function createComposer() {
244
251
 
245
252
  const cancel = document.createElement('button');
246
253
  cancel.type = 'button';
247
- cancel.className = 'ui-button btn btn-secondary';
254
+ cancel.className = buttonClassNames({ variant: 'secondary' });
248
255
  cancel.textContent = 'Cancel';
249
256
  cancel.addEventListener('click', () => this.closeCard());
250
257
 
251
258
  const submit = document.createElement('button');
252
259
  submit.type = 'submit';
253
- submit.className = 'ui-button btn btn-primary';
260
+ submit.className = buttonClassNames({ variant: 'primary' });
254
261
  submit.textContent = 'Post comment';
255
262
 
256
263
  actions.append(cancel, submit);
@@ -298,13 +305,23 @@ function createThreadElement(thread) {
298
305
 
299
306
  const jump = document.createElement('button');
300
307
  jump.type = 'button';
301
- jump.className = 'ui-button ui-button--compact btn btn-ghost ui-pill-button ui-action-pill comment-thread-card-action';
308
+ jump.className = buttonClassNames({
309
+ variant: 'ghost',
310
+ size: 'compact',
311
+ pill: true,
312
+ extra: ['ui-action-pill', 'comment-thread-card-action'],
313
+ });
302
314
  jump.textContent = 'Jump';
303
315
  jump.addEventListener('click', () => this.onNavigateToLine?.(thread.anchor?.startLine ?? 1));
304
316
 
305
317
  const reply = document.createElement('button');
306
318
  reply.type = 'button';
307
- reply.className = 'ui-button ui-button--compact btn btn-ghost ui-pill-button ui-action-pill comment-thread-card-action';
319
+ reply.className = buttonClassNames({
320
+ variant: 'ghost',
321
+ size: 'compact',
322
+ pill: true,
323
+ extra: ['ui-action-pill', 'comment-thread-card-action'],
324
+ });
308
325
  const isReplying = this.activeCard?.replyThreadId === thread.id;
309
326
  reply.classList.toggle('is-active', isReplying);
310
327
  reply.textContent = 'Reply';
@@ -321,7 +338,12 @@ function createThreadElement(thread) {
321
338
 
322
339
  const resolve = document.createElement('button');
323
340
  resolve.type = 'button';
324
- resolve.className = 'ui-button ui-button--compact btn btn-ghost ui-pill-button ui-action-pill comment-thread-card-action is-danger';
341
+ resolve.className = buttonClassNames({
342
+ variant: 'ghost',
343
+ size: 'compact',
344
+ pill: true,
345
+ extra: ['ui-action-pill', 'comment-thread-card-action', 'is-danger'],
346
+ });
325
347
  resolve.textContent = 'Resolve';
326
348
  resolve.addEventListener('click', async () => {
327
349
  await this.onResolveThread?.(thread.id);
@@ -497,7 +519,7 @@ function createReplyComposer(thread) {
497
519
  form.className = 'comment-reply-form';
498
520
 
499
521
  const textarea = document.createElement('textarea');
500
- textarea.className = 'input comment-card-input';
522
+ textarea.className = inputClassNames({ extra: 'comment-card-input' });
501
523
  textarea.rows = 3;
502
524
  textarea.maxLength = COMMENT_BODY_MAX_LENGTH;
503
525
  textarea.placeholder = 'Reply to thread...';
@@ -507,7 +529,7 @@ function createReplyComposer(thread) {
507
529
 
508
530
  const cancel = document.createElement('button');
509
531
  cancel.type = 'button';
510
- cancel.className = 'ui-button btn btn-secondary';
532
+ cancel.className = buttonClassNames({ variant: 'secondary' });
511
533
  cancel.textContent = 'Cancel';
512
534
  cancel.addEventListener('click', () => {
513
535
  this.activeCard = {
@@ -519,7 +541,7 @@ function createReplyComposer(thread) {
519
541
 
520
542
  const submit = document.createElement('button');
521
543
  submit.type = 'submit';
522
- submit.className = 'ui-button btn btn-primary';
544
+ submit.className = buttonClassNames({ variant: 'primary' });
523
545
  submit.textContent = 'Reply';
524
546
 
525
547
  actions.append(cancel, submit);
@@ -1,4 +1,6 @@
1
1
  import { COMMENT_BODY_MAX_LENGTH } from '../../domain/comment-threads.js';
2
+ import { buttonClassNames } from './components/ui/button.js';
3
+ import { inputClassNames } from './components/ui/input.js';
2
4
 
3
5
  function isLeafSourceBlock(element) {
4
6
  return !element.querySelector('[data-source-line]');
@@ -452,7 +454,7 @@ export class CommentsPanel {
452
454
  form.className = 'comment-reply-form';
453
455
 
454
456
  const textarea = document.createElement('textarea');
455
- textarea.className = 'input comment-reply-input';
457
+ textarea.className = inputClassNames({ extra: 'comment-reply-input' });
456
458
  textarea.rows = 3;
457
459
  textarea.placeholder = `Reply on ${formatLineLabel(thread.anchor)}...`;
458
460
  textarea.maxLength = COMMENT_BODY_MAX_LENGTH;
@@ -463,7 +465,7 @@ export class CommentsPanel {
463
465
 
464
466
  const cancelButton = document.createElement('button');
465
467
  cancelButton.type = 'button';
466
- cancelButton.className = 'ui-button btn btn-secondary';
468
+ cancelButton.className = buttonClassNames({ variant: 'secondary' });
467
469
  cancelButton.textContent = 'Cancel';
468
470
  cancelButton.addEventListener('click', () => {
469
471
  this.replyDraftThreadId = null;
@@ -472,7 +474,7 @@ export class CommentsPanel {
472
474
 
473
475
  const submitButton = document.createElement('button');
474
476
  submitButton.type = 'submit';
475
- submitButton.className = 'ui-button btn btn-primary';
477
+ submitButton.className = buttonClassNames({ variant: 'primary' });
476
478
  submitButton.textContent = 'Reply';
477
479
 
478
480
  actions.append(cancelButton, submitButton);
@@ -0,0 +1,24 @@
1
+ import { classNames } from './class-names.js';
2
+
3
+ /**
4
+ * @param {{ tone?: 'accent'|'solid'|'muted'|'code', count?: boolean, hidden?: boolean, extra?: string|string[] }} [options]
5
+ * @returns {string}
6
+ */
7
+ export function badgeClassNames(options = {}) {
8
+ const {
9
+ tone = 'accent',
10
+ count = false,
11
+ hidden = false,
12
+ extra = [],
13
+ } = options;
14
+
15
+ return classNames(
16
+ 'ui-pill-badge',
17
+ tone && `ui-pill-badge--${tone}`,
18
+ {
19
+ 'ui-pill-badge--count': count,
20
+ hidden,
21
+ },
22
+ extra,
23
+ );
24
+ }
@@ -0,0 +1,78 @@
1
+ import { classNames } from './class-names.js';
2
+
3
+ /**
4
+ * @typedef {object} ButtonClassOptions
5
+ * @property {'primary'|'secondary'|'danger'|'ghost'} [variant]
6
+ * @property {'md'|'lg'|'compact'} [size]
7
+ * @property {boolean} [toggle]
8
+ * @property {boolean} [toolbar]
9
+ * @property {boolean} [action]
10
+ * @property {boolean} [wide]
11
+ * @property {boolean} [surface]
12
+ * @property {boolean} [pill]
13
+ * @property {boolean} [hidden]
14
+ * @property {boolean} [active]
15
+ * @property {string|string[]} [extra]
16
+ */
17
+
18
+ /**
19
+ * @param {ButtonClassOptions} [options]
20
+ * @returns {string}
21
+ */
22
+ export function buttonClassNames(options = {}) {
23
+ const {
24
+ variant = 'secondary',
25
+ size = 'md',
26
+ toggle = false,
27
+ toolbar = false,
28
+ action = false,
29
+ wide = false,
30
+ surface = false,
31
+ pill = false,
32
+ hidden = false,
33
+ active = false,
34
+ extra = [],
35
+ } = options;
36
+
37
+ return classNames(
38
+ 'ui-button',
39
+ variant && `ui-button--${variant}`,
40
+ size !== 'md' && `ui-button--${size}`,
41
+ {
42
+ 'ui-button--toggle': toggle,
43
+ 'ui-button--toolbar': toolbar,
44
+ 'ui-button--action': action,
45
+ 'ui-button--wide': wide,
46
+ 'ui-button--surface': surface,
47
+ 'ui-button--pill': pill,
48
+ active,
49
+ hidden,
50
+ },
51
+ extra,
52
+ );
53
+ }
54
+
55
+ /**
56
+ * @param {{ toolbar?: boolean, action?: boolean, surface?: boolean, hidden?: boolean, extra?: string|string[] }} [options]
57
+ * @returns {string}
58
+ */
59
+ export function iconButtonClassNames(options = {}) {
60
+ const {
61
+ toolbar = false,
62
+ action = false,
63
+ surface = false,
64
+ hidden = false,
65
+ extra = [],
66
+ } = options;
67
+
68
+ return classNames(
69
+ 'ui-icon-button',
70
+ {
71
+ 'ui-icon-button--toolbar': toolbar,
72
+ 'ui-icon-button--action': action,
73
+ 'ui-icon-button--surface': surface,
74
+ hidden,
75
+ },
76
+ extra,
77
+ );
78
+ }
@@ -0,0 +1,30 @@
1
+ export function classNames(...parts) {
2
+ const tokens = [];
3
+
4
+ for (const part of parts) {
5
+ if (!part) {
6
+ continue;
7
+ }
8
+
9
+ if (Array.isArray(part)) {
10
+ const nested = classNames(...part);
11
+ if (nested) {
12
+ tokens.push(nested);
13
+ }
14
+ continue;
15
+ }
16
+
17
+ if (typeof part === 'object') {
18
+ Object.entries(part).forEach(([className, enabled]) => {
19
+ if (enabled) {
20
+ tokens.push(className);
21
+ }
22
+ });
23
+ continue;
24
+ }
25
+
26
+ tokens.push(String(part));
27
+ }
28
+
29
+ return tokens.join(' ');
30
+ }
@@ -0,0 +1,18 @@
1
+ let uiComponentStylesPromise = null;
2
+
3
+ export function ensureUiComponentStyles() {
4
+ if (typeof document === 'undefined') {
5
+ return Promise.resolve();
6
+ }
7
+
8
+ if (!uiComponentStylesPromise) {
9
+ uiComponentStylesPromise = Promise.all([
10
+ import('../../../styles/primitives/controls.css'),
11
+ import('../../../styles/components/actions.css'),
12
+ import('../../../styles/components/navigation.css'),
13
+ import('../../../styles/components/states.css'),
14
+ ]).then(() => undefined);
15
+ }
16
+
17
+ return uiComponentStylesPromise;
18
+ }
@@ -0,0 +1,9 @@
1
+ import { classNames } from './class-names.js';
2
+
3
+ /**
4
+ * @param {{ extra?: string|string[] }} [options]
5
+ * @returns {string}
6
+ */
7
+ export function inputClassNames(options = {}) {
8
+ return classNames('ui-input', options.extra ?? []);
9
+ }
@@ -0,0 +1,31 @@
1
+ import { classNames } from './class-names.js';
2
+
3
+ /**
4
+ * @param {{ pill?: boolean, hidden?: boolean, extra?: string|string[] }} [options]
5
+ * @returns {string}
6
+ */
7
+ export function segmentedControlClassNames(options = {}) {
8
+ return classNames(
9
+ 'ui-segmented-control',
10
+ {
11
+ 'ui-segmented-control--pill': options.pill,
12
+ hidden: options.hidden,
13
+ },
14
+ options.extra ?? [],
15
+ );
16
+ }
17
+
18
+ /**
19
+ * @param {{ active?: boolean, hidden?: boolean, extra?: string|string[] }} [options]
20
+ * @returns {string}
21
+ */
22
+ export function segmentedButtonClassNames(options = {}) {
23
+ return classNames(
24
+ 'ui-segmented-btn',
25
+ {
26
+ active: options.active,
27
+ hidden: options.hidden,
28
+ },
29
+ options.extra ?? [],
30
+ );
31
+ }
@@ -1,3 +1,5 @@
1
+ import { buttonClassNames } from './components/ui/button.js';
2
+
1
3
  function getDefaultMobileBreakpointQuery() {
2
4
  if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {
3
5
  return { matches: false };
@@ -151,7 +153,10 @@ export class CreateMenuPresenter {
151
153
 
152
154
  const cancelButton = document.createElement('button');
153
155
  cancelButton.type = 'button';
154
- cancelButton.className = 'ui-button btn btn-ghost file-action-sheet-item create-action-sheet-cancel';
156
+ cancelButton.className = buttonClassNames({
157
+ variant: 'ghost',
158
+ extra: ['file-action-sheet-item', 'create-action-sheet-cancel'],
159
+ });
155
160
  cancelButton.textContent = 'Cancel';
156
161
  cancelButton.addEventListener('click', () => {
157
162
  this.close();
@@ -182,7 +187,10 @@ export class CreateMenuPresenter {
182
187
  const button = document.createElement('button');
183
188
  button.type = 'button';
184
189
  button.className = mobile
185
- ? 'ui-button btn btn-ghost file-action-sheet-item create-action-sheet-item create-action-sheet-option'
190
+ ? buttonClassNames({
191
+ variant: 'ghost',
192
+ extra: ['file-action-sheet-item', 'create-action-sheet-item', 'create-action-sheet-option'],
193
+ })
186
194
  : 'create-menu-item';
187
195
  button.setAttribute('role', mobile ? 'button' : 'menuitem');
188
196
  button.dataset.actionId = item.id;
@@ -11,6 +11,7 @@ import {
11
11
  normalizeVaultPathInput,
12
12
  } from '../domain/vault-paths.js';
13
13
  import { createWorkspaceRequestId } from '../domain/workspace-request-id.js';
14
+ import { buttonClassNames } from './components/ui/button.js';
14
15
  import { CreateMenuPresenter } from './create-menu-presenter.js';
15
16
 
16
17
  function getPathLeaf(path) {
@@ -333,8 +334,8 @@ export class FileActionController {
333
334
 
334
335
  this.actionSubmitButton.textContent = submitLabel;
335
336
  this.actionSubmitButton.disabled = false;
336
- this.actionSubmitButton.classList.toggle('btn-primary', !destructive);
337
- this.actionSubmitButton.classList.toggle('btn-danger', destructive);
337
+ this.actionSubmitButton.classList.toggle('ui-button--primary', !destructive);
338
+ this.actionSubmitButton.classList.toggle('ui-button--danger', destructive);
338
339
  this.actionCancelButton.disabled = false;
339
340
 
340
341
  if (typeof this.actionDialog.showModal === 'function') {
@@ -384,8 +385,7 @@ export class FileActionController {
384
385
  if (this.actionSubmitButton) {
385
386
  this.actionSubmitButton.textContent = 'Save';
386
387
  this.actionSubmitButton.disabled = false;
387
- this.actionSubmitButton.classList.add('btn-primary');
388
- this.actionSubmitButton.classList.remove('btn-danger');
388
+ this.actionSubmitButton.className = buttonClassNames({ variant: 'primary' });
389
389
  }
390
390
  if (this.actionCancelButton) {
391
391
  this.actionCancelButton.disabled = false;
@@ -436,11 +436,10 @@ export class FileActionController {
436
436
 
437
437
  this.setActionDialogBusy(true);
438
438
 
439
- let shouldClose = false;
439
+ let shouldClose;
440
440
  try {
441
441
  shouldClose = await this.pendingAction.onSubmit(rawValue);
442
442
  } catch (error) {
443
- shouldClose = false;
444
443
  this.showError('Failed to complete action', error);
445
444
  }
446
445
 
@@ -3,6 +3,7 @@ import {
3
3
  stripVaultFileExtension,
4
4
  } from '../../domain/file-kind.js';
5
5
  import { escapeHtml } from '../domain/vault-utils.js';
6
+ import { buttonClassNames } from './components/ui/button.js';
6
7
 
7
8
  function getPathLeaf(path) {
8
9
  return String(path ?? '')
@@ -612,7 +613,10 @@ export class FileExplorerView {
612
613
  items.forEach((item) => {
613
614
  const button = document.createElement('button');
614
615
  button.type = 'button';
615
- button.className = `ui-button btn btn-secondary file-action-sheet-item${item.danger ? ' file-context-danger' : ''}`;
616
+ button.className = buttonClassNames({
617
+ variant: 'secondary',
618
+ extra: ['file-action-sheet-item', item.danger ? 'file-context-danger' : ''],
619
+ });
616
620
  button.textContent = item.label;
617
621
  button.addEventListener('click', () => {
618
622
  this.removeContextMenu();
@@ -623,7 +627,10 @@ export class FileExplorerView {
623
627
 
624
628
  const cancelButton = document.createElement('button');
625
629
  cancelButton.type = 'button';
626
- cancelButton.className = 'ui-button btn btn-ghost file-action-sheet-item';
630
+ cancelButton.className = buttonClassNames({
631
+ variant: 'ghost',
632
+ extra: 'file-action-sheet-item',
633
+ });
627
634
  cancelButton.textContent = 'Cancel';
628
635
  cancelButton.addEventListener('click', () => {
629
636
  this.removeContextMenu();
@@ -1,5 +1,6 @@
1
1
  import { escapeHtml } from '../domain/vault-utils.js';
2
2
  import { resolveApiUrl } from '../domain/runtime-paths.js';
3
+ import { buttonClassNames } from './components/ui/button.js';
3
4
 
4
5
  const HISTORY_PAGE_SIZE = 30;
5
6
 
@@ -687,7 +688,7 @@ export class FileHistoryViewController {
687
688
  </div>
688
689
  <div class="file-history-detail-actions">
689
690
  <button
690
- class="ui-button ui-action-button ui-action-button--surface btn btn-secondary"
691
+ class="${buttonClassNames({ variant: 'secondary', action: true, surface: true })}"
691
692
  type="button"
692
693
  data-file-history-open-selected-diff
693
694
  >
@@ -695,7 +696,7 @@ export class FileHistoryViewController {
695
696
  </button>
696
697
  ${entry.type === 'commit' ? `
697
698
  <button
698
- class="ui-button ui-action-button btn btn-primary"
699
+ class="${buttonClassNames({ variant: 'primary', action: true })}"
699
700
  type="button"
700
701
  data-file-history-open-selected-preview
701
702
  >
@@ -783,7 +784,7 @@ export class FileHistoryViewController {
783
784
  ${this.history.hasMore ? `
784
785
  <div class="git-history-footer file-history-footer">
785
786
  <button
786
- class="ui-button ui-button--compact ui-action-button ui-action-button--surface btn btn-secondary git-history-load-more"
787
+ class="${buttonClassNames({ variant: 'secondary', size: 'compact', action: true, surface: true, extra: 'git-history-load-more' })}"
787
788
  type="button"
788
789
  data-file-history-load-more
789
790
  ${this.history.loadingMore ? 'disabled' : ''}
@@ -1,5 +1,6 @@
1
1
  import { escapeHtml } from '../domain/vault-utils.js';
2
2
  import { resolveApiUrl } from '../domain/runtime-paths.js';
3
+ import { buttonClassNames } from './components/ui/button.js';
3
4
 
4
5
  function getPathLeaf(pathValue) {
5
6
  return String(pathValue ?? '').split('/').pop() || '';
@@ -586,7 +587,7 @@ export class GitDiffViewController {
586
587
  <div class="diff-limit-card">
587
588
  <strong>Large diff withheld</strong>
588
589
  <span>This file diff is large enough to impact rendering performance.</span>
589
- <button class="ui-button btn btn-secondary diff-load-full-btn" type="button" data-load-full-diff data-diff-file-path="${escapeHtml(detail.path)}">Load full diff</button>
590
+ <button class="${buttonClassNames({ variant: 'secondary', extra: 'diff-load-full-btn' })}" type="button" data-load-full-diff data-diff-file-path="${escapeHtml(detail.path)}">Load full diff</button>
590
591
  </div>
591
592
  `;
592
593
  }
@@ -695,16 +696,13 @@ export class GitDiffViewController {
695
696
  const errorMessage = this.fileErrors.get(file.path);
696
697
  const detail = this.getFileDetail(file.path) ?? file;
697
698
 
698
- let bodyMarkup = '';
699
- if (isCollapsed) {
700
- bodyMarkup = '';
701
- } else if (isLoading) {
702
- bodyMarkup = '<div class="diff-empty-state">Loading file diff...</div>';
703
- } else if (errorMessage) {
704
- bodyMarkup = `<div class="diff-empty-state">${escapeHtml(errorMessage)}</div>`;
705
- } else {
706
- bodyMarkup = this.renderDiffDetail(detail, index, { includeHeader: false });
707
- }
699
+ const bodyMarkup = isCollapsed
700
+ ? ''
701
+ : isLoading
702
+ ? '<div class="diff-empty-state">Loading file diff...</div>'
703
+ : errorMessage
704
+ ? `<div class="diff-empty-state">${escapeHtml(errorMessage)}</div>`
705
+ : this.renderDiffDetail(detail, index, { includeHeader: false });
708
706
 
709
707
  return `
710
708
  <section
@@ -1,5 +1,7 @@
1
1
  import { escapeHtml } from '../domain/vault-utils.js';
2
2
  import { resolveApiUrl } from '../domain/runtime-paths.js';
3
+ import { buttonClassNames } from './components/ui/button.js';
4
+ import { segmentedButtonClassNames, segmentedControlClassNames } from './components/ui/segmented-control.js';
3
5
 
4
6
  const HISTORY_PAGE_SIZE = 30;
5
7
  const REFRESH_INTERVAL_MS = 10_000;
@@ -792,9 +794,9 @@ export class GitPanelController {
792
794
 
793
795
  renderPanelModes() {
794
796
  return `
795
- <div class="ui-segmented-control ui-segmented-control--pill git-panel-mode-switch" role="tablist" aria-label="Git panel modes">
797
+ <div class="${segmentedControlClassNames({ pill: true, extra: 'git-panel-mode-switch' })}" role="tablist" aria-label="Git panel modes">
796
798
  <button
797
- class="ui-segmented-btn git-panel-mode-btn${this.panelMode === 'changes' ? ' active' : ''}"
799
+ class="${segmentedButtonClassNames({ active: this.panelMode === 'changes', extra: 'git-panel-mode-btn' })}"
798
800
  type="button"
799
801
  data-git-panel-mode="changes"
800
802
  aria-selected="${this.panelMode === 'changes'}"
@@ -802,7 +804,7 @@ export class GitPanelController {
802
804
  Changes
803
805
  </button>
804
806
  <button
805
- class="ui-segmented-btn git-panel-mode-btn${this.panelMode === 'history' ? ' active' : ''}"
807
+ class="${segmentedButtonClassNames({ active: this.panelMode === 'history', extra: 'git-panel-mode-btn' })}"
806
808
  type="button"
807
809
  data-git-panel-mode="history"
808
810
  aria-selected="${this.panelMode === 'history'}"
@@ -868,7 +870,7 @@ export class GitPanelController {
868
870
  ${this.history.hasMore ? `
869
871
  <div class="git-history-footer">
870
872
  <button
871
- class="ui-button ui-button--compact ui-action-button ui-action-button--surface btn btn-secondary git-history-load-more"
873
+ class="${buttonClassNames({ variant: 'secondary', size: 'compact', action: true, surface: true, extra: 'git-history-load-more' })}"
872
874
  type="button"
873
875
  data-git-history-load-more
874
876
  ${this.history.loadingMore ? 'disabled' : ''}
@@ -896,12 +898,12 @@ export class GitPanelController {
896
898
  ${hasChanges ? `
897
899
  <div class="git-panel-footer">
898
900
  <div class="git-panel-footer-actions">
899
- <button class="ui-button ui-button--compact ui-action-button ui-action-button--surface btn btn-secondary" type="button" data-git-view-all>
901
+ <button class="${buttonClassNames({ variant: 'secondary', size: 'compact', action: true, surface: true })}" type="button" data-git-view-all>
900
902
  <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M2 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>
901
903
  View Full Diff
902
904
  </button>
903
905
  <button
904
- class="ui-button ui-action-button ui-action-button--wide btn btn-primary git-footer-commit-btn"
906
+ class="${buttonClassNames({ variant: 'primary', action: true, wide: true, extra: 'git-footer-commit-btn' })}"
905
907
  type="button"
906
908
  data-git-commit-staged
907
909
  ${!hasStagedChanges || isCommitPending ? 'disabled' : ''}
@@ -953,7 +955,7 @@ export class GitPanelController {
953
955
  </div>
954
956
  <div class="git-branch-actions" role="group" aria-label="Remote sync actions">
955
957
  <button
956
- class="ui-button ui-button--compact ui-pill-button ui-action-pill ui-action-pill--surface btn btn-secondary"
958
+ class="${buttonClassNames({ variant: 'secondary', size: 'compact', pill: true, surface: true, extra: 'ui-action-pill' })}"
957
959
  type="button"
958
960
  data-git-sync-action="pull"
959
961
  title="${hasUpstream ? 'Pull remote changes (fast-forward only)' : 'No upstream branch configured'}"
@@ -963,7 +965,7 @@ export class GitPanelController {
963
965
  ${isPullPending ? '...' : `${actionIconSvg('pull')}<span>Pull</span>`}
964
966
  </button>
965
967
  <button
966
- class="ui-button ui-button--compact ui-pill-button ui-action-pill ui-action-pill--surface btn btn-secondary"
968
+ class="${buttonClassNames({ variant: 'secondary', size: 'compact', pill: true, surface: true, extra: 'ui-action-pill' })}"
967
969
  type="button"
968
970
  data-git-sync-action="push"
969
971
  title="${hasUpstream ? 'Push local commits' : 'No upstream branch configured'}"
@@ -1,7 +1,12 @@
1
1
  export class LayoutController {
2
- constructor({ mobileBreakpointQuery = window.matchMedia('(max-width: 768px)'), onMeasureEditor }) {
2
+ constructor({
3
+ mobileBreakpointQuery = window.matchMedia('(max-width: 768px)'),
4
+ onMeasureEditor,
5
+ onViewRequest = null,
6
+ }) {
3
7
  this.mobileBreakpointQuery = mobileBreakpointQuery;
4
8
  this.onMeasureEditor = onMeasureEditor;
9
+ this.onViewRequest = onViewRequest;
5
10
  this.preferredView = 'split';
6
11
  this.mobileShowsEditor = !this.isMobileViewport();
7
12
  this.currentView = this.mobileShowsEditor ? this.preferredView : 'preview';
@@ -19,7 +24,13 @@ export class LayoutController {
19
24
 
20
25
  initialize() {
21
26
  this.viewButtons.forEach((button) => {
22
- button.addEventListener('click', () => this.setView(button.dataset.view));
27
+ button.addEventListener('click', () => {
28
+ if (this.onViewRequest?.(button.dataset.view) === false) {
29
+ return;
30
+ }
31
+
32
+ this.setView(button.dataset.view);
33
+ });
23
34
  });
24
35
 
25
36
  this.mobileToggleButton?.addEventListener('click', () => this.toggleMobileView());
@@ -27,6 +38,19 @@ export class LayoutController {
27
38
  this.restorePreferredView();
28
39
  }
29
40
 
41
+ primeView(view) {
42
+ if (!view) {
43
+ return;
44
+ }
45
+
46
+ if (this.isMobileViewport()) {
47
+ this.mobileShowsEditor = view !== 'preview';
48
+ return;
49
+ }
50
+
51
+ this.preferredView = view;
52
+ }
53
+
30
54
  reset() {
31
55
  this.restorePreferredView();
32
56
 
@@ -73,8 +97,14 @@ export class LayoutController {
73
97
  }
74
98
 
75
99
  toggleMobileView() {
76
- this.mobileShowsEditor = !this.mobileShowsEditor;
77
- this.applyView(this.mobileShowsEditor ? 'split' : 'preview');
100
+ const nextShowsEditor = !this.mobileShowsEditor;
101
+ const nextView = nextShowsEditor ? 'split' : 'preview';
102
+ if (this.onViewRequest?.(nextView) === false) {
103
+ return;
104
+ }
105
+
106
+ this.mobileShowsEditor = nextShowsEditor;
107
+ this.applyView(nextView);
78
108
  this.updateMobileToggleButton(this.mobileShowsEditor ? 'Preview' : 'Editor');
79
109
 
80
110
  if (this.mobileShowsEditor) {