Root element count invariant & test (#6003)

This commit is contained in:
Gerard Rovira
2024-05-01 23:07:13 +01:00
committed by GitHub
parent 116c597704
commit d6cdef134f
3 changed files with 22 additions and 3 deletions

View File

@ -1319,8 +1319,10 @@ export function removeRootElementEvents(rootElement: HTMLElement): void {
// We only want to have a single global selectionchange event handler, shared
// between all editor instances.
rootElementsRegistered.set(doc, documentRootElementsCount - 1);
if (rootElementsRegistered.get(doc) === 0) {
const newCount = documentRootElementsCount - 1;
invariant(newCount >= 0, 'Root element count less than 0');
rootElementsRegistered.set(doc, newCount);
if (newCount === 0) {
doc.removeEventListener('selectionchange', onDocumentSelectionChange);
}

View File

@ -2215,4 +2215,20 @@ describe('LexicalEditor tests', () => {
expect(ParagraphNode.importDOM).toHaveBeenCalledTimes(1);
});
it('root element count is always positive', () => {
const newEditor1 = createTestEditor();
const newEditor2 = createTestEditor();
const container1 = document.createElement('div');
const container2 = document.createElement('div');
newEditor1.setRootElement(container1);
newEditor1.setRootElement(null);
newEditor1.setRootElement(container1);
newEditor2.setRootElement(container2);
newEditor1.setRootElement(null);
newEditor2.setRootElement(null);
});
});

View File

@ -162,5 +162,6 @@
"160": "Expected TableCellNode parent to be a TableRowNode",
"161": "Unexpected dirty selection to be null",
"162": "Root element not registered",
"163": "node is not a ListNode"
"163": "node is not a ListNode",
"164": "Root element count less than 0"
}