UNPKG

motion

Version:

motion - moving development forward

105 lines (80 loc) 3.13 kB
exports.__esModule = true; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _libHelpers = require('../lib/helpers'); var _libExtractStatics = require('../lib/extractStatics'); var _libWrapState = require('../lib/wrapState'); var _state = require('../state'); var _state2 = _interopRequireDefault(_state); exports['default'] = { enter: function enter(node, parent, scope, file) { if (node.isStyle) return; var isStyle = // $variable = {} node.left.name && node.left.name.indexOf('$') == 0; if (!isStyle) return; if (_state2['default'].currentView) { var viewMeta = _state2['default'].meta.views[_state2['default'].currentView]; var cleanName = node.left.name.substr(1); viewMeta.styles[cleanName] = { location: _libHelpers.normalizeLocation(node.loc) }; } // styles return _libExtractStatics.extractAndAssign(node, file); }, exit: function exit(node, parent, scope, file) { // non-styles if (node.motionTracked || node.hasSetter || node.hasGetter || node.isStyle) return; var isBasicAssign = node.operator === "=" || node.operator === "-=" || node.operator === "+="; if (!isBasicAssign) return; // module.exports check if (_libHelpers.t.isMemberExpression(node.left) && node.left.object.name === 'module') { _libHelpers.options.onExports && _libHelpers.options.onExports(true); _state2['default'].hasExports = true; } // destructures if (scope.hasOwnBinding('view') && _libHelpers.t.isObjectPattern(node.left)) { var destructNodes = destructureTrackers(node.left, 'set'); node.motionTracked = true; return [_libHelpers.t.expressionStatement(node)].concat(destructNodes); } var isRender = _libHelpers.hasObjWithProp(node, 'view', 'render'); var id = function id(x) { return x; }; var sett = id; var gett = id; var added = false; // view.set if (!isRender) { (function () { var name = undefined, post = undefined; if (node.left.object) { name = _libHelpers.findObjectName(node.left.object); post = _libHelpers.t.identifier(name); } else if (_libHelpers.t.isJSXExpressionContainer(node.left)) { var expression = node.left.expression; name = expression.object ? _libHelpers.findObjectName(expression.object) : expression.name; } else { name = node.left.name; } if (_libHelpers.isViewState(name, scope)) { sett = function (node) { return _libWrapState.wrapSetter(name, node, scope, post, 'set'); }; added = true; } })(); } // add getter if (!_libHelpers.options.production && !isRender && _libHelpers.isViewState(node.left.name, scope)) { gett = function (node) { return _libWrapState.wrapGetter(node, scope, file); }; added = true; } node = sett(gett(node)); if (added && node) node.motionTracked = 1; return node; } }; module.exports = exports['default'];