@verdant-web/tiptap 1.0.0 → 2.0.0

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.
@@ -30,6 +30,15 @@ const testSchema = schema({
30
30
  },
31
31
  });
32
32
  const hooks = createHooks(testSchema);
33
+ function safeLogger(level, ...args) {
34
+ try {
35
+ if (args.some((arg) => typeof arg === 'string' && arg.includes('Redo')))
36
+ console.debug(...args.map((arg) => typeof arg === 'object' ? JSON.stringify(arg, undefined, ' ') : arg));
37
+ }
38
+ catch (err) {
39
+ console.debug(...args);
40
+ }
41
+ }
33
42
  let clientDesc;
34
43
  let client;
35
44
  beforeAll(async () => {
@@ -38,6 +47,7 @@ beforeAll(async () => {
38
47
  oldSchemas: [testSchema],
39
48
  migrations: [createMigration(testSchema)],
40
49
  namespace: 'tiptatp-test',
50
+ // log: safeLogger,
41
51
  });
42
52
  client = await clientDesc.open();
43
53
  });
@@ -78,20 +88,20 @@ it('should support non-nullable tiptap schema fields', async () => {
78
88
  {
79
89
  type: 'text',
80
90
  attrs: {},
81
- content: [],
82
- marks: [],
91
+ content: null,
92
+ marks: null,
83
93
  from: null,
84
94
  to: null,
85
95
  text: 'Hello, world!',
86
96
  },
87
97
  ],
88
- marks: [],
98
+ marks: null,
89
99
  from: null,
90
100
  to: null,
91
101
  text: null,
92
102
  },
93
103
  ],
94
- marks: [],
104
+ marks: null,
95
105
  text: null,
96
106
  });
97
107
  });
@@ -130,20 +140,20 @@ it('should support nullable tiptap schema fields with a specified default doc',
130
140
  {
131
141
  type: 'text',
132
142
  attrs: {},
133
- content: [],
134
- marks: [],
143
+ content: null,
144
+ marks: null,
135
145
  from: null,
136
146
  to: null,
137
147
  text: 'Hello, world!',
138
148
  },
139
149
  ],
140
- marks: [],
150
+ marks: null,
141
151
  from: null,
142
152
  to: null,
143
153
  text: null,
144
154
  },
145
155
  ],
146
- marks: [],
156
+ marks: null,
147
157
  text: null,
148
158
  });
149
159
  });
@@ -196,7 +206,7 @@ it('should support Verdant undo and redo', async () => {
196
206
  from: null,
197
207
  to: null,
198
208
  content: [],
199
- marks: [],
209
+ marks: null,
200
210
  text: null,
201
211
  });
202
212
  });
@@ -243,16 +253,120 @@ it('should support TipTap undo and redo', async () => {
243
253
  content: [
244
254
  {
245
255
  attrs: {},
246
- content: [],
256
+ content: null,
247
257
  from: null,
248
- marks: [],
258
+ marks: null,
249
259
  text: null,
250
260
  to: null,
251
261
  type: 'paragraph',
252
262
  },
253
263
  ],
254
- marks: [],
264
+ marks: null,
255
265
  text: null,
256
266
  });
257
267
  });
