Published
Edited
Dec 18, 2019
1 fork
3 stars
Insert cell
Insert cell
doc1v1 = Automerge.from({ cards: [] })
Insert cell
Insert cell
Insert cell
doc1v2 = Automerge.change(doc1v1, 'Add card', doc => {
doc.cards.push({ title: 'Rewrite everything in Clojure', done: false });
})
Insert cell
Insert cell
Insert cell
doc1v3 = Automerge.change(doc1v2, 'Add another card', doc => {
doc.cards.insertAt(0, {
title: 'Rewrite everything in Haskell',
done: false
});
})
Insert cell
Insert cell
Insert cell
doc2v1 = {
let doc2 = Automerge.init();
doc2 = Automerge.merge(doc2, doc1v3);
return doc2;
}
Insert cell
Insert cell
Insert cell
doc1v4 = Automerge.change(doc1v3, 'Mark card as done', doc => {
doc.cards[0].done = true;
})
Insert cell
Insert cell
Insert cell
doc2v2 = Automerge.change(doc2v1, 'Delete card', doc => {
delete doc.cards[1];
})
Insert cell
Insert cell
Insert cell
finalDoc = Automerge.merge(doc1v4, doc2v2)
Insert cell
Insert cell
Insert cell
render(
Automerge.getHistory(finalDoc).map(state => [
state.change.message,
state.snapshot.cards.length
])
)
Insert cell
Insert cell
Automerge = require('automerge')
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more