ultra-design
Version:
92 lines (73 loc) • 3.51 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
var ReactDOM = require('react-dom');
var loading$2 = require('./loading.js');
var configProvider = require('../config-provider/config-provider.js');
var mergeProps = require('../utils/mergeProps.js');
var React = require('react');
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-loading');
if (root) {
ReactDOM__default["default"].unmountComponentAtNode(root);
return root;
}
};
var createRoot = function createRoot() {
var root = document.createElement('div');
root.id = 'ultra-loading';
document.body.appendChild(root);
return root;
};
function loadingFn(options) {
var root = unmountRoot() || createRoot();
var LoadingWrapper = function LoadingWrapper(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),
loadingOptions = _useState2[0],
setLoadingOptions = _useState2[1];
React.useEffect(function () {
mitt.emitter.on('loading-config', function (e) {
setLoadingOptions(function (o) {
return mergeProps.mergeProps(o, e);
});
});
return function () {
mitt.emitter.all.clear();
};
}, []);
return jsxRuntime.jsx(loading$2["default"], _objectSpread({}, loadingOptions));
};
LoadingWrapper.defaultProps = {
options: {
fullScreen: true
}
};
ReactDOM__default["default"].render(jsxRuntime.jsx(LoadingWrapper, {
options: options
}), root);
}
/**
* loading api function
*/
var loading = loadingFn;
loading.clear = unmountRoot;
loading.config = function (config) {
newConfig = config;
mitt.emitter.emit('loading-config', config);
};
var loading$1 = loading;
exports["default"] = loading$1;