@textbus/collaborate 5.2.2 → 5.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +2411 -933
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +2447 -2
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/base/collab-history.ts","../src/base/collaborate.ts","../src/base/message-bus.ts","../src/base/multiple-doc-collab-history.ts","../src/base/sub-model-loader.ts","../src/base/sync-connector.ts","../src/connectors/hocuspocus-connector.ts","../src/connectors/y-websocket-connector.ts","../src/collaborate-module.ts","../src/multiple-document-collaborate-module.ts"],"sourcesContent":["import { Inject, Injectable, Optional } from '@viewfly/core'\nimport { History, HISTORY_STACK_SIZE, makeError, RootComponentRef, Scheduler } from '@textbus/core'\nimport { Observable, Subject, Subscription } from '@tanbo/stream'\nimport {\n Item,\n Transaction,\n UndoManager\n} from 'yjs'\n\nimport { Collaborate, CollaborateHistorySelectionPosition, CursorPosition } from './collaborate'\n\nexport abstract class CustomUndoManagerConfig {\n abstract captureTransaction?(arg0: Transaction): boolean\n\n abstract deleteFilter?(arg0: Item): boolean\n}\n\nconst collabHistoryErrorFn = makeError('CollabHistory')\n\n@Injectable()\nexport class CollabHistory implements History {\n onBack: Observable<void>\n onForward: Observable<void>\n onChange: Observable<void>\n onPush: Observable<void>\n\n get canBack() {\n return this.manager?.canUndo() || false\n }\n\n get canForward() {\n return this.manager?.canRedo() || false\n }\n\n private manager: UndoManager | null = null\n\n private historyItems: Array<CollaborateHistorySelectionPosition> = []\n private index = 0\n private subscriptions: Subscription[] = []\n\n private backEvent = new Subject<void>()\n private forwardEvent = new Subject<void>()\n private changeEvent = new Subject<void>()\n private pushEvent = new Subject<void>()\n\n constructor(private rootComponentRef: RootComponentRef,\n private collaborate: Collaborate,\n private scheduler: Scheduler,\n @Inject(HISTORY_STACK_SIZE) private stackSize: number,\n @Optional() private undoManagerConfig: CustomUndoManagerConfig) {\n this.onBack = this.backEvent.asObservable()\n this.onForward = this.forwardEvent.asObservable()\n this.onChange = this.changeEvent.asObservable()\n this.onPush = this.pushEvent.asObservable()\n\n }\n\n listen() {\n const root = this.collaborate.yDoc.getMap('RootComponent')\n const rootComponent = this.rootComponentRef.component!\n this.collaborate.syncRootComponent(this.collaborate.yDoc, root, rootComponent)\n\n const undoManagerConfig = this.undoManagerConfig || {}\n const manager = new UndoManager(root, {\n trackedOrigins: new Set<any>([this.collaborate.yDoc]),\n captureTransaction(arg) {\n if (undoManagerConfig.captureTransaction) {\n return undoManagerConfig.captureTransaction(arg)\n }\n return true\n },\n deleteFilter(item: Item) {\n if (undoManagerConfig.deleteFilter) {\n return undoManagerConfig.deleteFilter(item)\n }\n return true\n }\n })\n this.manager = manager\n\n let beforePosition: CursorPosition | null = null\n this.subscriptions.push(\n this.scheduler.onLocalChangeBefore.subscribe(() => {\n beforePosition = this.collaborate.getRelativeCursorLocation()\n }),\n this.collaborate.onAddSubModel.subscribe(() => {\n throw collabHistoryErrorFn('single document does not support submodels.')\n })\n )\n\n manager.on('stack-item-added', (event: any) => {\n if (event.type === 'undo') {\n if (event.origin === manager) {\n this.index++\n } else {\n this.historyItems.length = this.index\n this.historyItems.push({\n before: beforePosition,\n after: this.collaborate.getRelativeCursorLocation()\n })\n this.index++\n }\n } else {\n this.index--\n }\n if (manager.undoStack.length > this.stackSize) {\n this.historyItems.shift()\n manager.undoStack.shift()\n }\n if (event.origin === this.collaborate.yDoc) {\n this.pushEvent.next()\n }\n this.changeEvent.next()\n })\n manager.on('stack-item-popped', (ev: any) => {\n const index = ev.type === 'undo' ? this.index : this.index - 1\n const position = this.historyItems[index] || null\n const p = ev.type === 'undo' ? position?.before : position?.after\n this.collaborate.restoreCursorPosition(p)\n })\n }\n\n\n back() {\n if (this.canBack) {\n this.manager?.undo()\n this.backEvent.next()\n }\n }\n\n forward() {\n if (this.canForward) {\n this.manager?.redo()\n this.forwardEvent.next()\n }\n }\n\n clear() {\n const last = this.historyItems.pop()\n this.historyItems = last ? [last] : []\n this.index = last ? 1 : 0\n this.manager?.clear()\n this.changeEvent.next()\n }\n\n destroy() {\n this.index = 0\n this.historyItems = []\n this.subscriptions.forEach(i => i.unsubscribe())\n if (this.manager) {\n this.manager.destroy()\n this.manager.captureTransaction = () => true\n this.manager.deleteFilter = () => true\n this.manager.trackedOrigins = new Set([null])\n }\n\n this.manager = null\n }\n}\n","import { Injectable } from '@viewfly/core'\nimport { filter, map, Observable, Subject, Subscription } from '@tanbo/stream'\nimport {\n ChangeOrigin,\n Component,\n Registry,\n Formats,\n makeError,\n Scheduler,\n Selection,\n Slot,\n AsyncSlot,\n AsyncComponent,\n AbstractSelection,\n observe,\n ProxyModel\n} from '@textbus/core'\nimport {\n AbstractType,\n Array as YArray, createAbsolutePositionFromRelativePosition, createRelativePositionFromTypeIndex,\n Doc as YDoc,\n Map as YMap,\n RelativePosition,\n Text as YText,\n Transaction,\n UndoManager,\n YArrayEvent,\n YMapEvent,\n YTextEvent\n} from 'yjs'\n\nimport { SubModelLoader } from './sub-model-loader'\n\nexport interface RelativePositionRecord {\n doc: YDoc,\n position: RelativePosition\n}\n\nexport interface CursorPosition {\n anchor: RelativePositionRecord\n focus: RelativePositionRecord\n}\n\nexport interface CollaborateHistorySelectionPosition {\n before: CursorPosition | null\n after: CursorPosition | null\n}\n\nconst collaborateErrorFn = makeError('Collaborate')\n\nclass SlotMap {\n private slotAndYTextMap = new WeakMap<Slot, YText>()\n private yTextAndSlotMap = new WeakMap<YText, Slot>()\n\n set(key: Slot, value: YText): void\n set(key: YText, value: Slot): void\n set(key: any, value: any) {\n if (key instanceof Slot) {\n this.slotAndYTextMap.set(key, value)\n this.yTextAndSlotMap.set(value, key)\n } else {\n this.slotAndYTextMap.set(value, key)\n this.yTextAndSlotMap.set(key, value)\n }\n }\n\n get(key: Slot): YText | null\n get(key: YText): Slot | null\n get(key: any) {\n if (key instanceof Slot) {\n return this.slotAndYTextMap.get(key) || null\n }\n return this.yTextAndSlotMap.get(key) || null\n }\n\n delete(key: Slot | YText) {\n if (key instanceof Slot) {\n const v = this.slotAndYTextMap.get(key)\n this.slotAndYTextMap.delete(key)\n if (v) {\n this.yTextAndSlotMap.delete(v)\n }\n } else {\n const v = this.yTextAndSlotMap.get(key)\n this.yTextAndSlotMap.delete(key)\n if (v) {\n this.slotAndYTextMap.delete(v)\n }\n }\n }\n}\n\ninterface Update {\n record: boolean\n actions: Array<() => void>\n}\n\ninterface UpdateItem {\n record: boolean\n\n action(): void\n}\n\nexport interface SubModelLoaded {\n yType: AbstractType<any>\n yDoc: YDoc\n}\n\n@Injectable()\nexport class Collaborate {\n yDoc = new YDoc()\n slotMap = new SlotMap()\n onAddSubModel: Observable<SubModelLoaded>\n\n private subscriptions: Subscription[] = []\n private updateFromRemote = false\n private addSubModelEvent = new Subject<SubModelLoaded>()\n\n private updateRemoteActions = new WeakMap<YDoc, UpdateItem[]>()\n private noRecord = {}\n\n constructor(private scheduler: Scheduler,\n private registry: Registry,\n private selection: Selection,\n private subModelLoader: SubModelLoader) {\n this.onAddSubModel = this.addSubModelEvent.asObservable()\n }\n\n syncRootComponent(yDoc: YDoc, sharedComponent: YMap<any>, localComponent: Component<any>) {\n this.initSyncEvent(yDoc)\n this.syncComponent(yDoc, sharedComponent, localComponent)\n }\n\n syncRootSlot(yDoc: YDoc, sharedSlot: YText, localSlot: Slot) {\n if (sharedSlot.length) {\n localSlot.retain(0)\n localSlot.delete(localSlot.length)\n localSlot.cleanAttributes()\n localSlot.cleanFormats()\n this.initLocalSlotBySharedSlot(sharedSlot, localSlot)\n } else {\n yDoc.transact(() => {\n this.initSharedSlotByLocalSlot(sharedSlot, localSlot)\n })\n }\n this.initSyncEvent(yDoc)\n this.syncSlot(sharedSlot, localSlot)\n }\n\n getAbstractSelection(position: CursorPosition): AbstractSelection | null {\n const anchorPosition = createAbsolutePositionFromRelativePosition(position.anchor.position, position.anchor.doc)\n const focusPosition = createAbsolutePositionFromRelativePosition(position.focus.position, position.focus.doc)\n if (anchorPosition && focusPosition) {\n const focusSlot = this.slotMap.get(focusPosition.type as YText)\n const anchorSlot = this.slotMap.get(anchorPosition.type as YText)\n if (focusSlot && anchorSlot) {\n return {\n anchorSlot,\n anchorOffset: anchorPosition.index,\n focusSlot,\n focusOffset: focusPosition.index\n }\n }\n }\n return null\n }\n\n getRelativeCursorLocation(): CursorPosition | null {\n const { anchorSlot, anchorOffset, focusSlot, focusOffset } = this.selection\n if (anchorSlot) {\n const anchorYText = this.slotMap.get(anchorSlot)\n if (anchorYText) {\n const anchorPosition = createRelativePositionFromTypeIndex(anchorYText, anchorOffset!)\n if (focusSlot) {\n const focusYText = this.slotMap.get(focusSlot)\n if (focusYText) {\n const focusPosition = createRelativePositionFromTypeIndex(focusYText, focusOffset!)\n return {\n focus: {\n doc: focusYText.doc!,\n position: focusPosition\n },\n anchor: {\n doc: anchorYText.doc!,\n position: anchorPosition\n }\n }\n }\n }\n }\n }\n return null\n }\n\n restoreCursorPosition(position: CursorPosition | null) {\n if (!position) {\n this.selection.unSelect()\n return\n }\n const selection = this.getAbstractSelection(position)\n if (selection) {\n this.selection.setBaseAndExtent(\n selection.anchorSlot,\n selection.anchorOffset,\n selection.focusSlot,\n selection.focusOffset)\n }\n }\n\n private initSyncEvent(yDoc: YDoc) {\n this.subscriptions.push(\n this.scheduler.onDocChanged.pipe(\n map(item => {\n return item.filter(i => {\n return i.from !== ChangeOrigin.Remote\n })\n }),\n filter(item => {\n return item.length\n })\n ).subscribe(() => {\n const updates: Update[] = []\n\n let update: Update | null = null\n\n const updateRemoteActions = this.updateRemoteActions.get(yDoc) || []\n\n for (const item of updateRemoteActions) {\n if (!update) {\n update = {\n record: item.record,\n actions: []\n }\n updates.push(update)\n }\n if (update.record === item.record) {\n update.actions.push(item.action)\n } else {\n update = {\n record: item.record,\n actions: [item.action]\n }\n updates.push(update)\n }\n }\n\n this.updateRemoteActions.delete(yDoc)\n\n for (const item of updates) {\n yDoc.transact(() => {\n item.actions.forEach(fn => {\n fn()\n })\n }, item.record ? yDoc : this.noRecord)\n }\n })\n )\n }\n\n private syncComponent(yDoc: YDoc, sharedComponent: YMap<any>, localComponent: Component<any>) {\n let state = sharedComponent.get('state') as YMap<any>\n if (!state) {\n state = new YMap<any>()\n this.syncLocalMapToSharedMap(localComponent.state as ProxyModel<Record<string, any>>, state)\n yDoc.transact(() => {\n sharedComponent.set('state', state)\n })\n } else {\n Object.keys(localComponent.state).forEach(key => {\n Reflect.deleteProperty(localComponent.state, key)\n })\n this.syncSharedMapToLocalMap(state, localComponent.state as ProxyModel<Record<string, any>>)\n }\n }\n\n private syncSlot(sharedSlot: YText, localSlot: Slot) {\n const syncRemote = (ev: YTextEvent, tr: Transaction) => {\n this.runRemoteUpdate(tr, () => {\n localSlot.retain(0)\n ev.keysChanged.forEach(key => {\n const change = ev.keys.get(key)\n if (!change) {\n return\n }\n const updateType = change.action\n if (updateType === 'update' || updateType === 'add') {\n const attribute = this.registry.getAttribute(key)\n if (attribute) {\n localSlot.setAttribute(attribute, sharedSlot.getAttribute(key))\n }\n } else if (updateType === 'delete') {\n const attribute = this.registry.getAttribute(key)\n if (attribute) {\n localSlot.removeAttribute(attribute)\n }\n }\n })\n ev.delta.forEach(action => {\n if (Reflect.has(action, 'retain')) {\n if (action.attributes) {\n const formats = remoteFormatsToLocal(this.registry, action.attributes)\n if (formats.length) {\n localSlot.retain(action.retain!, formats)\n }\n }\n localSlot.retain(localSlot.index + action.retain!)\n } else if (action.insert) {\n const index = localSlot.index\n let length = 1\n if (typeof action.insert === 'string') {\n length = action.insert.length\n localSlot.insert(action.insert, remoteFormatsToLocal(this.registry, action.attributes))\n } else {\n const sharedComponent = action.insert as YMap<any>\n const component = this.createLocalComponentBySharedComponent(sharedComponent)\n localSlot.insert(component)\n }\n if (this.selection.isSelected && !(tr.origin instanceof UndoManager)) {\n if (localSlot === this.selection.anchorSlot && this.selection.anchorOffset! > index) {\n this.selection.setAnchor(localSlot, this.selection.anchorOffset! + length)\n }\n if (localSlot === this.selection.focusSlot && this.selection.focusOffset! > index) {\n this.selection.setFocus(localSlot, this.selection.focusOffset! + length)\n }\n }\n } else if (action.delete) {\n const index = localSlot.index\n localSlot.delete(action.delete)\n if (this.selection.isSelected && !(tr.origin instanceof UndoManager)) {\n if (localSlot === this.selection.anchorSlot && this.selection.anchorOffset! >= index) {\n this.selection.setAnchor(localSlot, this.selection.startOffset! - action.delete)\n }\n if (localSlot === this.selection.focusSlot && this.selection.focusOffset! >= index) {\n this.selection.setFocus(localSlot, this.selection.focusOffset! - action.delete)\n }\n }\n }\n })\n })\n }\n sharedSlot.observe(syncRemote)\n\n const sub = localSlot.onContentChange.subscribe(actions => {\n this.runLocalUpdate(sharedSlot.doc, true, () => {\n let offset = 0\n let length = 0\n for (const action of actions) {\n if (action.type === 'retain') {\n const formats = action.formats\n if (formats) {\n const keys = Object.keys(formats)\n let length = keys.length\n keys.forEach(key => {\n const formatter = this.registry.getFormatter(key)\n if (!formatter) {\n length--\n Reflect.deleteProperty(formats, key)\n }\n })\n if (length) {\n sharedSlot.format(offset, action.offset, formats)\n }\n } else {\n offset = action.offset\n }\n } else if (action.type === 'contentInsert') {\n const delta = sharedSlot.toDelta()\n const isEmpty = delta.length === 1 && delta[0].insert === Slot.emptyPlaceholder\n if (typeof action.content === 'string') {\n length = action.content.length\n sharedSlot.insert(offset, action.content, action.formats || {})\n } else {\n length = 1\n const sharedComponent = this.createSharedComponentByLocalComponent(action.ref as Component)\n sharedSlot.insertEmbed(offset, sharedComponent, action.formats || {})\n }\n\n if (isEmpty && offset === 0) {\n sharedSlot.delete(sharedSlot.length - 1, 1)\n }\n offset += length\n } else if (action.type === 'delete') {\n const delta = sharedSlot.toDelta()\n if (sharedSlot.length) {\n sharedSlot.delete(offset, action.count)\n }\n if (sharedSlot.length === 0) {\n sharedSlot.insert(0, '\\n', delta[0]?.attributes)\n }\n } else if (action.type === 'attrSet') {\n sharedSlot.setAttribute(action.name, action.value)\n } else if (action.type === 'attrDelete') {\n sharedSlot.removeAttribute(action.name)\n }\n }\n })\n })\n\n this.slotMap.set(localSlot, sharedSlot)\n\n localSlot.__changeMarker__.addDetachCallback(() => {\n this.slotMap.delete(localSlot)\n sharedSlot.unobserve(syncRemote)\n sub.unsubscribe()\n })\n }\n\n\n destroy() {\n this.subscriptions.forEach(i => i.unsubscribe())\n this.subscriptions = []\n }\n\n private syncSharedMapToLocalMap(sharedMap: YMap<any>, localMap: ProxyModel<Record<string, any>>) {\n sharedMap.forEach((value, key) => {\n localMap[key] = this.createLocalModelBySharedByModel(value)\n })\n this.syncObject(sharedMap, localMap)\n }\n\n private createLocalMapBySharedMap(sharedMap: YMap<any>): ProxyModel<Record<string, any>> {\n const localMap = observe({}) as ProxyModel<Record<string, any>>\n this.syncSharedMapToLocalMap(sharedMap, localMap)\n return localMap\n }\n\n private createLocalArrayBySharedArray(sharedArray: YArray<any>): ProxyModel<any[]> {\n const localArray = observe<any[]>([]) as ProxyModel<any[]>\n localArray.push(...sharedArray.map(item => this.createLocalModelBySharedByModel(item)))\n this.syncArray(sharedArray, localArray)\n return localArray\n }\n\n private syncLocalMapToSharedMap(localMap: ProxyModel<Record<string, any>>, sharedMap: YMap<any>) {\n Object.entries(localMap).forEach(([key, value]) => {\n sharedMap.set(key, this.createSharedModelByLocalModel(value))\n })\n this.syncObject(sharedMap, localMap)\n }\n\n private createSharedMapByLocalMap(localMap: ProxyModel<Record<string, any>>): YMap<any> {\n const sharedMap = new YMap<any>()\n this.syncLocalMapToSharedMap(localMap, sharedMap)\n return sharedMap\n }\n\n private createSharedArrayByLocalArray(localArray: ProxyModel<any[]>): YArray<any> {\n const sharedArray = new YArray<any>()\n localArray.forEach(value => {\n sharedArray.push([this.createSharedModelByLocalModel(value)])\n })\n this.syncArray(sharedArray, localArray)\n return sharedArray\n }\n\n private createSharedSlotByLocalSlot(localSlot: Slot): YText {\n const sharedSlot = new YText()\n const isAsyncSlot = localSlot instanceof AsyncSlot\n sharedSlot.setAttribute('schema', [...localSlot.schema])\n sharedSlot.setAttribute('type', isAsyncSlot ? 'async' : 'sync')\n\n if (isAsyncSlot) {\n let isDestroyed = false\n const sharedMetadata = this.createSharedMapByLocalMap(localSlot.metadata)\n sharedSlot.setAttribute('metadata', sharedMetadata)\n this.subModelLoader.createSubModelBySlot(localSlot).then(subDocument => {\n if (isDestroyed) {\n return\n }\n const content = subDocument.getText('content')\n const state = subDocument.getMap('state')\n this.syncLocalMapToSharedMap(localSlot.state, state)\n this.initSharedSlotByLocalSlot(content, localSlot)\n this.syncSlot(content, localSlot)\n this.addSubModelEvent.next({\n yDoc: subDocument,\n yType: content\n })\n this.initSyncEvent(subDocument)\n localSlot.loader.markAsLoaded()\n })\n localSlot.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n return sharedSlot\n }\n\n const sharedSlotState = new YMap()\n this.syncLocalMapToSharedMap(localSlot.state as ProxyModel<Record<string, any>>, sharedSlotState)\n sharedSlot.setAttribute('state', sharedSlotState)\n\n const sharedContent = new YText()\n this.initSharedSlotByLocalSlot(sharedContent, localSlot)\n sharedSlot.insertEmbed(0, sharedContent)\n this.syncSlot(sharedContent, localSlot)\n return sharedSlot\n }\n\n private initSharedSlotByLocalSlot(sharedContent: YText, localSlot: Slot) {\n let offset = 0\n localSlot.toDelta().forEach(i => {\n let formats: any = {}\n if (i.formats) {\n i.formats.forEach(item => {\n formats[item[0].name] = item[1]\n })\n } else {\n formats = null\n }\n if (typeof i.insert === 'string') {\n sharedContent.insert(offset, i.insert, formats)\n } else {\n const sharedComponent = this.createSharedComponentByLocalComponent(i.insert)\n sharedContent.insertEmbed(offset, sharedComponent, formats)\n }\n offset += i.insert.length\n })\n localSlot.getAttributes().forEach(item => {\n sharedContent.setAttribute(item[0].name, item[1])\n })\n }\n\n private createLocalSlotBySharedSlot(sharedSlot: YText): Slot {\n const type = sharedSlot.getAttribute('type')\n const schema = sharedSlot.getAttribute('schema')\n\n if (type === 'async') {\n const metadata = sharedSlot.getAttribute('metadata') as YMap<any>\n const slot = new AsyncSlot(schema || [], {}, {})\n this.syncSharedMapToLocalMap(metadata, slot.metadata as ProxyModel<Record<string, any>>)\n const loadedSubDocument = this.subModelLoader.getLoadedModelBySlot(slot)\n if (loadedSubDocument) {\n const subContent = loadedSubDocument.getText('content')\n const data = loadedSubDocument.getMap('state')\n this.syncSharedMapToLocalMap(data, slot.state as ProxyModel<Record<string, any>>)\n this.syncRootSlot(loadedSubDocument, subContent, slot)\n this.addSubModelEvent.next({\n yDoc: loadedSubDocument,\n yType: subContent\n })\n slot.loader.markAsLoaded()\n return slot\n }\n let isDestroyed = false\n slot.loader.onRequestLoad.toPromise().then(() => {\n return this.subModelLoader.loadSubModelBySlot(slot)\n }).then(subDocument => {\n if (isDestroyed) {\n return\n }\n const subContent = subDocument.getText('content')\n const state = subDocument.getMap('state')\n this.syncSharedMapToLocalMap(state, slot.state as ProxyModel<Record<string, any>>)\n this.syncRootSlot(subDocument, subContent, slot)\n this.addSubModelEvent.next({\n yDoc: subDocument,\n yType: subContent\n })\n slot.loader.markAsLoaded()\n })\n slot.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n return slot\n }\n\n const contentDelta = sharedSlot.toDelta()\n const content = contentDelta[0]?.insert\n\n if (!(content instanceof YText)) {\n throw collaborateErrorFn('shared slot content type is not `YText`.')\n }\n\n const localSlot = new Slot(schema || [], {})\n\n const sharedSlotState = sharedSlot.getAttribute('state')\n this.syncSharedMapToLocalMap(sharedSlotState, localSlot.state as ProxyModel<Record<string, any>>)\n\n this.initLocalSlotBySharedSlot(content, localSlot)\n\n this.syncSlot(content, localSlot)\n return localSlot\n }\n\n private initLocalSlotBySharedSlot(content: YText, localSlot: Slot) {\n const delta = content.toDelta()\n\n const attrs = content.getAttributes()\n Object.keys(attrs).forEach(key => {\n const attribute = this.registry.getAttribute(key)\n if (attribute) {\n localSlot.setAttribute(attribute, attrs[key])\n }\n })\n for (const action of delta) {\n if (action.insert) {\n if (typeof action.insert === 'string') {\n const formats = remoteFormatsToLocal(this.registry, action.attributes)\n localSlot.insert(action.insert, formats)\n } else {\n const sharedComponent = action.insert as YMap<any>\n const component = this.createLocalComponentBySharedComponent(sharedComponent)\n localSlot.insert(component, remoteFormatsToLocal(this.registry, action.attributes))\n }\n } else {\n throw collaborateErrorFn('unexpected delta action.')\n }\n }\n }\n\n private createSharedModelByLocalModel(localModel: any) {\n if (localModel instanceof Slot) {\n return this.createSharedSlotByLocalSlot(localModel)\n }\n if (Array.isArray(localModel)) {\n return this.createSharedArrayByLocalArray(localModel as ProxyModel<any[]>)\n }\n if (typeof localModel === 'object' && localModel !== null) {\n return this.createSharedMapByLocalMap(localModel)\n }\n return localModel\n }\n\n private createLocalModelBySharedByModel(sharedModel: any) {\n if (sharedModel instanceof YMap) {\n return this.createLocalMapBySharedMap(sharedModel)\n }\n if (sharedModel instanceof YArray) {\n return this.createLocalArrayBySharedArray(sharedModel)\n }\n if (sharedModel instanceof YText) {\n return this.createLocalSlotBySharedSlot(sharedModel)\n }\n return sharedModel\n }\n\n\n private createSharedComponentByLocalComponent(component: Component | AsyncComponent): YMap<any> {\n const sharedComponent = new YMap()\n sharedComponent.set('name', component.name)\n\n if (component instanceof AsyncComponent) {\n sharedComponent.set('type', 'async')\n const sharedMetadata = this.createSharedMapByLocalMap(component.metadata)\n sharedComponent.set('metadata', sharedMetadata)\n const state = component.state as ProxyModel<Record<string, any>>\n let isDestroyed = false\n state.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n this.subModelLoader.createSubModelByComponent(component).then(subDocument => {\n if (isDestroyed) {\n return\n }\n const state = subDocument.getMap('state')\n this.syncComponent(subDocument, state, component)\n this.addSubModelEvent.next({\n yType: state,\n yDoc: subDocument\n })\n this.initSyncEvent(subDocument)\n component.loader.markAsLoaded()\n })\n return sharedComponent\n }\n\n const sharedState = this.createSharedMapByLocalMap(component.state as ProxyModel<Record<string, any>>)\n sharedComponent.set('state', sharedState)\n sharedComponent.set('type', 'sync')\n return sharedComponent\n }\n\n private createLocalComponentBySharedComponent(yMap: YMap<any>): Component {\n const componentName = yMap.get('name') as string\n const type = yMap.get('type') as string\n\n let instance: Component<any> | null\n if (type === 'async') {\n instance = this.registry.createComponentByData(componentName, {}, {})\n if (instance instanceof AsyncComponent) {\n const sharedMetadata = yMap.get('metadata') as YMap<any>\n this.syncSharedMapToLocalMap(sharedMetadata, instance.metadata)\n const loadedSubDocument = this.subModelLoader.getLoadedModelByComponent(instance)\n if (loadedSubDocument) {\n const state = loadedSubDocument.getMap('state')\n this.syncComponent(loadedSubDocument, state, instance!)\n this.addSubModelEvent.next({\n yType: state,\n yDoc: loadedSubDocument\n })\n instance.loader.markAsLoaded()\n return instance\n }\n\n const state = instance.state as ProxyModel<Record<string, any>>\n let isDestroyed = false\n instance.loader.onRequestLoad.toPromise().then(() => {\n return this.subModelLoader.loadSubModelByComponent(instance as AsyncComponent)\n })\n .then(subDocument => {\n if (isDestroyed) {\n return\n }\n const state = subDocument.getMap('state')\n this.syncComponent(subDocument, state, instance!)\n this.addSubModelEvent.next({\n yType: state,\n yDoc: subDocument\n })\n ;(instance as AsyncComponent).loader.markAsLoaded()\n })\n state.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n } else if (instance instanceof Component) {\n throw collaborateErrorFn(`component name \\`${componentName}\\` is not a async component.`)\n }\n } else {\n const sharedState = yMap.get('state') as YMap<any>\n const state = this.createLocalMapBySharedMap(sharedState)\n instance = this.registry.createComponentByData(componentName, state)\n }\n if (instance) {\n return instance\n }\n\n throw collaborateErrorFn(`cannot find component factory \\`${componentName}\\`.`)\n }\n\n /**\n * 双向同步数组\n * @param sharedArray\n * @param localArray\n * @private\n */\n private syncArray(sharedArray: YArray<any>, localArray: ProxyModel<any[]>) {\n function logError(type: string) {\n console.error(collaborateErrorFn(`${type} error, length exceeded, path in ${localArray.__changeMarker__.getPaths().join('/')}`))\n }\n\n const sub = localArray.__changeMarker__.onSelfChange.subscribe((actions) => {\n this.runLocalUpdate(sharedArray.doc, !localArray.__changeMarker__.irrevocableUpdate, () => {\n let index = 0\n for (const action of actions) {\n switch (action.type) {\n case 'retain':\n index = action.offset\n break\n case 'insert': {\n const ref = action.ref\n if (!Array.isArray(ref)) {\n throw collaborateErrorFn('The insertion action must have a reference value.')\n }\n const data = ref.map(item => {\n return this.createSharedModelByLocalModel(item)\n })\n if (index <= sharedArray.length) {\n sharedArray.insert(index, data)\n } else {\n sharedArray.insert(sharedArray.length, data)\n logError('insert')\n }\n }\n break\n case 'delete':\n if (action.count <= 0) {\n break\n }\n if (index < sharedArray.length) {\n sharedArray.delete(index, action.count)\n } else {\n logError('delete')\n }\n break\n case 'setIndex':\n if (action.index < sharedArray.length) {\n sharedArray.delete(action.index, 1)\n sharedArray.insert(action.index, [this.createSharedModelByLocalModel(action.ref)])\n } else {\n sharedArray.insert(sharedArray.length, [this.createSharedModelByLocalModel(action.ref)])\n logError('setIndex')\n }\n break\n }\n }\n })\n })\n\n const syncRemote = (ev: YArrayEvent<any>, tr: Transaction) => {\n this.runRemoteUpdate(tr, () => {\n let index = 0\n ev.delta.forEach((action) => {\n if (Reflect.has(action, 'retain')) {\n index += action.retain as number\n } else if (action.insert) {\n const data = (action.insert as Array<any>).map((item) => {\n return this.createLocalModelBySharedByModel(item)\n })\n localArray.splice(index, 0, ...data)\n index += data.length\n } else if (action.delete) {\n localArray.splice(index, action.delete)\n }\n })\n })\n }\n\n sharedArray.observe(syncRemote)\n localArray.__changeMarker__.addDetachCallback(() => {\n sub.unsubscribe()\n sharedArray.unobserve(syncRemote)\n })\n }\n\n /**\n * 双向同步对象\n * @param sharedObject\n * @param localObject\n * @private\n */\n private syncObject(sharedObject: YMap<any>, localObject: ProxyModel<Record<string, any>>) {\n const syncRemote = (ev: YMapEvent<any>, tr: Transaction) => {\n this.runRemoteUpdate(tr, () => {\n ev.changes.keys.forEach((item, key) => {\n if (item.action === 'add' || item.action === 'update') {\n const value = sharedObject.get(key)\n localObject[key] = this.createLocalModelBySharedByModel(value)\n } else {\n Reflect.deleteProperty(localObject, key)\n }\n })\n })\n }\n\n sharedObject.observe(syncRemote)\n\n const sub = localObject.__changeMarker__.onSelfChange.subscribe((actions) => {\n this.runLocalUpdate(sharedObject.doc, !localObject.__changeMarker__.irrevocableUpdate, () => {\n for (const action of actions) {\n switch (action.type) {\n case 'propSet': {\n const subModel = this.createSharedModelByLocalModel(action.ref)\n sharedObject.set(action.key, subModel)\n if (sharedObject.size === 0) {\n // 奇怪的 bug,设置了子模型,但子模型会标记为 deleted,导致设置后无效\n console.error(collaborateErrorFn(`prop set error, key is ${action.key}`))\n }\n }\n break\n case 'propDelete':\n sharedObject.delete(action.key)\n break\n }\n }\n })\n })\n\n localObject.__changeMarker__.addDetachCallback(function () {\n sharedObject.unobserve(syncRemote)\n sub.unsubscribe()\n })\n }\n\n private runLocalUpdate(yDoc: YDoc | null, record: boolean, fn: () => void) {\n if (this.updateFromRemote || !yDoc) {\n return\n }\n let changeList = this.updateRemoteActions.get(yDoc)\n if (!changeList) {\n changeList = []\n this.updateRemoteActions.set(yDoc, changeList)\n }\n changeList.push({\n record,\n action: fn\n })\n }\n\n private runRemoteUpdate(tr: Transaction, fn: () => void) {\n if (tr.origin === tr.doc) {\n return\n }\n this.updateFromRemote = true\n if (tr.origin instanceof UndoManager) {\n this.scheduler.historyApplyTransact(fn)\n } else {\n this.scheduler.remoteUpdateTransact(fn)\n }\n this.updateFromRemote = false\n }\n}\n\nfunction remoteFormatsToLocal(registry: Registry, attrs?: any,) {\n const formats: Formats = []\n if (attrs) {\n Object.keys(attrs).forEach(key => {\n const formatter = registry.getFormatter(key)\n if (formatter) {\n formats.push([formatter, attrs[key]])\n }\n })\n }\n return formats\n}\n","import { Observable, Subject } from '@tanbo/stream'\nimport { Textbus } from '@textbus/core'\n\nexport interface Message<T> {\n clientId: number\n message: T\n}\n\n/**\n * 协作消息总线,用于同步各终端消息\n */\nexport abstract class MessageBus<T> {\n onSync: Observable<void>\n protected syncEvent = new Subject<void>()\n\n constructor() {\n this.onSync = this.syncEvent.asObservable()\n }\n\n /**\n * 立即同步消息\n */\n sync() {\n this.syncEvent.next()\n }\n\n /**\n * 当需要同步协作消息是,Textbus 会自动调用,并把返回数据同步到其它终端\n */\n abstract get(textbus: Textbus): T\n\n /**\n * 当远程消息更新时,Textbus 会自动调用\n * @param message\n * @param textbus\n */\n abstract consume(message: Message<T>[], textbus: Textbus): void\n}\n","import { AbstractType, Item, UndoManager, Doc as YDoc } from 'yjs'\nimport { Inject, Injectable, Optional } from '@viewfly/core'\nimport { Observable, Subject, Subscription } from '@tanbo/stream'\nimport { History, HISTORY_STACK_SIZE, RootComponentRef, Scheduler } from '@textbus/core'\n\nimport { Collaborate, CollaborateHistorySelectionPosition, CursorPosition } from './collaborate'\nimport { CustomUndoManagerConfig } from './collab-history'\n\ninterface HistoryStackItem extends CollaborateHistorySelectionPosition {\n undoManagers: UndoManager[]\n}\n\n@Injectable()\nexport class MultipleDocCollabHistory implements History {\n onChange: Observable<void>\n onBack: Observable<void>\n onForward: Observable<void>\n onPush: Observable<void>\n\n get canBack() {\n return this.actionStack.length > 0 && this.index > 0\n }\n\n get canForward() {\n return this.actionStack.length > 0 && this.index < this.actionStack.length\n }\n\n isListen = false\n\n private changeEvent = new Subject<void>()\n private backEvent = new Subject<void>()\n private forwardEvent = new Subject<void>()\n private pushEvent = new Subject<void>()\n private actionStack: HistoryStackItem[] = []\n\n private index = 0\n\n private stackItem: HistoryStackItem | null = null\n private timer: any = null\n private beforePosition: CursorPosition | null = null\n\n private subscription = new Subscription()\n\n private subDocs = new Set<AbstractType<any>>()\n\n private listenerCaches = new Set<UndoManager>()\n\n constructor(private collaborate: Collaborate,\n private scheduler: Scheduler,\n private rootComponentRef: RootComponentRef,\n @Inject(HISTORY_STACK_SIZE) private stackSize: number,\n @Optional() private undoManagerConfig: CustomUndoManagerConfig) {\n this.onChange = this.changeEvent.asObservable()\n this.onBack = this.backEvent.asObservable()\n this.onForward = this.forwardEvent.asObservable()\n this.onPush = this.pushEvent.asObservable()\n }\n\n listen() {\n this.isListen = true\n const root = this.collaborate.yDoc.getMap('RootComponent')\n const rootComponent = this.rootComponentRef.component!\n this.collaborate.syncRootComponent(this.collaborate.yDoc, root, rootComponent)\n\n this.listenItem(root, this.collaborate.yDoc)\n\n this.subscription.add(\n this.collaborate.onAddSubModel.subscribe(({ yType, yDoc }) => {\n if (this.subDocs.has(yType)) {\n return\n }\n this.subDocs.add(yType)\n if (this.isListen) {\n this.listenItem(yType, yDoc)\n }\n }),\n this.scheduler.onLocalChangeBefore.subscribe(() => {\n this.beforePosition = this.collaborate.getRelativeCursorLocation()\n })\n )\n }\n\n forward() {\n if (!this.canForward) {\n return\n }\n clearTimeout(this.timer as any)\n const item = this.actionStack[this.index]\n if (item) {\n for (const i of item.undoManagers) {\n i.redo()\n }\n this.collaborate.restoreCursorPosition(item.after)\n }\n this.index++\n this.forwardEvent.next()\n this.changeEvent.next()\n }\n\n back() {\n if (!this.canBack) {\n return\n }\n clearTimeout(this.timer as any)\n let historyStackItem: HistoryStackItem\n if (this.stackItem) {\n historyStackItem = this.stackItem\n this.stackItem = null\n } else {\n this.index--\n historyStackItem = this.actionStack[this.index]\n }\n let len = historyStackItem.undoManagers.length\n while (len > 0) {\n len--\n historyStackItem.undoManagers[len].undo()\n }\n if (historyStackItem) {\n const beforePosition = historyStackItem.before\n this.collaborate.restoreCursorPosition(beforePosition)\n this.backEvent.next()\n this.changeEvent.next()\n }\n }\n\n clear() {\n this.actionStack = []\n this.stackItem = null\n this.index = 0\n this.beforePosition = null\n clearTimeout(this.timer as any)\n this.listenerCaches.forEach((undoManager) => {\n undoManager.clear()\n })\n this.changeEvent.next()\n }\n\n destroy() {\n this.clear()\n this.beforePosition = this.stackItem = null\n this.subscription.unsubscribe()\n this.listenerCaches.forEach((undoManager) => {\n undoManager.destroy()\n })\n this.subDocs.clear()\n this.listenerCaches.clear()\n }\n\n private listenItem(yType: AbstractType<any>, yDoc: YDoc) {\n const undoManagerConfig = this.undoManagerConfig || {}\n const undoManager = new UndoManager(yType, {\n trackedOrigins: new Set([yDoc]),\n captureTimeout: 0,\n captureTransaction(arg) {\n if (undoManagerConfig.captureTransaction) {\n return undoManagerConfig.captureTransaction(arg)\n }\n return true\n },\n deleteFilter(item: Item) {\n if (undoManagerConfig.deleteFilter) {\n return undoManagerConfig.deleteFilter(item)\n }\n return true\n }\n })\n\n undoManager.on('stack-item-added', (event: any) => {\n if (event.type === 'undo' && !(event.origin instanceof UndoManager)) {\n if (this.index != this.actionStack.length) {\n const redoStack = this.actionStack.slice(this.index)\n redoStack.forEach(item => {\n item.undoManagers.forEach(i => {\n i.clear(false, true)\n })\n })\n this.actionStack.length = this.index\n this.changeEvent.next()\n }\n if (this.stackItem === null) {\n this.stackItem = {\n before: this.beforePosition,\n after: null,\n undoManagers: []\n }\n this.timer = setTimeout(() => {\n if (this.actionStack.length >= this.stackSize) {\n this.actionStack.shift()\n } else {\n this.index++\n }\n // this.beforePosition = this.collaborate.getRelativeCursorLocation()\n this.stackItem!.after = this.beforePosition\n this.actionStack.push(this.stackItem!)\n this.stackItem = null\n this.pushEvent.next()\n this.changeEvent.next()\n }, 500)\n }\n\n this.stackItem.undoManagers.push(undoManager)\n }\n })\n\n this.listenerCaches.add(undoManager)\n }\n}\n","import { Doc, Doc as YDoc } from 'yjs'\nimport { Injectable } from '@viewfly/core'\nimport { AsyncComponent, AsyncSlot, makeError } from '@textbus/core'\n\nconst subModelLoaderErrorFn = makeError('subModelLoaderError')\n\n/**\n * 子文档加载器\n */\nexport abstract class SubModelLoader {\n /**\n * 通过插槽获取已加载的文档\n * @param slot\n */\n abstract getLoadedModelBySlot(slot: AsyncSlot): YDoc | null\n\n /**\n * 通过组件获取已加载的文档\n * @param component\n */\n abstract getLoadedModelByComponent(component: AsyncComponent): YDoc | null\n\n /**\n * 当本地新增异步子插槽时调用\n * @param slot\n */\n abstract createSubModelBySlot(slot: AsyncSlot): Promise<YDoc>\n\n /**\n * 当本地新增异步子组件时调用\n * @param component\n */\n abstract createSubModelByComponent(component: AsyncComponent): Promise<YDoc>\n\n /**\n * 当远程异步子插槽同步到本地时调用\n * @param slot\n */\n abstract loadSubModelBySlot(slot: AsyncSlot): Promise<YDoc>\n\n /**\n * 当远程异步子组件同步到本地时调用\n * @param component\n */\n abstract loadSubModelByComponent(component: AsyncComponent): Promise<YDoc>\n}\n\n@Injectable()\nexport class NonSubModelLoader extends SubModelLoader {\n createSubModelBySlot(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async slot.')\n }\n\n createSubModelByComponent(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async component.')\n }\n\n loadSubModelByComponent(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async component.')\n }\n\n loadSubModelBySlot(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async slot.')\n }\n\n getLoadedModelBySlot(): Doc {\n throw subModelLoaderErrorFn('single document does not support async slot.')\n }\n\n getLoadedModelByComponent(): Doc {\n throw subModelLoaderErrorFn('single document does not support async component.')\n }\n}\n","import { Observable, Subject } from '@tanbo/stream'\n\n/**\n * 协作通信通用接口\n */\nexport abstract class SyncConnector {\n /**\n * 当文档加载完成时触发的观察者\n */\n onLoad: Observable<void>\n /**\n * 当文档 awareness 状态变更时触发的观察者\n */\n onStateChange: Observable<any[]>\n\n protected loadEvent = new Subject<void>()\n protected stateChangeEvent = new Subject<any[]>()\n\n protected constructor() {\n this.onLoad = this.loadEvent.asObservable()\n this.onStateChange = this.stateChangeEvent.asObservable()\n }\n\n /**\n * 设置 awareness 状态\n * @param key 状态的 key\n * @param data 状态值\n */\n abstract setLocalStateField(key: string, data: Record<string, any>): void\n\n /**\n * 当文档销毁时调用\n */\n abstract onDestroy(): void\n}\n","import { HocuspocusProvider } from '@hocuspocus/provider'\nimport { HocuspocusProviderConfiguration } from '@hocuspocus/provider'\n\nimport { SyncConnector } from '../base/sync-connector'\nimport { Message } from '../base/message-bus'\n\nexport class HocuspocusConnector extends SyncConnector {\n provide: HocuspocusProvider\n\n constructor(config: HocuspocusProviderConfiguration) {\n super()\n this.provide = new HocuspocusProvider({\n ...config,\n onSynced: (data) => {\n config.onSynced?.(data)\n this.loadEvent.next()\n },\n onAwarenessUpdate: (data) => {\n config.onAwarenessUpdate?.(data)\n const states: Message<any>[] = data.states.map(state => {\n return {\n clientId: state.clientId,\n message: state.message as any\n }\n })\n this.stateChangeEvent.next(states)\n },\n })\n }\n\n setLocalStateField(key: string, data: Record<string, any>) {\n this.provide.setAwarenessField(key, data)\n }\n\n onDestroy() {\n this.provide.disconnect()\n this.provide.destroy()\n }\n}\n","import { Doc as YDoc } from 'yjs'\nimport { WebsocketProvider } from 'y-websocket'\n\nimport { SyncConnector } from '../base/sync-connector'\nimport { Message } from '../base/message-bus'\n\nexport class YWebsocketConnector extends SyncConnector {\n provide: WebsocketProvider\n\n private onSync = (is: boolean) => {\n if (is) {\n this.loadEvent.next()\n }\n }\n\n private onUpdate = () => {\n const syncStates: Message<any>[] = []\n this.provide.awareness.getStates().forEach((state, id) => {\n syncStates.push({\n clientId: id,\n message: state.message,\n })\n })\n this.stateChangeEvent.next(syncStates)\n }\n\n constructor(url: string, roomName: string, yDoc: YDoc) {\n super()\n this.onLoad = this.loadEvent.asObservable()\n this.onStateChange = this.stateChangeEvent.asObservable()\n this.provide = new WebsocketProvider(url, roomName, yDoc)\n\n this.provide.once('sync', this.onSync)\n this.provide.awareness.on('update', this.onUpdate)\n }\n\n setLocalStateField(key: string, data: Record<string, any>) {\n this.provide.awareness.setLocalStateField(key, data)\n }\n\n onDestroy() {\n this.provide.awareness.off('update', this.onUpdate)\n this.provide.disconnect()\n this.provide.destroy()\n }\n}\n","import { History, Module, Selection, Textbus } from '@textbus/core'\nimport { Subscription } from '@tanbo/stream'\nimport { Provider } from '@viewfly/core'\nimport { Doc as YDoc } from 'yjs'\n\nimport { CollabHistory, Collaborate, MessageBus, NonSubModelLoader, SubModelLoader, SyncConnector } from './base/_api'\n\nexport interface CollaborateConfig {\n createConnector(yDoc: YDoc): SyncConnector\n\n onlyLoad?: boolean\n}\n\nexport class CollaborateModule implements Module {\n private subscription = new Subscription()\n providers: Provider[] = [\n Collaborate,\n CollabHistory,\n {\n provide: History,\n useExisting: CollabHistory\n }, {\n provide: SyncConnector,\n useFactory: (collab: Collaborate) => {\n return this.config.createConnector(collab.yDoc)\n },\n deps: [Collaborate]\n }, {\n provide: SubModelLoader,\n useClass: NonSubModelLoader\n }\n ]\n\n private timer: any = null\n\n constructor(public config: CollaborateConfig) {\n }\n\n setup(textbus: Textbus): Promise<(() => void) | void> | (() => void) | void {\n const messageBus = textbus.get(MessageBus, null)\n const connector = textbus.get(SyncConnector)\n const collab = textbus.get(Collaborate)\n if (messageBus) {\n const selection = textbus.get(Selection)\n connector.setLocalStateField('message', messageBus.get(textbus))\n this.subscription.add(\n messageBus.onSync.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n selection.onChange.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n connector.onStateChange.subscribe((states) => {\n messageBus.consume(states, textbus)\n })\n )\n }\n\n return connector.onLoad.toPromise().then(() => {\n if (!this.config.onlyLoad) {\n return\n }\n const root = collab.yDoc.getMap('RootComponent')\n if (root.has('state')) {\n return\n }\n return new Promise(resolve => {\n const testing = () => {\n if (root.has('state')) {\n resolve()\n } else {\n this.timer = setTimeout(testing, 1000)\n }\n }\n this.timer = setTimeout(testing, 1000)\n })\n })\n }\n\n onDestroy(textbus: Textbus) {\n this.subscription.unsubscribe()\n textbus.get(Collaborate).destroy()\n textbus.get(History).destroy()\n textbus.get(SyncConnector).onDestroy()\n clearTimeout(this.timer)\n }\n}\n","import { History, Module, Selection, Textbus } from '@textbus/core'\nimport { Provider } from '@viewfly/core'\nimport { Subscription } from '@tanbo/stream'\n\nimport { Collaborate, SyncConnector, MultipleDocCollabHistory, SubModelLoader, MessageBus } from './base/_api'\nimport { CollaborateConfig } from './collaborate-module'\n\nexport interface MultipleDocCollaborateConfig extends CollaborateConfig {\n subModelLoader: SubModelLoader\n}\n\nexport class MultipleDocumentCollaborateModule implements Module {\n private subscription = new Subscription()\n providers: Provider[] = [\n Collaborate,\n MultipleDocCollabHistory,\n {\n provide: History,\n useExisting: MultipleDocCollabHistory\n }, {\n provide: SyncConnector,\n useFactory: (collab: Collaborate) => {\n return this.config.createConnector(collab.yDoc)\n },\n deps: [Collaborate]\n }, {\n provide: SubModelLoader,\n useFactory: () => {\n return this.config.subModelLoader\n }\n }\n ]\n\n private timer: any = null\n\n constructor(public config: MultipleDocCollaborateConfig) {\n }\n\n setup(textbus: Textbus): Promise<(() => void) | void> | (() => void) | void {\n const messageBus = textbus.get(MessageBus, null)\n const connector = textbus.get(SyncConnector)\n const collab = textbus.get(Collaborate)\n if (messageBus) {\n const selection = textbus.get(Selection)\n connector.setLocalStateField('message', messageBus.get(textbus))\n this.subscription.add(\n messageBus.onSync.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n selection.onChange.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n connector.onStateChange.subscribe((states) => {\n messageBus.consume(states, textbus)\n })\n )\n }\n return connector.onLoad.toPromise().then(() => {\n if (!this.config.onlyLoad) {\n return\n }\n const root = collab.yDoc.getMap('RootComponent')\n if (root.has('state')) {\n return\n }\n return new Promise(resolve => {\n const testing = () => {\n if (root.has('state')) {\n resolve()\n } else {\n this.timer = setTimeout(testing, 1000)\n }\n }\n this.timer = setTimeout(testing, 1000)\n })\n })\n }\n\n onDestroy(textbus: Textbus) {\n this.subscription.unsubscribe()\n textbus.get(Collaborate).destroy()\n textbus.get(History).destroy()\n textbus.get(SyncConnector).onDestroy()\n clearTimeout(this.timer)\n }\n}\n"],"names":["CustomUndoManagerConfig","collabHistoryErrorFn","makeError","CollabHistory","rootComponentRef","collaborate","scheduler","stackSize","undoManagerConfig","Subject","root","rootComponent","manager","UndoManager","arg","item","beforePosition","event","ev","index","position","p","last","i","__decorateClass","Injectable","__decorateParam","HISTORY_STACK_SIZE","Optional","collaborateErrorFn","SlotMap","key","value","Slot","v","Collaborate","registry","selection","subModelLoader","YDoc","yDoc","sharedComponent","localComponent","sharedSlot","localSlot","anchorPosition","createAbsolutePositionFromRelativePosition","focusPosition","focusSlot","anchorSlot","anchorOffset","focusOffset","anchorYText","createRelativePositionFromTypeIndex","focusYText","map","ChangeOrigin","filter","updates","update","updateRemoteActions","fn","state","YMap","syncRemote","tr","change","updateType","attribute","action","formats","remoteFormatsToLocal","length","component","sub","actions","offset","keys","delta","isEmpty","sharedMap","localMap","observe","sharedArray","localArray","YArray","YText","isAsyncSlot","AsyncSlot","isDestroyed","sharedMetadata","subDocument","content","sharedSlotState","sharedContent","type","schema","metadata","slot","loadedSubDocument","subContent","data","attrs","localModel","sharedModel","AsyncComponent","sharedState","yMap","componentName","instance","Component","logError","ref","sharedObject","localObject","subModel","record","changeList","formatter","MessageBus","MultipleDocCollabHistory","Subscription","yType","historyStackItem","len","undoManager","subModelLoaderErrorFn","SubModelLoader","NonSubModelLoader","SyncConnector","HocuspocusConnector","config","HocuspocusProvider","states","YWebsocketConnector","is","syncStates","id","url","roomName","WebsocketProvider","CollaborateModule","History","collab","textbus","messageBus","connector","Selection","resolve","testing","MultipleDocumentCollaborateModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/base/sub-model-loader.ts","../src/base/collaborate.ts","../src/base/collab-history.ts","../src/base/message-bus.ts","../src/base/multiple-doc-collab-history.ts","../src/base/sync-connector.ts","../src/connectors/hocuspocus-connector.ts","../src/connectors/y-websocket-connector.ts","../src/collaborate-module.ts","../src/multiple-document-collaborate-module.ts"],"sourcesContent":["import { Doc, Doc as YDoc } from 'yjs'\nimport { Injectable } from '@viewfly/core'\nimport { AsyncComponent, AsyncSlot, makeError } from '@textbus/core'\n\nconst subModelLoaderErrorFn = makeError('subModelLoaderError')\n\n/**\n * 子文档加载器\n */\nexport abstract class SubModelLoader {\n /**\n * 通过插槽获取已加载的文档\n * @param slot\n */\n abstract getLoadedModelBySlot(slot: AsyncSlot): YDoc | null\n\n /**\n * 通过组件获取已加载的文档\n * @param component\n */\n abstract getLoadedModelByComponent(component: AsyncComponent): YDoc | null\n\n /**\n * 当本地新增异步子插槽时调用\n * @param slot\n */\n abstract createSubModelBySlot(slot: AsyncSlot): Promise<YDoc>\n\n /**\n * 当本地新增异步子组件时调用\n * @param component\n */\n abstract createSubModelByComponent(component: AsyncComponent): Promise<YDoc>\n\n /**\n * 当远程异步子插槽同步到本地时调用\n * @param slot\n */\n abstract loadSubModelBySlot(slot: AsyncSlot): Promise<YDoc>\n\n /**\n * 当远程异步子组件同步到本地时调用\n * @param component\n */\n abstract loadSubModelByComponent(component: AsyncComponent): Promise<YDoc>\n}\n\n@Injectable()\nexport class NonSubModelLoader extends SubModelLoader {\n createSubModelBySlot(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async slot.')\n }\n\n createSubModelByComponent(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async component.')\n }\n\n loadSubModelByComponent(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async component.')\n }\n\n loadSubModelBySlot(): Promise<Doc> {\n throw subModelLoaderErrorFn('single document does not support async slot.')\n }\n\n getLoadedModelBySlot(): Doc {\n throw subModelLoaderErrorFn('single document does not support async slot.')\n }\n\n getLoadedModelByComponent(): Doc {\n throw subModelLoaderErrorFn('single document does not support async component.')\n }\n}\n","import { Injectable } from '@viewfly/core'\nimport { filter, map, Observable, Subject, Subscription } from '@tanbo/stream'\nimport {\n ChangeOrigin,\n Component,\n Registry,\n Formats,\n makeError,\n Scheduler,\n Selection,\n Slot,\n AsyncSlot,\n AsyncComponent,\n AbstractSelection,\n observe,\n ProxyModel\n} from '@textbus/core'\nimport {\n AbstractType,\n Array as YArray, createAbsolutePositionFromRelativePosition, createRelativePositionFromTypeIndex,\n Doc as YDoc,\n Map as YMap,\n RelativePosition,\n Text as YText,\n Transaction,\n UndoManager,\n YArrayEvent,\n YMapEvent,\n YTextEvent\n} from 'yjs'\n\nimport { SubModelLoader } from './sub-model-loader'\n\nexport interface RelativePositionRecord {\n doc: YDoc,\n position: RelativePosition\n}\n\nexport interface CursorPosition {\n anchor: RelativePositionRecord\n focus: RelativePositionRecord\n}\n\nexport interface CollaborateHistorySelectionPosition {\n before: CursorPosition | null\n after: CursorPosition | null\n}\n\nconst collaborateErrorFn = makeError('Collaborate')\n\nclass SlotMap {\n private slotAndYTextMap = new WeakMap<Slot, YText>()\n private yTextAndSlotMap = new WeakMap<YText, Slot>()\n\n set(key: Slot, value: YText): void\n set(key: YText, value: Slot): void\n set(key: any, value: any) {\n if (key instanceof Slot) {\n this.slotAndYTextMap.set(key, value)\n this.yTextAndSlotMap.set(value, key)\n } else {\n this.slotAndYTextMap.set(value, key)\n this.yTextAndSlotMap.set(key, value)\n }\n }\n\n get(key: Slot): YText | null\n get(key: YText): Slot | null\n get(key: any) {\n if (key instanceof Slot) {\n return this.slotAndYTextMap.get(key) || null\n }\n return this.yTextAndSlotMap.get(key) || null\n }\n\n delete(key: Slot | YText) {\n if (key instanceof Slot) {\n const v = this.slotAndYTextMap.get(key)\n this.slotAndYTextMap.delete(key)\n if (v) {\n this.yTextAndSlotMap.delete(v)\n }\n } else {\n const v = this.yTextAndSlotMap.get(key)\n this.yTextAndSlotMap.delete(key)\n if (v) {\n this.slotAndYTextMap.delete(v)\n }\n }\n }\n}\n\ninterface Update {\n record: boolean\n actions: Array<() => void>\n}\n\ninterface UpdateItem {\n record: boolean\n\n action(): void\n}\n\nexport interface SubModelLoaded {\n yType: AbstractType<any>\n yDoc: YDoc\n}\n\n@Injectable()\nexport class Collaborate {\n yDoc = new YDoc()\n slotMap = new SlotMap()\n onAddSubModel: Observable<SubModelLoaded>\n\n private subscriptions: Subscription[] = []\n private updateFromRemote = false\n private addSubModelEvent = new Subject<SubModelLoaded>()\n\n private updateRemoteActions = new WeakMap<YDoc, UpdateItem[]>()\n private noRecord = {}\n\n constructor(private scheduler: Scheduler,\n private registry: Registry,\n private selection: Selection,\n private subModelLoader: SubModelLoader) {\n this.onAddSubModel = this.addSubModelEvent.asObservable()\n }\n\n syncRootComponent(yDoc: YDoc, sharedComponent: YMap<any>, localComponent: Component<any>) {\n this.initSyncEvent(yDoc)\n this.syncComponent(yDoc, sharedComponent, localComponent)\n }\n\n syncRootSlot(yDoc: YDoc, sharedSlot: YText, localSlot: Slot) {\n if (sharedSlot.length) {\n localSlot.retain(0)\n localSlot.delete(localSlot.length)\n localSlot.cleanAttributes()\n localSlot.cleanFormats()\n this.initLocalSlotBySharedSlot(sharedSlot, localSlot)\n } else {\n yDoc.transact(() => {\n this.initSharedSlotByLocalSlot(sharedSlot, localSlot)\n })\n }\n this.initSyncEvent(yDoc)\n this.syncSlot(sharedSlot, localSlot)\n }\n\n getAbstractSelection(position: CursorPosition): AbstractSelection | null {\n const anchorPosition = createAbsolutePositionFromRelativePosition(position.anchor.position, position.anchor.doc)\n const focusPosition = createAbsolutePositionFromRelativePosition(position.focus.position, position.focus.doc)\n if (anchorPosition && focusPosition) {\n const focusSlot = this.slotMap.get(focusPosition.type as YText)\n const anchorSlot = this.slotMap.get(anchorPosition.type as YText)\n if (focusSlot && anchorSlot) {\n return {\n anchorSlot,\n anchorOffset: anchorPosition.index,\n focusSlot,\n focusOffset: focusPosition.index\n }\n }\n }\n return null\n }\n\n getRelativeCursorLocation(): CursorPosition | null {\n const { anchorSlot, anchorOffset, focusSlot, focusOffset } = this.selection\n if (anchorSlot) {\n const anchorYText = this.slotMap.get(anchorSlot)\n if (anchorYText) {\n const anchorPosition = createRelativePositionFromTypeIndex(anchorYText, anchorOffset!)\n if (focusSlot) {\n const focusYText = this.slotMap.get(focusSlot)\n if (focusYText) {\n const focusPosition = createRelativePositionFromTypeIndex(focusYText, focusOffset!)\n return {\n focus: {\n doc: focusYText.doc!,\n position: focusPosition\n },\n anchor: {\n doc: anchorYText.doc!,\n position: anchorPosition\n }\n }\n }\n }\n }\n }\n return null\n }\n\n restoreCursorPosition(position: CursorPosition | null) {\n if (!position) {\n this.selection.unSelect()\n return\n }\n const selection = this.getAbstractSelection(position)\n if (selection) {\n this.selection.setBaseAndExtent(\n selection.anchorSlot,\n selection.anchorOffset,\n selection.focusSlot,\n selection.focusOffset)\n }\n }\n\n private initSyncEvent(yDoc: YDoc) {\n this.subscriptions.push(\n this.scheduler.onDocChanged.pipe(\n map(item => {\n return item.filter(i => {\n return i.from !== ChangeOrigin.Remote\n })\n }),\n filter(item => {\n return item.length\n })\n ).subscribe(() => {\n const updates: Update[] = []\n\n let update: Update | null = null\n\n const updateRemoteActions = this.updateRemoteActions.get(yDoc) || []\n\n for (const item of updateRemoteActions) {\n if (!update) {\n update = {\n record: item.record,\n actions: []\n }\n updates.push(update)\n }\n if (update.record === item.record) {\n update.actions.push(item.action)\n } else {\n update = {\n record: item.record,\n actions: [item.action]\n }\n updates.push(update)\n }\n }\n\n this.updateRemoteActions.delete(yDoc)\n\n for (const item of updates) {\n yDoc.transact(() => {\n item.actions.forEach(fn => {\n fn()\n })\n }, item.record ? yDoc : this.noRecord)\n }\n })\n )\n }\n\n private syncComponent(yDoc: YDoc, sharedComponent: YMap<any>, localComponent: Component<any>) {\n let state = sharedComponent.get('state') as YMap<any>\n if (!state) {\n state = new YMap<any>()\n this.syncLocalMapToSharedMap(localComponent.state as ProxyModel<Record<string, any>>, state)\n yDoc.transact(() => {\n sharedComponent.set('state', state)\n })\n } else {\n Object.keys(localComponent.state).forEach(key => {\n Reflect.deleteProperty(localComponent.state, key)\n })\n this.syncSharedMapToLocalMap(state, localComponent.state as ProxyModel<Record<string, any>>)\n }\n }\n\n private syncSlot(sharedSlot: YText, localSlot: Slot) {\n const syncRemote = (ev: YTextEvent, tr: Transaction) => {\n this.runRemoteUpdate(tr, () => {\n localSlot.retain(0)\n ev.keysChanged.forEach(key => {\n const change = ev.keys.get(key)\n if (!change) {\n return\n }\n const updateType = change.action\n if (updateType === 'update' || updateType === 'add') {\n const attribute = this.registry.getAttribute(key)\n if (attribute) {\n localSlot.setAttribute(attribute, sharedSlot.getAttribute(key))\n }\n } else if (updateType === 'delete') {\n const attribute = this.registry.getAttribute(key)\n if (attribute) {\n localSlot.removeAttribute(attribute)\n }\n }\n })\n ev.delta.forEach(action => {\n if (Reflect.has(action, 'retain')) {\n if (action.attributes) {\n const formats = remoteFormatsToLocal(this.registry, action.attributes)\n if (formats.length) {\n localSlot.retain(action.retain!, formats)\n }\n }\n localSlot.retain(localSlot.index + action.retain!)\n } else if (action.insert) {\n const index = localSlot.index\n let length = 1\n if (typeof action.insert === 'string') {\n length = action.insert.length\n localSlot.insert(action.insert, remoteFormatsToLocal(this.registry, action.attributes))\n } else {\n const sharedComponent = action.insert as YMap<any>\n const component = this.createLocalComponentBySharedComponent(sharedComponent)\n localSlot.insert(component)\n }\n if (this.selection.isSelected && !(tr.origin instanceof UndoManager)) {\n if (localSlot === this.selection.anchorSlot && this.selection.anchorOffset! > index) {\n this.selection.setAnchor(localSlot, this.selection.anchorOffset! + length)\n }\n if (localSlot === this.selection.focusSlot && this.selection.focusOffset! > index) {\n this.selection.setFocus(localSlot, this.selection.focusOffset! + length)\n }\n }\n } else if (action.delete) {\n const index = localSlot.index\n localSlot.delete(action.delete)\n if (this.selection.isSelected && !(tr.origin instanceof UndoManager)) {\n if (localSlot === this.selection.anchorSlot && this.selection.anchorOffset! >= index) {\n this.selection.setAnchor(localSlot, this.selection.startOffset! - action.delete)\n }\n if (localSlot === this.selection.focusSlot && this.selection.focusOffset! >= index) {\n this.selection.setFocus(localSlot, this.selection.focusOffset! - action.delete)\n }\n }\n }\n })\n })\n }\n sharedSlot.observe(syncRemote)\n\n const sub = localSlot.onContentChange.subscribe(actions => {\n this.runLocalUpdate(sharedSlot.doc, true, () => {\n let offset = 0\n let length = 0\n for (const action of actions) {\n if (action.type === 'retain') {\n const formats = action.formats\n if (formats) {\n const keys = Object.keys(formats)\n let length = keys.length\n keys.forEach(key => {\n const formatter = this.registry.getFormatter(key)\n if (!formatter) {\n length--\n Reflect.deleteProperty(formats, key)\n }\n })\n if (length) {\n sharedSlot.format(offset, action.offset, formats)\n }\n } else {\n offset = action.offset\n }\n } else if (action.type === 'contentInsert') {\n const delta = sharedSlot.toDelta()\n const isEmpty = delta.length === 1 && delta[0].insert === Slot.emptyPlaceholder\n if (typeof action.content === 'string') {\n length = action.content.length\n sharedSlot.insert(offset, action.content, action.formats || {})\n } else {\n length = 1\n const sharedComponent = this.createSharedComponentByLocalComponent(action.ref as Component)\n sharedSlot.insertEmbed(offset, sharedComponent, action.formats || {})\n }\n\n if (isEmpty && offset === 0) {\n sharedSlot.delete(sharedSlot.length - 1, 1)\n }\n offset += length\n } else if (action.type === 'delete') {\n const delta = sharedSlot.toDelta()\n if (sharedSlot.length) {\n sharedSlot.delete(offset, action.count)\n }\n if (sharedSlot.length === 0) {\n sharedSlot.insert(0, '\\n', delta[0]?.attributes)\n }\n } else if (action.type === 'attrSet') {\n sharedSlot.setAttribute(action.name, action.value)\n } else if (action.type === 'attrDelete') {\n sharedSlot.removeAttribute(action.name)\n }\n }\n })\n })\n\n this.slotMap.set(localSlot, sharedSlot)\n\n localSlot.__changeMarker__.addDetachCallback(() => {\n this.slotMap.delete(localSlot)\n sharedSlot.unobserve(syncRemote)\n sub.unsubscribe()\n })\n }\n\n\n destroy() {\n this.subscriptions.forEach(i => i.unsubscribe())\n this.subscriptions = []\n }\n\n private syncSharedMapToLocalMap(sharedMap: YMap<any>, localMap: ProxyModel<Record<string, any>>) {\n sharedMap.forEach((value, key) => {\n localMap[key] = this.createLocalModelBySharedByModel(value)\n })\n this.syncObject(sharedMap, localMap)\n }\n\n private createLocalMapBySharedMap(sharedMap: YMap<any>): ProxyModel<Record<string, any>> {\n const localMap = observe({}) as ProxyModel<Record<string, any>>\n this.syncSharedMapToLocalMap(sharedMap, localMap)\n return localMap\n }\n\n private createLocalArrayBySharedArray(sharedArray: YArray<any>): ProxyModel<any[]> {\n const localArray = observe<any[]>([]) as ProxyModel<any[]>\n localArray.push(...sharedArray.map(item => this.createLocalModelBySharedByModel(item)))\n this.syncArray(sharedArray, localArray)\n return localArray\n }\n\n private syncLocalMapToSharedMap(localMap: ProxyModel<Record<string, any>>, sharedMap: YMap<any>) {\n Object.entries(localMap).forEach(([key, value]) => {\n sharedMap.set(key, this.createSharedModelByLocalModel(value))\n })\n this.syncObject(sharedMap, localMap)\n }\n\n private createSharedMapByLocalMap(localMap: ProxyModel<Record<string, any>>): YMap<any> {\n const sharedMap = new YMap<any>()\n this.syncLocalMapToSharedMap(localMap, sharedMap)\n return sharedMap\n }\n\n private createSharedArrayByLocalArray(localArray: ProxyModel<any[]>): YArray<any> {\n const sharedArray = new YArray<any>()\n localArray.forEach(value => {\n sharedArray.push([this.createSharedModelByLocalModel(value)])\n })\n this.syncArray(sharedArray, localArray)\n return sharedArray\n }\n\n private createSharedSlotByLocalSlot(localSlot: Slot): YText {\n const sharedSlot = new YText()\n const isAsyncSlot = localSlot instanceof AsyncSlot\n sharedSlot.setAttribute('schema', [...localSlot.schema])\n sharedSlot.setAttribute('type', isAsyncSlot ? 'async' : 'sync')\n\n if (isAsyncSlot) {\n let isDestroyed = false\n const sharedMetadata = this.createSharedMapByLocalMap(localSlot.metadata)\n sharedSlot.setAttribute('metadata', sharedMetadata)\n this.subModelLoader.createSubModelBySlot(localSlot).then(subDocument => {\n if (isDestroyed) {\n return\n }\n const content = subDocument.getText('content')\n const state = subDocument.getMap('state')\n this.syncLocalMapToSharedMap(localSlot.state, state)\n this.initSharedSlotByLocalSlot(content, localSlot)\n this.syncSlot(content, localSlot)\n this.addSubModelEvent.next({\n yDoc: subDocument,\n yType: content\n })\n this.initSyncEvent(subDocument)\n localSlot.loader.markAsLoaded()\n })\n localSlot.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n return sharedSlot\n }\n\n const sharedSlotState = new YMap()\n this.syncLocalMapToSharedMap(localSlot.state as ProxyModel<Record<string, any>>, sharedSlotState)\n sharedSlot.setAttribute('state', sharedSlotState)\n\n const sharedContent = new YText()\n this.initSharedSlotByLocalSlot(sharedContent, localSlot)\n sharedSlot.insertEmbed(0, sharedContent)\n this.syncSlot(sharedContent, localSlot)\n return sharedSlot\n }\n\n private initSharedSlotByLocalSlot(sharedContent: YText, localSlot: Slot) {\n let offset = 0\n localSlot.toDelta().forEach(i => {\n let formats: any = {}\n if (i.formats) {\n i.formats.forEach(item => {\n formats[item[0].name] = item[1]\n })\n } else {\n formats = null\n }\n if (typeof i.insert === 'string') {\n sharedContent.insert(offset, i.insert, formats)\n } else {\n const sharedComponent = this.createSharedComponentByLocalComponent(i.insert)\n sharedContent.insertEmbed(offset, sharedComponent, formats)\n }\n offset += i.insert.length\n })\n localSlot.getAttributes().forEach(item => {\n sharedContent.setAttribute(item[0].name, item[1])\n })\n }\n\n private createLocalSlotBySharedSlot(sharedSlot: YText): Slot {\n const type = sharedSlot.getAttribute('type')\n const schema = sharedSlot.getAttribute('schema')\n\n if (type === 'async') {\n const metadata = sharedSlot.getAttribute('metadata') as YMap<any>\n const slot = new AsyncSlot(schema || [], {}, {})\n this.syncSharedMapToLocalMap(metadata, slot.metadata as ProxyModel<Record<string, any>>)\n const loadedSubDocument = this.subModelLoader.getLoadedModelBySlot(slot)\n if (loadedSubDocument) {\n const subContent = loadedSubDocument.getText('content')\n const data = loadedSubDocument.getMap('state')\n this.syncSharedMapToLocalMap(data, slot.state as ProxyModel<Record<string, any>>)\n this.syncRootSlot(loadedSubDocument, subContent, slot)\n this.addSubModelEvent.next({\n yDoc: loadedSubDocument,\n yType: subContent\n })\n slot.loader.markAsLoaded()\n return slot\n }\n let isDestroyed = false\n slot.loader.onRequestLoad.toPromise().then(() => {\n return this.subModelLoader.loadSubModelBySlot(slot)\n }).then(subDocument => {\n if (isDestroyed) {\n return\n }\n const subContent = subDocument.getText('content')\n const state = subDocument.getMap('state')\n this.syncSharedMapToLocalMap(state, slot.state as ProxyModel<Record<string, any>>)\n this.syncRootSlot(subDocument, subContent, slot)\n this.addSubModelEvent.next({\n yDoc: subDocument,\n yType: subContent\n })\n slot.loader.markAsLoaded()\n })\n slot.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n return slot\n }\n\n const contentDelta = sharedSlot.toDelta()\n const content = contentDelta[0]?.insert\n\n if (!(content instanceof YText)) {\n throw collaborateErrorFn('shared slot content type is not `YText`.')\n }\n\n const localSlot = new Slot(schema || [], {})\n\n const sharedSlotState = sharedSlot.getAttribute('state')\n this.syncSharedMapToLocalMap(sharedSlotState, localSlot.state as ProxyModel<Record<string, any>>)\n\n this.initLocalSlotBySharedSlot(content, localSlot)\n\n this.syncSlot(content, localSlot)\n return localSlot\n }\n\n private initLocalSlotBySharedSlot(content: YText, localSlot: Slot) {\n const delta = content.toDelta()\n\n const attrs = content.getAttributes()\n Object.keys(attrs).forEach(key => {\n const attribute = this.registry.getAttribute(key)\n if (attribute) {\n localSlot.setAttribute(attribute, attrs[key])\n }\n })\n for (const action of delta) {\n if (action.insert) {\n if (typeof action.insert === 'string') {\n const formats = remoteFormatsToLocal(this.registry, action.attributes)\n localSlot.insert(action.insert, formats)\n } else {\n const sharedComponent = action.insert as YMap<any>\n const component = this.createLocalComponentBySharedComponent(sharedComponent)\n localSlot.insert(component, remoteFormatsToLocal(this.registry, action.attributes))\n }\n } else {\n throw collaborateErrorFn('unexpected delta action.')\n }\n }\n }\n\n private createSharedModelByLocalModel(localModel: any) {\n if (localModel instanceof Slot) {\n return this.createSharedSlotByLocalSlot(localModel)\n }\n if (Array.isArray(localModel)) {\n return this.createSharedArrayByLocalArray(localModel as ProxyModel<any[]>)\n }\n if (typeof localModel === 'object' && localModel !== null) {\n return this.createSharedMapByLocalMap(localModel)\n }\n return localModel\n }\n\n private createLocalModelBySharedByModel(sharedModel: any) {\n if (sharedModel instanceof YMap) {\n return this.createLocalMapBySharedMap(sharedModel)\n }\n if (sharedModel instanceof YArray) {\n return this.createLocalArrayBySharedArray(sharedModel)\n }\n if (sharedModel instanceof YText) {\n return this.createLocalSlotBySharedSlot(sharedModel)\n }\n return sharedModel\n }\n\n\n private createSharedComponentByLocalComponent(component: Component | AsyncComponent): YMap<any> {\n const sharedComponent = new YMap()\n sharedComponent.set('name', component.name)\n\n if (component instanceof AsyncComponent) {\n sharedComponent.set('type', 'async')\n const sharedMetadata = this.createSharedMapByLocalMap(component.metadata)\n sharedComponent.set('metadata', sharedMetadata)\n const state = component.state as ProxyModel<Record<string, any>>\n let isDestroyed = false\n state.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n this.subModelLoader.createSubModelByComponent(component).then(subDocument => {\n if (isDestroyed) {\n return\n }\n const state = subDocument.getMap('state')\n this.syncComponent(subDocument, state, component)\n this.addSubModelEvent.next({\n yType: state,\n yDoc: subDocument\n })\n this.initSyncEvent(subDocument)\n component.loader.markAsLoaded()\n })\n return sharedComponent\n }\n\n const sharedState = this.createSharedMapByLocalMap(component.state as ProxyModel<Record<string, any>>)\n sharedComponent.set('state', sharedState)\n sharedComponent.set('type', 'sync')\n return sharedComponent\n }\n\n private createLocalComponentBySharedComponent(yMap: YMap<any>): Component {\n const componentName = yMap.get('name') as string\n const type = yMap.get('type') as string\n\n let instance: Component<any> | null\n if (type === 'async') {\n instance = this.registry.createComponentByData(componentName, {}, {})\n if (instance instanceof AsyncComponent) {\n const sharedMetadata = yMap.get('metadata') as YMap<any>\n this.syncSharedMapToLocalMap(sharedMetadata, instance.metadata)\n const loadedSubDocument = this.subModelLoader.getLoadedModelByComponent(instance)\n if (loadedSubDocument) {\n const state = loadedSubDocument.getMap('state')\n this.syncComponent(loadedSubDocument, state, instance!)\n this.addSubModelEvent.next({\n yType: state,\n yDoc: loadedSubDocument\n })\n instance.loader.markAsLoaded()\n return instance\n }\n\n const state = instance.state as ProxyModel<Record<string, any>>\n let isDestroyed = false\n instance.loader.onRequestLoad.toPromise().then(() => {\n return this.subModelLoader.loadSubModelByComponent(instance as AsyncComponent)\n })\n .then(subDocument => {\n if (isDestroyed) {\n return\n }\n const state = subDocument.getMap('state')\n this.syncComponent(subDocument, state, instance!)\n this.addSubModelEvent.next({\n yType: state,\n yDoc: subDocument\n })\n ;(instance as AsyncComponent).loader.markAsLoaded()\n })\n state.__changeMarker__.addDetachCallback(() => {\n isDestroyed = true\n })\n } else if (instance instanceof Component) {\n throw collaborateErrorFn(`component name \\`${componentName}\\` is not a async component.`)\n }\n } else {\n const sharedState = yMap.get('state') as YMap<any>\n const state = this.createLocalMapBySharedMap(sharedState)\n instance = this.registry.createComponentByData(componentName, state)\n }\n if (instance) {\n return instance\n }\n\n throw collaborateErrorFn(`cannot find component factory \\`${componentName}\\`.`)\n }\n\n /**\n * 双向同步数组\n * @param sharedArray\n * @param localArray\n * @private\n */\n private syncArray(sharedArray: YArray<any>, localArray: ProxyModel<any[]>) {\n function logError(type: string) {\n console.error(collaborateErrorFn(`${type} error, length exceeded, path in ${localArray.__changeMarker__.getPaths().join('/')}`))\n }\n\n const sub = localArray.__changeMarker__.onSelfChange.subscribe((actions) => {\n this.runLocalUpdate(sharedArray.doc, !localArray.__changeMarker__.irrevocableUpdate, () => {\n let index = 0\n for (const action of actions) {\n switch (action.type) {\n case 'retain':\n index = action.offset\n break\n case 'insert': {\n const ref = action.ref\n if (!Array.isArray(ref)) {\n throw collaborateErrorFn('The insertion action must have a reference value.')\n }\n const data = ref.map(item => {\n return this.createSharedModelByLocalModel(item)\n })\n if (index <= sharedArray.length) {\n sharedArray.insert(index, data)\n } else {\n sharedArray.insert(sharedArray.length, data)\n logError('insert')\n }\n }\n break\n case 'delete':\n if (action.count <= 0) {\n break\n }\n if (index < sharedArray.length) {\n sharedArray.delete(index, action.count)\n } else {\n logError('delete')\n }\n break\n case 'setIndex':\n if (action.index < sharedArray.length) {\n sharedArray.delete(action.index, 1)\n sharedArray.insert(action.index, [this.createSharedModelByLocalModel(action.ref)])\n } else {\n sharedArray.insert(sharedArray.length, [this.createSharedModelByLocalModel(action.ref)])\n logError('setIndex')\n }\n break\n }\n }\n })\n })\n\n const syncRemote = (ev: YArrayEvent<any>, tr: Transaction) => {\n this.runRemoteUpdate(tr, () => {\n let index = 0\n ev.delta.forEach((action) => {\n if (Reflect.has(action, 'retain')) {\n index += action.retain as number\n } else if (action.insert) {\n const data = (action.insert as Array<any>).map((item) => {\n return this.createLocalModelBySharedByModel(item)\n })\n localArray.splice(index, 0, ...data)\n index += data.length\n } else if (action.delete) {\n localArray.splice(index, action.delete)\n }\n })\n })\n }\n\n sharedArray.observe(syncRemote)\n localArray.__changeMarker__.addDetachCallback(() => {\n sub.unsubscribe()\n sharedArray.unobserve(syncRemote)\n })\n }\n\n /**\n * 双向同步对象\n * @param sharedObject\n * @param localObject\n * @private\n */\n private syncObject(sharedObject: YMap<any>, localObject: ProxyModel<Record<string, any>>) {\n const syncRemote = (ev: YMapEvent<any>, tr: Transaction) => {\n this.runRemoteUpdate(tr, () => {\n ev.changes.keys.forEach((item, key) => {\n if (item.action === 'add' || item.action === 'update') {\n const value = sharedObject.get(key)\n localObject[key] = this.createLocalModelBySharedByModel(value)\n } else {\n Reflect.deleteProperty(localObject, key)\n }\n })\n })\n }\n\n sharedObject.observe(syncRemote)\n\n const sub = localObject.__changeMarker__.onSelfChange.subscribe((actions) => {\n this.runLocalUpdate(sharedObject.doc, !localObject.__changeMarker__.irrevocableUpdate, () => {\n for (const action of actions) {\n switch (action.type) {\n case 'propSet': {\n const subModel = this.createSharedModelByLocalModel(action.ref)\n sharedObject.set(action.key, subModel)\n if (sharedObject.size === 0) {\n // 奇怪的 bug,设置了子模型,但子模型会标记为 deleted,导致设置后无效\n console.error(collaborateErrorFn(`prop set error, key is ${action.key}`))\n }\n }\n break\n case 'propDelete':\n sharedObject.delete(action.key)\n break\n }\n }\n })\n })\n\n localObject.__changeMarker__.addDetachCallback(function () {\n sharedObject.unobserve(syncRemote)\n sub.unsubscribe()\n })\n }\n\n private runLocalUpdate(yDoc: YDoc | null, record: boolean, fn: () => void) {\n if (this.updateFromRemote || !yDoc) {\n return\n }\n let changeList = this.updateRemoteActions.get(yDoc)\n if (!changeList) {\n changeList = []\n this.updateRemoteActions.set(yDoc, changeList)\n }\n changeList.push({\n record,\n action: fn\n })\n }\n\n private runRemoteUpdate(tr: Transaction, fn: () => void) {\n if (tr.origin === tr.doc) {\n return\n }\n this.updateFromRemote = true\n if (tr.origin instanceof UndoManager) {\n this.scheduler.historyApplyTransact(fn)\n } else {\n this.scheduler.remoteUpdateTransact(fn)\n }\n this.updateFromRemote = false\n }\n}\n\nfunction remoteFormatsToLocal(registry: Registry, attrs?: any,) {\n const formats: Formats = []\n if (attrs) {\n Object.keys(attrs).forEach(key => {\n const formatter = registry.getFormatter(key)\n if (formatter) {\n formats.push([formatter, attrs[key]])\n }\n })\n }\n return formats\n}\n","import { Inject, Injectable, Optional } from '@viewfly/core'\nimport { History, HISTORY_STACK_SIZE, makeError, RootComponentRef, Scheduler } from '@textbus/core'\nimport { Observable, Subject, Subscription } from '@tanbo/stream'\nimport {\n Item,\n Transaction,\n UndoManager\n} from 'yjs'\n\nimport { Collaborate, CollaborateHistorySelectionPosition, CursorPosition } from './collaborate'\n\nexport abstract class CustomUndoManagerConfig {\n abstract captureTransaction?(arg0: Transaction): boolean\n\n abstract deleteFilter?(arg0: Item): boolean\n}\n\nconst collabHistoryErrorFn = makeError('CollabHistory')\n\n@Injectable()\nexport class CollabHistory implements History {\n onBack: Observable<void>\n onForward: Observable<void>\n onChange: Observable<void>\n onPush: Observable<void>\n\n get canBack() {\n return this.manager?.canUndo() || false\n }\n\n get canForward() {\n return this.manager?.canRedo() || false\n }\n\n private manager: UndoManager | null = null\n\n private historyItems: Array<CollaborateHistorySelectionPosition> = []\n private index = 0\n private subscriptions: Subscription[] = []\n\n private backEvent = new Subject<void>()\n private forwardEvent = new Subject<void>()\n private changeEvent = new Subject<void>()\n private pushEvent = new Subject<void>()\n\n constructor(private rootComponentRef: RootComponentRef,\n private collaborate: Collaborate,\n private scheduler: Scheduler,\n @Inject(HISTORY_STACK_SIZE) private stackSize: number,\n @Optional() private undoManagerConfig: CustomUndoManagerConfig) {\n this.onBack = this.backEvent.asObservable()\n this.onForward = this.forwardEvent.asObservable()\n this.onChange = this.changeEvent.asObservable()\n this.onPush = this.pushEvent.asObservable()\n\n }\n\n listen() {\n const root = this.collaborate.yDoc.getMap('RootComponent')\n const rootComponent = this.rootComponentRef.component!\n this.collaborate.syncRootComponent(this.collaborate.yDoc, root, rootComponent)\n\n const undoManagerConfig = this.undoManagerConfig || {}\n const manager = new UndoManager(root, {\n trackedOrigins: new Set<any>([this.collaborate.yDoc]),\n captureTransaction(arg) {\n if (undoManagerConfig.captureTransaction) {\n return undoManagerConfig.captureTransaction(arg)\n }\n return true\n },\n deleteFilter(item: Item) {\n if (undoManagerConfig.deleteFilter) {\n return undoManagerConfig.deleteFilter(item)\n }\n return true\n }\n })\n this.manager = manager\n\n let beforePosition: CursorPosition | null = null\n this.subscriptions.push(\n this.scheduler.onLocalChangeBefore.subscribe(() => {\n beforePosition = this.collaborate.getRelativeCursorLocation()\n }),\n this.collaborate.onAddSubModel.subscribe(() => {\n throw collabHistoryErrorFn('single document does not support submodels.')\n })\n )\n\n manager.on('stack-item-added', (event: any) => {\n if (event.type === 'undo') {\n if (event.origin === manager) {\n this.index++\n } else {\n this.historyItems.length = this.index\n this.historyItems.push({\n before: beforePosition,\n after: this.collaborate.getRelativeCursorLocation()\n })\n this.index++\n }\n } else {\n this.index--\n }\n if (manager.undoStack.length > this.stackSize) {\n this.historyItems.shift()\n manager.undoStack.shift()\n }\n if (event.origin === this.collaborate.yDoc) {\n this.pushEvent.next()\n }\n this.changeEvent.next()\n })\n manager.on('stack-item-popped', (ev: any) => {\n const index = ev.type === 'undo' ? this.index : this.index - 1\n const position = this.historyItems[index] || null\n const p = ev.type === 'undo' ? position?.before : position?.after\n this.collaborate.restoreCursorPosition(p)\n })\n }\n\n\n back() {\n if (this.canBack) {\n this.manager?.undo()\n this.backEvent.next()\n }\n }\n\n forward() {\n if (this.canForward) {\n this.manager?.redo()\n this.forwardEvent.next()\n }\n }\n\n clear() {\n const last = this.historyItems.pop()\n this.historyItems = last ? [last] : []\n this.index = last ? 1 : 0\n this.manager?.clear()\n this.changeEvent.next()\n }\n\n destroy() {\n this.index = 0\n this.historyItems = []\n this.subscriptions.forEach(i => i.unsubscribe())\n if (this.manager) {\n this.manager.destroy()\n this.manager.captureTransaction = () => true\n this.manager.deleteFilter = () => true\n this.manager.trackedOrigins = new Set([null])\n }\n\n this.manager = null\n }\n}\n","import { Observable, Subject } from '@tanbo/stream'\nimport { Textbus } from '@textbus/core'\n\nexport interface Message<T> {\n clientId: number\n message: T\n}\n\n/**\n * 协作消息总线,用于同步各终端消息\n */\nexport abstract class MessageBus<T> {\n onSync: Observable<void>\n protected syncEvent = new Subject<void>()\n\n constructor() {\n this.onSync = this.syncEvent.asObservable()\n }\n\n /**\n * 立即同步消息\n */\n sync() {\n this.syncEvent.next()\n }\n\n /**\n * 当需要同步协作消息是,Textbus 会自动调用,并把返回数据同步到其它终端\n */\n abstract get(textbus: Textbus): T\n\n /**\n * 当远程消息更新时,Textbus 会自动调用\n * @param message\n * @param textbus\n */\n abstract consume(message: Message<T>[], textbus: Textbus): void\n}\n","import { AbstractType, Item, UndoManager, Doc as YDoc } from 'yjs'\nimport { Inject, Injectable, Optional } from '@viewfly/core'\nimport { Observable, Subject, Subscription } from '@tanbo/stream'\nimport { History, HISTORY_STACK_SIZE, RootComponentRef, Scheduler } from '@textbus/core'\n\nimport { Collaborate, CollaborateHistorySelectionPosition, CursorPosition } from './collaborate'\nimport { CustomUndoManagerConfig } from './collab-history'\n\ninterface HistoryStackItem extends CollaborateHistorySelectionPosition {\n undoManagers: UndoManager[]\n}\n\n@Injectable()\nexport class MultipleDocCollabHistory implements History {\n onChange: Observable<void>\n onBack: Observable<void>\n onForward: Observable<void>\n onPush: Observable<void>\n\n get canBack() {\n return this.actionStack.length > 0 && this.index > 0\n }\n\n get canForward() {\n return this.actionStack.length > 0 && this.index < this.actionStack.length\n }\n\n isListen = false\n\n private changeEvent = new Subject<void>()\n private backEvent = new Subject<void>()\n private forwardEvent = new Subject<void>()\n private pushEvent = new Subject<void>()\n private actionStack: HistoryStackItem[] = []\n\n private index = 0\n\n private stackItem: HistoryStackItem | null = null\n private timer: any = null\n private beforePosition: CursorPosition | null = null\n\n private subscription = new Subscription()\n\n private subDocs = new Set<AbstractType<any>>()\n\n private listenerCaches = new Set<UndoManager>()\n\n constructor(private collaborate: Collaborate,\n private scheduler: Scheduler,\n private rootComponentRef: RootComponentRef,\n @Inject(HISTORY_STACK_SIZE) private stackSize: number,\n @Optional() private undoManagerConfig: CustomUndoManagerConfig) {\n this.onChange = this.changeEvent.asObservable()\n this.onBack = this.backEvent.asObservable()\n this.onForward = this.forwardEvent.asObservable()\n this.onPush = this.pushEvent.asObservable()\n }\n\n listen() {\n this.isListen = true\n const root = this.collaborate.yDoc.getMap('RootComponent')\n const rootComponent = this.rootComponentRef.component!\n this.collaborate.syncRootComponent(this.collaborate.yDoc, root, rootComponent)\n\n this.listenItem(root, this.collaborate.yDoc)\n\n this.subscription.add(\n this.collaborate.onAddSubModel.subscribe(({ yType, yDoc }) => {\n if (this.subDocs.has(yType)) {\n return\n }\n this.subDocs.add(yType)\n if (this.isListen) {\n this.listenItem(yType, yDoc)\n }\n }),\n this.scheduler.onLocalChangeBefore.subscribe(() => {\n this.beforePosition = this.collaborate.getRelativeCursorLocation()\n })\n )\n }\n\n forward() {\n if (!this.canForward) {\n return\n }\n clearTimeout(this.timer as any)\n const item = this.actionStack[this.index]\n if (item) {\n for (const i of item.undoManagers) {\n i.redo()\n }\n this.collaborate.restoreCursorPosition(item.after)\n }\n this.index++\n this.forwardEvent.next()\n this.changeEvent.next()\n }\n\n back() {\n if (!this.canBack) {\n return\n }\n clearTimeout(this.timer as any)\n let historyStackItem: HistoryStackItem\n if (this.stackItem) {\n historyStackItem = this.stackItem\n this.stackItem = null\n } else {\n this.index--\n historyStackItem = this.actionStack[this.index]\n }\n let len = historyStackItem.undoManagers.length\n while (len > 0) {\n len--\n historyStackItem.undoManagers[len].undo()\n }\n if (historyStackItem) {\n const beforePosition = historyStackItem.before\n this.collaborate.restoreCursorPosition(beforePosition)\n this.backEvent.next()\n this.changeEvent.next()\n }\n }\n\n clear() {\n this.actionStack = []\n this.stackItem = null\n this.index = 0\n this.beforePosition = null\n clearTimeout(this.timer as any)\n this.listenerCaches.forEach((undoManager) => {\n undoManager.clear()\n })\n this.changeEvent.next()\n }\n\n destroy() {\n this.clear()\n this.beforePosition = this.stackItem = null\n this.subscription.unsubscribe()\n this.listenerCaches.forEach((undoManager) => {\n undoManager.destroy()\n })\n this.subDocs.clear()\n this.listenerCaches.clear()\n }\n\n private listenItem(yType: AbstractType<any>, yDoc: YDoc) {\n const undoManagerConfig = this.undoManagerConfig || {}\n const undoManager = new UndoManager(yType, {\n trackedOrigins: new Set([yDoc]),\n captureTimeout: 0,\n captureTransaction(arg) {\n if (undoManagerConfig.captureTransaction) {\n return undoManagerConfig.captureTransaction(arg)\n }\n return true\n },\n deleteFilter(item: Item) {\n if (undoManagerConfig.deleteFilter) {\n return undoManagerConfig.deleteFilter(item)\n }\n return true\n }\n })\n\n undoManager.on('stack-item-added', (event: any) => {\n if (event.type === 'undo' && !(event.origin instanceof UndoManager)) {\n if (this.index != this.actionStack.length) {\n const redoStack = this.actionStack.slice(this.index)\n redoStack.forEach(item => {\n item.undoManagers.forEach(i => {\n i.clear(false, true)\n })\n })\n this.actionStack.length = this.index\n this.changeEvent.next()\n }\n if (this.stackItem === null) {\n this.stackItem = {\n before: this.beforePosition,\n after: null,\n undoManagers: []\n }\n this.timer = setTimeout(() => {\n if (this.actionStack.length >= this.stackSize) {\n this.actionStack.shift()\n } else {\n this.index++\n }\n // this.beforePosition = this.collaborate.getRelativeCursorLocation()\n this.stackItem!.after = this.beforePosition\n this.actionStack.push(this.stackItem!)\n this.stackItem = null\n this.pushEvent.next()\n this.changeEvent.next()\n }, 500)\n }\n\n this.stackItem.undoManagers.push(undoManager)\n }\n })\n\n this.listenerCaches.add(undoManager)\n }\n}\n","import { Observable, Subject } from '@tanbo/stream'\n\n/**\n * 协作通信通用接口\n */\nexport abstract class SyncConnector {\n /**\n * 当文档加载完成时触发的观察者\n */\n onLoad: Observable<void>\n /**\n * 当文档 awareness 状态变更时触发的观察者\n */\n onStateChange: Observable<any[]>\n\n protected loadEvent = new Subject<void>()\n protected stateChangeEvent = new Subject<any[]>()\n\n protected constructor() {\n this.onLoad = this.loadEvent.asObservable()\n this.onStateChange = this.stateChangeEvent.asObservable()\n }\n\n /**\n * 设置 awareness 状态\n * @param key 状态的 key\n * @param data 状态值\n */\n abstract setLocalStateField(key: string, data: Record<string, any>): void\n\n /**\n * 当文档销毁时调用\n */\n abstract onDestroy(): void\n}\n","import { HocuspocusProvider } from '@hocuspocus/provider'\nimport { HocuspocusProviderConfiguration } from '@hocuspocus/provider'\n\nimport { SyncConnector } from '../base/sync-connector'\nimport { Message } from '../base/message-bus'\n\nexport class HocuspocusConnector extends SyncConnector {\n provide: HocuspocusProvider\n\n constructor(config: HocuspocusProviderConfiguration) {\n super()\n this.provide = new HocuspocusProvider({\n ...config,\n onSynced: (data) => {\n config.onSynced?.(data)\n this.loadEvent.next()\n },\n onAwarenessUpdate: (data) => {\n config.onAwarenessUpdate?.(data)\n const states: Message<any>[] = data.states.map(state => {\n return {\n clientId: state.clientId,\n message: state.message as any\n }\n })\n this.stateChangeEvent.next(states)\n },\n })\n }\n\n setLocalStateField(key: string, data: Record<string, any>) {\n this.provide.setAwarenessField(key, data)\n }\n\n onDestroy() {\n this.provide.disconnect()\n this.provide.destroy()\n }\n}\n","import { Doc as YDoc } from 'yjs'\nimport { WebsocketProvider } from 'y-websocket'\n\nimport { SyncConnector } from '../base/sync-connector'\nimport { Message } from '../base/message-bus'\n\nexport class YWebsocketConnector extends SyncConnector {\n provide: WebsocketProvider\n\n private onSync = (is: boolean) => {\n if (is) {\n this.loadEvent.next()\n }\n }\n\n private onUpdate = () => {\n const syncStates: Message<any>[] = []\n this.provide.awareness.getStates().forEach((state, id) => {\n syncStates.push({\n clientId: id,\n message: state.message,\n })\n })\n this.stateChangeEvent.next(syncStates)\n }\n\n constructor(url: string, roomName: string, yDoc: YDoc) {\n super()\n this.onLoad = this.loadEvent.asObservable()\n this.onStateChange = this.stateChangeEvent.asObservable()\n this.provide = new WebsocketProvider(url, roomName, yDoc)\n\n this.provide.once('sync', this.onSync)\n this.provide.awareness.on('update', this.onUpdate)\n }\n\n setLocalStateField(key: string, data: Record<string, any>) {\n this.provide.awareness.setLocalStateField(key, data)\n }\n\n onDestroy() {\n this.provide.awareness.off('update', this.onUpdate)\n this.provide.disconnect()\n this.provide.destroy()\n }\n}\n","import { History, Module, Selection, Textbus } from '@textbus/core'\nimport { Subscription } from '@tanbo/stream'\nimport { Provider } from '@viewfly/core'\nimport { Doc as YDoc } from 'yjs'\n\nimport { CollabHistory, Collaborate, MessageBus, NonSubModelLoader, SubModelLoader, SyncConnector } from './base/_api'\n\nexport interface CollaborateConfig {\n createConnector(yDoc: YDoc): SyncConnector\n\n onlyLoad?: boolean\n}\n\nexport class CollaborateModule implements Module {\n private subscription = new Subscription()\n providers: Provider[] = [\n Collaborate,\n CollabHistory,\n {\n provide: History,\n useExisting: CollabHistory\n }, {\n provide: SyncConnector,\n useFactory: (collab: Collaborate) => {\n return this.config.createConnector(collab.yDoc)\n },\n deps: [Collaborate]\n }, {\n provide: SubModelLoader,\n useClass: NonSubModelLoader\n }\n ]\n\n private timer: any = null\n\n constructor(public config: CollaborateConfig) {\n }\n\n setup(textbus: Textbus): Promise<(() => void) | void> | (() => void) | void {\n const messageBus = textbus.get(MessageBus, null)\n const connector = textbus.get(SyncConnector)\n const collab = textbus.get(Collaborate)\n if (messageBus) {\n const selection = textbus.get(Selection)\n connector.setLocalStateField('message', messageBus.get(textbus))\n this.subscription.add(\n messageBus.onSync.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n selection.onChange.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n connector.onStateChange.subscribe((states) => {\n messageBus.consume(states, textbus)\n })\n )\n }\n\n return connector.onLoad.toPromise().then(() => {\n if (!this.config.onlyLoad) {\n return\n }\n const root = collab.yDoc.getMap('RootComponent')\n if (root.has('state')) {\n return\n }\n return new Promise(resolve => {\n const testing = () => {\n if (root.has('state')) {\n resolve()\n } else {\n this.timer = setTimeout(testing, 1000)\n }\n }\n this.timer = setTimeout(testing, 1000)\n })\n })\n }\n\n onDestroy(textbus: Textbus) {\n this.subscription.unsubscribe()\n textbus.get(Collaborate).destroy()\n textbus.get(History).destroy()\n textbus.get(SyncConnector).onDestroy()\n clearTimeout(this.timer)\n }\n}\n","import { History, Module, Selection, Textbus } from '@textbus/core'\nimport { Provider } from '@viewfly/core'\nimport { Subscription } from '@tanbo/stream'\n\nimport { Collaborate, SyncConnector, MultipleDocCollabHistory, SubModelLoader, MessageBus } from './base/_api'\nimport { CollaborateConfig } from './collaborate-module'\n\nexport interface MultipleDocCollaborateConfig extends CollaborateConfig {\n subModelLoader: SubModelLoader\n}\n\nexport class MultipleDocumentCollaborateModule implements Module {\n private subscription = new Subscription()\n providers: Provider[] = [\n Collaborate,\n MultipleDocCollabHistory,\n {\n provide: History,\n useExisting: MultipleDocCollabHistory\n }, {\n provide: SyncConnector,\n useFactory: (collab: Collaborate) => {\n return this.config.createConnector(collab.yDoc)\n },\n deps: [Collaborate]\n }, {\n provide: SubModelLoader,\n useFactory: () => {\n return this.config.subModelLoader\n }\n }\n ]\n\n private timer: any = null\n\n constructor(public config: MultipleDocCollaborateConfig) {\n }\n\n setup(textbus: Textbus): Promise<(() => void) | void> | (() => void) | void {\n const messageBus = textbus.get(MessageBus, null)\n const connector = textbus.get(SyncConnector)\n const collab = textbus.get(Collaborate)\n if (messageBus) {\n const selection = textbus.get(Selection)\n connector.setLocalStateField('message', messageBus.get(textbus))\n this.subscription.add(\n messageBus.onSync.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n selection.onChange.subscribe(() => {\n connector.setLocalStateField('message', messageBus.get(textbus))\n }),\n connector.onStateChange.subscribe((states) => {\n messageBus.consume(states, textbus)\n })\n )\n }\n return connector.onLoad.toPromise().then(() => {\n if (!this.config.onlyLoad) {\n return\n }\n const root = collab.yDoc.getMap('RootComponent')\n if (root.has('state')) {\n return\n }\n return new Promise(resolve => {\n const testing = () => {\n if (root.has('state')) {\n resolve()\n } else {\n this.timer = setTimeout(testing, 1000)\n }\n }\n this.timer = setTimeout(testing, 1000)\n })\n })\n }\n\n onDestroy(textbus: Textbus) {\n this.subscription.unsubscribe()\n textbus.get(Collaborate).destroy()\n textbus.get(History).destroy()\n textbus.get(SyncConnector).onDestroy()\n clearTimeout(this.timer)\n }\n}\n"],"names":["subModelLoaderErrorFn","makeError","SubModelLoader","NonSubModelLoader","_call_super","createSubModelBySlot","createSubModelByComponent","loadSubModelByComponent","loadSubModelBySlot","getLoadedModelBySlot","getLoadedModelByComponent","collaborateErrorFn","SlotMap","_define_property","slotAndYTextMap","WeakMap","yTextAndSlotMap","set","key","value","_instanceof","Slot","get","delete","v","Collaborate","scheduler","subModelLoader","yDoc","slotMap","onAddSubModel","subscriptions","updateFromRemote","addSubModelEvent","updateRemoteActions","noRecord","registry","selection","YDoc","Subject","asObservable","syncRootComponent","sharedComponent","localComponent","initSyncEvent","syncComponent","syncRootSlot","sharedSlot","localSlot","length","retain","cleanAttributes","cleanFormats","initLocalSlotBySharedSlot","transact","initSharedSlotByLocalSlot","syncSlot","getAbstractSelection","position","anchorPosition","createAbsolutePositionFromRelativePosition","anchor","doc","focusPosition","focus","focusSlot","type","anchorSlot","anchorOffset","index","focusOffset","getRelativeCursorLocation","anchorYText","createRelativePositionFromTypeIndex","focusYText","restoreCursorPosition","unSelect","setBaseAndExtent","push","onDocChanged","pipe","map","item","filter","i","from","ChangeOrigin","Remote","subscribe","updates","update","record","actions","action","forEach","fn","state","YMap","syncLocalMapToSharedMap","Object","keys","Reflect","deleteProperty","syncSharedMapToLocalMap","syncRemote","ev","tr","runRemoteUpdate","keysChanged","change","updateType","attribute","getAttribute","setAttribute","removeAttribute","delta","has","attributes","formats","remoteFormatsToLocal","insert","component","createLocalComponentBySharedComponent","isSelected","origin","UndoManager","setAnchor","setFocus","startOffset","observe","sub","onContentChange","runLocalUpdate","offset","formatter","getFormatter","format","toDelta","isEmpty","emptyPlaceholder","content","createSharedComponentByLocalComponent","ref","insertEmbed","count","name","__changeMarker__","addDetachCallback","unobserve","unsubscribe","destroy","sharedMap","localMap","createLocalModelBySharedByModel","syncObject","createLocalMapBySharedMap","createLocalArrayBySharedArray","sharedArray","localArray","syncArray","entries","createSharedModelByLocalModel","createSharedMapByLocalMap","createSharedArrayByLocalArray","YArray","createSharedSlotByLocalSlot","YText","isAsyncSlot","AsyncSlot","schema","isDestroyed","sharedMetadata","metadata","then","subDocument","getText","getMap","next","yType","loader","markAsLoaded","sharedSlotState","sharedContent","getAttributes","createLocalSlotBySharedSlot","contentDelta","slot","loadedSubDocument","subContent","data","onRequestLoad","toPromise","attrs","localModel","Array","isArray","_type_of","sharedModel","AsyncComponent","sharedState","yMap","componentName","instance","createComponentByData","Component","logError","console","error","getPaths","join","onSelfChange","irrevocableUpdate","splice","sharedObject","localObject","changes","subModel","size","changeList","historyApplyTransact","remoteUpdateTransact","CustomUndoManagerConfig","collabHistoryErrorFn","CollabHistory","collaborate","stackSize","onBack","onForward","onChange","onPush","manager","historyItems","backEvent","forwardEvent","changeEvent","pushEvent","rootComponentRef","undoManagerConfig","canBack","canUndo","canForward","canRedo","listen","root","rootComponent","trackedOrigins","Set","captureTransaction","arg","deleteFilter","beforePosition","onLocalChangeBefore","on","event","before","after","undoStack","shift","p","back","undo","forward","redo","clear","last","pop","MessageBus","onSync","syncEvent","sync","MultipleDocCollabHistory","isListen","actionStack","stackItem","timer","subscription","subDocs","listenerCaches","Subscription","listenItem","add","clearTimeout","undoManagers","historyStackItem","len","undoManager","captureTimeout","redoStack","slice","setTimeout","SyncConnector","onLoad","onStateChange","loadEvent","stateChangeEvent","HocuspocusConnector","config","provide","HocuspocusProvider","onSynced","onAwarenessUpdate","states","clientId","message","setLocalStateField","setAwarenessField","onDestroy","disconnect","YWebsocketConnector","url","roomName","is","onUpdate","syncStates","awareness","getStates","id","WebsocketProvider","once","off","CollaborateModule","providers","History","useExisting","useFactory","collab","createConnector","deps","useClass","setup","textbus","messageBus","connector","Selection","consume","onlyLoad","Promise","resolve","testing","MultipleDocumentCollaborateModule"],"mappings":"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"}
|