Comments (2)
Hi @tmathew0309,
so sorry for the late reply - I was super busy over the past 2 weeks with personal stuff.
The main reason for the re-write was to represent the document in a more 'yjs native' fashion. While legacy slate-yjs represented the document as nested Y.Array/Y.Map/Y.Text objects, the re-write solely relies on nested Y.XmlTexts to represent the slate content.
This has multiple benefits like simpler handling of changes, but the biggest benefit is that the document is represented in a 'flatter' fashion which allows for a more intuitive merging of remote changes. If you e.g. add marks to a specific section of text, the old slate-yjs version would:
- Delete the text the mark would be added to and all following text
- Re-insert that text with the added marks
- Re-insert the following text
So if 2 users add marks to the same paragraph and then sync their changes a lot of duplication would happen. In modern slate-yjs, the entire paragraph would just be a single Y.XmlText so it will just add the marks to the desired part of the text and the changes will be merged as intended without any duplication.
The modern version also contains a history plugin, a better way of handling cursors, and a lot of other quality of life changes and simplifications. This is just a very brief overview so if you have any more questions just let me know!
from slate-yjs.
@BitPhinix any updates on this?
from slate-yjs.
Related Issues (20)
- Error: Can't resolve 'use-sync-external-store/shim/with-selector' in '/../node_modules/@slate-yjs/react/dist' HOT 6
- The operating error HOT 3
- useRemoteCursorOverlayPositions in react 18 does not work HOT 11
- Awareness Update before State Update HOT 5
- hocuspocus is no longer open source HOT 2
- Undo after replacing selected text with mark is bringing back mark incorrectly and throws exceptions afterwards HOT 3
- Content duplication in Slate-Yjs offline syncing
- An empty line is added when the user opens or reloads the the document . HOT 3
- `Cannot read properties of null (reading 'parent')` during `flushLocalChanges`
- Empty text node added when replacing the doc content with the new content HOT 2
- applyRemoteEvents breaks on text and inline void combination HOT 1
- #applySlateOp doesn't properly adjust indices for move_node operations HOT 1
- Need an example for testing addition of text data in editor for yjs websocket backend HOT 2
- Path doesn't match yText, yTarget spans multiple nodes HOT 5
- absolutePositionToSlatePoint returns null for inline elements
- Nextjs - Firefox can’t establish a connection to the server at ws://127.0.0.1:1234/. HOT 1
- CursorEditor sending cursor position not working
- Expose Yjs -> Slate / Slate -> Yjs function transformations
- Path doesn't match yText, yTarget spans multiple nodes on 'false' attribute values HOT 5
- when using slate-yjs and y-indexeddb,Data duplication on server restart
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 slate-yjs.