collabmd 0.1.30 → 0.1.32

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 (427) hide show
  1. package/dist/client/assets/{CodeMirrorEditor-UCMRAMCV-tj0_ycIx.js → CodeMirrorEditor-UCMRAMCV-Bg0dawOb.js} +1 -1
  2. package/dist/client/assets/{_basePickBy-B6kIfhzj.js → _basePickBy-Dv0sK1l7.js} +1 -1
  3. package/dist/client/assets/{_baseUniq-Bbn0_sHS.js → _baseUniq-DKYX57ji.js} +1 -1
  4. package/dist/client/assets/{ar-SA-NXDWD63E-BWO5oYxe.js → ar-SA-NXDWD63E-WivLHHDW.js} +1 -1
  5. package/dist/client/assets/{arc-BIqum3oD.js → arc-DrfYGhWk.js} +1 -1
  6. package/dist/client/assets/architecture-PBZL5I3N-DiglIZi9.js +1 -0
  7. package/dist/client/assets/{architectureDiagram-2XIMDMQ5-BPG5b65m.js → architectureDiagram-2XIMDMQ5-kYbOThe4.js} +1 -1
  8. package/dist/client/assets/{az-AZ-MXSORGZV-Cfw6Z5oY.js → az-AZ-MXSORGZV-DOdq1TKC.js} +1 -1
  9. package/dist/client/assets/{bg-BG-O6MV2KSF-CQmG3YpD.js → bg-BG-O6MV2KSF-CYucKuDS.js} +1 -1
  10. package/dist/client/assets/{blockDiagram-WCTKOSBZ-F38TRzI3.js → blockDiagram-WCTKOSBZ-GIgTqnhk.js} +1 -1
  11. package/dist/client/assets/{bn-IN-MMW2ORAC-DZKVshfk.js → bn-BD-T2VJNT7N-2OKWLCYa.js} +1 -1
  12. package/dist/client/assets/{bn-BD-T2VJNT7N-C4S6DZ6o.js → bn-IN-MMW2ORAC-DYr8kqNL.js} +1 -1
  13. package/dist/client/assets/{c4Diagram-IC4MRINW-DHwxcDlQ.js → c4Diagram-IC4MRINW-CkHO1i_L.js} +1 -1
  14. package/dist/client/assets/{ca-ES-MKBCGNOG-Do3aMgyu.js → ca-ES-MKBCGNOG-B9Aeb43I.js} +1 -1
  15. package/dist/client/assets/channel-CgsU9TSN.js +1 -0
  16. package/dist/client/assets/{chunk-4BX2VUAB-BqEY6cCE.js → chunk-4BX2VUAB-2e7V-uuE.js} +1 -1
  17. package/dist/client/assets/{chunk-55IACEB6-039iVf6v.js → chunk-55IACEB6-CpncB3ru.js} +1 -1
  18. package/dist/client/assets/{chunk-7E7YKBS2-BreG0gYL.js → chunk-7E7YKBS2-TdU92i9i.js} +1 -1
  19. package/dist/client/assets/{chunk-7R4GIKGN-BMrp52Pk.js → chunk-7R4GIKGN-mqd2GwMg.js} +2 -2
  20. package/dist/client/assets/{chunk-C72U2L5F-BLB26v5d.js → chunk-C72U2L5F-CJKQWBtz.js} +1 -1
  21. package/dist/client/assets/{chunk-EGIJ26TM-fG-0Yh0k.js → chunk-EGIJ26TM-C4nq20om.js} +1 -1
  22. package/dist/client/assets/{chunk-FMBD7UC4-EWK5Pt4D.js → chunk-FMBD7UC4-CMahlBa_.js} +1 -1
  23. package/dist/client/assets/{chunk-GEFDOKGD-DYHmaq-c.js → chunk-GEFDOKGD-Bs7FmFox.js} +1 -1
  24. package/dist/client/assets/chunk-GLR3WWYH-qQe2O5VQ.js +2 -0
  25. package/dist/client/assets/chunk-HHEYEP7N-DlevL8bq.js +1 -0
  26. package/dist/client/assets/{chunk-JSJVCQXG-B69YGtcQ.js → chunk-JSJVCQXG-DPQ9cPJt.js} +1 -1
  27. package/dist/client/assets/{chunk-KX2RTZJC-tuEC7hg1.js → chunk-KX2RTZJC-BTiOJb7N.js} +1 -1
  28. package/dist/client/assets/{chunk-KYZI473N-D4r5eMJZ.js → chunk-KYZI473N-CTSCuqRb.js} +1 -1
  29. package/dist/client/assets/{chunk-L3YUKLVL-CD9nJYL8.js → chunk-L3YUKLVL-CJZMBtKF.js} +1 -1
  30. package/dist/client/assets/{chunk-MX3YWQON-DqN0TF5Q.js → chunk-MX3YWQON-DQpSwRf6.js} +1 -1
  31. package/dist/client/assets/{chunk-NQ4KR5QH-BBX89uUa.js → chunk-NQ4KR5QH-CMJKI6Oj.js} +1 -1
  32. package/dist/client/assets/{chunk-NU2UP6EN-CGeKI3BV.js → chunk-NU2UP6EN-DlUENSHU.js} +4 -4
  33. package/dist/client/assets/{chunk-O4XLMI2P-DaS3COAu.js → chunk-O4XLMI2P-CcVxZh41.js} +1 -1
  34. package/dist/client/assets/{chunk-OZEHJAEY-BaBXI-8x.js → chunk-OZEHJAEY-DjBZbgu0.js} +1 -1
  35. package/dist/client/assets/{chunk-PQ6SQG4A-BY9_Srs_.js → chunk-PQ6SQG4A-D1AbThjy.js} +1 -1
  36. package/dist/client/assets/{chunk-PU5JKC2W-t0zUh6E3.js → chunk-PU5JKC2W-D_6N6t8f.js} +1 -1
  37. package/dist/client/assets/chunk-QZHKN3VN-CgLPFSk5.js +1 -0
  38. package/dist/client/assets/{chunk-R5LLSJPH-BjSMFnTi.js → chunk-R5LLSJPH-CkjKXM73.js} +1 -1
  39. package/dist/client/assets/{chunk-WL4C6EOR-zSV-8h7F.js → chunk-WL4C6EOR-axcuKSup.js} +1 -1
  40. package/dist/client/assets/{chunk-XIRO2GV7-2tirYN5A.js → chunk-XIRO2GV7-4wqVHjs_.js} +1 -1
  41. package/dist/client/assets/{chunk-XPW4576I-C0GpOUHf.js → chunk-XPW4576I-DJr4_4Yy.js} +1 -1
  42. package/dist/client/assets/{chunk-XZSTWKYB-DDkpyNVE.js → chunk-XZSTWKYB-C8Y_hIKZ.js} +1 -1
  43. package/dist/client/assets/{chunk-YBOYWFTD-CzyyfGQX.js → chunk-YBOYWFTD-CKg4ymFF.js} +1 -1
  44. package/dist/client/assets/{chunk-Z5NKEFVG-Dgem5v98.js → chunk-Z5NKEFVG-HOkYqaKa.js} +1 -1
  45. package/dist/client/assets/classDiagram-VBA2DB6C-BHZpvOxK.js +1 -0
  46. package/dist/client/assets/classDiagram-v2-RAHNMMFH-DA7HMUUs.js +1 -0
  47. package/dist/client/assets/clone-Dgi8Z4IL.js +1 -0
  48. package/dist/client/assets/{cose-bilkent-S5V4N54A-jZzFUguD.js → cose-bilkent-S5V4N54A-DASO2hrk.js} +1 -1
  49. package/dist/client/assets/{cs-CZ-V77HGUP7-DmZRJ2UO.js → cs-CZ-V77HGUP7-BDg-F0CJ.js} +1 -1
  50. package/dist/client/assets/{da-DK-I5RFNTM4-CRIiLQ-G.js → da-DK-I5RFNTM4-wtSQ0Jxa.js} +1 -1
  51. package/dist/client/assets/{dagre-fvYjRtTE.js → dagre-CfB3Fw33.js} +1 -1
  52. package/dist/client/assets/{dagre-KLK3FWXG-CAG8WeES.js → dagre-KLK3FWXG-CC7tq2Ky.js} +1 -1
  53. package/dist/client/assets/{de-DE-DTI4WUSC-MFge9MC3.js → de-CH-WLRDEVBV-C1swvmZy.js} +1 -1
  54. package/dist/client/assets/{de-CH-WLRDEVBV-k728UA4j.js → de-DE-DTI4WUSC-C0L6Nz8X.js} +1 -1
  55. package/dist/client/assets/{diagram-E7M64L7V-Bm5FD0I5.js → diagram-E7M64L7V-CMt7BN5M.js} +1 -1
  56. package/dist/client/assets/{diagram-IFDJBPK2-pqicH-av.js → diagram-IFDJBPK2-BFMBUGpd.js} +1 -1
  57. package/dist/client/assets/{diagram-P4PSJMXO-DwIXO27H.js → diagram-P4PSJMXO-CviA1xXr.js} +1 -1
  58. package/dist/client/assets/dist-8Igu3Ee_2.js +1 -0
  59. package/dist/client/assets/dist-B4uQVR_X.js +1 -0
  60. package/dist/client/assets/{dockerfile-C0qQqxf9.js → dockerfile-D8_6_FRV.js} +1 -1
  61. package/dist/client/assets/{drawio-editor-CTZtMo1J.js → drawio-editor-Br4qyh3r.js} +1 -1
  62. package/dist/client/assets/drawioEditor-ClmnTx5J.js +2 -0
  63. package/dist/client/assets/editor-session-Cf-iV5-3.js +16 -0
  64. package/dist/client/assets/{el-GR-ZXDJ2OS4-Bbz93mrG.js → el-GR-ZXDJ2OS4-BH0saXds.js} +1 -1
  65. package/dist/client/assets/embedded-editor-base-CgEkjNYn.css +1 -0
  66. package/dist/client/assets/{en-IQZW2TQM-CZeIyvu2.js → en-IQZW2TQM-CzlcEpq3.js} +1 -1
  67. package/dist/client/assets/{erDiagram-INFDFZHY-DlhPv4az.js → erDiagram-INFDFZHY-DlIf-fb7.js} +1 -1
  68. package/dist/client/assets/{es-ES-DYQHAD43-CReXU-Nn.js → es-ES-DYQHAD43-CyzL9Mni.js} +1 -1
  69. package/dist/client/assets/{eu-ES-QDSYU5Y3-jRpcaWwz.js → eu-ES-QDSYU5Y3-D2-x316S.js} +1 -1
  70. package/dist/client/assets/{excalidraw-editor-CBEWfuhb.js → excalidraw-editor-CXAxVhlw.js} +2 -2
  71. package/dist/client/assets/{excalidraw-mermaid-stub-efoh2lJm.js → excalidraw-mermaid-stub-Bwe-bKcT.js} +1 -1
  72. package/dist/client/assets/{excalidraw-scene-BL-OtvCd.js → excalidraw-scene-BF_bT1OL.js} +8 -8
  73. package/dist/client/assets/excalidrawEditor-DoH_kMdu.js +2 -0
  74. package/dist/client/assets/export-page-PeexH2QK.js +39 -0
  75. package/dist/client/assets/exportDocument-9wTrBZNS.css +1 -0
  76. package/dist/client/assets/exportDocument-Bia2hI25.js +2 -0
  77. package/dist/client/assets/{fa-IR-26LZG4PM-DP8pJ8e3.js → fa-IR-26LZG4PM-D8-trU2x.js} +1 -1
  78. package/dist/client/assets/{factor-2uy-lXe_.js → factor-Cz-hzBGH.js} +1 -1
  79. package/dist/client/assets/{fi-FI-6YS4KDE4-BLUDpNOj.js → fi-FI-6YS4KDE4-CCdRVFDQ.js} +1 -1
  80. package/dist/client/assets/file-kind-DBptLlF_.js +1 -0
  81. package/dist/client/assets/{flowDiagram-PKNHOUZH-BU4MOSq8.js → flowDiagram-PKNHOUZH-C_t-mkwb.js} +1 -1
  82. package/dist/client/assets/{fr-FR-BRLLPTZC-BoZz3Pi8.js → fr-FR-BRLLPTZC-Dqq-O5T_.js} +1 -1
  83. package/dist/client/assets/{ganttDiagram-A5KZAMGK-CbX67lZu.js → ganttDiagram-A5KZAMGK-BtK9Tb--.js} +1 -1
  84. package/dist/client/assets/gitGraph-HDMCJU4V-CT7YfbD3.js +1 -0
  85. package/dist/client/assets/{gitGraphDiagram-K3NZZRJ6-DhyvWcW1.js → gitGraphDiagram-K3NZZRJ6-DULDLGiJ.js} +1 -1
  86. package/dist/client/assets/{gl-ES-OKUZTLYG-CaEvhjDi.js → gl-ES-OKUZTLYG-BK7pbLbm.js} +1 -1
  87. package/dist/client/assets/{graphlib-DSzYgMXB.js → graphlib-BgRST-Qg.js} +1 -1
  88. package/dist/client/assets/{he-IL-26MGYIU7-DYOchgy9.js → he-IL-26MGYIU7-C3BuYKyY.js} +1 -1
  89. package/dist/client/assets/{hi-IN-Q4ZOGTP2-yRs8g46n.js → hi-IN-Q4ZOGTP2-BEvXWXnH.js} +1 -1
  90. package/dist/client/assets/{hu-HU-P2OXPSN5-1skPmtgc.js → hu-HU-P2OXPSN5-BWWZeJNp.js} +1 -1
  91. package/dist/client/assets/{id-ID-2EIKXYN6-iUugQJd9.js → id-ID-2EIKXYN6-DxSKi_aJ.js} +1 -1
  92. package/dist/client/assets/image-XLNPCCAD-CFiKwiWK.js +1 -0
  93. package/dist/client/assets/{index-CywRKxsk.js → index-C8QZYHvV.js} +2 -2
  94. package/dist/client/assets/index-CxSbUTs2.css +1 -0
  95. package/dist/client/assets/info-3K5VOQVL-DUpNyDC-.js +1 -0
  96. package/dist/client/assets/{infoDiagram-LFFYTUFH-Bap6MyHX.js → infoDiagram-LFFYTUFH-DFTI0nfs.js} +1 -1
  97. package/dist/client/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  98. package/dist/client/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  99. package/dist/client/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  100. package/dist/client/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  101. package/dist/client/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  102. package/dist/client/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  103. package/dist/client/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  104. package/dist/client/assets/{isEmpty-C7iPDOO3.js → isEmpty-CVvRj8fj.js} +1 -1
  105. package/dist/client/assets/{ishikawaDiagram-PHBUUO56-DbftskqN.js → ishikawaDiagram-PHBUUO56-DpBuDpC6.js} +1 -1
  106. package/dist/client/assets/{it-IT-4CFKVXI2-a5DFhzuI.js → it-IT-4CFKVXI2-BmA8wW6q.js} +1 -1
  107. package/dist/client/assets/{ja-JP-MAND2Z4V-DwogHVKd.js → ja-JP-MAND2Z4V-CLS1jI9o.js} +1 -1
  108. package/dist/client/assets/javascript-UJe68_xi.js +1 -0
  109. package/dist/client/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2 +0 -0
  110. package/dist/client/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff +0 -0
  111. package/dist/client/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff +0 -0
  112. package/dist/client/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2 +0 -0
  113. package/dist/client/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
  114. package/dist/client/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
  115. package/dist/client/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2 +0 -0
  116. package/dist/client/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff +0 -0
  117. package/dist/client/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff +0 -0
  118. package/dist/client/assets/{journeyDiagram-4ABVD52K-165YoX6B.js → journeyDiagram-4ABVD52K-DDur6iHm.js} +1 -1
  119. package/dist/client/assets/{kaa-HQRTCXTJ-p81XNRfH.js → kaa-HQRTCXTJ-W15DEDPz.js} +1 -1
  120. package/dist/client/assets/{kab-KAB-JKIKKTGH-mV5VzQZc.js → kab-KAB-JKIKKTGH-MLh1inqS.js} +1 -1
  121. package/dist/client/assets/{kanban-definition-K7BYSVSG-MlixoNyx.js → kanban-definition-K7BYSVSG-dA6NPLsg.js} +1 -1
  122. package/dist/client/assets/{kk-KZ-HXQ63ZFC-IIPX0GQv.js → kk-KZ-HXQ63ZFC-BtFrPeLs.js} +1 -1
  123. package/dist/client/assets/{km-KH-PKL3LSGX-D7WQFJuZ.js → km-KH-PKL3LSGX-xO5FyM9T.js} +1 -1
  124. package/dist/client/assets/{ko-KR-KXLREZX3-Bs1oLtJs.js → ko-KR-KXLREZX3-NZFoRybS.js} +1 -1
  125. package/dist/client/assets/{ku-TR-MJ4IER3X-DlxOs6aZ.js → ku-TR-MJ4IER3X-B5eVPIpK.js} +1 -1
  126. package/dist/client/assets/{line-D57TbKb7.js → line-B2GMovaI.js} +1 -1
  127. package/dist/client/assets/{linear-BIf852wI.js → linear-B2dOdA24.js} +1 -1
  128. package/dist/client/assets/{lt-LT-H6WFQ6FJ-xuo-3zKH.js → lt-LT-H6WFQ6FJ-D_7_OeJD.js} +1 -1
  129. package/dist/client/assets/{lv-LV-GOCK6SJW-C7S3M1nr.js → lv-LV-GOCK6SJW-CnpKr0oQ.js} +1 -1
  130. package/dist/client/assets/main-BjHHMlv0.js +1249 -0
  131. package/dist/client/assets/{mermaid-parser.core-lf87rdG-.js → mermaid-parser.core-B1ogGcR8.js} +2 -2
  132. package/dist/client/assets/{mermaid-runtime-C4a7TrTS.js → mermaid-runtime-Bn8A6DGx.js} +3 -3
  133. package/dist/client/assets/{mindmap-definition-YRQLILUH-_YbQSc4Q.js → mindmap-definition-YRQLILUH-DjQcsPoe.js} +1 -1
  134. package/dist/client/assets/{mr-IN-IXVLDMEQ-BsoowyZT.js → mr-IN-IXVLDMEQ-Pht2X_GK.js} +1 -1
  135. package/dist/client/assets/{my-MM-YG6MYTTD-DCqwN_K_.js → my-MM-YG6MYTTD-Cgq4HhPO.js} +1 -1
  136. package/dist/client/assets/{nb-NO-XGWJISD2-CZ5ytLgj.js → nb-NO-XGWJISD2-Bn_Bk2un.js} +1 -1
  137. package/dist/client/assets/{nl-NL-XVDVCPNC-wADsdb-h.js → nl-NL-XVDVCPNC-YkWSJS94.js} +1 -1
  138. package/dist/client/assets/{nn-NO-EMX5MJX5-D9zIKTL2.js → nn-NO-EMX5MJX5-DhP5eZJ7.js} +1 -1
  139. package/dist/client/assets/{nsis-CUd4RnvJ.js → nsis-QPGhLAeY.js} +1 -1
  140. package/dist/client/assets/{oc-FR-ROEINTVO-BSbBugJB.js → oc-FR-ROEINTVO-D3udMPnr.js} +1 -1
  141. package/dist/client/assets/{ordinal-B0PAtOQ6.js → ordinal-Dz3y_j0K.js} +1 -1
  142. package/dist/client/assets/{pa-IN-ZYN6SUDY-1pFA_3Pb.js → pa-IN-ZYN6SUDY-CR5YzFig.js} +1 -1
  143. package/dist/client/assets/packet-RMMSAZCW-DEwNbIrA.js +1 -0
  144. package/dist/client/assets/percentages-5DKR754L-D7n4T776.js +1 -0
  145. package/dist/client/assets/pie-UPGHQEXC-D5M_lSjo.js +1 -0
  146. package/dist/client/assets/{pieDiagram-SKSYHLDU-CqCgXFom.js → pieDiagram-SKSYHLDU-jhHouFpk.js} +1 -1
  147. package/dist/client/assets/{pl-PL-6VTG7PHC-DyYw0u_z.js → pl-PL-6VTG7PHC-_wZuoIDM.js} +1 -1
  148. package/dist/client/assets/preview-render-compiler-BjLlHmiQ.js +35 -0
  149. package/dist/client/assets/preview-render-compiler-Duy_3IcP.js +1 -0
  150. package/dist/client/assets/{preview-render-worker-BVbVXXPS.js → preview-render-worker-B4dH2yxj.js} +22 -22
  151. package/dist/client/assets/{pt-BR-5YFKRR5G-DJCCBBDl.js → pt-BR-5YFKRR5G-M7gIm2Hi.js} +1 -1
  152. package/dist/client/assets/{pt-PT-GEIXXZ67-BPJd09Ax.js → pt-PT-GEIXXZ67-CcxWpkGj.js} +1 -1
  153. package/dist/client/assets/{pug-BqBF8qF7.js → pug-DkUcLYWt.js} +1 -1
  154. package/dist/client/assets/{quadrantDiagram-337W2JSQ-B8eMuhg4.js → quadrantDiagram-337W2JSQ-CYKgdx7K.js} +1 -1
  155. package/dist/client/assets/quick-switcher-controller-DcyllYpm.js +5 -0
  156. package/dist/client/assets/radar-KQ55EAFF-AU1qh3Bw.js +1 -0
  157. package/dist/client/assets/{requirementDiagram-Z7DCOOCP-B6POvqz4.js → requirementDiagram-Z7DCOOCP-D9SHxoW7.js} +1 -1
  158. package/dist/client/assets/{ro-RO-E2P6TFZI-DWVyTV7V.js → ro-RO-E2P6TFZI-qR9noVzP.js} +1 -1
  159. package/dist/client/assets/{room-COWSP--i.js → room-yJaBAoEU.js} +1 -1
  160. package/dist/client/assets/{ru-RU-YBIIY43T-Dyar7CYM.js → ru-RU-YBIIY43T-CE4S_RX8.js} +1 -1
  161. package/dist/client/assets/{sankeyDiagram-WA2Y5GQK-CXRga6Op.js → sankeyDiagram-WA2Y5GQK-CfHe3D6R.js} +1 -1
  162. package/dist/client/assets/{sequenceDiagram-2WXFIKYE-CeSFlFx5.js → sequenceDiagram-2WXFIKYE-CZsMMqAJ.js} +1 -1
  163. package/dist/client/assets/{si-LK-673C2CI2-C61aLrIy.js → si-LK-673C2CI2-Bv6Avh3z.js} +1 -1
  164. package/dist/client/assets/{sk-SK-CKZHQ4AP-BlFwOxRD.js → sk-SK-CKZHQ4AP-Cnlpp55z.js} +1 -1
  165. package/dist/client/assets/{sl-SI-557H2GWM-DcAVW-_t.js → sl-SI-557H2GWM-BfGq7AQF.js} +1 -1
  166. package/dist/client/assets/{stateDiagram-RAJIS63D-DbewhqwJ.js → stateDiagram-RAJIS63D-CoNZjTYV.js} +1 -1
  167. package/dist/client/assets/stateDiagram-v2-FVOUBMTO-1zOw6NmQ.js +1 -0
  168. package/dist/client/assets/subset-shared.chunk-C9HjwTXy.js +1 -0
  169. package/dist/client/assets/{subset-worker.chunk-DVGT6bvR.js → subset-worker.chunk-BSCP6IiC.js} +1 -1
  170. package/dist/client/assets/{sv-SE-XOPKKDWS-BkhfOHzh.js → sv-SE-XOPKKDWS-B2_Vk-sp.js} +1 -1
  171. package/dist/client/assets/{ta-IN-XBH7DQI3-BIfwglZa.js → ta-IN-XBH7DQI3-BXQMZZIx.js} +1 -1
  172. package/dist/client/assets/{th-TH-TOCWH3R4-CkrxqVkf.js → th-TH-TOCWH3R4-C-ZIYMfH.js} +1 -1
  173. package/dist/client/assets/{timeline-definition-YZTLITO2-BXBHNWLQ.js → timeline-definition-YZTLITO2-DSe2mrG8.js} +1 -1
  174. package/dist/client/assets/{tr-TR-GXW6CYY5-CDdvG9rD.js → tr-TR-GXW6CYY5-dl702PMA.js} +1 -1
  175. package/dist/client/assets/treemap-KZPCXAKY-C9UI2fwP.js +1 -0
  176. package/dist/client/assets/{uk-UA-IJKTNUDG-DRHp0lWp.js → uk-UA-IJKTNUDG-CUYQvSSF.js} +1 -1
  177. package/dist/client/assets/{uz-UZ-TBZZEA4V-BIn-VE3Y.js → uz-UZ-TBZZEA4V-B9qw0PXX.js} +1 -1
  178. package/dist/client/assets/vault-api-client-Bf9tB_GW.js +1 -0
  179. package/dist/client/assets/vault-api-client-D7Ck0CvR.css +1 -0
  180. package/dist/client/assets/vault-utils-5Xr0MXCb.js +1 -0
  181. package/dist/client/assets/{vennDiagram-LZ73GAT5-C1hrSbf2.js → vennDiagram-LZ73GAT5-xSzaIpy1.js} +1 -1
  182. package/dist/client/assets/{vi-VN-MULSGNVB-Du7t5I0v.js → vi-VN-MULSGNVB-DqxZ_sVc.js} +1 -1
  183. package/dist/client/assets/{xychartDiagram-JWTSCODW-DhpWp8LV.js → xychartDiagram-JWTSCODW-C3vA70iJ.js} +1 -1
  184. package/dist/client/assets/{zh-CN-MVX3E32U-RcjS3rjt.js → zh-CN-MVX3E32U-BM0aLuGc.js} +1 -1
  185. package/dist/client/assets/{zh-HK-JNU5RLIE-g8UeEw5v.js → zh-HK-JNU5RLIE-dmG_YD0d.js} +1 -1
  186. package/dist/client/assets/{zh-TW-LENVCA6T-DwV25BqC.js → zh-TW-LENVCA6T-LFgbiOi3.js} +1 -1
  187. package/dist/client/drawio-editor.html +1 -1
  188. package/dist/client/excalidraw-editor.html +1 -1
  189. package/dist/client/export-document.html +3 -3
  190. package/dist/client/index.html +2 -2
  191. package/package.json +5 -1
  192. package/src/client/app/export-document.html +1 -1
  193. package/src/client/app/main-entry.js +2 -0
  194. package/src/client/application/app-shell/git-feature.js +28 -36
  195. package/src/client/application/app-shell/presence-feature.js +3 -1
  196. package/src/client/application/app-shell/workspace-feature.js +9 -0
  197. package/src/client/application/app-shell-elements.js +1 -0
  198. package/src/client/application/diagram-preview-hydrator.js +24 -15
  199. package/src/client/application/markdown-frontmatter.js +1 -56
  200. package/src/client/application/mermaid-preview-hydrator.js +121 -4
  201. package/src/client/application/plantuml-preview-hydrator.js +6 -16
  202. package/src/client/application/preview-render-compiler.js +50 -6
  203. package/src/client/application/preview-renderer.js +11 -2
  204. package/src/client/application/workspace-chrome-controller.js +25 -19
  205. package/src/client/application/workspace-coordinator.js +9 -0
  206. package/src/client/application/workspace-preview-controller.js +48 -3
  207. package/src/client/bootstrap/collabmd-app-shell.js +202 -52
  208. package/src/client/domain/excalidraw-document-switch.js +3 -0
  209. package/src/client/domain/vault-paths.js +19 -0
  210. package/src/client/excalidraw-editor.js +187 -84
  211. package/src/client/export/export-page.js +11 -3
  212. package/src/client/export/export-pipeline.js +77 -2
  213. package/src/client/infrastructure/auth-client.js +4 -4
  214. package/src/client/infrastructure/backlinks-api-client.js +18 -0
  215. package/src/client/infrastructure/comment-thread-store.js +4 -0
  216. package/src/client/infrastructure/editor-session.js +2 -0
  217. package/src/client/infrastructure/editor-view-adapter.js +8 -5
  218. package/src/client/infrastructure/git-api-client.js +134 -0
  219. package/src/client/infrastructure/plantuml-api-client.js +21 -0
  220. package/src/client/infrastructure/vault-api-client.js +121 -0
  221. package/src/client/presentation/app-shell-template.js +12 -0
  222. package/src/client/presentation/backlinks-panel.js +43 -20
  223. package/src/client/presentation/bases-preview-controller.js +463 -0
  224. package/src/client/presentation/excalidraw-embed-controller.js +251 -15
  225. package/src/client/presentation/excalidraw-embed-reconciler.js +0 -1
  226. package/src/client/presentation/file-action-controller.js +140 -0
  227. package/src/client/presentation/file-explorer-controller.js +2 -0
  228. package/src/client/presentation/file-explorer-view.js +378 -2
  229. package/src/client/presentation/file-history-view-controller.js +41 -40
  230. package/src/client/presentation/file-tree-state.js +9 -1
  231. package/src/client/presentation/git-diff-view-controller.js +70 -53
  232. package/src/client/presentation/git-panel-controller.js +12 -30
  233. package/src/client/presentation/quick-switcher-controller.js +54 -13
  234. package/src/client/styles/export-document.css +55 -0
  235. package/src/client/styles/features/auth-gate.css +13 -24
  236. package/src/client/styles/features/backlinks.css +65 -3
  237. package/src/client/styles/features/comment-card.css +6 -0
  238. package/src/client/styles/features/comments-drawer.css +38 -18
  239. package/src/client/styles/features/diagram-preview.css +33 -0
  240. package/src/client/styles/features/embedded-preview.css +37 -11
  241. package/src/client/styles/features/preview-markdown.css +285 -1
  242. package/src/client/styles/foundation/themes.css +4 -0
  243. package/src/client/styles/foundation/tokens.css +4 -3
  244. package/src/client/styles/layout/shell.css +8 -1
  245. package/src/client/styles/layout/sidebar.css +72 -0
  246. package/src/client/styles/layout/view-modes.css +5 -0
  247. package/src/domain/file-kind.js +17 -2
  248. package/src/domain/wiki-link-resolver.js +41 -23
  249. package/src/domain/yaml-frontmatter.js +59 -0
  250. package/src/server/auth/auth-common.js +224 -0
  251. package/src/server/auth/auth-constants.js +30 -0
  252. package/src/server/auth/auth-strategies.js +320 -0
  253. package/src/server/auth/create-auth-service.js +24 -545
  254. package/src/server/create-app-server.js +11 -2
  255. package/src/server/domain/backlink-index.js +102 -16
  256. package/src/server/domain/bases/base-definition.js +255 -0
  257. package/src/server/domain/bases/base-expression-runtime.js +1159 -0
  258. package/src/server/domain/bases/base-index-snapshot-store.js +418 -0
  259. package/src/server/domain/bases/base-query-results.js +205 -0
  260. package/src/server/domain/bases/base-query-service.js +204 -0
  261. package/src/server/domain/collaboration/collaboration-document-store.js +13 -2
  262. package/src/server/domain/collaboration/collaboration-room.js +36 -1
  263. package/src/server/domain/collaboration/room-client-state-store.js +1 -0
  264. package/src/server/domain/collaboration/room-persistence-controller.js +1 -1
  265. package/src/server/domain/workspace-state.js +52 -0
  266. package/src/server/infrastructure/http/create-request-handler.js +2 -0
  267. package/src/server/infrastructure/http/create-vault-api-command-handler.js +5 -0
  268. package/src/server/infrastructure/http/create-vault-api-handler.js +2 -0
  269. package/src/server/infrastructure/http/create-vault-api-query-handler.js +175 -1
  270. package/src/server/infrastructure/http/http-response.js +56 -0
  271. package/src/server/infrastructure/persistence/path-utils.js +1 -1
  272. package/src/server/infrastructure/persistence/vault-content-adapter.js +6 -0
  273. package/src/server/infrastructure/persistence/vault-file-store.js +124 -0
  274. package/src/server/infrastructure/workspace/file-system-sync-service.js +110 -19
  275. package/src/server/infrastructure/workspace/workspace-mutation-coordinator.js +15 -44
  276. package/dist/client/assets/architecture-PBZL5I3N-iRyVT2GQ.js +0 -1
  277. package/dist/client/assets/channel-s0w88EQN.js +0 -1
  278. package/dist/client/assets/chunk-GLR3WWYH-CQ1LryrI.js +0 -2
  279. package/dist/client/assets/chunk-HHEYEP7N-DOQ0PCdH.js +0 -1
  280. package/dist/client/assets/chunk-QZHKN3VN-B0v4d-CS.js +0 -1
  281. package/dist/client/assets/classDiagram-VBA2DB6C-BQqG4q1b.js +0 -1
  282. package/dist/client/assets/classDiagram-v2-RAHNMMFH-BUKbprX1.js +0 -1
  283. package/dist/client/assets/clone-C-n46MFF.js +0 -1
  284. package/dist/client/assets/dist-BqQjnEWr.js +0 -1
  285. package/dist/client/assets/drawioEditor-keSJVTcv.js +0 -2
  286. package/dist/client/assets/editor-session-C9l9XwVg.js +0 -16
  287. package/dist/client/assets/embedded-editor-base-DgmRcsR8.css +0 -1
  288. package/dist/client/assets/excalidrawEditor-Ws-fwGOc.js +0 -2
  289. package/dist/client/assets/export-page-B6xYnwy7.js +0 -39
  290. package/dist/client/assets/exportDocument-8JBw0p8O.js +0 -2
  291. package/dist/client/assets/exportDocument-CtX_4PSk.css +0 -1
  292. package/dist/client/assets/gitGraph-HDMCJU4V-kkuqHGSM.js +0 -1
  293. package/dist/client/assets/image-XLNPCCAD-B4wZgh-Y.js +0 -1
  294. package/dist/client/assets/index-R4OArFku.css +0 -1
  295. package/dist/client/assets/info-3K5VOQVL-DPN78whf.js +0 -1
  296. package/dist/client/assets/javascript-8DvdgifH.js +0 -1
  297. package/dist/client/assets/main-CB97rY6B.js +0 -1213
  298. package/dist/client/assets/packet-RMMSAZCW-BymvQ5cQ.js +0 -1
  299. package/dist/client/assets/percentages-5DKR754L-CiI2D7zA.js +0 -1
  300. package/dist/client/assets/pie-UPGHQEXC-MmzJzWOE.js +0 -1
  301. package/dist/client/assets/preview-render-compiler-TmHpBDlh.js +0 -1
  302. package/dist/client/assets/preview-render-compiler-aYpnXmNm.js +0 -35
  303. package/dist/client/assets/quick-switcher-controller-DplOTsT3.js +0 -5
  304. package/dist/client/assets/radar-KQ55EAFF-CCohASSY.js +0 -1
  305. package/dist/client/assets/stateDiagram-v2-FVOUBMTO-DbW-jVkS.js +0 -1
  306. package/dist/client/assets/subset-shared.chunk-CC_u8ICU.js +0 -1
  307. package/dist/client/assets/treemap-KZPCXAKY-9kxB0uNY.js +0 -1
  308. package/dist/client/assets/vault-api-client-DIaCC56H.js +0 -1
  309. package/dist/client/assets/vault-api-client-De7kMvrE.css +0 -1
  310. package/dist/client/assets/vault-utils-BW53lKl1.js +0 -1
  311. /package/dist/client/assets/{apl-QJCYYBkj.js → apl-C1JYSI8J.js} +0 -0
  312. /package/dist/client/assets/{array-DwdVlTkF.js → array-B3agRrCs.js} +0 -0
  313. /package/dist/client/assets/{asciiarmor-DNy0UPqh.js → asciiarmor-DHW75j1s.js} +0 -0
  314. /package/dist/client/assets/{asn1-CNPXj-s7.js → asn1-CQiG40kG.js} +0 -0
  315. /package/dist/client/assets/{asterisk-BwMdLpT2.js → asterisk-BWExh0n4.js} +0 -0
  316. /package/dist/client/assets/{brainfuck-C2gHT8aA.js → brainfuck-CTNFyOLg.js} +0 -0
  317. /package/dist/client/assets/{chunk-3PELD44J-CL87tpFo.js → chunk-3PELD44J-DymL2rGq.js} +0 -0
  318. /package/dist/client/assets/{chunk-A66AFZZU-DuceaGnc.js → chunk-A66AFZZU-BFHL744F.js} +0 -0
  319. /package/dist/client/assets/{chunk-AXZTUZBK-Cxfm7hmm.js → chunk-AXZTUZBK-DuMiJYO9.js} +0 -0
  320. /package/dist/client/assets/{chunk-SRAX5OIU-CC2mobFL.js → chunk-SRAX5OIU-CLVBQRWC.js} +0 -0
  321. /package/dist/client/assets/{clike-D5X7HJpo.js → clike-1_ZsiVV8.js} +0 -0
  322. /package/dist/client/assets/{clojure-BEDKZv_5.js → clojure-D-DYVqu7.js} +0 -0
  323. /package/dist/client/assets/{cmake-Y3shE7av.js → cmake-DtGL-Unu.js} +0 -0
  324. /package/dist/client/assets/{cobol-f-3TLk62.js → cobol-DP4QggbL.js} +0 -0
  325. /package/dist/client/assets/{coffeescript-C0XA9-xa.js → coffeescript-B_7eyHAa.js} +0 -0
  326. /package/dist/client/assets/{commonlisp-BOB6sIEu.js → commonlisp-COlJYiQT.js} +0 -0
  327. /package/dist/client/assets/{crystal-ByNgE_My.js → crystal-I_dE9xG-.js} +0 -0
  328. /package/dist/client/assets/{css-eaI-ENiR.js → css-CmhPNxBE.js} +0 -0
  329. /package/dist/client/assets/{cypher-CQ-dGGSi.js → cypher-DE6I2lIA.js} +0 -0
  330. /package/dist/client/assets/{cytoscape.esm-DBDRhUia.js → cytoscape.esm-Czjc507F.js} +0 -0
  331. /package/dist/client/assets/{d-D9pnu4Cr.js → d-BNkKjn0o.js} +0 -0
  332. /package/dist/client/assets/{defaultLocale-BWgun1yJ.js → defaultLocale-B_FbTTbl.js} +0 -0
  333. /package/dist/client/assets/{diff-z9q33Lo6.js → diff-BWuPUsEo.js} +0 -0
  334. /package/dist/client/assets/{dist-xO1ImhKz.js → dist-BU8uusJX.js} +0 -0
  335. /package/dist/client/assets/{dist-CsYRf4AV.js → dist-x7PIEmJu.js} +0 -0
  336. /package/dist/client/assets/{drawio-room-C592VDk7.js → drawio-room-DEivFyNV.js} +0 -0
  337. /package/dist/client/assets/{dtd-BDizf_te.js → dtd-C6brJFPg.js} +0 -0
  338. /package/dist/client/assets/{dylan-Bk__XCKW.js → dylan-Bft86ZSB.js} +0 -0
  339. /package/dist/client/assets/{ebnf-SzN4Kxtp.js → ebnf-D6ifG44A.js} +0 -0
  340. /package/dist/client/assets/{ecl-5ulxiKbt.js → ecl-M7Iek4lq.js} +0 -0
  341. /package/dist/client/assets/{eiffel-Bhoaqbb6.js → eiffel-DwxtewZF.js} +0 -0
  342. /package/dist/client/assets/{elm-C3je846J.js → elm-B1TncobV.js} +0 -0
  343. /package/dist/client/assets/{erlang-Cgk9SIAz.js → erlang-BDJZNtt8.js} +0 -0
  344. /package/dist/client/assets/{excalidraw-mermaid-stub-B_2dv3Ll.js → excalidraw-mermaid-stub-BZPU4ZhU.js} +0 -0
  345. /package/dist/client/assets/{fcl-dvkZwp9p.js → fcl-BWKK0S4-.js} +0 -0
  346. /package/dist/client/assets/{forth-DmfSa3jN.js → forth-nvhcMz63.js} +0 -0
  347. /package/dist/client/assets/{fortran-BsZAiNnN.js → fortran-BZID-z10.js} +0 -0
  348. /package/dist/client/assets/{gas-DBpKE9ut.js → gas-DjQsZDGE.js} +0 -0
  349. /package/dist/client/assets/{gherkin-CceEbBs7.js → gherkin-S0kHlzux.js} +0 -0
  350. /package/dist/client/assets/{groovy-CxJnDvES.js → groovy-BEKazBrO.js} +0 -0
  351. /package/dist/client/assets/{haskell-CUSb34Xy.js → haskell-C6qH3-aI.js} +0 -0
  352. /package/dist/client/assets/{haxe-6EHO_h-N.js → haxe-BY9d_5nB.js} +0 -0
  353. /package/dist/client/assets/{http-C3qcBpvG.js → http-DG1Y9fpK.js} +0 -0
  354. /package/dist/client/assets/{idl-C95wIO2I.js → idl-B64p3NTJ.js} +0 -0
  355. /package/dist/client/assets/{image-blob-reduce.esm-BaW4gpT9.js → image-blob-reduce.esm-DriR2zT9.js} +0 -0
  356. /package/dist/client/assets/{init-Bjj5fg68.js → init-DtLQcSuO.js} +0 -0
  357. /package/dist/client/assets/{isArrayLikeObject-Cmt1CYnI.js → isArrayLikeObject-BId_dPHM.js} +0 -0
  358. /package/dist/client/assets/{javascript-aWB87b1w.js → javascript-CdiVhQeA.js} +0 -0
  359. /package/dist/client/assets/{jsx-runtime-DiaMmmG6.js → jsx-runtime-C2p7wRmT.js} +0 -0
  360. /package/dist/client/assets/{julia-DF9PPAXG.js → julia-B22G9Bym.js} +0 -0
  361. /package/dist/client/assets/{katex-BPsFnA3D.js → katex-CXYULLWy.js} +0 -0
  362. /package/dist/client/assets/{livescript-CnOyWwUY.js → livescript-CkcuHqeS.js} +0 -0
  363. /package/dist/client/assets/{lua-a0rEq19C.js → lua-kutgyRGY.js} +0 -0
  364. /package/dist/client/assets/{math-BaavbII8.js → math-B-LMBwub.js} +0 -0
  365. /package/dist/client/assets/{mathematica-CKUq0Ojc.js → mathematica-CKVhKnoY.js} +0 -0
  366. /package/dist/client/assets/{mbox-a-u2PLog.js → mbox-DANyzFJ2.js} +0 -0
  367. /package/dist/client/assets/{mirc-BOd43sOX.js → mirc-BVG2S5rO.js} +0 -0
  368. /package/dist/client/assets/{mllike-fHruGivh.js → mllike-C0p7lv48.js} +0 -0
  369. /package/dist/client/assets/{modelica-B0NJqf1C.js → modelica-vJ-Qa9jV.js} +0 -0
  370. /package/dist/client/assets/{mscgen-DJZ33SrF.js → mscgen-vUD-SWGJ.js} +0 -0
  371. /package/dist/client/assets/{mumps-DvMvHTxU.js → mumps-D0KfUTSd.js} +0 -0
  372. /package/dist/client/assets/{nginx-BVAs8laz.js → nginx-DkVceJrH.js} +0 -0
  373. /package/dist/client/assets/{ntriples-DrdyAZU1.js → ntriples-BBuCIfS0.js} +0 -0
  374. /package/dist/client/assets/{octave-_YqJ0g7E.js → octave-BTv2CqSQ.js} +0 -0
  375. /package/dist/client/assets/{oz-k7T3LoMr.js → oz-D8SjVDNU.js} +0 -0
  376. /package/dist/client/assets/{pascal-CftsTvte.js → pascal-T-tfhVyx.js} +0 -0
  377. /package/dist/client/assets/{path-BUmMWM1-.js → path-DIlZIGue.js} +0 -0
  378. /package/dist/client/assets/{perl-CbsLFc7A.js → perl-BDrCkHRd.js} +0 -0
  379. /package/dist/client/assets/{pica-By-YDy_B.js → pica-C1TdTz-C.js} +0 -0
  380. /package/dist/client/assets/{pig-C-jTwMS-.js → pig-BEyI4fPq.js} +0 -0
  381. /package/dist/client/assets/{powershell-DqXLgSHX.js → powershell-DtnFc6GG.js} +0 -0
  382. /package/dist/client/assets/{preview-diagram-utils-Dc83ucbv.js → preview-diagram-utils-COt-IYMD.js} +0 -0
  383. /package/dist/client/assets/{preview-render-profile-DPzmho7I.js → preview-render-profile-CR4dJZrp.js} +0 -0
  384. /package/dist/client/assets/{properties-05jaw55P.js → properties-DWUvbxV9.js} +0 -0
  385. /package/dist/client/assets/{protobuf-DThTsZQN.js → protobuf-CQGoYyfE.js} +0 -0
  386. /package/dist/client/assets/{puppet-DuHxMpoj.js → puppet-Dd-qWO3p.js} +0 -0
  387. /package/dist/client/assets/{python-BiE2VHJI.js → python-CZtTmYkS.js} +0 -0
  388. /package/dist/client/assets/{q-DH46YfNw.js → q-I27iQntV.js} +0 -0
  389. /package/dist/client/assets/{r-DmEm46kJ.js → r-DN_EydfL.js} +0 -0
  390. /package/dist/client/assets/{rough.esm-jZQkcmER.js → rough.esm-DE_lJ5Ge.js} +0 -0
  391. /package/dist/client/assets/{roundRect-CI6UmGg6.js → roundRect-BzEouiv_.js} +0 -0
  392. /package/dist/client/assets/{rpm-DILIIbRB.js → rpm-CjWxLM68.js} +0 -0
  393. /package/dist/client/assets/{ruby-2LcnHEMS.js → ruby-CB34f2Gf.js} +0 -0
  394. /package/dist/client/assets/{runtime-config-CqX_f_Q4.js → runtime-config-CqhchMC4.js} +0 -0
  395. /package/dist/client/assets/{sas-Bn81MKuB.js → sas-Bji4HDQq.js} +0 -0
  396. /package/dist/client/assets/{scheme-B8kPNbgd.js → scheme-C3elI80V.js} +0 -0
  397. /package/dist/client/assets/{shell-CGj6v8kb.js → shell-DUveK2Hb.js} +0 -0
  398. /package/dist/client/assets/{sieve-CfVNFN1K.js → sieve-2ogwMVx4.js} +0 -0
  399. /package/dist/client/assets/{simple-mode-_FSHdiXs.js → simple-mode-pOKc0mfx.js} +0 -0
  400. /package/dist/client/assets/{smalltalk-BpIFyCPt.js → smalltalk-BuGhc6lW.js} +0 -0
  401. /package/dist/client/assets/{solr-B7iFaetn.js → solr-DTxshpm8.js} +0 -0
  402. /package/dist/client/assets/{sparql-COhgMTFK.js → sparql-BOvq0dv7.js} +0 -0
  403. /package/dist/client/assets/{spreadsheet-BzuffEeg.js → spreadsheet-C6Vbtl9-.js} +0 -0
  404. /package/dist/client/assets/{sql-13lT5zDl.js → sql-DDFeQNTK.js} +0 -0
  405. /package/dist/client/assets/{src-E3c2cohN.js → src-Pgt9Gp65.js} +0 -0
  406. /package/dist/client/assets/{stex-BRSfZZYG.js → stex-CEwW0Q_0.js} +0 -0
  407. /package/dist/client/assets/{stylus-fFo0QRk_.js → stylus-D1SZIMDs.js} +0 -0
  408. /package/dist/client/assets/{swift-wb5gyb6a.js → swift-BCxe4-cw.js} +0 -0
  409. /package/dist/client/assets/{tcl-BJA7GgWY.js → tcl-SPk7uiDB.js} +0 -0
  410. /package/dist/client/assets/{textile-BQjiYu-x.js → textile-C48beRus.js} +0 -0
  411. /package/dist/client/assets/{tiddlywiki-D2vUXB6n.js → tiddlywiki-CiImjFLN.js} +0 -0
  412. /package/dist/client/assets/{tiki-BFhpdznG.js → tiki-HkXZ4BIW.js} +0 -0
  413. /package/dist/client/assets/{toml-DN06iQUw.js → toml-BmfpMy1_.js} +0 -0
  414. /package/dist/client/assets/{troff-DuQfjhPH.js → troff-BjbEOT5E.js} +0 -0
  415. /package/dist/client/assets/{ttcn-BCTy6d50.js → ttcn-NA-V4KnY.js} +0 -0
  416. /package/dist/client/assets/{ttcn-cfg-BYnZQqGa.js → ttcn-cfg-TPHncdGN.js} +0 -0
  417. /package/dist/client/assets/{turtle-BvN-Me9x.js → turtle-GBz_E4RG.js} +0 -0
  418. /package/dist/client/assets/{vb-DYk3wW9u.js → vb-C19AQWqO.js} +0 -0
  419. /package/dist/client/assets/{vbscript-BKI61VS6.js → vbscript-CHJk3s95.js} +0 -0
  420. /package/dist/client/assets/{velocity-BrtitHHA.js → velocity-Ya0P4sQU.js} +0 -0
  421. /package/dist/client/assets/{verilog-CjUx3yiL.js → verilog-C4wTycyo.js} +0 -0
  422. /package/dist/client/assets/{vhdl-CPWwYF4V.js → vhdl-Bwndeg44.js} +0 -0
  423. /package/dist/client/assets/{webidl-PiVOzma8.js → webidl-DttrYZRT.js} +0 -0
  424. /package/dist/client/assets/{xquery-CiTzM_oK.js → xquery-CEDTd8qs.js} +0 -0
  425. /package/dist/client/assets/{yacas-4QS9CntY.js → yacas-C7dxlPB0.js} +0 -0
  426. /package/dist/client/assets/{yjs-provider-reset-guard-DWGhQClh.js → yjs-provider-reset-guard-CtERLBID.js} +0 -0
  427. /package/dist/client/assets/{z80-BxidrTKR.js → z80-BqEfFSnA.js} +0 -0
