react-imported-component
Version:
I will import your component, and help to handle it
49 lines (48 loc) • 1.94 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.ImportedComponent = void 0;
var tslib_1 = require("tslib");
var React = (0, tslib_1.__importStar)(require("react"));
var config_1 = require("../configuration/config");
var useImported_1 = require("./useImported");
/**
* @deprecated use {@link useImported} instead
*/
function ImportedComponent(props) {
var _a = (0, useImported_1.useImported)(props.loadable), loading = _a.loading, error = _a.error, loadable = _a.loadable, Component = _a.imported, retry = _a.retry;
if (loading && props.async) {
throw loadable.resolution;
}
if ('render' in props && props.render) {
return props.render(Component, { loading: loading, error: error }, props.forwardProps);
}
if (Component) {
// importedUUID for cache busting
// @ts-ignore
return React.createElement(Component, (0, tslib_1.__assign)({}, props.forwardProps, { ref: props.forwardRef }));
}
if (loading) {
if (props.async) {
throw loadable.resolution;
}
return props.LoadingComponent ? React.createElement(props.LoadingComponent, (0, tslib_1.__assign)({}, props.forwardProps)) : null;
}
if (error) {
// always report errors
// tslint:disable-next-line:no-console
console.error('react-imported-component', error);
// let's rethrow the error after react leaves this function
// this might be very crucial for the "safe" dev mode
if (config_1.settings.rethrowErrors) {
setTimeout(function () {
throw error;
});
}
if (props.ErrorComponent) {
return React.createElement(props.ErrorComponent, (0, tslib_1.__assign)({ retryImport: retry, error: error }, props.forwardProps));
}
throw error;
}
return null;
}
exports.ImportedComponent = ImportedComponent;
;