UNPKG

motion

Version:

motion - moving development forward

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