UNPKG

elliptical-observe

Version:
66 lines (52 loc) 1.88 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); 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) { let source = element.type.observe(element); if (processor) { source = processor(source); } let oldData = register(source); let desc; if (element.type.describe) { desc = element.type.describe(_lodash2.default.assign({}, element, { data: oldData })); } function visit(option, e, traverse) { const 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); } } const type = _lodash2.default.assign({}, element.type, { visit: visit, _oldVisit: element.type.visit, describe: undefined }); return _lodash2.default.assign({}, element, { type: type }); } else if (element.type === "dynamic") { return _lodash2.default.assign({}, element, { type: _dynamic2.default, register: register }); } return element; }; }