UNPKG

motion

Version:

motion - moving development forward

79 lines (59 loc) 2.44 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _state = require('../state'); var _state2 = _interopRequireDefault(_state); var _helpers = require('../lib/helpers'); var _wrapState = require('../lib/wrapState'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } } exports.default = { enter(node, parent, scope) { if (node.kind == 'prop' && !node._motionPropParsed) { node.kind = 'const'; node._motionPropParsed = true; node.declarations.map(dec => { let name = dec.id.name; dec.init = (0, _wrapState.wrapPropertyDeclarator)(name, dec.init || _helpers.t.identifier('undefined'), scope); return dec; }); return [node, (0, _helpers.propChange)(node)]; } }, 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) { let destructNodes = []; node.declarations.map(dec => { if (dec.motionTracked) return dec; // destructures if (_helpers.t.isObjectPattern(dec.id)) { destructNodes = destructNodes.concat((0, _wrapState.destructureTrackers)(dec.id, 'dec')); return dec; } let name = dec.id.name; _state2.default.viewState[name] = true; // avoid wrapping functions if (_helpers.t.isFunctionExpression(dec.init) || _helpers.t.isArrowFunctionExpression(dec.init)) return dec; // avoid wrapping in production if (_helpers.options.production) return dec; if (!dec.init) { dec.init = (0, _wrapState.wrapDeclarator)(name, _helpers.t.identifier('undefined'), scope); dec.motionTracked = true; return dec; } dec.init = (0, _wrapState.wrapDeclarator)(name, dec.init, scope); node.motionTracked = true; return dec; }); // add destructure declarations if (destructNodes.length) { return [node].concat(_toConsumableArray(destructNodes)); } } } }; //# sourceMappingURL=VariableDeclaration.js.map