Feat:增加协同编辑节点操作同步前的生命周期函数配置信息
This commit is contained in:
parent
a72d2e6748
commit
f3fe2dbc7b
@ -279,5 +279,14 @@ export const defaultOpt = {
|
|||||||
// 是否仅搜索当前渲染的节点,被收起的节点不会被搜索到
|
// 是否仅搜索当前渲染的节点,被收起的节点不会被搜索到
|
||||||
isOnlySearchCurrentRenderNodes: false,
|
isOnlySearchCurrentRenderNodes: false,
|
||||||
// 协同编辑时,同一个节点不能同时被多人选中
|
// 协同编辑时,同一个节点不能同时被多人选中
|
||||||
onlyOneEnableActiveNodeOnCooperate: false
|
onlyOneEnableActiveNodeOnCooperate: false,
|
||||||
|
// 协同编辑时,节点操作即将更新到其他客户端前的生命周期函数
|
||||||
|
// 函数接收一个对象作为参数:
|
||||||
|
/*
|
||||||
|
{
|
||||||
|
type: createOrUpdate(创建节点或更新节点)、delete(删除节点)
|
||||||
|
data: 1.当type=createOrUpdate时,代表被创建或被更新的节点数据,即将同步到其他客户端,所以你可以修改该数据;2.当type=delete时,代表被删除的节点数据
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
beforeCooperateUpdate: null
|
||||||
}
|
}
|
||||||
|
|||||||
@ -131,6 +131,7 @@ class Cooperate {
|
|||||||
|
|
||||||
// 找出更新点
|
// 找出更新点
|
||||||
updateChanges(data) {
|
updateChanges(data) {
|
||||||
|
const { beforeCooperateUpdate } = this.mindMap.opt
|
||||||
const oldData = this.currentData
|
const oldData = this.currentData
|
||||||
this.currentData = data
|
this.currentData = data
|
||||||
this.ydoc.transact(() => {
|
this.ydoc.transact(() => {
|
||||||
@ -138,12 +139,24 @@ class Cooperate {
|
|||||||
Object.keys(data).forEach(uid => {
|
Object.keys(data).forEach(uid => {
|
||||||
// 新增的或已经存在的,如果数据发生了改变
|
// 新增的或已经存在的,如果数据发生了改变
|
||||||
if (!oldData[uid] || !isSameObject(oldData[uid], data[uid])) {
|
if (!oldData[uid] || !isSameObject(oldData[uid], data[uid])) {
|
||||||
|
if (beforeCooperateUpdate) {
|
||||||
|
beforeCooperateUpdate({
|
||||||
|
type: 'createOrUpdate',
|
||||||
|
data: data[uid]
|
||||||
|
})
|
||||||
|
}
|
||||||
this.ymap.set(uid, data[uid])
|
this.ymap.set(uid, data[uid])
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
// 找出删除的
|
// 找出删除的
|
||||||
Object.keys(oldData).forEach(uid => {
|
Object.keys(oldData).forEach(uid => {
|
||||||
if (!data[uid]) {
|
if (!data[uid]) {
|
||||||
|
if (beforeCooperateUpdate) {
|
||||||
|
beforeCooperateUpdate({
|
||||||
|
type: 'delete',
|
||||||
|
data: oldData[uid]
|
||||||
|
})
|
||||||
|
}
|
||||||
this.ymap.delete(uid)
|
this.ymap.delete(uid)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user