UNPKG

@reach/observe-rect

Version:

Observe the Rect of a DOM element.

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