@@ -21,17 +21,22 @@ import {
21
21
  parseSceneJson,
22
22
  sceneToInitialData,
23
23
  } from './domain/excalidraw-scene.js';
24
+ import {
25
+ normalizeDocumentMode,
26
+ } from './domain/excalidraw-document-switch.js';
24
27
  import { ensureClientAuthenticated } from './infrastructure/auth-client.js';
25
28
  import { ExcalidrawRoomClient } from './infrastructure/excalidraw-room-client.js';
26
29
  import { vaultApiClient } from './infrastructure/vault-api-client.js';
27
30
 
28
31
  const params = new URLSearchParams(window.location.search);
29
- const filePath = params.get('file');
30
32
  const isTestMode = params.get('test') === '1';
31
- const isPreviewMode = params.get('mode') === 'preview';
32
33
  const parentOrigin = window.location.origin;
33
34
  const syncTimeoutMs = Number.parseInt(params.get('syncTimeoutMs') || '', 10);
34
35
 
36
+ let currentDocument = {
37
+ filePath: params.get('file') || '',
38
+ mode: normalizeDocumentMode(params.get('mode')),
39
+ };
35
40
  let excalidrawAPI = null;
36
41
  let currentTheme = params.get('theme') || 'dark';
37
42
  let localAwarenessUser = resolveLocalAwarenessUser({
@@ -55,22 +60,104 @@ let apiStateCleanupCallbacks = [];
55
60
  let collaboratorRenderFrame = 0;
56
61
  let queuedCollaborators = null;
57
62
  let initialViewportFitPending = true;
58
- const roomClient = new ExcalidrawRoomClient({
59
- filePath,
60
- onCollaboratorsChange: (collaborators) => {
61
- if (!collabReady) {
62
- pendingCollaborators = collaborators;
63
- return;
64
- }
63
+ let roomClient = null;
64
+ let roomClientGeneration = 0;
65
+ let reactRoot = null;
65
66
 
66
- queueCollaboratorsRender(collaborators);
67
- },
68
- onRemoteSceneJson: (sceneJson) => {
69
- applySceneFromJson(sceneJson);
70
- },
71
- syncTimeoutMs: Number.isFinite(syncTimeoutMs) ? syncTimeoutMs : undefined,
72
- vaultClient: vaultApiClient,
73
- });
67
+ function getDocumentViewState(mode = currentDocument.mode) {
68
+ const normalizedMode = normalizeDocumentMode(mode);
69
+ return {
70
+ viewModeEnabled: normalizedMode === 'preview',
71
+ zenModeEnabled: normalizedMode === 'preview',
72
+ };
73
+ }
74
+
75
+ function createRoomClient(filePath) {
76
+ const generation = ++roomClientGeneration;
77
+ const client = new ExcalidrawRoomClient({
78
+ filePath,
79
+ onCollaboratorsChange: (collaborators) => {
80
+ if (generation !== roomClientGeneration) {
81
+ return;
82
+ }
83
+
84
+ if (!collabReady) {
85
+ pendingCollaborators = collaborators;
86
+ return;
87
+ }
88
+
89
+ queueCollaboratorsRender(collaborators);
90
+ },
91
+ onRemoteSceneJson: (sceneJson) => {
92
+ if (generation !== roomClientGeneration) {
93
+ return;
94
+ }
95
+
96
+ applySceneFromJson(sceneJson);
97
+ },
98
+ syncTimeoutMs: Number.isFinite(syncTimeoutMs) ? syncTimeoutMs : undefined,
99
+ vaultClient: vaultApiClient,
100
+ });
101
+
102
+ return {
103
+ client,
104
+ generation,
105
+ };
106
+ }
107
+
108
+ function buildExcalidrawProps({ initialData } = {}) {
109
+ const props = {
110
+ onMount: handleEditorMount,
111
+ onInitialize: (api) => {
112
+ initializeEditor(api);
113
+ },
114
+ onUnmount: () => {
115
+ clearEditorApiStateBindings();
116
+ disconnectRealtimeRoom({ preserveEditorBindings: true });
117
+ excalidrawAPI = null;
118
+ collabReady = false;
119
+ },
120
+ aiEnabled: false,
121
+ isCollaborating: true,
122
+ onChange: (elements, appState, files) => {
123
+ scheduleSyncToRoom(elements, appState, files);
124
+ roomClient?.syncLocalSelectionAwareness(appState);
125
+ },
126
+ onPointerUpdate: (payload) => {
127
+ roomClient?.scheduleLocalPointerAwareness(payload);
128
+ },
129
+ theme: currentTheme,
130
+ ...getDocumentViewState(),
131
+ UIOptions: {
132
+ canvasActions: {
133
+ export: false,
134
+ loadScene: false,
135
+ saveToActiveFile: false,
136
+ toggleTheme: false,
137
+ },
138
+ },
139
+ };
140
+
141
+ if (initialData) {
142
+ props.initialData = initialData;
143
+ }
144
+
145
+ return props;
146
+ }
147
+
148
+ function renderExcalidrawApp({ initialData } = {}) {
149
+ if (!reactRoot) {
150
+ return;
151
+ }
152
+
153
+ reactRoot.render(
154
+ React.createElement(
155
+ 'div',
156
+ { style: { height: '100vh', width: '100%' } },
157
+ React.createElement(Excalidraw, buildExcalidrawProps({ initialData })),
158
+ ),
159
+ );
160
+ }
74
161
 
75
162
  function applySurfaceTheme(theme = currentTheme) {
76
163
  document.body.dataset.theme = theme === 'light' ? 'light' : 'dark';
@@ -108,7 +195,7 @@ function applyLocalUserPatch(nextUser = {}) {
108
195
  currentUser: localAwarenessUser,
109
196
  nextUser,
110
197
  });
111
- roomClient.setLocalUser(localAwarenessUser);
198
+ roomClient?.setLocalUser(localAwarenessUser);
112
199
  }
113
200
 
114
201
  if (isTestMode) {
@@ -149,13 +236,13 @@ if (isTestMode) {
149
236
  } : null;
150
237
  },
151
238
  isViewMode: () => Boolean(excalidrawAPI?.getAppState?.().viewModeEnabled),
152
- getSceneJson: () => roomClient.getLastSceneJson(),
239
+ getSceneJson: () => roomClient?.getLastSceneJson?.() || '',
153
240
  isAuthoritativeReady: () => (
154
241
  Boolean(excalidrawAPI)
155
242
  && collabReady
156
- && roomClient.canWriteToRoom === true
157
- && roomClient.waitingForAuthoritativeSync === false
158
- && roomClient.isApplyingSharedSnapshot() === false
243
+ && roomClient?.canWriteToRoom === true
244
+ && roomClient?.waitingForAuthoritativeSync === false
245
+ && roomClient?.isApplyingSharedSnapshot?.() === false
159
246
  ),
160
247
  isReady: () => collabReady && Boolean(excalidrawAPI) && Boolean(getNativeHistoryButton('undo')) && Boolean(getNativeHistoryButton('redo')),
161
248
  redoShared: () => triggerNativeHistory('redo'),
@@ -243,7 +330,7 @@ function releaseOnChangeSuppressionAfterPaint({ trackedSharedSnapshot = false }
243
330
  requestAnimationFrame(() => {
244
331
  pendingSuppressionReleases = Math.max(0, pendingSuppressionReleases - 1);
245
332
  if (trackedSharedSnapshot) {
246
- roomClient.endApplyingSharedSnapshot();
333
+ roomClient?.endApplyingSharedSnapshot();
247
334
  }
248
335
  if (pendingSuppressionReleases === 0) {
249
336
  suppressOnChange = false;
@@ -264,20 +351,29 @@ function releaseViewportBroadcastSuppressionAfterPaint() {
264
351
  });
265
352
  }
266
353
 
267
- function buildApiSceneUpdate(scene) {
354
+ function buildApiSceneUpdate(scene, {
355
+ appStateOverrides = {},
356
+ replaceElements = false,
357
+ } = {}) {
268
358
  const currentAppState = excalidrawAPI.getAppState();
269
- const currentElements = excalidrawAPI.getSceneElementsIncludingDeleted?.() || excalidrawAPI.getSceneElements();
359
+ const currentElements = replaceElements
360
+ ? []
361
+ : (excalidrawAPI.getSceneElementsIncludingDeleted?.() || excalidrawAPI.getSceneElements());
270
362
  const restoredElements = restoreElements(scene?.elements || [], currentElements, {
271
363
  repairBindings: true,
272
364
  });
273
365
  const restoredAppState = restoreAppState(scene?.appState || {}, currentAppState);
274
- const reconciledElements = reconcileElements(currentElements, restoredElements, currentAppState);
366
+ const reconciledElements = replaceElements
367
+ ? restoredElements
368
+ : reconcileElements(currentElements, restoredElements, currentAppState);
275
369
 
276
370
  return {
277
371
  appState: {
278
372
  theme: currentTheme,
279
373
  viewBackgroundColor: restoredAppState.viewBackgroundColor ?? '#ffffff',
280
374
  gridSize: restoredAppState.gridSize ?? null,
375
+ ...getDocumentViewState(),
376
+ ...appStateOverrides,
281
377
  },
282
378
  elements: reconciledElements,
283
379
  files: scene?.files || {},
@@ -285,14 +381,19 @@ function buildApiSceneUpdate(scene) {
285
381
  }
286
382
 
287
383
  function updateApiScene(scene, {
384
+ appStateOverrides = {},
288
385
  captureUpdate = CaptureUpdateAction.NEVER,
386
+ replaceElements = false,
289
387
  trackedSharedSnapshot = true,
290
388
  } = {}) {
291
- const nextSceneUpdate = buildApiSceneUpdate(scene);
389
+ const nextSceneUpdate = buildApiSceneUpdate(scene, {
390
+ appStateOverrides,
391
+ replaceElements,
392
+ });
292
393
 
293
394
  suppressOnChange = true;
294
395
  if (trackedSharedSnapshot) {
295
- roomClient.beginApplyingSharedSnapshot();
396
+ roomClient?.beginApplyingSharedSnapshot();
296
397
  }
297
398
  try {
298
399
  excalidrawAPI.updateScene({
@@ -325,14 +426,14 @@ function applyLocalScene(scene, {
325
426
  });
326
427
 
327
428
  if (suppressOnChange) {
328
- roomClient.commitSceneJson(normalizedJson, {
429
+ roomClient?.commitSceneJson(normalizedJson, {
329
430
  origin: 'excalidraw-local-scene-apply',
330
431
  });
331
432
  }
332
433
  }
333
434
 
334
435
  function onRoomTextUpdate() {
335
- applySceneFromJson(roomClient.getLastSceneJson());
436
+ applySceneFromJson(roomClient?.getLastSceneJson?.() || '');
336
437
  }
337
438
 
338
439
  function postToParent(type, payload = {}) {
@@ -367,14 +468,14 @@ function scheduleInitialViewportFit() {
367
468
  animate: false,
368
469
  fitToViewport: true,
369
470
  maxZoom: 2,
370
- viewportZoomFactor: isPreviewMode ? 0.92 : 0.88,
471
+ viewportZoomFactor: normalizeDocumentMode(currentDocument.mode) === 'preview' ? 0.92 : 0.88,
371
472
  });
372
473
  });
373
474
  });
374
475
  }
375
476
 
376
477
  function syncLocalViewportToRoom() {
377
- if (!collabReady || !excalidrawAPI || suppressViewportBroadcast) {
478
+ if (!collabReady || !excalidrawAPI || !roomClient || suppressViewportBroadcast) {
378
479
  return;
379
480
  }
380
481
 
@@ -462,8 +563,16 @@ function applyHostFollowRequest(peerId) {
462
563
  pendingHostFollowPeerId = null;
463
564
  }
464
565
 
465
- function disconnectRealtimeRoom() {
566
+ function clearEditorApiStateBindings() {
567
+ apiStateCleanupCallbacks.forEach((cleanup) => cleanup());
568
+ apiStateCleanupCallbacks = [];
569
+ }
570
+
571
+ function resetRealtimeRoomState() {
466
572
  collabReady = false;
573
+ suppressOnChange = false;
574
+ pendingRemoteSceneJson = '';
575
+ pendingSuppressionReleases = 0;
467
576
  pendingCollaborators = null;
468
577
  activeCollaborators = new Map();
469
578
  followedSocketId = null;
@@ -476,9 +585,19 @@ function disconnectRealtimeRoom() {
476
585
  }
477
586
  collaboratorRenderFrame = 0;
478
587
  queuedCollaborators = null;
479
- apiStateCleanupCallbacks.forEach((cleanup) => cleanup());
480
- apiStateCleanupCallbacks = [];
481
- roomClient.disconnect();
588
+ }
589
+
590
+ function disconnectRealtimeRoom({ preserveEditorBindings = false } = {}) {
591
+ const activeRoomClient = roomClient;
592
+ roomClient = null;
593
+ roomClientGeneration += 1;
594
+
595
+ resetRealtimeRoomState();
596
+ if (!preserveEditorBindings) {
597
+ clearEditorApiStateBindings();
598
+ }
599
+
600
+ activeRoomClient?.disconnect();
482
601
  }
483
602
 
484
603
  let didDisconnectRealtimeRoom = false;
@@ -499,7 +618,7 @@ async function waitForPendingRoomWrites({
499
618
  const startedAt = performance.now();
500
619
 
501
620
  while ((performance.now() - startedAt) < maxWaitMs) {
502
- const ws = roomClient.provider?.ws;
621
+ const ws = roomClient?.provider?.ws;
503
622
  if (!ws || ws.readyState !== WebSocket.OPEN || ws.bufferedAmount === 0) {
504
623
  return;
505
624
  }
@@ -509,10 +628,23 @@ async function waitForPendingRoomWrites({
509
628
  }
510
629
 
511
630
  async function prepareRealtimeRoomDisconnect() {
512
- roomClient.flushSceneSync();
631
+ roomClient?.flushSceneSync();
513
632
  await waitForPendingRoomWrites();
514
633
  }
515
634
 
635
+ async function connectDocumentClient(filePath) {
636
+ const { client, generation } = createRoomClient(filePath);
637
+ roomClient = client;
638
+ const scene = await client.connect({ initialUser: localAwarenessUser });
639
+
640
+ if (generation !== roomClientGeneration || roomClient !== client) {
641
+ client.disconnect();
642
+ return null;
643
+ }
644
+
645
+ return scene;
646
+ }
647
+
516
648
  window.addEventListener('pagehide', disconnectRealtimeRoomOnce);
517
649
 
518
650
  window.addEventListener('message', (event) => {
@@ -536,6 +668,7 @@ window.addEventListener('message', (event) => {
536
668
  });
537
669
  releaseOnChangeSuppressionAfterPaint();
538
670
  }
671
+ renderExcalidrawApp();
539
672
  return;
540
673
  }
541
674
 
@@ -556,11 +689,19 @@ window.addEventListener('message', (event) => {
556
689
  requestId: message.requestId || '',
557
690
  });
558
691
  })();
692
+ return;
693
+ }
694
+
695
+ if (message.type === 'park-room') {
696
+ void (async () => {
697
+ await prepareRealtimeRoomDisconnect();
698
+ disconnectRealtimeRoom({ preserveEditorBindings: true });
699
+ })();
559
700
  }
560
701
  });
561
702
 
562
703
  function scheduleSyncToRoom(elements, appState, files) {
563
- if (!collabReady || suppressOnChange) {
704
+ if (!collabReady || !roomClient || suppressOnChange) {
564
705
  return;
565
706
  }
566
707
 
@@ -589,7 +730,7 @@ function initializeEditor(api) {
589
730
  setFollowedSocket(null, { force: true });
590
731
  }));
591
732
 
592
- const sceneJson = pendingRemoteSceneJson || roomClient.getLastSceneJson();
733
+ const sceneJson = pendingRemoteSceneJson || roomClient?.getLastSceneJson?.() || '';
593
734
  pendingRemoteSceneJson = '';
594
735
  updateApiScene(parseSceneJson(sceneJson));
595
736
 
@@ -622,53 +763,15 @@ async function init() {
622
763
  try {
623
764
  applySurfaceTheme(currentTheme);
624
765
  await ensureClientAuthenticated();
625
- const initialScene = await roomClient.connect({ initialUser: localAwarenessUser });
766
+ const initialScene = await connectDocumentClient(currentDocument.filePath);
767
+ if (!initialScene) {
768
+ throw new Error('Failed to connect initial Excalidraw document');
769
+ }
626
770
  const initialData = sceneToInitialData(initialScene, { theme: currentTheme });
627
771
 
628
772
  loadingElement?.remove();
629
-
630
- const excalidrawProps = {
631
- onMount: handleEditorMount,
632
- onInitialize: (api) => {
633
- initializeEditor(api);
634
- },
635
- onUnmount: () => {
636
- apiStateCleanupCallbacks.forEach((cleanup) => cleanup());
637
- apiStateCleanupCallbacks = [];
638
- excalidrawAPI = null;
639
- collabReady = false;
640
- },
641
- initialData,
642
- aiEnabled: false,
643
- isCollaborating: true,
644
- onChange: (elements, appState, files) => {
645
- scheduleSyncToRoom(elements, appState, files);
646
- roomClient.syncLocalSelectionAwareness(appState);
647
- },
648
- onPointerUpdate: (payload) => {
649
- roomClient.scheduleLocalPointerAwareness(payload);
650
- },
651
- theme: currentTheme,
652
- viewModeEnabled: isPreviewMode,
653
- zenModeEnabled: isPreviewMode,
654
- UIOptions: {
655
- canvasActions: {
656
- export: false,
657
- loadScene: false,
658
- saveToActiveFile: false,
659
- toggleTheme: false,
660
- },
661
- },
662
- };
663
-
664
- const App = () => React.createElement(
665
- 'div',
666
- { style: { height: '100vh', width: '100%' } },
667
- React.createElement(Excalidraw, excalidrawProps),
668
- );
669
-
670
- const root = createRoot(document.getElementById('root'));
671
- root.render(React.createElement(App));
773
+ reactRoot = createRoot(document.getElementById('root'));
774
+ renderExcalidrawApp({ initialData });
672
775
  } catch (error) {
673
776
  console.error('[excalidraw] Failed to initialize:', error);
674
777
  postToParent('error', {
@@ -1,4 +1,10 @@
1
- import { runExportAdapter, postExportPageMessage, prepareExportSnapshot, waitForBootstrapPayload } from './export-pipeline.js';
1
+ import {
2
+ postExportPageMessage,
3
+ prepareExportSnapshot,
4
+ runExportAdapter,
5
+ waitForBootstrapPayload,
6
+ waitForRenderedExportContent,
7
+ } from './export-pipeline.js';
2
8
  import { groupHeadingWithFollowingBlock } from './export-print-layout.js';
3
9
 
4
10
  function setStatus(message) {
@@ -28,13 +34,14 @@ function renderWarnings(snapshot) {
28
34
  function renderSnapshot(snapshot) {
29
35
  const mount = document.getElementById('exportContent');
30
36
  if (!mount) {
31
- return;
37
+ return null;
32
38
  }
33
39
 
34
40
  document.title = `${snapshot.title} — Export`;
35
41
  mount.innerHTML = snapshot.html;
36
42
  groupHeadingWithFollowingBlock(mount);
37
43
  renderWarnings(snapshot);
44
+ return mount;
38
45
  }
39
46
 
40
47
  async function bootstrap() {
@@ -42,7 +49,8 @@ async function bootstrap() {
42
49
  setStatus('Loading export content…');
43
50
  const payload = await waitForBootstrapPayload();
44
51
  const snapshot = await prepareExportSnapshot(payload);
45
- renderSnapshot(snapshot);
52
+ const mount = renderSnapshot(snapshot);
53
+ snapshot.html = await waitForRenderedExportContent(mount);
46
54
  setStatus(payload.action === 'pdf' ? 'Opening print dialog…' : 'Preparing DOCX download…');
47
55
  await runExportAdapter(snapshot, payload.action);
48
56
  setStatus(payload.action === 'pdf' ? 'Print dialog opened.' : 'DOCX download started.');
@@ -23,6 +23,7 @@ const LIGHT_EXPORT_MERMAID_THEME = Object.freeze({
23
23
  });
24
24
  const EXPORT_ASSET_FETCH_TIMEOUT_MS = 10_000;
25
25
  const EXPORT_ASSET_MAX_BYTES = 10 * 1024 * 1024;
26
+ const EXPORT_RENDER_SETTLE_TIMEOUT_MS = 10_000;
26
27
  const VIDEO_POSTER_CAPTURE_TIMEOUT_MS = 10_000;
27
28
  const VIDEO_POSTER_CAPTURE_SEEK_SECONDS = 1;
28
29
 
@@ -48,6 +49,10 @@ function encodeSvgDataUrl(svgMarkup) {
48
49
  return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svgMarkup)}`;
49
50
  }
50
51
 
52
+ function waitForAnimationFrame() {
53
+ return new Promise((resolve) => requestAnimationFrame(() => resolve()));
54
+ }
55
+
51
56
  function blobToDataUrl(blob) {
52
57
  return new Promise((resolve, reject) => {
53
58
  const reader = new FileReader();
@@ -177,6 +182,49 @@ async function imageDataUrlToPngDataUrl(dataUrl) {
177
182
  return canvas.toDataURL('image/png');
178
183
  }
179
184
 
185
+ async function waitForImageElement(image, {
186
+ timeoutMs = EXPORT_RENDER_SETTLE_TIMEOUT_MS,
187
+ } = {}) {
188
+ if (!(image instanceof HTMLImageElement)) {
189
+ return;
190
+ }
191
+
192
+ if (!image.getAttribute('src')) {
193
+ return;
194
+ }
195
+
196
+ if (!image.complete) {
197
+ await new Promise((resolve) => {
198
+ let settled = false;
199
+ const cleanup = () => {
200
+ if (settled) {
201
+ return;
202
+ }
203
+ settled = true;
204
+ window.clearTimeout(timeoutId);
205
+ image.removeEventListener('load', handleDone);
206
+ image.removeEventListener('error', handleDone);
207
+ };
208
+ const handleDone = () => {
209
+ cleanup();
210
+ resolve();
211
+ };
212
+ const timeoutId = window.setTimeout(handleDone, timeoutMs);
213
+
214
+ image.addEventListener('load', handleDone, { once: true });
215
+ image.addEventListener('error', handleDone, { once: true });
216
+
217
+ if (image.complete) {
218
+ handleDone();
219
+ }
220
+ });
221
+ }
222
+
223
+ if (typeof image.decode === 'function') {
224
+ await image.decode().catch(() => {});
225
+ }
226
+ }
227
+
180
228
  async function fetchJson(url, init = {}) {
181
229
  const response = await fetch(url, {
182
230
  headers: {
@@ -1322,8 +1370,8 @@ export async function docxAdapter(snapshot) {
1322
1370
  }
1323
1371
 
1324
1372
  export async function printPdfAdapter() {
1325
- await new Promise((resolve) => requestAnimationFrame(() => resolve()));
1326
- await new Promise((resolve) => requestAnimationFrame(() => resolve()));
1373
+ await waitForAnimationFrame();
1374
+ await waitForAnimationFrame();
1327
1375
 
1328
1376
  await new Promise((resolve) => {
1329
1377
  const timeoutId = window.setTimeout(resolve, 1500);
@@ -1337,6 +1385,33 @@ export async function printPdfAdapter() {
1337
1385
  });
1338
1386
  }
1339
1387
 
1388
+ export async function waitForRenderedExportContent(container, {
1389
+ settleFrames = 2,
1390
+ timeoutMs = EXPORT_RENDER_SETTLE_TIMEOUT_MS,
1391
+ } = {}) {
1392
+ if (!container) {
1393
+ return '';
1394
+ }
1395
+
1396
+ const imageWaiters = Array.from(container.querySelectorAll('img')).map((image) => (
1397
+ waitForImageElement(image, { timeoutMs })
1398
+ ));
1399
+ const fontReadyPromise = document.fonts?.ready
1400
+ ? Promise.resolve(document.fonts.ready).catch(() => {})
1401
+ : Promise.resolve();
1402
+
1403
+ await Promise.allSettled([
1404
+ fontReadyPromise,
1405
+ ...imageWaiters,
1406
+ ]);
1407
+
1408
+ for (let index = 0; index < settleFrames; index += 1) {
1409
+ await waitForAnimationFrame();
1410
+ }
1411
+
1412
+ return container.innerHTML;
1413
+ }
1414
+
1340
1415
  export async function runExportAdapter(snapshot, format) {
1341
1416
  if (format === 'pdf') {
1342
1417
  await printPdfAdapter(snapshot);
@@ -156,7 +156,7 @@ function renderOidcPrompt(card, config, {
156
156
  actions.className = 'auth-gate-actions';
157
157
 
158
158
  const signInButton = document.createElement('button');
159
- signInButton.className = 'auth-gate-button auth-gate-button--google';
159
+ signInButton.className = 'ui-button ui-button--secondary auth-gate-button auth-gate-button--google';
160
160
  signInButton.type = 'button';
161
161
  signInButton.append(createGoogleIcon(), document.createTextNode(config.submitLabel || 'Continue with Google'));
162
162
 
@@ -191,7 +191,7 @@ function renderStatusCard(card, {
191
191
 
192
192
  if (secondaryActionLabel && typeof onSecondaryAction === 'function') {
193
193
  const button = document.createElement('button');
194
- button.className = 'auth-gate-secondary-button';
194
+ button.className = 'ui-button ui-button--secondary auth-gate-secondary-button';
195
195
  button.type = 'button';
196
196
  button.textContent = secondaryActionLabel;
197
197
  button.addEventListener('click', () => {
@@ -220,7 +220,7 @@ function renderPasswordPrompt(card, config, {
220
220
  label.textContent = config.passwordLabel;
221
221
 
222
222
  const input = document.createElement('input');
223
- input.className = 'auth-gate-input';
223
+ input.className = 'ui-input auth-gate-input';
224
224
  input.type = 'password';
225
225
  input.name = 'password';
226
226
  input.autocomplete = 'current-password';
@@ -233,7 +233,7 @@ function renderPasswordPrompt(card, config, {
233
233
  actions.className = 'auth-gate-actions';
234
234
 
235
235
  const submitButton = document.createElement('button');
236
- submitButton.className = 'auth-gate-button';
236
+ submitButton.className = 'ui-button ui-button--primary auth-gate-button';
237
237
  submitButton.type = 'submit';
238
238
  submitButton.textContent = config.submitLabel;
239
239
 
@@ -0,0 +1,18 @@
1
+ import { resolveApiUrl } from '../domain/runtime-paths.js';
2
+
3
+ export class BacklinksApiClient {
4
+ async readBacklinks(filePath, { signal } = {}) {
5
+ const response = await fetch(
6
+ resolveApiUrl(`/backlinks?file=${encodeURIComponent(filePath)}`),
7
+ { signal },
8
+ );
9
+ const data = await response.json().catch(() => ({}));
10
+ if (!response.ok) {
11
+ throw new Error(data.error || 'Failed to load backlinks');
12
+ }
13
+
14
+ return Array.isArray(data.backlinks) ? data.backlinks : [];
15
+ }
16
+ }
17
+
18
+ export const backlinksApiClient = new BacklinksApiClient();
@@ -134,6 +134,10 @@ export class CommentThreadStore {
134
134
  this.onCommentsChange?.(this.getCommentThreads());
135
135
  }
136
136
 
137
+ refreshComments() {
138
+ this.emitCommentsChange();
139
+ }
140
+
137
141
  getCommentThreads() {
138
142
  if (!this.commentThreads) {
139
143
  return [];
@@ -93,6 +93,7 @@ export class EditorSession {
93
93
  undoManager: this.pendingCollaborativeBindings.undoManager,
94
94
  ytext: this.pendingCollaborativeBindings.ytext,
95
95
  });
96
+ this.commentThreadStore.refreshComments();
96
97
  this.pendingCollaborativeBindings = null;
97
98
  this.bootstrapContent = null;
98
99
  return true;
@@ -109,6 +110,7 @@ export class EditorSession {
109
110
  content: this.bootstrapContent,
110
111
  filePath: this.activeFilePath,
111
112
  });
113
+ this.commentThreadStore.refreshComments();
112
114
  return this.emitContentChange();
113
115
  }
114
116