@liveblocks/react-tiptap 3.21.0-exp1 → 3.21.0-exp2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/collaboration-liveblocks/cursors.cjs +10 -211
  2. package/dist/collaboration-liveblocks/cursors.cjs.map +1 -1
  3. package/dist/collaboration-liveblocks/cursors.js +6 -209
  4. package/dist/collaboration-liveblocks/cursors.js.map +1 -1
  5. package/dist/collaboration-liveblocks/plugin.cjs +13 -189
  6. package/dist/collaboration-liveblocks/plugin.cjs.map +1 -1
  7. package/dist/collaboration-liveblocks/plugin.js +12 -190
  8. package/dist/collaboration-liveblocks/plugin.js.map +1 -1
  9. package/dist/collaboration-liveblocks/schema.cjs +23 -139
  10. package/dist/collaboration-liveblocks/schema.cjs.map +1 -1
  11. package/dist/collaboration-liveblocks/schema.js +5 -128
  12. package/dist/collaboration-liveblocks/schema.js.map +1 -1
  13. package/dist/comments/CommentsExtension.cjs +3 -2
  14. package/dist/comments/CommentsExtension.cjs.map +1 -1
  15. package/dist/comments/CommentsExtension.js +2 -1
  16. package/dist/comments/CommentsExtension.js.map +1 -1
  17. package/dist/mentions/MentionExtension.cjs +3 -2
  18. package/dist/mentions/MentionExtension.cjs.map +1 -1
  19. package/dist/mentions/MentionExtension.js +2 -1
  20. package/dist/mentions/MentionExtension.js.map +1 -1
  21. package/dist/version.cjs +1 -1
  22. package/dist/version.js +1 -1
  23. package/package.json +7 -6
  24. package/dist/collaboration-liveblocks/mapping.cjs +0 -218
  25. package/dist/collaboration-liveblocks/mapping.cjs.map +0 -1
  26. package/dist/collaboration-liveblocks/mapping.js +0 -207
  27. package/dist/collaboration-liveblocks/mapping.js.map +0 -1
  28. package/dist/collaboration-liveblocks/remote.cjs +0 -210
  29. package/dist/collaboration-liveblocks/remote.cjs.map +0 -1
  30. package/dist/collaboration-liveblocks/remote.js +0 -207
  31. package/dist/collaboration-liveblocks/remote.js.map +0 -1
  32. package/dist/collaboration-liveblocks/steps.cjs +0 -359
  33. package/dist/collaboration-liveblocks/steps.cjs.map +0 -1
  34. package/dist/collaboration-liveblocks/steps.js +0 -356
  35. package/dist/collaboration-liveblocks/steps.js.map +0 -1
