jobiqo-cl
Version:
[](https://circleci.com/gh/jobiqo/jobiqo-cl)
73 lines (58 loc) • 1.93 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var React = require('react');
var React__default = _interopDefault(React);
var index = require('../../../prop-types/index.js');
var index_m = require('../../observe-rect/dist/index.m.js');
// Rect
function Rect(_ref) {
var onChange = _ref.onChange,
_ref$observe = _ref.observe,
observe = _ref$observe === void 0 ? true : _ref$observe,
children = _ref.children;
var ref = React__default.useRef(null);
var rect = useRect(ref, observe, onChange);
return children({
ref: ref,
rect: rect
});
}
Rect.displayName = "Rect";
if (process.env.NODE_ENV !== "production") {
Rect.propTypes = {
children: index.default.func,
observe: index.default.bool,
onChange: index.default.func
};
} ////////////////////////////////////////////////////////////////////////////////
// useRect
function useRect(nodeRef, observe, onChange) {
if (observe === void 0) {
observe = true;
}
var _useState = React.useState(null),
rect = _useState[0],
setRect = _useState[1];
var observerRef = React.useRef(null);
React.useLayoutEffect(function () {
var cleanup = function cleanup() {
observerRef.current && observerRef.current.unobserve();
};
if (!nodeRef.current) {
console.warn("You need to place the ref");
return cleanup;
}
if (!observerRef.current && nodeRef.current) {
observerRef.current = index_m.default(nodeRef.current, function (rect) {
onChange && onChange(rect);
setRect(rect);
});
}
observe && observerRef.current.observe();
return cleanup; // eslint-disable-next-line react-hooks/exhaustive-deps
}, [observe, onChange]);
return rect;
}
exports.Rect = Rect;
exports.useRect = useRect;