UNPKG

bobflux

Version:

Bobflux is pure functional implementation of FLUX architecture.

41 lines (40 loc) 1.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var b = require("bobril"); var f = require("fun-model"); var c = require("./common"); function createComponent(component) { return function (innerCursor) { return function (children) { return b.createDerivedComponent(b.createVirtualComponent({ init: function (ctx) { ctx.forceShouldChange = false; if (c.isCursor(innerCursor)) { ctx.cursor = innerCursor; ctx.state = f.getState(ctx.cursor); } else { Object.keys(innerCursor).forEach(function (ck) { ctx[c.unifyCursorName(ck)] = innerCursor[ck]; ctx[c.unifyStateName(ck)] = f.getState(innerCursor[ck]); }); } }, shouldChange: function (ctx) { if (c.isCursor(innerCursor)) { var previousState = ctx.state; ctx.state = f.getState(ctx.cursor); return ctx.forceShouldChange || ctx.state !== previousState; } else { var shouldChange_1 = ctx.forceShouldChange; Object.keys(innerCursor).forEach(function (ck) { var stateName = c.unifyStateName(ck); var previousState = ctx[stateName]; ctx[stateName] = f.getState(innerCursor[ck]); shouldChange_1 = shouldChange_1 || ctx[stateName] !== previousState; }); return shouldChange_1; } } }), component)({}, children); }; }; } exports.createComponent = createComponent;