UNPKG

sentinel-js

Version:

JS library that detects new DOM nodes using CSS selectors

1 lines 1.18 kB
this.sentinel||function(e,n){var a,o,s,r,l,f;sentinel=(r=Array.isArray,l={},f={},{on:function(e,i){if(i){if(!a){var n=document,t=n.head;n.addEventListener("animationstart",function(e,n,t,i){if(n=f[e.animationName])for(e.stopImmediatePropagation(),t=n.length,i=0;i<t;i++)n[i](e.target)},!0),(a=n.getElementById("sentinel-css"))||(a=n.createElement("style"),t.insertBefore(a,t.firstChild)),o=a.sheet,s=o.cssRules}(r(e)?e:[e]).map(function(e,n,t){(n=l[e])||(t="!"==e[0],l[e]=n=t?e.slice(1):"sentinel-"+Math.random().toString(16).slice(2),s[o.insertRule("@keyframes "+n+"{from{transform:none;}to{transform:none;}}",s.length)]._id=e,t||(s[o.insertRule(e+"{animation-duration:0.0001s;animation-name:"+n+";}",s.length)]._id=e),l[e]=n),(f[n]=f[n]||[]).push(i)})}},off:function(e,a){(r(e)?e:[e]).map(function(e,n,t,i){if(n=l[e]){if(t=f[n],a)for(i=t.length;i--;)t[i]===a&&t.splice(i,1);else t=[];if(!t.length){for(i=s.length;i--;)s[i]._id==e&&o.deleteRule(i);delete l[e],delete f[n]}}})},reset:function(){l={},f={},a&&a.parentNode.removeChild(a),a=0}}),(n=e.createEvent("HTMLEvents")).initEvent?n.initEvent("sentinel-load",!1,!1):n=new Event("sentinel-load"),e.dispatchEvent(n)}(document);