UNPKG

antd

Version:

An enterprise-class UI design language and React components implementation

83 lines (82 loc) 3.35 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"]; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = createUseMessage; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _useNotification = _interopRequireDefault(require("rc-notification/lib/useNotification")); var React = _interopRequireWildcard(require("react")); var _ = require(".."); var _configProvider = require("../../config-provider"); function createUseMessage(getRcNotificationInstance, getRCNoticeProps) { var useMessage = function useMessage() { // We can only get content by render var getPrefixCls; var getPopupContainer; // We create a proxy to handle delay created instance var innerInstance = null; var proxy = { add: function add(noticeProps, holderCallback) { innerInstance === null || innerInstance === void 0 ? void 0 : innerInstance.component.add(noticeProps, holderCallback); } }; var _useRCNotification = (0, _useNotification["default"])(proxy), _useRCNotification2 = (0, _slicedToArray2["default"])(_useRCNotification, 2), hookNotify = _useRCNotification2[0], holder = _useRCNotification2[1]; function notify(args) { var customizePrefixCls = args.prefixCls; var mergedPrefixCls = getPrefixCls('message', customizePrefixCls); var rootPrefixCls = getPrefixCls(); var target = args.key || (0, _.getKeyThenIncreaseKey)(); var closePromise = new Promise(function (resolve) { var callback = function callback() { if (typeof args.onClose === 'function') { args.onClose(); } return resolve(true); }; getRcNotificationInstance((0, _extends2["default"])((0, _extends2["default"])({}, args), { prefixCls: mergedPrefixCls, rootPrefixCls: rootPrefixCls, getPopupContainer: getPopupContainer }), function (_ref) { var prefixCls = _ref.prefixCls, instance = _ref.instance; innerInstance = instance; hookNotify(getRCNoticeProps((0, _extends2["default"])((0, _extends2["default"])({}, args), { key: target, onClose: callback }), prefixCls)); }); }); var result = function result() { if (innerInstance) { innerInstance.removeNotice(target); } }; result.then = function (filled, rejected) { return closePromise.then(filled, rejected); }; result.promise = closePromise; return result; } // Fill functions var hookApiRef = React.useRef({}); hookApiRef.current.open = notify; _.typeList.forEach(function (type) { return (0, _.attachTypeApi)(hookApiRef.current, type); }); return [hookApiRef.current, /*#__PURE__*/React.createElement(_configProvider.ConfigConsumer, { key: "holder" }, function (context) { getPrefixCls = context.getPrefixCls; getPopupContainer = context.getPopupContainer; return holder; })]; }; return useMessage; }