268
+ it('should initialize from an existing document', async () => {
269
+ const testPost = await client.posts.put({
270
+ requiredBody: {
271
+ type: 'doc',
272
+ content: [
273
+ {
274
+ type: 'paragraph',
275
+ content: [
276
+ {
277
+ type: 'text',
278
+ text: 'Hello, world!',
279
+ },
280
+ ],
281
+ },
282
+ ],
283
+ },
284
+ });
285
+ // reset history
286
+ await client.entities.flushAllBatches();
287
+ client.undoHistory.clear();
288
+ const TipTapTest = () => {
289
+ const editor = useSyncedEditor(testPost, 'requiredBody', {
290
+ editorOptions: {
291
+ extensions: [StarterKit.configure({ history: false })],
292
+ },
293
+ });
294
+ return (_jsxs("div", { children: [_jsx("div", { children: "Text editor:" }), _jsx(EditorContent, { style: {
295
+ width: 500,
296
+ height: 300,
297
+ }, editor: editor, id: "#editor", "data-testid": "editor" })] }));
298
+ };
299
+ const screen = await renderWithProvider(_jsx(TipTapTest, {}));
300
+ await expect.element(screen.getByTestId('editor')).toBeVisible();
301
+ const editor = screen.getByTestId('editor').getByRole('textbox');
302
+ await expect.element(editor).toHaveTextContent('');
303
+ await expect.element(editor).toHaveTextContent('Hello, world!');
304
+ });
305
+ function testLog(...args) {
306
+ console.debug('[TEST]', ...args);
307
+ }
308
+ it('should withstand multiple edits, undo, and redo consistently', async () => {
309
+ const testPost = await client.posts.put({
310
+ requiredBody: {
311
+ type: 'doc',
312
+ content: [
313
+ {
314
+ type: 'paragraph',
315
+ content: [
316
+ {
317
+ type: 'text',
318
+ text: 'Hello, world!',
319
+ },
320
+ ],
321
+ },
322
+ ],
323
+ },
324
+ });
325
+ // reset history
326
+ await client.entities.flushAllBatches();
327
+ client.undoHistory.clear();
328
+ const TipTapTest = () => {
329
+ const editor = useSyncedEditor(testPost, 'requiredBody', {
330
+ editorOptions: {
331
+ extensions: [StarterKit.configure({ history: false })],
332
+ },
333
+ });
334
+ return (_jsxs("div", { children: [_jsx("div", { children: "Text editor:" }), _jsx(EditorContent, { style: {
335
+ width: 500,
336
+ height: 300,
337
+ }, editor: editor, id: "#editor", "data-testid": "editor" })] }));
338
+ };
339
+ const screen = await renderWithProvider(_jsx(TipTapTest, {}));
340
+ await expect.element(screen.getByTestId('editor')).toBeVisible();
341
+ const editor = screen.getByTestId('editor').getByRole('textbox');
342
+ await expect.element(editor).toHaveTextContent('');
343
+ await expect.element(editor).toHaveTextContent('Hello, world!');
344
+ await userEvent.type(editor, '[pageDown]');
345
+ await userEvent.type(editor, '\nLine 2!');
346
+ await client.entities.flushAllBatches();
347
+ await userEvent.type(editor, '\nLine 3!');
348
+ await client.entities.flushAllBatches();
349
+ expect(client.undoHistory.canUndo).toBe(true);
350
+ await client.undoHistory.undo();
351
+ await client.entities.flushAllBatches();
352
+ await expect.element(editor).toHaveTextContent(/^Hello, world!Line 2!$/);
353
+ await client.undoHistory.redo();
354
+ await client.entities.flushAllBatches();
355
+ await expect
356
+ .element(editor)
357
+ .toHaveTextContent(/^Hello, world!Line 2!Line 3!$/);
358
+ await client.undoHistory.undo();
359
+ await client.entities.flushAllBatches();
360
+ await expect.element(editor).toHaveTextContent(/^Hello, world!Line 2!$/);
361
+ // I've noticed some strangeness when restoring a deleted block
362
+ // when the editor is not on the same line as the deletion,
363
+ // not sure if this is actually related to cursor position but
364
+ // testing anyway.
365
+ await userEvent.type(editor, '[arrowUp]');
366
+ await client.undoHistory.redo();
367
+ await client.entities.flushAllBatches();
368
+ await expect
369
+ .element(editor)
370
+ .toHaveTextContent(/^Hello, world!Line 2!Line 3!$/);
371
+ });
258
372
  //# sourceMappingURL=react.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"react.test.js","sourceRoot":"","sources":["../../../src/__browserTests__/react.test.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAyB,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAa,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,UAAU,GAAG,MAAM,CAAC;IACzB,OAAO,EAAE,CAAC;IACV,WAAW,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;YACxB,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE;gBACP,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;gBACtB,YAAY,EAAE,uBAAuB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACxD,YAAY,EAAE,uBAAuB,CAAC;oBACrC,OAAO,EAAE;wBACR,IAAI,EAAE,KAAK;wBACX,OAAO,EAAE,EAAE;qBACX;iBACD,CAAC;aACF;SACD,CAAC;KACF;CACD,CAAC,CAAC;AAEH,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AAEtC,IAAI,UAA4B,CAAC;AACjC,IAAI,MAA6B,CAAC;AAClC,SAAS,CAAC,KAAK,IAAI,EAAE;IACpB,UAAU,GAAG,IAAI,gBAAgB,CAAC;QACjC,MAAM,EAAE,UAAU;QAClB,UAAU,EAAE,CAAC,UAAU,CAAC;QACxB,UAAU,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACzC,SAAS,EAAE,cAAc;KACzB,CAAC,CAAC;IACH,MAAM,GAAG,MAAO,UAAU,CAAC,IAAI,EAAqC,CAAC;AACtE,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAE/B,SAAS,kBAAkB,CAAC,OAAkB;IAC7C,OAAO,MAAM,CAAC,OAAO,EAAE;QACtB,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAC1B,KAAC,QAAQ,cACR,KAAC,KAAK,CAAC,QAAQ,IAAC,KAAK,EAAE,UAAU,YAChC,KAAC,QAAQ,IAAC,QAAQ,EAAE,6BAAiB,UAAU,2BAAiB,YAC9D,QAAQ,GACC,GACK,GACP,CACX;KACD,CAAC,CAAC;AACJ,CAAC;AAED,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;IACjE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,GAAG,EAAE;QACvB,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE;YACxD,aAAa,EAAE,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE;SAC3C,CAAC,CAAC;QAEH,OAAO,CACN,0BACC,yCAAuB,EACvB,KAAC,aAAa,IACb,KAAK,EAAE;wBACN,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,GAAG;qBACX,EACD,MAAM,EAAE,MAAM,EACd,EAAE,EAAC,SAAS,iBACA,QAAQ,GACnB,IACG,CACN,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,KAAC,UAAU,KAAG,CAAC,CAAC;IACxD,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAEjE,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACjE,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAEnD,gCAAgC;IAChC,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC9C,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAEhE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC;QAC1D,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,IAAI;QACV,EAAE,EAAE,IAAI;QACR,OAAO,EAAE;YACR;gBACC,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,EAAE;gBACT,OAAO,EAAE;oBACR;wBACC,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE,EAAE;wBACT,OAAO,EAAE,EAAE;wBACX,KAAK,EAAE,EAAE;wBACT,IAAI,EAAE,IAAI;wBACV,EAAE,EAAE,IAAI;wBACR,IAAI,EAAE,eAAe;qBACrB;iBACD;gBACD,KAAK,EAAE,EAAE;gBACT,IAAI,EAAE,IAAI;gBACV,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,IAAI;aACV;SACD;QACD,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,IAAI;KACV,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;IAC1F,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,GAAG,EAAE;QACvB,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE;YACxD,aAAa,EAAE,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE;YAC3C,mBAAmB,EAAE;gBACpB,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,EAAE;aACX;SACD,CAAC,CAAC;QAEH,OAAO,CACN,0BACC,yCAAuB,EACvB,KAAC,aAAa,IACb,KAAK,EAAE;wBACN,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,GAAG;qBACX,EACD,MAAM,EAAE,MAAM,EACd,EAAE,EAAC,SAAS,iBACA,QAAQ,GACnB,IACG,CACN,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,KAAC,UAAU,KAAG,CAAC,CAAC;IACxD,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAEjE,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACjE,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAEnD,gCAAgC;IAChC,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC9C,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAEhE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC;QAC1D,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,IAAI;QACV,EAAE,EAAE,IAAI;QACR,OAAO,EAAE;YACR;gBACC,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,EAAE;gBACT,OAAO,EAAE;oBACR;wBACC,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE,EAAE;wBACT,OAAO,EAAE,EAAE;wBACX,KAAK,EAAE,EAAE;wBACT,IAAI,EAAE,IAAI;wBACV,EAAE,EAAE,IAAI;wBACR,IAAI,EAAE,eAAe;qBACrB;iBACD;gBACD,KAAK,EAAE,EAAE;gBACT,IAAI,EAAE,IAAI;gBACV,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,IAAI;aACV;SACD;QACD,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,IAAI;KACV,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;IACrD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAE5C,gBAAgB;IAChB,MAAM,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;IACxC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAE3B,MAAM,UAAU,GAAG,GAAG,EAAE;QACvB,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE;YACxD,aAAa,EAAE;gBACd,UAAU,EAAE;oBACX,UAAU,CAAC,SAAS,CAAC;wBACpB,yBAAyB;wBACzB,OAAO,EAAE,KAAK;qBACd,CAAC;iBACF;aACD;YACD,4EAA4E;YAC5E,4EAA4E;YAC5E,6BAA6B;YAC7B,gBAAgB,EAAE;gBACjB,WAAW,EAAE;oBACZ,0CAA0C;oBAC1C,GAAG,EAAE,GAAG;oBACR,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,QAAQ;oBACnB,QAAQ,EAAE,IAAI;iBACd;aACD;SACD,CAAC,CAAC;QAEH,OAAO,CACN,0BACC,yCAAuB,EACvB,KAAC,aAAa,IACb,KAAK,EAAE;wBACN,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,GAAG;qBACX,EACD,MAAM,EAAE,MAAM,EACd,EAAE,EAAC,SAAS,iBACA,QAAQ,GACnB,IACG,CACN,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,KAAC,UAAU,KAAG,CAAC,CAAC;IACxD,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAEjE,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACjE,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAEnD,gCAAgC;IAChC,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC9C,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAEhE,MAAM,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;IAExC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAEhC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC;QAC1D,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,IAAI;QACV,EAAE,EAAE,IAAI;QACR,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,IAAI;KACV,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;IACpD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAE5C,gBAAgB;IAChB,MAAM,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;IACxC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAE3B,MAAM,UAAU,GAAG,GAAG,EAAE;QACvB,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE;YACxD,aAAa,EAAE;gBACd,UAAU,EAAE,CAAC,UAAU,CAAC;aACxB;YACD,gBAAgB,EAAE;gBACjB,WAAW,EAAE;oBACZ,QAAQ,EAAE,KAAK;iBACf;aACD;SACD,CAAC,CAAC;QAEH,OAAO,CACN,0BACC,yCAAuB,EACvB,KAAC,aAAa,IACb,KAAK,EAAE;wBACN,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,GAAG;qBACX,EACD,MAAM,EAAE,MAAM,EACd,EAAE,EAAC,SAAS,iBACA,QAAQ,GACnB,EACF,gCAAoB,MAAM,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,qBAExD,IACJ,CACN,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,KAAC,UAAU,KAAG,CAAC,CAAC;IACxD,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAEjE,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACjE,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAEnD,gCAAgC;IAChC,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC9C,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAEhE,MAAM,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;IAExC,sDAAsD;IACtD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE9C,MAAM,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAEnD,qEAAqE;IACrE,4CAA4C;IAC5C,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC;QAC1D,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,IAAI;QACV,EAAE,EAAE,IAAI;QACR,OAAO,EAAE;YACR;gBACC,KAAK,EAAE,EAAE;gBACT,OAAO,EAAE,EAAE;gBACX,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,EAAE;gBACT,IAAI,EAAE,IAAI;gBACV,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,WAAW;aACjB;SACD;QACD,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,IAAI;KACV,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"react.test.js","sourceRoot":"","sources":["../../../src/__browserTests__/react.test.tsx"],"names":[],"mappings":"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"}
