UNPKG

@reach/observe-rect

Version:

Observe the Rect of a DOM element.

3 lines (2 loc) 1.04 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self)["@reach/observe-rect"]={})}(this,(function(e){"use strict";var t,n=["bottom","height","left","right","top","width"],c=new Map;e.default=function(e,o){return{observe:function(){var i=0===c.size;c.has(e)?c.get(e).callbacks.push(o):c.set(e,{rect:void 0,hasRectChanged:!1,callbacks:[o]}),i&&function e(){var o=[];c.forEach((function(e,t){var c,i,a=t.getBoundingClientRect();void 0===(c=a)&&(c={}),void 0===(i=e.rect)&&(i={}),n.some((function(e){return c[e]!==i[e]}))&&(e.rect=a,o.push(e))})),o.forEach((function(e){e.callbacks.forEach((function(t){return t(e.rect)}))})),t=window.requestAnimationFrame(e)}()},unobserve:function(){var n=c.get(e);if(n){var i=n.callbacks.indexOf(o);i>=0&&n.callbacks.splice(i,1),n.callbacks.length||c.delete(e),c.size||cancelAnimationFrame(t)}}}},Object.defineProperty(e,"__esModule",{value:!0})})); //# sourceMappingURL=observe-rect.umd.production.min.js.map