@@ -1,207 +0,0 @@
1
- import { getLiveblocksNodeContent, getLiveblocksNodeId, getLiveblocksNodeType, getLiveblocksNodeText } from './schema.js';
2
-
3
- function selectionToLiveblocksPosition(selection) {
4
- return {
5
- anchor: selection.anchor,
6
- head: selection.head
7
- };
8
- }
9
- function clampLiveblocksPosition(position, max) {
10
- return {
11
- anchor: Math.max(0, Math.min(position.anchor, max)),
12
- head: Math.max(0, Math.min(position.head, max))
13
- };
14
- }
15
- function childStart(parent, parentPos) {
16
- return parent.type.name === "doc" ? parentPos : parentPos + 1;
17
- }
18
- function indexChildren(nodeRanges, listRanges, textRanges, pmParent, liveParent, parentPos) {
19
- const liveContent = getLiveblocksNodeContent(liveParent);
20
- if (liveContent === void 0) {
21
- return;
22
- }
23
- listRanges.push({
24
- content: liveContent,
25
- from: parentPos,
26
- node: liveParent,
27
- nodeId: getLiveblocksNodeId(liveParent),
28
- pmNode: pmParent,
29
- to: parentPos + pmParent.nodeSize
30
- });
31
- let pmChildIndex = 0;
32
- let pmOffset = 0;
33
- const start = childStart(pmParent, parentPos);
34
- for (let liveIndex = 0; liveIndex < liveContent.length; liveIndex++) {
35
- const liveChild = liveContent.get(liveIndex);
36
- const pmChild = pmParent.maybeChild(pmChildIndex);
37
- if (liveChild === void 0 || pmChild === null) {
38
- return;
39
- }
40
- const from = start + pmOffset;
41
- const to = from + pmChild.nodeSize;
42
- nodeRanges.push({
43
- childIndex: liveIndex,
44
- content: liveContent,
45
- from,
46
- node: liveChild,
47
- nodeId: getLiveblocksNodeId(liveChild),
48
- parent: liveParent,
49
- pmNode: pmChild,
50
- to
51
- });
52
- if (getLiveblocksNodeType(liveChild) === "text") {
53
- const text = getLiveblocksNodeText(liveChild);
54
- if (text === void 0) {
55
- return;
56
- }
57
- let liveOffset = 0;
58
- let remaining = text.length;
59
- while (remaining > 0) {
60
- const textChild = pmParent.maybeChild(pmChildIndex);
61
- if (textChild === null || !textChild.isText) {
62
- return;
63
- }
64
- const length = Math.min(remaining, textChild.nodeSize);
65
- const textFrom = start + pmOffset;
66
- textRanges.push({
67
- from: textFrom,
68
- to: textFrom + length,
69
- liveOffset,
70
- node: liveChild,
71
- nodeId: getLiveblocksNodeId(liveChild),
72
- text
73
- });
74
- liveOffset += length;
75
- remaining -= length;
76
- pmOffset += textChild.nodeSize;
77
- pmChildIndex++;
78
- }
79
- } else {
80
- indexChildren(
81
- nodeRanges,
82
- listRanges,
83
- textRanges,
84
- pmChild,
85
- liveChild,
86
- from
87
- );
88
- pmOffset += pmChild.nodeSize;
89
- pmChildIndex++;
90
- }
91
- }
92
- }
93
- function buildLiveblocksTreeIndex(pmDoc, liveRoot) {
94
- const nodeRanges = [
95
- {
96
- from: 0,
97
- node: liveRoot,
98
- nodeId: getLiveblocksNodeId(liveRoot),
99
- pmNode: pmDoc,
100
- to: pmDoc.content.size
101
- }
102
- ];
103
- const listRanges = [];
104
- const textRanges = [];
105
- indexChildren(nodeRanges, listRanges, textRanges, pmDoc, liveRoot, 0);
106
- return { listRanges, nodeRanges, textRanges };
107
- }
108
- function findTextRangeAtPosition(index, position) {
109
- return index.textRanges.find(
110
- (range) => position >= range.from && position <= range.to
111
- );
112
- }
113
- function findTextRangeAtPositionInChildren(pmParent, liveParent, parentPos, position) {
114
- const liveContent = getLiveblocksNodeContent(liveParent);
115
- if (liveContent === void 0) {
116
- return void 0;
117
- }
118
- let pmChildIndex = 0;
119
- let pmOffset = 0;
120
- const start = childStart(pmParent, parentPos);
121
- for (let liveIndex = 0; liveIndex < liveContent.length; liveIndex++) {
122
- const liveChild = liveContent.get(liveIndex);
123
- const pmChild = pmParent.maybeChild(pmChildIndex);
124
- if (liveChild === void 0 || pmChild === null) {
125
- return void 0;
126
- }
127
- if (getLiveblocksNodeType(liveChild) === "text") {
128
- const text = getLiveblocksNodeText(liveChild);
129
- if (text === void 0) {
130
- return void 0;
131
- }
132
- let liveOffset = 0;
133
- let remaining = text.length;
134
- while (remaining > 0) {
135
- const textChild = pmParent.maybeChild(pmChildIndex);
136
- if (textChild === null || !textChild.isText) {
137
- return void 0;
138
- }
139
- const length = Math.min(remaining, textChild.nodeSize);
140
- const from = start + pmOffset;
141
- const to = from + length;
142
- if (position >= from && position <= to) {
143
- return {
144
- from,
145
- to,
146
- liveOffset,
147
- node: liveChild,
148
- nodeId: getLiveblocksNodeId(liveChild),
149
- text
150
- };
151
- }
152
- liveOffset += length;
153
- remaining -= length;
154
- pmOffset += textChild.nodeSize;
155
- pmChildIndex++;
156
- }
157
- } else {
158
- const from = start + pmOffset;
159
- const to = from + pmChild.nodeSize;
160
- if (position >= from && position <= to) {
161
- return findTextRangeAtPositionInChildren(
162
- pmChild,
163
- liveChild,
164
- from,
165
- position
166
- );
167
- }
168
- pmOffset += pmChild.nodeSize;
169
- pmChildIndex++;
170
- }
171
- }
172
- return void 0;
173
- }
174
- function findTextRangeAtPositionInDocument(pmDoc, liveRoot, position) {
175
- return findTextRangeAtPositionInChildren(pmDoc, liveRoot, 0, position);
176
- }
177
- function findTextRangesInRange(index, from, to) {
178
- return index.textRanges.filter(
179
- (range) => Math.max(range.from, from) < Math.min(range.to, to)
180
- );
181
- }
182
- function findTextRangeByLiveText(index, text) {
183
- return index.textRanges.find((range) => range.text === text);
184
- }
185
- function findNodeRangeByLiveNode(index, node) {
186
- return index.nodeRanges.find((range) => range.node === node);
187
- }
188
- function findListRangeByLiveList(index, content) {
189
- return index.listRanges.find((range) => range.content === content);
190
- }
191
- function getChildPosition(parent, parentPos, index) {
192
- if (index < 0 || index > parent.childCount) {
193
- return void 0;
194
- }
195
- let offset = 0;
196
- for (let childIndex = 0; childIndex < index; childIndex++) {
197
- const child = parent.maybeChild(childIndex);
198
- if (child === null) {
199
- return void 0;
200
- }
201
- offset += child.nodeSize;
202
- }
203
- return childStart(parent, parentPos) + offset;
204
- }
205
-
206
- export { buildLiveblocksTreeIndex, clampLiveblocksPosition, findListRangeByLiveList, findNodeRangeByLiveNode, findTextRangeAtPosition, findTextRangeAtPositionInDocument, findTextRangeByLiveText, findTextRangesInRange, getChildPosition, selectionToLiveblocksPosition };
207
- //# sourceMappingURL=mapping.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mapping.js","sources":["../../src/collaboration-liveblocks/mapping.ts"],"sourcesContent":["import type { LiveList, LiveText } from \"@liveblocks/client\";\nimport type { Node as ProseMirrorNode } from \"@tiptap/pm/model\";\nimport type { Selection } from \"@tiptap/pm/state\";\n\nimport {\n getLiveblocksNodeContent,\n getLiveblocksNodeId,\n getLiveblocksNodeText,\n getLiveblocksNodeType,\n type LiveblocksTiptapNode,\n} from \"./schema\";\n\nexport type LiveblocksTiptapPosition = {\n anchor: number;\n head: number;\n};\n\nexport function selectionToLiveblocksPosition(\n selection: Selection\n): LiveblocksTiptapPosition {\n return {\n anchor: selection.anchor,\n head: selection.head,\n };\n}\n\nexport function clampLiveblocksPosition(\n position: LiveblocksTiptapPosition,\n max: number\n): LiveblocksTiptapPosition {\n return {\n anchor: Math.max(0, Math.min(position.anchor, max)),\n head: Math.max(0, Math.min(position.head, max)),\n };\n}\n\nexport type LiveblocksTextRange = {\n from: number;\n to: number;\n liveOffset: number;\n node: LiveblocksTiptapNode;\n nodeId: string;\n text: LiveText;\n};\n\nexport type LiveblocksNodeRange = {\n childIndex?: number;\n content?: LiveList<LiveblocksTiptapNode>;\n from: number;\n node: LiveblocksTiptapNode;\n nodeId: string;\n parent?: LiveblocksTiptapNode;\n pmNode: ProseMirrorNode;\n to: number;\n};\n\nexport type LiveblocksListRange = {\n content: LiveList<LiveblocksTiptapNode>;\n from: number;\n node: LiveblocksTiptapNode;\n nodeId: string;\n pmNode: ProseMirrorNode;\n to: number;\n};\n\nexport type LiveblocksTreeIndex = {\n listRanges: LiveblocksListRange[];\n nodeRanges: LiveblocksNodeRange[];\n textRanges: LiveblocksTextRange[];\n};\n\nfunction childStart(parent: ProseMirrorNode, parentPos: number): number {\n return parent.type.name === \"doc\" ? parentPos : parentPos + 1;\n}\n\nfunction indexChildren(\n nodeRanges: LiveblocksNodeRange[],\n listRanges: LiveblocksListRange[],\n textRanges: LiveblocksTextRange[],\n pmParent: ProseMirrorNode,\n liveParent: LiveblocksTiptapNode,\n parentPos: number\n): void {\n const liveContent = getLiveblocksNodeContent(liveParent);\n if (liveContent === undefined) {\n return;\n }\n\n listRanges.push({\n content: liveContent,\n from: parentPos,\n node: liveParent,\n nodeId: getLiveblocksNodeId(liveParent),\n pmNode: pmParent,\n to: parentPos + pmParent.nodeSize,\n });\n\n let pmChildIndex = 0;\n let pmOffset = 0;\n const start = childStart(pmParent, parentPos);\n\n for (let liveIndex = 0; liveIndex < liveContent.length; liveIndex++) {\n const liveChild = liveContent.get(liveIndex);\n const pmChild = pmParent.maybeChild(pmChildIndex);\n if (liveChild === undefined || pmChild === null) {\n return;\n }\n\n const from = start + pmOffset;\n const to = from + pmChild.nodeSize;\n\n nodeRanges.push({\n childIndex: liveIndex,\n content: liveContent,\n from,\n node: liveChild,\n nodeId: getLiveblocksNodeId(liveChild),\n parent: liveParent,\n pmNode: pmChild,\n to,\n });\n\n if (getLiveblocksNodeType(liveChild) === \"text\") {\n const text = getLiveblocksNodeText(liveChild);\n if (text === undefined) {\n return;\n }\n\n let liveOffset = 0;\n let remaining = text.length;\n\n while (remaining > 0) {\n const textChild = pmParent.maybeChild(pmChildIndex);\n if (textChild === null || !textChild.isText) {\n return;\n }\n\n const length = Math.min(remaining, textChild.nodeSize);\n const textFrom = start + pmOffset;\n\n textRanges.push({\n from: textFrom,\n to: textFrom + length,\n liveOffset,\n node: liveChild,\n nodeId: getLiveblocksNodeId(liveChild),\n text,\n });\n\n liveOffset += length;\n remaining -= length;\n pmOffset += textChild.nodeSize;\n pmChildIndex++;\n }\n } else {\n indexChildren(\n nodeRanges,\n listRanges,\n textRanges,\n pmChild,\n liveChild,\n from\n );\n pmOffset += pmChild.nodeSize;\n pmChildIndex++;\n }\n }\n}\n\nexport function buildLiveblocksTreeIndex(\n pmDoc: ProseMirrorNode,\n liveRoot: LiveblocksTiptapNode\n): LiveblocksTreeIndex {\n const nodeRanges: LiveblocksNodeRange[] = [\n {\n from: 0,\n node: liveRoot,\n nodeId: getLiveblocksNodeId(liveRoot),\n pmNode: pmDoc,\n to: pmDoc.content.size,\n },\n ];\n const listRanges: LiveblocksListRange[] = [];\n const textRanges: LiveblocksTextRange[] = [];\n indexChildren(nodeRanges, listRanges, textRanges, pmDoc, liveRoot, 0);\n return { listRanges, nodeRanges, textRanges };\n}\n\nexport function findTextRangeAtPosition(\n index: LiveblocksTreeIndex,\n position: number\n): LiveblocksTextRange | undefined {\n return index.textRanges.find(\n (range) => position >= range.from && position <= range.to\n );\n}\n\nfunction findTextRangeAtPositionInChildren(\n pmParent: ProseMirrorNode,\n liveParent: LiveblocksTiptapNode,\n parentPos: number,\n position: number\n): LiveblocksTextRange | undefined {\n const liveContent = getLiveblocksNodeContent(liveParent);\n if (liveContent === undefined) {\n return undefined;\n }\n\n let pmChildIndex = 0;\n let pmOffset = 0;\n const start = childStart(pmParent, parentPos);\n\n for (let liveIndex = 0; liveIndex < liveContent.length; liveIndex++) {\n const liveChild = liveContent.get(liveIndex);\n const pmChild = pmParent.maybeChild(pmChildIndex);\n if (liveChild === undefined || pmChild === null) {\n return undefined;\n }\n\n if (getLiveblocksNodeType(liveChild) === \"text\") {\n const text = getLiveblocksNodeText(liveChild);\n if (text === undefined) {\n return undefined;\n }\n\n let liveOffset = 0;\n let remaining = text.length;\n\n while (remaining > 0) {\n const textChild = pmParent.maybeChild(pmChildIndex);\n if (textChild === null || !textChild.isText) {\n return undefined;\n }\n\n const length = Math.min(remaining, textChild.nodeSize);\n const from = start + pmOffset;\n const to = from + length;\n\n if (position >= from && position <= to) {\n return {\n from,\n to,\n liveOffset,\n node: liveChild,\n nodeId: getLiveblocksNodeId(liveChild),\n text,\n };\n }\n\n liveOffset += length;\n remaining -= length;\n pmOffset += textChild.nodeSize;\n pmChildIndex++;\n }\n } else {\n const from = start + pmOffset;\n const to = from + pmChild.nodeSize;\n\n if (position >= from && position <= to) {\n return findTextRangeAtPositionInChildren(\n pmChild,\n liveChild,\n from,\n position\n );\n }\n\n pmOffset += pmChild.nodeSize;\n pmChildIndex++;\n }\n }\n\n return undefined;\n}\n\nexport function findTextRangeAtPositionInDocument(\n pmDoc: ProseMirrorNode,\n liveRoot: LiveblocksTiptapNode,\n position: number\n): LiveblocksTextRange | undefined {\n return findTextRangeAtPositionInChildren(pmDoc, liveRoot, 0, position);\n}\n\nexport function findTextRangesInRange(\n index: LiveblocksTreeIndex,\n from: number,\n to: number\n): LiveblocksTextRange[] {\n return index.textRanges.filter(\n (range) => Math.max(range.from, from) < Math.min(range.to, to)\n );\n}\n\nexport function findTextRangeByLiveText(\n index: LiveblocksTreeIndex,\n text: LiveText\n): LiveblocksTextRange | undefined {\n return index.textRanges.find((range) => range.text === text);\n}\n\nexport function findNodeRangeByLiveNode(\n index: LiveblocksTreeIndex,\n node: LiveblocksTiptapNode\n): LiveblocksNodeRange | undefined {\n return index.nodeRanges.find((range) => range.node === node);\n}\n\nexport function findListRangeByLiveList(\n index: LiveblocksTreeIndex,\n content: unknown\n): LiveblocksListRange | undefined {\n return index.listRanges.find((range) => range.content === content);\n}\n\nexport function getChildPosition(\n parent: ProseMirrorNode,\n parentPos: number,\n index: number\n): number | undefined {\n if (index < 0 || index > parent.childCount) {\n return undefined;\n }\n\n let offset = 0;\n for (let childIndex = 0; childIndex < index; childIndex++) {\n const child = parent.maybeChild(childIndex);\n if (child === null) {\n return undefined;\n }\n\n offset += child.nodeSize;\n }\n\n return childStart(parent, parentPos) + offset;\n}\n"],"names":[],"mappings":"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"}
@@ -1,210 +0,0 @@
1
- 'use strict';
2
-
3
- var client = require('@liveblocks/client');
4
- var model = require('@tiptap/pm/model');
5
- var mapping = require('./mapping.cjs');
6
- var schema = require('./schema.cjs');
7
-
8
- function getMarkType(schema, type) {
9
- return schema.marks[type];
10
- }
11
- function isJsonObject(value) {
12
- return typeof value === "object" && value !== null && !Array.isArray(value);
13
- }
14
- function isLiveblocksTiptapNode(value) {
15
- return value instanceof client.LiveObject && typeof value.get("id") === "string" && typeof value.get("type") === "string";
16
- }
17
- function getLiveblocksNodeAttrs(node) {
18
- const attrs = node.get("attrs");
19
- return isJsonObject(attrs) ? attrs : void 0;
20
- }
21
- function createSliceFromLiveblocksNode(schema$1, node) {
22
- const nodes = schema.liveblocksTiptapNodeToJsonNodes(node).map(
23
- (jsonNode) => schema$1.nodeFromJSON(jsonNode)
24
- );
25
- return new model.Slice(model.Fragment.fromArray(nodes), 0, 0);
26
- }
27
- function applyMarksFromAttributes(tr, schema$1, from, to, attributes) {
28
- const marks = schema.attributesToMarks({ ...attributes });
29
- for (const mark of marks ?? []) {
30
- const markType = getMarkType(schema$1, mark.type);
31
- if (markType !== void 0) {
32
- tr.addMark(from, to, markType.create(mark.attrs));
33
- }
34
- }
35
- if (marks === void 0) {
36
- tr.removeMark(from, to);
37
- }
38
- }
39
- function findNodeRangeForLiveText(index, text) {
40
- return index.nodeRanges.find(
41
- (range) => schema.getLiveblocksNodeText(range.node) === text
42
- );
43
- }
44
- function applyRemoteStorageUpdates(view, liveRoot, updates) {
45
- if (updates.length === 0) {
46
- return { type: "unsupported" };
47
- }
48
- let tr = view.state.tr;
49
- for (const update of updates) {
50
- if (update.type === "LiveText") {
51
- if (!(update.node instanceof client.LiveText)) {
52
- return { type: "unsupported" };
53
- }
54
- for (const change of update.updates) {
55
- const index = mapping.buildLiveblocksTreeIndex(tr.doc, liveRoot);
56
- let range = mapping.findTextRangeByLiveText(index, update.node);
57
- if (range === void 0 && change.type === "delete") {
58
- const wrapperRange = findNodeRangeForLiveText(index, update.node);
59
- if (wrapperRange !== void 0) {
60
- const from2 = wrapperRange.from + change.index;
61
- tr = tr.delete(from2, from2 + change.length);
62
- continue;
63
- }
64
- return { type: "unsupported" };
65
- }
66
- if (range === void 0) {
67
- return { type: "unsupported" };
68
- }
69
- const from = range.from + change.index - range.liveOffset;
70
- if (change.type === "insert") {
71
- tr = tr.insertText(change.text, from);
72
- if (change.attributes !== void 0) {
73
- applyMarksFromAttributes(
74
- tr,
75
- view.state.schema,
76
- from,
77
- from + change.text.length,
78
- change.attributes
79
- );
80
- }
81
- } else if (change.type === "delete") {
82
- tr = tr.delete(from, from + change.length);
83
- } else {
84
- applyMarksFromAttributes(
85
- tr,
86
- view.state.schema,
87
- from,
88
- from + change.length,
89
- change.attributes
90
- );
91
- }
92
- }
93
- continue;
94
- }
95
- if (update.type === "LiveList") {
96
- for (const change of update.updates) {
97
- const index = mapping.buildLiveblocksTreeIndex(tr.doc, liveRoot);
98
- const range = mapping.findListRangeByLiveList(index, update.node);
99
- if (range === void 0) {
100
- return { type: "unsupported" };
101
- }
102
- if (change.type === "insert") {
103
- if (!isLiveblocksTiptapNode(change.item)) {
104
- return { type: "unsupported" };
105
- }
106
- const pos = mapping.getChildPosition(range.pmNode, range.from, change.index);
107
- if (pos === void 0) {
108
- return { type: "unsupported" };
109
- }
110
- tr = tr.replace(
111
- pos,
112
- pos,
113
- createSliceFromLiveblocksNode(view.state.schema, change.item)
114
- );
115
- } else if (change.type === "delete") {
116
- const from = mapping.getChildPosition(range.pmNode, range.from, change.index);
117
- const to = mapping.getChildPosition(
118
- range.pmNode,
119
- range.from,
120
- change.index + 1
121
- );
122
- if (from === void 0 || to === void 0) {
123
- return { type: "unsupported" };
124
- }
125
- tr = tr.delete(from, to);
126
- } else if (change.type === "set") {
127
- if (!isLiveblocksTiptapNode(change.item)) {
128
- return { type: "unsupported" };
129
- }
130
- const from = mapping.getChildPosition(range.pmNode, range.from, change.index);
131
- const to = mapping.getChildPosition(
132
- range.pmNode,
133
- range.from,
134
- change.index + 1
135
- );
136
- if (from === void 0 || to === void 0) {
137
- return { type: "unsupported" };
138
- }
139
- tr = tr.replace(
140
- from,
141
- to,
142
- createSliceFromLiveblocksNode(view.state.schema, change.item)
143
- );
144
- } else {
145
- if (!isLiveblocksTiptapNode(change.item)) {
146
- return { type: "unsupported" };
147
- }
148
- const from = mapping.getChildPosition(
149
- range.pmNode,
150
- range.from,
151
- change.previousIndex
152
- );
153
- const to = mapping.getChildPosition(
154
- range.pmNode,
155
- range.from,
156
- change.previousIndex + 1
157
- );
158
- const rawInsertPos = mapping.getChildPosition(
159
- range.pmNode,
160
- range.from,
161
- change.index > change.previousIndex ? change.index + 1 : change.index
162
- );
163
- if (from === void 0 || to === void 0 || rawInsertPos === void 0) {
164
- return { type: "unsupported" };
165
- }
166
- const slice = createSliceFromLiveblocksNode(
167
- view.state.schema,
168
- change.item
169
- );
170
- tr = tr.delete(from, to);
171
- const insertPos = tr.mapping.map(rawInsertPos, -1);
172
- tr = tr.replace(insertPos, insertPos, slice);
173
- }
174
- }
175
- continue;
176
- }
177
- if (update.type === "LiveObject") {
178
- if (!isLiveblocksTiptapNode(update.node)) {
179
- return { type: "unsupported" };
180
- }
181
- const attrUpdate = update.updates.attrs;
182
- if (attrUpdate === void 0) {
183
- return { type: "unsupported" };
184
- }
185
- const index = mapping.buildLiveblocksTreeIndex(tr.doc, liveRoot);
186
- const range = mapping.findNodeRangeByLiveNode(index, update.node);
187
- if (range === void 0 || range.pmNode.type.name === "doc") {
188
- return { type: "unsupported" };
189
- }
190
- tr = tr.setNodeMarkup(
191
- range.from,
192
- void 0,
193
- attrUpdate.type === "delete" ? null : getLiveblocksNodeAttrs(update.node)
194
- );
195
- continue;
196
- }
197
- return { type: "unsupported" };
198
- }
199
- return { type: "applied", tr };
200
- }
201
- function applyRemoteLiveTextUpdates(view, liveRoot, updates) {
202
- if (!updates.every((update) => update.type === "LiveText")) {
203
- return { type: "unsupported" };
204
- }
205
- return applyRemoteStorageUpdates(view, liveRoot, updates);
206
- }
207
-
208
- exports.applyRemoteLiveTextUpdates = applyRemoteLiveTextUpdates;
209
- exports.applyRemoteStorageUpdates = applyRemoteStorageUpdates;
210
- //# sourceMappingURL=remote.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remote.cjs","sources":["../../src/collaboration-liveblocks/remote.ts"],"sourcesContent":["import {\n type Json,\n type JsonObject,\n LiveObject,\n LiveText,\n type StorageUpdate,\n} from \"@liveblocks/client\";\nimport { Fragment, type MarkType, type Schema, Slice } from \"@tiptap/pm/model\";\nimport type { Transaction } from \"@tiptap/pm/state\";\nimport type { EditorView } from \"@tiptap/pm/view\";\n\nimport {\n buildLiveblocksTreeIndex,\n findListRangeByLiveList,\n findNodeRangeByLiveNode,\n findTextRangeByLiveText,\n getChildPosition,\n} from \"./mapping\";\nimport {\n attributesToMarks,\n type LiveblocksTiptapNode,\n getLiveblocksNodeText,\n liveblocksTiptapNodeToJsonNodes,\n} from \"./schema\";\n\ntype RemoteApplyResult =\n | {\n type: \"applied\";\n tr: Transaction;\n }\n | {\n type: \"unsupported\";\n };\n\nfunction getMarkType(schema: Schema, type: string): MarkType | undefined {\n return schema.marks[type];\n}\n\nfunction isJsonObject(value: unknown): value is JsonObject {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isLiveblocksTiptapNode(value: unknown): value is LiveblocksTiptapNode {\n return (\n value instanceof LiveObject &&\n typeof value.get(\"id\") === \"string\" &&\n typeof value.get(\"type\") === \"string\"\n );\n}\n\nfunction getLiveblocksNodeAttrs(\n node: LiveblocksTiptapNode\n): JsonObject | undefined {\n const attrs = node.get(\"attrs\");\n return isJsonObject(attrs) ? attrs : undefined;\n}\n\nfunction createSliceFromLiveblocksNode(\n schema: Schema,\n node: LiveblocksTiptapNode\n): Slice {\n const nodes = liveblocksTiptapNodeToJsonNodes(node).map((jsonNode) =>\n schema.nodeFromJSON(jsonNode)\n );\n\n return new Slice(Fragment.fromArray(nodes), 0, 0);\n}\n\nfunction applyMarksFromAttributes(\n tr: Transaction,\n schema: Schema,\n from: number,\n to: number,\n attributes: Record<string, Json | null>\n): void {\n const marks = attributesToMarks({ ...attributes });\n\n for (const mark of marks ?? []) {\n const markType = getMarkType(schema, mark.type);\n if (markType !== undefined) {\n tr.addMark(from, to, markType.create(mark.attrs));\n }\n }\n\n if (marks === undefined) {\n tr.removeMark(from, to);\n }\n}\n\nfunction findNodeRangeForLiveText(\n index: ReturnType<typeof buildLiveblocksTreeIndex>,\n text: LiveText\n) {\n return index.nodeRanges.find(\n (range) => getLiveblocksNodeText(range.node) === text\n );\n}\n\nexport function applyRemoteStorageUpdates(\n view: EditorView,\n liveRoot: LiveblocksTiptapNode,\n updates: readonly StorageUpdate[]\n): RemoteApplyResult {\n if (updates.length === 0) {\n return { type: \"unsupported\" };\n }\n\n let tr = view.state.tr;\n\n for (const update of updates) {\n if (update.type === \"LiveText\") {\n if (!(update.node instanceof LiveText)) {\n return { type: \"unsupported\" };\n }\n\n for (const change of update.updates) {\n const index = buildLiveblocksTreeIndex(tr.doc, liveRoot);\n let range = findTextRangeByLiveText(index, update.node);\n\n if (range === undefined && change.type === \"delete\") {\n const wrapperRange = findNodeRangeForLiveText(index, update.node);\n if (wrapperRange !== undefined) {\n const from = wrapperRange.from + change.index;\n tr = tr.delete(from, from + change.length);\n continue;\n }\n\n return { type: \"unsupported\" };\n }\n\n if (range === undefined) {\n return { type: \"unsupported\" };\n }\n\n const from = range.from + change.index - range.liveOffset;\n\n if (change.type === \"insert\") {\n tr = tr.insertText(change.text, from);\n if (change.attributes !== undefined) {\n applyMarksFromAttributes(\n tr,\n view.state.schema,\n from,\n from + change.text.length,\n change.attributes\n );\n }\n } else if (change.type === \"delete\") {\n tr = tr.delete(from, from + change.length);\n } else {\n applyMarksFromAttributes(\n tr,\n view.state.schema,\n from,\n from + change.length,\n change.attributes\n );\n }\n }\n\n continue;\n }\n\n if (update.type === \"LiveList\") {\n for (const change of update.updates) {\n const index = buildLiveblocksTreeIndex(tr.doc, liveRoot);\n const range = findListRangeByLiveList(index, update.node);\n if (range === undefined) {\n return { type: \"unsupported\" };\n }\n\n if (change.type === \"insert\") {\n if (!isLiveblocksTiptapNode(change.item)) {\n return { type: \"unsupported\" };\n }\n\n const pos = getChildPosition(range.pmNode, range.from, change.index);\n if (pos === undefined) {\n return { type: \"unsupported\" };\n }\n\n tr = tr.replace(\n pos,\n pos,\n createSliceFromLiveblocksNode(view.state.schema, change.item)\n );\n } else if (change.type === \"delete\") {\n const from = getChildPosition(range.pmNode, range.from, change.index);\n const to = getChildPosition(\n range.pmNode,\n range.from,\n change.index + 1\n );\n if (from === undefined || to === undefined) {\n return { type: \"unsupported\" };\n }\n\n tr = tr.delete(from, to);\n } else if (change.type === \"set\") {\n if (!isLiveblocksTiptapNode(change.item)) {\n return { type: \"unsupported\" };\n }\n\n const from = getChildPosition(range.pmNode, range.from, change.index);\n const to = getChildPosition(\n range.pmNode,\n range.from,\n change.index + 1\n );\n if (from === undefined || to === undefined) {\n return { type: \"unsupported\" };\n }\n\n tr = tr.replace(\n from,\n to,\n createSliceFromLiveblocksNode(view.state.schema, change.item)\n );\n } else {\n if (!isLiveblocksTiptapNode(change.item)) {\n return { type: \"unsupported\" };\n }\n\n const from = getChildPosition(\n range.pmNode,\n range.from,\n change.previousIndex\n );\n const to = getChildPosition(\n range.pmNode,\n range.from,\n change.previousIndex + 1\n );\n const rawInsertPos = getChildPosition(\n range.pmNode,\n range.from,\n change.index > change.previousIndex\n ? change.index + 1\n : change.index\n );\n if (\n from === undefined ||\n to === undefined ||\n rawInsertPos === undefined\n ) {\n return { type: \"unsupported\" };\n }\n\n const slice = createSliceFromLiveblocksNode(\n view.state.schema,\n change.item\n );\n tr = tr.delete(from, to);\n const insertPos = tr.mapping.map(rawInsertPos, -1);\n tr = tr.replace(insertPos, insertPos, slice);\n }\n }\n\n continue;\n }\n\n if (update.type === \"LiveObject\") {\n if (!isLiveblocksTiptapNode(update.node)) {\n return { type: \"unsupported\" };\n }\n\n const attrUpdate = update.updates.attrs;\n if (attrUpdate === undefined) {\n return { type: \"unsupported\" };\n }\n\n const index = buildLiveblocksTreeIndex(tr.doc, liveRoot);\n const range = findNodeRangeByLiveNode(index, update.node);\n if (range === undefined || range.pmNode.type.name === \"doc\") {\n return { type: \"unsupported\" };\n }\n\n tr = tr.setNodeMarkup(\n range.from,\n undefined,\n attrUpdate.type === \"delete\" ? null : getLiveblocksNodeAttrs(update.node)\n );\n\n continue;\n }\n\n return { type: \"unsupported\" };\n }\n\n return { type: \"applied\", tr };\n}\n\nexport function applyRemoteLiveTextUpdates(\n view: EditorView,\n liveRoot: LiveblocksTiptapNode,\n updates: readonly StorageUpdate[]\n): RemoteApplyResult {\n if (!updates.every((update) => update.type === \"LiveText\")) {\n return { type: \"unsupported\" };\n }\n\n return applyRemoteStorageUpdates(view, liveRoot, updates);\n}\n\n"],"names":["LiveObject","schema","liveblocksTiptapNodeToJsonNodes","Slice","Fragment","attributesToMarks","getLiveblocksNodeText","LiveText","buildLiveblocksTreeIndex","findTextRangeByLiveText","from","findListRangeByLiveList","getChildPosition","findNodeRangeByLiveNode"],"mappings":"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"}