UNPKG

motion

Version:

motion - moving development forward

79 lines (60 loc) 2.41 kB
exports.__esModule = true; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _state = require('../state'); var _state2 = _interopRequireDefault(_state); var _libHelpers = require('../lib/helpers'); var _libWrapState = require('../lib/wrapState'); exports['default'] = { enter: function enter(node, parent, scope) { if (node.kind == 'prop' && !node._motionPropParsed) { node.kind = 'const'; node._motionPropParsed = true; node.declarations.map(function (dec) { var name = dec.id.name; dec.init = _libWrapState.wrapPropertyDeclarator(name, dec.init || _libHelpers.t.identifier('undefined'), scope); return dec; }); return [node, _libHelpers.propChange(node)]; } }, exit: function exit(node, parent, scope, file) { if (node.isStyle || node._motionDeclarationParsed) return; node._motionDeclarationParsed = true; // add getter if (scope.hasOwnBinding('view') && node.kind != 'const' && !node.motionTracked) { var _ret = (function () { var destructNodes = []; node.declarations.map(function (dec) { if (dec.motionTracked) return dec; // destructures if (_libHelpers.t.isObjectPattern(dec.id)) { destructNodes = destructNodes.concat(_libWrapState.destructureTrackers(dec.id, 'dec')); return dec; } var name = dec.id.name; _state2['default'].viewState[name] = true; // avoid wrapping functions if (_libHelpers.t.isFunctionExpression(dec.init) || _libHelpers.t.isArrowFunctionExpression(dec.init)) return dec; // avoid wrapping in production if (_libHelpers.options.production) return dec; if (!dec.init) { dec.init = _libWrapState.wrapDeclarator(name, _libHelpers.t.identifier('undefined'), scope); dec.motionTracked = true; return dec; } dec.init = _libWrapState.wrapDeclarator(name, dec.init, scope); node.motionTracked = true; return dec; }); // add destructure declarations if (destructNodes.length) { return { v: [node].concat(destructNodes) }; } })(); if (typeof _ret === 'object') return _ret.v; } } }; module.exports = exports['default'];