Repository URL to install this package:
|
Version:
1.2.6 ▾
|
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importDefault(require("react"));
const LoadableContext_1 = require("./LoadableContext");
function loadable(asyncRequire) {
var _a;
const scoped = new LoadableContext_1.LoadableContext(asyncRequire);
if (typeof window !== 'object') {
scoped.init();
}
/**
* @todo could simply scope this
* & pass in the loading as a prop for better @@perf?
*/
return _a = class Component extends react_1.default.PureComponent {
componentWillMount() {
if (scoped.isLoaded === false) {
const onLoad = () => {
console.debug('[code-splitting] onLoad: ', scoped.componentName);
this.forceUpdate();
};
scoped.wait().then(onLoad);
}
}
render() {
console.debug('[code-splitting] render');
if (scoped.isLoaded === false) {
return 'loading';
}
else if (!scoped.resolved) {
console.log(this);
return 'error!';
}
else {
return react_1.default.createElement(scoped.resolved, this.props);
}
}
},
_a.debugName = 'CodeSplit',
_a;
}
exports.loadable = loadable;
exports.default = loadable;
//# sourceMappingURL=loadable.js.map