Comments (6)
Hi @aslakhellesoy, sorry for the slow response. This seems like a good idea. I've put an initial implementation here: a9d75d9 — could you give it a try and see if it does what you want?
One caveat about this feature: at present, Automerge allows an object to appear in several places in the tree (i.e. it allows the document to be a DAG), in which case the path will not be unique. In the future I plan to change this (i.e. I want to restrict the structure to always be a tree). With this in mind, I haven't added support for multiple paths; instead, if there are multiple paths to the same object, the current code just picks one arbitrarily. That behaviour is a bit nasty at present, but will make more sense when the tree restriction is in place.
Another caveat: sometimes an object is created and modified before it is linked into the tree. For example, if you do
Automerge.change(state, doc => doc.foo = {bar: 'baz'})
then Automerge first creates an empty map object, assigns the key bar
on that object to the value baz
, and then links that new object into the root object under key foo
. This means that at the time of assignment of the key bar
, the object is not yet in the tree, and thus the assignment operation of bar
has no path. If this is a problem, we could probably switch the order of operations so that the empty object is linked into the tree first, and then its key is assigned.
What do you think?
from automerge-classic.
Hi @ept thanks a lot for this!
I've decided to try using React for now, despite my original reservations. I still think this change could be useful. I'll comment here if/when I get to try it out.
Thanks again
from automerge-classic.
good
from automerge-classic.
@aslakhellesoy just doing a little issue grooming. Is this something you're still looking at? If not, would you mind closing the issue? Thanks!
from automerge-classic.
Oh, hah, looks like @ept already implemented it. I'll close this.
from automerge-classic.
👍
from automerge-classic.
Related Issues (20)
- Automerge Fails with "For 'properties/commit_title', nil is not a string." HOT 1
- Automerge.merge() is inconsistent HOT 5
- Maximum call stack exceeded when initializing Automerge.Text with large (500kb) string HOT 4
- Can't apply changes to clone HOT 1
- Uncaught TypeError: Unsupported type of value: function HOT 3
- Uncaught TypeError: Unsupported type of value: undefined HOT 6
- Keeping track of most recently used items HOT 3
- Conflict is not recognised when there are multiple key assignments HOT 8
- × "TypeError: Not a byte array: 133" error when userB receives data from userA. HOT 2
- indexOf fails in a proxy with undefined index HOT 1
- What are the strategies to sync with remote storage? HOT 6
- Can't install [email protected] because it has a dependency on [email protected] HOT 1
- save/load is not working for me (or maybe I'm doing something wrong) HOT 1
- Please create Go package HOT 1
- Text editor binding HOT 1
- No matching version found for [email protected] HOT 6
- Integration module federation with ReactJS HOT 6
- rollup can't find wasm exports HOT 1
- Cloudflare workers FinalizationRegistry not defined HOT 2
- get change message(s) from Automerge.getChanges() HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from automerge-classic.