@kerebron/extension-basic-editor 0.0.6 → 0.0.7
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/esm/editor/src/CoreEditor.d.ts +28 -0
- package/esm/editor/src/CoreEditor.d.ts.map +1 -0
- package/esm/editor/src/CoreEditor.js +170 -0
- package/esm/editor/src/Extension.d.ts +26 -0
- package/esm/editor/src/Extension.d.ts.map +1 -0
- package/esm/editor/src/Extension.js +33 -0
- package/esm/editor/src/ExtensionManager.d.ts +32 -0
- package/esm/editor/src/ExtensionManager.d.ts.map +1 -0
- package/esm/editor/src/ExtensionManager.js +253 -0
- package/esm/editor/src/Mark.d.ts +18 -0
- package/esm/editor/src/Mark.d.ts.map +1 -0
- package/esm/editor/src/Mark.js +34 -0
- package/esm/editor/src/Node.d.ts +27 -0
- package/esm/editor/src/Node.d.ts.map +1 -0
- package/esm/editor/src/Node.js +43 -0
- package/esm/editor/src/commands/CommandManager.d.ts +20 -0
- package/esm/editor/src/commands/CommandManager.d.ts.map +1 -0
- package/esm/editor/src/commands/CommandManager.js +60 -0
- package/esm/editor/src/commands/createChainableState.d.ts +3 -0
- package/esm/editor/src/commands/createChainableState.d.ts.map +1 -0
- package/esm/editor/src/commands/createChainableState.js +29 -0
- package/esm/editor/src/commands/mod.d.ts +49 -0
- package/esm/editor/src/commands/mod.d.ts.map +1 -0
- package/esm/editor/src/commands/mod.js +928 -0
- package/esm/editor/src/mod.d.ts +5 -0
- package/esm/editor/src/mod.d.ts.map +1 -0
- package/esm/editor/src/mod.js +4 -0
- package/esm/editor/src/plugins/input-rules/InputRulesPlugin.d.ts +23 -0
- package/esm/editor/src/plugins/input-rules/InputRulesPlugin.d.ts.map +1 -0
- package/esm/editor/src/plugins/input-rules/InputRulesPlugin.js +163 -0
- package/esm/editor/src/plugins/input-rules/mod.d.ts +3 -0
- package/esm/editor/src/plugins/input-rules/mod.d.ts.map +1 -0
- package/esm/editor/src/plugins/input-rules/mod.js +2 -0
- package/esm/editor/src/plugins/input-rules/rulebuilders.d.ts +5 -0
- package/esm/editor/src/plugins/input-rules/rulebuilders.d.ts.map +1 -0
- package/esm/editor/src/plugins/input-rules/rulebuilders.js +50 -0
- package/esm/editor/src/types.d.ts +29 -0
- package/esm/editor/src/types.d.ts.map +1 -0
- package/esm/editor/src/types.js +1 -0
- package/esm/editor/src/utilities/createNodeFromContent.d.ts +12 -0
- package/esm/editor/src/utilities/createNodeFromContent.d.ts.map +1 -0
- package/esm/editor/src/utilities/createNodeFromContent.js +118 -0
- package/esm/editor/src/utilities/getHtmlAttributes.d.ts +4 -0
- package/esm/editor/src/utilities/getHtmlAttributes.d.ts.map +1 -0
- package/esm/editor/src/utilities/getHtmlAttributes.js +47 -0
- package/esm/editor/src/utilities/mod.d.ts +3 -0
- package/esm/editor/src/utilities/mod.d.ts.map +1 -0
- package/esm/editor/src/utilities/mod.js +2 -0
- package/esm/extension-automerge/src/CursorPlugin.d.ts +16 -0
- package/esm/extension-automerge/src/CursorPlugin.d.ts.map +1 -0
- package/esm/extension-automerge/src/CursorPlugin.js +114 -0
- package/esm/extension-automerge/src/ExtensionAutomerge.d.ts +26 -0
- package/esm/extension-automerge/src/ExtensionAutomerge.d.ts.map +1 -0
- package/esm/extension-automerge/src/ExtensionAutomerge.js +136 -0
- package/esm/extension-automerge/src/MarkUnknown.d.ts +8 -0
- package/esm/extension-automerge/src/MarkUnknown.d.ts.map +1 -0
- package/esm/extension-automerge/src/MarkUnknown.js +26 -0
- package/esm/extension-automerge/src/NodeUnknown.d.ts +8 -0
- package/esm/extension-automerge/src/NodeUnknown.d.ts.map +1 -0
- package/esm/extension-automerge/src/NodeUnknown.js +28 -0
- package/esm/extension-automerge/src/NodeUnknownBlock.d.ts +11 -0
- package/esm/extension-automerge/src/NodeUnknownBlock.d.ts.map +1 -0
- package/esm/extension-automerge/src/NodeUnknownBlock.js +36 -0
- package/esm/extension-automerge/src/SchemaAdapter.d.ts +70 -0
- package/esm/extension-automerge/src/SchemaAdapter.d.ts.map +1 -0
- package/esm/extension-automerge/src/SchemaAdapter.js +188 -0
- package/esm/extension-automerge/src/SyncPlugin.d.ts +16 -0
- package/esm/extension-automerge/src/SyncPlugin.d.ts.map +1 -0
- package/esm/extension-automerge/src/SyncPlugin.js +147 -0
- package/esm/extension-automerge/src/amToPm.d.ts +9 -0
- package/esm/extension-automerge/src/amToPm.d.ts.map +1 -0
- package/esm/extension-automerge/src/amToPm.js +245 -0
- package/esm/extension-automerge/src/amTraversal.d.ts +62 -0
- package/esm/extension-automerge/src/amTraversal.d.ts.map +1 -0
- package/esm/extension-automerge/src/amTraversal.js +688 -0
- package/esm/extension-automerge/src/loader.d.ts +8 -0
- package/esm/extension-automerge/src/loader.d.ts.map +1 -0
- package/esm/extension-automerge/src/loader.js +54 -0
- package/esm/extension-automerge/src/maintainSpans.d.ts +9 -0
- package/esm/extension-automerge/src/maintainSpans.d.ts.map +1 -0
- package/esm/extension-automerge/src/maintainSpans.js +464 -0
- package/esm/extension-automerge/src/pmToAm.d.ts +6 -0
- package/esm/extension-automerge/src/pmToAm.d.ts.map +1 -0
- package/esm/extension-automerge/src/pmToAm.js +183 -0
- package/esm/extension-automerge/src/pmTraversal.d.ts +26 -0
- package/esm/extension-automerge/src/pmTraversal.d.ts.map +1 -0
- package/esm/extension-automerge/src/pmTraversal.js +102 -0
- package/esm/extension-automerge/src/types.d.ts +42 -0
- package/esm/extension-automerge/src/types.d.ts.map +1 -0
- package/esm/extension-automerge/src/types.js +94 -0
- package/esm/extension-automerge/src/utils.d.ts +3 -0
- package/esm/extension-automerge/src/utils.d.ts.map +1 -0
- package/esm/extension-automerge/src/utils.js +18 -0
- package/esm/extension-basic-editor/src/ExtensionBaseKeymap.d.ts +8 -0
- package/esm/extension-basic-editor/src/ExtensionBaseKeymap.d.ts.map +1 -0
- package/esm/{ExtensionBaseKeymap.js → extension-basic-editor/src/ExtensionBaseKeymap.js} +2 -2
- package/esm/{ExtensionBasicEditor.d.ts → extension-basic-editor/src/ExtensionBasicEditor.d.ts} +1 -1
- package/esm/extension-basic-editor/src/ExtensionBasicEditor.d.ts.map +1 -0
- package/esm/{ExtensionBasicEditor.js → extension-basic-editor/src/ExtensionBasicEditor.js} +1 -1
- package/esm/{ExtensionDropcursor.d.ts → extension-basic-editor/src/ExtensionDropcursor.d.ts} +1 -1
- package/esm/extension-basic-editor/src/ExtensionDropcursor.d.ts.map +1 -0
- package/esm/{ExtensionDropcursor.js → extension-basic-editor/src/ExtensionDropcursor.js} +1 -1
- package/esm/{ExtensionGapcursor.d.ts → extension-basic-editor/src/ExtensionGapcursor.d.ts} +1 -1
- package/esm/extension-basic-editor/src/ExtensionGapcursor.d.ts.map +1 -0
- package/esm/{ExtensionGapcursor.js → extension-basic-editor/src/ExtensionGapcursor.js} +1 -1
- package/esm/{ExtensionHistory.d.ts → extension-basic-editor/src/ExtensionHistory.d.ts} +2 -2
- package/esm/extension-basic-editor/src/ExtensionHistory.d.ts.map +1 -0
- package/esm/{ExtensionHistory.js → extension-basic-editor/src/ExtensionHistory.js} +1 -1
- package/esm/{MarkCode.d.ts → extension-basic-editor/src/MarkCode.d.ts} +2 -2
- package/esm/extension-basic-editor/src/MarkCode.d.ts.map +1 -0
- package/esm/{MarkCode.js → extension-basic-editor/src/MarkCode.js} +2 -2
- package/esm/{MarkItalic.d.ts → extension-basic-editor/src/MarkItalic.d.ts} +2 -2
- package/esm/extension-basic-editor/src/MarkItalic.d.ts.map +1 -0
- package/esm/{MarkItalic.js → extension-basic-editor/src/MarkItalic.js} +2 -2
- package/esm/{MarkLink.d.ts → extension-basic-editor/src/MarkLink.d.ts} +1 -1
- package/esm/extension-basic-editor/src/MarkLink.d.ts.map +1 -0
- package/esm/{MarkLink.js → extension-basic-editor/src/MarkLink.js} +1 -1
- package/esm/{MarkStrong.d.ts → extension-basic-editor/src/MarkStrong.d.ts} +2 -2
- package/esm/extension-basic-editor/src/MarkStrong.d.ts.map +1 -0
- package/esm/{MarkStrong.js → extension-basic-editor/src/MarkStrong.js} +2 -2
- package/esm/{MarkUnderline.d.ts → extension-basic-editor/src/MarkUnderline.d.ts} +2 -2
- package/esm/extension-basic-editor/src/MarkUnderline.d.ts.map +1 -0
- package/esm/{MarkUnderline.js → extension-basic-editor/src/MarkUnderline.js} +2 -2
- package/esm/{NodeAside.d.ts → extension-basic-editor/src/NodeAside.d.ts} +1 -1
- package/esm/extension-basic-editor/src/NodeAside.d.ts.map +1 -0
- package/esm/{NodeAside.js → extension-basic-editor/src/NodeAside.js} +1 -1
- package/esm/{NodeBlockquote.d.ts → extension-basic-editor/src/NodeBlockquote.d.ts} +3 -3
- package/esm/extension-basic-editor/src/NodeBlockquote.d.ts.map +1 -0
- package/esm/{NodeBlockquote.js → extension-basic-editor/src/NodeBlockquote.js} +3 -3
- package/esm/{NodeBulletList.d.ts → extension-basic-editor/src/NodeBulletList.d.ts} +3 -3
- package/esm/extension-basic-editor/src/NodeBulletList.d.ts.map +1 -0
- package/esm/{NodeBulletList.js → extension-basic-editor/src/NodeBulletList.js} +3 -3
- package/esm/{NodeDocument.d.ts → extension-basic-editor/src/NodeDocument.d.ts} +1 -1
- package/esm/extension-basic-editor/src/NodeDocument.d.ts.map +1 -0
- package/esm/{NodeDocument.js → extension-basic-editor/src/NodeDocument.js} +1 -1
- package/esm/{NodeHardBreak.d.ts → extension-basic-editor/src/NodeHardBreak.d.ts} +2 -2
- package/esm/extension-basic-editor/src/NodeHardBreak.d.ts.map +1 -0
- package/esm/{NodeHardBreak.js → extension-basic-editor/src/NodeHardBreak.js} +2 -2
- package/esm/{NodeHeading.d.ts → extension-basic-editor/src/NodeHeading.d.ts} +3 -3
- package/esm/extension-basic-editor/src/NodeHeading.d.ts.map +1 -0
- package/esm/{NodeHeading.js → extension-basic-editor/src/NodeHeading.js} +3 -3
- package/esm/{NodeHorizontalRule.d.ts → extension-basic-editor/src/NodeHorizontalRule.d.ts} +2 -2
- package/esm/extension-basic-editor/src/NodeHorizontalRule.d.ts.map +1 -0
- package/esm/{NodeHorizontalRule.js → extension-basic-editor/src/NodeHorizontalRule.js} +1 -1
- package/esm/{NodeImage.d.ts → extension-basic-editor/src/NodeImage.d.ts} +2 -2
- package/esm/extension-basic-editor/src/NodeImage.d.ts.map +1 -0
- package/esm/{NodeImage.js → extension-basic-editor/src/NodeImage.js} +1 -1
- package/esm/{NodeListItem.d.ts → extension-basic-editor/src/NodeListItem.d.ts} +2 -2
- package/esm/extension-basic-editor/src/NodeListItem.d.ts.map +1 -0
- package/esm/{NodeListItem.js → extension-basic-editor/src/NodeListItem.js} +1 -1
- package/esm/{NodeOrderedList.d.ts → extension-basic-editor/src/NodeOrderedList.d.ts} +3 -3
- package/esm/extension-basic-editor/src/NodeOrderedList.d.ts.map +1 -0
- package/esm/{NodeOrderedList.js → extension-basic-editor/src/NodeOrderedList.js} +5 -5
- package/esm/{NodeParagraph.d.ts → extension-basic-editor/src/NodeParagraph.d.ts} +2 -2
- package/esm/extension-basic-editor/src/NodeParagraph.d.ts.map +1 -0
- package/esm/{NodeParagraph.js → extension-basic-editor/src/NodeParagraph.js} +2 -2
- package/esm/{NodeText.d.ts → extension-basic-editor/src/NodeText.d.ts} +1 -1
- package/esm/extension-basic-editor/src/NodeText.d.ts.map +1 -0
- package/esm/{NodeText.js → extension-basic-editor/src/NodeText.js} +1 -1
- package/package.json +31 -25
- package/esm/ExtensionBaseKeymap.d.ts +0 -8
- package/esm/ExtensionBaseKeymap.d.ts.map +0 -1
- package/esm/ExtensionBasicEditor.d.ts.map +0 -1
- package/esm/ExtensionDropcursor.d.ts.map +0 -1
- package/esm/ExtensionGapcursor.d.ts.map +0 -1
- package/esm/ExtensionHistory.d.ts.map +0 -1
- package/esm/MarkCode.d.ts.map +0 -1
- package/esm/MarkItalic.d.ts.map +0 -1
- package/esm/MarkLink.d.ts.map +0 -1
- package/esm/MarkStrong.d.ts.map +0 -1
- package/esm/MarkUnderline.d.ts.map +0 -1
- package/esm/NodeAside.d.ts.map +0 -1
- package/esm/NodeBlockquote.d.ts.map +0 -1
- package/esm/NodeBulletList.d.ts.map +0 -1
- package/esm/NodeDocument.d.ts.map +0 -1
- package/esm/NodeHardBreak.d.ts.map +0 -1
- package/esm/NodeHeading.d.ts.map +0 -1
- package/esm/NodeHorizontalRule.d.ts.map +0 -1
- package/esm/NodeImage.d.ts.map +0 -1
- package/esm/NodeListItem.d.ts.map +0 -1
- package/esm/NodeOrderedList.d.ts.map +0 -1
- package/esm/NodeParagraph.d.ts.map +0 -1
- package/esm/NodeText.d.ts.map +0 -1
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { next as automerge } from '@automerge/automerge/slim';
|
|
2
|
+
import { pmNodeToSpans, pmRangeToAmRange } from './pmTraversal.js';
|
|
3
|
+
import { amMarksFromPmMarks } from './SchemaAdapter.js';
|
|
4
|
+
export function pmToAm(adapter, spans, steps,
|
|
5
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6
|
+
doc, pmDoc, path) {
|
|
7
|
+
let unappliedMarks = [];
|
|
8
|
+
function flushMarks() {
|
|
9
|
+
if (unappliedMarks.length > 0) {
|
|
10
|
+
applyAddMarkSteps(adapter, spans, unappliedMarks, doc, path);
|
|
11
|
+
unappliedMarks = [];
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
for (const step of steps) {
|
|
15
|
+
const stepId = step.toJSON()['stepType'];
|
|
16
|
+
if (stepId === 'addMark') {
|
|
17
|
+
unappliedMarks.push(step);
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
flushMarks();
|
|
22
|
+
}
|
|
23
|
+
oneStep(adapter, spans, stepId, step, doc, pmDoc, path);
|
|
24
|
+
const nextDoc = step.apply(pmDoc).doc;
|
|
25
|
+
if (nextDoc == null) {
|
|
26
|
+
throw new Error('Could not apply step to document');
|
|
27
|
+
}
|
|
28
|
+
pmDoc = nextDoc;
|
|
29
|
+
spans = automerge.spans(doc, path);
|
|
30
|
+
}
|
|
31
|
+
flushMarks();
|
|
32
|
+
}
|
|
33
|
+
function oneStep(adapter, spans, stepId, step,
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
35
|
+
doc, pmDoc, path) {
|
|
36
|
+
if (stepId === 'replace') {
|
|
37
|
+
replaceStep(adapter, spans, step, doc, path, pmDoc);
|
|
38
|
+
}
|
|
39
|
+
else if (stepId === 'replaceAround') {
|
|
40
|
+
replaceAroundStep(adapter, step, doc, pmDoc, path);
|
|
41
|
+
}
|
|
42
|
+
else if (stepId === 'removeMark') {
|
|
43
|
+
removeMarkStep(adapter, spans, step, doc, path);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
47
|
+
function replaceStep(adapter, spans, step, doc, field, pmDoc) {
|
|
48
|
+
if (step.slice.content.childCount === 1 &&
|
|
49
|
+
step.slice.content.firstChild?.isText) {
|
|
50
|
+
// This is a text insertion or deletion
|
|
51
|
+
const amRange = pmRangeToAmRange(adapter, spans, {
|
|
52
|
+
from: step.from,
|
|
53
|
+
to: step.to,
|
|
54
|
+
});
|
|
55
|
+
if (amRange == null) {
|
|
56
|
+
throw new Error(`Could not find range (${step.from}, ${step.to}) in render tree`);
|
|
57
|
+
}
|
|
58
|
+
let { start, end } = amRange;
|
|
59
|
+
if (start > end) {
|
|
60
|
+
// eslint-disable-next-line @typescript-eslint/no-extra-semi
|
|
61
|
+
[start, end] = [end, start];
|
|
62
|
+
}
|
|
63
|
+
const toDelete = end - start;
|
|
64
|
+
automerge.splice(doc, field, start, toDelete, step.slice.content.firstChild.text);
|
|
65
|
+
const marks = step.slice.content.firstChild.marks;
|
|
66
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
67
|
+
const length = step.slice.content.firstChild.text.length;
|
|
68
|
+
reconcileMarks(adapter, doc, field, start, length, marks);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const applied = step.apply(pmDoc).doc;
|
|
72
|
+
if (applied == null) {
|
|
73
|
+
throw new Error('Could not apply step to document');
|
|
74
|
+
}
|
|
75
|
+
const newSpans = pmNodeToSpans(adapter, applied);
|
|
76
|
+
automerge.updateSpans(doc, field, newSpans);
|
|
77
|
+
}
|
|
78
|
+
function replaceAroundStep(adapter, step,
|
|
79
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
80
|
+
doc, pmDoc, field) {
|
|
81
|
+
const applied = step.apply(pmDoc).doc;
|
|
82
|
+
if (applied == null) {
|
|
83
|
+
throw new Error('Could not apply step to document');
|
|
84
|
+
}
|
|
85
|
+
const newSpans = pmNodeToSpans(adapter, applied);
|
|
86
|
+
automerge.updateSpans(doc, field, newSpans);
|
|
87
|
+
}
|
|
88
|
+
function applyAddMarkSteps(adapter, spans, steps, doc, field) {
|
|
89
|
+
const marks = steps.map((step) => {
|
|
90
|
+
const amRange = pmRangeToAmRange(adapter, spans, {
|
|
91
|
+
from: step.from,
|
|
92
|
+
to: step.to,
|
|
93
|
+
});
|
|
94
|
+
if (amRange == null) {
|
|
95
|
+
throw new Error(`Could not find range (${step.from}, ${step.to}) in render tree`);
|
|
96
|
+
}
|
|
97
|
+
const markName = step.mark.type.name;
|
|
98
|
+
const expand = step.mark.type.spec.inclusive ? 'both' : 'none';
|
|
99
|
+
const value = markAttrsToMarkValue(step.mark.type, step.mark.attrs);
|
|
100
|
+
return { range: amRange, markName, expand, value };
|
|
101
|
+
});
|
|
102
|
+
const groupedMarks = marks.reduce((acc, mark) => {
|
|
103
|
+
const lastGroup = acc[acc.length - 1];
|
|
104
|
+
if (lastGroup == null) {
|
|
105
|
+
return [mark];
|
|
106
|
+
}
|
|
107
|
+
if (lastGroup.markName === mark.markName &&
|
|
108
|
+
lastGroup.expand === mark.expand &&
|
|
109
|
+
lastGroup.value === mark.value) {
|
|
110
|
+
if (lastGroup.range.end === mark.range.start) {
|
|
111
|
+
lastGroup.range.end = mark.range.end;
|
|
112
|
+
return acc;
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
const spansBetween = spans.slice(lastGroup.range.end, mark.range.start);
|
|
116
|
+
if (spansBetween.every((s) => s.type === 'block')) {
|
|
117
|
+
lastGroup.range.end = mark.range.end;
|
|
118
|
+
return acc;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
acc.push(mark);
|
|
123
|
+
return acc;
|
|
124
|
+
}, []);
|
|
125
|
+
for (const mark of groupedMarks) {
|
|
126
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
127
|
+
automerge.mark(
|
|
128
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
129
|
+
doc, field, { start: mark.range.start, end: mark.range.end, expand: mark.expand }, mark.markName, mark.value);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
function removeMarkStep(adapter, spans, step, doc, field) {
|
|
133
|
+
const amRange = pmRangeToAmRange(adapter, spans, {
|
|
134
|
+
from: step.from,
|
|
135
|
+
to: step.to,
|
|
136
|
+
});
|
|
137
|
+
if (amRange == null) {
|
|
138
|
+
throw new Error(`Could not find range (${step.from}, ${step.to}) in render tree`);
|
|
139
|
+
}
|
|
140
|
+
const { start, end } = amRange;
|
|
141
|
+
if (start == null || end == null) {
|
|
142
|
+
throw new Error(`Could not find step.from (${step.from}) or step.to (${step.to}) in render tree`);
|
|
143
|
+
}
|
|
144
|
+
const markName = step.mark.type.name;
|
|
145
|
+
const expand = step.mark.type.spec.inclusive ? 'both' : 'none';
|
|
146
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
147
|
+
automerge.unmark(doc, field, { start, end, expand }, markName);
|
|
148
|
+
}
|
|
149
|
+
function reconcileMarks(adapter, doc, path, index, length, marks) {
|
|
150
|
+
const currentMarks = automerge.marksAt(doc, path, index);
|
|
151
|
+
const newMarks = amMarksFromPmMarks(adapter, marks);
|
|
152
|
+
const newMarkNames = new Set(Object.keys(newMarks));
|
|
153
|
+
const currentMarkNames = new Set(Object.keys(currentMarks));
|
|
154
|
+
for (const markName of newMarkNames) {
|
|
155
|
+
if (!currentMarkNames.has(markName) ||
|
|
156
|
+
newMarks[markName] !== currentMarks[markName]) {
|
|
157
|
+
automerge.mark(doc, path, { start: index, end: index + length, expand: 'both' }, markName, newMarks[markName]);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
for (const markName of currentMarkNames) {
|
|
161
|
+
const markMapping = adapter.markMappings.find((m) => m.automergeMarkName === markName);
|
|
162
|
+
if (markMapping == null) {
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
if (!newMarkNames.has(markName)) {
|
|
166
|
+
automerge.unmark(doc, path, { start: index, end: index + length, expand: 'both' }, markName);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
function markAttrsToMarkValue(markType, attrs) {
|
|
171
|
+
if (markType.name === 'link') {
|
|
172
|
+
return JSON.stringify(attrs);
|
|
173
|
+
}
|
|
174
|
+
else if (markType.name === 'strong' ||
|
|
175
|
+
markType.name === 'em' ||
|
|
176
|
+
markType.name === 'code') {
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
// Maybe we should just throw here?
|
|
181
|
+
return true;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { next as automerge } from '@automerge/automerge/slim';
|
|
2
|
+
import { Node } from 'prosemirror-model';
|
|
3
|
+
import { SchemaAdapter } from './SchemaAdapter.js';
|
|
4
|
+
export declare function pmNodeToSpans(adapter: SchemaAdapter, node: Node): ({
|
|
5
|
+
type: 'block';
|
|
6
|
+
value: {
|
|
7
|
+
type: automerge.RawString;
|
|
8
|
+
parents: automerge.RawString[];
|
|
9
|
+
attrs: {
|
|
10
|
+
[key: string]: automerge.MaterializeValue;
|
|
11
|
+
};
|
|
12
|
+
isEmbed: boolean;
|
|
13
|
+
};
|
|
14
|
+
} | {
|
|
15
|
+
type: 'text';
|
|
16
|
+
value: string;
|
|
17
|
+
marks?: automerge.MarkSet;
|
|
18
|
+
})[];
|
|
19
|
+
export declare function pmRangeToAmRange(adapter: SchemaAdapter, spans: automerge.Span[], { from, to }: {
|
|
20
|
+
from: number;
|
|
21
|
+
to: number;
|
|
22
|
+
}): {
|
|
23
|
+
start: number;
|
|
24
|
+
end: number;
|
|
25
|
+
} | null;
|
|
26
|
+
//# sourceMappingURL=pmTraversal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pmTraversal.d.ts","sourceRoot":"","sources":["../../../src/extension-automerge/src/pmTraversal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAGL,IAAI,EAGL,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOnD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,IAAI,GACT,CACC;IACA,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE;QACL,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC;QAC1B,OAAO,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC;QAC/B,KAAK,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,gBAAgB,CAAA;SAAE,CAAC;QACrD,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;CACH,GACC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAA;CAAE,CAC7D,EAAE,CAgCF;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,EACvB,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA4EvC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { next as automerge } from '@automerge/automerge/slim';
|
|
2
|
+
import { eventsWithIndexChanges, traverseNode, traverseSpans, } from './amTraversal.js';
|
|
3
|
+
export function pmNodeToSpans(adapter, node) {
|
|
4
|
+
const events = traverseNode(adapter, node);
|
|
5
|
+
const result = [];
|
|
6
|
+
for (const event of events) {
|
|
7
|
+
if (event.type == 'block') {
|
|
8
|
+
const attrs = { ...event.block.attrs };
|
|
9
|
+
delete attrs.isAmgBlock;
|
|
10
|
+
result.push({
|
|
11
|
+
type: 'block',
|
|
12
|
+
value: {
|
|
13
|
+
type: new automerge.RawString(event.block.type),
|
|
14
|
+
parents: event.block.parents.map((p) => new automerge.RawString(p)),
|
|
15
|
+
attrs,
|
|
16
|
+
isEmbed: event.block.isEmbed,
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
else if (event.type == 'text') {
|
|
21
|
+
result.push({ type: 'text', value: event.text, marks: event.marks });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
export function pmRangeToAmRange(adapter, spans, { from, to }) {
|
|
27
|
+
const events = eventsWithIndexChanges(traverseSpans(adapter, spans));
|
|
28
|
+
let amStart = null;
|
|
29
|
+
let amEnd = null;
|
|
30
|
+
let maxPmIdxSeen = null;
|
|
31
|
+
let maxAmIdxSeen = null;
|
|
32
|
+
if (from === 0) {
|
|
33
|
+
amStart = 0;
|
|
34
|
+
}
|
|
35
|
+
while (maxPmIdxSeen == null ||
|
|
36
|
+
maxPmIdxSeen <= to ||
|
|
37
|
+
amStart == null ||
|
|
38
|
+
amEnd == null) {
|
|
39
|
+
const next = events.next();
|
|
40
|
+
if (next.done) {
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
const state = next.value;
|
|
44
|
+
maxPmIdxSeen = state.after.pmIdx;
|
|
45
|
+
maxAmIdxSeen = state.after.amIdx;
|
|
46
|
+
if (amStart == null) {
|
|
47
|
+
if (state.after.pmIdx < from) {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
if (state.event.type === 'text') {
|
|
51
|
+
if (state.before.pmIdx > from) {
|
|
52
|
+
// We already passed the start but this is the first automerge event
|
|
53
|
+
// we've seen
|
|
54
|
+
amStart = Math.max(state.before.amIdx, 0) + 1;
|
|
55
|
+
}
|
|
56
|
+
else if (state.before.pmIdx + state.event.text.length > from) {
|
|
57
|
+
// The target `from` is in the middle of this text
|
|
58
|
+
const diff = from - state.before.pmIdx;
|
|
59
|
+
//amStart = Math.max(state.before.amIdx, 0) + diff + 1
|
|
60
|
+
amStart = state.before.amIdx + diff + 1;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
amStart = Math.max(state.after.amIdx, 0) + 1;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else if (state.after.pmIdx >= from) {
|
|
67
|
+
// we are only interested in blocks which start _after_ the from index
|
|
68
|
+
amStart = state.after.amIdx + 1;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (amEnd == null) {
|
|
72
|
+
if (state.after.pmIdx < to) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
if (state.event.type === 'text') {
|
|
76
|
+
if (state.before.pmIdx >= to) {
|
|
77
|
+
amEnd = state.before.amIdx + 1;
|
|
78
|
+
}
|
|
79
|
+
else if (state.before.pmIdx + state.event.text.length > to) {
|
|
80
|
+
const diff = to - state.before.pmIdx;
|
|
81
|
+
//amEnd = Math.max(state.before.amIdx, 0) + diff + 1
|
|
82
|
+
amEnd = state.before.amIdx + diff + 1;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
if (state.before.pmIdx >= to) {
|
|
87
|
+
amEnd = state.before.amIdx + 1;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (amStart != null) {
|
|
93
|
+
if (amEnd == null) {
|
|
94
|
+
amEnd = maxAmIdxSeen ? maxAmIdxSeen + 1 : amStart;
|
|
95
|
+
}
|
|
96
|
+
return { start: amStart, end: amEnd };
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
const endOfDoc = maxAmIdxSeen ? maxAmIdxSeen + 1 : 0;
|
|
100
|
+
return { start: endOfDoc, end: endOfDoc };
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { next as automerge } from '@automerge/automerge/slim';
|
|
2
|
+
export type ChangeFn<T> = (doc: T, field: string) => void;
|
|
3
|
+
export type DocHandle<T> = {
|
|
4
|
+
docSync(): T | undefined;
|
|
5
|
+
change: (fn: (doc: T) => void) => void;
|
|
6
|
+
on(event: 'change', callback: (p: DocHandleChangePayload<T>) => void): void;
|
|
7
|
+
off(event: 'change', callback: (p: DocHandleChangePayload<T>) => void): void;
|
|
8
|
+
};
|
|
9
|
+
export interface DocHandleChangePayload<T> {
|
|
10
|
+
/** The handle that changed */
|
|
11
|
+
handle: DocHandle<T>;
|
|
12
|
+
/** The value of the document after the change */
|
|
13
|
+
doc: automerge.Doc<T>;
|
|
14
|
+
/** The patches representing the change that occurred */
|
|
15
|
+
patches: automerge.Patch[];
|
|
16
|
+
/** Information about the change */
|
|
17
|
+
patchInfo: automerge.PatchInfo<T>;
|
|
18
|
+
}
|
|
19
|
+
export type BlockType = string;
|
|
20
|
+
export declare function isBlockMarker(obj: unknown): obj is BlockMarker;
|
|
21
|
+
export declare function validBlockType(type: unknown): type is BlockType;
|
|
22
|
+
export type BlockMarker = {
|
|
23
|
+
type: automerge.RawString;
|
|
24
|
+
parents: automerge.RawString[];
|
|
25
|
+
attrs: {
|
|
26
|
+
[key: string]: automerge.MaterializeValue;
|
|
27
|
+
};
|
|
28
|
+
isEmbed?: boolean;
|
|
29
|
+
};
|
|
30
|
+
export declare function blockSpanToBlockMarker(span: {
|
|
31
|
+
[key: string]: automerge.MaterializeValue;
|
|
32
|
+
}): BlockMarker;
|
|
33
|
+
export type Span = {
|
|
34
|
+
type: 'text';
|
|
35
|
+
value: string;
|
|
36
|
+
marks?: automerge.MarkSet;
|
|
37
|
+
} | {
|
|
38
|
+
type: 'block';
|
|
39
|
+
value: BlockMarker;
|
|
40
|
+
};
|
|
41
|
+
export declare function amSpanToSpan(span: automerge.Span): Span;
|
|
42
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/extension-automerge/src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE9D,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAS1D,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IACzB,OAAO,IAAI,CAAC,GAAG,SAAS,CAAC;IACzB,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC;IACvC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IAC5E,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;CAC9E,CAAC;AAEF,MAAM,WAAW,sBAAsB,CAAC,CAAC;IACvC,8BAA8B;IAC9B,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACrB,iDAAiD;IACjD,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtB,wDAAwD;IACxD,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,mCAAmC;IACnC,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;CACnC;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,WAAW,CAsB9D;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,SAAS,CAc/D;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC;IAC1B,OAAO,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC;IAC/B,KAAK,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,gBAAgB,CAAA;KAAE,CAAC;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,gBAAgB,CAAC;CAC3C,GAAG,WAAW,CAsCd;AAcD,MAAM,MAAM,IAAI,GACZ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CAAC;AAE1C,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,IAAI,CAMvD"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { next as automerge } from '@automerge/automerge/slim';
|
|
2
|
+
export function isBlockMarker(obj) {
|
|
3
|
+
if (obj == null) {
|
|
4
|
+
return false;
|
|
5
|
+
}
|
|
6
|
+
if (typeof obj !== 'object') {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
if (!('type' in obj)) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
if (!('parents' in obj) || !Array.isArray(obj.parents)) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
if (!validBlockType(obj.type)) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
for (const parent of obj.parents) {
|
|
19
|
+
if (!validBlockType(parent)) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
export function validBlockType(type) {
|
|
26
|
+
if (!(type instanceof automerge.RawString)) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
return [
|
|
30
|
+
'list_item',
|
|
31
|
+
'ordered_list',
|
|
32
|
+
'bullet_list',
|
|
33
|
+
'paragraph',
|
|
34
|
+
'heading',
|
|
35
|
+
'aside',
|
|
36
|
+
'image',
|
|
37
|
+
'blockquote',
|
|
38
|
+
].includes(type.val);
|
|
39
|
+
}
|
|
40
|
+
export function blockSpanToBlockMarker(span) {
|
|
41
|
+
const { type: spanType, parents: spanParents, attrs: spanAttrs, isEmbed: spanIsEmbed, } = span;
|
|
42
|
+
let type;
|
|
43
|
+
if (!(spanType instanceof automerge.RawString)) {
|
|
44
|
+
if ('string' === typeof (spanType?.val)) {
|
|
45
|
+
type = new automerge.RawString(spanType.val);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
type = new automerge.RawString('paragraph');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
type = spanType;
|
|
53
|
+
}
|
|
54
|
+
const attrs = {};
|
|
55
|
+
if (spanAttrs && typeof spanAttrs == 'object') {
|
|
56
|
+
for (const [key, value] of Object.entries(spanAttrs)) {
|
|
57
|
+
attrs[key] = value;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
let parents;
|
|
61
|
+
if (!isArrayOfRawString(spanParents)) {
|
|
62
|
+
if (Array.isArray(spanParents)) {
|
|
63
|
+
parents = spanParents.filter((spanType) => 'string' === typeof (spanType?.val))
|
|
64
|
+
.map((spanType) => new automerge.RawString(spanType.val));
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
parents = [];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
parents = spanParents;
|
|
72
|
+
}
|
|
73
|
+
const isEmbed = !!spanIsEmbed;
|
|
74
|
+
return { type, parents, attrs, isEmbed };
|
|
75
|
+
}
|
|
76
|
+
function isArrayOfRawString(obj) {
|
|
77
|
+
if (!Array.isArray(obj)) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
for (const item of obj) {
|
|
81
|
+
if (!(item instanceof automerge.RawString)) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
export function amSpanToSpan(span) {
|
|
88
|
+
if (span.type === 'text') {
|
|
89
|
+
return { type: 'text', value: span.value, marks: span.marks };
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
return { type: 'block', value: blockSpanToBlockMarker(span.value) };
|
|
93
|
+
}
|
|
94
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/extension-automerge/src/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAMvD;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAM/D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export function isArrayEqual(a, b) {
|
|
2
|
+
if (a.length !== b.length)
|
|
3
|
+
return false;
|
|
4
|
+
for (let i = 0; i < a.length; i++) {
|
|
5
|
+
if (a[i] !== b[i])
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
export function isPrefixOfArray(prefix, a) {
|
|
11
|
+
if (prefix.length > a.length)
|
|
12
|
+
return false;
|
|
13
|
+
for (let i = 0; i < prefix.length; i++) {
|
|
14
|
+
if (prefix[i] !== a[i])
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Extension } from '../../editor/src/mod.js';
|
|
2
|
+
import { type Commands, type CommandShortcuts } from '../../editor/src/commands/mod.js';
|
|
3
|
+
export declare class ExtensionBaseKeymap extends Extension {
|
|
4
|
+
name: string;
|
|
5
|
+
getCommands(): Partial<Commands>;
|
|
6
|
+
getKeyboardShortcuts(): Partial<CommandShortcuts>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=ExtensionBaseKeymap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExtensionBaseKeymap.d.ts","sourceRoot":"","sources":["../../../src/extension-basic-editor/src/ExtensionBaseKeymap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAQpD,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACtB,MAAM,kCAAkC,CAAC;AAE1C,qBAAa,mBAAoB,SAAQ,SAAS;IAChD,IAAI,SAAiB;IAErB,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC;IAgBhC,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAclD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Extension } from '
|
|
2
|
-
import { baseKeymap, joinDown, joinUp, lift, selectParentNode, } from '
|
|
1
|
+
import { Extension } from '../../editor/src/mod.js';
|
|
2
|
+
import { baseKeymap, joinDown, joinUp, lift, selectParentNode, } from '../../editor/src/commands/mod.js';
|
|
3
3
|
export class ExtensionBaseKeymap extends Extension {
|
|
4
4
|
constructor() {
|
|
5
5
|
super(...arguments);
|
package/esm/{ExtensionBasicEditor.d.ts → extension-basic-editor/src/ExtensionBasicEditor.d.ts}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Extension } from '
|
|
1
|
+
import { Extension } from '../../editor/src/mod.js';
|
|
2
2
|
import { ExtensionBaseKeymap } from './ExtensionBaseKeymap.js';
|
|
3
3
|
import { ExtensionDropcursor } from './ExtensionDropcursor.js';
|
|
4
4
|
import { ExtensionGapcursor } from './ExtensionGapcursor.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExtensionBasicEditor.d.ts","sourceRoot":"","sources":["../../../src/extension-basic-editor/src/ExtensionBasicEditor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,qBAAa,oBAAqB,SAAQ,SAAS;IACjD,IAAI,SAAkB;IACtB,QAAQ,6TAqBN;CACH"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Extension } from '
|
|
1
|
+
import { Extension } from '../../editor/src/mod.js';
|
|
2
2
|
import { ExtensionBaseKeymap } from './ExtensionBaseKeymap.js';
|
|
3
3
|
import { ExtensionDropcursor } from './ExtensionDropcursor.js';
|
|
4
4
|
import { ExtensionGapcursor } from './ExtensionGapcursor.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExtensionDropcursor.d.ts","sourceRoot":"","sources":["../../../src/extension-basic-editor/src/ExtensionDropcursor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,qBAAa,mBAAoB,SAAQ,SAAS;IAChD,IAAI,SAAgB;IAEpB,OAAO;;;;MAIL;IAEF,qBAAqB,IAAI,MAAM,EAAE;CAKlC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExtensionGapcursor.d.ts","sourceRoot":"","sources":["../../../src/extension-basic-editor/src/ExtensionGapcursor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,qBAAa,kBAAmB,SAAQ,SAAS;IAC/C,IAAI,SAAe;IAEnB,OAAO;;;;MAIL;IAEO,qBAAqB,IAAI,MAAM,EAAE;CAK3C"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Plugin } from 'prosemirror-state';
|
|
2
|
-
import { type CoreEditor, Extension } from '
|
|
3
|
-
import { type Commands, type CommandShortcuts } from '
|
|
2
|
+
import { type CoreEditor, Extension } from '../../editor/src/mod.js';
|
|
3
|
+
import { type Commands, type CommandShortcuts } from '../../editor/src/commands/mod.js';
|
|
4
4
|
export declare class ExtensionHistory extends Extension {
|
|
5
5
|
name: string;
|
|
6
6
|
options: {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExtensionHistory.d.ts","sourceRoot":"","sources":["../../../src/extension-basic-editor/src/ExtensionHistory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,KAAK,UAAU,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACtB,MAAM,kCAAkC,CAAC;AAE1C,qBAAa,gBAAiB,SAAQ,SAAS;IAC7C,IAAI,SAAa;IAEjB,OAAO;;;MAGL;IAEO,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;IAQlD,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAiBjD,qBAAqB,IAAI,MAAM,EAAE;CAK3C"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { history, redo, undo } from 'prosemirror-history';
|
|
2
2
|
import { undoInputRule } from 'prosemirror-inputrules';
|
|
3
|
-
import { Extension } from '
|
|
3
|
+
import { Extension } from '../../editor/src/mod.js';
|
|
4
4
|
export class ExtensionHistory extends Extension {
|
|
5
5
|
constructor() {
|
|
6
6
|
super(...arguments);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MarkSpec, MarkType } from 'prosemirror-model';
|
|
2
|
-
import { CoreEditor, Mark } from '
|
|
3
|
-
import { Commands, CommandShortcuts } from '
|
|
2
|
+
import { CoreEditor, Mark } from '../../editor/src/mod.js';
|
|
3
|
+
import { Commands, CommandShortcuts } from '../../editor/src/commands/mod.js';
|
|
4
4
|
export declare class MarkCode extends Mark {
|
|
5
5
|
name: string;
|
|
6
6
|
requires: string[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkCode.d.ts","sourceRoot":"","sources":["../../../src/extension-basic-editor/src/MarkCode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,QAAQ,EACR,gBAAgB,EAEjB,MAAM,kCAAkC,CAAC;AAE1C,qBAAa,QAAS,SAAQ,IAAI;IACvB,IAAI,SAAU;IACvB,QAAQ,WAAW;IAEnB,SAAS;;MAEP;IAEF,WAAW,IAAI,QAAQ;IASvB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMlE,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAKlD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Mark } from '
|
|
2
|
-
import { toggleMark, } from '
|
|
1
|
+
import { Mark } from '../../editor/src/mod.js';
|
|
2
|
+
import { toggleMark, } from '../../editor/src/commands/mod.js';
|
|
3
3
|
export class MarkCode extends Mark {
|
|
4
4
|
constructor() {
|
|
5
5
|
super(...arguments);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CoreEditor, Mark } from '
|
|
2
|
-
import { Commands, CommandShortcuts } from '
|
|
1
|
+
import { CoreEditor, Mark } from '../../editor/src/mod.js';
|
|
2
|
+
import { Commands, CommandShortcuts } from '../../editor/src/commands/mod.js';
|
|
3
3
|
export declare class MarkItalic extends Mark {
|
|
4
4
|
name: string;
|
|
5
5
|
requires: string[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkItalic.d.ts","sourceRoot":"","sources":["../../../src/extension-basic-editor/src/MarkItalic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,QAAQ,EACR,gBAAgB,EAEjB,MAAM,kCAAkC,CAAC;AAE1C,qBAAa,UAAW,SAAQ,IAAI;IACzB,IAAI,SAAQ;IACrB,QAAQ,WAAW;IAEnB,SAAS;;MAEP;IAEF,WAAW,IAAI,QAAQ;IAcvB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMlE,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAMlD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Mark } from '
|
|
2
|
-
import { toggleMark, } from '
|
|
1
|
+
import { Mark } from '../../editor/src/mod.js';
|
|
2
|
+
import { toggleMark, } from '../../editor/src/commands/mod.js';
|
|
3
3
|
export class MarkItalic extends Mark {
|
|
4
4
|
constructor() {
|
|
5
5
|
super(...arguments);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkLink.d.ts","sourceRoot":"","sources":["../../../src/extension-basic-editor/src/MarkLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C,qBAAa,QAAS,SAAQ,IAAI;IACvB,IAAI,SAAU;IACvB,QAAQ,WAAW;IAEnB,SAAS;;;kCAGiB,MAAM;;;;oCAiBJ,MAAM;;MAMhC;IAEO,WAAW,IAAI,QAAQ;CAwBjC"}
|