qsa-observer
Advanced tools
Comparing version
@@ -10,4 +10,4 @@ 'use strict'; | ||
for (let i = 0, {length} = records; i < length; i++) { | ||
loop(filter.call(records[i].addedNodes, elements), true, query, new Set); | ||
loop(filter.call(records[i].removedNodes, elements), false, query, new Set); | ||
loop(filter.call(records[i].addedNodes, elements), true, query); | ||
loop(filter.call(records[i].removedNodes, elements), false, query); | ||
} | ||
@@ -19,3 +19,3 @@ } | ||
}; | ||
const loop = (elements, connected, query, set) => { | ||
const loop = (elements, connected, query, set = new Set) => { | ||
for (let element, i = 0, {length} = elements; i < length; i++) { | ||
@@ -38,13 +38,11 @@ if (!set.has(element = elements[i])) { | ||
const parse = (elements, connected = true) => { | ||
loop(elements, connected, options.query, new Set); | ||
loop(elements, connected, options.query); | ||
}; | ||
const observer = new MutationObserver(callback); | ||
const root = options.root || document; | ||
const {query} = options; | ||
observer.observe(root, {childList: true, subtree: true}); | ||
try { return {flush, observer, parse}; } | ||
finally { | ||
const {query} = options; | ||
if (query.length) | ||
parse(root.querySelectorAll(query)); | ||
} | ||
if (query.length) | ||
parse(root.querySelectorAll(query)); | ||
return {flush, observer, parse}; | ||
}; |
@@ -1,1 +0,1 @@ | ||
self.qsaObserver=function(e){"use strict";const t=e=>"querySelectorAll"in e,{filter:r}=[];return e.default=e=>{const l=l=>{const{query:o}=e;if(o.length)for(let e=0,{length:n}=l;e<n;e++)s(r.call(l[e].addedNodes,t),!0,o,new Set),s(r.call(l[e].removedNodes,t),!1,o,new Set)},o=()=>{l(a.takeRecords())},s=(t,r,l,o)=>{for(let c,a=0,{length:u}=t;a<u;a++)if(!o.has(c=t[a])){o.add(c);for(let t=n(c),o=0,{length:s}=l;o<s;o++)t.call(c,l[o])&&e.handle(c,r,l[o],o);s(c.querySelectorAll(l),r,l,o)}},n=e=>e.matches||e.webkitMatchesSelector||e.msMatchesSelector,c=(t,r=!0)=>{s(t,r,e.query,new Set)},a=new MutationObserver(l),u=e.root||document;a.observe(u,{childList:!0,subtree:!0});try{return{flush:o,observer:a,parse:c}}finally{const{query:t}=e;t.length&&c(u.querySelectorAll(t))}},e}({}).default; | ||
self.qsaObserver=function(e){"use strict";const t=e=>"querySelectorAll"in e,{filter:r}=[];return e.default=e=>{const l=l=>{const{query:s}=e;if(s.length)for(let e=0,{length:c}=l;e<c;e++)o(r.call(l[e].addedNodes,t),!0,s),o(r.call(l[e].removedNodes,t),!1,s)},o=(t,r,l,c=new Set)=>{for(let n,a=0,{length:u}=t;a<u;a++)if(!c.has(n=t[a])){c.add(n);for(let t=s(n),o=0,{length:c}=l;o<c;o++)t.call(n,l[o])&&e.handle(n,r,l[o],o);o(n.querySelectorAll(l),r,l,c)}},s=e=>e.matches||e.webkitMatchesSelector||e.msMatchesSelector,c=(t,r=!0)=>{o(t,r,e.query)},n=new MutationObserver(l),a=e.root||document,{query:u}=e;return n.observe(a,{childList:!0,subtree:!0}),u.length&&c(a.querySelectorAll(u)),{flush:()=>{l(n.takeRecords())},observer:n,parse:c}},e}({}).default; |
@@ -9,4 +9,4 @@ const elements = element => 'querySelectorAll' in element; | ||
for (let i = 0, {length} = records; i < length; i++) { | ||
loop(filter.call(records[i].addedNodes, elements), true, query, new Set); | ||
loop(filter.call(records[i].removedNodes, elements), false, query, new Set); | ||
loop(filter.call(records[i].addedNodes, elements), true, query); | ||
loop(filter.call(records[i].removedNodes, elements), false, query); | ||
} | ||
@@ -18,3 +18,3 @@ } | ||
}; | ||
const loop = (elements, connected, query, set) => { | ||
const loop = (elements, connected, query, set = new Set) => { | ||
for (let element, i = 0, {length} = elements; i < length; i++) { | ||
@@ -37,13 +37,11 @@ if (!set.has(element = elements[i])) { | ||
const parse = (elements, connected = true) => { | ||
loop(elements, connected, options.query, new Set); | ||
loop(elements, connected, options.query); | ||
}; | ||
const observer = new MutationObserver(callback); | ||
const root = options.root || document; | ||
const {query} = options; | ||
observer.observe(root, {childList: true, subtree: true}); | ||
try { return {flush, observer, parse}; } | ||
finally { | ||
const {query} = options; | ||
if (query.length) | ||
parse(root.querySelectorAll(query)); | ||
} | ||
if (query.length) | ||
parse(root.querySelectorAll(query)); | ||
return {flush, observer, parse}; | ||
}; |
28
index.js
@@ -15,4 +15,4 @@ self.qsaObserver = (function (exports) { | ||
for (var i = 0, length = records.length; i < length; i++) { | ||
loop(filter.call(records[i].addedNodes, elements), true, query, new Set()); | ||
loop(filter.call(records[i].removedNodes, elements), false, query, new Set()); | ||
loop(filter.call(records[i].addedNodes, elements), true, query); | ||
loop(filter.call(records[i].removedNodes, elements), false, query); | ||
} | ||
@@ -26,3 +26,5 @@ } | ||
var loop = function loop(elements, connected, query, set) { | ||
var loop = function loop(elements, connected, query) { | ||
var set = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new Set(); | ||
for (var element, i = 0, length = elements.length; i < length; i++) { | ||
@@ -47,3 +49,3 @@ if (!set.has(element = elements[i])) { | ||
var connected = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; | ||
loop(elements, connected, options.query, new Set()); | ||
loop(elements, connected, options.query); | ||
}; | ||
@@ -53,2 +55,3 @@ | ||
var root = options.root || document; | ||
var query = options.query; | ||
observer.observe(root, { | ||
@@ -58,13 +61,8 @@ childList: true, | ||
}); | ||
try { | ||
return { | ||
flush: flush, | ||
observer: observer, | ||
parse: parse | ||
}; | ||
} finally { | ||
var query = options.query; | ||
if (query.length) parse(root.querySelectorAll(query)); | ||
} | ||
if (query.length) parse(root.querySelectorAll(query)); | ||
return { | ||
flush: flush, | ||
observer: observer, | ||
parse: parse | ||
}; | ||
}); | ||
@@ -71,0 +69,0 @@ |
@@ -1,1 +0,1 @@ | ||
self.qsaObserver=function(e){"use strict";var r=function(e){return"querySelectorAll"in e},t=[].filter;return e.default=function(e){var n=function(n){var o=e.query;if(o.length)for(var a=0,u=n.length;a<u;a++)l(t.call(n[a].addedNodes,r),!0,o,new Set),l(t.call(n[a].removedNodes,r),!1,o,new Set)},l=function r(t,n,l,a){for(var u,c=0,s=t.length;c<s;c++)if(!a.has(u=t[c])){a.add(u);for(var i=o(u),f=0,d=l.length;f<d;f++)i.call(u,l[f])&&e.handle(u,n,l[f],f);r(u.querySelectorAll(l),n,l,a)}},o=function(e){return e.matches||e.webkitMatchesSelector||e.msMatchesSelector},a=function(r){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];l(r,t,e.query,new Set)},u=new MutationObserver(n),c=e.root||document;u.observe(c,{childList:!0,subtree:!0});try{return{flush:function(){n(u.takeRecords())},observer:u,parse:a}}finally{var s=e.query;s.length&&a(c.querySelectorAll(s))}},e}({}).default; | ||
self.qsaObserver=function(e){"use strict";var r=function(e){return"querySelectorAll"in e},t=[].filter;return e.default=function(e){var n=function(n){var o=e.query;if(o.length)for(var u=0,c=n.length;u<c;u++)l(t.call(n[u].addedNodes,r),!0,o),l(t.call(n[u].removedNodes,r),!1,o)},l=function r(t,n,l){for(var u,c=arguments.length>3&&void 0!==arguments[3]?arguments[3]:new Set,a=0,s=t.length;a<s;a++)if(!c.has(u=t[a])){c.add(u);for(var i=o(u),f=0,d=l.length;f<d;f++)i.call(u,l[f])&&e.handle(u,n,l[f],f);r(u.querySelectorAll(l),n,l,c)}},o=function(e){return e.matches||e.webkitMatchesSelector||e.msMatchesSelector},u=function(r){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];l(r,t,e.query)},c=new MutationObserver(n),a=e.root||document,s=e.query;return c.observe(a,{childList:!0,subtree:!0}),s.length&&u(a.querySelectorAll(s)),{flush:function(){n(c.takeRecords())},observer:c,parse:u}},e}({}).default; |
{ | ||
"name": "qsa-observer", | ||
"version": "0.0.4", | ||
"description": "", | ||
"version": "0.1.0", | ||
"description": "handle elements lifecycle through CSS selectors", | ||
"main": "./cjs/index.js", | ||
@@ -15,3 +15,6 @@ "scripts": { | ||
}, | ||
"keywords": [], | ||
"keywords": [ | ||
"querySelectorAll", | ||
"MutationObserver" | ||
], | ||
"author": "Andrea Giammarchi", | ||
@@ -35,3 +38,11 @@ "license": "ISC", | ||
}, | ||
"unpkg": "min.js" | ||
"unpkg": "min.js", | ||
"repository": { | ||
"type": "git", | ||
"url": "git+https://github.com/WebReflection/qsa-observer.git" | ||
}, | ||
"bugs": { | ||
"url": "https://github.com/WebReflection/qsa-observer/issues" | ||
}, | ||
"homepage": "https://github.com/WebReflection/qsa-observer#readme" | ||
} |
# qsa-observer | ||
A way to be notified about any element that was connected, or disconnected, from a container. | ||
Given an array of selectors, handles any matching element that was wither connected, or disconnected, from an observed element, or document. | ||
@@ -8,6 +8,5 @@ | ||
* each element is granted to be passed along utilities, whenever it's observed via one, or more, selectors | ||
* an element will pass through a `setup(element, selector)` utility, and per each matching selector | ||
* elements injected through `innerHTML`, within nested elements, will be parsed too | ||
* all elements that had a setup will pass through an `update(element, connected)` utility | ||
* each element is granted to be handled, whenever it's observed via one, or more, selectors | ||
* all observed elements will pass through `handle(element, selector)` utility, per each matching selector | ||
* elements injected through `innerHTML`, or created offline, will be handled too once live | ||
@@ -14,0 +13,0 @@ |
No bug tracker
MaintenancePackage does not have a linked bug tracker in package.json.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
No website
QualityPackage does not have a website.
Found 1 instance in 1 package
10066
2.18%0
-100%1
-50%0
-100%145
-4.61%52
-1.89%