mirror of
https://github.com/cudr/slate-collaborative.git
synced 2026-03-02 03:40:18 +00:00
initial commit
This commit is contained in:
9
packages/bridge/src/utils/index.ts
Normal file
9
packages/bridge/src/utils/index.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import toSync from './toSync'
|
||||
|
||||
export const toJS = node => JSON.parse(JSON.stringify(node))
|
||||
|
||||
export const cloneNode = node => toSync(toJS(node))
|
||||
|
||||
const toSlatePath = path => (path ? path.filter(d => Number.isInteger(d)) : [])
|
||||
|
||||
export { toSync, toSlatePath }
|
||||
33
packages/bridge/src/utils/toSync.ts
Normal file
33
packages/bridge/src/utils/toSync.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import * as Automerge from 'automerge'
|
||||
|
||||
const toSync = (node: any): any => {
|
||||
if (!node) {
|
||||
return
|
||||
}
|
||||
|
||||
if (node.hasOwnProperty('text')) {
|
||||
return {
|
||||
...node,
|
||||
text: new Automerge.Text(node.text)
|
||||
}
|
||||
} else if (node.nodes) {
|
||||
return {
|
||||
...node,
|
||||
nodes: node.nodes.map(toSync)
|
||||
}
|
||||
} else if (node.leaves) {
|
||||
return {
|
||||
...node,
|
||||
leaves: node.leaves.map(toSync)
|
||||
}
|
||||
} else if (node.document) {
|
||||
return {
|
||||
...node,
|
||||
document: toSync(node.document)
|
||||
}
|
||||
}
|
||||
|
||||
return node
|
||||
}
|
||||
|
||||
export default toSync
|
||||
Reference in New Issue
Block a user