collabmd 0.1.47 → 0.1.49

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 (305) hide show
  1. package/README.md +70 -11
  2. package/bin/collabmd.js +3 -0
  3. package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-C-nmgL5g.js +1 -0
  4. package/dist/client/assets/JetBrainsMono-Regular-BQaDgvhP.woff2 +0 -0
  5. package/dist/client/assets/abnfDiagram-VCTEODGH-CdVZqicp.js +1 -0
  6. package/dist/client/assets/{architectureDiagram-5GKGNRK7-I39sYjHI.js → architectureDiagram-5GKGNRK7-wUo0bXif.js} +3 -3
  7. package/dist/client/assets/babel-CY5KOv-I.js +16 -0
  8. package/dist/client/assets/{blockDiagram-NRAW4CY4-C6DtJy5Y.js → blockDiagram-I7D4REHJ-BRSK3m49.js} +4 -4
  9. package/dist/client/assets/browser-utils-DbXSMI-6.js +1 -0
  10. package/dist/client/assets/{c4Diagram-UCG6FXSJ-CtWtxS9_.js → c4Diagram-7LVT6UL2-yD2poxqw.js} +1 -1
  11. package/dist/client/assets/channel-Fa4GS_-F.js +1 -0
  12. package/dist/client/assets/chunk-2E4U76K2-BPnTT-J3.js +2 -0
  13. package/dist/client/assets/{chunk-TEH6E4GO-DVayPj-q.js → chunk-4HAMMTFA-DStbIfJ1.js} +20 -20
  14. package/dist/client/assets/{chunk-75Z2AOVW-CdFSaPjz.js → chunk-75Z2AOVW-C5pGd3W9.js} +1 -1
  15. package/dist/client/assets/{chunk-CLGD4ZFX-DQLgbQrv.js → chunk-CLGD4ZFX-BMeArk03.js} +1 -1
  16. package/dist/client/assets/chunk-DU6HZSFF-Zkp69c6c.js +127 -0
  17. package/dist/client/assets/{chunk-F27PBJKO-CNHIFhjo.js → chunk-F27PBJKO-D4xNct1r.js} +1 -1
  18. package/dist/client/assets/{chunk-GMAD6QVW-CbcBqPM5.js → chunk-GMAD6QVW-NZ6WpDb8.js} +1 -1
  19. package/dist/client/assets/{chunk-OBVCFTLP-BJR7u1jh.js → chunk-GVQU2GXP-D8SDprfX.js} +1 -1
  20. package/dist/client/assets/{chunk-G27WJ6UU-D9-eg537.js → chunk-IMKFNOWR-D8jEuU3Q.js} +2 -2
  21. package/dist/client/assets/{chunk-JQ64N6SF-DSFNH4bh.js → chunk-L3NEJ4N5-aijKP-eh.js} +1 -1
  22. package/dist/client/assets/chunk-OSK3NFVY-CCbLQAMa.js +10 -0
  23. package/dist/client/assets/{chunk-P2QGCYS3-BRpqY32H.js → chunk-P2QGCYS3-Oag_FdCq.js} +1 -1
  24. package/dist/client/assets/{chunk-POPQ4Y6H-Cb4SlVZF.js → chunk-POPQ4Y6H-CYnpIgXT.js} +1 -1
  25. package/dist/client/assets/{chunk-PWAF6VOD-Cz8IwBB5.js → chunk-PWAF6VOD-JSNrcBmP.js} +1 -1
  26. package/dist/client/assets/{chunk-RM4UPSZO-CWRwxNWJ.js → chunk-RM4UPSZO-DOWllDY8.js} +4 -4
  27. package/dist/client/assets/{chunk-RHFEMEQ7-CWY8cf4H.js → chunk-SHT3W25Y-BiQGljao.js} +5 -5
  28. package/dist/client/assets/{chunk-SVP7TREG-CyHOmcac.js → chunk-SVP7TREG-DB485R5x.js} +1 -1
  29. package/dist/client/assets/{chunk-LCL6LL3I-DmDkVukh.js → chunk-TICWLB2K-8rAVvoS3.js} +4 -4
  30. package/dist/client/assets/{chunk-CKBBP62Z-DG26UiBv.js → chunk-TLUHSLCS-DTY5v0aj.js} +2 -2
  31. package/dist/client/assets/classDiagram-ZZMXUADV-BsQWoR3Q.js +1 -0
  32. package/dist/client/assets/classDiagram-v2-VYDZK3BY-BsQWoR3Q.js +1 -0
  33. package/dist/client/assets/{comment-thread-store-CdcwrObc.js → comment-thread-store-CX98zR6q.js} +1 -1
  34. package/dist/client/assets/comment-threads-BnRwo5B9.js +4 -0
  35. package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-CdTPi2yO.js → cynefinDiagram-5FMLGOSQ-rTz9RhFH.js} +1 -1
  36. package/dist/client/assets/{dagre-3AP2YEHR-5gtJtd0O.js → dagre-GXQ25YYZ-Cr67wLpQ.js} +2 -2
  37. package/dist/client/assets/{diagram-S7CK7UJ4-BudWz9WU.js → diagram-S7CK7UJ4-DywERe__.js} +2 -2
  38. package/dist/client/assets/{diagram-UQ7AKVKN-3v4rbH-s.js → diagram-UQ7AKVKN-CNYlXtu4.js} +1 -1
  39. package/dist/client/assets/diagram-VSXAHHWV-0H1a61Bn.js +3 -0
  40. package/dist/client/assets/{diagram-VX7I27RA-C_-rj0sw.js → diagram-VX7I27RA-CsJbsx5F.js} +1 -1
  41. package/dist/client/assets/{diagram-Z3DM3KII-B4yxavgj.js → diagram-Z3DM3KII-D0mLxEgI.js} +1 -1
  42. package/dist/client/assets/dist--hk9I5HQ.js +1 -0
  43. package/dist/client/assets/{dist-DutPuFmC.js → dist-B1XEa-Zs.js} +1 -1
  44. package/dist/client/assets/dist-Bd1JucQF.js +1 -0
  45. package/dist/client/assets/{dist-DZAAWTG-.js → dist-C0G3AaXG.js} +1 -1
  46. package/dist/client/assets/dist-ChRoo3IB.js +9 -0
  47. package/dist/client/assets/dist-Dm4w5UId.js +1 -0
  48. package/dist/client/assets/{dist-B_yQaEv_.js → dist-DpYDHR9p.js} +1 -1
  49. package/dist/client/assets/{dist-CietwTVS.js → dist-DzNmC81X.js} +1 -1
  50. package/dist/client/assets/{dist-DDUn5zTz.js → dist-GvvCNBe4.js} +1 -1
  51. package/dist/client/assets/dist-JaU3aRlD.js +19 -0
  52. package/dist/client/assets/{dist-Bw3VIE_v.js → dist-TW8iFRyW.js} +1 -1
  53. package/dist/client/assets/{dist-Dir5dDKZ.js → dist-jVU5Be5P.js} +1 -1
  54. package/dist/client/assets/document-formatter-rDDjRfZ2.js +2 -0
  55. package/dist/client/assets/drawioEditor-JubEEha7.js +9 -0
  56. package/dist/client/assets/ebnfDiagram-PWID7BFC-HeTxHpCU.js +1 -0
  57. package/dist/client/assets/editor-session-Bk6oIvSr.js +54 -0
  58. package/dist/client/assets/embedded-editor-base-BlCgz6mw.css +1 -0
  59. package/dist/client/assets/{erDiagram-SSCWMZ5O-C-iy6VkX.js → erDiagram-RLTQ6QDP-CbrDdd5P.js} +2 -2
  60. package/dist/client/assets/{es-CAsWR6hG.js → es-Bfdp096f.js} +13 -13
  61. package/dist/client/assets/estree-CuT_pB8K.js +44 -0
  62. package/dist/client/assets/excalidraw-element-link-YLIaTnVF.js +7 -0
  63. package/dist/client/assets/{excalidraw-scene-BOben2gr.js → excalidraw-scene-6uROebca.js} +1 -1
  64. package/dist/client/assets/{excalidraw-editor-BlcN6umJ.css → excalidrawEditor-BbSbI80a.css} +1 -1
  65. package/dist/client/assets/excalidrawEditor-dBMbRX_S.js +9 -0
  66. package/dist/client/assets/export-page-CRRQ2NEl.js +57 -0
  67. package/dist/client/assets/exportDocument-BlQRd9_m.js +2 -0
  68. package/dist/client/assets/exportDocument-CNSbjZwu.css +1 -0
  69. package/dist/client/assets/{file-icon-svg-CQAjlWjK.js → file-icon-svg-Y_kpF957.js} +1 -1
  70. package/dist/client/assets/file-kind-BwMIcZbi.js +1 -0
  71. package/dist/client/assets/file-search-DDLyyLDU.js +1 -0
  72. package/dist/client/assets/flowDiagram-HODETNUW-D5Gy0wmg.js +1 -0
  73. package/dist/client/assets/{ganttDiagram-EL5Y4UJY-DtKHAbez.js → ganttDiagram-EL5Y4UJY-BHgOYiZz.js} +1 -1
  74. package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-oue8fQ5o.js → gitGraphDiagram-WWUBYQGX-Dl__X3Sk.js} +1 -1
  75. package/dist/client/assets/html-Cdnr2qzU.js +25 -0
  76. package/dist/client/assets/image-ZVKINSPA-DgzW5zAy.js +1 -0
  77. package/dist/client/assets/index-D3RER1SZ.js +1023 -0
  78. package/dist/client/assets/index-DREVKl_K.css +1 -0
  79. package/dist/client/assets/{infoDiagram-RXCK75RN-BMzo6KIn.js → infoDiagram-27XIBGKW-DBpoANC9.js} +1 -1
  80. package/dist/client/assets/{ishikawaDiagram-5VMMS53U-BIM3h287.js → ishikawaDiagram-5VMMS53U-BMPC6hfp.js} +1 -1
  81. package/dist/client/assets/{journeyDiagram-EYS64GPL-mF6Lh8O-.js → journeyDiagram-3NMN7TZE-B1sApUmM.js} +2 -2
  82. package/dist/client/assets/{kanban-definition-3QL26DDD-DLN2NyoR.js → kanban-definition-UXKFOSKX-C9yP4td1.js} +4 -4
  83. package/dist/client/assets/{line-BfTWJmgf.js → line-BFl3ujec.js} +1 -1
  84. package/dist/client/assets/markdown-CByV-4CU.js +70 -0
  85. package/dist/client/assets/{mermaid.core-CLZBlpIW.js → mermaid.core-BrY09czX.js} +5 -5
  86. package/dist/client/assets/mermaid.core-DfcNfOTv.js +1 -0
  87. package/dist/client/assets/{mindmap-definition-FBJOCRG2-CRyHaHTk.js → mindmap-definition-YA3MSWOX-BUQHcYbK.js} +8 -8
  88. package/dist/client/assets/pegDiagram-XKGWAZYB-Bi2Iml7Z.js +1 -0
  89. package/dist/client/assets/{pieDiagram-E7YTZNPT-B5OZPb88.js → pieDiagram-E7YTZNPT-_gYXnMoi.js} +1 -1
  90. package/dist/client/assets/preview-render-compiler-CfxJYldJ.js +41 -0
  91. package/dist/client/assets/preview-render-compiler-Cu8_i9iS.js +1 -0
  92. package/dist/client/assets/{preview-render-worker-BmN79bVc.js → preview-render-worker-c4Yi93qW.js} +41 -35
  93. package/dist/client/assets/prod-BiJL30sl.js +1 -0
  94. package/dist/client/assets/prod-qAk7rHa4.js +177 -0
  95. package/dist/client/assets/{quadrantDiagram-AXDQQJYC-Drrw14YH.js → quadrantDiagram-AXDQQJYC-DwexhEhd.js} +1 -1
  96. package/dist/client/assets/quick-switcher-controller-BoIK_wuG.js +1 -0
  97. package/dist/client/assets/railroadDiagram-O6MQD6OU-BVA5UbMu.js +1 -0
  98. package/dist/client/assets/{requirementDiagram-EFPCY7ZU-CRZG6mRB.js → requirementDiagram-BXWQKSXE-C4cKwiIw.js} +2 -2
  99. package/dist/client/assets/runtime-config-DcmnGcXU.js +1 -0
  100. package/dist/client/assets/{sankeyDiagram-P5KCCOFB-DvarEJpo.js → sankeyDiagram-P5KCCOFB-B5HHkRT2.js} +1 -1
  101. package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-B4oWlb-w.js → sequenceDiagram-WJ2MYXX4-BX6jqJFD.js} +6 -6
  102. package/dist/client/assets/standalone-6z5x8CWe.js +29 -0
  103. package/dist/client/assets/{stateDiagram-HBIQ2CUA-qbHIIqRZ.js → stateDiagram-D77RDMKH-CmqxyRGx.js} +1 -1
  104. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-zoLLQVyh.js +1 -0
  105. package/dist/client/assets/{swimlanes-XN3QIQJK-xB6CtUGj.js → swimlanes-42K2YHIH-Bmgb9Zld.js} +1 -1
  106. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DS-KQN37.js +8 -0
  107. package/dist/client/assets/{timeline-definition-24CTP7MA-Lj_yTNlY.js → timeline-definition-24CTP7MA-BA-lVH6P.js} +1 -1
  108. package/dist/client/assets/vault-api-client-iZLhMJKe.js +6 -0
  109. package/dist/client/assets/{vennDiagram-4TSXK5OY-BekRp5Y0.js → vennDiagram-4TSXK5OY-DNdUC_Xj.js} +1 -1
  110. package/dist/client/assets/{wardleyDiagram-VM6X3IG4-kdnV_Hdm.js → wardleyDiagram-VM6X3IG4-C2oY-YbF.js} +1 -1
  111. package/dist/client/assets/wiki-link-resolver-DFIwErjc.js +1 -0
  112. package/dist/client/assets/{xychartDiagram-S5SC5T6Z-DufGwNSB.js → xychartDiagram-S5SC5T6Z-CoIR8CBX.js} +1 -1
  113. package/dist/client/assets/yaml-9ltHPDNO.js +154 -0
  114. package/dist/client/assets/{yjs-provider-reset-guard-DE0vINDP.js → yjs-provider-reset-guard-9ul1qF6k.js} +1 -1
  115. package/dist/client/drawio-editor.html +11 -3
  116. package/dist/client/excalidraw-editor.html +45 -2
  117. package/dist/client/export-document.html +3 -3
  118. package/dist/client/index.html +106 -52
  119. package/integrations/pi/index.ts +94 -0
  120. package/package.json +41 -29
  121. package/src/client/app/drawio-editor.html +2 -2
  122. package/src/client/app/excalidraw-editor.html +2 -2
  123. package/src/client/app/export-document.html +1 -1
  124. package/src/client/app/index.html +88 -50
  125. package/src/client/app/main-entry.js +15 -1
  126. package/src/client/application/app-shell/chat-feature.js +7 -22
  127. package/src/client/application/app-shell/export-feature.js +17 -1
  128. package/src/client/application/app-shell/git-feature.js +51 -14
  129. package/src/client/application/app-shell/presence-feature.js +8 -25
  130. package/src/client/application/app-shell/ui-feature-identity.js +13 -0
  131. package/src/client/application/app-shell/ui-feature-shell.js +199 -99
  132. package/src/client/application/app-shell/ui-feature-sidebar.js +43 -7
  133. package/src/client/application/app-shell/ui-feature-tab-activity.js +19 -6
  134. package/src/client/application/app-shell/ui-feature-toolbar.js +16 -129
  135. package/src/client/application/app-shell-elements.js +8 -0
  136. package/src/client/application/preview-render-compiler.js +1 -87
  137. package/src/client/application/preview-render-scheduler.js +8 -24
  138. package/src/client/application/preview-renderer.js +2 -2
  139. package/src/client/application/webmcp-diagram-renderer.js +47 -0
  140. package/src/client/application/workspace-coordinator.js +23 -4
  141. package/src/client/application/workspace-preview-controller.js +120 -2
  142. package/src/client/application/workspace-route-controller.js +11 -1
  143. package/src/client/assets/vendor/jetbrains-mono/JetBrainsMono-Regular.woff2 +0 -0
  144. package/src/client/assets/vendor/jetbrains-mono/OFL.txt +93 -0
  145. package/src/client/bootstrap/collabmd-app-shell.js +99 -6
  146. package/src/client/domain/document-formatter.js +193 -0
  147. package/src/client/domain/excalidraw-element-link.js +73 -0
  148. package/src/client/domain/excalidraw-scene.js +21 -0
  149. package/src/client/domain/file-search.js +73 -0
  150. package/src/client/domain/git-labels.js +5 -0
  151. package/src/client/domain/hash-routes.js +8 -0
  152. package/src/client/domain/room.js +1 -5
  153. package/src/client/domain/runtime-paths.js +5 -0
  154. package/src/client/domain/vault-paths.js +6 -4
  155. package/src/client/domain/wiki-link-completions.js +20 -20
  156. package/src/client/drawio-editor.js +8 -3
  157. package/src/client/excalidraw-editor.js +287 -16
  158. package/src/client/export/export-host.js +59 -36
  159. package/src/client/export/export-page.js +14 -4
  160. package/src/client/export/export-pipeline.js +270 -42
  161. package/src/client/infrastructure/agent-connection-api-client.js +23 -0
  162. package/src/client/infrastructure/auth-client.js +3 -13
  163. package/src/client/infrastructure/editor-session.js +15 -0
  164. package/src/client/infrastructure/editor-view-adapter.js +73 -14
  165. package/src/client/infrastructure/excalidraw-room-client.js +80 -1
  166. package/src/client/infrastructure/git-api-client.js +39 -33
  167. package/src/client/infrastructure/lobby-presence.js +2 -5
  168. package/src/client/infrastructure/runtime-config.js +11 -1
  169. package/src/client/infrastructure/tab-activity-lock.js +2 -5
  170. package/src/client/infrastructure/vault-api-client.js +33 -26
  171. package/src/client/infrastructure/webmcp-tool-registry.js +283 -0
  172. package/src/client/infrastructure/workspace-sync-client.js +6 -4
  173. package/src/client/presentation/agent-connection-controller.js +255 -0
  174. package/src/client/presentation/backlinks-panel.js +3 -0
  175. package/src/client/presentation/bases-preview-controller.js +59 -26
  176. package/src/client/presentation/comment-ui/comment-ui-card.js +4 -2
  177. package/src/client/presentation/create-menu-presenter.js +19 -16
  178. package/src/client/presentation/excalidraw-embed-controller.js +164 -4
  179. package/src/client/presentation/file-action-controller.js +15 -2
  180. package/src/client/presentation/file-explorer-controller.js +3 -0
  181. package/src/client/presentation/file-explorer-view.js +71 -12
  182. package/src/client/presentation/file-history-view-controller.js +19 -12
  183. package/src/client/presentation/file-tree-state.js +1 -11
  184. package/src/client/presentation/git-diff-view-controller.js +70 -53
  185. package/src/client/presentation/git-panel-controller.js +86 -32
  186. package/src/client/presentation/image-lightbox-controller.js +20 -16
  187. package/src/client/presentation/layout-controller.js +3 -1
  188. package/src/client/presentation/quick-switcher-controller.js +74 -232
  189. package/src/client/presentation/quick-switcher-text-search.js +10 -14
  190. package/src/client/styles/components/navigation.css +1 -2
  191. package/src/client/styles/components/scrollbars.css +10 -0
  192. package/src/client/styles/export-document.css +44 -29
  193. package/src/client/styles/features/agent-connection.css +202 -0
  194. package/src/client/styles/features/collaboration-chat.css +8 -1
  195. package/src/client/styles/features/collaboration-dialogs.css +16 -1
  196. package/src/client/styles/features/collaboration-presence.css +30 -5
  197. package/src/client/styles/features/diff-toolbar.css +1 -1
  198. package/src/client/styles/features/media-lightbox.css +12 -3
  199. package/src/client/styles/features/preview-markdown.css +54 -0
  200. package/src/client/styles/features/quick-switcher.css +20 -11
  201. package/src/client/styles/foundation/themes.css +2 -0
  202. package/src/client/styles/foundation/tokens.css +8 -0
  203. package/src/client/styles/layout/editor-page.css +25 -11
  204. package/src/client/styles/layout/responsive.css +2 -20
  205. package/src/client/styles/layout/shell.css +77 -24
  206. package/src/client/styles/layout/sidebar.css +7 -4
  207. package/src/client/styles/layout/view-modes.css +2 -0
  208. package/src/client/styles/overrides/codemirror.css +31 -19
  209. package/src/client/styles/primitives/controls.css +21 -54
  210. package/src/client/styles/style.css +1 -0
  211. package/src/client/styles/surfaces/excalidraw-editor.css +42 -0
  212. package/src/domain/agent-tool-definitions.js +796 -0
  213. package/src/domain/collabmd-content-capabilities.js +149 -0
  214. package/src/domain/collaboration-protocol.js +2 -0
  215. package/src/domain/comment-threads.js +3 -5
  216. package/src/domain/diagram-source.js +50 -0
  217. package/src/domain/editable-content-revision.js +10 -0
  218. package/src/domain/editable-text.js +3 -0
  219. package/src/domain/exact-text-edits.js +69 -0
  220. package/src/domain/excalidraw-agent-scene.js +522 -0
  221. package/src/domain/excalidraw-agent-verification.js +460 -0
  222. package/src/domain/excalidraw-room-codec.js +1 -5
  223. package/src/domain/file-kind.js +12 -1
  224. package/src/domain/video-embed.js +76 -0
  225. package/src/server/application/agent-connection-service.js +178 -0
  226. package/src/server/application/agent-content-service.js +773 -0
  227. package/src/server/application/workspace-reconciliation.js +5 -7
  228. package/src/server/config/env.js +51 -1
  229. package/src/server/create-app-server.js +36 -0
  230. package/src/server/domain/bases/base-query-service.js +1 -5
  231. package/src/server/domain/collaboration/collaboration-room.js +121 -25
  232. package/src/server/domain/collaboration/protocol.js +4 -0
  233. package/src/server/domain/hosted-workspace.js +21 -0
  234. package/src/server/domain/markdown-reference-extractor.js +15 -1
  235. package/src/server/domain/ripgrep-search-service.js +110 -37
  236. package/src/server/infrastructure/git/git-service.js +19 -1
  237. package/src/server/infrastructure/git/history-service.js +1 -1
  238. package/src/server/infrastructure/git/local-exclude.js +25 -0
  239. package/src/server/infrastructure/git/parsers.js +19 -17
  240. package/src/server/infrastructure/git/path-utils.js +0 -16
  241. package/src/server/infrastructure/git/status-service.js +1 -1
  242. package/src/server/infrastructure/git/untracked-files.js +12 -21
  243. package/src/server/infrastructure/http/create-agent-api-handler.js +171 -0
  244. package/src/server/infrastructure/http/create-git-api-command-handler.js +32 -0
  245. package/src/server/infrastructure/http/create-request-handler.js +28 -0
  246. package/src/server/infrastructure/http/create-static-handler.js +6 -0
  247. package/src/server/infrastructure/mcp/create-agent-mcp-handler.js +199 -0
  248. package/src/server/infrastructure/persistence/agent-connection-store.js +120 -0
  249. package/src/server/infrastructure/persistence/path-utils.js +10 -4
  250. package/src/server/infrastructure/persistence/pull-backup-store.js +2 -27
  251. package/src/server/infrastructure/persistence/vault-file-store.js +11 -2
  252. package/src/server/shared/agent-tool-image.js +22 -0
  253. package/src/server/shared/agent-tool-rate-limiter.js +20 -0
  254. package/src/server/startup/git-remote-bootstrap.js +5 -33
  255. package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-BPH4FJkv.js +0 -1
  256. package/dist/client/assets/abnfDiagram-VCTEODGH-BNDLzJ7L.js +0 -1
  257. package/dist/client/assets/browser-utils--H_DkyEF.js +0 -1
  258. package/dist/client/assets/channel-CaoKA_We.js +0 -1
  259. package/dist/client/assets/chunk-DSNCTWBM-8xkug7fQ.js +0 -2
  260. package/dist/client/assets/chunk-DU6HZSFF-COXDzJK1.js +0 -127
  261. package/dist/client/assets/chunk-R7TYR2AO-CTd0Yj98.js +0 -10
  262. package/dist/client/assets/classDiagram-DTDB5LWJ-7fEmn0zV.js +0 -1
  263. package/dist/client/assets/classDiagram-v2-JRS7N3AN-7fEmn0zV.js +0 -1
  264. package/dist/client/assets/comment-threads-9J6Em-_y.js +0 -4
  265. package/dist/client/assets/comment-ui-shared-DWkk9Vh3.js +0 -7
  266. package/dist/client/assets/diagram-VSXAHHWV-CQRVEZR7.js +0 -3
  267. package/dist/client/assets/dist-73RPdcyU.js +0 -1
  268. package/dist/client/assets/dist-CH-sQu3r.js +0 -1
  269. package/dist/client/assets/drawio-editor-BjrxTe3l.js +0 -9
  270. package/dist/client/assets/drawioEditor-DUVZjSSr.js +0 -2
  271. package/dist/client/assets/ebnfDiagram-PWID7BFC-OXa8VEp1.js +0 -1
  272. package/dist/client/assets/editor-session-DfZuRgB_.js +0 -54
  273. package/dist/client/assets/embedded-editor-base-DvMynhKu.css +0 -1
  274. package/dist/client/assets/excalidraw-editor-D7pnUCLH.js +0 -9
  275. package/dist/client/assets/excalidraw-mermaid-stub-BNckbX2n.js +0 -1
  276. package/dist/client/assets/excalidraw-mermaid-stub-DE5FTiZB.js +0 -1
  277. package/dist/client/assets/excalidrawEditor-B0jOK3lv.js +0 -2
  278. package/dist/client/assets/export-page-Bs3xE1fg.js +0 -57
  279. package/dist/client/assets/exportDocument-Dg9MjkIk.js +0 -2
  280. package/dist/client/assets/exportDocument-PnYU3v1s.css +0 -1
  281. package/dist/client/assets/file-kind-BbqgGzpc.js +0 -1
  282. package/dist/client/assets/flowDiagram-A5DVABFB-CiW1eN8C.js +0 -1
  283. package/dist/client/assets/image-ZVKINSPA-0zXSnE7M.js +0 -1
  284. package/dist/client/assets/index-BIpgxyGZ.css +0 -1
  285. package/dist/client/assets/index-Z5sI0Bj-.js +0 -2
  286. package/dist/client/assets/main-Dwnj9Gaq.js +0 -903
  287. package/dist/client/assets/pegDiagram-XKGWAZYB-B31fKPR2.js +0 -1
  288. package/dist/client/assets/preview-render-compiler-BApvlLLo.js +0 -35
  289. package/dist/client/assets/preview-render-compiler-BQ_3h9vD.js +0 -1
  290. package/dist/client/assets/preview-render-profile-CE-5rVTC.js +0 -1
  291. package/dist/client/assets/prod-BiYPMR1i.js +0 -177
  292. package/dist/client/assets/prod-VxdGZ5Ly.js +0 -1
  293. package/dist/client/assets/quick-switcher-controller-ButWPmCI.js +0 -12
  294. package/dist/client/assets/railroadDiagram-O6MQD6OU-BPifP0MB.js +0 -1
  295. package/dist/client/assets/runtime-config-BLrEKVO1.js +0 -1
  296. package/dist/client/assets/stateDiagram-v2-4QOOHH4V-B--gjrit.js +0 -1
  297. package/dist/client/assets/swimlanesDiagram-VK2B7HYN-DO8XNXEg.js +0 -8
  298. package/dist/client/assets/vault-api-client-_LpV1aIn.js +0 -6
  299. package/dist/client/assets/vault-utils-wdQ0RNR9.js +0 -1
  300. package/src/client/app/drawio-editor-entry.js +0 -1
  301. package/src/client/app/excalidraw-editor-entry.js +0 -1
  302. package/src/client/excalidraw-mermaid-stub.js +0 -7
  303. package/src/client/main.js +0 -16
  304. /package/dist/client/assets/{drawio-editor-UQQ8XHou.css → drawioEditor-UQQ8XHou.css} +0 -0
  305. /package/dist/client/assets/{sizeCapture-X5ZJPWSS-B0uUizjq.js → sizeCapture-INFHLROL-B0uUizjq.js} +0 -0
