motion
Version:
motion - moving development forward
50 lines (35 loc) • 1.55 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var _helpers = require('../lib/helpers');
var _state = require('../state');
var _state2 = _interopRequireDefault(_state);
var _wrapState = require('../lib/wrapState');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = {
exit(node, parent, scope, file) {
// track require() statements
if (node.callee && node.callee.name && node.callee.name == 'require') {
const arg = node.arguments && node.arguments.length && node.arguments[0].value;
_helpers.options.onImports && _helpers.options.onImports(arg);
}
// mutative array methods
if ((0, _helpers.isInView)(scope)) {
if ((0, _helpers.isMutativeArrayFunc)(node)) {
const callee = node.callee;
// avoid doing stuff on Object.keys(x).sort()
if (_helpers.t.isCallExpression(callee.object)) return;
const name = callee.object ? (0, _helpers.findObjectName)(callee.object) : callee.property.name;
if ((0, _helpers.isViewState)(name, scope)) return (0, _wrapState.wrapSetter)(name, node, scope, _helpers.t.identifier(name));
}
if ((0, _helpers.isObjectAssign)(node)) {
// if mutating an object in the view
let name = node.arguments[0].name;
if ((0, _helpers.isViewState)(name, scope)) return (0, _wrapState.wrapSetter)(name, node, scope);
}
}
// return stateTrack(node)
}
};
//# sourceMappingURL=CallExpression.js.map
;