@@ -1,16 +1,49 @@
1
- import { ShapeFromProperty, StorageAnyFieldSchema, StorageArrayFieldSchema, StorageNumberFieldSchema, StorageObjectFieldSchema, StorageStringFieldSchema } from '@verdant-web/common';
1
+ import { ShapeFromProperty, StorageAnyFieldSchema, StorageArrayFieldSchema, StorageMapFieldSchema, StorageNumberFieldSchema, StorageObjectFieldSchema, StorageStringFieldSchema } from '@verdant-web/common';
2
+ import { ListEntity, ObjectEntity } from '@verdant-web/store';
2
3
  export type TiptapFieldSchema = StorageObjectFieldSchema<{
3
4
  type: StorageStringFieldSchema;
4
- from: StorageNumberFieldSchema;
5
- to: StorageNumberFieldSchema;
6
- attrs: StorageObjectFieldSchema<{
7
- values: StorageAnyFieldSchema;
8
- }>;
9
- content: StorageArrayFieldSchema<TiptapFieldSchema>;
10
- text: StorageStringFieldSchema;
11
- marks: StorageArrayFieldSchema<TiptapFieldSchema>;
5
+ from: StorageNumberFieldSchema & {
6
+ nullable: true;
7
+ };
8
+ to: StorageNumberFieldSchema & {
9
+ nullable: true;
10
+ };
11
+ attrs: StorageMapFieldSchema<StorageAnyFieldSchema>;
12
+ content: StorageArrayFieldSchema<TiptapFieldSchema> & {
13
+ nullable: true;
14
+ };
15
+ text: StorageStringFieldSchema & {
16
+ nullable: true;
17
+ };
18
+ marks: StorageArrayFieldSchema<TiptapFieldSchema> & {
19
+ nullable: true;
20
+ };
12
21
  }>;
