jorum
Version:
Model layer with rx.js for React applications.
30 lines (29 loc) • 1.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var React = require("react");
var react_1 = require("react");
var shared_data_1 = require("./shared-data");
function suspense(init) {
var InnerComponent = function (props) {
return props.render();
};
InnerComponent.displayName = "Suspense(" + init.name + ")";
var Component = function (props) {
var streamStatus = react_1.useRef({
isFirstRun: true,
waitingCount: 0,
}).current;
shared_data_1.sharedData.streamStatus = streamStatus;
var render = init(props);
streamStatus.isFirstRun = false;
shared_data_1.sharedData.streamStatus = null;
if (streamStatus.waitingCount !== 0)
return null;
if (render === null)
return null;
return (React.createElement(InnerComponent, { render: render }));
};
Component.displayName = init.name;
return Component;
}
exports.suspense = suspense;