function areNodesValid()

in packages/roosterjs-editor-dom/lib/region/getRegionsFromRange.ts [214:233]


function areNodesValid(root: Node, nodeBefore: Node, nodeAfter: Node, skipTags: string[]) {
    if (!root) {
        return false;
    } else {
        const firstNodeOfRegion = nodeBefore && getNextLeafSibling(root, nodeBefore, skipTags);
        const lastNodeOfRegion = nodeAfter && getPreviousLeafSibling(root, nodeAfter, skipTags);
        const firstNodeValid =
            !nodeBefore || (contains(root, nodeBefore) && contains(root, firstNodeOfRegion));
        const lastNodeValid =
            !nodeAfter || (contains(root, nodeAfter) && contains(root, lastNodeOfRegion));
        const bothValid =
            !nodeBefore ||
            !nodeAfter ||
            (!contains(nodeBefore, nodeAfter, true /*treatSameAsContain*/) &&
                !contains(nodeBefore, lastNodeOfRegion, true /*treatSameAsContain*/) &&
                !contains(nodeAfter, nodeBefore, true /*treatSameAsContain*/) &&
                !contains(nodeAfter, firstNodeOfRegion, true /*treatSameAsContain*/));
        return firstNodeValid && lastNodeValid && bothValid;
    }
}