Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Based on our previous PoC, this is a general draft for
YWeakLink
data type. Its API is similar to JavaScript WeakRef. Yrs has a companion version of this feature.ymap.link('key')
/yarray.quote(index, length)
/ytext.quote(index, length)
. I didn't make it for XML elements, as it doesn't have any sense: XML is acyclic tree-like structure by definition. You can make links referencing to fragments of YText type, and you can embed them as AbstractTypes inside YText.ylink.deref()
method just like in JavaScript WeakRef. If linked value has been deleted,undefined
will be returned. For text and arrays this method will return first element from the quoted range. You can also calllink.isSingle()
to check if current weak link refers to single element or range of elements.ylink.unquote()
: it will return a list of elements within a quoted range.ylink.toString()
and get delta usingylink.toDelta()
.PS: I'm planning to make a demo to provide more pracitcal context for this feature.
PSS: There also a need to change some of the iteration algorithm once the
move
branch is to be merged into main.