react-universal-component
Version:
A higher order component for loading components with promises
125 lines (99 loc) • 5.18 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.cacheProm = exports.loadFromPromiseCache = exports.cacheExport = exports.loadFromCache = exports.callForString = exports.createDefaultRender = exports.createElement = exports.findExport = exports.resolveExport = exports.tryRequire = exports.DefaultError = exports.DefaultLoading = exports.babelInterop = exports.isWebpack = exports.isServer = exports.isTest = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
var _react = require('react');
var React = _interopRequireWildcard(_react);
var _requireById = require('./requireById');
var _requireById2 = _interopRequireDefault(_requireById);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
var isTest = exports.isTest = process.env.NODE_ENV === 'test';
var isServer = exports.isServer = !(typeof window !== 'undefined' && window.document && window.document.createElement);
var isWebpack = exports.isWebpack = function isWebpack() {
return typeof __webpack_require__ !== 'undefined';
};
var babelInterop = exports.babelInterop = function babelInterop(mod) {
return mod && (typeof mod === 'undefined' ? 'undefined' : _typeof(mod)) === 'object' && mod.__esModule ? mod.default : mod;
};
var DefaultLoading = exports.DefaultLoading = function DefaultLoading() {
return React.createElement(
'div',
null,
'Loading...'
);
};
var DefaultError = exports.DefaultError = function DefaultError(_ref) {
var error = _ref.error;
return React.createElement(
'div',
null,
'Error: ',
error && error.message
);
};
var tryRequire = exports.tryRequire = function tryRequire(id) {
try {
return (0, _requireById2.default)(id);
} catch (err) {
// warn if there was an error while requiring the chunk during development
// this can sometimes lead the server to render the loading component.
if (process.env.NODE_ENV === 'development') {
console.warn('chunk not available for synchronous require yet: ' + id + ': ' + err.message, err.stack);
}
}
return null;
};
var resolveExport = exports.resolveExport = function resolveExport(mod, key, onLoad, chunkName, props, modCache) {
var isSync = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
var exp = findExport(mod, key);
if (onLoad && mod) {
var _isServer = typeof window === 'undefined';
var info = { isServer: _isServer, isSync: isSync };
onLoad(mod, info, props);
}
if (chunkName && exp) cacheExport(exp, chunkName, props, modCache);
return exp;
};
var findExport = exports.findExport = function findExport(mod, key) {
if (typeof key === 'function') {
return key(mod);
} else if (key === null) {
return mod;
}
return mod && (typeof mod === 'undefined' ? 'undefined' : _typeof(mod)) === 'object' && key ? mod[key] : babelInterop(mod);
};
var createElement = exports.createElement = function createElement(Component, props) {
return React.isValidElement(Component) ? React.cloneElement(Component, props) : React.createElement(Component, props);
};
var createDefaultRender = exports.createDefaultRender = function createDefaultRender(Loading, Err) {
return function (props, mod, isLoading, error) {
if (isLoading) {
return createElement(Loading, props);
} else if (error) {
return createElement(Err, _extends({}, props, { error: error }));
} else if (mod) {
// primary usage (for async import loading + errors):
return createElement(mod, props);
}
return createElement(Loading, props);
};
};
var callForString = exports.callForString = function callForString(strFun, props) {
return typeof strFun === 'function' ? strFun(props) : strFun;
};
var loadFromCache = exports.loadFromCache = function loadFromCache(chunkName, props, modCache) {
return !isServer && modCache[callForString(chunkName, props)];
};
var cacheExport = exports.cacheExport = function cacheExport(exp, chunkName, props, modCache) {
return modCache[callForString(chunkName, props)] = exp;
};
var loadFromPromiseCache = exports.loadFromPromiseCache = function loadFromPromiseCache(chunkName, props, promisecache) {
return promisecache[callForString(chunkName, props)];
};
var cacheProm = exports.cacheProm = function cacheProm(pr, chunkName, props, promisecache) {
return promisecache[callForString(chunkName, props)] = pr;
};
;