63 lines
1.6 KiB
JavaScript
63 lines
1.6 KiB
JavaScript
import Delete from '../Struct/Delete.mjs'
|
|
import ItemJSON from '../Struct/ItemJSON.mjs'
|
|
import ItemString from '../Struct/ItemString.mjs'
|
|
import ItemFormat from '../Struct/ItemFormat.mjs'
|
|
import ItemEmbed from '../Struct/ItemEmbed.mjs'
|
|
import GC from '../Struct/GC.mjs'
|
|
|
|
import YArray from '../Types/YArray/YArray.mjs'
|
|
import YMap from '../Types/YMap/YMap.mjs'
|
|
import YText from '../Types/YText/YText.mjs'
|
|
import YXmlText from '../Types/YXml/YXmlText.mjs'
|
|
import YXmlHook from '../Types/YXml/YXmlHook.mjs'
|
|
import YXmlFragment from '../Types/YXml/YXmlFragment.mjs'
|
|
import YXmlElement from '../Types/YXml/YXmlElement.mjs'
|
|
|
|
const structs = new Map()
|
|
const references = new Map()
|
|
|
|
/**
|
|
* Register a new Yjs types. The same type must be defined with the same
|
|
* reference on all clients!
|
|
*
|
|
* @param {Number} reference
|
|
* @param {class} structConstructor
|
|
*
|
|
* @public
|
|
*/
|
|
export function registerStruct (reference, structConstructor) {
|
|
structs.set(reference, structConstructor)
|
|
references.set(structConstructor, reference)
|
|
}
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
export function getStruct (reference) {
|
|
return structs.get(reference)
|
|
}
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
export function getStructReference (typeConstructor) {
|
|
return references.get(typeConstructor)
|
|
}
|
|
|
|
// TODO: reorder (Item* should have low numbers)
|
|
registerStruct(0, ItemJSON)
|
|
registerStruct(1, ItemString)
|
|
registerStruct(10, ItemFormat)
|
|
registerStruct(11, ItemEmbed)
|
|
registerStruct(2, Delete)
|
|
|
|
registerStruct(3, YArray)
|
|
registerStruct(4, YMap)
|
|
registerStruct(5, YText)
|
|
registerStruct(6, YXmlFragment)
|
|
registerStruct(7, YXmlElement)
|
|
registerStruct(8, YXmlText)
|
|
registerStruct(9, YXmlHook)
|
|
|
|
registerStruct(12, GC)
|