UNPKG

elliptical-observe

Version:
77 lines (59 loc) 2.25 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof2 = require('babel-runtime/helpers/typeof'); var _typeof3 = _interopRequireDefault(_typeof2); exports.default = createProcessor; var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _elliptical = require('elliptical'); var _store = require('./store'); var _store2 = _interopRequireDefault(_store); var _dynamic = require('./dynamic'); var _dynamic2 = _interopRequireDefault(_dynamic); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** @jsx createElement */ 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(_lodash2.default.assign({}, element, { data: data })); } } if (element.type.describe) { return traverse(desc, option); } else { return e.type._oldVisit(option, _lodash2.default.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(_lodash2.default.assign({}, element, { data: oldData })); } var type = _lodash2.default.assign({}, element.type, { visit: visit, _oldVisit: element.type.visit, describe: undefined }); return { v: _lodash2.default.assign({}, element, { type: type }) }; }(); if ((typeof _ret === 'undefined' ? 'undefined' : (0, _typeof3.default)(_ret)) === "object") return _ret.v; } else if (element.type === "dynamic") { return _lodash2.default.assign({}, element, { type: _dynamic2.default, register: register }); } return element; }; }