[FIX] web_editor: prevent wrong DOM operations when editable not in DOM

`getDeepRange` fetched a range on potentially the wrong document and
`getTraversedNodes` created a node iterator on potentially the wrong
document, when the editable was not in the DOM.

Part-of: odoo/odoo#92200
This commit is contained in:
Antoine Guenet
2022-08-26 17:16:30 +02:00
parent 49de251a7b
commit 2b7b279218
@@ -670,8 +670,8 @@ export function getSelectedNodes(editable) {
* @returns {Range}
*/
export function getDeepRange(editable, { range, sel, splitText, select, correctTripleClick } = {}) {
sel = sel || editable.ownerDocument.getSelection();
range = range ? range.cloneRange() : sel.rangeCount && sel.getRangeAt(0).cloneRange();
sel = sel || editable.parentElement && editable.ownerDocument.getSelection();
range = range ? range.cloneRange() : sel && sel.rangeCount && sel.getRangeAt(0).cloneRange();
if (!range) return;
let start = range.startContainer;
let startOffset = range.startOffset;