@atlaskit/editor-common
Version:
A package that contains common classes and components for editor and renderer
27 lines (26 loc) • 784 B
JavaScript
export const findNodePosByLocalIds = (state, ids, option = {}) => {
var _state$doc$attrs;
if (ids.length === 0) {
return [];
}
const nodes = [];
const localIdSet = new Set(ids);
if (option.includeDocNode && localIdSet.has((_state$doc$attrs = state.doc.attrs) === null || _state$doc$attrs === void 0 ? void 0 : _state$doc$attrs.localId)) {
nodes.push({
node: state.doc,
pos: 0
});
}
state.doc.descendants((node, pos) => {
var _node$attrs;
if (localIdSet.has((_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs.localId)) {
nodes.push({
node,
pos
});
}
// stop traversing once we found all the nodes
return localIdSet.size !== nodes.length;
});
return nodes;
};