mobx-keystone-yjs
Version:
Yjs bindings for mobx-keystone
43 lines (35 loc) • 922 B
text/typescript
import { AnyType, createContext } from "mobx-keystone"
import * as Y from "yjs"
/**
* Context with info on how a mobx-keystone model is bound to a Y.js data structure.
*/
export interface YjsBindingContext {
/**
* The Y.js document.
*/
yjsDoc: Y.Doc
/**
* The bound Y.js data structure.
*/
yjsObject: Y.Map<unknown> | Y.Array<unknown> | Y.Text
/**
* The mobx-keystone model type.
*/
mobxKeystoneType: AnyType
/**
* The origin symbol used for transactions.
*/
yjsOrigin: symbol
/**
* The bound mobx-keystone instance.
*/
boundObject: unknown
/**
* Whether we are currently applying Y.js changes to the mobx-keystone model.
*/
isApplyingYjsChangesToMobxKeystone: boolean
}
/**
* Context with info on how a mobx-keystone model is bound to a Y.js data structure.
*/
export const yjsBindingContext = createContext<YjsBindingContext | undefined>(undefined)