UNPKG

@atlaskit/editor-plugin-metrics

Version:

Metrics plugin for @atlaskit/editor-core

28 lines 882 B
function countNodesByType(fragment) { const counts = {}; fragment.forEach(node => { counts[node.type.name] = (counts[node.type.name] || 0) + 1; }); return counts; } export const getNodeChanges = ({ currentContent, pluginState }) => { if (pluginState !== null && pluginState !== void 0 && pluginState.initialContent) { const initialCounts = countNodesByType(pluginState.initialContent); const currentCounts = countNodesByType(currentContent); const netChanges = Object.keys({ ...initialCounts, ...currentCounts }).filter(value => !['paragraph', 'heading'].includes(value)).reduce((changes, nodeType) => { const change = (currentCounts[nodeType] || 0) - (initialCounts[nodeType] || 0); if (change !== 0) { changes[nodeType] = change; } return changes; }, {}); return netChanges; } return {}; };