Skip to content

Commit b257f2e

Browse files
committed
fix(json-crdt-extensions): 🐛 skip first empty virtual block
1 parent 9954c69 commit b257f2e

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

src/json-crdt-extensions/peritext/block/Fragment.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ export class Fragment extends Range implements Printable, Stateful {
8080
let pair: ReturnType<typeof iterator>;
8181
while ((pair = iterator())) {
8282
const [p1, p2] = pair;
83+
const skipFirstVirtualBlock = !p1 && this.start.isAbsStart() && p2 && p2.viewPos() === 0;
84+
if (skipFirstVirtualBlock) continue;
8385
const type = p1 ? p1.type() : CommonSliceType.p;
8486
const path = type instanceof Array ? type : [type];
8587
const block = this.insertBlock(parent, path, p1, p2);
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import {setupKit} from '../../__tests__/setup';
2+
import {CommonSliceType} from '../../slice';
3+
import {fromHtml, toViewRange} from '../import-html';
4+
5+
test('a single paragraph', () => {
6+
const {peritext} = setupKit();
7+
const html = '<p>Hello world</p>';
8+
const peritextMl = fromHtml(html);
9+
const rangeView = toViewRange(peritextMl);
10+
peritext.editor.import(0, rangeView);
11+
peritext.refresh();
12+
const json = peritext.blocks.toJson();
13+
expect(json).toEqual(['', null,
14+
[CommonSliceType.p, null, 'Hello world'],
15+
]);
16+
});

0 commit comments

Comments
 (0)