@@ -1 +0,0 @@
1
- import{A as e,Ct as t,E as n,Ec as r,G as i,K as a,Li as o,Na as s,O as c,P as l,Pc as u,Q as d,S as f,So as p,Ut as m,Wa as h,Wo as g,Y as _,_n as v,a as y,ba as b,bc as x,ec as S,gc as C,hs as w,it as T,mn as E,oa as D,or as O,ps as k,sa as A,tl as j,tr as M,un as N,ut as P,vc as F,vn as I,w as L,wc as R,x as z,yc as B,yn as V,zt as H}from"./chunk-RM4UPSZO-CWRwxNWJ.js";import{A as U,C as W,D as G,E as K,F as q,I as J,L as Y,M as X,N as Z,O as Q,P as $,S as ee,T as te,_ as ne,a as re,b as ie,c as ae,d as oe,f as se,g as ce,h as le,i as ue,j as de,k as fe,l as pe,m as me,n as he,o as ge,p as _e,r as ve,s as ye,t as be,u as xe,v as Se,w as Ce,x as we,y as Te}from"./prod-BiYPMR1i.js";export{ue as Button,s as CaptureUpdateAction,Q as CommandPalette,C as DEFAULT_LASER_COLOR,c as DEFAULT_OVERSCROLL,Te as DefaultSidebar,be as DiagramToCodePlugin,de as Ellipsify,Z as Excalidraw,ne as ExcalidrawAPIContext,te as ExcalidrawAPIProvider,k as FONT_FAMILY,d as Fonts,he as Footer,U as LiveCollaborationTrigger,F as MIME_TYPES,re as MainMenu,S as ROUNDNESS,oe as Sidebar,ye as Stats,x as THEME,xe as TTDDialog,ae as TTDDialogTrigger,pe as TTDStreamFetch,g as UserIdleState,me as WelcomeScreen,p as applyDarkModeFilter,h as bumpVersion,b as convertToExcalidrawElements,$ as defaultLang,I as elementsOverlappingBBox,ce as exportToBlob,le as exportToCanvas,q as exportToClipboard,Y as exportToSvg,N as getCommonBounds,n as getDataURL,r as getFormFactor,ee as getLibraryItemsHash,o as getNonDeletedElements,H as getSceneVersion,B as getStrokeWidthByKey,P as getTextFromElements,t as getVisibleSceneBounds,v as hashElementsVersion,A as hashString,D as isElementLink,O as isInvisiblySmallElement,E as isLinearElement,W as isSpreadsheetValidForChartType,Ce as languages,_ as loadFromBlob,z as loadLibraryFromBlob,f as loadSceneOrLibraryFromBlob,X as mergeLibraryItems,m as mutateElement,V as newElementWith,w as normalizeLink,fe as parseLibraryTokensFromUrl,Se as reconcileElements,se as renderSpreadsheet,T as restoreAppState,a as restoreElement,i as restoreElements,l as restoreLibraryItems,u as sceneCoordsToViewportCoords,L as serializeAsJSON,e as serializeLibraryAsJSON,M as setCustomTextMetricsProvider,j as throttleRAF,ie as tryParseSpreadsheet,K as useEditorInterface,J as useExcalidrawAPI,we as useExcalidrawStateValue,ge as useHandleLibrary,ve as useI18n,_e as useOnExcalidrawStateChange,G as useStylesPanelMode,R as viewportCoordsToSceneCoords,y as zoomToFitBounds};
@@ -1,12 +0,0 @@
1
- import{g as e}from"./file-kind-BbqgGzpc.js";import{n as t}from"./vault-utils-wdQ0RNR9.js";import{t as n}from"./file-icon-svg-CQAjlWjK.js";var r=50;function i(e=0,{truncated:t=!1}={}){let n=Number(e)||0;return`${n}${t?`+`:``} ${n===1?`match`:`matches`}`}function a(e={}){let t=[];return(e.files??[]).forEach(e=>{(e.snippets??[]).forEach(n=>{t.push({column:n.column,file:e.file,kind:e.kind,line:n.line,matchLength:Math.max((n.matchEnd??0)-(n.matchStart??0),0),snippet:n})})}),t}var o=class{constructor({debounceMs:e=300,resultLimit:t=r}={}){this.debounceMs=e,this.resultLimit=t,this.controller=null,this.timer=null,this.token=0}abort({invalidate:e=!0}={}){clearTimeout(this.timer),this.timer=null,e&&(this.token+=1),this.controller?.abort(),this.controller=null}schedule({isActive:e=()=>!0,onResults:t,onState:n,query:r=``,searchConfig:i={},searchText:a=null}={}){let o=Math.max(Number(i.minQueryLength)||2,1);if(this.abort(),!i.available){n?.(`Global text search requires ripgrep on the server.`);return}if(!a){n?.(`Global text search is unavailable.`);return}if(r.length<o){n?.(`Type at least ${o} characters to search file text.`);return}n?.(`Searching...`),this.timer=setTimeout(()=>{this.run({isActive:e,onResults:t,onState:n,query:r,searchText:a})},this.debounceMs)}async run({isActive:e=()=>!0,onResults:t,onState:n,query:r=``,searchText:i}={}){let a=this.token+1;this.token=a;let o=new AbortController;this.controller=o;let s=()=>e()&&a===this.token&&this.controller===o;try{let e=await i({limit:this.resultLimit,query:r,signal:o.signal});s()&&t?.(e,r)}catch(e){if(e?.name===`AbortError`||!s())return;n?.(e?.body?.error||e?.message||`Failed to search file text.`)}finally{this.controller===o&&(this.controller=null)}}},s=30,c=2**53-1,l=`quick-switcher-file-`,u=`quick-switcher-text-`;function d(e){return String(e??``).split(`/`).pop()||String(e??``)}function f(t){let n=e(t),r=n.split(`/`).pop()||n,i=d(t);return{displayName:n,fileName:r,filePath:t,lowerDisplayName:n.toLowerCase(),lowerFileName:r.toLowerCase(),lowerPath:String(t).toLowerCase(),lowerRawFileName:i.toLowerCase()}}function p(t){let n=e(t);return n.split(`/`).pop()||n}function m(t){let n=e(t);return n.includes(`/`)?n.substring(0,n.lastIndexOf(`/`)):``}function h(e,t){return Array.from({length:t},(t,n)=>e+n)}function g(e,t){let n=[],r=0,i=0,a=0;for(let o=0;o<e.length&&r<t.length;o+=1){if(/\s/u.test(t[r])&&/[\s/\\_-]/u.test(e[o])){r+=1,a=0;continue}if(e[o]!==t[r]){r>0&&(i-=.25),a=0;continue}r+=1,n.push(o),a+=1,i+=a,(o===0||e[o-1]===`/`||e[o-1]===`-`||e[o-1]===`_`||e[o-1]===` `)&&(i+=5)}return r===t.length&&i>0?{indices:n,score:i}:null}function _(e,t){let n=e.lowerFileName.indexOf(t);if(n>=0)return{indices:h(n+(e.displayName.length-e.fileName.length),t.length),score:100+1/e.fileName.length};let r=e.lowerDisplayName.indexOf(t);if(r>=0)return{indices:h(r,t.length),score:50+1/e.displayName.length};let i=e.lowerRawFileName.indexOf(t);if(i>=0)return{indices:h(i+(e.displayName.length-e.fileName.length),t.length),score:40+1/e.lowerRawFileName.length};let a=e.lowerPath.indexOf(t);return a>=0?{indices:h(a,t.length),score:25+1/e.lowerPath.length}:g(e.lowerDisplayName,t)}function v(e,t=[]){let n=e.displayName.length-e.fileName.length;return{dirPath:t.filter(e=>e<n),fileName:t.filter(e=>e>=n).map(e=>e-n)}}function y(e,n=[]){if(n.length===0)return t(e);let r=new Set(n),i=``,a=null,o=0,s=n=>{i+=t(e.slice(o,a)),i+=`<mark>${t(e.slice(a,n+1))}</mark>`,o=n+1,a=null};for(let t=0;t<e.length;t+=1){if(!r.has(t)){a!==null&&s(t-1);continue}a===null&&(a=t)}return a!==null&&s(e.length-1),i+=t(e.slice(o)),i}var b=class{constructor({getFileList:e,getFileMetadata:t=()=>[],getRecentFiles:n=()=>[],getSearchConfig:r=()=>({}),onFileSelect:i,onTextMatchSelect:a=null,searchDebounceMs:s=300,searchText:c=null}){this.getFileList=e,this.getFileMetadata=t,this.getRecentFiles=n,this.getSearchConfig=r,this.onFileSelect=i,this.onTextMatchSelect=a,this.searchDebounceMs=s,this.searchText=c,this.overlay=document.getElementById(`quickSwitcher`),this.input=document.getElementById(`quickSwitcherInput`),this.resultsList=document.getElementById(`quickSwitcherResults`),this.hint=document.getElementById(`quickSwitcherHint`),this.scope=document.getElementById(`quickSwitcherScope`),this.modeTabs=Array.from(document.querySelectorAll?.(`[data-qs-mode]`)??[]);let l=this.getSearchConfig?.()??{},u=this.modeTabs.find(e=>e.dataset.qsMode===`text`);u&&l.available===!1&&(u.disabled=!0,u.setAttribute(`title`,l.unavailableReason||`Text search is unavailable`)),this.filteredFiles=[],this.fileMatches=new Map,this.fileMatchCount=0,this.fileResultsTruncated=!1,this.fileCorpus=[],this.lastFileListRef=null,this.selectedIndex=0,this.selectedTextIndex=0,this.isOpen=!1,this.previousActiveElement=null,this.mode=`files`,this.textResults=null,this.textResultItems=[],this.textSearchRunner=new o({debounceMs:this.searchDebounceMs}),this.bindEvents()}bindEvents(){this.overlay?.addEventListener(`mousedown`,e=>{e.target===this.overlay&&this.close()}),this.overlay?.addEventListener(`keydown`,e=>{e.key===`Escape`&&(e.preventDefault(),this.close())}),this.modeTabs.forEach((e,t)=>{e.addEventListener(`click`,()=>{this.setMode(e.dataset.qsMode===`text`?`text`:`files`,{preserveInput:!0}),this.input?.focus?.()}),e.addEventListener(`keydown`,e=>{if(e.key!==`ArrowLeft`&&e.key!==`ArrowRight`)return;e.preventDefault();let n=(t+(e.key===`ArrowRight`?1:-1)+this.modeTabs.length)%this.modeTabs.length,r=this.modeTabs[n];r.disabled||(this.setMode(r.dataset.qsMode===`text`?`text`:`files`,{preserveInput:!0}),r.focus())})}),this.input?.addEventListener(`input`,()=>{this.handleInput()}),this.input?.addEventListener(`keydown`,e=>{switch(e.key){case`ArrowDown`:e.preventDefault(),this.moveSelection(1);break;case`ArrowUp`:e.preventDefault(),this.moveSelection(-1);break;case`Enter`:e.preventDefault(),this.confirmSelection();break;case`Tab`:e.preventDefault(),this.modeTabs.filter(e=>!e.disabled).length>1&&!e.shiftKey?this.setMode(this.mode===`files`?`text`:`files`,{preserveInput:!0}):this.moveSelection(e.shiftKey?-1:1)}})}open(){this.overlay&&(this.previousActiveElement=document.activeElement,this.isOpen=!0,this.input.value=``,this.selectedIndex=0,this.selectedTextIndex=0,this.overlay.classList.add(`visible`),this.overlay.setAttribute(`aria-hidden`,`false`),this.input?.setAttribute(`aria-expanded`,`true`),this.setMode(`files`,{preserveInput:!0}),this._focusAfterTransition())}_focusAfterTransition(){this._cancelPendingFocus();let e=()=>{this._focusCleanup=null,this.input?.focus(),this.isOpen&&this.input&&document.activeElement!==this.input&&setTimeout(()=>this.input?.focus(),50)},t=r=>{(r.propertyName===`visibility`||r.propertyName===`opacity`)&&(this.overlay.removeEventListener(`transitionend`,t),clearTimeout(n),e())};this.overlay.addEventListener(`transitionend`,t);let n=setTimeout(()=>{this.overlay.removeEventListener(`transitionend`,t),e()},160);this._focusCleanup=()=>{this.overlay.removeEventListener(`transitionend`,t),clearTimeout(n)}}_cancelPendingFocus(){this._focusCleanup&&=(this._focusCleanup(),null)}close({restoreFocus:e=!0}={}){if(!this.overlay)return;let t=this.previousActiveElement;this._cancelPendingFocus(),this.abortTextSearch(),this.isOpen=!1,this.overlay.classList.remove(`visible`),this.overlay.setAttribute(`aria-hidden`,`true`),this.input?.setAttribute(`aria-expanded`,`false`),this.input.value=``,this.resultsList.innerHTML=``,this.setActiveDescendant(``),this.previousActiveElement=null,e&&t?.focus?.()}toggle(){this.isOpen?this.close():this.open()}setMode(e=`files`,{preserveInput:t=!1}={}){let n=this.modeTabs.find(e=>e.dataset.qsMode===`text`),r=e===`text`&&!n?.disabled?`text`:`files`;this.mode=r,this.selectedIndex=0,this.selectedTextIndex=0,!t&&this.input&&(this.input.value=``),this.modeTabs.forEach(e=>{let t=e.dataset.qsMode===r;e.classList.toggle(`active`,t),e.setAttribute(`aria-selected`,t?`true`:`false`),e.setAttribute(`tabindex`,t?`0`:`-1`)}),this.scope?.classList.toggle(`hidden`,r!==`text`),this.scope?.setAttribute(`aria-hidden`,r===`text`?`false`:`true`),this.input&&(this.input.placeholder=r===`text`?`Search text in files...`:`Search files...`,this.input.setAttribute(`aria-label`,r===`text`?`Search text in files`:`Search files`)),this.handleInput()}handleInput(){if(this.mode===`text`){this.scheduleTextSearch();return}this.abortTextSearch(),this.filterFiles()}filterFiles(){this.resultsList?.setAttribute(`aria-busy`,`false`);let e=this.input?.value.trim().toLowerCase().replace(/\s+/gu,` `)??``,t=this.getFileList?.()??[];t!==this.lastFileListRef&&(this.lastFileListRef=t,this.fileCorpus=t.map(e=>f(e))),this.fileMatches.clear();let n=this.getFileMetadata?.()??[],r=new Map((Array.isArray(n)?n:[]).map(e=>[e?.path,Number.isFinite(Number(e?.mtimeMs))?Number(e.mtimeMs):0])),i=this.getRecentFiles?.()??[],a=new Map((Array.isArray(i)?i:[]).map((e,t)=>[e,t]));if(!e)this.filteredFiles=[...this.fileCorpus].sort((e,t)=>{let n=(r.get(t.filePath)??0)-(r.get(e.filePath)??0);return n===0?(a.get(e.filePath)??c)-(a.get(t.filePath)??c):n}).slice(0,s).map(e=>e.filePath),this.fileMatchCount=this.fileCorpus.length;else{let t=[],n=0;this.fileCorpus.forEach(r=>{let i=_(r,e);if(!i)return;n+=1,this.fileMatches.set(r.filePath,i);let o={filePath:r.filePath,recentRank:a.get(r.filePath)??c,score:i.score},l=!1;for(let e=0;e<t.length;e+=1){let n=t[e];if(o.score>n.score||o.score===n.score&&(o.recentRank<n.recentRank||o.recentRank===n.recentRank&&r.lowerPath<String(n.filePath).toLowerCase())){t.splice(e,0,o),l=!0;break}}!l&&t.length<s&&t.push(o),t.length>s&&(t.length=s)}),this.filteredFiles=t.map(e=>e.filePath),this.fileMatchCount=n}this.fileResultsTruncated=this.fileMatchCount>s,this.selectedIndex=0,this.renderResults(e)}renderResults(e){if(!this.resultsList)return;if(this.resultsList.innerHTML=``,this.filteredFiles.length===0){this.setActiveDescendant(``),this.hint&&(this.hint.textContent=e?`No files found`:`No files in vault`,this.hint.classList.remove(`hidden`));return}if(this.hint){let t=this.fileResultsTruncated?e?`Showing the top ${s} of ${this.fileMatchCount} matches. Refine the query to narrow results.`:`Showing the first ${s} of ${this.fileMatchCount} files.`:``;this.hint.textContent=t,this.hint.classList.toggle(`hidden`,!t)}let r=document.createDocumentFragment();this.filteredFiles.forEach((e,i)=>{let a=document.createElement(`button`);a.type=`button`,a.className=`qs-result-item`,i===this.selectedIndex&&a.classList.add(`selected`),a.id=`${l}${i}`,a.setAttribute(`role`,`option`),a.setAttribute(`aria-selected`,i===this.selectedIndex?`true`:`false`),a.dataset.index=String(i);let o=d(e),s=m(e),c=this.fileMatches.get(e),u=this.fileCorpus.find(t=>t.filePath===e),f=u?v(u,c?.indices):{dirPath:[],fileName:[]};a.innerHTML=`
2
- ${n(e,{className:`qs-result-icon`})}
3
- <span class="qs-result-name">${y(o,f.fileName)}</span>
4
- ${s?`<span class="qs-result-path" title="${t(s)}">${y(s,f.dirPath)}</span>`:``}
5
- `,a.addEventListener(`click`,()=>{this.selectedIndex=i,this.confirmSelection()}),a.addEventListener(`mouseenter`,()=>{this.selectedIndex=i,this.updateSelection()}),r.appendChild(a)}),this.resultsList.appendChild(r),this.updateSelection()}abortTextSearch({invalidate:e=!0}={}){this.textSearchRunner.abort({invalidate:e})}scheduleTextSearch(){let e=this.input?.value.trim()??``,t=this.getSearchConfig?.()??{};this.textResults=null,this.textResultItems=[],this.textSearchRunner.schedule({isActive:()=>this.isOpen&&this.mode===`text`,onResults:(e,t)=>{this.textResults=e,this.textResultItems=a(e),this.selectedTextIndex=0,this.renderTextResults(t)},onState:e=>this.renderTextState(e),query:e,searchConfig:t,searchText:this.searchText})}renderTextState(e){this.resultsList&&(this.resultsList.innerHTML=``,this.resultsList.setAttribute(`aria-busy`,e===`Searching...`?`true`:`false`),this.setActiveDescendant(``),this.hint&&(this.hint.textContent=e,this.hint.classList.remove(`hidden`)))}renderTextResults(e=``){if(!this.resultsList)return;if(this.resultsList.innerHTML=``,this.resultsList.setAttribute(`aria-busy`,`false`),!this.textResults?.files?.length||this.textResultItems.length===0){this.setActiveDescendant(``),this.renderTextState(e?`No text matches found`:`Type to search file text`);return}if(this.hint){let e=this.textResults.truncated?`Showing partial results: ${this.textResults.files.length} files and ${i(this.textResults.matchCount,{truncated:!0})}. Refine the query to narrow results.`:``;this.hint.textContent=e,this.hint.classList.toggle(`hidden`,!e)}let n=document.createDocumentFragment(),r=0;this.textResults.files.forEach(e=>{let a=document.createElement(`section`);a.className=`qs-text-group`,a.setAttribute(`role`,`group`),a.setAttribute(`aria-label`,e.file);let o=document.createElement(`div`);o.className=`qs-text-group-header`,o.innerHTML=`
6
- <span class="qs-text-file-name">${t(p(e.file))}</span>
7
- <span class="qs-text-file-meta">${t(m(e.file))}</span>
8
- <span class="qs-text-count">${t(i(e.matchCount,{truncated:e.truncated}))}</span>
9
- `,a.appendChild(o),(e.snippets??[]).forEach(e=>{let n=r,i=document.createElement(`button`);i.type=`button`,i.className=`qs-text-item`,n===this.selectedTextIndex&&i.classList.add(`selected`),i.id=`${u}${n}`,i.setAttribute(`role`,`option`),i.setAttribute(`aria-selected`,n===this.selectedTextIndex?`true`:`false`),i.dataset.textIndex=String(n),i.innerHTML=`
10
- <span class="qs-text-line">L${t(String(e.line??1))}</span>
11
- <span class="qs-text-snippet">${this.highlightSnippet(e)}</span>
12
- `,i.addEventListener(`click`,()=>{this.selectedTextIndex=n,this.confirmSelection()}),i.addEventListener(`mouseenter`,()=>{this.selectedTextIndex=n,this.updateSelection()}),a.appendChild(i),r+=1}),n.appendChild(a)}),this.resultsList.appendChild(n),this.updateSelection()}highlightSnippet(e={}){let n=String(e.text??``),r=Math.min(Math.max(Number(e.matchStart)||0,0),n.length),i=Math.min(Math.max(Number(e.matchEnd)||r,r),n.length);return`${t(n.slice(0,r))}<mark>${t(n.slice(r,i))}</mark>${t(n.slice(i))}`}moveSelection(e){if(this.mode===`text`){if(this.textResultItems.length===0)return;this.selectedTextIndex=(this.selectedTextIndex+e+this.textResultItems.length)%this.textResultItems.length,this.updateSelection();return}this.filteredFiles.length!==0&&(this.selectedIndex=(this.selectedIndex+e+this.filteredFiles.length)%this.filteredFiles.length,this.updateSelection())}updateSelection(){if(!this.resultsList)return;if(this.mode===`text`){let e=this.resultsList.querySelectorAll(`.qs-text-item`);e.forEach((e,t)=>{let n=t===this.selectedTextIndex;e.classList.toggle(`selected`,n),e.setAttribute(`aria-selected`,n?`true`:`false`)}),e[this.selectedTextIndex]?.scrollIntoView({block:`nearest`}),this.setActiveDescendant(e[this.selectedTextIndex]?.id??``);return}let e=this.resultsList.querySelectorAll(`.qs-result-item`);e.forEach((e,t)=>{let n=t===this.selectedIndex;e.classList.toggle(`selected`,n),e.setAttribute(`aria-selected`,n?`true`:`false`)}),e[this.selectedIndex]?.scrollIntoView({block:`nearest`}),this.setActiveDescendant(e[this.selectedIndex]?.id??``)}setActiveDescendant(e=``){this.input?.setAttribute(`aria-activedescendant`,e)}confirmSelection(){if(this.mode===`text`){let e=this.textResultItems[this.selectedTextIndex];e&&(this.close({restoreFocus:!1}),this.onTextMatchSelect?.(e));return}let e=this.filteredFiles[this.selectedIndex];e&&(this.close({restoreFocus:!1}),this.onFileSelect?.(e))}};export{b as QuickSwitcherController};
@@ -1 +0,0 @@
1
- import{n as e}from"./chunk-OUJLGHUK-D0j2JRSg.js";import{n as t}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as n}from"./src-oBChb5qS.js";import"./chunk-DU6HZSFF-COXDzJK1.js";import"./chunk-CLGD4ZFX-DQLgbQrv.js";import{n as r,r as i,t as a}from"./chunk-SVP7TREG-CyHOmcac.js";import{t as o}from"./chunk-JWPE2WC7-DVXcaiue.js";import{t as s}from"./mermaid-parser.core-Bl0efOMt.js";var c=e().Railroad.parser.LangiumParser,l=t(e=>{switch(e.$type){case`RailroadTerminalExpr`:return{type:`terminal`,value:e.value};case`RailroadNonTerminalExpr`:return{type:`nonterminal`,name:e.name};case`RailroadSpecialExpr`:return{type:`special`,text:e.text};case`RailroadSequenceExpr`:{let t=e.elements.map(l);return t.length===1?t[0]:{type:`sequence`,elements:t}}case`RailroadChoiceExpr`:{let t=e.alternatives.map(l);return t.length===1?t[0]:{type:`choice`,alternatives:t}}case`RailroadOptionalExpr`:return{type:`optional`,element:l(e.element)};case`RailroadOneOrMoreExpr`:return{type:`repetition`,element:l(e.element),min:1,max:1/0};case`RailroadZeroOrMoreExpr`:return{type:`repetition`,element:l(e.element),min:0,max:1/0};default:throw Error(`Unsupported railroad expression: ${e.$type}`)}},`transformExpression`),u=t(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),d=t(e=>{o(e,a),e.title&&a.setTitle(e.title),e.rules.map(e=>a.addRule(u(e)))},`populateDb`),f={parser:{parse:t(e=>{a.clear(),n.debug(`[Railroad Parser] Starting Langium parse`);let t=c.parse(e);if(t.lexerErrors.length>0||t.parserErrors.length>0)throw new s(t);let r=t.value;n.debug(`[Railroad Parser] Parsed rules:`,r.rules.length),d(r),n.debug(`[Railroad Parser] Parse complete`)},`parse`),parser:{yy:a}},db:a,renderer:i,styles:r};export{f as diagram};
@@ -1 +0,0 @@
1
- var e=Object.freeze({authError:`auth_error`,authPassword:`auth_password`,file:`file`,gitCommit:`git-commit`,gitDiff:`git-diff`,gitFileHistory:`git-file-history`,gitFilePreview:`git-file-preview`,gitHistory:`git-history`});function t(e=``){let t=String(e??``),n=t.startsWith(`#`)?t.slice(1):t;return new URLSearchParams(n)}function n(e=``){let t=String(e??``);return t.startsWith(`#`)?t.slice(1):t}function r(r=``){if(!n(r).trim().includes(`=`))return!1;let i=t(r);return Object.values(e).some(e=>i.has(e))}function i(t,{anchor:n=null,column:r=null,drawioMode:i=null,line:a=null,matchLength:o=null}={}){let s=new URLSearchParams;return t&&s.set(e.file,t),i&&s.set(`drawio`,i),n&&s.set(`anchor`,String(n).trim()),a!=null&&s.set(`line`,String(Math.max(1,Math.round(Number(a)||1)))),r!=null&&s.set(`column`,String(Math.max(1,Math.round(Number(r)||1)))),o!=null&&s.set(`matchLength`,String(Math.max(0,Math.round(Number(o)||0)))),s.toString()}function a(e){return e.endsWith(`/`)?e.slice(0,-1):e}function o(e){let t=a(String(e??``).trim());if(!t||t===`/`)return``;if(/^[a-zA-Z][a-zA-Z\d+.-]*:/u.test(t))try{return o(new URL(t).pathname)}catch{return``}return t.startsWith(`/`)?t:`/${t}`}function s(e,t){let n=a(String(e??``).trim());return!n||n===`/`?t:n.startsWith(`/`)?n:`/${n}`}function c(e,t){let n=o(e),r=String(t??``).trim();return r?/^[a-zA-Z][a-zA-Z\d+.-]*:/u.test(r)||n&&(r===n||r.startsWith(`${n}/`))?r:r===`/`?n||`/`:r.startsWith(`/`)?n?`${n}${r}`:r:n?`${n}/${r}`:`/${r}`:n||`/`}function l(){let e={auth:{enabled:!1,implemented:!0,loginEndpoint:`/api/auth/oidc/login`,provider:``,requiresLogin:!1,sessionEndpoint:`/api/auth/session`,statusEndpoint:`/api/auth/status`,strategy:`none`},basePath:``,build:{id:``,packageVersion:``},drawioBaseUrl:`https://embed.diagrams.net`,environment:`development`,gitEnabled:!0,publicWsBaseUrl:``,search:{available:!1,backend:`ripgrep`,minQueryLength:2,unavailableReason:`ripgrep search is unavailable`,version:``},structurizrEnabled:!1,wikiLinkAutoCreate:!0,wsBasePath:`/ws`,...window.__COLLABMD_CONFIG__??{}},t=o(e.basePath),n={enabled:!1,implemented:!0,loginEndpoint:`/api/auth/oidc/login`,provider:``,requiresLogin:!1,sessionEndpoint:`/api/auth/session`,statusEndpoint:`/api/auth/status`,strategy:`none`,...e.auth??{}},r={id:``,packageVersion:``,...e.build??{}};return{...e,auth:{...n,loginEndpoint:c(t,n.loginEndpoint),sessionEndpoint:c(t,n.sessionEndpoint),statusEndpoint:c(t,n.statusEndpoint)},basePath:t,build:r,wsBasePath:s(e.wsBasePath,`/ws`)}}function u(e=`/`,t=l()){return c(t.basePath,e)}function d(e=`/`,t=l()){return new URL(u(e,t),window.location.origin).toString()}function f(e=`/`,t=l()){let n=String(e??``).trim();return!n||n===`/`?u(`/api`,t):n.startsWith(`/api`)?u(n,t):u(`/api${n.startsWith(`/`)?n:`/${n}`}`,t)}function p(e=l()){if(![`development`,`test`].includes(e.environment))return``;let t=new URLSearchParams(window.location.search).get(`server`);if(!t)return``;try{let e=new URL(t,window.location.origin);return[`http:`,`https:`,`ws:`,`wss:`].includes(e.protocol)?a(e.toString()):``}catch{return``}}function m(e=l()){return p(e)||(e.publicWsBaseUrl?a(e.publicWsBaseUrl):`${window.location.protocol===`https:`?`wss:`:`ws:`}//${window.location.host}${u(e.wsBasePath,e)}`)}function h(){return l()}function g(){return t(window.location.hash)}function _(e){return e===`staged`||e===`all`||e===`working-tree`?e:`all`}function v(){let t=g();if(t.has(e.gitFilePreview)){let n=t.get(e.gitFilePreview)||null;return{currentFilePath:t.get(`current`)||n,filePath:n,hash:t.get(`hash`)||null,type:`git-file-preview`}}if(t.has(e.gitFileHistory))return{filePath:t.get(e.gitFileHistory)||null,type:`git-file-history`};if(t.has(e.gitHistory))return{type:`git-history`};if(t.has(e.gitCommit))return{hash:t.get(e.gitCommit)||null,historyFilePath:t.get(`history`)||null,path:t.get(`path`)||null,type:`git-commit`};if(t.has(e.gitDiff)){let n=t.get(e.gitDiff)||null;return{filePath:n,scope:_(t.get(`scope`)||(n?`working-tree`:`all`)),type:`git-diff`}}return t.has(e.file)?{anchor:t.get(`anchor`)||null,column:t.has(`column`)&&Number(t.get(`column`))||null,drawioMode:t.get(`drawio`)||null,filePath:t.get(e.file),line:t.has(`line`)&&Number(t.get(`line`))||null,matchLength:t.has(`matchLength`)&&Number(t.get(`matchLength`))||null,type:`file`}:{type:`empty`}}function y(e,{anchor:t=null,column:n=null,drawioMode:r=null,line:a=null,matchLength:o=null}={}){window.location.hash=i(e,{anchor:t,column:n,drawioMode:r,line:a,matchLength:o})}function b({filePath:e=null,scope:t=`all`}={}){let n=new URLSearchParams;n.set(`git-diff`,e??``),n.set(`scope`,_(t)),window.location.hash=n.toString()}function x({hash:e,path:t=null,historyFilePath:n=null}={}){let r=String(e??``).trim(),i=new URLSearchParams;i.set(`git-commit`,r),n&&i.set(`history`,n),t&&i.set(`path`,t),window.location.hash=i.toString()}function S(){let e=new URLSearchParams;e.set(`git-history`,`1`),window.location.hash=e.toString()}function C({filePath:e}={}){let t=new URLSearchParams;t.set(`git-file-history`,e??``),window.location.hash=t.toString()}function w({hash:e,path:t,currentFilePath:n=null}={}){let r=String(e??``).trim(),i=new URLSearchParams;i.set(`git-file-preview`,t??``),n&&i.set(`current`,n),i.set(`hash`,r),window.location.hash=i.toString()}export{b as a,S as c,d,m as f,r as g,t as h,x as i,f as l,i as m,h as n,C as o,p,y as r,w as s,v as t,u};
@@ -1 +0,0 @@
1
- import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import"./src-oBChb5qS.js";import"./chunk-DU6HZSFF-COXDzJK1.js";import"./chunk-75Z2AOVW-CdFSaPjz.js";import"./chunk-PWAF6VOD-Cz8IwBB5.js";import"./chunk-GMAD6QVW-CbcBqPM5.js";import"./chunk-P2QGCYS3-BRpqY32H.js";import"./chunk-TEH6E4GO-DVayPj-q.js";import"./chunk-OBVCFTLP-BJR7u1jh.js";import"./chunk-R7TYR2AO-CTd0Yj98.js";import"./chunk-F27PBJKO-CNHIFhjo.js";import"./chunk-XXDRQBXY-BvKO0v-W.js";import"./chunk-POPQ4Y6H-Cb4SlVZF.js";import"./chunk-JQ64N6SF-DSFNH4bh.js";import"./chunk-CKBBP62Z-DG26UiBv.js";import{i as t,n,r,t as i}from"./chunk-G27WJ6UU-D9-eg537.js";var a={parser:n,get db(){return new i(2)},renderer:r,styles:t,init:e(e=>{e.state||={},e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
@@ -1,8 +0,0 @@
1
- import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import"./src-oBChb5qS.js";import"./chunk-DU6HZSFF-COXDzJK1.js";import"./chunk-75Z2AOVW-CdFSaPjz.js";import"./chunk-PWAF6VOD-Cz8IwBB5.js";import"./chunk-GMAD6QVW-CbcBqPM5.js";import"./chunk-P2QGCYS3-BRpqY32H.js";import"./chunk-TEH6E4GO-DVayPj-q.js";import"./chunk-OBVCFTLP-BJR7u1jh.js";import"./chunk-R7TYR2AO-CTd0Yj98.js";import"./chunk-F27PBJKO-CNHIFhjo.js";import"./chunk-XXDRQBXY-BvKO0v-W.js";import"./chunk-POPQ4Y6H-Cb4SlVZF.js";import"./chunk-JQ64N6SF-DSFNH4bh.js";import"./chunk-CKBBP62Z-DG26UiBv.js";import"./chunk-LNGE3PJU-DWpGwHrW.js";import{r as t,t as n}from"./chunk-RHFEMEQ7-CWY8cf4H.js";var r=n({defaultLayout:`swimlane`,styles:e(e=>`${t(e)}
2
- .swimlane.cluster rect {
3
- stroke: ${e.clusterBorder} !important;
4
- }
5
- [data-look="neo"].cluster rect {
6
- filter: none;
7
- }
8
- `,`getStyles`)});export{r as diagram};
@@ -1,6 +0,0 @@
1
- import{a as e,d as t,g as n,m as r,p as i,s as a}from"./file-kind-BbqgGzpc.js";import{h as o,l as s,n as c}from"./runtime-config-BLrEKVO1.js";import{i as l,n as u}from"./browser-utils--H_DkyEF.js";var d={enabled:!1,implemented:!0,loginEndpoint:`/api/auth/oidc/login`,passwordLabel:`Password`,provider:``,requiresLogin:!1,sessionEndpoint:`/api/auth/session`,statusEndpoint:`/api/auth/status`,strategy:`none`,submitLabel:`Continue`},f=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAIAAAABc2X6AAAGsklEQVR4Ae3cA3jsShgG4Gvbtu1js7aObdu2bdbudmvbtu1VtUg2ydw7x95mstnt5rZ5voflG80/fzL72L89bOsF94J7wWgb2dSgiAzpPHmwbfPK1qWzxDNsRdb6Ar2BgtF9hSbDRbYG4mk2beuXwm+Q89yV+TmAILgHptrb5DyPtg3LhBZjBCP+RovewNZlc2TOl8nGel0HA4LA4qPhkRSM6XcHoEYk86fIfT2AQqFzYIBjMncHofkoZBWNCM1GSq+cpdpadQIMKEoRzIeXIroEkW08TObpDAiiO8F4Tga85TBnoEc8xVKZm9UNYECS0stnBCP/Ud+AnJH/SC+eAiShPTDZ3CRZPIN9CUokC6ZSYqE2wHhmKhw/2TegR2RnSFSUaRaMJccLxg7QsAQhktkTAACaAmOxkbA80h2taKIZKWzR1BFWRAQLRvXhphYdDEtcWDxxU4sOhjdDkdVYbmrRwYAgJIums3RTNWrftbHz/AmZh5MiLBAGVqOdZ4+1790inmrFvpYZuPPEATWdknmT5f7eZEN9V2N7o9zPu3XNInQte2BlcYE6tVTbltXw4kf9h5QlhW3rliBr1QcDAODsjPFlhmelqfNvKQty4S9B0KoPVgTxmWk7Tx0COMZCF6GzA3ZC0LWMwJSsTWiOXj+O6iP382KzowAAvMOhaxmAqw/Ijr4tGPsHgnbsACwxlpNNPABIIv5LIvxpzOVlkdXPNMGK8CCudi2pFi+ovRFlwLOtc7/uUgvnxhxu05LpIyD17nTu+EAw8q9HaVtXzgcAcBUMcAER/sx9YBj5pdeExr897NLtT9TVcLgRTzVcgbyHBuc9L5n8PdLJzAEwmWP1KDCMMvTp9jWf3tbC1gdQKDgMBhRBRL0GYaojO35zxOo8fZjbz5ZAZz700Anm9pLI9g+yoY7bYKrJBWJoRpk8SJ0/fDoc13QuRuNdgMmydfTBZPkGdcDDd0q1EDkOVIKzTOiDKVGY7oPLmylVYCKlL30wIKW6D44tJlSCE76nC45+CwHXfWDfdKVKcMwHdMEJ33MC7JqEqwRHvEgXnDaYE+ArMayBB3ECDAennnVKn4tUDU74gS446k1OgB3i8Z41LHmkKHtW4eGfpRpctv5/VlomlxOsTR6kKQN1H1wnptiZHpYFv27pMbqus4kxOChbySzTz8loakfukhIkYKEBEBzw6SBXk79cLQ5lXv5XuxtJAaMDdA/v+JMydVs8irBnDvB+g9QbGeY1SUFg2gTn1JD0z+cdPIVaTbym0JemeQ6FzrtzJtdFm+DT4Rh9MD9DybxNmxL03mg3g/u0MP3cbWo6GrWjbZMBg/0Id6wqAcWwEX+F/10fVzPIe2jmRW3VTiP+VBjC4bU6KgMAID9qaQt9frl3P6hSndOaP7HrxdSYPQiH92QYhvAwTRH7KdSWBL9h5j4GeugkqDpWc1oZBqaelSGNwMWNJMLjUkHxBn//zwZeH3topr+7bWxDmia0AID17gok7aTTMrTnw1KsfZTPVMhAyj9uVl5lIexqcQLs4KFpYXjpSjQw3HwrIqCBQQ5mXsZInBWtoIOac1GOqrU4IsUJwOSllsmha5iZTf3npzXnqXka+1dFmzo4D9vZgQp2TsAZvrZUIC7729WSmRlmVfz+HGExKpUCVGJj1oSQlTd+SZ9Lm4bubqKvtTkmk+OAIRhu+zMu3jEwyqTQ1d7lofWdzV0VyWSxpPJkjpOB76z7fsPfjjOHHMhBb0QzAhMUMS18nRrgOzHkz96YdPR4toNTMT+gKjq4OtatNPBCvgfcp9PD1w/wsFP14y7WA4/zu9SudVWw8HKpUC4Zw5uOLmQ//c4fGrZL8iit+WEpvMmxAIZbtrCor7uNLpj/ubpk6N6Kh059M6tINl8Qh4UUHGa73wzjNGHQ4dj7wC6JOPtLACLqkvq4WeuE2cWi/+nLt0csOKnQ1CKP+IYMWELqgPnGiLVh6O7Go8GYZpfxpDbnwkaHjpj3JfLRV7Wgb01SARxIupc6wntyfGOG9pbikRQJmzvodRg7mRq2tkkm7IbFlhktBdaBS7SsPZx1haDIbltOSwGKXxl5px7UZGaEb8gXlerEgmmMxB2KfEciTKHRAsvbmPo0nVsST1BEdH3Kyrh9bJVlQ7wmbk05USSu0PUPPWjDOtxLg5bF7h7tM42B08x//o7U0/AmrCSV3PtYiwZpS3B13MHMS/DIz4rYaBO0VM93JpwbwaJtqNfEsbwZFgEL50VtgcJLBV6wK9aKtfd+cEkvuBfcC37k9h8VGR+csPdltgAAAABJRU5ErkJggg==`;function p(){return{...d,...c().auth??{}}}function m(){return o(window.location.hash).get(`auth_password`)||``}function h(){let e=o(window.location.hash);if(!e.has(`auth_password`))return;e.delete(`auth_password`);let t=e.toString(),n=`${window.location.pathname}${window.location.search}${t?`#${t}`:``}`;window.history.replaceState(null,``,n)}function g(e){let t=o(window.location.hash),n=t.get(e)||``;if(!n)return``;t.delete(e);let r=t.toString(),i=`${window.location.pathname}${window.location.search}${r?`#${r}`:``}`;return window.history.replaceState(null,``,i),n}function _(){return`${window.location.pathname}${window.location.search}${window.location.hash}`}async function v(e){let t=await fetch(e.statusEndpoint,{headers:{Accept:`application/json`}}),n=await t.json().catch(()=>({}));if(!t.ok)throw Error(n.error||`Failed to read auth status`);return n}function y(e){let t=e?.auth??{};if(t.strategy!==`oidc`||t.provider!==`google`)return;let n=String(e?.user?.name??``).trim();if(n)try{window.localStorage.setItem(`collabmd-user-name`,n)}catch{}}async function b(e,t){let n=await fetch(e.sessionEndpoint,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({password:t})}),r=await n.json().catch(()=>({}));if(!n.ok)throw Error(r.error||`Authentication failed`);return r}function x(){let e=document.createElement(`div`);e.className=`auth-gate-overlay`;let t=document.createElement(`section`);return t.className=`auth-gate-card`,e.append(t),{card:t,overlay:e}}function S(){let e=document.createElement(`span`);e.className=`auth-gate-button__icon`,e.setAttribute(`aria-hidden`,`true`);let t=document.createElement(`img`);return t.alt=``,t.decoding=`async`,t.height=20,t.loading=`eager`,t.src=f,t.width=20,e.append(t),e}function C(e,t,{errorMessage:n=``}){e.replaceChildren();let r=document.createElement(`h1`);r.textContent=`Authentication required`;let i=document.createElement(`p`);i.textContent=`Sign in with Google to join this session.`;let a=document.createElement(`div`);a.className=`auth-gate-actions`;let o=document.createElement(`button`);o.className=`ui-button ui-button--secondary auth-gate-button auth-gate-button--google`,o.type=`button`,o.append(S(),document.createTextNode(t.submitLabel||`Continue with Google`));let s=document.createElement(`div`);s.className=`auth-gate-error`,s.textContent=n,a.append(o),e.append(r,i,s,a),o.addEventListener(`click`,()=>{let e=new URL(t.loginEndpoint,window.location.origin);e.searchParams.set(`returnTo`,_()),window.location.assign(e.toString())})}function w(e,{title:t,body:n,secondaryActionLabel:r=``,onSecondaryAction:i=null}){e.replaceChildren();let a=document.createElement(`h1`);a.textContent=t;let o=document.createElement(`p`);if(o.textContent=n,e.append(a,o),r&&typeof i==`function`){let t=document.createElement(`button`);t.className=`ui-button ui-button--secondary auth-gate-secondary-button`,t.type=`button`,t.textContent=r,t.addEventListener(`click`,()=>{i()}),e.append(t)}}function T(e,t,{onSubmit:n}){e.replaceChildren();let r=document.createElement(`h1`);r.textContent=`Authentication required`;let i=document.createElement(`p`);i.textContent=`Enter the host password to join this shared session.`;let a=document.createElement(`form`);a.className=`auth-gate-form`;let o=document.createElement(`label`);o.className=`auth-gate-label`,o.textContent=t.passwordLabel;let s=document.createElement(`input`);s.className=`ui-input auth-gate-input`,s.type=`password`,s.name=`password`,s.autocomplete=`current-password`,s.required=!0;let c=document.createElement(`div`);c.className=`auth-gate-error`;let l=document.createElement(`div`);l.className=`auth-gate-actions`;let u=document.createElement(`button`);u.className=`ui-button ui-button--primary auth-gate-button`,u.type=`submit`,u.textContent=t.submitLabel,l.append(u),o.append(s),a.append(r,i,o,c,l),e.append(a),a.addEventListener(`submit`,e=>{e.preventDefault();let t=s.value;s.disabled=!0,u.disabled=!0,c.textContent=``,n(t).catch(e=>{c.textContent=e instanceof Error?e.message:`Authentication failed`,s.disabled=!1,u.disabled=!1,s.select(),s.focus()})}),queueMicrotask(()=>{s.focus()})}async function E(){let e=p();if(!e.enabled||e.strategy===`none`)return{authenticated:!0,auth:e};let{card:t,overlay:n}=x();document.body.append(n);let r=g(`auth_error`);return new Promise(i=>{let a=(t=null)=>{h(),y(t),n.remove(),i({authenticated:!0,auth:t?.auth??e,user:t?.user??null})};(async()=>{w(t,{body:`Checking access to this session…`,title:`CollabMD`});try{let t=await v(e);if(t.authenticated){a(t);return}}catch(e){w(t,{body:e instanceof Error?`${e.message} Refresh the page and try again.`:`Failed to contact the auth service. Refresh the page and try again.`,title:`Cannot verify access`});return}if(e.strategy===`password`){let n=m();if(n)try{h(),await b(e,n),a();return}catch{}T(t,e,{onSubmit:async t=>{await b(e,t),a()}});return}if(e.strategy===`oidc`){C(t,e,{errorMessage:r}),r=``;return}w(t,{body:`This authentication strategy is not available.`,title:`Authentication unavailable`})})()})}function D(e){return!e||e.repeat||!e.metaKey&&!e.ctrlKey||e.shiftKey||e.altKey?!1:String(e.key??``).toLowerCase()===`k`||e.code===`KeyK`}function O(e){let t=String(e??``).trim().replace(/\\/g,`/`).replace(/^\/+/u,``).split(`/`).map(e=>e.trim()).filter(Boolean);return t.some(e=>e===`.`||e===`..`)?``:t.join(`/`)}function k(e,t){let n=O(e),r=O(t);return n?r?`${n}/${r}`:n:r}function A(e=``){return String(e??``).replace(/\/+$/u,``).split(`/`).filter(Boolean).pop()||``}function j(e=``){let t=String(e??``).replace(/\/+$/u,``),n=t.lastIndexOf(`/`);return n>=0?t.slice(0,n):``}function M(e,t){return e.toLowerCase().endsWith(t.toLowerCase())?e:`${e}${t}`}function N(e){return`# ${n(String(e??``).split(`/`).pop()||``)||`Untitled`}\n\n`}function P(t){let n=O(t),r=e(n)?n:`${n}.base`;return{content:[`views:`,` - type: table`,` name: Table`,` order:`,` - file.name`,``].join(`
2
- `),path:r}}function F(e){let n=O(e),r=t(n)?n:`${n}.mmd`;return{content:[`flowchart TD`,` A[Start] --> B{Decide}`,` B -->|Yes| C[Ship it]`,` B -->|No| D[Revise]`,``].join(`
3
- `),path:r}}function I(e){let t=O(e),n=a(t)?t:`${t}.drawio`;return{content:[`<mxfile host="app.diagrams.net" modified="2026-01-01T00:00:00.000Z" agent="CollabMD" version="24.7.17">`,` <diagram id="page-1" name="Page-1">`,` <mxGraphModel dx="1200" dy="800" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">`,` <root>`,` <mxCell id="0" />`,` <mxCell id="1" parent="0" />`,` </root>`,` </mxGraphModel>`,` </diagram>`,`</mxfile>`,``].join(`
4
- `),path:n}}function L(e){let t=O(e),n=i(t)?t:`${t}.puml`;return{content:[`@startuml`,`Alice -> Bob: Hello`,`@enduml`,``].join(`
5
- `),path:n}}function R(e){let t=O(e),n=r(t)?t:`${t}.dsl`;return{content:`workspace "CollabMD Example" "A small Structurizr workspace" {, model {, user = person "User" "Uses the system", system = softwareSystem "Example System" "The system being documented" {, web = container "Web Application" "Serves the user interface" "JavaScript" {, home = component "Home Page" "Shows the landing page" "React", editor = component "Editor" "Edits workspace content" "React", }, api = container "API" "Handles requests" "Node.js", }, user -> system "Uses", web -> api "Calls" "HTTPS/JSON", home -> editor "Links to", }, views {, systemContext system "Context" {, include *, autoLayout, }, container system "Containers" {, include *, autoLayout, }, component web "Components" {, include *, autoLayout, }, styles {, element "Person" {, shape person, }, }, },},`.split(`,`).join(`
6
- `),path:n}}function z(e,t={}){let n={...t};return e&&(n[`X-CollabMD-Request-Id`]=String(e)),n}async function B(e,t){let n=await e.json().catch(()=>({}));if(!e.ok||n.ok===!1){let r=Error(n.error||t);throw r.status=e.status,r.body=n,typeof n?.code==`string`&&(r.code=n.code),r}return n}function V(e){return encodeURIComponent(String(e??``))}async function H(e,{fallbackError:t,fallbackFileName:n}={}){let r=await fetch(e);if(!r.ok){let e=await r.json().catch(()=>({}));throw Error(e.error||t)}let i=await r.blob();return u(i,l(r.headers.get(`content-disposition`)||``,n),{removeDelayMs:0,revokeDelayMs:0}),r}var U=new class{async readTree(){return B(await fetch(s(`/files`)),`Failed to load file tree`)}async readCommentOverview(){return B(await fetch(s(`/comments/overview`)),`Failed to load comment overview`)}async readFile(e){return B(await fetch(s(`/file?path=${encodeURIComponent(e)}`)),`Failed to read file`)}async readBacklinks(e,{signal:t}={}){let n=await B(await fetch(s(`/backlinks?file=${encodeURIComponent(e)}`),{signal:t}),`Failed to load backlinks`);return Array.isArray(n.backlinks)?n.backlinks:[]}async syncStructurizrWorkspace({path:e,source:t}){return B(await fetch(s(`/structurizr/sync`),{body:JSON.stringify({path:e,source:t}),headers:{"Content-Type":`application/json`},method:`POST`}),`Failed to sync Structurizr workspace`)}async renderSvg(e){let t=await B(await fetch(s(`/plantuml/render`),{body:JSON.stringify({source:e}),headers:{"Content-Type":`application/json`},method:`POST`}),`Failed to render PlantUML`);if(!t.ok||typeof t.svg!=`string`)throw Error(t.error||`Failed to render PlantUML`);return t.svg}async searchText({limit:e=50,query:t=``,signal:n=null}={}){let r=new URLSearchParams({limit:String(e),q:String(t??``)});return B(await fetch(s(`/search?${r.toString()}`),{signal:n}),`Failed to search files`)}async queryBase({activeFilePath:e=``,path:t=``,search:n=``,source:r=null,sourcePath:i=``,view:a=``}={}){return B(await fetch(s(`/base/query`),{body:JSON.stringify({activeFilePath:e,path:t,search:n,source:r,sourcePath:i,view:a}),headers:{"Content-Type":`application/json`},method:`POST`}),`Failed to query base`)}async exportBaseCsv({activeFilePath:e=``,path:t=``,search:n=``,source:r=null,sourcePath:i=``,view:a=``}={}){let o=await fetch(s(`/base/export`),{body:JSON.stringify({activeFilePath:e,path:t,search:n,source:r,sourcePath:i,view:a}),headers:{"Content-Type":`application/json`},method:`POST`});if(!o.ok){let e=await o.json().catch(()=>({}));throw Error(e.error||`Failed to export base CSV`)}return{blob:await o.blob(),contentDisposition:o.headers.get(`content-disposition`)||``}}async queryBasePropertyValues({activeFilePath:e=``,path:t=``,propertyId:n=``,query:r=``,source:i=null,sourcePath:a=``,view:o=``}={}){return B(await fetch(s(`/base/property-values`),{body:JSON.stringify({activeFilePath:e,path:t,propertyId:n,query:r,source:i,sourcePath:a,view:o}),headers:{"Content-Type":`application/json`},method:`POST`}),`Failed to load base property values`)}async transformBase({activeFilePath:e=``,mutation:t=null,path:n=``,source:r=null,sourcePath:i=``,view:a=``}={}){return B(await fetch(s(`/base/transform`),{body:JSON.stringify({activeFilePath:e,mutation:t,path:n,source:r,sourcePath:i,view:a}),headers:{"Content-Type":`application/json`},method:`POST`}),`Failed to transform base`)}async createFile({content:e,path:t,requestId:n=null}){return B(await fetch(s(`/file`),{body:JSON.stringify({content:e,path:t}),headers:z(n,{"Content-Type":`application/json`}),method:`POST`}),`Failed to create file`)}async writeFile({content:e,path:t,requestId:n=null}){return B(await fetch(s(`/file`),{body:JSON.stringify({content:e,path:t}),headers:z(n,{"Content-Type":`application/json`}),method:`PUT`}),`Failed to write file`)}async renameFile({oldPath:e,newPath:t,requestId:n=null}){return B(await fetch(s(`/file`),{body:JSON.stringify({newPath:t,oldPath:e}),headers:z(n,{"Content-Type":`application/json`}),method:`PATCH`}),`Failed to rename file`)}async deleteFile(e,{requestId:t=null}={}){return B(await fetch(s(`/file?path=${encodeURIComponent(e)}`),{headers:t?z(t):void 0,method:`DELETE`}),`Failed to delete file`)}async createDirectory(e,{requestId:t=null}={}){return B(await fetch(s(`/directory`),{body:JSON.stringify({path:e}),headers:z(t,{"Content-Type":`application/json`}),method:`POST`}),`Failed to create folder`)}async renameDirectory({oldPath:e,newPath:t,requestId:n=null}){return B(await fetch(s(`/directory`),{body:JSON.stringify({newPath:t,oldPath:e}),headers:z(n,{"Content-Type":`application/json`}),method:`PATCH`}),`Failed to rename folder`)}async deleteDirectory(e,{recursive:t=!1,requestId:n=null}={}){let r=new URLSearchParams({path:String(e??``)});return t&&r.set(`recursive`,`1`),B(await fetch(s(`/directory?${r.toString()}`),{headers:n?z(n):void 0,method:`DELETE`}),`Failed to delete folder`)}async uploadImageAttachment({file:e,fileName:t=``,sourcePath:n}){return B(await fetch(s(`/attachments`),{body:e,headers:{"Content-Type":e?.type||`application/octet-stream`,"X-CollabMD-File-Name":V(t),"X-CollabMD-Source-Path":V(n)},method:`POST`}),`Failed to upload image`)}async uploadFile({file:e,path:t,requestId:n=null}){return B(await fetch(s(`/file/upload`),{body:e,headers:z(n,{"Content-Type":e?.type||`application/octet-stream`,"X-CollabMD-File-Path":V(t)}),method:`POST`}),`Failed to upload file`)}async downloadFile(e){let t=A(e)||`download`;return H(s(`/download/file?path=${encodeURIComponent(e)}`),{fallbackError:`Failed to download file`,fallbackFileName:t})}async downloadDirectory(e){let t=A(e)||`vault`;return H(s(`/download/directory?path=${encodeURIComponent(e)}`),{fallbackError:`Failed to download folder`,fallbackFileName:`${t}.zip`})}};export{P as a,F as c,M as d,A as f,E as g,D as h,k as i,L as l,O as m,z as n,I as o,j as p,B as r,N as s,U as t,R as u};
@@ -1 +0,0 @@
1
- function e(e){return String(e).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function t(e,t,n){return Math.min(Math.max(e,t),n)}export{e as n,t};
@@ -1 +0,0 @@
1
- await import('../drawio-editor.js');
@@ -1 +0,0 @@
1
- await import('../excalidraw-editor.js');
@@ -1,7 +0,0 @@
1
- export function isMaybeMermaidDefinition() {
2
- return false;
3
- }
4
-
5
- export async function parseMermaidToExcalidraw() {
6
- throw new Error('Mermaid to Excalidraw is disabled in this build.');
7
- }
@@ -1,16 +0,0 @@
1
- import { CollabMdAppShell } from './bootstrap/collabmd-app-shell.js';
2
- import { ensureClientAuthenticated } from './infrastructure/auth-client.js';
3
-
4
- async function start() {
5
- await ensureClientAuthenticated();
6
- const app = new CollabMdAppShell();
7
- app.initialize();
8
- }
9
-
10
- if (document.readyState === 'loading') {
11
- document.addEventListener('DOMContentLoaded', () => {
12
- void start();
13
- }, { once: true });
14
- } else {
15
- void start();
16
- }