ultra-design
Version:
133 lines (108 loc) • 4.26 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
require('prop-types');
var React = require('react');
var ReactDOM = require('react-dom');
var react = require('@icon-park/react');
var toastInternal = require('./toast-internal.js');
var configProvider = require('../config-provider/config-provider.js');
var mergeProps = require('../utils/mergeProps.js');
var mitt = require('../utils/mitt.js');
var jsxRuntime = require('@emotion/react/jsx-runtime');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
var newConfig = {};
var unmountRoot = function unmountRoot() {
var root = document.getElementById('ultra-toast');
if (root) {
ReactDOM__default["default"].unmountComponentAtNode(root);
return root;
}
};
var createRoot = function createRoot() {
var root = document.createElement('div');
root.id = 'ultra-toast';
document.body.appendChild(root);
return root;
};
function toast(data, duration, onClose) {
var root = unmountRoot() || createRoot();
var options = {};
if (typeof data === 'string') {
options.content = data;
options.onClose = onClose;
if (duration) {
options.duration = duration;
}
} else {
Object.assign(options, data);
}
var ToastWrapper = function ToastWrapper(props) {
var options = props.options;
var context = React.useContext(configProvider.ConfigContext);
var config = mergeProps.mergeProps(context, newConfig, options);
var _useState = React.useState(config),
_useState2 = _slicedToArray__default["default"](_useState, 2),
toastOptions = _useState2[0],
setToastOptions = _useState2[1];
React.useEffect(function () {
mitt.emitter.on('toast-config', function (e) {
setToastOptions(function (o) {
return mergeProps.mergeProps(o, e);
});
});
return function () {
mitt.emitter.all.clear();
};
}, []);
return jsxRuntime.jsx(toastInternal["default"], _objectSpread({}, toastOptions));
};
ReactDOM__default["default"].render(jsxRuntime.jsx(ToastWrapper, {
options: options
}), root);
}
var iconMap = {
info: jsxRuntime.jsx(react.Info, {
fill: "#13c2c2"
}),
success: jsxRuntime.jsx(react.Success, {
fill: "#00B42A"
}),
warning: jsxRuntime.jsx(react.Info, {
fill: "#FF7D00"
}),
error: jsxRuntime.jsx(react.Error, {
fill: "#F53F3F"
})
};
/**
* toast mesaage component
*/
var Toast = toast;
Toast.clear = unmountRoot;
Toast.config = function (config) {
newConfig = config;
mitt.emitter.emit('toast-config', config);
};
var _loop = function _loop(key) {
var k = key;
Toast[k] = function (content, duration, onClose) {
toast({
content: content,
duration: duration,
onClose: onClose,
icon: iconMap[k]
});
};
};
for (var key in iconMap) {
_loop(key);
}
var Toast$1 = Toast;
exports["default"] = Toast$1;