App.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. "use strict";
  2. "use client";
  3. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  4. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
  5. Object.defineProperty(exports, "__esModule", {
  6. value: true
  7. });
  8. exports.default = void 0;
  9. var _react = _interopRequireWildcard(require("react"));
  10. var _classnames = _interopRequireDefault(require("classnames"));
  11. var _warning = require("../_util/warning");
  12. var _configProvider = require("../config-provider");
  13. var _useMessage = _interopRequireDefault(require("../message/useMessage"));
  14. var _useModal = _interopRequireDefault(require("../modal/useModal"));
  15. var _useNotification = _interopRequireDefault(require("../notification/useNotification"));
  16. var _context = _interopRequireWildcard(require("./context"));
  17. var _style = _interopRequireDefault(require("./style"));
  18. const App = props => {
  19. const {
  20. prefixCls: customizePrefixCls,
  21. children,
  22. className,
  23. rootClassName,
  24. message,
  25. notification,
  26. style,
  27. component = 'div'
  28. } = props;
  29. const {
  30. direction,
  31. getPrefixCls
  32. } = (0, _react.useContext)(_configProvider.ConfigContext);
  33. const prefixCls = getPrefixCls('app', customizePrefixCls);
  34. const [wrapCSSVar, hashId, cssVarCls] = (0, _style.default)(prefixCls);
  35. const customClassName = (0, _classnames.default)(hashId, prefixCls, className, rootClassName, cssVarCls, {
  36. [`${prefixCls}-rtl`]: direction === 'rtl'
  37. });
  38. const appConfig = (0, _react.useContext)(_context.AppConfigContext);
  39. const mergedAppConfig = _react.default.useMemo(() => ({
  40. message: Object.assign(Object.assign({}, appConfig.message), message),
  41. notification: Object.assign(Object.assign({}, appConfig.notification), notification)
  42. }), [message, notification, appConfig.message, appConfig.notification]);
  43. const [messageApi, messageContextHolder] = (0, _useMessage.default)(mergedAppConfig.message);
  44. const [notificationApi, notificationContextHolder] = (0, _useNotification.default)(mergedAppConfig.notification);
  45. const [ModalApi, ModalContextHolder] = (0, _useModal.default)();
  46. const memoizedContextValue = _react.default.useMemo(() => ({
  47. message: messageApi,
  48. notification: notificationApi,
  49. modal: ModalApi
  50. }), [messageApi, notificationApi, ModalApi]);
  51. // https://github.com/ant-design/ant-design/issues/48802#issuecomment-2097813526
  52. (0, _warning.devUseWarning)('App')(!(cssVarCls && component === false), 'usage', 'When using cssVar, ensure `component` is assigned a valid React component string.');
  53. // ============================ Render ============================
  54. const Component = component === false ? _react.default.Fragment : component;
  55. const rootProps = {
  56. className: customClassName,
  57. style
  58. };
  59. return wrapCSSVar(/*#__PURE__*/_react.default.createElement(_context.default.Provider, {
  60. value: memoizedContextValue
  61. }, /*#__PURE__*/_react.default.createElement(_context.AppConfigContext.Provider, {
  62. value: mergedAppConfig
  63. }, /*#__PURE__*/_react.default.createElement(Component, Object.assign({}, component === false ? undefined : rootProps), ModalContextHolder, messageContextHolder, notificationContextHolder, children))));
  64. };
  65. if (process.env.NODE_ENV !== 'production') {
  66. App.displayName = 'App';
  67. }
  68. var _default = exports.default = App;