UNPKG

elliptical-observe

Version:
55 lines (49 loc) 1.73 kB
import _typeof from 'babel-runtime/helpers/typeof'; /** @jsx createElement */ import _ from 'lodash'; import { createElement, compile } from 'elliptical'; import createStore from './store'; import Dynamic from './dynamic'; export default function createProcessor(register, processor) { return function process(element) { if (element.type.observe) { var _ret = function () { var visit = function visit(option, e, traverse) { var data = register(source); if (oldData !== data) { oldData = data; if (element.type.describe) { desc = element.type.describe(_.assign({}, element, { data: data })); } } if (element.type.describe) { return traverse(desc, option); } else { return e.type._oldVisit(option, _.assign({}, e, { data: data }), traverse); } }; var source = element.type.observe(element); if (processor) { source = processor(source); } var oldData = register(source); var desc = void 0; if (element.type.describe) { desc = element.type.describe(_.assign({}, element, { data: oldData })); } var type = _.assign({}, element.type, { visit: visit, _oldVisit: element.type.visit, describe: undefined }); return { v: _.assign({}, element, { type: type }) }; }(); if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v; } else if (element.type === "dynamic") { return _.assign({}, element, { type: Dynamic, register: register }); } return element; }; }