react-behave
Version:
A library of behaviors for React applications.
35 lines (27 loc) • 1.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.watchResize = watchResize;
var _lodash = _interopRequireDefault(require("lodash.throttle"));
var _resizeObserverPolyfill = _interopRequireDefault(require("resize-observer-polyfill"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
// Corresponds to 1 frame
var DEFAULT_RESIZE_INTERVAL = 16;
function watchResize(target, cb) {
var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
_ref$resizeInterval = _ref.resizeInterval,
resizeInterval = _ref$resizeInterval === void 0 ? DEFAULT_RESIZE_INTERVAL : _ref$resizeInterval;
function handleResize(entries) {
if (entries.length) {
cb(entries[0].contentRect);
}
}
var observer = (0, _lodash["default"])(handleResize, resizeInterval);
var resizeObserver = new _resizeObserverPolyfill["default"](observer);
resizeObserver.observe(target);
return function () {
observer.cancel();
resizeObserver.unobserve(target);
};
}