@graphery/svg
Version:
Graphery SVG library
1 lines • 977 B
JavaScript
function i(l,s){Object.assign(s.prototype,{styleObserver(a,e){let t=this,r=this.el.tagName.toLowerCase()==="svg"?this.el:this.closest("svg").el;return g(r,a,e),t}})}let p=100;let y=0,b=0,n=new Map,f=!1;function g(l,s,a){typeof s=="string"&&(s=[s]);let e;n.has(l)?e=n.get(l):(e={computedStyles:getComputedStyle(l),styles:{},keys:[]},n.set(l,e));for(let t of s)e.styles[t]||(e.styles[t]={lastValue:e.computedStyles[t],callbacks:new Set},e.keys.push(t)),e.styles[t].callbacks.add(a);u()}function u(l){if(!f||l-b<p){f=!0,y=window.requestAnimationFrame(u);return}if(!l)return;b=l;let s=null;for(let[a,e]of n.entries()){for(let t of e.keys){let r=e.computedStyles.getPropertyValue(t),o=e.styles[t].lastValue;if(r!==o){s||(s=new Map);for(let c of e.styles[t].callbacks)s.has(c)?s.get(c)[t]={current:r,last:o}:s.set(c,{[t]:{current:r,last:o}});e.styles[t].lastValue=r}}if(s){for(let[t,r]of s.entries())t.call(a,r);s=null}}y=window.requestAnimationFrame(u)}var S=i;export{S as default};