@rxx/core
Version:
React MVI micro framework.
99 lines • 8.38 kB
JavaScript
;
/**
* @fileoverview
* @author Taketoshi Aono
*/
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var react_1 = tslib_1.__importDefault(require("react"));
var rxjs_1 = require("rxjs");
var provider_1 = require("./component/provider");
var utils_1 = require("./utils");
var operators_1 = require("rxjs/operators");
function getDefaultName() {
return 'AnonymousProvider';
}
function makeView(RootViewOrFactory, renderingFn) {
var displayName = typeof RootViewOrFactory === 'function'
? (RootViewOrFactory.displayName ||
RootViewOrFactory.name ||
getDefaultName()) + "#" + utils_1.IDGenerator.genNextId()
: (function () {
if (typeof RootViewOrFactory.type === 'function') {
return (RootViewOrFactory['type']['displayName'] ||
RootViewOrFactory['type']['name'] ||
getDefaultName()) + "#" + utils_1.IDGenerator.genNextId();
}
return getDefaultName();
})();
return function view(app, otherProps) {
if (otherProps === void 0) { otherProps = {}; }
var ViewEnhancedComponent = /** @class */ (function (_super) {
tslib_1.__extends(ViewEnhancedComponent, _super);
function ViewEnhancedComponent() {
return _super !== null && _super.apply(this, arguments) || this;
}
ViewEnhancedComponent.prototype.render = function () {
var props = this.props;
var children = typeof RootViewOrFactory === 'function' ? (react_1.default.createElement(RootViewOrFactory, tslib_1.__assign({}, props))) : (react_1.default.cloneElement(RootViewOrFactory, tslib_1.__assign({}, RootViewOrFactory.props, props), props.children));
return (react_1.default.createElement(provider_1.Provider, tslib_1.__assign({ app: app, name: displayName }, otherProps), children));
};
ViewEnhancedComponent.displayName = displayName;
return ViewEnhancedComponent;
}(react_1.default.Component));
return renderingFn
? renderingFn(ViewEnhancedComponent)
: ViewEnhancedComponent;
};
}
exports.makeView = makeView;
function makeApp(apps) {
return function (initialStateFactory) {
return function (subject, states) {
if (states === void 0) { states = {}; }
var initialState;
if (typeof initialStateFactory === 'function') {
initialState = initialStateFactory();
}
else {
initialState = initialStateFactory;
}
var initializedMap = {};
return Object.keys(apps).reduce(function (states, key) {
var app = apps[key];
var nextState = app(subject, initialState[key]);
if (nextState.view) {
if (!rxjs_1.isObservable(nextState.view)) {
throw new Error("Application view of " + key + " must be Observable.");
}
nextState.view = nextState.view.pipe(operators_1.startWith(initialState[key]));
if (!states.view) {
states.view = {};
}
if (!utils_1.isDefined(states.view[key])) {
states.view[key] = nextState.view;
}
else {
states.view[key] = rxjs_1.merge(states.view[key], nextState.view);
}
}
for (var key_1 in nextState) {
if (key_1 !== 'view') {
if (!nextState[key_1] || !(nextState[key_1] instanceof rxjs_1.Observable)) {
throw new Error("Property " + key_1 + " must be Observable.");
}
if (states[key_1]) {
states[key_1] = rxjs_1.merge(states[key_1], nextState[key_1]);
}
else {
states[key_1] = nextState[key_1];
}
}
}
return states;
}, states);
};
};
}
exports.makeApp = makeApp;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYWN0b3J5LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUFFSCx3REFBMEI7QUFDMUIsNkJBQXVEO0FBQ3ZELGlEQUErRDtBQUMvRCxpQ0FBNEQ7QUFFNUQsNENBQWdEO0FBSWhELFNBQVMsY0FBYztJQUNyQixPQUFPLG1CQUFtQixDQUFDO0FBQzdCLENBQUM7QUFFRCxTQUFnQixRQUFRLENBQ3RCLGlCQUcrQixFQUMvQixXQUFnRDtJQUVoRCxJQUFNLFdBQVcsR0FDZixPQUFPLGlCQUFpQixLQUFLLFVBQVU7UUFDckMsQ0FBQyxDQUFDLENBQUcsaUJBQWlCLENBQUMsV0FBVztZQUM5QixpQkFBaUIsQ0FBQyxJQUFJO1lBQ3RCLGNBQWMsRUFBRSxVQUFJLG1CQUFXLENBQUMsU0FBUyxFQUFJO1FBQ2pELENBQUMsQ0FBQyxDQUFDO1lBQ0MsSUFBSSxPQUFPLGlCQUFpQixDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7Z0JBQ2hELE9BQU8sQ0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUM7b0JBQ2hELGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQztvQkFDakMsY0FBYyxFQUFFLFVBQUksbUJBQVcsQ0FBQyxTQUFTLEVBQUksQ0FBQzthQUNqRDtZQUNELE9BQU8sY0FBYyxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUVYLE9BQU8sU0FBUyxJQUFJLENBQUMsR0FBaUIsRUFBRSxVQUE4QjtRQUE5QiwyQkFBQSxFQUFBLGVBQThCO1FBQ3BFO1lBQW9DLGlEQUFrQjtZQUF0RDs7WUF3QkEsQ0FBQztZQXRCUSxzQ0FBTSxHQUFiO2dCQUNVLElBQUEsa0JBQUssQ0FBVTtnQkFDdkIsSUFBTSxRQUFRLEdBQ1osT0FBTyxpQkFBaUIsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQ3hDLDhCQUFDLGlCQUFpQix1QkFBSyxLQUFLLEVBQUksQ0FDakMsQ0FBQyxDQUFDLENBQUMsQ0FDRixlQUFLLENBQUMsWUFBWSxDQUNoQixpQkFBNEMsdUJBRXRDLGlCQUFpQixDQUFDLEtBQWEsRUFDL0IsS0FBYSxHQUVuQixLQUFLLENBQUMsUUFBUSxDQUNmLENBQ0YsQ0FBQztnQkFFSixPQUFPLENBQ0wsOEJBQUMsbUJBQVEscUJBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsV0FBVyxJQUFNLFVBQVUsR0FDbEQsUUFBUSxDQUNBLENBQ1osQ0FBQztZQUNKLENBQUM7WUF0QmEsaUNBQVcsR0FBRyxXQUFXLENBQUM7WUF1QjFDLDRCQUFDO1NBQUEsQUF4QkQsQ0FBb0MsZUFBSyxDQUFDLFNBQVMsR0F3QmxEO1FBRUQsT0FBTyxXQUFXO1lBQ2hCLENBQUMsQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUM7WUFDcEMsQ0FBQyxDQUFFLHFCQUE2QixDQUFDO0lBQ3JDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFwREQsNEJBb0RDO0FBUUQsU0FBZ0IsT0FBTyxDQVFyQixJQUFPO0lBUVAsT0FBTyxVQUFTLG1CQUEyQztRQUN6RCxPQUFPLFVBQVMsT0FBd0IsRUFBRSxNQUFnQjtZQUFoQix1QkFBQSxFQUFBLFdBQWdCO1lBQ3hELElBQUksWUFBNkIsQ0FBQztZQUNsQyxJQUFJLE9BQU8sbUJBQW1CLEtBQUssVUFBVSxFQUFFO2dCQUM3QyxZQUFZLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQzthQUN0QztpQkFBTTtnQkFDTCxZQUFZLEdBQUcsbUJBQW1CLENBQUM7YUFDcEM7WUFDRCxJQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7WUFDMUIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFDLE1BQU0sRUFBRSxHQUFHO2dCQUMxQyxJQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3RCLElBQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xELElBQUksU0FBUyxDQUFDLElBQUksRUFBRTtvQkFDbEIsSUFBSSxDQUFDLG1CQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF1QixHQUFHLHlCQUFzQixDQUFDLENBQUM7cUJBQ25FO29CQUNELFNBQVMsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNuRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTt3QkFDaEIsTUFBTSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7cUJBQ2xCO29CQUNELElBQUksQ0FBQyxpQkFBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTt3QkFDaEMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO3FCQUNuQzt5QkFBTTt3QkFDTCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFlBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDNUQ7aUJBQ0Y7Z0JBQ0QsS0FBSyxJQUFNLEtBQUcsSUFBSSxTQUFTLEVBQUU7b0JBQzNCLElBQUksS0FBRyxLQUFLLE1BQU0sRUFBRTt3QkFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUcsQ0FBQyxZQUFZLGlCQUFVLENBQUMsRUFBRTs0QkFDOUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFZLEtBQUcseUJBQXNCLENBQUMsQ0FBQzt5QkFDeEQ7d0JBQ0QsSUFBSSxNQUFNLENBQUMsS0FBRyxDQUFDLEVBQUU7NEJBQ2YsTUFBTSxDQUFDLEtBQUcsQ0FBQyxHQUFHLFlBQUssQ0FBQyxNQUFNLENBQUMsS0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLEtBQUcsQ0FBQyxDQUFDLENBQUM7eUJBQ2xEOzZCQUFNOzRCQUNMLE1BQU0sQ0FBQyxLQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBRyxDQUFDLENBQUM7eUJBQzlCO3FCQUNGO2lCQUNGO2dCQUNELE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNiLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUM7QUExREQsMEJBMERDIn0=