UNPKG

@rxx/core

Version:

React MVI micro framework.

99 lines 8.38 kB
"use strict"; /** * @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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYWN0b3J5LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUFFSCx3REFBMEI7QUFDMUIsNkJBQXVEO0FBQ3ZELGlEQUErRDtBQUMvRCxpQ0FBNEQ7QUFFNUQsNENBQWdEO0FBSWhELFNBQVMsY0FBYztJQUNyQixPQUFPLG1CQUFtQixDQUFDO0FBQzdCLENBQUM7QUFFRCxTQUFnQixRQUFRLENBQ3RCLGlCQUcrQixFQUMvQixXQUFnRDtJQUVoRCxJQUFNLFdBQVcsR0FDZixPQUFPLGlCQUFpQixLQUFLLFVBQVU7UUFDckMsQ0FBQyxDQUFDLENBQUcsaUJBQWlCLENBQUMsV0FBVztZQUM5QixpQkFBaUIsQ0FBQyxJQUFJO1lBQ3RCLGNBQWMsRUFBRSxVQUFJLG1CQUFXLENBQUMsU0FBUyxFQUFJO1FBQ2pELENBQUMsQ0FBQyxDQUFDO1lBQ0MsSUFBSSxPQUFPLGlCQUFpQixDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7Z0JBQ2hELE9BQU8sQ0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUM7b0JBQ2hELGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQztvQkFDakMsY0FBYyxFQUFFLFVBQUksbUJBQVcsQ0FBQyxTQUFTLEVBQUksQ0FBQzthQUNqRDtZQUNELE9BQU8sY0FBYyxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUVYLE9BQU8sU0FBUyxJQUFJLENBQUMsR0FBaUIsRUFBRSxVQUE4QjtRQUE5QiwyQkFBQSxFQUFBLGVBQThCO1FBQ3BFO1lBQW9DLGlEQUFrQjtZQUF0RDs7WUF3QkEsQ0FBQztZQXRCUSxzQ0FBTSxHQUFiO2dCQUNVLElBQUEsa0JBQUssQ0FBVTtnQkFDdkIsSUFBTSxRQUFRLEdBQ1osT0FBTyxpQkFBaUIsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQ3hD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