@itwin/itwinui-react
Version:
A react component library for iTwinUI
35 lines (34 loc) • 1.24 kB
JavaScript
import * as React from 'react';
import { isUnitTest } from '../functions/dev.js';
import { getWindow } from '../functions/dom.js';
let _React = React;
let ReactInternals = _React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
export const useWarningLogger =
'development' !== process.env.NODE_ENV || 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 = getWindow()?.setTimeout(() => {
if (!loggedRef.current) {
console.error(prefix, message);
loggedRef.current = true;
}
});
},
[prefix],
);
React.useEffect(
() => () => {
if (timeoutRef.current)
getWindow()?.clearTimeout(timeoutRef.current);
},
[],
);
return logWarning;
};