-
Notifications
You must be signed in to change notification settings - Fork 150
/
Copy pathdetect-element-resize.min.js
1 lines (1 loc) · 2.97 KB
/
detect-element-resize.min.js
1
!function(){function e(a){var b=a.__resizeTriggers__,c=b.firstElementChild,d=b.lastElementChild,e=c.firstElementChild;d.scrollLeft=d.scrollWidth,d.scrollTop=d.scrollHeight,e.style.width=c.offsetWidth+1+"px",e.style.height=c.offsetHeight+1+"px",c.scrollLeft=c.scrollWidth,c.scrollTop=c.scrollHeight}function f(a){return a.offsetWidth!=a.__resizeLast__.width||a.offsetHeight!=a.__resizeLast__.height}function g(a){var b=this;e(this),this.__resizeRAF__&&d(this.__resizeRAF__),this.__resizeRAF__=c(function(){f(b)&&(b.__resizeLast__.width=b.offsetWidth,b.__resizeLast__.height=b.offsetHeight,b.__resizeListeners__.forEach(function(c){c.call(b,a)}))})}function t(){if(!b){var a=(r?r:"")+".resize-triggers { "+(s?s:"")+'visibility: hidden; opacity: 0; } .resize-triggers, .resize-triggers > div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',c=document.head||document.getElementsByTagName("head")[0],d=document.createElement("style");d.type="text/css",d.styleSheet?d.styleSheet.cssText=a:d.appendChild(document.createTextNode(a)),c.appendChild(d),b=!0}}var a=document.attachEvent,b=!1;if(!a){var c=function(){var a=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(a){return window.setTimeout(a,20)};return function(b){return a(b)}}(),d=function(){var a=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.clearTimeout;return function(b){return a(b)}}(),h=!1,i="animation",j="",k="animationstart",l="Webkit Moz O ms".split(" "),m="webkitAnimationStart animationstart oAnimationStart MSAnimationStart".split(" "),n="",o=document.createElement("fakeelement");if(void 0!==o.style.animationName&&(h=!0),h===!1)for(var p=0;p<l.length;p++)if(void 0!==o.style[l[p]+"AnimationName"]){n=l[p],i=n+"Animation",j="-"+n.toLowerCase()+"-",k=m[p],h=!0;break}var q="resizeanim",r="@"+j+"keyframes "+q+" { from { opacity: 0; } to { opacity: 0; } } ",s=j+"animation: 1ms "+q+"; "}window.addResizeListener=function(b,c){a?b.attachEvent("onresize",c):(b.__resizeTriggers__||("static"==getComputedStyle(b).position&&(b.style.position="relative"),t(),b.__resizeLast__={},b.__resizeListeners__=[],(b.__resizeTriggers__=document.createElement("div")).className="resize-triggers",b.__resizeTriggers__.innerHTML='<div class="expand-trigger"><div></div></div><div class="contract-trigger"></div>',b.appendChild(b.__resizeTriggers__),e(b),b.addEventListener("scroll",g,!0),k&&b.__resizeTriggers__.addEventListener(k,function(a){a.animationName==q&&e(b)})),b.__resizeListeners__.push(c))},window.removeResizeListener=function(b,c){a?b.detachEvent("onresize",c):(b.__resizeListeners__.splice(b.__resizeListeners__.indexOf(c),1),b.__resizeListeners__.length||(b.removeEventListener("scroll",g),b.__resizeTriggers__=!b.removeChild(b.__resizeTriggers__)))}}();