"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.useLayoutUpdateEffect = exports.default = void 0; var React = _interopRequireWildcard(require("react")); var _canUseDom = _interopRequireDefault(require("../Dom/canUseDom")); /** * Wrap `React.useLayoutEffect` which will not throw warning message in test env */ var useInternalLayoutEffect = process.env.NODE_ENV !== 'test' && (0, _canUseDom.default)() ? React.useLayoutEffect : React.useEffect; var useLayoutEffect = function useLayoutEffect(callback, deps) { var firstMountRef = React.useRef(true); useInternalLayoutEffect(function () { return callback(firstMountRef.current); }, deps); // We tell react that first mount has passed useInternalLayoutEffect(function () { firstMountRef.current = false; return function () { firstMountRef.current = true; }; }, []); }; var useLayoutUpdateEffect = function useLayoutUpdateEffect(callback, deps) { useLayoutEffect(function (firstMount) { if (!firstMount) { return callback(); } }, deps); }; exports.useLayoutUpdateEffect = useLayoutUpdateEffect; var _default = useLayoutEffect; exports.default = _default;