feat(NodeGenerator): better search UX

This commit is contained in:
EnixCoda 2018-11-26 10:37:54 +08:00
parent 2fe27057fe
commit 818b720239
No known key found for this signature in database
GPG key ID: 6825847C88AA329A

View file

@ -27,20 +27,30 @@ function getFilterFunc(keyRegex) {
}
}
function filterDuplications(arr) {
return Array.from(new Set(arr))
}
function search(treeNodes, searchKey) {
if (!searchKey) return treeNodes
/**
* if searchKey is 'abcd'
* then keyRegex will be /a.*?b.*?c.*?d/i
* then keyRegex will be /abcd/i and /a.*?b.*?c.*?d/i
*/
const keyRegex = new RegExp(
searchKey
.replace(/\//, '')
.split('')
.join('.*?'),
'i'
const keyRegexes = [
new RegExp(searchKey, 'i'),
new RegExp(
searchKey
.replace(/\//, '')
.split('')
.join('.*?'),
'i'
),
]
const searchResults = [].concat(
...keyRegexes.map(keyRegex => treeNodes.filter(getFilterFunc(keyRegex)))
)
return treeNodes.filter(getFilterFunc(keyRegex))
return filterDuplications(searchResults)
}
function debounce(func, delay) {