mirror of
https://github.com/codex-team/editor.js
synced 2024-05-18 22:36:47 +02:00
b7b00fd060
* block onchange stash * improve block filtration * update tool root * chore(block): remove willSelect und willUnselect * onchange events batching * get rid of CustomEvent extension, create custom event map instead * improve types of EventsDispatcher * fix tests * custom sinon + chai matchers * improve tests, add mutex for fake cursor * add test for fake-cursor mutex * test for batch filtering * fix caret setting by enter press at the end of the block * test for detectToolRootChange * remove resolved todos * changelog added * fix tests * Update CHANGELOG.md * rename FakeCursorAboutToBeSet -> FakeCursorAboutToBeToggled * update didMutated statements * move inputs cache clearing to a separate method * rm Record inheritance from Event maps * add type alisases * rename isElementContainsFakeCursor -> isFakeCursorInsideContainer * improve code style
27 lines
906 B
TypeScript
27 lines
906 B
TypeScript
/**
|
|
* Check if passed mutation belongs to a passed element
|
|
*
|
|
* @param mutationRecord - mutation to check
|
|
* @param element - element that is expected to contain mutation
|
|
*/
|
|
export function isMutationBelongsToElement(mutationRecord: MutationRecord, element: Element): boolean {
|
|
const { type, target, addedNodes, removedNodes } = mutationRecord;
|
|
|
|
/**
|
|
* Check typing and attributes changes
|
|
*/
|
|
if (['characterData', 'attributes'].includes(type)) {
|
|
const targetElement = target.nodeType === Node.TEXT_NODE ? target.parentNode : target;
|
|
|
|
return element.contains(targetElement);
|
|
}
|
|
|
|
/**
|
|
* Check new/removed nodes
|
|
*/
|
|
const addedNodesBelongsToBlock = Array.from(addedNodes).some(node => element.contains(node));
|
|
const removedNodesBelongsToBlock = Array.from(removedNodes).some(node => element.contains(node));
|
|
|
|
return addedNodesBelongsToBlock || removedNodesBelongsToBlock;
|
|
}
|