13
- export type TipTapFieldInitializer = Pick<ShapeFromProperty<TiptapFieldSchema>, 'type'> & Partial<ShapeFromProperty<TiptapFieldSchema>>;
22
+ type PartialNull<T> = {
23
+ [K in keyof T]?: T[K] | null;
24
+ };
25
+ export type TipTapFieldInitializer = Pick<ShapeFromProperty<TiptapFieldSchema>, 'type'> & PartialNull<ShapeFromProperty<TiptapFieldSchema>>;
26
+ export type TipTapAttrsEntity = ObjectEntity<{
27
+ [key: string]: any;
28
+ }, {
29
+ [key: string]: any;
30
+ }, {
31
+ [key: string]: any;
32
+ }>;
33
+ export type TipTapContentEntity = ListEntity<TipTapFieldInitializer[], TipTapDocumentEntity[], ShapeFromProperty<TiptapFieldSchema>[]>;
34
+ /**
35
+ * NOTE: it's not recommended to use this type directly. Instead rely on the generated
36
+ * types from the Verdant CLI.
37
+ */
38
+ export type TipTapDocumentEntity = ObjectEntity<TipTapFieldInitializer, {
39
+ type: string;
40
+ from: number | null;
41
+ to: number | null;
42
+ attrs: TipTapAttrsEntity;
43
+ content: TipTapContentEntity;
44
+ text: string | null;
45
+ marks: TipTapContentEntity;
46
+ }, ShapeFromProperty<TiptapFieldSchema>>;
14
47
  /**
15
48
  * Creates a generic TipTap schema field. You must invoke this and assign it
16
49
  * individually to every TipTap document field in your schema, DO NOT reuse
@@ -19,3 +52,4 @@ export type TipTapFieldInitializer = Pick<ShapeFromProperty<TiptapFieldSchema>,
19
52
  export declare function createTipTapFieldSchema(options: {
20
53
  default: TipTapFieldInitializer | null;
21
54
  }): TiptapFieldSchema;
55
+ export {};
@@ -1,4 +1,12 @@
1
1
  import { schema, } from '@verdant-web/common';
2
+ const otherDefaults = {
3
+ content: [],
4
+ marks: null,
5
+ attrs: {},
6
+ from: null,
7
+ to: null,
8
+ text: null,
9
+ };
2
10
  /**
3
11
  * Creates a generic TipTap schema field. You must invoke this and assign it
4
12
  * individually to every TipTap document field in your schema, DO NOT reuse
@@ -20,10 +28,12 @@ export function createTipTapFieldSchema(options) {
20
28
  }),
21
29
  content: schema.fields.array({
22
30
  items: baseField,
31
+ nullable: true,
23
32
  }),
24
33
  text: schema.fields.string({ nullable: true }),
25
34
  marks: schema.fields.array({
26
35
  items: baseField,
36
+ nullable: true,
27
37
  }),
28
38
  });
29
39
  const rootField = schema.fields.object({
@@ -36,17 +46,19 @@ export function createTipTapFieldSchema(options) {
36
46
  }),
37
47
  content: schema.fields.array({
38
48
  items: nestedContent,
49
+ nullable: true,
39
50
  }),
40
51
  text: schema.fields.string({ nullable: true }),
41
52
  marks: schema.fields.array({
42
53
  items: nestedContent,
54
+ nullable: true,
43
55
  }),
44
56
  },
45
57
  default: () => {
46
58
  if (options.default === null) {
47
59
  return null;
48
60
  }
49
- return structuredClone(options.default);
61
+ return Object.assign(Object.assign({}, otherDefaults), structuredClone(options.default));
50
62
  },
51
63
  nullable: options.default === null,
52
64
  });
@@ -1 +1 @@
1
- {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,MAAM,GAON,MAAM,qBAAqB,CAAC;AAoB7B;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAEvC;IACA,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACd,8FAA8F,CAC9F,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QACtC,MAAM,EAAE,EAAE;KACV,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE;QAClE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC9C,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC5C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;YACxB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;SAC3B,CAAC;QACF,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YAC5B,KAAK,EAAE,SAAS;SAChB,CAAC;QACF,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC9C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YAC1B,KAAK,EAAE,SAAS;SAChB,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QACtC,MAAM,EAAE;YACP,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;YAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC9C,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC5C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;gBACxB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;aAC3B,CAAC;YACF,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC5B,KAAK,EAAE,aAAa;aACpB,CAAC;YACF,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC9C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC1B,KAAK,EAAE,aAAa;aACpB,CAAC;SACF;QACD,OAAO,EAAE,GAAG,EAAE;YACb,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC;YACb,CAAC;YACD,OAAO,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;QACD,QAAQ,EAAE,OAAO,CAAC,OAAO,KAAK,IAAI;KAClC,CAAC,CAAC;IAEH,OAAO,SAAgB,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,MAAM,GAQN,MAAM,qBAAqB,CAAC;AAmD7B,MAAM,aAAa,GAAG;IACrB,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,IAAI;IACV,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,IAAI;CACV,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAEvC;IACA,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACd,8FAA8F,CAC9F,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QACtC,MAAM,EAAE,EAAE;KACV,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE;QAClE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC9C,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC5C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;YACxB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;SAC3B,CAAC;QACF,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YAC5B,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,IAAI;SACd,CAAC;QACF,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC9C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YAC1B,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,IAAI;SACd,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QACtC,MAAM,EAAE;YACP,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;YAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC9C,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC5C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;gBACxB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;aAC3B,CAAC;YACF,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC5B,KAAK,EAAE,aAAa;gBACpB,QAAQ,EAAE,IAAI;aACd,CAAC;YACF,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC9C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC1B,KAAK,EAAE,aAAa;gBACpB,QAAQ,EAAE,IAAI;aACd,CAAC;SACF;QACD,OAAO,EAAE,GAAG,EAAE;YACb,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC;YACb,CAAC;YACD,uCAAY,aAAa,GAAK,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,EAAG;QAClE,CAAC;QACD,QAAQ,EAAE,OAAO,CAAC,OAAO,KAAK,IAAI;KAClC,CAAC,CAAC;IAEH,OAAO,SAAgB,CAAC;AACzB,CAAC"}
@@ -131,6 +131,9 @@ export const VerdantExtension = Extension.create({
131
131
  if (fieldSchema.nullable && !fieldSchema.default && !nullDocumentDefault) {
132
132
  throw new Error('VerdantOidExtension requires a nullDocumentDefault for a nullable document field');
133
133
  }
134
+ },
135
+ onCreate() {
136
+ const { parent, fieldName, nullDocumentDefault } = this.options;
134
137
  // subscribe to field changes
135
138
  let unsubscribe = null;
136
139
  const updateFromField = (field) => {
@@ -146,7 +149,7 @@ export const VerdantExtension = Extension.create({
146
149
  const field = parent.get(fieldName);
147
150
  if (field) {
148
151
  unsubscribe = field.subscribe('changeDeep', (target, info) => {
149
- if (!info.isLocal || target === field) {
152
+ if (!field.deleted && (!info.isLocal || target === field)) {
150
153
  updateFromField(field);
151
154
  }
152
155
  });
@@ -174,7 +177,7 @@ export const VerdantExtension = Extension.create({
174
177
  else {
175
178
  // re-assign oids to data objects so they can be diffed more effectively
176
179
  // against existing data
177
- consumeOidsAndAssignToSnapshots(newData);
180
+ formatSnapshotForVerdantAndAssignOids(newData);
178
181
  // printAllOids(newData);
179
182
  const client = getEntityClient(value);
180
183
  client.batch(this.options.batchConfig).run(() => {
@@ -194,23 +197,39 @@ export const VerdantExtension = Extension.create({
194
197
  export function createVerdantExtension(parent, fieldName, options) {
195
198
  return VerdantExtension.configure(Object.assign({ parent, fieldName: fieldName }, options));
196
199
  }
197
- function consumeOidsAndAssignToSnapshots(doc) {
200
+ function formatSnapshotForVerdantAndAssignOids(doc) {
198
201
  var _a;
199
202
  if (((_a = doc.attrs) === null || _a === void 0 ? void 0 : _a[verdantIdAttribute]) !== undefined) {
200
203
  assignOid(doc, doc.attrs[verdantIdAttribute]);
201
204
  delete doc.attrs[verdantIdAttribute];
202
205
  }
206
+ // make sure all fields are present, even if null.
207
+ if (doc.from === undefined) {
208
+ doc.from = null;
209
+ }
210
+ if (doc.to === undefined) {
211
+ doc.to = null;
212
+ }
213
+ if (doc.text === undefined) {
214
+ doc.text = null;
215
+ }
216
+ if (doc.attrs === undefined) {
217
+ doc.attrs = {};
218
+ }
219
+ if (doc.marks === undefined) {
220
+ doc.marks = null;
221
+ }
203
222
  if (doc.content) {
204
- doc.content.forEach(consumeOidsAndAssignToSnapshots);
223
+ doc.content.forEach(formatSnapshotForVerdantAndAssignOids);
205
224
  }
206
225
  }
207
226
  // since the schema doesn't enforce this shape but it's
208
227
  // needed for the editor to work, we'll ensure it here
209
228
  function ensureDocShape(json) {
210
- var _a;
229
+ var _a, _b;
211
230
  for (const node of (_a = json.content) !== null && _a !== void 0 ? _a : []) {
212
231
  // remove undefined nodes
213
- node.content = node.content.filter((n) => !!n).map(ensureDocShape);
232
+ node.content = (_b = node.content) === null || _b === void 0 ? void 0 : _b.filter((n) => !!n).map(ensureDocShape);
214
233
  }
215
234
  return json;
216
235
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/plugins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/plugins.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdant-web/tiptap",
3
- "version": "1.0.0",
3
+ "version": "2.0.0",
4
4
  "access": "public",
5
5
  "type": "module",
6
6
  "main": "dist/esm/index.js",
@@ -26,8 +26,8 @@
26
26
  "@tiptap/pm": "^2.11.5",
27
27
  "@tiptap/react": "^2.11.5",
28
28
  "react": "^19.0.0",
29
- "@verdant-web/react": "41.0.0",
30
- "@verdant-web/store": "4.2.0"
29
+ "@verdant-web/react": "42.0.0",
30
+ "@verdant-web/store": "4.3.0"
31
31
  },
32
32
  "peerDependenciesMeta": {
33
33
  "@verdant-web/react": {
@@ -41,7 +41,7 @@
41
41
  }
42
42
  },
43
43
  "dependencies": {
44
- "@verdant-web/common": "2.8.0"
44
+ "@verdant-web/common": "2.9.0"
45
45
  },
46
46
  "devDependencies": {
47
47
  "typescript": "5.7.3",
@@ -53,16 +53,16 @@
53
53
  "react": "19.0.0",
54
54
  "@types/react": "19.0.10",
55
55
  "vitest-browser-react": "0.1.1",
56
- "@vitest/browser": "3.0.6",
56
+ "@vitest/browser": "3.0.8",
57
57
  "playwright": "1.51.0",
58
58
  "vite": "6.1.1",
59
59
  "@vitejs/plugin-react": "4.3.4",
60
60
  "react-dom": "19.0.0",
61
61
  "@types/react-dom": "19.0.4",
62
- "@verdant-web/react": "41.0.0",
63
- "@verdant-web/store": "4.2.0",
62
+ "@verdant-web/react": "42.0.0",
63
+ "@verdant-web/store": "4.3.0",
64
64
  "@verdant-web/cli": "4.8.2",
65
- "@verdant-web/server": "3.3.9"
65
+ "@verdant-web/server": "3.3.10"
66
66
  },
67
67
  "scripts": {
68
68
  "test": "vitest",
@@ -32,6 +32,19 @@ const testSchema = schema({
32
32
 
33
33
  const hooks = createHooks(testSchema);
34
34
 
35
+ function safeLogger(level: string, ...args: any[]) {
36
+ try {
37
+ if (args.some((arg) => typeof arg === 'string' && arg.includes('Redo')))
38
+ console.debug(
39
+ ...args.map((arg) =>
40
+ typeof arg === 'object' ? JSON.stringify(arg, undefined, ' ') : arg,
41
+ ),
42
+ );
43
+ } catch (err) {
44
+ console.debug(...args);
45
+ }
46
+ }
47
+
35
48
  let clientDesc: ClientDescriptor;
36
49
  let client: ClientWithCollections;
37
50
  beforeAll(async () => {
@@ -40,6 +53,7 @@ beforeAll(async () => {
40
53
  oldSchemas: [testSchema],
41
54
  migrations: [createMigration(testSchema)],
42
55
  namespace: 'tiptatp-test',
56
+ // log: safeLogger,
43
57
  });
44
58
  client = await (clientDesc.open() as Promise<ClientWithCollections>);
45
59
  });
@@ -107,20 +121,20 @@ it('should support non-nullable tiptap schema fields', async () => {
107
121
  {
108
122
  type: 'text',
109
123
  attrs: {},
110
- content: [],
111
- marks: [],
124
+ content: null,
125
+ marks: null,
112
126
  from: null,
113
127
  to: null,
114
128
  text: 'Hello, world!',
115
129
  },
116
130
  ],
117
- marks: [],
131
+ marks: null,
118
132
  from: null,
119
133
  to: null,
120
134
  text: null,
121
135
  },
122
136
  ],
123
- marks: [],
137
+ marks: null,
124
138
  text: null,
125
139
  });
126
140
  });
@@ -176,20 +190,20 @@ it('should support nullable tiptap schema fields with a specified default doc',
176
190
  {
177
191
  type: 'text',
178
192
  attrs: {},
179
- content: [],
180
- marks: [],
193
+ content: null,
194
+ marks: null,
181
195
  from: null,
182
196
  to: null,
183
197
  text: 'Hello, world!',
184
198
  },
185
199
  ],
186
- marks: [],
200
+ marks: null,
187
201
  from: null,
188
202
  to: null,
189
203
  text: null,
190
204
  },
191
205
  ],
192
- marks: [],
206
+ marks: null,
193
207
  text: null,
194
208
  });
195
209
  });
@@ -262,7 +276,7 @@ it('should support Verdant undo and redo', async () => {
262
276
  from: null,
263
277
  to: null,
264
278
  content: [],
265
- marks: [],
279
+ marks: null,
266
280
  text: null,
267
281
  });
268
282
  });
@@ -333,15 +347,166 @@ it('should support TipTap undo and redo', async () => {
333
347
  content: [
334
348
  {
335
349
  attrs: {},
336
- content: [],
350
+ content: null,
337
351
  from: null,
338
- marks: [],
352
+ marks: null,
339
353
  text: null,
340
354
  to: null,
341
355
  type: 'paragraph',
342
356
  },
343
357
  ],
344
- marks: [],
358
+ marks: null,
345
359
  text: null,
346
360
  });
347
361
  });
362
+
363
+ it('should initialize from an existing document', async () => {
364
+ const testPost = await client.posts.put({
365
+ requiredBody: {
366
+ type: 'doc',
367
+ content: [
368
+ {
369
+ type: 'paragraph',
370
+ content: [
371
+ {
372
+ type: 'text',
373
+ text: 'Hello, world!',
374
+ },
375
+ ],
376
+ },
377
+ ],
378
+ },
379
+ });
380
+
381
+ // reset history
382
+ await client.entities.flushAllBatches();
383
+ client.undoHistory.clear();
384
+
385
+ const TipTapTest = () => {
386
+ const editor = useSyncedEditor(testPost, 'requiredBody', {
387
+ editorOptions: {
388
+ extensions: [StarterKit.configure({ history: false })],
389
+ },
390
+ });
391
+
392
+ return (
393
+ <div>
394
+ <div>Text editor:</div>
395
+ <EditorContent
396
+ style={{
397
+ width: 500,
398
+ height: 300,
399
+ }}
400
+ editor={editor}
401
+ id="#editor"
402
+ data-testid="editor"
403
+ />
404
+ </div>
405
+ );
406
+ };
407
+
408
+ const screen = await renderWithProvider(<TipTapTest />);
409
+ await expect.element(screen.getByTestId('editor')).toBeVisible();
410
+
411
+ const editor = screen.getByTestId('editor').getByRole('textbox');
412
+ await expect.element(editor).toHaveTextContent('');
413
+ await expect.element(editor).toHaveTextContent('Hello, world!');
414
+ });
415
+
416
+ function testLog(...args: any[]) {
417
+ console.debug('[TEST]', ...args);
418
+ }
419
+
420
+ it('should withstand multiple edits, undo, and redo consistently', async () => {
421
+ const testPost = await client.posts.put({
422
+ requiredBody: {
423
+ type: 'doc',
424
+ content: [
425
+ {
426
+ type: 'paragraph',
427
+ content: [
428
+ {
429
+ type: 'text',
430
+ text: 'Hello, world!',
431
+ },
432
+ ],
433
+ },
434
+ ],
435
+ },
436
+ });
437
+
438
+ // reset history
439
+ await client.entities.flushAllBatches();
440
+ client.undoHistory.clear();
441
+
442
+ const TipTapTest = () => {
443
+ const editor = useSyncedEditor(testPost, 'requiredBody', {
444
+ editorOptions: {
445
+ extensions: [StarterKit.configure({ history: false })],
446
+ },
447
+ });
448
+
449
+ return (
450
+ <div>
451
+ <div>Text editor:</div>
452
+ <EditorContent
453
+ style={{
454
+ width: 500,
455
+ height: 300,
456
+ }}
457
+ editor={editor}
458
+ id="#editor"
459
+ data-testid="editor"
460
+ />
461
+ </div>
462
+ );
463
+ };
464
+
465
+ const screen = await renderWithProvider(<TipTapTest />);
466
+ await expect.element(screen.getByTestId('editor')).toBeVisible();
467
+
468
+ const editor = screen.getByTestId('editor').getByRole('textbox');
469
+ await expect.element(editor).toHaveTextContent('');
470
+ await expect.element(editor).toHaveTextContent('Hello, world!');
471
+
472
+ await userEvent.type(editor, '[pageDown]');
473
+ await userEvent.type(editor, '\nLine 2!');
474
+
475
+ await client.entities.flushAllBatches();
476
+
477
+ await userEvent.type(editor, '\nLine 3!');
478
+
479
+ await client.entities.flushAllBatches();
480
+
481
+ expect(client.undoHistory.canUndo).toBe(true);
482
+
483
+ await client.undoHistory.undo();
484
+ await client.entities.flushAllBatches();
485
+
486
+ await expect.element(editor).toHaveTextContent(/^Hello, world!Line 2!$/);
487
+
488
+ await client.undoHistory.redo();
489
+ await client.entities.flushAllBatches();
490
+
491
+ await expect
492
+ .element(editor)
493
+ .toHaveTextContent(/^Hello, world!Line 2!Line 3!$/);
494
+
495
+ await client.undoHistory.undo();
496
+ await client.entities.flushAllBatches();
497
+
498
+ await expect.element(editor).toHaveTextContent(/^Hello, world!Line 2!$/);
499
+
500
+ // I've noticed some strangeness when restoring a deleted block
501
+ // when the editor is not on the same line as the deletion,
502
+ // not sure if this is actually related to cursor position but
503
+ // testing anyway.
504
+ await userEvent.type(editor, '[arrowUp]');
505
+
506
+ await client.undoHistory.redo();
507
+ await client.entities.flushAllBatches();
508
+
509
+ await expect
510
+ .element(editor)
511
+ .toHaveTextContent(/^Hello, world!Line 2!Line 3!$/);
512
+ });
package/src/fields.ts CHANGED
@@ -3,28 +3,69 @@ import {
3
3
  ShapeFromProperty,
4
4
  StorageAnyFieldSchema,
5
5
  StorageArrayFieldSchema,
6
+ StorageMapFieldSchema,
6
7
  StorageNumberFieldSchema,
7
8
  StorageObjectFieldSchema,
8
9
  StorageStringFieldSchema,
9
10
  } from '@verdant-web/common';
11
+ import { ListEntity, ObjectEntity } from '@verdant-web/store';
10
12
 
11
13
  export type TiptapFieldSchema = StorageObjectFieldSchema<{
12
14
  type: StorageStringFieldSchema;
13
- from: StorageNumberFieldSchema;
14
- to: StorageNumberFieldSchema;
15
- attrs: StorageObjectFieldSchema<{
16
- values: StorageAnyFieldSchema;
17
- }>;
18
- content: StorageArrayFieldSchema<TiptapFieldSchema>;
19
- text: StorageStringFieldSchema;
20
- marks: StorageArrayFieldSchema<TiptapFieldSchema>;
15
+ from: StorageNumberFieldSchema & { nullable: true };
16
+ to: StorageNumberFieldSchema & { nullable: true };
17
+ attrs: StorageMapFieldSchema<StorageAnyFieldSchema>;
18
+ content: StorageArrayFieldSchema<TiptapFieldSchema> & { nullable: true };
19
+ text: StorageStringFieldSchema & { nullable: true };
20
+ marks: StorageArrayFieldSchema<TiptapFieldSchema> & { nullable: true };
21
21
  }>;
22
22
 
23
+ type PartialNull<T> = {
24
+ [K in keyof T]?: T[K] | null;
25
+ };
26
+
23
27
  export type TipTapFieldInitializer = Pick<
24
28
  ShapeFromProperty<TiptapFieldSchema>,
25
29
  'type'
26
30
  > &
27
- Partial<ShapeFromProperty<TiptapFieldSchema>>;
31
+ PartialNull<ShapeFromProperty<TiptapFieldSchema>>;
32
+
33
+ export type TipTapAttrsEntity = ObjectEntity<
34
+ { [key: string]: any },
35
+ { [key: string]: any },
36
+ { [key: string]: any }
37
+ >;
38
+ export type TipTapContentEntity = ListEntity<
39
+ TipTapFieldInitializer[],
40
+ TipTapDocumentEntity[],
41
+ ShapeFromProperty<TiptapFieldSchema>[]
42
+ >;
43
+ /**
44
+ * NOTE: it's not recommended to use this type directly. Instead rely on the generated
45
+ * types from the Verdant CLI.
46
+ */
47
+ export type TipTapDocumentEntity = ObjectEntity<
48
+ TipTapFieldInitializer,
49
+ {
50
+ type: string;
51
+ from: number | null;
52
+ to: number | null;
53
+ attrs: TipTapAttrsEntity;
54
+ content: TipTapContentEntity;
55
+ text: string | null;
56
+ marks: TipTapContentEntity;
57
+ },
58
+ ShapeFromProperty<TiptapFieldSchema>
59
+ >;
60
+
61
+ const otherDefaults = {
62
+ content: [],
63
+ marks: null,
64
+ attrs: {},
65
+ from: null,
66
+ to: null,
67
+ text: null,
68
+ };
28
69
 
