UNPKG

@atlaskit/editor-core

Version:

A package contains Atlassian editor core functionality

32 lines (31 loc) 1.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getNodesCountWithExtensionKeys = getNodesCountWithExtensionKeys; /** * Counts node types and extension keys in a single traversal. * We exclude the end-of-doc token by iterating to nodeSize - 2, * which matches the typical ProseMirror pattern for traversing all child nodes. */ function getNodesCountWithExtensionKeys(node) { var nodes = {}; var extensionKeys = {}; var extensionNodeNames = ['extension', 'bodiedExtension', 'inlineExtension', 'multiBodiedExtension']; node.nodesBetween(0, node.nodeSize - 2, function (currentNode) { var _currentNode$attrs; nodes[currentNode.type.name] = (nodes[currentNode.type.name] || 0) + 1; if (!extensionNodeNames.includes(currentNode.type.name)) { return; } var extensionKey = (_currentNode$attrs = currentNode.attrs) === null || _currentNode$attrs === void 0 ? void 0 : _currentNode$attrs.extensionKey; if (!extensionKey) { return; } extensionKeys[extensionKey] = (extensionKeys[extensionKey] || 0) + 1; }); return { nodes: nodes, extensionKeys: extensionKeys }; }