@atlaskit/editor-common
Version:
A package that contains common classes and components for editor and renderer
31 lines • 1.69 kB
JavaScript
export function countNodes(state) {
var _nodeTypes$extension, _nodeTypes$inlineExte, _nodeTypes$bodiedExte, _nodeTypes$multiBodie;
var nodeCount = {};
var extensionNodeCount = {};
var nodeTypes = state.schema.nodes;
var extensionNodeTypes = [(_nodeTypes$extension = nodeTypes.extension) === null || _nodeTypes$extension === void 0 ? void 0 : _nodeTypes$extension.name, (_nodeTypes$inlineExte = nodeTypes.inlineExtension) === null || _nodeTypes$inlineExte === void 0 ? void 0 : _nodeTypes$inlineExte.name, (_nodeTypes$bodiedExte = nodeTypes.bodiedExtension) === null || _nodeTypes$bodiedExte === void 0 ? void 0 : _nodeTypes$bodiedExte.name, (_nodeTypes$multiBodie = nodeTypes.multiBodiedExtension) === null || _nodeTypes$multiBodie === void 0 ? void 0 : _nodeTypes$multiBodie.name];
state.doc.descendants(function (node) {
var _node$attrs;
var nodeName = node.type.name;
if (nodeName in nodeCount) {
nodeCount[nodeName]++;
} else {
nodeCount[nodeName] = 1;
}
var extensionNodeName = nodeName;
if (extensionNodeTypes.includes(extensionNodeName) && (_node$attrs = node.attrs) !== null && _node$attrs !== void 0 && _node$attrs.extensionType) {
var _node$attrs2;
extensionNodeName = "".concat(node.attrs.extensionType, " - ").concat((_node$attrs2 = node.attrs) === null || _node$attrs2 === void 0 ? void 0 : _node$attrs2.extensionKey);
if (extensionNodeName in extensionNodeCount) {
extensionNodeCount[extensionNodeName]++;
} else {
extensionNodeCount[extensionNodeName] = 1;
}
}
return true;
});
return {
nodeCount: nodeCount,
extensionNodeCount: extensionNodeCount
};
}