UNPKG

react-universal-component

Version:

A higher order component for loading components with promises

125 lines (99 loc) 5.18 kB
'use strict'; 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; };