Compare commits
No commits in common. "main" and "1.0.1" have entirely different histories.
2 changed files with 8 additions and 11 deletions
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@digicomp/now-and-later",
|
"name": "@digicomp/now-and-later",
|
||||||
"version": "1.0.3",
|
"version": "1.0.1",
|
||||||
"description": "an easy API for DOM MutationObserver",
|
"description": "an easy API for DOM MutationObserver",
|
||||||
"main": "src/nowAndLater.js",
|
"main": "src/nowAndLater.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
@ -16,11 +16,7 @@ export default function nowAndLater(selector, callback)
|
||||||
const nodes = document.querySelectorAll(selector);
|
const nodes = document.querySelectorAll(selector);
|
||||||
const id = Date.now() + '_' + lateInits.length;
|
const id = Date.now() + '_' + lateInits.length;
|
||||||
const wrappedCallback = (node) => {
|
const wrappedCallback = (node) => {
|
||||||
if (node.dataset.nowAndLater === undefined) {
|
node.dataset['nowAndLater' + id] = '';
|
||||||
node.dataset.nowAndLater = id;
|
|
||||||
} else {
|
|
||||||
node.dataset.nowAndLater += ',' + id;
|
|
||||||
}
|
|
||||||
callback(node, selector);
|
callback(node, selector);
|
||||||
};
|
};
|
||||||
if (nodes.length > 0) {
|
if (nodes.length > 0) {
|
||||||
|
@ -39,15 +35,16 @@ const observer = new MutationObserver(function (mutationsList)
|
||||||
if (addedNode['querySelector'] === undefined) { // lets filter out text and comment nodes
|
if (addedNode['querySelector'] === undefined) { // lets filter out text and comment nodes
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const selector = lateInit.selector + `:not([data-now-and-later~="${lateInit.id}"])`;
|
const selector = lateInit.selector + ':not([data-now-and-later' + lateInit.id + '])';
|
||||||
// If the added node matches itself, it will not be found by querySelectorAll, so we have to check first
|
// If the added node matches itself, it will not be found by querySelectorAll, so we have to check first
|
||||||
if (addedNode.matches(selector)) {
|
if (addedNode.matches(selector)) {
|
||||||
lateInit.callback(addedNode);
|
lateInit.callback(addedNode);
|
||||||
}
|
}
|
||||||
const childNodes = addedNode.querySelectorAll(selector);
|
// NOTE: the added not selector prevents double calls
|
||||||
[...childNodes].forEach(node => {
|
const nodes = addedNode.querySelectorAll(selector);
|
||||||
lateInit.callback(node);
|
if (nodes.length > 0) {
|
||||||
});
|
[...nodes].forEach(node => lateInit.callback(node));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue