yorkie-js-sdk
yorkie-js-sdk copied to clipboard
Yorkie JavaScript SDK
#### What this PR does / why we need it? Presence maps (that is the presence data of document's actors) exists only on the client. It may make not good...
#### What this PR does / why we need it? Add benchmark Document/equals_test and Document/nested_update_test to updated benchmark scripts #### Any background context you want to provide? #### What are...
**What would you like to be added**: Support throttle option in ClientOptions when defining clients. **Why is this needed**: Throttling update rate on client/doc will prevent both client and server...
#### What this PR does / why we need it? Add benchmark Document/object_test to JS SDK. #### Any background context you want to provide? #### What are the relevant tickets?...
**Description**: Explain how to store documents in local storage. Users can edit the document even while offline. However, because the document is stored in memory, all changes are lost when...
**Description**: Place `Text.selectionMap` to presence, not document(CRDT). `Text.SelectionMap` is used to represent the user's selection in `Text`. The selections should be propagated to peers editing the same document, but need...
**Description**: ```ts // JSON/rich_text.ts export class RichText { private context?: ChangeContext; ... public edit( ... const [maxCreatedAtMapByActor] = this.text.edit( range, content, ticket, attributes, ); this.context.push( new RichEditOperation( ... } }...
**Description**: There is an alternative to `grpc-web` called [connect-web](https://buf.build/blog/connect-web-protobuf-grpc-in-the-browser). We've been struggling a bit with grpc-web(not providing bidirectional, forcing Envoy, etc...). The following might be considered together: - Can it...
**Description**: Implement store enhancer(redux binding) to integrate Yorkie into Redux stores. - liveblocks: https://www.npmjs.com/package/@liveblocks/redux - yjs: https://discuss.yjs.dev/t/yjs-redux-binding/755 **Why**: - Redux users can easily employ Yorkie in their apps.
**Description**: ```ts export class CRDTText extends CRDTTextElement { private onChangesHandler?: (changes: Array) => void; private rgaTreeSplit: RGATreeSplit; private selectionMap: Map; ... ``` ```ts function toText(text: CRDTText): PbJSONElement { const pbText...