29
70
  /**
30
71
  * Creates a generic TipTap schema field. You must invoke this and assign it
@@ -52,10 +93,12 @@ export function createTipTapFieldSchema(options: {
52
93
  }),
53
94
  content: schema.fields.array({
54
95
  items: baseField,
96
+ nullable: true,
55
97
  }),
56
98
  text: schema.fields.string({ nullable: true }),
57
99
  marks: schema.fields.array({
58
100
  items: baseField,
101
+ nullable: true,
59
102
  }),
60
103
  });
61
104
 
@@ -69,17 +112,19 @@ export function createTipTapFieldSchema(options: {
69
112
  }),
70
113
  content: schema.fields.array({
71
114
  items: nestedContent,
115
+ nullable: true,
72
116
  }),
73
117
  text: schema.fields.string({ nullable: true }),
74
118
  marks: schema.fields.array({
75
119
  items: nestedContent,
120
+ nullable: true,
76
121
  }),
77
122
  },
78
123
  default: () => {
79
124
  if (options.default === null) {
80
125
  return null;
81
126
  }
82
- return structuredClone(options.default);
127
+ return { ...otherDefaults, ...structuredClone(options.default) };
83
128
  },
84
129
  nullable: options.default === null,
85
130
  });
package/src/plugins.ts CHANGED
@@ -157,7 +157,9 @@ export const VerdantExtension = Extension.create<
157
157
  'VerdantOidExtension requires a nullDocumentDefault for a nullable document field',
158
158
  );
159
159
  }
160
-
160
+ },
161
+ onCreate() {
162
+ const { parent, fieldName, nullDocumentDefault } = this.options;
161
163
  // subscribe to field changes
162
164
  let unsubscribe: (() => void) | null = null;
163
165
  const updateFromField = (field: ObjectEntity<any, any> | null) => {
@@ -178,7 +180,7 @@ export const VerdantExtension = Extension.create<
178
180
  const field = parent.get(fieldName) as ObjectEntity<any, any> | null;
179
181
  if (field) {
180
182
  unsubscribe = field.subscribe('changeDeep', (target, info) => {
181
- if (!info.isLocal || target === field) {
183
+ if (!field.deleted && (!info.isLocal || target === field)) {
182
184
  updateFromField(field);
183
185
  }
184
186
  });
@@ -208,7 +210,7 @@ export const VerdantExtension = Extension.create<
208
210
  } else {
209
211
  // re-assign oids to data objects so they can be diffed more effectively
210
212
  // against existing data
211
- consumeOidsAndAssignToSnapshots(newData);
213
+ formatSnapshotForVerdantAndAssignOids(newData);
212
214
  // printAllOids(newData);
213
215
  const client = getEntityClient(value);
214
216
  client.batch(this.options.batchConfig).run(() => {
@@ -262,13 +264,29 @@ export function createVerdantExtension<
262
264
  });
263
265
  }
264
266
 
265
- function consumeOidsAndAssignToSnapshots(doc: JSONContent) {
267
+ function formatSnapshotForVerdantAndAssignOids(doc: JSONContent) {
266
268
  if (doc.attrs?.[verdantIdAttribute] !== undefined) {
267
269
  assignOid(doc, doc.attrs[verdantIdAttribute]);
268
270
  delete doc.attrs[verdantIdAttribute];
269
271
  }
272
+ // make sure all fields are present, even if null.
273
+ if (doc.from === undefined) {
274
+ doc.from = null;
275
+ }
276
+ if (doc.to === undefined) {
277
+ doc.to = null;
278
+ }
279
+ if (doc.text === undefined) {
280
+ doc.text = null as any;
281
+ }
282
+ if (doc.attrs === undefined) {
283
+ doc.attrs = {};
284
+ }
285
+ if (doc.marks === undefined) {
286
+ doc.marks = null as any;
287
+ }
270
288
  if (doc.content) {
271
- doc.content.forEach(consumeOidsAndAssignToSnapshots);
289
+ doc.content.forEach(formatSnapshotForVerdantAndAssignOids);
272
290
  }
273
291
  }
274
292
 
@@ -277,7 +295,7 @@ function consumeOidsAndAssignToSnapshots(doc: JSONContent) {
277
295
  function ensureDocShape(json: any) {
278
296
  for (const node of json.content ?? []) {
279
297
  // remove undefined nodes
280
- node.content = node.content.filter((n: any) => !!n).map(ensureDocShape);
298
+ node.content = node.content?.filter((n: any) => !!n).map(ensureDocShape);
281
299
  }
282
300
  return json;
283
301
  }