UNPKG

virtex

Version:

Small, focused virtual dom library.

49 lines (35 loc) 1.43 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _mapArray = require('@f/map-array'); var _mapArray2 = _interopRequireDefault(_mapArray); var _util = require('./util'); var _actions = require('./actions'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function create(effect) { return function (vnode) { var path = arguments.length <= 1 || arguments[1] === undefined ? 'a' : arguments[1]; var element = arguments[2]; return createRecursive(vnode, path, element); }; function createRecursive(vnode, path, element) { vnode.path = path; if ((0, _util.isThunk)(vnode)) { var next = effect((0, _actions.createThunk)(vnode)); if (!next) { throw new Error('Component returned null/undefined. Components must return valid virtual nodes.'); } return createRecursive(next, (0, _util.createPath)(next, path, 0), element); } return effect((0, _actions.createNode)(vnode, (0, _mapArray2.default)(createChild(path, element), vnode.children), element)); } function createChild(path, element) { return element ? function (child, i) { return createRecursive(child, (0, _util.createPath)(child, path, i), element.childNodes[i]); } : function (child, i) { return createRecursive(child, (0, _util.createPath)(child, path, i)); }; } } exports.default = create;