motion
Version:
motion - moving development forward
46 lines (32 loc) • 1.51 kB
JavaScript
exports.__esModule = true;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _libHelpers = require('../lib/helpers');
var _state = require('../state');
var _state2 = _interopRequireDefault(_state);
var _libWrapState = require('../lib/wrapState');
exports['default'] = {
exit: function exit(node, parent, scope, file) {
// track require() statements
if (node.callee && node.callee.name && node.callee.name == 'require') {
var arg = node.arguments && node.arguments.length && node.arguments[0].value;
_libHelpers.options.onImports && _libHelpers.options.onImports(arg);
}
// mutative array methods
if (_libHelpers.isInView(scope)) {
if (_libHelpers.isMutativeArrayFunc(node)) {
var callee = node.callee;
// avoid doing stuff on Object.keys(x).sort()
if (_libHelpers.t.isCallExpression(callee.object)) return;
var _name = callee.object ? _libHelpers.findObjectName(callee.object) : callee.property.name;
if (_libHelpers.isViewState(_name, scope)) return _libWrapState.wrapSetter(_name, node, scope, _libHelpers.t.identifier(_name));
}
if (_libHelpers.isObjectAssign(node)) {
// if mutating an object in the view
var _name2 = node.arguments[0].name;
if (_libHelpers.isViewState(_name2, scope)) return _libWrapState.wrapSetter(_name2, node, scope);
}
}
// return stateTrack(node)
}
};
module.exports = exports['default'];