Skip to content

Commit

Permalink
feat(json-crdt-extensions): 馃幐 improve .points() iteration at offset
Browse files Browse the repository at this point in the history
  • Loading branch information
streamich committed May 8, 2024
1 parent 4767697 commit 8de8676
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/json-crdt-extensions/peritext/overlay/Overlay.ts
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ export class Overlay<T = string> implements Printable, Stateful {
return () => (closed ? u : (closed = true, [u, u]));
}
let p1: OverlayPoint<T> | undefined;
let p2: OverlayPoint<T> | undefined;
let p2: OverlayPoint<T> | undefined = after;
const iterator = this.points0(after);
return () => {
const next = iterator();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {MarkerOverlayPoint} from '../MarkerOverlayPoint';
import {OverlayPoint} from '../OverlayPoint';

const runPairsTests = (setup: () => Kit) => {
describe('.pairs()', () => {
describe('.pairs() full range', () => {
test('returns [undef, undef] single pair for an empty overlay', () => {
const {peritext} = setup();
const overlay = peritext.overlay;
Expand Down Expand Up @@ -133,6 +133,34 @@ const runPairsTests = (setup: () => Kit) => {
expect(p3.refs.length).toBe(2);
});
});

describe('.pairs() at offset', () => {
test('in empty overlay, after caret returns the last edge', () => {
const {peritext} = setup();
const overlay = peritext.overlay;
peritext.editor.cursor.setAt(5);
overlay.refresh();
const first = overlay.first()!;
const pairs = [...overlay.pairs(first)];
expect(pairs).toEqual([
[first, undefined],
]);
});

test('in empty overlay, after selection start returns the selection and the edge', () => {
const {peritext} = setup();
const overlay = peritext.overlay;
peritext.editor.cursor.setAt(2, 4);
overlay.refresh();
const p1 = overlay.first()!;
const p2 = next(p1)!;
const list = [...overlay.pairs(p1)];
expect(list).toEqual([
[p1, p2],
[p2, undefined],
]);
});
});
};

describe('numbers "0123456789", no edits', () => {
Expand Down

0 comments on commit 8de8676

Please sign in to comment.