UNPKG

jaybe-react-universal-component

Version:

A higher order component for loading components with promises

153 lines (110 loc) 6.02 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 = void 0; var React = _interopRequireWildcard(require("react")); var _requireById = _interopRequireDefault(require("./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)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } var isTest = process.env.NODE_ENV === 'test'; exports.isTest = isTest; var isServer = !(typeof window !== 'undefined' && window.document && window.document.createElement); exports.isServer = isServer; var isWebpack = function isWebpack() { return typeof __webpack_require__ !== 'undefined'; }; exports.isWebpack = isWebpack; var babelInterop = function babelInterop(mod) { return mod && _typeof(mod) === 'object' && mod.__esModule ? mod.default : mod; }; exports.babelInterop = babelInterop; var DefaultLoading = function DefaultLoading() { return React.createElement("div", null, "Loading..."); }; exports.DefaultLoading = DefaultLoading; var DefaultError = function DefaultError(_ref) { var error = _ref.error; return React.createElement("div", null, "Error: ", error && error.message); }; exports.DefaultError = DefaultError; var tryRequire = function tryRequire(id) { try { return (0, _requireById.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: ".concat(id, ": ").concat(err.message), err.stack); } } return null; }; exports.tryRequire = tryRequire; var resolveExport = function resolveExport(mod, key, onLoad, chunkName, props, context, modCache) { var isSync = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false; var exp = findExport(mod, key); if (onLoad && mod) { var _isServer = typeof window === 'undefined'; var info = { isServer: _isServer, isSync: isSync }; onLoad(mod, info, props, context); } if (chunkName && exp) cacheExport(exp, chunkName, props, modCache); return exp; }; exports.resolveExport = resolveExport; var findExport = function findExport(mod, key) { if (typeof key === 'function') { return key(mod); } else if (key === null) { return mod; } return mod && _typeof(mod) === 'object' && key ? mod[key] : babelInterop(mod); }; exports.findExport = findExport; var createElement = function createElement(Component, props) { return React.isValidElement(Component) ? React.cloneElement(Component, props) : React.createElement(Component, props); }; exports.createElement = createElement; var createDefaultRender = function createDefaultRender(Loading, Err) { return function (props, mod, isLoading, error) { if (isLoading) { return createElement(Loading, props); } else if (error) { return createElement(Err, _objectSpread({}, props, { error: error })); } else if (mod) { // primary usage (for async import loading + errors): return createElement(mod, props); } return createElement(Loading, props); }; }; exports.createDefaultRender = createDefaultRender; var callForString = function callForString(strFun, props) { return typeof strFun === 'function' ? strFun(props) : strFun; }; exports.callForString = callForString; var loadFromCache = function loadFromCache(chunkName, props, modCache) { return !isServer && modCache[callForString(chunkName, props)]; }; exports.loadFromCache = loadFromCache; var cacheExport = function cacheExport(exp, chunkName, props, modCache) { return modCache[callForString(chunkName, props)] = exp; }; exports.cacheExport = cacheExport; var loadFromPromiseCache = function loadFromPromiseCache(chunkName, props, promisecache) { return promisecache[callForString(chunkName, props)]; }; exports.loadFromPromiseCache = loadFromPromiseCache; var cacheProm = function cacheProm(pr, chunkName, props, promisecache) { return promisecache[callForString(chunkName, props)] = pr; }; exports.cacheProm = cacheProm;