UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

35 lines (34 loc) 1.24 kB
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; };