mirror of
https://github.com/ianstormtaylor/slate.git
synced 2025-08-30 10:29:48 +02:00
Rewrite getDescendant to be recursively memoized
This commit is contained in:
@@ -434,8 +434,25 @@ const Node = {
|
|||||||
|
|
||||||
getDescendant(key) {
|
getDescendant(key) {
|
||||||
key = Normalize.key(key)
|
key = Normalize.key(key)
|
||||||
|
return this._getDescendant(key)
|
||||||
|
},
|
||||||
|
|
||||||
return this.findDescendantDeep(node => node.key == key)
|
// This one is memoized
|
||||||
|
_getDescendant(key) {
|
||||||
|
let descendantFound = null
|
||||||
|
|
||||||
|
const found = this.nodes.find(node => {
|
||||||
|
if (node.key === key) {
|
||||||
|
return node
|
||||||
|
} else if (node.kind !== 'text') {
|
||||||
|
descendantFound = node._getDescendant(key)
|
||||||
|
return descendantFound
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
return descendantFound || found
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1316,7 +1333,7 @@ memoize(Node, [
|
|||||||
'getComponent',
|
'getComponent',
|
||||||
'getDecorators',
|
'getDecorators',
|
||||||
'getDepth',
|
'getDepth',
|
||||||
'getDescendant',
|
'_getDescendant',
|
||||||
'getDescendantAtPath',
|
'getDescendantAtPath',
|
||||||
'getDescendantDecorators',
|
'getDescendantDecorators',
|
||||||
'getFirstText',
|
'getFirstText',
|
||||||
|
Reference in New Issue
Block a user