@pluv/crdt-yjs 0.15.0 → 0.16.1
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/.eslintrc.js +2 -2
- package/.turbo/turbo-build.log +9 -9
- package/CHANGELOG.md +45 -37
- package/README.md +13 -29
- package/dist/index.d.mts +152 -55
- package/dist/index.d.ts +152 -55
- package/dist/index.js +433 -107
- package/dist/index.mjs +445 -101
- package/package.json +9 -8
- package/src/array/CrdtYjsArray.ts +55 -0
- package/src/array/array.ts +7 -0
- package/src/array/index.ts +2 -0
- package/src/doc/CrdtYjsDoc.ts +274 -0
- package/src/doc/CrdtYjsDocFactory.ts +83 -0
- package/src/doc/doc.ts +10 -0
- package/src/doc/index.ts +3 -0
- package/src/index.ts +1 -20
- package/src/map/CrdtYjsMap.ts +43 -0
- package/src/map/index.ts +2 -0
- package/src/{map.ts → map/map.ts} +3 -3
- package/src/object/CrdtYjsObject.ts +32 -0
- package/src/object/index.ts +2 -0
- package/src/object/object.ts +7 -0
- package/src/shared/index.ts +2 -0
- package/src/shared/isWrapper.ts +25 -0
- package/src/shared/toYjsValue.ts +5 -0
- package/src/text/CrdtYjsText.ts +34 -0
- package/src/text/index.ts +2 -0
- package/src/text/text.ts +5 -0
- package/src/types.ts +54 -35
- package/src/xmlElement/CrdtYjsXmlElement.ts +60 -0
- package/src/xmlElement/index.ts +2 -0
- package/src/xmlElement/xmlElement.ts +9 -0
- package/src/xmlFragment/CrdtYjsXmlFragment.ts +56 -0
- package/src/xmlFragment/index.ts +2 -0
- package/src/xmlFragment/xmlFragment.ts +9 -0
- package/src/xmlText/CrdtYjsXmlText.ts +38 -0
- package/src/xmlText/index.ts +2 -0
- package/src/xmlText/xmlText.ts +5 -0
- package/src/yjs.ts +9 -0
- package/src/array.ts +0 -11
- package/src/doc.ts +0 -160
- package/src/object.ts +0 -16
- package/src/text.ts +0 -5
- package/src/xmlElement.ts +0 -19
- package/src/xmlFragment.ts +0 -16
- package/src/xmlText.ts +0 -5
package/dist/index.js
CHANGED
|
@@ -37,58 +37,354 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
37
37
|
// src/index.ts
|
|
38
38
|
var src_exports = {};
|
|
39
39
|
__export(src_exports, {
|
|
40
|
-
|
|
40
|
+
yjs: () => yjs_exports
|
|
41
|
+
});
|
|
42
|
+
module.exports = __toCommonJS(src_exports);
|
|
43
|
+
|
|
44
|
+
// src/yjs.ts
|
|
45
|
+
var yjs_exports = {};
|
|
46
|
+
__export(yjs_exports, {
|
|
47
|
+
CrdtYjsArray: () => CrdtYjsArray,
|
|
48
|
+
CrdtYjsDoc: () => CrdtYjsDoc,
|
|
49
|
+
CrdtYjsMap: () => CrdtYjsMap,
|
|
50
|
+
CrdtYjsObject: () => CrdtYjsObject,
|
|
51
|
+
CrdtYjsText: () => CrdtYjsText,
|
|
52
|
+
CrdtYjsXmlElement: () => CrdtYjsXmlElement,
|
|
53
|
+
CrdtYjsXmlFragment: () => CrdtYjsXmlFragment,
|
|
54
|
+
CrdtYjsXmlText: () => CrdtYjsXmlText,
|
|
41
55
|
array: () => array,
|
|
42
56
|
doc: () => doc,
|
|
43
57
|
map: () => map,
|
|
44
58
|
object: () => object,
|
|
45
|
-
text: () => text,
|
|
46
59
|
xmlElement: () => xmlElement,
|
|
47
60
|
xmlFragment: () => xmlFragment,
|
|
48
61
|
xmlText: () => xmlText
|
|
49
62
|
});
|
|
50
|
-
module.exports = __toCommonJS(src_exports);
|
|
51
63
|
|
|
52
|
-
// src/array.ts
|
|
64
|
+
// src/array/CrdtYjsArray.ts
|
|
65
|
+
var import_crdt7 = require("@pluv/crdt");
|
|
66
|
+
var import_yjs7 = require("yjs");
|
|
67
|
+
|
|
68
|
+
// src/map/CrdtYjsMap.ts
|
|
69
|
+
var import_crdt = require("@pluv/crdt");
|
|
53
70
|
var import_yjs = require("yjs");
|
|
71
|
+
var CrdtYjsMap = class extends import_crdt.AbstractCrdtType {
|
|
72
|
+
constructor(value = []) {
|
|
73
|
+
super();
|
|
74
|
+
this.initialValue = value.map(([k, v]) => [k, toYjsValue(v)]);
|
|
75
|
+
this.value = new import_yjs.Map(this.initialValue);
|
|
76
|
+
}
|
|
77
|
+
get size() {
|
|
78
|
+
return this.value.size;
|
|
79
|
+
}
|
|
80
|
+
delete(prop) {
|
|
81
|
+
this.value.delete(prop);
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
set(prop, value) {
|
|
85
|
+
this.value.set(prop, toYjsValue(value));
|
|
86
|
+
return this;
|
|
87
|
+
}
|
|
88
|
+
toJson() {
|
|
89
|
+
return this.value.toJSON();
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
// src/object/CrdtYjsObject.ts
|
|
94
|
+
var import_crdt2 = require("@pluv/crdt");
|
|
95
|
+
var import_yjs2 = require("yjs");
|
|
96
|
+
var CrdtYjsObject = class extends import_crdt2.AbstractCrdtType {
|
|
97
|
+
constructor(value = {}) {
|
|
98
|
+
super();
|
|
99
|
+
this.initialValue = Object.entries(value).map(([k, v]) => [
|
|
100
|
+
k,
|
|
101
|
+
toYjsValue(v)
|
|
102
|
+
]);
|
|
103
|
+
this.value = new import_yjs2.Map(this.initialValue);
|
|
104
|
+
}
|
|
105
|
+
set(prop, value) {
|
|
106
|
+
this.value.set(prop.toString(), toYjsValue(value));
|
|
107
|
+
return this;
|
|
108
|
+
}
|
|
109
|
+
toJson() {
|
|
110
|
+
return this.value.toJSON();
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
// src/text/CrdtYjsText.ts
|
|
115
|
+
var import_crdt3 = require("@pluv/crdt");
|
|
116
|
+
var import_yjs3 = require("yjs");
|
|
117
|
+
var CrdtYjsText = class extends import_crdt3.AbstractCrdtType {
|
|
118
|
+
constructor(value = "") {
|
|
119
|
+
super();
|
|
120
|
+
this.initialValue = value;
|
|
121
|
+
this.value = new import_yjs3.Text(value);
|
|
122
|
+
}
|
|
123
|
+
get length() {
|
|
124
|
+
return this.value.length;
|
|
125
|
+
}
|
|
126
|
+
delete(index, length = 1) {
|
|
127
|
+
this.value.delete(index, length);
|
|
128
|
+
return this;
|
|
129
|
+
}
|
|
130
|
+
insert(index, text2) {
|
|
131
|
+
this.value.insert(index, text2);
|
|
132
|
+
return this;
|
|
133
|
+
}
|
|
134
|
+
toJson() {
|
|
135
|
+
return this.value.toJSON();
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
// src/xmlElement/CrdtYjsXmlElement.ts
|
|
140
|
+
var import_crdt4 = require("@pluv/crdt");
|
|
141
|
+
var import_yjs4 = require("yjs");
|
|
142
|
+
var CrdtYjsXmlElement = class extends import_crdt4.AbstractCrdtType {
|
|
143
|
+
constructor(name, children) {
|
|
144
|
+
super();
|
|
145
|
+
this.initialValue = children.map((item) => item.value);
|
|
146
|
+
this.name = name;
|
|
147
|
+
this.value = new import_yjs4.XmlElement(name);
|
|
148
|
+
this.push(...children);
|
|
149
|
+
}
|
|
150
|
+
get length() {
|
|
151
|
+
return this.value.length;
|
|
152
|
+
}
|
|
153
|
+
delete(index, length = 1) {
|
|
154
|
+
this.value.delete(index, length);
|
|
155
|
+
return this;
|
|
156
|
+
}
|
|
157
|
+
insert(index, ...children) {
|
|
158
|
+
const converted = children.map((child) => toYjsValue(child));
|
|
159
|
+
this.value.insert(index, converted);
|
|
160
|
+
return this;
|
|
161
|
+
}
|
|
162
|
+
push(...children) {
|
|
163
|
+
return this.insert(this.length, ...children);
|
|
164
|
+
}
|
|
165
|
+
unshift(...children) {
|
|
166
|
+
return this.insert(0, ...children);
|
|
167
|
+
}
|
|
168
|
+
toJson() {
|
|
169
|
+
return this.value.toJSON();
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
// src/xmlElement/xmlElement.ts
|
|
174
|
+
var xmlElement = (name, children) => {
|
|
175
|
+
return new CrdtYjsXmlElement(name, children);
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
// src/xmlFragment/CrdtYjsXmlFragment.ts
|
|
179
|
+
var import_crdt5 = require("@pluv/crdt");
|
|
180
|
+
var import_yjs5 = require("yjs");
|
|
181
|
+
var CrdtYjsXmlFragment = class extends import_crdt5.AbstractCrdtType {
|
|
182
|
+
constructor(children) {
|
|
183
|
+
super();
|
|
184
|
+
this.initialValue = children.map((item) => item.value);
|
|
185
|
+
this.value = new import_yjs5.XmlFragment();
|
|
186
|
+
this.push(...children);
|
|
187
|
+
}
|
|
188
|
+
get length() {
|
|
189
|
+
return this.value.length;
|
|
190
|
+
}
|
|
191
|
+
delete(index, length = 1) {
|
|
192
|
+
this.value.delete(index, length);
|
|
193
|
+
return this;
|
|
194
|
+
}
|
|
195
|
+
insert(index, ...children) {
|
|
196
|
+
const converted = children.map((child) => toYjsValue(child));
|
|
197
|
+
this.value.insert(index, converted);
|
|
198
|
+
return this;
|
|
199
|
+
}
|
|
200
|
+
push(...children) {
|
|
201
|
+
return this.insert(this.length, ...children);
|
|
202
|
+
}
|
|
203
|
+
unshift(...children) {
|
|
204
|
+
return this.insert(0, ...children);
|
|
205
|
+
}
|
|
206
|
+
toJson() {
|
|
207
|
+
return this.value.toJSON();
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
// src/xmlFragment/xmlFragment.ts
|
|
212
|
+
var xmlFragment = (children) => {
|
|
213
|
+
return new CrdtYjsXmlFragment(children);
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
// src/xmlText/CrdtYjsXmlText.ts
|
|
217
|
+
var import_crdt6 = require("@pluv/crdt");
|
|
218
|
+
var import_yjs6 = require("yjs");
|
|
219
|
+
var CrdtYjsXmlText = class extends import_crdt6.AbstractCrdtType {
|
|
220
|
+
constructor(value = "") {
|
|
221
|
+
super();
|
|
222
|
+
this.initialValue = value;
|
|
223
|
+
this.value = new import_yjs6.XmlText(value);
|
|
224
|
+
}
|
|
225
|
+
get length() {
|
|
226
|
+
return this.value.length;
|
|
227
|
+
}
|
|
228
|
+
delete(index, length = 1) {
|
|
229
|
+
this.value.delete(index, length);
|
|
230
|
+
return this;
|
|
231
|
+
}
|
|
232
|
+
insert(index, text2, attributes) {
|
|
233
|
+
this.value.insert(index, text2, attributes);
|
|
234
|
+
return this;
|
|
235
|
+
}
|
|
236
|
+
toJson() {
|
|
237
|
+
return this.value.toJSON();
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
// src/xmlText/xmlText.ts
|
|
242
|
+
var xmlText = (value = "") => {
|
|
243
|
+
return new CrdtYjsXmlText(value);
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
// src/shared/isWrapper.ts
|
|
247
|
+
var isWrapper = (item) => {
|
|
248
|
+
return item instanceof CrdtYjsArray || item instanceof CrdtYjsMap || item instanceof CrdtYjsObject || item instanceof CrdtYjsText || item instanceof CrdtYjsXmlElement || item instanceof CrdtYjsXmlFragment || item instanceof CrdtYjsXmlText;
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
// src/shared/toYjsValue.ts
|
|
252
|
+
var toYjsValue = (item) => {
|
|
253
|
+
return isWrapper(item) ? item.value : item;
|
|
254
|
+
};
|
|
255
|
+
|
|
256
|
+
// src/array/CrdtYjsArray.ts
|
|
257
|
+
var CrdtYjsArray = class extends import_crdt7.AbstractCrdtType {
|
|
258
|
+
constructor(value = []) {
|
|
259
|
+
super();
|
|
260
|
+
const initialValue = value.map((item) => toYjsValue(item));
|
|
261
|
+
this.initialValue = initialValue;
|
|
262
|
+
this.value = new import_yjs7.Array();
|
|
263
|
+
this.push(...value);
|
|
264
|
+
}
|
|
265
|
+
get length() {
|
|
266
|
+
return this.value.length;
|
|
267
|
+
}
|
|
268
|
+
delete(index, length = 1) {
|
|
269
|
+
this.value.delete(index, length);
|
|
270
|
+
return this;
|
|
271
|
+
}
|
|
272
|
+
insert(index, ...items) {
|
|
273
|
+
const converted = items.map((item) => toYjsValue(item));
|
|
274
|
+
this.value.insert(index, converted);
|
|
275
|
+
return this;
|
|
276
|
+
}
|
|
277
|
+
push(...items) {
|
|
278
|
+
return this.insert(this.length, ...items);
|
|
279
|
+
}
|
|
280
|
+
unshift(...items) {
|
|
281
|
+
return this.insert(0, ...items);
|
|
282
|
+
}
|
|
283
|
+
toJson() {
|
|
284
|
+
return this.value.toJSON();
|
|
285
|
+
}
|
|
286
|
+
};
|
|
287
|
+
|
|
288
|
+
// src/array/array.ts
|
|
54
289
|
var array = (value = []) => {
|
|
55
|
-
|
|
56
|
-
yarray.push(value.slice());
|
|
57
|
-
return yarray;
|
|
290
|
+
return new CrdtYjsArray(value);
|
|
58
291
|
};
|
|
59
292
|
|
|
60
|
-
// src/doc.ts
|
|
293
|
+
// src/doc/CrdtYjsDoc.ts
|
|
294
|
+
var import_crdt8 = require("@pluv/crdt");
|
|
61
295
|
var import_js_base64 = require("js-base64");
|
|
62
|
-
var
|
|
63
|
-
var
|
|
64
|
-
constructor(value) {
|
|
65
|
-
|
|
296
|
+
var import_yjs8 = require("yjs");
|
|
297
|
+
var CrdtYjsDoc = class extends import_crdt8.AbstractCrdtDoc {
|
|
298
|
+
constructor(value = {}) {
|
|
299
|
+
super();
|
|
300
|
+
this.value = new import_yjs8.Doc();
|
|
66
301
|
this._undoManager = null;
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
302
|
+
this._storage = Object.entries(value).reduce((acc, [key, node]) => {
|
|
303
|
+
if (node instanceof CrdtYjsArray) {
|
|
304
|
+
const yArray = this.value.get(key, import_yjs8.Array);
|
|
305
|
+
yArray.insert(0, node.initialValue.slice(0));
|
|
306
|
+
node.value = yArray;
|
|
307
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: node });
|
|
308
|
+
}
|
|
309
|
+
if (node instanceof CrdtYjsMap || node instanceof CrdtYjsObject) {
|
|
310
|
+
const yMap = this.value.get(key, import_yjs8.Map);
|
|
311
|
+
node.initialValue.forEach(([k, v]) => {
|
|
312
|
+
yMap.set(k.toString(), v);
|
|
313
|
+
});
|
|
314
|
+
node.value = yMap;
|
|
315
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: node });
|
|
316
|
+
}
|
|
317
|
+
if (node instanceof CrdtYjsObject) {
|
|
318
|
+
const yMap = this.value.get(key, import_yjs8.Map);
|
|
319
|
+
node.initialValue.forEach(([k, v]) => {
|
|
320
|
+
yMap.set(k.toString(), v);
|
|
321
|
+
});
|
|
322
|
+
node.value = yMap;
|
|
323
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: node });
|
|
324
|
+
}
|
|
325
|
+
if (node instanceof CrdtYjsText) {
|
|
326
|
+
const yText = this.value.get(key, import_yjs8.Text);
|
|
327
|
+
yText.insert(0, node.initialValue);
|
|
328
|
+
node.value = yText;
|
|
329
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: node });
|
|
330
|
+
}
|
|
331
|
+
if (node instanceof CrdtYjsXmlElement) {
|
|
332
|
+
const yXmlElement = this.value.get(
|
|
333
|
+
key,
|
|
334
|
+
import_yjs8.XmlElement
|
|
335
|
+
);
|
|
336
|
+
yXmlElement.insert(0, node.initialValue.slice(0));
|
|
337
|
+
node.value = yXmlElement;
|
|
338
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: node });
|
|
339
|
+
}
|
|
340
|
+
if (node instanceof CrdtYjsXmlFragment) {
|
|
341
|
+
const yXmlFragment = this.value.get(
|
|
342
|
+
key,
|
|
343
|
+
import_yjs8.XmlFragment
|
|
344
|
+
);
|
|
345
|
+
yXmlFragment.insert(0, node.initialValue.slice(0));
|
|
346
|
+
node.value = yXmlFragment;
|
|
347
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: node });
|
|
348
|
+
}
|
|
349
|
+
if (node instanceof CrdtYjsXmlText) {
|
|
350
|
+
const yXmlText = this.value.get(key, import_yjs8.XmlText);
|
|
351
|
+
yXmlText.insert(0, node.initialValue);
|
|
352
|
+
node.value = yXmlText;
|
|
353
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: node });
|
|
354
|
+
}
|
|
355
|
+
return acc;
|
|
356
|
+
}, {});
|
|
81
357
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
applyUpdate(update, origin) {
|
|
358
|
+
applyEncodedState(params) {
|
|
359
|
+
const { origin, update } = params;
|
|
86
360
|
if (update === null || typeof update === "undefined")
|
|
87
361
|
return this;
|
|
88
362
|
const uint8Update = typeof update === "string" ? (0, import_js_base64.toUint8Array)(update) : update;
|
|
89
|
-
(0,
|
|
363
|
+
(0, import_yjs8.applyUpdate)(this.value, uint8Update, origin);
|
|
90
364
|
return this;
|
|
91
365
|
}
|
|
366
|
+
batchApplyEncodedState(updates) {
|
|
367
|
+
const params = updates.reduce(
|
|
368
|
+
(acc, update) => {
|
|
369
|
+
if (!update)
|
|
370
|
+
return acc;
|
|
371
|
+
if (typeof update === "string") {
|
|
372
|
+
acc.push({ update });
|
|
373
|
+
return acc;
|
|
374
|
+
}
|
|
375
|
+
if (!!update && typeof update === "object") {
|
|
376
|
+
acc.push(update);
|
|
377
|
+
return acc;
|
|
378
|
+
}
|
|
379
|
+
return acc;
|
|
380
|
+
},
|
|
381
|
+
[]
|
|
382
|
+
);
|
|
383
|
+
return params.reduce(
|
|
384
|
+
(doc2, update) => doc2.applyEncodedState(update),
|
|
385
|
+
this
|
|
386
|
+
);
|
|
387
|
+
}
|
|
92
388
|
canRedo() {
|
|
93
389
|
var _a;
|
|
94
390
|
return !!((_a = this._undoManager) == null ? void 0 : _a.canRedo());
|
|
@@ -102,112 +398,142 @@ var YjsDoc = class _YjsDoc {
|
|
|
102
398
|
(_a = this._undoManager) == null ? void 0 : _a.destroy();
|
|
103
399
|
this.value.destroy();
|
|
104
400
|
}
|
|
105
|
-
encodeStateAsUpdate() {
|
|
106
|
-
return (0, import_js_base64.fromUint8Array)((0, import_yjs2.encodeStateAsUpdate)(this.value));
|
|
107
|
-
}
|
|
108
401
|
get(key) {
|
|
109
|
-
|
|
402
|
+
if (typeof key === "undefined")
|
|
403
|
+
return this._storage;
|
|
404
|
+
return this._storage[key];
|
|
110
405
|
}
|
|
111
|
-
|
|
112
|
-
return
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
406
|
+
getEncodedState() {
|
|
407
|
+
return (0, import_js_base64.fromUint8Array)((0, import_yjs8.encodeStateAsUpdate)(this.value));
|
|
408
|
+
}
|
|
409
|
+
isEmpty() {
|
|
410
|
+
return !this.value.share.size;
|
|
116
411
|
}
|
|
117
412
|
redo() {
|
|
118
413
|
var _a;
|
|
119
414
|
(_a = this._undoManager) == null ? void 0 : _a.redo();
|
|
415
|
+
return this;
|
|
120
416
|
}
|
|
121
|
-
subscribe(
|
|
122
|
-
const
|
|
123
|
-
|
|
417
|
+
subscribe(listener) {
|
|
418
|
+
const fn = (update, origin, doc2) => {
|
|
419
|
+
listener({
|
|
420
|
+
doc: this,
|
|
421
|
+
local: origin === null || typeof origin === "undefined",
|
|
422
|
+
origin: origin ? String(origin) : null,
|
|
423
|
+
update: (0, import_js_base64.fromUint8Array)(update)
|
|
424
|
+
});
|
|
425
|
+
};
|
|
426
|
+
this.value.on("update", fn);
|
|
124
427
|
return () => {
|
|
125
|
-
this.value.off("update",
|
|
428
|
+
this.value.off("update", fn);
|
|
126
429
|
};
|
|
127
430
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
trackOrigins(options) {
|
|
132
|
-
const { captureTimeout, trackedOrigins } = options;
|
|
133
|
-
if (this._undoManager) {
|
|
431
|
+
track() {
|
|
432
|
+
var _a;
|
|
433
|
+
if (this._undoManager)
|
|
134
434
|
this._undoManager.destroy();
|
|
435
|
+
const sharedTypes = Object.values(this._storage).reduce((acc, type) => {
|
|
436
|
+
if (type instanceof CrdtYjsArray || type instanceof CrdtYjsMap || type instanceof CrdtYjsObject || type instanceof CrdtYjsText || type instanceof CrdtYjsXmlElement || type instanceof CrdtYjsXmlFragment || type instanceof CrdtYjsXmlText) {
|
|
437
|
+
acc.push(type.value);
|
|
438
|
+
}
|
|
439
|
+
return acc;
|
|
440
|
+
}, []);
|
|
441
|
+
if (!sharedTypes.length) {
|
|
442
|
+
(_a = this._undoManager) == null ? void 0 : _a.destroy();
|
|
443
|
+
this._undoManager = null;
|
|
444
|
+
return this;
|
|
135
445
|
}
|
|
136
|
-
this._undoManager = new
|
|
137
|
-
|
|
138
|
-
trackedOrigins: trackedOrigins ? new Set(trackedOrigins) : void 0
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
transact(fn, origin) {
|
|
142
|
-
this.value.transact((tx) => {
|
|
143
|
-
fn(tx);
|
|
144
|
-
}, origin);
|
|
446
|
+
this._undoManager = new import_yjs8.UndoManager(sharedTypes, { captureTimeout: 0 });
|
|
447
|
+
return this;
|
|
145
448
|
}
|
|
146
|
-
|
|
147
|
-
|
|
449
|
+
transact(fn) {
|
|
450
|
+
this.value.transact(fn);
|
|
451
|
+
return this;
|
|
148
452
|
}
|
|
149
|
-
|
|
150
|
-
return (
|
|
453
|
+
toJson() {
|
|
454
|
+
return Object.entries(this._storage).reduce(
|
|
455
|
+
(acc, [key, value]) => __spreadProps(__spreadValues({}, acc), { [key]: value.toJson() }),
|
|
456
|
+
{}
|
|
457
|
+
);
|
|
151
458
|
}
|
|
152
459
|
undo() {
|
|
153
460
|
var _a;
|
|
154
461
|
(_a = this._undoManager) == null ? void 0 : _a.undo();
|
|
462
|
+
return this;
|
|
155
463
|
}
|
|
156
464
|
};
|
|
157
|
-
var doc = (value) => {
|
|
158
|
-
return new YjsDoc(value);
|
|
159
|
-
};
|
|
160
465
|
|
|
161
|
-
// src/
|
|
162
|
-
var
|
|
466
|
+
// src/doc/CrdtYjsDocFactory.ts
|
|
467
|
+
var import_crdt9 = require("@pluv/crdt");
|
|
468
|
+
|
|
469
|
+
// src/map/map.ts
|
|
163
470
|
var map = (value = []) => {
|
|
164
|
-
return new
|
|
471
|
+
return new CrdtYjsMap(value);
|
|
165
472
|
};
|
|
166
473
|
|
|
167
|
-
// src/object.ts
|
|
168
|
-
var import_yjs4 = require("yjs");
|
|
474
|
+
// src/object/object.ts
|
|
169
475
|
var object = (value) => {
|
|
170
|
-
return new
|
|
476
|
+
return new CrdtYjsObject(value);
|
|
171
477
|
};
|
|
172
478
|
|
|
173
|
-
// src/
|
|
174
|
-
var
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
479
|
+
// src/doc/CrdtYjsDocFactory.ts
|
|
480
|
+
var CrdtYjsDocFactory = class _CrdtYjsDocFactory extends import_crdt9.AbstractCrdtDocFactory {
|
|
481
|
+
constructor(initialStorage = () => ({})) {
|
|
482
|
+
super();
|
|
483
|
+
this._initialStorage = initialStorage;
|
|
484
|
+
}
|
|
485
|
+
getEmpty() {
|
|
486
|
+
return new CrdtYjsDoc();
|
|
487
|
+
}
|
|
488
|
+
getFactory(initialStorage) {
|
|
489
|
+
return new _CrdtYjsDocFactory(
|
|
490
|
+
initialStorage != null ? initialStorage : this._initialStorage
|
|
491
|
+
);
|
|
492
|
+
}
|
|
493
|
+
getFresh() {
|
|
494
|
+
const storage = this._initialStorage();
|
|
495
|
+
return new CrdtYjsDoc(
|
|
496
|
+
Object.entries(storage).reduce((acc, [key, node]) => {
|
|
497
|
+
if (node instanceof CrdtYjsArray) {
|
|
498
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: new CrdtYjsArray([]) });
|
|
499
|
+
}
|
|
500
|
+
if (node instanceof CrdtYjsMap) {
|
|
501
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: new CrdtYjsMap([]) });
|
|
502
|
+
}
|
|
503
|
+
if (node instanceof CrdtYjsObject) {
|
|
504
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: new CrdtYjsObject({}) });
|
|
505
|
+
}
|
|
506
|
+
if (node instanceof CrdtYjsText) {
|
|
507
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: new CrdtYjsText("") });
|
|
508
|
+
}
|
|
509
|
+
if (node instanceof CrdtYjsXmlElement) {
|
|
510
|
+
return __spreadProps(__spreadValues({}, acc), {
|
|
511
|
+
[key]: new CrdtYjsXmlElement(node.name, [])
|
|
512
|
+
});
|
|
513
|
+
}
|
|
514
|
+
if (node instanceof CrdtYjsXmlFragment) {
|
|
515
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: new CrdtYjsXmlFragment([]) });
|
|
516
|
+
}
|
|
517
|
+
if (node instanceof CrdtYjsXmlText) {
|
|
518
|
+
return __spreadProps(__spreadValues({}, acc), { [key]: new CrdtYjsXmlText("") });
|
|
519
|
+
}
|
|
520
|
+
return acc;
|
|
521
|
+
}, {})
|
|
522
|
+
);
|
|
523
|
+
}
|
|
524
|
+
getInitialized(initialStorage) {
|
|
525
|
+
var _a;
|
|
526
|
+
return new CrdtYjsDoc(
|
|
527
|
+
(_a = initialStorage == null ? void 0 : initialStorage()) != null ? _a : this._initialStorage()
|
|
528
|
+
);
|
|
529
|
+
}
|
|
195
530
|
};
|
|
196
531
|
|
|
197
|
-
// src/
|
|
198
|
-
var
|
|
199
|
-
|
|
200
|
-
return new import_yjs8.XmlText(value);
|
|
532
|
+
// src/doc/doc.ts
|
|
533
|
+
var doc = (value = () => ({})) => {
|
|
534
|
+
return new CrdtYjsDocFactory(value);
|
|
201
535
|
};
|
|
202
536
|
// Annotate the CommonJS export names for ESM import in node:
|
|
203
537
|
0 && (module.exports = {
|
|
204
|
-
|
|
205
|
-
array,
|
|
206
|
-
doc,
|
|
207
|
-
map,
|
|
208
|
-
object,
|
|
209
|
-
text,
|
|
210
|
-
xmlElement,
|
|
211
|
-
xmlFragment,
|
|
212
|
-
xmlText
|
|
538
|
+
yjs
|
|
213
539
|
});
|