@jvs-milkdown/components 1.2.13 → 1.2.14
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/lib/diff-block/config.d.ts +10 -0
- package/lib/diff-block/config.d.ts.map +1 -0
- package/lib/diff-block/index.d.ts +7 -0
- package/lib/diff-block/index.d.ts.map +1 -0
- package/lib/diff-block/index.js +296 -0
- package/lib/diff-block/index.js.map +1 -0
- package/lib/diff-block/remark-plugin.d.ts +2 -0
- package/lib/diff-block/remark-plugin.d.ts.map +1 -0
- package/lib/diff-block/schema.d.ts +3 -0
- package/lib/diff-block/schema.d.ts.map +1 -0
- package/lib/diff-block/view/index.d.ts +3 -0
- package/lib/diff-block/view/index.d.ts.map +1 -0
- package/lib/diff-block/view/node-view.d.ts +25 -0
- package/lib/diff-block/view/node-view.d.ts.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +294 -2
- package/lib/index.js.map +1 -1
- package/lib/table-block/index.js +2 -2
- package/lib/table-block/index.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +18 -10
- package/src/diff-block/config.ts +42 -0
- package/src/diff-block/index.ts +19 -0
- package/src/diff-block/remark-plugin.ts +59 -0
- package/src/diff-block/schema.ts +86 -0
- package/src/diff-block/view/index.ts +22 -0
- package/src/diff-block/view/node-view.ts +154 -0
- package/src/index.ts +1 -0
- package/src/table-block/view/component.tsx +2 -2
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Extension } from '@codemirror/state';
|
|
2
|
+
export interface DiffBlockConfig {
|
|
3
|
+
extensions: Extension[];
|
|
4
|
+
languages: Array<string>;
|
|
5
|
+
renderLanguage: (language: string, selected: boolean) => HTMLElement;
|
|
6
|
+
theme: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const defaultConfig: DiffBlockConfig;
|
|
9
|
+
export declare const diffBlockConfig: import("@jvs-milkdown/utils").$Ctx<DiffBlockConfig, "diffBlockConfig">;
|
|
10
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/diff-block/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAMlD,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,SAAS,EAAE,CAAA;IACvB,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACxB,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,WAAW,CAAA;IACpE,KAAK,EAAE,MAAM,CAAA;CACd;AAED,eAAO,MAAM,aAAa,EAAE,eAqB3B,CAAA;AAED,eAAO,MAAM,eAAe,wEAAyC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/diff-block/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAMvD,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,iBAAiB,CAAA;AAI/B,eAAO,MAAM,SAAS,EAAE,cAAc,EAK9B,CAAA"}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
import { $ctx, $nodeSchema, $view, $remark } from '@jvs-milkdown/utils';
|
|
2
|
+
import { expectDomTypeError } from '@jvs-milkdown/exception';
|
|
3
|
+
import { unifiedMergeView } from '@codemirror/merge';
|
|
4
|
+
import { Compartment, EditorState } from '@codemirror/state';
|
|
5
|
+
import { EditorView, drawSelection } from '@codemirror/view';
|
|
6
|
+
import { ref, watchEffect } from 'vue';
|
|
7
|
+
import { visit } from 'unist-util-visit';
|
|
8
|
+
|
|
9
|
+
var __defProp = Object.defineProperty;
|
|
10
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
11
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
12
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
13
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
14
|
+
var __spreadValues = (a, b) => {
|
|
15
|
+
for (var prop in b || (b = {}))
|
|
16
|
+
if (__hasOwnProp.call(b, prop))
|
|
17
|
+
__defNormalProp(a, prop, b[prop]);
|
|
18
|
+
if (__getOwnPropSymbols)
|
|
19
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
20
|
+
if (__propIsEnum.call(b, prop))
|
|
21
|
+
__defNormalProp(a, prop, b[prop]);
|
|
22
|
+
}
|
|
23
|
+
return a;
|
|
24
|
+
};
|
|
25
|
+
function withMeta(plugin, meta) {
|
|
26
|
+
Object.assign(plugin, {
|
|
27
|
+
meta: __spreadValues({
|
|
28
|
+
package: "@jvs-milkdown/components"
|
|
29
|
+
}, meta)
|
|
30
|
+
});
|
|
31
|
+
return plugin;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const defaultConfig = {
|
|
35
|
+
extensions: [],
|
|
36
|
+
languages: [
|
|
37
|
+
"text",
|
|
38
|
+
"typescript",
|
|
39
|
+
"javascript",
|
|
40
|
+
"html",
|
|
41
|
+
"css",
|
|
42
|
+
"json",
|
|
43
|
+
"markdown"
|
|
44
|
+
],
|
|
45
|
+
renderLanguage: (language, selected) => {
|
|
46
|
+
const span = document.createElement("span");
|
|
47
|
+
span.className = "milkdown-diff-block-language";
|
|
48
|
+
span.textContent = language;
|
|
49
|
+
if (selected) {
|
|
50
|
+
span.classList.add("selected");
|
|
51
|
+
}
|
|
52
|
+
return span;
|
|
53
|
+
},
|
|
54
|
+
theme: "dark"
|
|
55
|
+
};
|
|
56
|
+
const diffBlockConfig = $ctx(defaultConfig, "diffBlockConfig");
|
|
57
|
+
withMeta(diffBlockConfig, {
|
|
58
|
+
displayName: "Ctx<diffBlockConfig>",
|
|
59
|
+
group: "DiffBlock"
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
const DIFF_BLOCK_DATA_TYPE = "diff-block";
|
|
63
|
+
const diffBlockSchema = $nodeSchema("diff_block", () => {
|
|
64
|
+
return {
|
|
65
|
+
content: "text*",
|
|
66
|
+
marks: "",
|
|
67
|
+
group: "block",
|
|
68
|
+
selectable: true,
|
|
69
|
+
isolating: true,
|
|
70
|
+
code: true,
|
|
71
|
+
attrs: {
|
|
72
|
+
originalText: { default: "" },
|
|
73
|
+
modifiedText: { default: "" },
|
|
74
|
+
language: { default: "text" }
|
|
75
|
+
},
|
|
76
|
+
parseDOM: [
|
|
77
|
+
{
|
|
78
|
+
tag: `div[data-type="${DIFF_BLOCK_DATA_TYPE}"]`,
|
|
79
|
+
preserveWhitespace: "full",
|
|
80
|
+
getAttrs: (dom) => {
|
|
81
|
+
if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom);
|
|
82
|
+
return {
|
|
83
|
+
originalText: dom.getAttribute("data-original-text") || "",
|
|
84
|
+
modifiedText: dom.getAttribute("data-modified-text") || "",
|
|
85
|
+
language: dom.getAttribute("data-language") || "text"
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
],
|
|
90
|
+
toDOM: (node) => {
|
|
91
|
+
return [
|
|
92
|
+
"div",
|
|
93
|
+
{
|
|
94
|
+
"data-type": DIFF_BLOCK_DATA_TYPE,
|
|
95
|
+
"data-original-text": node.attrs.originalText,
|
|
96
|
+
"data-modified-text": node.attrs.modifiedText,
|
|
97
|
+
"data-language": node.attrs.language,
|
|
98
|
+
class: "milkdown-diff-block"
|
|
99
|
+
},
|
|
100
|
+
["code", { spellcheck: "false" }, 0]
|
|
101
|
+
];
|
|
102
|
+
},
|
|
103
|
+
parseMarkdown: {
|
|
104
|
+
match: ({ type }) => type === "diff_block",
|
|
105
|
+
runner: (state, node, type) => {
|
|
106
|
+
const originalText = node.originalText;
|
|
107
|
+
const modifiedText = node.modifiedText;
|
|
108
|
+
const language = node.language;
|
|
109
|
+
state.addNode(type, {
|
|
110
|
+
originalText: originalText || "",
|
|
111
|
+
modifiedText: modifiedText || "",
|
|
112
|
+
language: language || "text"
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
toMarkdown: {
|
|
117
|
+
match: (node) => node.type.name === "diff_block",
|
|
118
|
+
runner: (state, node) => {
|
|
119
|
+
state.addNode("code", void 0, void 0, {
|
|
120
|
+
lang: "diff_block",
|
|
121
|
+
value: JSON.stringify(
|
|
122
|
+
{
|
|
123
|
+
originalText: node.attrs.originalText,
|
|
124
|
+
modifiedText: node.attrs.modifiedText,
|
|
125
|
+
language: node.attrs.language
|
|
126
|
+
},
|
|
127
|
+
null,
|
|
128
|
+
2
|
|
129
|
+
)
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
});
|
|
135
|
+
withMeta(diffBlockSchema.node, {
|
|
136
|
+
displayName: "NodeSchema<diff_block>",
|
|
137
|
+
group: "DiffBlock"
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
class DiffBlockNodeView {
|
|
141
|
+
constructor(node, view, getPos, config) {
|
|
142
|
+
this.node = node;
|
|
143
|
+
this.view = view;
|
|
144
|
+
this.getPos = getPos;
|
|
145
|
+
this.config = config;
|
|
146
|
+
this.selected = ref(false);
|
|
147
|
+
this.updating = false;
|
|
148
|
+
this.forwardUpdate = (update) => {
|
|
149
|
+
if (this.updating) return;
|
|
150
|
+
if (!update.docChanged) return;
|
|
151
|
+
const pos = this.getPos();
|
|
152
|
+
if (pos == null) return;
|
|
153
|
+
const newText = update.state.doc.toString();
|
|
154
|
+
const tr = this.view.state.tr.setNodeAttribute(pos, "modifiedText", newText);
|
|
155
|
+
this.view.dispatch(tr);
|
|
156
|
+
};
|
|
157
|
+
this.readOnlyConf = new Compartment();
|
|
158
|
+
this.cm = new EditorView({
|
|
159
|
+
doc: this.node.attrs.modifiedText || "",
|
|
160
|
+
root: this.view.root,
|
|
161
|
+
extensions: [
|
|
162
|
+
this.readOnlyConf.of(EditorState.readOnly.of(true)),
|
|
163
|
+
drawSelection(),
|
|
164
|
+
unifiedMergeView({
|
|
165
|
+
original: this.node.attrs.originalText || "",
|
|
166
|
+
mergeControls: true
|
|
167
|
+
}),
|
|
168
|
+
EditorView.updateListener.of(this.forwardUpdate),
|
|
169
|
+
...config.extensions
|
|
170
|
+
]
|
|
171
|
+
});
|
|
172
|
+
this.dom = document.createElement("div");
|
|
173
|
+
this.dom.className = "milkdown-diff-block";
|
|
174
|
+
this.dom.appendChild(this.cm.dom);
|
|
175
|
+
this.disposeSelectedWatcher = watchEffect(() => {
|
|
176
|
+
const isSelected = this.selected.value;
|
|
177
|
+
if (isSelected) {
|
|
178
|
+
this.dom.classList.add("selected");
|
|
179
|
+
} else {
|
|
180
|
+
this.dom.classList.remove("selected");
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
setSelection(anchor, head) {
|
|
185
|
+
if (!this.cm.dom.isConnected) return;
|
|
186
|
+
this.cm.focus();
|
|
187
|
+
this.updating = true;
|
|
188
|
+
this.cm.dispatch({ selection: { anchor, head } });
|
|
189
|
+
this.updating = false;
|
|
190
|
+
}
|
|
191
|
+
update(node) {
|
|
192
|
+
if (node.type !== this.node.type) return false;
|
|
193
|
+
if (this.updating) return true;
|
|
194
|
+
this.node = node;
|
|
195
|
+
const modifiedText = node.attrs.modifiedText || "";
|
|
196
|
+
const change = computeChange(this.cm.state.doc.toString(), modifiedText);
|
|
197
|
+
if (change) {
|
|
198
|
+
this.updating = true;
|
|
199
|
+
this.cm.dispatch({
|
|
200
|
+
changes: { from: change.from, to: change.to, insert: change.text }
|
|
201
|
+
});
|
|
202
|
+
this.updating = false;
|
|
203
|
+
}
|
|
204
|
+
return true;
|
|
205
|
+
}
|
|
206
|
+
selectNode() {
|
|
207
|
+
this.selected.value = true;
|
|
208
|
+
this.cm.focus();
|
|
209
|
+
}
|
|
210
|
+
deselectNode() {
|
|
211
|
+
this.selected.value = false;
|
|
212
|
+
}
|
|
213
|
+
stopEvent() {
|
|
214
|
+
return true;
|
|
215
|
+
}
|
|
216
|
+
destroy() {
|
|
217
|
+
this.cm.destroy();
|
|
218
|
+
this.disposeSelectedWatcher();
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
function computeChange(oldVal, newVal) {
|
|
222
|
+
if (oldVal === newVal) return null;
|
|
223
|
+
let start = 0;
|
|
224
|
+
let oldEnd = oldVal.length;
|
|
225
|
+
let newEnd = newVal.length;
|
|
226
|
+
while (start < oldEnd && oldVal.charCodeAt(start) === newVal.charCodeAt(start))
|
|
227
|
+
++start;
|
|
228
|
+
while (oldEnd > start && newEnd > start && oldVal.charCodeAt(oldEnd - 1) === newVal.charCodeAt(newEnd - 1)) {
|
|
229
|
+
oldEnd--;
|
|
230
|
+
newEnd--;
|
|
231
|
+
}
|
|
232
|
+
return { from: start, to: oldEnd, text: newVal.slice(start, newEnd) };
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
const diffBlockView = $view(
|
|
236
|
+
diffBlockSchema.node,
|
|
237
|
+
(ctx) => {
|
|
238
|
+
const config = ctx.get(diffBlockConfig.key);
|
|
239
|
+
return (node, view, getPos) => new DiffBlockNodeView(node, view, getPos, config);
|
|
240
|
+
}
|
|
241
|
+
);
|
|
242
|
+
withMeta(diffBlockView, {
|
|
243
|
+
displayName: "NodeView<diff_block>",
|
|
244
|
+
group: "DiffBlock"
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
function visitDiffBlock(ast) {
|
|
248
|
+
return visit(
|
|
249
|
+
ast,
|
|
250
|
+
"code",
|
|
251
|
+
(node, index, parent) => {
|
|
252
|
+
if (node.lang !== "diff_block") return;
|
|
253
|
+
let originalText = "";
|
|
254
|
+
let modifiedText = node.value || "";
|
|
255
|
+
let language = "text";
|
|
256
|
+
try {
|
|
257
|
+
if (modifiedText.startsWith("{")) {
|
|
258
|
+
const parsed = JSON.parse(modifiedText);
|
|
259
|
+
originalText = parsed.originalText || "";
|
|
260
|
+
modifiedText = parsed.modifiedText || "";
|
|
261
|
+
language = parsed.language || "text";
|
|
262
|
+
}
|
|
263
|
+
} catch (e) {
|
|
264
|
+
}
|
|
265
|
+
const newNode = {
|
|
266
|
+
type: "diff_block",
|
|
267
|
+
originalText,
|
|
268
|
+
modifiedText,
|
|
269
|
+
language
|
|
270
|
+
};
|
|
271
|
+
parent.children.splice(index, 1, newNode);
|
|
272
|
+
}
|
|
273
|
+
);
|
|
274
|
+
}
|
|
275
|
+
const remarkDiffBlockPlugin = $remark(
|
|
276
|
+
"remark-diff-block",
|
|
277
|
+
() => () => visitDiffBlock
|
|
278
|
+
);
|
|
279
|
+
withMeta(remarkDiffBlockPlugin.plugin, {
|
|
280
|
+
displayName: "Remark<remarkDiffBlock>",
|
|
281
|
+
group: "DiffBlock"
|
|
282
|
+
});
|
|
283
|
+
withMeta(remarkDiffBlockPlugin.options, {
|
|
284
|
+
displayName: "RemarkConfig<remarkDiffBlock>",
|
|
285
|
+
group: "DiffBlock"
|
|
286
|
+
});
|
|
287
|
+
|
|
288
|
+
const diffBlock = [
|
|
289
|
+
diffBlockConfig,
|
|
290
|
+
remarkDiffBlockPlugin,
|
|
291
|
+
diffBlockSchema,
|
|
292
|
+
diffBlockView
|
|
293
|
+
].flat();
|
|
294
|
+
|
|
295
|
+
export { DIFF_BLOCK_DATA_TYPE, defaultConfig, diffBlock, diffBlockConfig, diffBlockSchema, diffBlockView, remarkDiffBlockPlugin };
|
|
296
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/__internal__/meta.ts","../../src/diff-block/config.ts","../../src/diff-block/schema.ts","../../src/diff-block/view/node-view.ts","../../src/diff-block/view/index.ts","../../src/diff-block/remark-plugin.ts","../../src/diff-block/index.ts"],"sourcesContent":["import type { Meta, MilkdownPlugin } from '@jvs-milkdown/ctx'\n\nexport function withMeta<T extends MilkdownPlugin>(\n plugin: T,\n meta: Partial<Meta> & Pick<Meta, 'displayName'>\n): T {\n Object.assign(plugin, {\n meta: {\n package: '@jvs-milkdown/components',\n ...meta,\n },\n })\n\n return plugin\n}\n","import type { Extension } from '@codemirror/state'\n\nimport { $ctx } from '@jvs-milkdown/utils'\n\nimport { withMeta } from '../__internal__/meta'\n\nexport interface DiffBlockConfig {\n extensions: Extension[]\n languages: Array<string>\n renderLanguage: (language: string, selected: boolean) => HTMLElement\n theme: string\n}\n\nexport const defaultConfig: DiffBlockConfig = {\n extensions: [],\n languages: [\n 'text',\n 'typescript',\n 'javascript',\n 'html',\n 'css',\n 'json',\n 'markdown',\n ],\n renderLanguage: (language, selected) => {\n const span = document.createElement('span')\n span.className = 'milkdown-diff-block-language'\n span.textContent = language\n if (selected) {\n span.classList.add('selected')\n }\n return span\n },\n theme: 'dark',\n}\n\nexport const diffBlockConfig = $ctx(defaultConfig, 'diffBlockConfig')\n\nwithMeta(diffBlockConfig, {\n displayName: 'Ctx<diffBlockConfig>',\n group: 'DiffBlock',\n})\n","import { expectDomTypeError } from '@jvs-milkdown/exception'\nimport { $nodeSchema } from '@jvs-milkdown/utils'\n\nimport { withMeta } from '../__internal__/meta'\n\nexport const DIFF_BLOCK_DATA_TYPE = 'diff-block'\n\nexport const diffBlockSchema = $nodeSchema('diff_block', () => {\n return {\n content: 'text*',\n marks: '',\n group: 'block',\n selectable: true,\n isolating: true,\n code: true,\n attrs: {\n originalText: { default: '' },\n modifiedText: { default: '' },\n language: { default: 'text' },\n },\n parseDOM: [\n {\n tag: `div[data-type=\"${DIFF_BLOCK_DATA_TYPE}\"]`,\n preserveWhitespace: 'full',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom)\n\n return {\n originalText: dom.getAttribute('data-original-text') || '',\n modifiedText: dom.getAttribute('data-modified-text') || '',\n language: dom.getAttribute('data-language') || 'text',\n }\n },\n },\n ],\n toDOM: (node) => {\n return [\n 'div',\n {\n 'data-type': DIFF_BLOCK_DATA_TYPE,\n 'data-original-text': node.attrs.originalText,\n 'data-modified-text': node.attrs.modifiedText,\n 'data-language': node.attrs.language,\n class: 'milkdown-diff-block',\n },\n ['code', { spellcheck: 'false' }, 0],\n ]\n },\n parseMarkdown: {\n match: ({ type }) => type === 'diff_block',\n runner: (state, node, type) => {\n const originalText = (node as any).originalText as string\n const modifiedText = (node as any).modifiedText as string\n const language = (node as any).language as string\n\n state.addNode(type, {\n originalText: originalText || '',\n modifiedText: modifiedText || '',\n language: language || 'text',\n })\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'diff_block',\n runner: (state, node) => {\n state.addNode('code', undefined, undefined, {\n lang: 'diff_block',\n value: JSON.stringify(\n {\n originalText: node.attrs.originalText,\n modifiedText: node.attrs.modifiedText,\n language: node.attrs.language,\n },\n null,\n 2\n ),\n })\n },\n },\n }\n})\n\nwithMeta(diffBlockSchema.node, {\n displayName: 'NodeSchema<diff_block>',\n group: 'DiffBlock',\n})\n","import type { Node } from '@jvs-milkdown/prose/model'\nimport type { EditorView, NodeView } from '@jvs-milkdown/prose/view'\n\nimport { unifiedMergeView } from '@codemirror/merge'\nimport { Compartment, EditorState } from '@codemirror/state'\nimport {\n EditorView as CodeMirror,\n type ViewUpdate,\n drawSelection,\n} from '@codemirror/view'\nimport { ref, watchEffect, type WatchHandle } from 'vue'\n\nimport type { DiffBlockConfig } from '../config'\n\nexport class DiffBlockNodeView implements NodeView {\n dom: HTMLElement\n cm: CodeMirror\n\n selected = ref(false)\n\n private updating = false\n private disposeSelectedWatcher: WatchHandle\n\n private readonly readOnlyConf: Compartment\n\n constructor(\n public node: Node,\n public view: EditorView,\n public getPos: () => number | undefined,\n public config: DiffBlockConfig\n ) {\n this.readOnlyConf = new Compartment()\n\n this.cm = new CodeMirror({\n doc: this.node.attrs.modifiedText || '',\n root: this.view.root,\n extensions: [\n this.readOnlyConf.of(EditorState.readOnly.of(true)),\n drawSelection(),\n unifiedMergeView({\n original: this.node.attrs.originalText || '',\n mergeControls: true,\n }),\n CodeMirror.updateListener.of(this.forwardUpdate),\n ...config.extensions,\n ],\n })\n\n this.dom = document.createElement('div')\n this.dom.className = 'milkdown-diff-block'\n this.dom.appendChild(this.cm.dom)\n\n this.disposeSelectedWatcher = watchEffect(() => {\n const isSelected = this.selected.value\n if (isSelected) {\n this.dom.classList.add('selected')\n } else {\n this.dom.classList.remove('selected')\n }\n })\n }\n\n private forwardUpdate = (update: ViewUpdate) => {\n if (this.updating) return\n if (!update.docChanged) return\n\n // If the doc changed via CodeMirror merge controls (accept/reject),\n // sync it back to ProseMirror's modifiedText attribute.\n const pos = this.getPos()\n if (pos == null) return\n\n const newText = update.state.doc.toString()\n const tr = this.view.state.tr.setNodeAttribute(pos, 'modifiedText', newText)\n this.view.dispatch(tr)\n }\n\n setSelection(anchor: number, head: number) {\n if (!this.cm.dom.isConnected) return\n\n this.cm.focus()\n this.updating = true\n this.cm.dispatch({ selection: { anchor, head } })\n this.updating = false\n }\n\n update(node: Node) {\n if (node.type !== this.node.type) return false\n\n if (this.updating) return true\n\n this.node = node\n\n const modifiedText = node.attrs.modifiedText || ''\n\n // Reconfigure unifiedMergeView with the current original text if needed\n // (We might need to recreate it if originalText changes, but typically it doesn't change from outside)\n\n const change = computeChange(this.cm.state.doc.toString(), modifiedText)\n if (change) {\n this.updating = true\n this.cm.dispatch({\n changes: { from: change.from, to: change.to, insert: change.text },\n })\n this.updating = false\n }\n return true\n }\n\n selectNode() {\n this.selected.value = true\n this.cm.focus()\n }\n\n deselectNode() {\n this.selected.value = false\n }\n\n stopEvent() {\n return true\n }\n\n destroy() {\n this.cm.destroy()\n this.disposeSelectedWatcher()\n }\n}\n\nfunction computeChange(\n oldVal: string,\n newVal: string\n): { from: number; to: number; text: string } | null {\n if (oldVal === newVal) return null\n\n let start = 0\n let oldEnd = oldVal.length\n let newEnd = newVal.length\n\n while (\n start < oldEnd &&\n oldVal.charCodeAt(start) === newVal.charCodeAt(start)\n )\n ++start\n\n while (\n oldEnd > start &&\n newEnd > start &&\n oldVal.charCodeAt(oldEnd - 1) === newVal.charCodeAt(newEnd - 1)\n ) {\n oldEnd--\n newEnd--\n }\n\n return { from: start, to: oldEnd, text: newVal.slice(start, newEnd) }\n}\n","import type { NodeViewConstructor } from '@jvs-milkdown/prose/view'\n\nimport { $view } from '@jvs-milkdown/utils'\n\nimport { withMeta } from '../../__internal__/meta'\nimport { diffBlockConfig } from '../config'\nimport { diffBlockSchema } from '../schema'\nimport { DiffBlockNodeView } from './node-view'\n\nexport const diffBlockView = $view(\n diffBlockSchema.node,\n (ctx): NodeViewConstructor => {\n const config = ctx.get(diffBlockConfig.key)\n return (node, view, getPos) =>\n new DiffBlockNodeView(node, view, getPos, config)\n }\n)\n\nwithMeta(diffBlockView, {\n displayName: 'NodeView<diff_block>',\n group: 'DiffBlock',\n})\n","import type { Node } from '@jvs-milkdown/transformer'\n\nimport { $remark } from '@jvs-milkdown/utils'\nimport { visit } from 'unist-util-visit'\n\nimport { withMeta } from '../__internal__/meta'\n\nfunction visitDiffBlock(ast: Node) {\n return visit(\n ast,\n 'code',\n (\n node: Node & { lang?: string; value?: string },\n index: number,\n parent: Node & { children: Node[] }\n ) => {\n if (node.lang !== 'diff_block') return\n\n let originalText = ''\n let modifiedText = node.value || ''\n let language = 'text'\n\n try {\n if (modifiedText.startsWith('{')) {\n const parsed = JSON.parse(modifiedText)\n originalText = parsed.originalText || ''\n modifiedText = parsed.modifiedText || ''\n language = parsed.language || 'text'\n }\n } catch {\n // fallback\n }\n\n const newNode = {\n type: 'diff_block',\n originalText,\n modifiedText,\n language,\n }\n\n parent.children.splice(index, 1, newNode as any)\n }\n )\n}\n\nexport const remarkDiffBlockPlugin = $remark(\n 'remark-diff-block',\n () => () => visitDiffBlock\n)\n\nwithMeta(remarkDiffBlockPlugin.plugin, {\n displayName: 'Remark<remarkDiffBlock>',\n group: 'DiffBlock',\n})\n\nwithMeta(remarkDiffBlockPlugin.options, {\n displayName: 'RemarkConfig<remarkDiffBlock>',\n group: 'DiffBlock',\n})\n","import type { MilkdownPlugin } from '@jvs-milkdown/ctx'\n\nimport { diffBlockConfig } from './config'\nimport { diffBlockSchema } from './schema'\nimport { diffBlockView } from './view'\n\nexport * from './config'\nexport * from './schema'\nexport * from './view'\nexport * from './remark-plugin'\n\nimport { remarkDiffBlockPlugin } from './remark-plugin'\n\nexport const diffBlock: MilkdownPlugin[] = [\n diffBlockConfig,\n remarkDiffBlockPlugin,\n diffBlockSchema,\n diffBlockView,\n].flat()\n"],"names":["CodeMirror"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remark-plugin.d.ts","sourceRoot":"","sources":["../../src/diff-block/remark-plugin.ts"],"names":[],"mappings":"AA6CA,eAAO,MAAM,qBAAqB,qEAGjC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/diff-block/schema.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,oBAAoB,eAAe,CAAA;AAEhD,eAAO,MAAM,eAAe,yDAyE1B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/diff-block/view/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AASnE,eAAO,MAAM,aAAa,+FAOzB,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Node } from '@jvs-milkdown/prose/model';
|
|
2
|
+
import type { EditorView, NodeView } from '@jvs-milkdown/prose/view';
|
|
3
|
+
import { EditorView as CodeMirror } from '@codemirror/view';
|
|
4
|
+
import type { DiffBlockConfig } from '../config';
|
|
5
|
+
export declare class DiffBlockNodeView implements NodeView {
|
|
6
|
+
node: Node;
|
|
7
|
+
view: EditorView;
|
|
8
|
+
getPos: () => number | undefined;
|
|
9
|
+
config: DiffBlockConfig;
|
|
10
|
+
dom: HTMLElement;
|
|
11
|
+
cm: CodeMirror;
|
|
12
|
+
selected: import("vue").Ref<boolean, boolean>;
|
|
13
|
+
private updating;
|
|
14
|
+
private disposeSelectedWatcher;
|
|
15
|
+
private readonly readOnlyConf;
|
|
16
|
+
constructor(node: Node, view: EditorView, getPos: () => number | undefined, config: DiffBlockConfig);
|
|
17
|
+
private forwardUpdate;
|
|
18
|
+
setSelection(anchor: number, head: number): void;
|
|
19
|
+
update(node: Node): boolean;
|
|
20
|
+
selectNode(): void;
|
|
21
|
+
deselectNode(): void;
|
|
22
|
+
stopEvent(): boolean;
|
|
23
|
+
destroy(): void;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=node-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-view.d.ts","sourceRoot":"","sources":["../../../src/diff-block/view/node-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAIpE,OAAO,EACL,UAAU,IAAI,UAAU,EAGzB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAEhD,qBAAa,iBAAkB,YAAW,QAAQ;IAYvC,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS;IAChC,MAAM,EAAE,eAAe;IAdhC,GAAG,EAAE,WAAW,CAAA;IAChB,EAAE,EAAE,UAAU,CAAA;IAEd,QAAQ,sCAAa;IAErB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,sBAAsB,CAAa;IAE3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAa;gBAGjC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS,EAChC,MAAM,EAAE,eAAe;IAiChC,OAAO,CAAC,aAAa,CAYpB;IAED,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IASzC,MAAM,CAAC,IAAI,EAAE,IAAI;IAuBjB,UAAU;IAKV,YAAY;IAIZ,SAAS;IAIT,OAAO;CAIR"}
|
package/lib/index.d.ts
CHANGED
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAA;AACrD,cAAc,cAAc,CAAA"}
|