tiptap/packages/core/src/helpers/findChildrenInRange.ts

32 lines
758 B
TypeScript
Raw Normal View History

2021-05-17 17:29:41 +08:00
import { Node as ProseMirrorNode } from 'prosemirror-model'
import { Predicate, Range, NodeWithPos } from '../types'
/**
* Same as `findChildren` but searches only within a `range`.
*/
export default function findChildrenInRange(node: ProseMirrorNode, range: Range, predicate: Predicate): NodeWithPos[] {
const nodesWithPos: NodeWithPos[] = []
2021-05-18 03:00:22 +08:00
// if (range.from === range.to) {
// const nodeAt = node.nodeAt(range.from)
// if (nodeAt) {
// nodesWithPos.push({
// node: nodeAt,
// pos: range.from,
// })
// }
// }
2021-05-17 17:29:41 +08:00
node.nodesBetween(range.from, range.to, (child, pos) => {
if (predicate(child)) {
nodesWithPos.push({
node: child,
pos,
})
}
})
return nodesWithPos
}