UNPKG

jobiqo-cl

Version:

[![CircleCI](https://circleci.com/gh/jobiqo/jobiqo-cl.svg?style=svg&circle-token=5a24efa5b8bbc4879276123e77d0d3f35ca7144c)](https://circleci.com/gh/jobiqo/jobiqo-cl)

73 lines (58 loc) 1.93 kB
'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;