Working with text
There are several ways to work with text / strings in SyncedStore, depending on your needs for collaboration.
Plain strings on the store
You can store strings in SyncedStore objects and arrays. E.g.:
export const store = syncedStore({ myArray: [], myObject: {} });
store.myArray.push("first string");
store.myObject.property = "string value";
This way, strings will be shared with other users. However, users cannot modify the same string simultaneously.
SyncedText objects
To enable collaborative editing of strings, use a SyncedText instance.
Nested
For example, if we want to add a collaborative SyncedText property to myObject:
import { SyncedText } from "@syncedstore/core";
export const store = syncedStore({ myObject: {} });
store.myObject.myText = new SyncedText("hello");
// now, other users can simultaneously edit text by calling `insert` and `delete` methods
store.myObject.myText.insert(0, "My name is Bob, ");
On the root of a store
If you want to immediately have access to a SyncedText instance, without having to instantiate one and add it to an object or array, you can define one in the shape of a store.
import { SyncedText } from "@syncedstore/core";
export const store = syncedStore({ myText: "text" });
// now, other users can simultaneously edit text by calling `insert` and `delete` methods
store.myText.insert(0, "Hello world");
The SyncedText instance (myText in the example above) is initialized empty, untill users add text to it.
Reference
SyncedText objects are similar to Yjs Y.Text instances and support the same methods.
Rich text
If you want to build a true, Google Docs style collaborative text editing experience, continue to the rich text documentation and example.