warning.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. "use strict";
  2. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.devUseWarning = exports.default = exports.WarningContext = void 0;
  7. exports.noop = noop;
  8. exports.resetWarned = resetWarned;
  9. var React = _interopRequireWildcard(require("react"));
  10. var _warning2 = _interopRequireWildcard(require("rc-util/lib/warning"));
  11. function noop() {}
  12. let deprecatedWarnList = null;
  13. function resetWarned() {
  14. deprecatedWarnList = null;
  15. (0, _warning2.resetWarned)();
  16. }
  17. let _warning = noop;
  18. if (process.env.NODE_ENV !== 'production') {
  19. _warning = (valid, component, message) => {
  20. (0, _warning2.default)(valid, `[antd: ${component}] ${message}`);
  21. // StrictMode will inject console which will not throw warning in React 17.
  22. if (process.env.NODE_ENV === 'test') {
  23. resetWarned();
  24. }
  25. };
  26. }
  27. const warning = _warning;
  28. const WarningContext = exports.WarningContext = /*#__PURE__*/React.createContext({});
  29. /**
  30. * This is a hook but we not named as `useWarning`
  31. * since this is only used in development.
  32. * We should always wrap this in `if (process.env.NODE_ENV !== 'production')` condition
  33. */
  34. const devUseWarning = exports.devUseWarning = process.env.NODE_ENV !== 'production' ? component => {
  35. const {
  36. strict
  37. } = React.useContext(WarningContext);
  38. const typeWarning = (valid, type, message) => {
  39. if (!valid) {
  40. if (strict === false && type === 'deprecated') {
  41. const existWarning = deprecatedWarnList;
  42. if (!deprecatedWarnList) {
  43. deprecatedWarnList = {};
  44. }
  45. deprecatedWarnList[component] = deprecatedWarnList[component] || [];
  46. if (!deprecatedWarnList[component].includes(message || '')) {
  47. deprecatedWarnList[component].push(message || '');
  48. }
  49. // Warning for the first time
  50. if (!existWarning) {
  51. console.warn('[antd] There exists deprecated usage in your code:', deprecatedWarnList);
  52. }
  53. } else {
  54. process.env.NODE_ENV !== "production" ? warning(valid, component, message) : void 0;
  55. }
  56. }
  57. };
  58. typeWarning.deprecated = (valid, oldProp, newProp, message) => {
  59. typeWarning(valid, 'deprecated', `\`${oldProp}\` is deprecated. Please use \`${newProp}\` instead.${message ? ` ${message}` : ''}`);
  60. };
  61. return typeWarning;
  62. } : () => {
  63. const noopWarning = () => {};
  64. noopWarning.deprecated = noop;
  65. return noopWarning;
  66. };
  67. var _default = exports.default = warning;