@atlaskit/editor-plugin-show-diff
Version:
ShowDiff plugin for @atlaskit/editor-core
23 lines (22 loc) • 874 B
JavaScript
/**
* Returns true if both nodes have the same tree structure (type and child count at every level).
*/
function isBlockStructureEqual(node1, node2) {
if (node1.type !== node2.type || node1.childCount !== node2.childCount) {
return false;
}
for (var i = 0; i < node1.childCount; i++) {
if (!isBlockStructureEqual(node1.child(i), node2.child(i))) {
return false;
}
}
return true;
}
/**
* Looser equality for "safe diff" cases: same full text content and same block structure
* (e.g. text moved across text-node boundaries). Used when strict areNodesEqualIgnoreAttrs fails.
* This is safe because we ensure decorations get applied to valid positions.
*/
export function areDocsEqualByBlockStructureAndText(doc1, doc2) {
return doc1.textContent === doc2.textContent && doc1.nodeSize === doc2.nodeSize && isBlockStructureEqual(doc1, doc2);
}