collabmd 0.1.45 → 0.1.46
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.
- package/README.md +39 -19
- package/bin/collabmd.js +27 -1
- package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-CYM5nxUi.js +1 -0
- package/dist/client/assets/browser-utils--H_DkyEF.js +1 -0
- package/dist/client/assets/chunk-ERSWUTIN-hHdvnhaY.js +41 -0
- package/dist/client/assets/comment-thread-store-CdcwrObc.js +1 -0
- package/dist/client/assets/comment-threads-9J6Em-_y.js +4 -0
- package/dist/client/assets/comment-ui-shared-BC4pt4w8.js +7 -0
- package/dist/client/assets/dist-B5HTH2BO.js +1 -0
- package/dist/client/assets/{dist-DhLvC8DS.js → dist-B5Jf1SLZ.js} +2 -2
- package/dist/client/assets/{dist-CnL7Y2sM.js → dist-BDt3rz7l.js} +1 -1
- package/dist/client/assets/dist-BEwK4csK.js +1 -0
- package/dist/client/assets/dist-BKW4PALF.js +1 -0
- package/dist/client/assets/dist-BWcHHOx-.js +1 -0
- package/dist/client/assets/{dist-CYZmbokb.js → dist-BalScOwZ.js} +9 -9
- package/dist/client/assets/dist-Bf8f4HmM.js +6 -0
- package/dist/client/assets/dist-BjHJDtyU.js +1 -0
- package/dist/client/assets/dist-Bm6pf9Bl.js +1 -0
- package/dist/client/assets/dist-BoVBdSjk.js +1 -0
- package/dist/client/assets/dist-CC5IrQMG.js +1 -0
- package/dist/client/assets/{dist-C11hHqv_.js → dist-CCP_AKPG.js} +12 -12
- package/dist/client/assets/dist-CZgOmxK6.js +1 -0
- package/dist/client/assets/{dist-D2AQ-76g.js → dist-Cqhv5LAk.js} +1 -1
- package/dist/client/assets/{dist-MvcV4190.js → dist-D-Z6FLem.js} +1 -1
- package/dist/client/assets/dist-DLMiIsNC.js +11 -0
- package/dist/client/assets/{dist-3bgCp7iY.js → dist-DZKu9Cs8.js} +1 -1
- package/dist/client/assets/dist-DaYdhcVs.js +1 -0
- package/dist/client/assets/dist-FWJsgGYI.js +1 -0
- package/dist/client/assets/dist-Kh2COra_.js +1 -0
- package/dist/client/assets/{dist-JYEDRrPT.js → dist-PDZ3bSqm.js} +1 -1
- package/dist/client/assets/{dist-Drp8uu5J.js → dist-TjMh8n1u.js} +1 -1
- package/dist/client/assets/{dist-DGb27Dl6.js → dist-dtAdgL39.js} +1 -1
- package/dist/client/assets/dist-jv4WdPnK.js +9 -0
- package/dist/client/assets/{dist-DK5Gs2wa.js → dist-rGBmqxC7.js} +1 -1
- package/dist/client/assets/{dist-DCzuX1AF.js → dist-shrl6K_0.js} +1 -1
- package/dist/client/assets/dist-tOaegDYS2.js +1 -0
- package/dist/client/assets/dist-ule2n6ak.js +1 -0
- package/dist/client/assets/dist-xElaxbia.js +1 -0
- package/dist/client/assets/{drawio-editor-ClE8jpoG.js → drawio-editor-FzY1cVw8.js} +1 -1
- package/dist/client/assets/drawioEditor-BjiKJqlc.js +2 -0
- package/dist/client/assets/editor-session-Cm9ekeNo.js +54 -0
- package/dist/client/assets/embedded-editor-base-CwTkk911.css +1 -0
- package/dist/client/assets/{preview-render-profile-BZzGSg6K.js → es-DXGV3RHd.js} +13 -13
- package/dist/client/assets/excalidraw-editor-B46zsTFI.js +9 -0
- package/dist/client/assets/{excalidraw-editor-CyGwOhLz.css → excalidraw-editor-Bt7gMSoh.css} +1 -1
- package/dist/client/assets/excalidraw-scene-BOben2gr.js +1 -0
- package/dist/client/assets/excalidrawEditor-CT2pHq7e.js +2 -0
- package/dist/client/assets/{export-page-CUfws2T-.js → export-page-A7NHawJY.js} +3 -3
- package/dist/client/assets/exportDocument-B2L8fe34.css +1 -0
- package/dist/client/assets/exportDocument-BaqcOAAW.js +2 -0
- package/dist/client/assets/file-icon-svg-CQAjlWjK.js +1 -0
- package/dist/client/assets/file-kind-BbqgGzpc.js +1 -0
- package/dist/client/assets/image-QXRYHUNP-SWEV8H0J.js +1 -0
- package/dist/client/assets/index-ClbjMBVt.js +2 -0
- package/dist/client/assets/index-Pum8ET-5.css +1 -0
- package/dist/client/assets/main-B3uPyqic.js +893 -0
- package/dist/client/assets/pdf-BL9Pr2D5.js +54 -0
- package/dist/client/assets/pdf.worker-CLesOks4.mjs +64857 -0
- package/dist/client/assets/pdf_viewer-FVkkThnz.js +551 -0
- package/dist/client/assets/{preview-render-compiler-BSaQO_p3.js → preview-render-compiler-BD-XhkS2.js} +2 -2
- package/dist/client/assets/preview-render-compiler-BKedaMxx.js +1 -0
- package/dist/client/assets/preview-render-profile-CE-5rVTC.js +1 -0
- package/dist/client/assets/{preview-render-worker-B42LWvrD.js → preview-render-worker-CiPqc9n6.js} +20 -20
- package/dist/client/assets/prod-Dy20X7eT.js +1 -0
- package/dist/client/assets/prod-hnwh7wRM.js +177 -0
- package/dist/client/assets/quick-switcher-controller-fqOYR7qR.js +12 -0
- package/dist/client/assets/runtime-config-BLrEKVO1.js +1 -0
- package/dist/client/assets/vault-api-client-_LpV1aIn.js +6 -0
- package/dist/client/drawio-editor.html +1 -1
- package/dist/client/excalidraw-editor.html +1 -1
- package/dist/client/export-document.html +2 -2
- package/dist/client/index.html +15 -3
- package/docker-compose.yml +42 -0
- package/package.json +17 -4
- package/scripts/local-structurizr-compose.mjs +101 -0
- package/src/client/app/index.html +13 -1
- package/src/client/application/app-shell/comments-feature.js +19 -10
- package/src/client/application/app-shell/git-feature.js +12 -0
- package/src/client/application/app-shell/presence-feature.js +2 -1
- package/src/client/application/app-shell/ui-feature-shell.js +45 -2
- package/src/client/application/app-shell/ui-feature-toolbar.js +2 -52
- package/src/client/application/app-shell/workspace-feature.js +5 -1
- package/src/client/application/app-shell-elements.js +2 -0
- package/src/client/application/pdf-preview-controller.js +992 -0
- package/src/client/application/structurizr-preview-controller.js +395 -0
- package/src/client/application/workspace-coordinator.js +25 -3
- package/src/client/application/workspace-preview-controller.js +91 -2
- package/src/client/bootstrap/collabmd-app-shell.js +31 -5
- package/src/client/browser-utils.js +44 -0
- package/src/client/domain/runtime-paths.js +26 -5
- package/src/client/domain/structurizr-language.js +99 -0
- package/src/client/domain/vault-paths.js +48 -0
- package/src/client/excalidraw-editor.js +833 -51
- package/src/client/infrastructure/browser-preferences-port.js +10 -0
- package/src/client/infrastructure/comment-thread-store.js +34 -13
- package/src/client/infrastructure/editor-session.js +10 -0
- package/src/client/infrastructure/editor-view-adapter.js +46 -2
- package/src/client/infrastructure/excalidraw-room-client.js +103 -14
- package/src/client/infrastructure/git-api-client.js +5 -0
- package/src/client/infrastructure/vault-api-client.js +26 -0
- package/src/client/presentation/comment-ui/comment-ui-shared.js +4 -0
- package/src/client/presentation/drawio-embed-controller.js +9 -102
- package/src/client/presentation/drawio-viewer.js +118 -0
- package/src/client/presentation/excalidraw-embed-controller.js +74 -8
- package/src/client/presentation/file-action-controller.js +102 -0
- package/src/client/presentation/file-explorer-view.js +10 -29
- package/src/client/presentation/file-icon-svg.js +40 -0
- package/src/client/presentation/file-tree-state.js +2 -0
- package/src/client/presentation/git-diff-view-controller.js +731 -3
- package/src/client/presentation/outline-controller.js +86 -0
- package/src/client/presentation/quick-switcher-controller.js +25 -13
- package/src/client/presentation/quick-switcher-text-search.js +1 -1
- package/src/client/styles/components/navigation.css +11 -1
- package/src/client/styles/features/diagram-preview.css +76 -0
- package/src/client/styles/features/diff-special.css +309 -0
- package/src/client/styles/foundation/themes.css +6 -0
- package/src/client/styles/layout/shell.css +358 -1
- package/src/client/styles/layout/view-modes.css +1 -0
- package/src/client/styles/style.css +1 -0
- package/src/client/styles/surfaces/excalidraw-editor.css +294 -0
- package/src/domain/comment-threads.js +63 -5
- package/src/domain/excalidraw-room-codec.js +6 -4
- package/src/domain/file-kind.js +35 -3
- package/src/server/config/env.js +79 -0
- package/src/server/create-app-server.js +12 -0
- package/src/server/domain/bases/base-definition.js +1 -1
- package/src/server/domain/bases/base-expression-runtime.js +1 -4
- package/src/server/domain/bases/base-index-snapshot-store.js +1 -4
- package/src/server/domain/bases/base-transform.js +1 -4
- package/src/server/domain/collaboration/collaboration-room.js +55 -21
- package/src/server/domain/comment-overview.js +15 -5
- package/src/server/domain/ripgrep-search-service.js +4 -0
- package/src/server/infrastructure/git/diff-service.js +5 -0
- package/src/server/infrastructure/git/git-service.js +21 -0
- package/src/server/infrastructure/git/history-service.js +54 -0
- package/src/server/infrastructure/git/image-mime.js +14 -0
- package/src/server/infrastructure/git/untracked-files.js +28 -1
- package/src/server/infrastructure/http/create-git-api-query-handler.js +31 -1
- package/src/server/infrastructure/http/create-request-handler.js +16 -23
- package/src/server/infrastructure/http/create-static-handler.js +5 -2
- package/src/server/infrastructure/http/create-structurizr-api-handler.js +145 -0
- package/src/server/infrastructure/http/create-vault-api-command-handler.js +66 -4
- package/src/server/infrastructure/http/create-vault-api-query-handler.js +51 -3
- package/src/server/infrastructure/http/http-request-helpers.js +22 -0
- package/src/server/infrastructure/persistence/path-utils.js +1 -1
- package/src/server/infrastructure/persistence/vault-file-store.js +3 -0
- package/src/server/infrastructure/structurizr/structurizr-embed.css +43 -0
- package/src/server/infrastructure/structurizr/structurizr-workspace-service.js +374 -0
- package/src/server/infrastructure/websocket/attach-collaboration-gateway.js +4 -22
- package/dist/client/assets/CodeMirrorEditor-UCMRAMCV-CbSISC1w.js +0 -1
- package/dist/client/assets/browser-utils-CKtI_rZl.js +0 -1
- package/dist/client/assets/chunk-ERSWUTIN-ME9RVNel.js +0 -41
- package/dist/client/assets/comment-threads-DDegmaFO.js +0 -4
- package/dist/client/assets/dist-BH87JoHx.js +0 -11
- package/dist/client/assets/dist-BIkPRZO7.js +0 -6
- package/dist/client/assets/dist-BqCsFpx4.js +0 -1
- package/dist/client/assets/dist-C2JHCt8U.js +0 -1
- package/dist/client/assets/dist-CZjTtmTu.js +0 -1
- package/dist/client/assets/dist-Cig4Ov_X.js +0 -1
- package/dist/client/assets/dist-CqQEC8gR.js +0 -1
- package/dist/client/assets/dist-D4Rzqod1.js +0 -1
- package/dist/client/assets/dist-D5sn-mwk.js +0 -9
- package/dist/client/assets/dist-D7G-n87v.js +0 -1
- package/dist/client/assets/dist-DRqOrNgN.js +0 -1
- package/dist/client/assets/dist-DetkMS_4.js +0 -1
- package/dist/client/assets/dist-Dp6FVkQ1.js +0 -1
- package/dist/client/assets/dist-DtbjNB28.js +0 -1
- package/dist/client/assets/dist-DyrYcvpo2.js +0 -1
- package/dist/client/assets/dist-GrygD2zE.js +0 -1
- package/dist/client/assets/dist-HmEpWUow.js +0 -1
- package/dist/client/assets/dist-RTa81Km7.js +0 -1
- package/dist/client/assets/drawioEditor-CXaTM9Ds.js +0 -2
- package/dist/client/assets/editor-session-GTwZS6Df.js +0 -16
- package/dist/client/assets/embedded-editor-base-CiNEc8vy.css +0 -1
- package/dist/client/assets/excalidraw-editor-BZVM81BO.js +0 -9
- package/dist/client/assets/excalidraw-scene-C8n9CHsK.js +0 -176
- package/dist/client/assets/excalidrawEditor-DxJanCze.js +0 -2
- package/dist/client/assets/exportDocument-BCuxqXDY.js +0 -2
- package/dist/client/assets/exportDocument-DV-OX74E.css +0 -1
- package/dist/client/assets/file-kind-BKPOIRPE.js +0 -1
- package/dist/client/assets/image-QXRYHUNP-lfTHE3bb.js +0 -1
- package/dist/client/assets/index-C3YnUgMD.css +0 -1
- package/dist/client/assets/index-D2wXraJ1.js +0 -2
- package/dist/client/assets/main-DtiGz7uI.js +0 -795
- package/dist/client/assets/preview-render-compiler-csGM5ZFz.js +0 -1
- package/dist/client/assets/quick-switcher-controller-shW_6vPY.js +0 -12
- package/dist/client/assets/room-CQLoqtMo.js +0 -1
- package/dist/client/assets/runtime-config-DSGmGE9V.js +0 -1
- package/dist/client/assets/vault-api-client-C6bcGwy-.js +0 -5
- package/src/server/domain/collaboration/room-persistence-controller.js +0 -80
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { isMarkdownFilePath } from '../../../domain/file-kind.js';
|
|
2
|
+
import { pickFiles } from '../../browser-utils.js';
|
|
2
3
|
import {
|
|
3
4
|
getMarkdownBlockActionLabel,
|
|
4
5
|
getMarkdownBlockMenuActions,
|
|
@@ -91,7 +92,6 @@ function renderMarkdownToolbarMarkup(activeAction) {
|
|
|
91
92
|
* @property {{ show(message: string): void }} toastController
|
|
92
93
|
* @property {{ uploadImageAttachment(payload: { file: File, fileName: string, sourcePath: string }): Promise<{ markdown?: string, path?: string }>} } vaultApiClient
|
|
93
94
|
* @property {{ applyMarkdownToolbarAction(action: string): boolean, insertText(text: string): void, runEditorCommand?(commandId: string): boolean } | null} session
|
|
94
|
-
* @property {() => Promise<File | null>} pickImageFile
|
|
95
95
|
* @property {(file: File) => Promise<boolean>} handleEditorImageInsert
|
|
96
96
|
* @property {() => Promise<void>} handleToolbarImageInsert
|
|
97
97
|
*/
|
|
@@ -395,7 +395,7 @@ function runEditorCommand(commandId) {
|
|
|
395
395
|
|
|
396
396
|
/** @this {UiToolbarContext} */
|
|
397
397
|
async function handleToolbarImageInsert() {
|
|
398
|
-
const file = await
|
|
398
|
+
const [file] = await pickFiles({ accept: IMAGE_FILE_PICKER_ACCEPT });
|
|
399
399
|
if (!file) {
|
|
400
400
|
return;
|
|
401
401
|
}
|
|
@@ -403,55 +403,6 @@ async function handleToolbarImageInsert() {
|
|
|
403
403
|
await this.handleEditorImageInsert(file);
|
|
404
404
|
}
|
|
405
405
|
|
|
406
|
-
/** @this {UiToolbarContext} */
|
|
407
|
-
function pickImageFile() {
|
|
408
|
-
return new Promise((resolve) => {
|
|
409
|
-
const input = document.createElement('input');
|
|
410
|
-
input.type = 'file';
|
|
411
|
-
input.accept = IMAGE_FILE_PICKER_ACCEPT;
|
|
412
|
-
input.style.position = 'fixed';
|
|
413
|
-
input.style.left = '-9999px';
|
|
414
|
-
document.body.appendChild(input);
|
|
415
|
-
let settled = false;
|
|
416
|
-
let focusTimer = null;
|
|
417
|
-
|
|
418
|
-
const cleanup = (value) => {
|
|
419
|
-
if (settled) {
|
|
420
|
-
return;
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
settled = true;
|
|
424
|
-
if (focusTimer) {
|
|
425
|
-
window.clearTimeout(focusTimer);
|
|
426
|
-
}
|
|
427
|
-
window.removeEventListener('focus', handleWindowFocus);
|
|
428
|
-
input.remove();
|
|
429
|
-
resolve(value);
|
|
430
|
-
};
|
|
431
|
-
|
|
432
|
-
const handleWindowFocus = () => {
|
|
433
|
-
focusTimer = window.setTimeout(() => {
|
|
434
|
-
if (settled || input.files?.length) {
|
|
435
|
-
return;
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
cleanup(null);
|
|
439
|
-
}, 250);
|
|
440
|
-
};
|
|
441
|
-
|
|
442
|
-
input.addEventListener('change', () => {
|
|
443
|
-
cleanup(input.files?.[0] ?? null);
|
|
444
|
-
}, { once: true });
|
|
445
|
-
|
|
446
|
-
input.addEventListener('cancel', () => {
|
|
447
|
-
cleanup(null);
|
|
448
|
-
}, { once: true });
|
|
449
|
-
|
|
450
|
-
window.addEventListener('focus', handleWindowFocus, { once: true });
|
|
451
|
-
input.click();
|
|
452
|
-
});
|
|
453
|
-
}
|
|
454
|
-
|
|
455
406
|
/** @this {UiToolbarContext} */
|
|
456
407
|
async function handleEditorImageInsert(file) {
|
|
457
408
|
if (!this.session || !isMarkdownFilePath(this.currentFilePath)) {
|
|
@@ -526,7 +477,6 @@ export const uiFeatureToolbarMethods = {
|
|
|
526
477
|
openMarkdownBlockMenu,
|
|
527
478
|
positionMarkdownBlockMenu,
|
|
528
479
|
renderMarkdownBlockMenuPopover,
|
|
529
|
-
pickImageFile,
|
|
530
480
|
renderMarkdownToolbar,
|
|
531
481
|
runEditorCommand,
|
|
532
482
|
setActiveMarkdownBlockAction,
|
|
@@ -5,7 +5,9 @@ import {
|
|
|
5
5
|
isExcalidrawFilePath,
|
|
6
6
|
isImageAttachmentFilePath,
|
|
7
7
|
isMermaidFilePath,
|
|
8
|
+
isPdfFilePath,
|
|
8
9
|
isPlantUmlFilePath,
|
|
10
|
+
isStructurizrFilePath,
|
|
9
11
|
stripVaultFileExtension,
|
|
10
12
|
} from '../../../domain/file-kind.js';
|
|
11
13
|
|
|
@@ -14,8 +16,10 @@ export const workspaceFeature = {
|
|
|
14
16
|
isDrawioFile: isDrawioFilePath,
|
|
15
17
|
isExcalidrawFile: isExcalidrawFilePath,
|
|
16
18
|
isImageFile: isImageAttachmentFilePath,
|
|
19
|
+
isPdfFile: isPdfFilePath,
|
|
17
20
|
isMermaidFile: isMermaidFilePath,
|
|
18
21
|
isPlantUmlFile: isPlantUmlFilePath,
|
|
22
|
+
isStructurizrWorkspaceFile: isStructurizrFilePath,
|
|
19
23
|
|
|
20
24
|
getPreviewSource() {
|
|
21
25
|
const previewDocument = this.getStaticPreviewDocument?.();
|
|
@@ -61,7 +65,7 @@ export const workspaceFeature = {
|
|
|
61
65
|
|
|
62
66
|
supportsFileHistory(filePath) {
|
|
63
67
|
const kind = getVaultFileKind(filePath);
|
|
64
|
-
return kind !== null && kind !== 'image';
|
|
68
|
+
return kind !== null && kind !== 'image' && kind !== 'pdf';
|
|
65
69
|
},
|
|
66
70
|
|
|
67
71
|
getDisplayName(filePath) {
|
|
@@ -64,9 +64,11 @@ export function bindAppShellElements(doc = document) {
|
|
|
64
64
|
shareButton: doc.getElementById('shareBtn'),
|
|
65
65
|
toastContainer: doc.getElementById('toastContainer'),
|
|
66
66
|
toggleWrapButton: doc.getElementById('toggleWrapBtn'),
|
|
67
|
+
toggleVimModeButton: doc.getElementById('toggleVimModeBtn'),
|
|
67
68
|
userAvatars: doc.getElementById('userAvatars'),
|
|
68
69
|
userCount: doc.getElementById('userCount'),
|
|
69
70
|
wrapToggleLabel: doc.getElementById('wrapToggleLabel'),
|
|
71
|
+
vimModeToggleLabel: doc.getElementById('vimModeToggleLabel'),
|
|
70
72
|
activeFileName: doc.getElementById('activeFileName'),
|
|
71
73
|
sidebarToggle: doc.getElementById('sidebarToggle'),
|
|
72
74
|
sidebarClose: doc.getElementById('sidebarClose'),
|