@itwin/itwinui-react
Version:
A react component library for iTwinUI
47 lines (46 loc) • 1.6 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true,
});
Object.defineProperty(exports, 'useWarningLogger', {
enumerable: true,
get: function () {
return useWarningLogger;
},
});
const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard');
const _react = /*#__PURE__*/ _interop_require_wildcard._(require('react'));
const _dev = require('../functions/dev.js');
const _dom = require('../functions/dom.js');
const _React = _react;
const ReactInternals =
_React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
const useWarningLogger =
'development' !== process.env.NODE_ENV || _dev.isUnitTest
? () => () => {}
: function () {
let loggedRef = _react.useRef(false);
let timeoutRef = _react.useRef(void 0);
let stack = ReactInternals?.ReactDebugCurrentFrame?.getCurrentStack?.();
let componentName = stack?.trim().split('\n')[1]?.trim();
let prefix = componentName ? `Warning (${componentName}):` : 'Warning:';
let logWarning = _react.useCallback(
(message) => {
timeoutRef.current = (0, _dom.getWindow)()?.setTimeout(() => {
if (!loggedRef.current) {
console.error(prefix, message);
loggedRef.current = true;
}
});
},
[prefix],
);
_react.useEffect(
() => () => {
if (timeoutRef.current)
(0, _dom.getWindow)()?.clearTimeout(timeoutRef.current);
},
[],
);
return logWarning;
};