collabmd 0.1.32 → 0.1.33
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/dist/client/assets/{drawio-editor-Br4qyh3r.js → drawio-editor-BMTwP5mD.js} +1 -1
- package/dist/client/assets/{drawioEditor-ClmnTx5J.js → drawioEditor-D6clB5OH.js} +2 -2
- package/dist/client/assets/{editor-session-Cf-iV5-3.js → editor-session-Dzy_85Wp.js} +1 -1
- package/dist/client/assets/{excalidraw-editor-CXAxVhlw.js → excalidraw-editor-CAP9F8CB.js} +3 -3
- package/dist/client/assets/{excalidrawEditor-DoH_kMdu.js → excalidrawEditor-DD4AvzYP.js} +2 -2
- package/dist/client/assets/{exportDocument-9wTrBZNS.css → exportDocument-BbkN85c4.css} +1 -1
- package/dist/client/assets/index-BIt5EZXz.css +1 -0
- package/dist/client/assets/{index-C8QZYHvV.js → index-Czg_KL-i.js} +2 -2
- package/dist/client/assets/{main-BjHHMlv0.js → main-DeowJOSp.js} +261 -142
- package/dist/client/assets/{vault-api-client-Bf9tB_GW.js → vault-api-client-p7h7cXKM.js} +1 -1
- 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 +2 -2
- package/package.json +5 -5
- package/src/client/bootstrap/collabmd-app-shell.js +6 -0
- package/src/client/infrastructure/editor-session.js +4 -0
- package/src/client/infrastructure/editor-view-adapter.js +23 -0
- package/src/client/infrastructure/vault-api-client.js +48 -0
- package/src/client/presentation/bases-preview-controller.js +1388 -28
- package/src/client/presentation/comments-panel.js +50 -5
- package/src/client/styles/components/scrollbars.css +5 -0
- package/src/client/styles/features/preview-markdown.css +468 -23
- package/src/server/domain/backlink-index.js +177 -5
- package/src/server/domain/bases/base-definition.js +138 -11
- package/src/server/domain/bases/base-expression-runtime.js +54 -17
- package/src/server/domain/bases/base-index-snapshot-store.js +167 -20
- package/src/server/domain/bases/base-query-metadata.js +242 -0
- package/src/server/domain/bases/base-query-results.js +18 -8
- package/src/server/domain/bases/base-query-service.js +360 -49
- package/src/server/domain/bases/base-transform.js +116 -0
- package/src/server/infrastructure/http/create-vault-api-query-handler.js +52 -0
- package/dist/client/assets/index-CxSbUTs2.css +0 -1
- /package/dist/client/assets/{exportDocument-Bia2hI25.js → exportDocument-Zfwq1XVx.js} +0 -0
|
@@ -37,6 +37,47 @@ function sortThreads(threads = []) {
|
|
|
37
37
|
));
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
export function countThreadsForSourceBlocks(blocks = [], threads = []) {
|
|
41
|
+
const normalizedBlocks = blocks
|
|
42
|
+
.map((block, index) => {
|
|
43
|
+
const startLine = Number(block?.startLine);
|
|
44
|
+
const endLine = Number(block?.endLine ?? startLine);
|
|
45
|
+
if (!Number.isFinite(startLine) || startLine <= 0) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return {
|
|
50
|
+
endExclusive: Math.max(endLine, startLine + 1),
|
|
51
|
+
index,
|
|
52
|
+
startLine,
|
|
53
|
+
};
|
|
54
|
+
})
|
|
55
|
+
.filter(Boolean)
|
|
56
|
+
.sort((left, right) => (
|
|
57
|
+
left.startLine - right.startLine
|
|
58
|
+
|| left.endExclusive - right.endExclusive
|
|
59
|
+
|| left.index - right.index
|
|
60
|
+
));
|
|
61
|
+
const counts = new Array(blocks.length).fill(0);
|
|
62
|
+
let threadIndex = 0;
|
|
63
|
+
|
|
64
|
+
normalizedBlocks.forEach((block) => {
|
|
65
|
+
while (threadIndex < threads.length && (threads[threadIndex]?.anchor?.startLine ?? 0) < block.startLine) {
|
|
66
|
+
threadIndex += 1;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
let countIndex = threadIndex;
|
|
70
|
+
while (countIndex < threads.length && (threads[countIndex]?.anchor?.startLine ?? 0) < block.endExclusive) {
|
|
71
|
+
countIndex += 1;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
counts[block.index] = countIndex - threadIndex;
|
|
75
|
+
threadIndex = countIndex;
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
return counts;
|
|
79
|
+
}
|
|
80
|
+
|
|
40
81
|
export class CommentsPanel {
|
|
41
82
|
constructor({
|
|
42
83
|
panelElement,
|
|
@@ -236,18 +277,22 @@ export class CommentsPanel {
|
|
|
236
277
|
|
|
237
278
|
const blocks = Array.from(this.previewElement.querySelectorAll('[data-source-line]'))
|
|
238
279
|
.filter((element) => isLeafSourceBlock(element) && isCommentablePreviewBlock(element));
|
|
280
|
+
const threadCounts = countThreadsForSourceBlocks(
|
|
281
|
+
blocks.map((block) => ({
|
|
282
|
+
endLine: parseLineNumber(block.getAttribute('data-source-line-end')) ?? parseLineNumber(block.getAttribute('data-source-line')) ?? 1,
|
|
283
|
+
startLine: parseLineNumber(block.getAttribute('data-source-line')),
|
|
284
|
+
})),
|
|
285
|
+
this.threads,
|
|
286
|
+
);
|
|
239
287
|
|
|
240
|
-
blocks.forEach((block) => {
|
|
288
|
+
blocks.forEach((block, index) => {
|
|
241
289
|
const startLine = parseLineNumber(block.getAttribute('data-source-line'));
|
|
242
290
|
const endLine = parseLineNumber(block.getAttribute('data-source-line-end')) ?? (startLine ?? 1);
|
|
243
291
|
if (!startLine) {
|
|
244
292
|
return;
|
|
245
293
|
}
|
|
246
294
|
|
|
247
|
-
const
|
|
248
|
-
thread.anchor?.startLine >= startLine && thread.anchor?.startLine < Math.max(endLine, startLine + 1)
|
|
249
|
-
));
|
|
250
|
-
const totalCount = matchingThreads.length;
|
|
295
|
+
const totalCount = threadCounts[index] ?? 0;
|
|
251
296
|
const button = document.createElement('button');
|
|
252
297
|
button.type = 'button';
|
|
253
298
|
button.className = 'comment-anchor-btn';
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
.file-tree,
|
|
6
6
|
.git-panel,
|
|
7
7
|
.diff-scroll,
|
|
8
|
+
.backlinks-body,
|
|
8
9
|
.comments-drawer-list,
|
|
9
10
|
.comments-drawer-item-quote,
|
|
10
11
|
.comment-card-quote,
|
|
@@ -26,6 +27,7 @@
|
|
|
26
27
|
.file-tree::-webkit-scrollbar,
|
|
27
28
|
.git-panel::-webkit-scrollbar,
|
|
28
29
|
.diff-scroll::-webkit-scrollbar,
|
|
30
|
+
.backlinks-body::-webkit-scrollbar,
|
|
29
31
|
.comments-drawer-list::-webkit-scrollbar,
|
|
30
32
|
.comments-drawer-item-quote::-webkit-scrollbar,
|
|
31
33
|
.comment-card-quote::-webkit-scrollbar,
|
|
@@ -47,6 +49,7 @@
|
|
|
47
49
|
.file-tree::-webkit-scrollbar-track,
|
|
48
50
|
.git-panel::-webkit-scrollbar-track,
|
|
49
51
|
.diff-scroll::-webkit-scrollbar-track,
|
|
52
|
+
.backlinks-body::-webkit-scrollbar-track,
|
|
50
53
|
.comments-drawer-list::-webkit-scrollbar-track,
|
|
51
54
|
.comments-drawer-item-quote::-webkit-scrollbar-track,
|
|
52
55
|
.comment-card-quote::-webkit-scrollbar-track,
|
|
@@ -67,6 +70,7 @@
|
|
|
67
70
|
.file-tree::-webkit-scrollbar-thumb,
|
|
68
71
|
.git-panel::-webkit-scrollbar-thumb,
|
|
69
72
|
.diff-scroll::-webkit-scrollbar-thumb,
|
|
73
|
+
.backlinks-body::-webkit-scrollbar-thumb,
|
|
70
74
|
.comments-drawer-list::-webkit-scrollbar-thumb,
|
|
71
75
|
.comments-drawer-item-quote::-webkit-scrollbar-thumb,
|
|
72
76
|
.comment-card-quote::-webkit-scrollbar-thumb,
|
|
@@ -88,6 +92,7 @@
|
|
|
88
92
|
.file-tree::-webkit-scrollbar-thumb:hover,
|
|
89
93
|
.git-panel::-webkit-scrollbar-thumb:hover,
|
|
90
94
|
.diff-scroll::-webkit-scrollbar-thumb:hover,
|
|
95
|
+
.backlinks-body::-webkit-scrollbar-thumb:hover,
|
|
91
96
|
.comments-drawer-list::-webkit-scrollbar-thumb:hover,
|
|
92
97
|
.comments-drawer-item-quote::-webkit-scrollbar-thumb:hover,
|
|
93
98
|
.comment-card-quote::-webkit-scrollbar-thumb:hover,
|